Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Two-Track-MAC - Принцип работы16 июня 2011Оглавление: 1. Two-Track-MAC 2. Описание 3. Принцип работы 4. Примеры 5. Безопасность 6. Вычислительная эффективность Как уже отмечалось Two-Track-MAC имеет два параллельных блока преобразований L и R, принимающие на вход сообщение M и ключ K. В результате каждый из блоков работает независимо друг от друга и создает два различных представления одних и тех же данных. Предположим для начала, что размер сообщения M составляет 512 бит. Размер ключа K всегда фиксирован и составляет 160 бит. Для усложнения преобразований L дает на выходе пять 32-битных слов . Т.е. формально разделяет пока ещё предварительный вариант ключа на 5 частей одинаковых размеров. Аналогично набор дает на выходе функция R. Затем эти слова вычитаются по модулю 2. Это своего рода смешивание двух значений для приведения из к фиксированной длине 160 бит. Окончательный результат: . Собственно это и есть то, ради чего все делалось. E является кодом аутентичности сообщения M. Если сообщение превышает 512 бит, то M разбивается на блоки , где Mi имеет длину 512 бит. В результате процесс мы все те же операции проводим над каждым блоком, перемешивая их по очереди. Сообщение длиной не кратной 512 дополняется нулями и единицами до нужного нам размера. Подробнее о смешивании результатов выполнения L и RПосле того, как каждая ветвь алгоритма обработает очередной блок сообщения, результаты должны каким то образом преобразоваться так, чтобы на выходе получилась фиксированная длина ключа. Рассмотрим данный процесс более подробно. Введем обозначения: Далее создаем два 160-битных блоков и . Эти блоки заполняются различными комбинациями с выходными данными функций L и R. А именно: , , , , , , , , . Не стоит забывать, что все сложения и вычитания производятся по модулю 2. Когда сообщение больше 512 бит, полученные блоки C и D будут подаваться на вход вместо ключа для следующего блока сообщения. Так происходит пока мы не пройдем все сообщение. Условно весь процесс создания создания кода аутентичности можно представляется как : затем процесс повторяется, с той лишь разницей, что в качестве ключа выступает результат предыдущего вычисления. На последней итерации получается мы меняем местами входные данные для R и L. Это делается для повышения стойкости кода аутентификации. Окончательные и представляют собой Two-track-MAC. ПсевдокодНиже представлен псевдокод алгоритма. FOR i:= 0 TO n-1 { IF FOR j:= 0 TO 79 { ; } else FOR j:= 0 TO 79 { } IF { } } ; Пояснения и возможные реализацииЗдесь даются пояснения к обозначениям, используемым в псевдокоде TTMAC, а так же обсуждается возможность их реализации. f - нелинейная функция, работающая с битами. Для различных j производит различные операции над x,y,z. А именно: Например на языке C удобно представить эти функции в виде макросов : #define F1 #define F2 )) #define F3 ) #define F4 )) #define F5 ) Символами c,c обозначены константы, значения которых определяется диапазоном j:
Функции r и r' дают один из 16 возможных блоков, на которые делится исходное сообщение. Так как блоки имеют размер 512 бит, то r может принимать значения от 0 до 15. Где r = 0 = 0) означает биты 0...15, а r = 15 = 15) - биты 495...511 соответственно.
Пример: Пусть сообщение: M = "Software-optimized universal hashing and message authentication." Поставим в соответствие каждому символу определенный код: "S", "o", "f", "t", "w", "a", "r", "e", "-", "o", "p", "t", "i", "m", "i", "z" 83, 111, 102, 116, 119, 97, 114, 101, 45, 111, 112, 116, 105, 109, 105, 122 "e", "d", " ", "u", "n", "i", "v", "e", "r", "s", "a", "l", " ", "h", "a", "s" 101, 100, 32, 117, 110, 105, 118, 101, 114, 115, 97, 108, 32, 104, 97, 115 "h", "i", "n", "g", " ", "a", "n", "d", " ", "m", "e", "s", "s", "a", "g", "e" 104, 105, 110, 103, 32, 97, 110, 100, 32, 109, 101, 115, 115, 97, 103, 101 " ", "a", "u", "t", "h", "e", "n", "t", "i", "c", "a", "t", "i", "o", "n", "." 32, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 46 В двоичном представлении текст сообщение будет содержать 512 нулей и единиц. Затем оно разбивается на 16 блоков по 32 бита: M0 = = M1 = = M2 = = M3 = = M4 = = M5 = = M6 = = M7 = = M8 = = M9 = = M10 = = M11 = = M12 = = M13 = = M14 = = M15 = = В результате функция M) выдаст:. А M2) даст третий бит, т.е 1. s и s - дают номер бита для операции битового поворота rol.
На самом все выше описанные выражения заимствованны из алгоритма хеш-функции RIPEMD-160. Собственно поэтому RIPEMD-160 и является основой для Two-Track-MAC. Реализация алгоритма TTMAC была включен в криптографическую библиотеку Crypto++® Library. Просмотров: 4719
|