Основные алгоритмы шифрования — HackZona.Ru

Основные алгоритмы шифрования

Основные алгоритмы шифрования

Тип статьи:
Со старой ХакЗоны.
[Введение]
Моя статья постарается пролить немного света на шифрование в целом, способы шифрования и алгоритмы шифрования данных.

Шифрование способ скрытия информации, применяемый для хранения информации в ненадежных источниках или передачи её по незащищённым каналам связи. Методы шифрования могут быть разными:
— Тайнопись не существует какого либо ключа, метод расшифровки знают только получатель и отправитель.
— Симметричное шифрование: другим людям может быть известен алгоритм шифрования, но неизвестен ключ, который одинаков для отправителя и получателя сообщения;
Большинство современных стойких симметричных алгоритмов используют ключ длиной 64256 бит (832 байта).
— Асимметричное шифрование: посторонним лицам может быть известен алгоритм шифрования, и, возможно открытый ключ, но неизвестен закрытый ключ, известный только получателю. Например, алгоритм RSA, о нем я расскажу ниже.

Не буду долго попусту разглагольствовать, перейду к описанию самих алгоритмов. Их очень много, поэтому я перечислю лишь наиболее распространенные из них.

[Алгоритмы шифрования]
— md5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом в 1991 году.
Попытаюсь описать принцип его работы. Входные данные выравниваются так, чтобы их размер был сравним с 448 по модулю 512. Сначала дописывается единичный бит (даже если длина сравнима с 448), затем необходимое число нулевых бит.
Дописывание 64 — битного представления длины данных до выравнивания. Если длина превосходит 264 − 1, то дописываются младшие биты.
Инициализируются 4 переменных размером по 32 бита:
А = 01 23 45 67;
В = 89 AB CD EF;
С = FE DC BA 98;
D = 76 54 32 10.
Выравненные данные разбиваются на блоки по 32 бит, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид:
[abcd k s i], определяемый как
a = b + ((a + Fun(b,c,d) + X[k] + T ) < < < s), где X — блок данных, а T[1..64] — 64х элементная таблица данных построенная следующим образом:
T[i] = int(4294967296 * | sin(i) |), s — циклический сдвиг влево на s бит полученого 32-битного аргумента.
В первом раунде Fun F(X, Y, Z) = XY v (not X)Z
Во втором раунде Fun G(X, Y, Z) = XZ v (not Z)Y.
В третьем раунде Fun Н(Х, Y, Z) = Х xor Y xor Z.
В четвертом раунде Fun I(Х, Y, Z) = Y xor (X v (not Z)).

Md5 брутеры. Я юзаю Advanced MD5 Recovery infostore.org/info/1737606

— DES (Data Encryption Standard) — разработан в середине 70-x годов. Он используется во многих криптографических системах. Это блочный алгоритм шифрования с симметричным ключом. Ключ состоит из 64 битов, но лишь 56 из них применяются непосредственно при шифровании. Оставшиеся 8 предназначены для контроля четности: они устанавливаются так, чтобы каждый из 8 байтов ключа имел нечетное значение. Шифруемая информация обрабатывается блоками по 64 бита, причем каждый блок модифицируется с помощью ключа в интерационной процедуре, включающей 16 циклов. В данный момент при длине ключа в 56 битов алгоритм считается не устойчивым к взлому.
DES брутер PasswordsPro. Прога очень хорошая, инфу и ней, да и её саму ты сможешь взять тут: www.insidepro.com/rus/passwordspro.shtml

— ГОСТ_28147-89 отечественный дефолтный алгоритм. Советский и российский стандарт симметричного шифрования, введённый в 1990 году. Полное название — «ГОСТ 2814789 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».

ГОСТ 28147-89 это блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Базовым режимом шифрования по ГОСТ 28147-89 является режим простой замены (определены также более сложные режимы: гаммирование и гаммирование с обратной связью). Для зашифрования в этом режиме открытый текст сначала разбивается на левую и правую половины L{efl} и R{ight}. На i-м цикле используется подключ k[i]:
R[i] + 1 = L[i]
L[i+1] = R[i] xor f(L[i], k[i])
Для генерации подключей исходный 256-битный ключ разбивается на восемь 32-битных блоков: k[1]… k[8].

Расшифрование выполняется так же, как и зашифрование, но инвертируется порядок подключей k[i].

Функция f(L[i], k[i]) вычисляется следующим образом:
R[i-1] и k[i] складываются по модулю 2^32.

