Статья Криптография для начинающих: Практические аспекты шифрования и защиты данных

1756381195215.webp


В современном цифровом мире информация стала одним из самых ценных ресурсов. Ежедневно мы выводим данные — от личных сообщений и финансовых операций до государственных секретов.

Эта статья развеивает миф о сложности криптографии и показывает ее практическую ценность. Мы разберём фундаментальные концепции без погружения в математических формулах, изучив популярные алгоритмы на конкретных примерах, рассмотрим реальные сценарии применения VPN до стационара, а также обсудим типичные уязвимости и методы их эксплуатации. Если вы хотите не просто использовать готовые решения, но учитывать принципы их работы и оценить их надежность, эта статья предоставит вам необходимые основания.

🧱 Основы криптографии​

Фундаментальные концепции​

Криптография — это наука о методах обеспечения конфиденциальности, достоверности и подлинности информации посредством ее преобразования. В отличие от стереотипов, современная криптография — это не только шифрование, но и хеширование, цифровые технологии, протоколы аутентификации и многое другое.
Центральным понятием является криптографический ключ — секретная информация, используемая алгоритмом для преобразования данных. Ключ определяет, как именно происходит шифрование: даже алгоритм без ключа восстановить исходные данные практически невозможно. Это принцип Керкгоффса, сформулированный ещё в XIX веке: устойчивость системы должна обеспечиваться только от секретности ключа, а не алгоритма.

Основные криптографические примитивы​

Триада информационной безопасности:
  1. Конфиденциальность (Конфиденциальность) — данные доступны только уполномоченным пользователям.
  2. Целостность (Целостность) — данные не были изменены без авторизации.
  3. Доступность (Доступность) — данные доступны при необходимости.
Процесс шифрования преобразует открытый текст в зашифрованный с использованием ключа и алгоритма. Расшифрование выполняет повторную операцию. Современные алгоритмы разрабатываются так, что без знания ключа злоумышленника не удалось восстановить исходные данные даже при наличии мощных вычислительных ресурсов.

🔑 Симметричные и асимметричные алгоритмы​

AES: король симметричного шифрования​

Advanced Encryption Standard (AES) — это современный стандарт симметричного шифрования, принятый правительством США в 2001 году и измененный по всему миру. AES работает с блоками данных размером 128 бит и поддерживает ключи длиной 128, 192 или 256 бит. Алгоритм выполнения преобразований над данными: подстановки, перестановки, изменение столбцов и добавление ключа раунда.
Характеристики различных версий AES:
ВерсияДлина ключа (бит)Количество раундовВремя взлома (теоретически)
АЕС-128128102^128 операций
АЕС-192192122^192 операций
АЕС-256256142^256 операций
Практическое применение AES можно увидеть где угодно: от шифрования жёстких дисков BitLocker до защиты сетей Wi-Fi WPA3. Скорость работы AES впечатляет — современные процессоры с AES-NI способны шифровать данные со скоростью несколько гигабайт в секунду.
Пример шифрования файла с AES в OpenSSL:
Bash:
# Шифрование файла
openssl enc -aes-256-cbc -salt -in document.txt -out document.txt.enc -k MyStrongPassword

# Расшифрование файла
openssl enc -aes-256-cbc -d -in document.txt.enc -out document_decrypted.txt -k MyStrongPassword

# Генерация случайного ключа
openssl rand -hex 32  # 256-битный ключ в hex

RSA: классика асимметричного шифрования​

RSA (Ривест-Шамир-Адлеман) — наиболее известный алгоритм асимметричного шифрования, основанный на сложности факторизации больших составных чисел. Каждый пользователь последовательно использует пару ключей: открытый ключ публикуется и используется для шифрования сообщений, а закрытый ключ хранится в секрете и используется для расшифровки.
Процесс работы RSA:
  1. Генерация двух больших простых чисел p и q
  2. Вычисление n = p × q (открытый модуль)
  3. Вычисление функции Эйлера φ = (p-1)(q-1)
  4. Выбор открытых экспонентов e (обычно 65537)
  5. Вычисление закрытой экспоненты d
Генерация ключей RSA:
Bash:
# Генерация приватного ключа
openssl genrsa -out private_key.pem 2048

# Извлечение публичного ключа
openssl rsa -in private_key.pem -pubout -out public_key.pem

# Шифрование небольшого файла
openssl rsautl -encrypt -inkey public_key.pem -pubin -in message.txt -out message.enc

# Расшифрование
openssl rsautl -decrypt -inkey private_key.pem -in message.enc -out message_decrypted.txt

Гибридное шифрование: лучшее из двух миров​

