Интернет магазин китайских планшетных компьютеров



Компьютеры - BelT - Алгоритм шифрования

04 мая 2011


Оглавление:
1. BelT
2. Алгоритм шифрования



Входные данные для шифрования подготавливаются следующим образом:

  • Входное 128-битное слово записывается в виде X=X_1\|X_2\|X_3\|X_4, X_i — 32-битное слово;
  • Ключ записывается в виде \theta=\theta_1\|\theta_2\|\theta_3\|\theta_4\|\theta_5\|\theta_6\|\theta_7\|\theta_8, \theta_i — 32-битное слово

Для зашифрования слова X на ключе θ необходимо выполнить следующие шаги:

  1. Установить в дополнительные переменные a \leftarrow   X_1,b \leftarrow  X_2,c \leftarrow  X_3,d \leftarrow  X_4
  2. Для i=1,2,… ,8 выполнить:
    1. b \leftarrow b \oplus G_5
    2. c \leftarrow c \oplus G_{21}
    3. a \leftarrow a \boxminus G_{13}
    4. e \leftarrow G_{21} \oplus_{32}
    5. b \leftarrow b \boxplus e
    6. c \leftarrow c \boxminus e
    7. d \leftarrow d \boxplus G_{13}
    8. b \leftarrow b \oplus G_{13}
    9. c \leftarrow c \oplus G_{5}
    10. a \leftrightarrow b
    11. c \leftrightarrow d
    12. b \leftrightarrow c
  3. Установить Y \leftarrow b\|d\|a\|c
  4. Возвратить Y

Переменные a,b,c,d,e - 32-битные слова. Преобразование Gr = ставит в соответствие 32-битному слову u = u_1\|u_2\|u_3\|u_4,, 32-битное слово<br />
<img class=. Подстановка H:{\{0,1\}}^8 \rightarrow {\{0,1\}}^8 задается фиксированной таблицей.

Алгоритм дешифрования

Для расшифрования необходимо выполнить следующие действия:

  1. Установить в дополнительные переменные a \leftarrow   X_1,b \leftarrow  X_2,c \leftarrow  X_3,d \leftarrow  X_4
  2. Для i=8,7,… ,1 выполнить:
    1. b \leftarrow b \oplus G_5
    2. c \leftarrow c \oplus G_{21}
    3. a \leftarrow a \boxminus G_{13}
    4. e \leftarrow G_{21} \oplus_{32}
    5. b \leftarrow b \boxplus e
    6. c \leftarrow c \boxminus e
    7. d \leftarrow d \boxplus G_{13}
    8. b \leftarrow b \oplus G_{13}
    9. c \leftarrow c \oplus G_{5}
    10. a \leftrightarrow b
    11. c \leftrightarrow d
    12. b \leftrightarrow c
  3. Установить Y \leftarrow c\|a\|d\|b
  4. Возвратить Y

Алгоритм хеширования

Для контроля целостности данных применяется специальная функция хеширования. На вход подается битовая последовательность X любой длины. Выход - 256-битовое хеш-значение входной последовательности.

К входной последовательности Xпервоначально добавляют t нулевых символов, где t - минимальное неотрицательное целое число такое, что | X | + t кратно 256. X\|0^t = X_1\|X_2\|X_3\|...\|X_d, X_i - 256-битное слово. Для хэширования дополнительно используются одна 128-битная переменная s и 256-битная переменная h. Определены два отображения: \sigma_1: {\{0,1\}}^{512} \rightarrow {\{0,1\}}^{128} и \sigma_2: {\{0,1\}}^{512} \rightarrow {\{0,1\}}^{256}, которые действуют на слова u=u_1\|u_2\|u_3\|u_4, u_i - 128-битное слово, по правилам:

\sigma_1 = F_{u_1\|u_2} \oplus u_3 \oplus u_4,


\sigma_1 =\oplus u_1)\|\oplus u_2),

где \theta_1 = \sigma_1||u_4, \theta_2 = \oplus 1^{128}) \| u_3

Для получения хеш-значения необходимо выполнить следующие шаги:

  1. Установить s \leftarrow 0^{128}
  2. Установить h = B194BAC80A08F53B366D008E584A5DE48504FA9D1BB6C7AC252E72C202FDCE0D
  3. Для i=1,2,… ,d выполнить:
    1. s \leftarrow s \oplus \sigma_1
    2. h \leftarrow \sigma_2
  4. Установить Y \leftarrow \sigma_2_{128}\|s\|h)
  5. Возвратить Y




Просмотров: 3327


<<< AES (конкурс)
DEAL >>>