Результат разбивается на восемь 4-битовых подпоследовательностей, каждая из которых поступает на вход своего S-блока. Общее количество S-блоков ГОСТа восемь, т. е. столько же, сколько и подпоследовательностей (k[1]… k[8]. Каждый S-блок представляет собой перестановку чисел от 0 до 15. Первая 4-битная подпоследовательность попадает на вход первого S-блока, вторая на вход второго и т. д.
Если S-блок выглядит так:
1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12
и на входе S-блока 0, то на выходе будет 1, если 9, то на выходе будет 2 и т. д.

Выходы всех восьми S-блоков объединяются в 32-битное слово, затем всё слово циклически сдвигается влево на 11 бит.
Все восемь S-блоков могут быть различными.

— 3DES (тройное DES) симметричный блочный криптографический алгоритм, созданный на основе алгоритма DES, с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом перебора ключа.
В 3-DES был выбран как простой путь увеличения длины ключа, без необходимости переходить на новый алгоритм в нем используется над 64 битным блоком данных несколько раз производится шифрование алгоритмом DES (конечно с разным ключем), в простейшем варианте это выглядит как: DES(k3;DES(k2;DES(k1;M))), где M -блок исходных данных, k1, k2, и k3 ключи DES. Длина ключа алгоритма 3-DES в равна 168 битам (3 x ключ DES). Я не буду описывать принцип работы этого алгоритма, так как он практически идентичен DES.

— IDEA
(International Data Encryption Algorithm). Первоначальный вариант алгоритма IDEA появился в 1990 г. Разработчики алгоритма, Ксуеджа Лай (Xuejia Lai) и Джеймс Мэсси (James Massey) из Швейцарского института ETH Zurich, дали ему название PES (Proposed Encryption Standard — предлагаемый стандарт шифрования), поскольку данный алгоритм был предложен на замену стандарта DES.
Через год алгоритм был модифицирован с целью усиления криптостойкости к дифференциальному криптоанализу. Новая версия получила название IPES (Improved PES — улучшенный PES), а еще через год алгоритм сменил название на IDEA (International Data Encryption Algorithm — международный алгоритм шифрования данных).
Основные характеристики и структура
Алгоритм IDEA шифрует данные блоками по 64 бит, а ключ шифрования алгоритма имеет размер 128 бит. Блок шифруемых данных разбивается на четыре 16-битных субблока A, B, C и D (рис. 1), над которыми выполняется восемь раундов преобразований:
A = A [x] Kr1
B = B + Kr2
C = C + Kr3
D = D [x] Kr4
T1 = A [+] C
T2 = B [+] D
T1 = T1 [x] Kr5
T2 = T1 + T2
T2 = T2 [x] Kr6
T1 = T1 + T2
A = A [+] T2
B = B [+] T1
C = C [+] T2
D = D [+] T1,
где Krn — подключ n раунда r, "+" — операция сложения 16-битных операндов по модулю 2{в 16-й степени}, [+] — побитовая логическая операция «исключающее или» (XOR), [x] — умножение 16-битных операндов по модулю (2{в 16-й степени} + 1), причем в качестве значения субблока, состоящего из одних нулей, берется значение 2{в 16-й степени}.
После выполнения описанных выше действий два внутренних субблока (B и C) меняются местами — во всех раундах, кроме последнего. По завершении восьми раундов выполняются дополнительные преобразования (иногда называемые девятым раундом алгоритма):
A' = A [x] K91
B' = B + K92
C' = C + K93
D' = D [x] K94

Шифртекст представляет собой результат конкатенации полученных значений A', B', C' и D'.
Операция расшифрования аналогична зашифрованию, с той разницей, что при расшифровании используются модифицированные подключи и в другой последовательности:
K'r1 = (K(10-r)1)-1
K'r2 = -K(10-r)3
K'r3 = -K(10-r)2
K'r4 = (K(10-r)4)-1
K'r5 = K(9-r)5
K'r6 = K(9-r)6,

за исключением раундов 1 и 9, в которых подключи K'r2 и K'r3 меняются местами. Здесь K'rn — подключ n раунда расшифрования r, -x и x-1 — обратные значения x относительно описанных выше операций сложения по модулю 2{в 16-й степени} и умножения по модулю (2^16 + 1) соответственно. При этом 0^1 = 0.

[Заключение]
Я не стремился рассказать обо всех методах шифрования, их очень много. Я осветил лишь самые распространенные из них.
Нравится
Не нравится

5 комментариев

15:07
Хорошо, давно хотел узнать как именно работает md5, да все как-то поискать было лень ;).
18:44
Статья заслуживает внимания...
01:18
Очень полезная статья
23:02
Отличная статья!
17:06
Читать долговато... 5...