В примере редко используется только симметричное или только асимметричное шифрование. Гибридные системы объединяют преимущества обоих подходов:
  • Асимметричное шифрование используется для безопасного обмена симметричным ключом.
  • Симметричное шифрование используется для шифрования основных данных.
  • Цифровые подключения обеспечивают аутентификацию и целостность.

🌐 Практическое применение криптографии​

VPN: защищённые туннели в небезопасном мире​

Виртуальные частные сети создают зашифрованные туннели через небезопасные сети, что позволяет удаленным сотрудникам безопасно подключаться к корпоративным ресурсам. Современные VPN-протоколы используют аутентифицированное шифрование, объединяющее конфиденциальность и целостность в одном алгоритме.
Популярные VPN-протоколы в 2025 году:
  • WireGuard — современный протокол с минималистичным дизайном
  • IKEv2/IPSec — стабильный корпоративный стандарт
  • OpenVPN — проверенное временем решение с открытым кодом

HTTPS: безопасность веб-коммуникаций​

Протокол HTTPS защиты веб-трафика через Transport Layer Security (TLS). Текущая версия TLS 1.3 значительно упростила процедуру установления связи, уменьшила количество сообщений и обнаружила уязвимые криптографические примитивы.

Мессенджеры: сквозное шифрование​

Протокол Signal, конференции на основе WhatsApp и Signal, реализует алгоритм двойного храпового механизма — метод, обеспечивающий прямую секретность и безопасность после компрометации. Каждое сообщение шифруется с ключом, который сразу же удаляется.
Принципы E2EE-мессенджеров:
  • Только отправитель и получатель могут читать сообщения
  • Провайдер услуг не имеет доступа к содержимому
  • Каждая сессия использует уникальные ключи
  • Поддержка идеальной прямой секретности

⚠️ Криптографические уязвимости и атаки​

Слабая генерация случайных чисел​

Одна из наиболее критических проблем — недостаточная энтропия при генерации ключей. Debian OpenSSL 2008 года показала, что ошибка в генераторе псевдослучайных чисел делает доступные миллионы SSH и SSL-ключей.
Рекомендации по генерации ключей:
  • Используйте криптографические стойки ГСЧ.
  • Обеспечьте достаточную энтропию
  • Никогда не поощряйте рекомендательные источники
  • Регулярно обновляйте ключи

Атаки по внешним каналам​

Атаки по побочным каналам обеспечивают физические характеристики выполнения криптографических операций. Эти меры особенно опасны, поскольку могут препятствовать математической стойкости алгоритмов, атакуя их реализацию.
Основные типы атак по побочным каналам:
Тип атакиЧто анализируетсяПример уязвимости
Атака по времениВремя выполнения операцииRSA с китайской теоремой об остатках
Анализ мощностиЭнергопотреблениеAES на смарт-картах
ЭлектромагнитныйЭМ излучениеВосстановление ключей с расстояния
АкустическийЗвуковые колебания«Слушание» процессора
Заполнение Oracle обеспечивает получение информации от системы корректности включения (padding) в блочных шифрах. Если приложение по-разному реагирует на неправильное дополнение и неправильный MAC, злоумышленник может постепенно восстановить зашифрованные данные.
Защита от Padding Oracle:
  • Используйте аутентифицированное шифрование (GCM, ChaCha20-Poly1305)
  • Реализовать постоянное время обработки ошибок
  • Не раскрывайте информацию об ошибках дешифрования

🛠️ Современные инструменты и библиотеки​

OpenSSL: швейцарский нож в криптографии​

OpenSSL остается наиболее широко используемой криптографической библиотекой. Современная версия прошла серьёзный аудит кода и рефакторинг после уязвимости Heartbleed.
Основные команды OpenSSL:
Bash:
# Генерация случайных данных
openssl rand -hex 16  # 16 байт в hex формате
openssl rand -base64 32  # 32 байта в base64

# Работа с хешами
echo "Hello World" | openssl dgst -sha256
openssl dgst -sha256 -hmac "secret_key" file.txt

# Создание сертификатов
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem

Криптография с python​

Библиотека cryptographyпредоставляет современный API со связью от неправильного использования:
Python:
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import base64
import os

# Генерация ключа из пароля
def derive_key_from_password(password: bytes, salt: bytes) -> bytes:
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=salt,
        iterations=100000,
    )
    return base64.urlsafe_b64encode(kdf.derive(password))

# Простое шифрование с Fernet
password = b"my_secure_password"
salt = os.urandom(16)
key = derive_key_from_password(password, salt)

f = Fernet(key)
message = b"Secret message"
token = f.encrypt(message)
decrypted = f.decrypt(token)

