Sobes.tech
Back to questions
Junior — Middle
63

Могли бы вы объяснить, что подразумевается под цифровой подписью в криптографии?

Answer from AI

sobes.tech AI

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

Принцип работы:

  1. Отправитель создаёт хэш сообщения (короткое уникальное представление данных).
  2. Хэш шифруется закрытым ключом — получается цифровая подпись.
  3. Получатель расшифровывает подпись открытым ключом отправителя и сравнивает с хэшем полученного сообщения.

Если совпадает, значит сообщение не изменялось и действительно от отправителя.

Пример на Python с использованием библиотеки cryptography:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization

# Генерация ключей
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()

message = b"Пример сообщения"

# Подпись сообщения
signature = private_key.sign(
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)

# Проверка подписи
try:
    public_key.verify(
        signature,
        message,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )
    print("Подпись верна")
except Exception:
    print("Подпись не верна")