Я слышал, что в криптографии целостность может быть реализована с помощью хеширования сообщения, чтобы проверить, было ли сообщение изменено. Но как этот хеш отправляется другой стороне? Можно также изменить сообщение и хэш-значение, чтобы другая сторона увидела, что сообщение не было изменено !!
Хеширование открытого текста для обеспечения целостности?
Ответы (2)
Вам всегда нужны какие-то общие данные, которые не были подделаны, чтобы обеспечить целостность или конфиденциальность. Эти общие данные обычно представляют собой общий секретный ключ или открытый ключ отправителя.
С общим секретным ключом вы должны использовать HMAC, то есть hmac(message, key)
.
Если у получателя есть открытый ключ отправителя, то отправитель может использовать свой закрытый ключ для подписи сообщения (множество возможных методов, DSA, RSA и т. д.), а получатель может использовать открытый ключ, чтобы определить, было ли сообщение отправлено отправителем.
Сам по себе хеш не доказывает, что сообщение не было подделано, вы также должны подписать хеш, используя свой закрытый ключ, а затем получатель может проверить его, используя ваш открытый ключ. Или вы можете подписать его с помощью HMAC, если у вас обоих есть общий секрет. Его нельзя подделать, потому что ни у кого больше нет вашего закрытого/секретного ключа.