Основные понятия шифрования
Шифрование — это процесс преобразования информации в нечитаемый вид для защиты от несанкционированного доступа. Рассмотрим ключевые аспекты:
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. Процесс шифрования данных
- Генерация ключей (симметричных или асимметричных)
- Шифрование данных с помощью алгоритма
- Передача/хранение зашифрованных данных
- Расшифровка получателем
4. Протоколы, использующие шифрование
SSL/TLS
- Защита интернет-соединений
- Использует как симметричное, так и асимметричное шифрование
- Сертификаты X.509 для аутентификации
PGP
- Шифрование электронной почты и файлов
- Комбинация симметричного и асимметричного шифрования
5. Хеширование vs Шифрование
Хеширование:
- Необратимое преобразование
- Фиксированная длина вывода
- Примеры: SHA-256, MD5 (устарел)
Пример хеширования:
import hashlib
hashlib.sha256(b"password123").hexdigest()
Шифрование:
- Обратимое преобразование
- Требует ключа для расшифровки
6. Квантовое шифрование
Перспективные технологии:
- Квантовое распределение ключей (QKD)
- Постквантовые криптографические алгоритмы
Что важно для QA-инженера?
-
Тестирование SSL/TLS:
- Проверка поддерживаемых алгоритмов
- Тестирование на уязвимости (Heartbleed, POODLE)
-
Валидация шифрования данных:
- Проверка, что чувствительные данные действительно шифруются
- Анализ стойкости алгоритмов
-
Тестирование ключей:
- Длина ключей
- Хранение ключей
- Ротация ключей
-
Производительность:
- Влияние шифрования на скорость работы
- Нагрузочное тестирование
Резюмируем:
понимание принципов шифрования критически важно для QA-инженеров, тестирующих безопасные системы. Современные приложения используют комбинацию симметричного и асимметричного шифрования, а задача тестировщика — убедиться в корректной реализации криптографических механизмов.