В чем разница между цифровой подписью и шифрованием?

«В чем разница между цифровой подписью и шифрованием?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Цифровая подпись обеспечивает целостность и аутентификацию данных. Она доказывает, что сообщение не было изменено и отправлено владельцем закрытого ключа. Данные остаются открытыми.

Пример создания подписи на Python (RSA):

from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA

# Генерация ключей
private_key = RSA.generate(2048)
public_key = private_key.publickey()

# Создание подписи
data = b"Critical transaction"
hash_obj = SHA256.new(data)
signature = pkcs1_15.new(private_key).sign(hash_obj)
# signature можно передавать вместе с открытыми data

Шифрование обеспечивает конфиденциальность, преобразуя данные в нечитаемый формат. Расшифровать может только сторона, обладающая соответствующим ключом.

Пример симметричного шифрования на Python (AES):

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

# Шифрование
key = get_random_bytes(16) # Секретный ключ
cipher = AES.new(key, AES.MODE_GCM)
ciphertext, tag = cipher.encrypt_and_digest(b"Secret message")
# Для расшифровки нужен тот же key и nonce (cipher.nonce)
Сравнение: Аспект Подпись Шифрование
Основная цель Проверка подлинности и целостности Сокрытие содержимого (конфиденциальность)
Видимость данных Открытые Скрытые (зашифрованные)
Типичное использование Проверка ПО, юридические документы Защита паролей, личной переписки