Шифрование

Шифрование — преобразование данных, включающее использование криптографического ключа.
Опубликовано
12.6.2024

Шифрование — преобразование данных, включающее использование криптографического ключа.

Какие бывают виды шифрования.

Симметричное: один общий ключ.
Асимметричное: два ключа — один для шифрования, другой для дешифрования.
Ключ шифрования является общедоступным, а ключ дешифрования — закрытым.  

Распространенные алгоритмы шифрования включают AES, 3-DES, SNOW (симметричные), криптографию на основе эллиптических кривых и RSA (асимметричные). Как алгоритм асимметричного шифрования, RSA использует простую факторизацию (перемножение двух больших простых чисел). Взломать его очень сложно, т.к. необходимо определить исходные простые числа. Взлом ключа RSA методом подбора невозможен.  

Миллиарды попыток взлома — атака методом подбора. Современные компьютеры выдают комбинации кода со скоростью непостижимой человеку. Современное шифрование должно обладать стойкостью к таким атакам. Криптография — гонка вооружений между теми, кто разрабатывает новые способы взлома, и теми, кто разрабатывает новые методы шифрования.

Подробнее:

AES (Advanced Encryption Standard) выбран Национальным институтом стандартов и технологии (NIST) в 2001 году стандартом шифрования защиты конфиденциальности. Каждый блок обрабатывается независимо от других блоков, что упрощает параллельные вычисления и увеличивает скорость шифрования.  

Как работает:
AES использует несколько раундов шифрования, которые зависят от размера ключа. Для 256-битного необходимо 14 раундов, для 192-битного — 12, а для 128-битного — 10 раундов.

Каждый раунд состоит из четырёх операций:  

- Замена каждого байта в блоке данных на байт из таблицы с заранее подготовленными значениями
- Циклический сдвиг байтов
- Матричное преобразование
- Операция исключающего "ИЛИ" (сложение по модулю 2, XOR)

Где используется AES:
Правительство США.
Google Cloud.
Snapchat и Facebook Messenger.
Программы сжатия файлов 7-Zip, WinRAR, WinZip для предотвращения утечки данных.
Библиотеки языков программирования Java, Python и C++.
В протоколах VPN.
В протоколах безопасности веб-сайтов для шифрования данных между клиентом и сервером. Например, в HTTPs.

Еще на базе AES разработан алгоритм шифрования MTProto, который используется вTelegram.  


RSA (Rivest-Shamir-Adleman) Разработан Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году. В 2001 году RSA был включён в федеральные стандарты обработки информации США.  

Как работает:

RSA основан на модульной арифметике и свойствах простых чисел.
Включает два этапа: генерацию ключей, шифрование и расшифровку.
Расшифровать сообщение может только владелец приватного ключа.  Зашифровать своё сообщение и посмотреть, как работают формулы в алгоритме, можно на странице с генераторами ключей RSA.  

Где используется:
Для создания цифровой подписи сообщения.
В протоколах безопасности SSL/TLS для защиты трафика.
Для шифрования данных на уровне файла. В электронных платежах и онлайн-банкинге.
В инфраструктуре открытых ключей (PKI) для создания цифровых сертификатов.
В системах аутентификации для безопасного входа в приложения.

Blowfish разработанный в 1993 году американским криптографом Брюсом Шнайером в качестве альтернативы алгоритму DES, симметричный алгоритм блочного шифрования. Один из наиболее гибких методов шифрования.  

Как работает:

Алгоритм разделяет большие части исходного сообщения на блоки по 64 бита и шифрует по отдельности. Длина ключа варьируется от 32 до 448 битов.
В процессе ключ расширяется для генерации серии подключей.
Исходные данные делятся на фиксированные блоки и используется ключ шифрования для создания замен и перестановок в процессе шифрования.
Алгоритм применяет серию шифровальных раундов к каждому блоку данных.
Каждый раунд включает несколько математических операций, таких как сложение, исключающее ИЛИ и замена значений.

Где используется:
В менеджерах паролей (Java PasswordSafe, Access Manager, Web Confidential).
При шифровании файлов и дисков.
В инструментах резервного копирования (Symantec NetBackup).
В VPN.
В протоколе SSH.