Что такое шифрование (encryption) в информационной безопасности?

«Что такое шифрование (encryption) в информационной безопасности?» — вопрос из категории Безопасность, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Шифрование (encryption) — это криптографический процесс преобразования читаемых данных (открытый текст) в нечитаемый формат (шифротекст) с использованием алгоритма и секретного параметра (ключа). Обратный процесс восстановления открытого текста из шифротекста называется дешифрованием.

Основные цели: Конфиденциальность (защита от прочтения), целостность данных (обнаружение изменений), аутентификация (подтверждение источника).

1. Симметричное шифрование

Использует один и тот же ключ для шифрования и дешифрования.

  • Алгоритмы: AES (Advanced Encryption Standard), ChaCha20, DES (устарел).
  • Плюсы: Высокая скорость.
  • Минусы: Сложность безопасной передачи ключа сторонам (проблема распределения ключей).

Пример (AES-256-GCM на Python с библиотекой cryptography):

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os

# Генерация случайного 256-битного ключа и nonce (одноразового номера)
key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
nonce = os.urandom(12)  # 96 bits для GCM

# Данные для шифрования
plaintext = b"Sensitive data for encryption"
associated_data = b"metadata"  # Данные для аутентификации (опционально)

# Шифрование
ciphertext = aesgcm.encrypt(nonce, plaintext, associated_data)
print(f"Шифротекст: {ciphertext.hex()}")

# Дешифрование (требует тот же key, nonce и associated_data)
decrypted_data = aesgcm.decrypt(nonce, ciphertext, associated_data)
print(f"Расшифровано: {decrypted_data.decode()}")

2. Асимметричное шифрование (шифрование с открытым ключом)

Использует пару ключей: публичный (public) для шифрования и приватный (private) для дешифрования.

  • Алгоритмы: RSA, ECC (Elliptic Curve Cryptography).
  • Плюсы: Решает проблему распределения ключей. Публичный ключ можно свободно распространять.
  • Минусы: Значительно медленнее симметричного шифрования.

Типичное применение (гибридная схема):

  1. Клиент генерирует случайный сеансовый ключ для симметричного шифрования.
  2. Клиент шифрует этот сеансовый ключ публичным ключом сервера (асимметрично) и отправляет его.
  3. Сервер расшифровывает сеансовый ключ своим приватным ключом.
  4. Далее весь обмен данными идет с использованием быстрого симметричного шифрования на общем сеансовом ключе.

Области применения: Защита данных на диске (шифрование дисков), безопасная передача по сети (TLS/SSL), цифровые подписи.