Автор: Пользователь скрыл имя, 19 Октября 2011 в 14:18, реферат
Особенности современных симметричных криптосистем
Стандарт шифрования данных DES
Алгоритм шифрования IDEA
--------------------------
63 55 47 39 31 23 15
07 62 54 46 38 30 22
14 06 61 53 45 37 29
21 13 05 28 20 12 04
Результат преобразования G(K) разбивается на два 28-битовых блока C(0) и D(0), причем C(0) будет состоять из битов 57, 49, ..., 44, 36 ключа K, а D(0) будет состоять из битов 63, 55, ..., 12, 4 ключа K. После определения C(0) и D(0) рекурсивно определяются C(i) и D(i), i=1...16. Для этого применяют циклический сдвиг влево на один или два бита в зависимости от номера итерации, как показано в табл.7.
Таблица
7
Таблица сдвигов для вычисления ключа | ||||
|
Полученное значение вновь "перемешивается" в соответствии с матрицей H (табл.8).
Таблица 8:Матрица H завершающей обработки ключа
14 17 11 24 01 05
03 28 15 06 21 10
23 19 12 04 26 08
16 07 27 20 13 02
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Ключ K(i) будет состоять из битов 14, 17, ..., 29, 32 последовательности C(i)D(i). Таким образом:
K(i) = H(C(i)D(i))
Блок-схема алгоритма вычисления ключа приведена на рис.4.
Восстановление исходного текста осуществляется по этому алгоритму, но вначале вы используете ключ K(15), затем - K(14) и так далее.
Чтобы воспользоваться алгоритмом DES для решения разнообразных криптографических задач, разработаны четыре рабочих режима:
В этом режиме исходный файл M разбивается на 64-битовые блоки (по 8 байтов): M = M(1)M(2)...M(n). Каждый из этих блоков кодируется независимо с использованием одного и того же ключа шифрования (рис.5). Основное достоинство этого алгоритма - простота реализации. Недостаток - относительно слабая устойчивость против квалифицированных криптоаналитиков.
В этом режиме исходный файл M также, как и в режиме ECB, разбивается на 64-битовые блоки: M = M(1)M(2)...M(n). Первый блок M(1) складывается по модулю 2 с 64-битовым начальным вектором IV, который меняется ежедневно и держится в секрете. Полученная сумма затем шифруется с использованием ключа DES, известного и отправителю, и получателю информации. Полученный 64-битовый блок шифртекста C(1) складывается по модулю 2 со вторым блоком исходного текста, результат шифруется и получается второй 64-битовый блок шифртекста C(2) и т.д. Процедура повторяется до тех пор, пока не будут обработаны все блоки исходного текста (рис.6).
Таким образом для всех i = 1...n блок шифртекста C(i) определяется следующим образом:
C(i) = DES(M(i) xor
C(i-1)), C(0) = IV - начальное значение шифра, равное начальному вектору. |
Очевидно, что последний 64-битовый блок шифртекста является функцией секретного ключа, начального вектора и каждого бита открытого текста независимо от его длины. Этот блок шифртекста называют кодом аутентификации сообщения (КАС).
Код КАС может быть легко проверен получателем, владеющим секретным ключом и начальным вектором, путем выполнения процедуры, выполненной отправителем. Посторонний, однако, не может осуществить генерацию КАС, который воспринялся бы получателем как подлинный, чтобы добавить его к ложному сообщению, либо отделить КАС от истинного сообщения для использования его с измененным или ложным сообщением.
Достоинство данного режима состоит в том, что он не позволяет накапливаться ошибкам при передаче. Блок M(i) является функцией только C(i-1) и C(i). Поэтому ошибка при передаче приведет к потере только двух блоков исходного текста.
В этом режиме размер блока может отличаться от 64. Исходный файл M считывается последовательными t-битовыми блоками (t <= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).
64-битовый
сдвиговый регистр (входной
Для всех i = 1...n блок шифртекста C(i) определяется следующим образом:
C(i) = M(i) xor P(i-1) ,
где
P(i-1) - старшие t битов операции предыдущего
зашифрованного сообщения - DES(С(i-1)), причем
C(0)=IV.
Обновление сдвигового регистра осуществляется путем удаления его старших t битов и дописывания справа C(i).
Восстановление зашифрованных данных также выполняется относительно просто: P(i-1) и C(i) вычисляются аналогичным образом и
M(i) = C(i) xor P(i-1)
Блок-схема режима CFB приведена на рис.7.
Режим OFB очень похож на режим CFB.
Отличие от режима CFB состоит только в методе обновления сдвигового регистра. В данном случае это осуществляется путем удаления его старших t битов и дописывания справа P(i-1) (рис.8).
Каждому
из рассмотренных режимов
Режим ECB хорошо подходит для шифрования ключей. Режимы CBC и CFB пригодны для аутентификации данных. Режим CFB, кроме того, предназначен для шифрования отдельных символов. Режим OFB нередко используется в спутниковых системах связи.
Одним
из наиболее важных применений алгоритма
DES является защита сообщений электронной
системы платежей (ЭСП) при операциях
с широкой клиентурой и между
банками.
3. Алгоритм шифрования IDEA
Алгоритм IDEA (International Data Encryption Algorithm) является блочным шифром. Он оперирует 64-битовыми блоками открытого текста. Несомненным достоинством алгоритма IDEA является то, что его ключ имеет длину 128 бит. Один и тот же алгоритм используется и для шифрования, и для дешифрования.
Первая версия алгоритма IDEA была предложена в 1990 г., ее авторы - Х.Лей и Дж.Мэсси. Первоначальное алгоритм назывался PES (Proposed Encryption Standard). Улучшенный вариант этого алгоритма, разработанный в 1991 г., получил название IPES (Improved Proposed Encryption Standard). В 1992 г. IPES изменил свое имя на IDEA. Алгоритм IDEA использует при шифровании процессы смешивания и рассеивания, которые легко реализуются аппаратными и программными средствами.
В IDEA используются следующие математические операции:
Все операции выполняются над 16-битовыми субблоками.
Эти три операции несовместимы в том смысле, что:
Комбинирование этих трех операций обеспечивает комплексное преобразование входных данных, существенно затрудняя криптоанализ IDEA по сравнению с DES, который базируется исключительно на операции "исключающее ИЛИ".
Общая схема алгоритма IDEA приведена на рис.9. 64-битовый блок данных делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. Всего выполняется восемь циклов. Между циклами второй и третий субблоки меняются местами. В каждом цикле выполняется следующая последовательность операций:
(·) - умножение субблока X1 и первого подключа.
[+] - сложение субблока X2 и второго подключа.
[+] - сложение субблока X3 и третьего подключа.
(·) - умножение субблока X4 и четвертого подключа.
(+) - сложение результатов шагов 1 и 3.
(+) - сложение результатов шагов 2 и 4.
(·) - умножение результата шага 5 и пятого подключа.
[+] - сложение результатов шагов 6 и 7.
(·) - умножение результата шага 8 и шестого подключа.
[+] - сложение результатов шагов 7 и 9.
(+) - сложение результатов шагов 1 и 9.
(+) - сложение результатов шагов 3 и 9.
(+) - сложение результатов шагов 2 и 10.
(+) - сложение результатов шагов 4 и 10.
Выходом цикла являются четыре субблока, которые получаются как результаты выполнения шагов 11, 12, 13 и 14. В завершение цикла второй и третий субблоки меняются местами (за исключением последнего цикла). В результате формируется вход для следующего цикла.
После восьмого цикла осуществляется заключительное преобразование выхода: