Реферат: Шифрование по методу UUE
Описание алгоритма
Алгоритм UUE основан на идее Фила Карна.
Берётся открытый текст 2N байтов и разделяется на две половины T1 и T2, каждый из N байтов. Также ключ шифрования делиться на две половины K1 и K2. Теперь находится функцию хэша пути S и это используется, чтобы смешивать K1 и T1 для того, чтобы получить блок из N байтов, затем производится второй этап шифрования открытого текста T2 при помощи алгоритма шифрования XOR; в результате получаем блок C2 состоящий из N байтов - это вторая половина зашифрованного текста:
S( K1, T1 ) xor T2 -> C2
Аналогичным способом шифруем другую половину текста, чтобы получить C1 - это первая половина зашифрованного текста:
S( K2, C2 ) xor T1 -> C1
Полный зашифрованный текст - сочетание блоков C1 и C2.
Для того, чтобы дешифровать зашифрованный текст, необходимо повторить операцию в обратном порядке:
S( K2, C2 ) xor C1 -> T1
S( K1, T1 ) xor C2 -> T2
Преимущество данной идеи в том, что безопасность основана в качестве скремблера S. Если Вы можете создать хороший скремблер, тогда Вы можете создать хороший шифровальный алгоритм.
Сердцем алгоритма UUE является параметрический скремблер (GSSCRAMBLE). Скремблер состоит из 7 простых скремблеров (SCRAMBLE0.. SCRAMBLE6). Также используются 32 функции хэша (HASH0.. HASH31).
Алгоритм UUE основан на вышеописанном методе, но он отличается от него.
- Первое отличие – производится деление ключа на четыре равных части: K1s, K1t, K2s, K2t. Компонент K1t используется как первая половина ключа шифрования, компонент K1s используется, чтобы выбирать из большого числа скремблеров - один, чтобы использовать его в дальнейшем для кодировки первой половины открытого текста T1:
S ( K1t, T1 ) xor T2 -> C2 K1s
Аналогичном способом использованы K2t и K2s, чтобы кодировать вторую часть зашифрованного текста, чтобы получить первую половину зашифрованного текста:
S ( K2t, C2 ) xor T1 -> C1 K2s
Для того, чтобы дешифровать зашифрованный текст (C1,C2)необходимо повторить эти же операции в обратном порядке:
S ( K2t, C2 ) xor C1 -> T1 K2s
S ( K1t, T1 ) xor C2 -> T2 K1s
Как Вы можете видеть, K1t и K2t использованы, чтобы модифицировать данные, которые нужно смешиваться, и подключи K1s и K2s использованы, чтобы выбирать скремблер, который определяет как данные будут смешаны. Поскольку UUE использует ключ в 256 байтов, который делится на четыре равные части, каждая длиной в 64 байт (512 битов).
Второе отличие предназначено для устранения слабости в алгоритме Фила Карна. Это можно проиллюстрировать следующим образом: предположим, что мы знаем открытый текст (A,B) и мы знаем, что это производит зашифрованный текст (X,Y), и мы также знаем, что открытый текст (A,C) - в котором мы знаем первую половину сообщения, но не знаем вторую половину - производит зашифрованный текст (W,Z). Затем мы можем вычислить неизвестный открытый текст C следующим образом:
S( K1, A ) xor B -> Y; следовательно S( K1, A ) = B xor Y
S( K1, A ) xor C -> W; следовательно C = S( K1, A) xor W
Объединение эти два результата дает мне величину C в форме:
C = ( B xor Y ) xor W
UUE свободен от этой слабости
Чтобы закодировать сообщение:
S( K1, T1 xor T2 ) xor T2 -> C2 S( K2, C2 ) xor ( T1 xor T2 ) -> C1