Шрифт:
Еще одно важное свойство хэш-функций – это относительно высокая скорость работы.
Хэширование позволяет достаточно быстро вычислить искомый хэш из весьма большого массива входной информации.
Этим хэширование существенно отличается от кодирования (шифрования) и декодирования (дешифрования).
Хэширование или хэш-функция используется во многих алгоритмах и протоколах. В частности, в электронной цифровой подписи (ЭЦП) и блокчейне.
Шифрование с открытым ключом: Наглядная иллюстрация
Долгое время традиционная криптография использовала шифрование с тайным или симметричным ключом – один и тот же ключ использовался как для шифрования, так и для расшифровки (дешифрования) данных.
Наглядно это можно представить в виде замка, которым запирался сундук с тайным сообщением. Пара одинаковых ключей к этому замку была как у отправителя сообщения (шифровальщика), так и у получателя (дешифровальщика).
Разумеется, в действительности никто не отправлял сообщения в запертых сундуках. Тексты, которые надо было зашифровать, видоизменялись с использованием тайного ключа – последовательности символов, которая, смешиваясь с передаваемым сообщением особым образом (называемым алгоритмом шифрования), приводила к получению шифровки (шифротекста) – сообщения, которое невозможно было прочитать, не зная алгоритма и ключа.
Шифрование с симметричным ключом 11
11
Рисунок из книги Филиппа Циммерманна «Введение в криптографию».
Но для наглядности процесса мы представим, что наше сообщение помещалось в некий прочный сундук и закрывалось надежным навесным замком, одинаковые ключи от которого были у обеих сторон – отправителя и получателя.
Вот этот ключ, которым запиралось (зашифровывалось) и открывалось (расшифровывалось) сообщение, назывался тайным симметричным ключом.
Проблема была в том, что при смене ключа (шифра) в целях безопасности, его необходимо было доставить получателю, который зачастую находился далеко и на враждебной территории. Передавать тайный ключ открытыми каналами связи было небезопасно.
Долгое время проблема безопасной передачи нового ключа (шифра) оставалась неразрешенной. Как правило, для этого использовали тайных курьеров, что не гарантировало на 100% того, что шифр (ключ) не попадет к нежелательным лицам, которые смогут им воспользоваться для дешифрования тайных сообщений.
Проблема с ключами была решена только в 1975 году, когда Уитфилд Диффи (Bailey Whitfield «Whit’ Diffie) и Мартин Хеллман (Martin E. Hellman) предложили концепцию шифрования с парой ключей: открытым (публичным – public key), который зашифровывает данные, и соответствующим ему закрытым (приватным – private key).
Эта система шифрования получила название криптографии с открытым ключом или асимметричной криптографии.
Работает эта система так:
1. Генерируется случайный закрытый (приватный) ключ (напомним, что ключ – это последовательность символов) и по определенному алгоритму подбирается к нему другой – открытый (публичный) ключ. При этом для любого закрытого ключа существует только один вариант открытого. Т.е. эти ключи (приватный и публичный) всегда работают в паре (связке).2. Далее полученный открытый (публичный) ключ пересылается по любым открытым каналам связи отправителю тайного сообщения.3. Получив открытый (публичный) ключ, отправитель при помощи него зашифровывает сообщение и отправляет его получателю, у которого есть соответствующий закрытый (приватный) ключ.4. Получатель расшифровывает секретное сообщение, используя свой закрытый (приватный) ключ из пары с открытым (публичным), которым было зашифровано сообщение.Следует отметить, что открытым (публичным) ключом можно только зашифровать сообщение, но расшифровать его уже этим ключом не получится. Для дешифрования нужен только закрытый (приватный) ключ из пары. Так работает алгоритм с асимметричным шифрованием.
Шифрование с асимметричным ключом
Но вернемся к нашему сундуку с сообщением. Как же теперь наглядно представить асимметричное шифрование? Как так можно – запирать одним ключом, а отпирать другим?
Представим себе навесной замок с двумя замочными скважинами и двумя ключами (см. рис. ниже) – левый ключ (1) через левую замочную скважину (1) может снимать фиксацию с левой половинки дуги замка, освобождая ее и открывая весь замок. Правый ключ (2) через правую замочную скважину (2) может фиксировать правую половинку дуги в замке, тем самым закрывая замок. Но после закрытия, этот ключ (2) не может уже освободить от фиксации правую часть дуги и тем самым открыть замок.
<