Описание тега digital-signature

None Математическая схема для демонстрации подлинности цифрового сообщения или документа (Википедия). Набор средств криптографии часто используется вместе с парой открытого и закрытого ключей для цифровой подписи сообщения и проверки сообщения.

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

  • Аутентификация - подтверждение того, что сообщение было отправлено от доверенной стороны
  • Целостность - доказательство того, что сообщение не было подделано при передаче
  • Фиксация авторства - получатель может доказать третьей стороне, что сообщение исходит от исходного отправителя.

Коды аутентификации сообщений (MAC) также предлагают аутентификацию и защиту целостности, но не защиту от авторства.

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

Если сообщение было подделано или не было подписано ожидаемой стороной, проверка подписи не будет выполнена.

Пример цифровой подписи простого сообщения в java с последующей проверкой результата:

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); 
KeyPair keyPair = kpg.generateKeyPair();

byte[] message = "My message is strong!".getBytes();

// Sign our message
Signature signer = Signature.getInstance("SHA1withRSA");
signer.initSign(keyPair.getPrivate());
signer.update(message);
byte[] signatureData = signer.sign();

// Verify our message using the public key + signatureData
Signature verifier = Signature.getInstance("SHA1withRSA");
verifier.initVerify(keyPair.getPublic());
verifier.update(message);

assertTrue(verifier.verify(signatureData));

Смотрите также: