Алгоритм безопасной передачи данных между пользователями в сети


 Шифрование и подпись сообщений



Pdf көрінісі
бет19/22
Дата15.04.2023
өлшемі1,65 Mb.
#82715
түріДипломная работа
1   ...   14   15   16   17   18   19   20   21   22
Байланысты:
Кузьмин А.А. ПМИб-1401

2.2.3 Шифрование и подпись сообщений 
С помощью ключей Ethereum можно не только взаимодействовать с 
блокчейном, но и использовать их для безопасного обмена сообщениями по 
взаимным 
ненадежным 
каналам. 
Идентификаторы 
Ethereum 
будут 
использоваться для отправки сообщений. 
Сначала мы создаем два идентификатора – пользователь A и 
пользователь B. Пользователь А отправляет сообщение «Hello, B». Прежде чем 
отправить, нужно обеспечить, чтобы только абонент B мог прочитать 
сообщение, и чтобы он был уверен, что сообщение пришло действительно от 
первого пользователя. Чтобы это сделать, сначала нужно подписать сообщение 
с помощью секретного ключа абонента А, а затем зашифровать сообщение и 
подписать с помощью открытого ключа пользователя B.


40 
const
signature 
=
EthCrypto.sign( 
A.privateKey, 
EthCrypto.hash.keccak256(secretMessage) 
); 
const
payload 
=

message
:
secretMessage, 
signature 
}; 
const
encrypted 
=
await EthCrypto.encryptWithPublicKey( 
B.publicKey, privateKey 
JSON.stringify(payload) 
); 
const
encryptedString 
=
EthCrypto.cipher.stringify(encrypted); 
Рисунок 5.1 – Шифрование и подпись сообщения 
Когда получатель принимает сообщение, он начинает с расшифровки его 
своим секретным ключом, а затем проверяет подпись. 
const
encryptedObject 
=
EthCrypto.cipher.parse(encryptedString); 
const
decrypted 
=
await EthCrypto.decryptWithPrivateKey ( 
B.privateKey, 
encryptedObject 
); 
const
decryptedPayload 
=
JSON.parse(decrypted); 
const
senderAddress 
=
EthCrypto.recover( 
decryptedPayload.signature, 
EthCrypto.hash.keccak256(payload.message) 
); 
console.log( 
'Сообщение получено от '
+
senderAddress 
+
': '
+
decryptedPayload.message 
); 
Рисунок 5.2 – Расшифровка 
Теперь, когда пользователь B получил сообщение, он также может 
ответить. Чтобы сделать это, он должен восстановить открытый ключ 
пользователя A. 


41 


Достарыңызбен бөлісу:
1   ...   14   15   16   17   18   19   20   21   22




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет