Как происходит шифрование?qa-86

Основные понятия шифрования

Шифрование — это процесс преобразования информации в нечитаемый вид для защиты от несанкционированного доступа. Рассмотрим ключевые аспекты:

1. Типы шифрования

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

  • Один ключ для шифрования и расшифровки
  • Быстрое выполнение
  • Примеры: AES, DES, 3DES

Асимметричное шифрование:

  • Пара ключей (публичный и приватный)
  • Более безопасно, но медленнее
  • Примеры: RSA, ECC, ElGamal

2. Популярные алгоритмы

AES

  • Симметричный алгоритм
  • Размеры ключа: 128, 192 или 256 бит
  • Используется в HTTPS, VPN, WiFi

Пример использования AES в Python:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

key = get_random_bytes(16)  # 128-bit ключ
cipher = AES.new(key, AES.MODE_EAX)
data = b"Confidential data"
ciphertext, tag = cipher.encrypt_and_digest(data)

RSA

  • Асимметричный алгоритм
  • Основан на сложности факторизации больших чисел
  • Используется в SSL/TLS

Пример генерации RSA-ключей:

openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key

3. Процесс шифрования данных

  1. Генерация ключей (симметричных или асимметричных)
  2. Шифрование данных с помощью алгоритма
  3. Передача/хранение зашифрованных данных
  4. Расшифровка получателем

4. Протоколы, использующие шифрование

SSL/TLS

  • Защита интернет-соединений
  • Использует как симметричное, так и асимметричное шифрование
  • Сертификаты X.509 для аутентификации

PGP

  • Шифрование электронной почты и файлов
  • Комбинация симметричного и асимметричного шифрования

5. Хеширование vs Шифрование

Хеширование:

  • Необратимое преобразование
  • Фиксированная длина вывода
  • Примеры: SHA-256, MD5 (устарел)

Пример хеширования:

import hashlib
hashlib.sha256(b"password123").hexdigest()

Шифрование:

  • Обратимое преобразование
  • Требует ключа для расшифровки

6. Квантовое шифрование

Перспективные технологии:

  • Квантовое распределение ключей (QKD)
  • Постквантовые криптографические алгоритмы

Что важно для QA-инженера?

  1. Тестирование SSL/TLS:

    • Проверка поддерживаемых алгоритмов
    • Тестирование на уязвимости (Heartbleed, POODLE)
  2. Валидация шифрования данных:

    • Проверка, что чувствительные данные действительно шифруются
    • Анализ стойкости алгоритмов
  3. Тестирование ключей:

    • Длина ключей
    • Хранение ключей
    • Ротация ключей
  4. Производительность:

    • Влияние шифрования на скорость работы
    • Нагрузочное тестирование

Резюмируем:

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