KASUMI

Матеріал з testwiki
Версія від 01:13, 27 листопада 2024, створена imported>InternetArchiveBot (Виправлено джерел: 3; позначено як недійсні: 0.) #IABot (v2.0.9.5)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Шаблон:Картка блочного шифру

KASUMI (з японської 霞 (хірагана かすみ, romaji kasumi), що означає "туман") - блочний шифр, що використовується в мережах стільникового зв'язку 3GPP. Також позначається A5/3 при використанні в GSM і GEA3 в GPRS.

KASUMI розроблений групою SAGE (Security Algorithms Group of Experts), яка є частиною Європейського Інституту по Стандартизації в області Телекомунікацій (ETSI)[1]. За основу був узятий існуючий алгоритм MISTY1 і оптимізований для використання в стільниковому зв'язку.

Опис

KASUMI використовує 64-бітний розмір блоку і 128-бітний ключ у 8-раундовій схемі Фейстеля. У кожному раунді використовується 128-бітний раундовий ключ, що складається з восьми 16-бітових підключів, отриманих з вихідного ключа фіксованою процедурою генерації підключів.

Схема шифрування

Основний алгоритм

KASUMI розкладається в набір функцій (FL, FO, FI), які використовуються разом з пов'язаними з ними ключами (KL, KO, KI)

Вхідний блок даних I поділяється на дві рівні частини:

I=L0||R0

Потім для кожного 1i8:

Ri=Li1
Li=Ri1fi(Li1,RKi)

де fi - раундова функція. RKi - раундовий 128-бітний ключ

RKi=KLi||KOi||KIi

На виході (L8||R8)

Функція раунду

Обчислюється таким чином:

Для раундів 1,3,5,7:

Fi(I,RKi)=FO(FL(I,KLi),KOi,KIi)

Для раундів 2,4,6,8:

Fi(I,RKi)=FL(FO(I,KOi,KIi),KLi)

Функція FL

На вхід функції подається 32-бітний блок даних I і 32-бітний ключ 'KL i ', який поділяється на два 16-бітових підключа:

KLi=KLi,1||KLi,2.

Вхідна рядок I поділяється на дві частини по 16 біт:

I=L||R.

Визначимо:

R=RROL(LKLi,1)
L=LROL(RKLi,2)

Де ROL(x) - циклічний зсув вліво на 1 біт.

На виході (L||R).

Функція FO

На вхід функції подається 32-бітний блок даних і два ключі по 48 біт: KOi,KIi.

Вхідний рядок I розділяється на дві частини по 16 біт: I=L0||R0.

48-бітові ключі поділяються на три частини кожен:

KOi=KOi,1||KOi,2||KOi,3 і KIi=KIi,1||KIi,2||KIi,3.

Потім для 1<j3 визначимо:

Rj=FI(Lj1KOi,j,KIi,j)Rj1
Lj=Rj1

На виході (L3||R3).

Функція FI

На вхід функції подається 16-бітний блок даних 'I і 16-бітний ключ 'KI i, j .

Вхід I поділяється на дві нерівні складові: 9-бітну ліву частину L 0 і 7-бітну праву R 0 :

I=L0||R0.

Точно так же ключ KI i, j, поділяється на 7-бітну компоненту KI i, j, 1 і 9 - бітну компоненту KI i, j, 2 :

KIi,j=KIi,j,1||KIi,j,2.

Функція використовує два S-блоку: S7 який відображає 7-бітний вхід в 7-бітний вихід, і S9 який відображає 9-бітний вхід в 9-бітний вихід.

Також використовуються ще дві функції:

ZE(x) Перетворює 7-бітове значення x в 9-бітове значення додаванням двох нулів в старші біти.
TR(x) Перетворює 9-бітове значення x в 7-бітове викреслюванням з нього двох старших бітів.

Функція реалізується наступним набором операцій:

L1=R0R1=S9[L0]ZE(R0)
L2=R1KIi,j,2R2=S7[L1]TR(R1)KIi,j,1
L3=R2R3=S9[L2]ZE(R2)
L4=S7[L3]TR(R3)R4=R3

Функція повертає значення (L4||R4).

Отримання раундових ключів

Кожен раунд KASUMI отримує ключі із загального ключа K наступним чином:

  • 128-бітний ключ K поділяється на 8:
K=K1||K2||K3||||K8
  • Обчислюється другий масив 'K j ':
Kj=KjCj

де 'C j ' визначаються за таблицею:

C1 0x0123
С2 0x4567
С3 0x89AB
С4 0xCDEF
С5 0xFEDC
С6 0xBA98
С7 0x7654
С8 0x3210
  • Ключі для кожного раунду обчислюються за наступною таблицею:
Ключ 1 2 3 4 5 6 7 8
KLi,1 K1<<<1 K2<<<1 K3<<<1 K4<<<1 K5<<<1 K6<<<1 K7<<<1 K8<<<1
KLi,2 K3' K4' K5' K6' K7' K8' K1' K2'
KOi,1 K2<<<5 K3<<<5 K4<<<5 K5<<<5 K6<<<5 K7<<<5 K8<<<5 K1<<<5
KOi,2 K6<<<8 K7<<<8 K8<<<8 K1<<<8 K2<<<8 K3<<<8 K4<<<8 K5<<<8
KOi,3 K7<<<13 K8<<<13 K1<<<13 K2<<<13 K3<<<13 K4<<<13 K5<<<13 K6<<<13
KIi,1 K5' K6' K7' K8' K1' K2' K3' K4'
KIi,2 K4' K5' K6' K7' K8' K1' K2' K3'
KIi,3 K8' K1' K2' K3' K4' K5' K6' K7'

де X <<< n - циклічний зсув на n біт вліво.

Криптоаналіз

У 2001 році була представлена атака методом неможливих диференціалів. Автор - Ульріх Кен (2001).[2]

У 2003 році Елад Баркан, Елі Біхамом і Натан Келлер продемонстрували атаку з посередником на протокол GSM, що дозволяє обійти шифр A5/3 і таким чином зламати протокол. Однак, цей підхід не зламує шифр A5/3 безпосередньо. [3] Повна версія була опублікована пізніше, в 2006. [4]

У 2005 році Елі Біхамом, Орр Дункельман і Натан Келлер опублікували атаку на KASUMI методом бумеранга, яка зламує шифр швидше, ніж повний перебір. Для атаки потрібно 254.6 обраних відкритих текстів, кожен з яких був зашифрований одним з 4 пов'язаних ключів, і має складність за часом, еквівалентну 276.1 шифрування KASUMI. Ця атака показує небезпечність шифрування KASUMI в 3G мережах.

Примітки

Шаблон:Reflist

Шаблон:Блочні алгоритми шифрування Шаблон:Крипто навігація