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



Компьютеры - ECHO - Обозначения

09 июня 2011


Оглавление:
1. ECHO
2. Обозначения
3. COMPRESS512
4. COMPRESS1024



ECHO работает со 128-битными словами, поэтому любое сообщение M перед вычислением хеш-функции дополняется так, чтобы его длина была кратна 128. Дополненное сообщение M' можно представить битовой строкой длины n

b0b1...bn − 2bn − 1

или последовательностью из s=\frac{n}{8} байт

B_{0}\, =\, b_0 \| b_1 \| ... \| b_7
B_{1}\, =\, b_8 \| b_9 \| ... \| b_{15}
\vdots
B_{s-1}\, =\, b_{n-8} \| b_{n-7} \| ... \| b_{n-1}


ECHO использует операции из AES, которые работают с байтовыми массивами размером 4 на 4. Соответственно, принимается следующая упаковка строки байт в массив:

B_0 \| B_1 \| ... \| B_{15}\longrightarrow
B_{0}\, B_{4}\, B_{8}\, B_{12}\,
B_{1}\, B_{5}\, B_{9}\, B_{13}\,
B_{2}\, B_{6}\, B_{10}\, B_{14}\,
B_{3}\, B_{7}\, B_{11}\, B_{15}\,

Аналогично, входное сообщение можно представить как последовательность r=\frac{n}{128} 128-битовых слов

w_{0}\, =\, B_0 \| B_1 \| ... \| B_{15} =\, b_0 \| b_1 \| ... \| b_{127}
w_{1}\, =\, B_{16} \| B_{17} \| ... \| B_{31} =\, b_{128} \| b_{129} \| ... \| b_{255}
\vdots \vdots
w_{r-1}\, =\, B_{s-16} \| B_{s-15} \| ... \| B_{s-1} =\, b_{n-128} \| b_{n-127} \| ... \| b_{n-1}

Упаковка шестнадцати 128-битных слов в массив:

w_0 \| w_1 \| ... \| w_{15}\longrightarrow
w_{0}\, w_{4}\, w_{8}\, w_{12}\,
w_{1}\, w_{5}\, w_{9}\, w_{13}\,
w_{2}\, w_{6}\, w_{10}\, w_{14}\,
w_{3}\, w_{7}\, w_{11}\, w_{15}\,

Функция сжатия

В зависимости от желаемой битовой длины HSIZE результата хеширования в ECHO применяются две функции сжатия: COMPRESS512 и COMPRESS1024. Нижний индекс равен длине CSIZE переменной цепочки. На итерации i обе функции принимают 4 параметра:

  1. Текущее значение переменной цепочки Vi − 1 с битовой длиной CSIZE.
  2. Текущий блок сообщения с битовой длиной MSIZE = 2048 − CSIZE.
  3. Полное число Ci бит сообщения, обработанных к концу данной итерации. Если текущий блок M — последний, то Ci может оказаться меньше или равно значению i * MSIZE. В противном случае выполняется равенство Ci = i * MSIZE. Размер счётчик Ci можно выбрать равным 64 или 128 битам.
  4. SALT.

То, какая функция сжатия используется, зависит от выбранной битовой длины значения хеш-функции. Для HSIZE от 128 до 256 бит применяется COMPRESS512:

Vi = COMPRESS512,

для HSIZE от 257 до 512 бит переменная цепочки вычисляется по формуле

Vi = COMPRESS1024

Результатом работы обеих функций является некоторое значение с фиксированной битовой длиной. Поэтому для получения величин размера HSIZE конечный результат сокращается на необходимое число бит.

Инициализация

В начале хеширования счетчик C устанавливается в 0: C0 = 0. Начальное значение переменной цепочки устанавливается таким образом, что каждое ее слово является 128 битовым представлением числа HSIZE, то есть размера результата хеширования. В том случае, когда используется COMPRESS512 переменная цепочки V0 состоит из 4 слов:

V_0 =,

v_{0}^i = \begin{cases}
\mbox{E0000000 00000000 00000000 00000000}, & \mbox{HSIZE} = 224 \\
\mbox{00010000 00000000 00000000 00000000}, & \mbox{HSIZE} = 256
\end{cases}\mbox{ },\mbox{ }0 \le i \le 3

Когда применяется COMPRESS1024,

V_0 =,

v_{0}^i = \begin{cases}
\mbox{80010000 00000000 00000000 00000000}, & \mbox{HSIZE} = 384 \\
\mbox{00020000 00000000 00000000 00000000}, & \mbox{HSIZE} = 512
\end{cases}\mbox{ },\mbox{ }0 \le i \le 7

Дополнение сообщения

Результатом дополнения сообщения M является сообщение M', длина которого кратна 128. Обозначим через L длину исходного сообщения. Тогда M' получается в несколько шагов:

  1. К концу сообщения M приписать бит «1».
  2. Приписать x битов «0», где x = MSIZE − mod MSIZE) − 1
  3. Приписать 16-битное представление числа HSIZE
  4. Наконец, приписать 128-битное представление числа L

Дополненное сообщение M' записывается в виде


M' = \overbrace{M}^{L} \| 1 \| \overbrace{0.....0}^{x} \| \overbrace{\mbox{HSIZE}}^{16} \| \overbrace{L}^{128}



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


<<< Dual EC DRBG
GSS-API >>>