print(f"Зашифровано: {token}")
print(f"Расшифровано: {decrypted}")
  1. Создается криптографический ключ из заданного пользователем пароля и случайной соли с использованием функции PBKDF2HMAC (функция получения ключа на основе пароля 2) с алгоритмом SHA-256. Эта функция многократно преобразует пароль с добавлением соли, чтобы получить надёжный 256-битный ключ.
  2. Fernet реализует симметричное шифрование с аутентификацией, обеспечивает целостность и конфиденциальность данных.
  3. Зашифровывает сообщение ( "Secret message") с помощью Fernet.
  4. Расшифровывает зашифрованное сообщение, возвращающее исходный текст.
  5. Выводит в консоль зашифрованные данные (в формате токена) и расшифрованный текст.

Специализированные инструменты для анализа​

Инструменты пентестера для криптоанализа:
ИнструментНазначениеОсобенности
HachcatВосстановление паролейУскорение графического процессора, множество алгоритмов
John the RipperБрутфорс хешейПравила трансформации, словари
SSLyzeАнализ SSL/TLSАвтоматическое сканирование
testssl.shТестирование TLSBash скрипт, детальный анализ
Пример использования Hashcat:
Bash:
# Атака по словарю на MD5 хеши
hashcat -a 0 -m 0 hashes.txt wordlist.txt

# Брутфорс с маской (8 символов, буквы и цифры)
hashcat -a 3 -m 0 hashes.txt ?a?a?a?a?a?a?a?a

# Комбинированная атака
hashcat -a 1 -m 0 hashes.txt wordlist1.txt wordlist2.txt
Чтобы разобраться в системных средствах криптографии Windows, обратитесь к материалу «Изучаем CNG: криптография нового поколения в Windows». В нем подробно описана архитектура CNG и практический пример использования API для защиты данных на уровне ОС.

🚀 Тенденции и криптография будущего​

Гомоморфное шифрование​

Гомоморфное шифрование Позволяет выполнять вычисления над зашифрованными данными без их расшифрования. Это открывает возможности для конфиденциальных компьютеров в облаке.
Типы гомоморфного шифрования:
  • Частично гомоморфное — поддерживает один тип операций (сложение или умножение).
  • Несколько гомоморфных — ограниченное количество операций
  • Полностью гомоморфное — произвольные вычисления

Доказательства с нулевым разглашением​

Доказательства с нулевым разглашением — интерактивный криптографический протокол, позволяющий одной из взаимодействующих сторон убедиться в достоверности какого-либо утверждения, не имея при этом никакой другой информации от второй стороны..
Применения ZK-доказательств:
  • Анонимные платежи в криптовалютах
  • Приватная аутентификация
  • Верификация программы без раскрытия данных
  • Голосование с сохранением тайны

Многопартийные вычисления (MPC)​

MPC позволяет различным сторонам совместно вычислить функцию из их секретных входов, не раскрывая эти входы друг другу.
Практические применения ПДК:
  1. Совместные аукционы без открытия ставок
  2. Частное машинное обучение
  3. Анонимное голосование
  4. Совместная обработка медицинских данных

📚 Полезные ресурсы для дальнейшего изучения​

Книги:
  • «Справочник по прикладной криптографии» — Менезес, ван Ооршот, Ванстон
  • «Криптографическая инженерия» — Фергюсон, Шнайер, Коно
  • «Серьёзная криптография» — Жан-Филипп Омассон
Онлайн курсы:
  • Coursera: «Криптография I» Стэнфордского университета
  • edX: «Введение в криптографию» от MIT
  • Cybrary: «Прикладная криптография»
Платформы CTF для практики:
  • CryptoHack.org — специализированные криптографические задачи
  • PicoCTF — для начинающих
  • HackerLab — различные уровни сложности
Начинающим поможет статья «С чего начать изучение криптографии: полное руководство для новичков». В ней изложены базовые понятия и предпочтительный план изучения темы, необходимый для уверенной работы с криптографическими алгоритмами.

🎯 Заключение​

Криптография — это не просто математическая абстракция, это практический инструмент обеспечения безопасности в мире. Понимание ее основ крайне важно для любого специалиста по ИБ, поскольку некорректное использование криптографии может создать ложное чувство безопасности при фактическом отсутствии защиты.

Начинающим специалистам следует сосредоточить внимание на преобразовании работы основных алгоритмов и протоколов, а не на их математических деталях. Важнее знать, когда использовать симметричное, а когда асимметричное шифрование, как правильно управлять ключами и какими протоколами обеспечить гарантии безопасности.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы