• Bitcoin $ 11,324.17 (4.9025%)
  • Ethereum $ 313.17 (2.03734%)
 30.06.2019 в 13:19   dev_coin

Безопасность в блокчейне: шифрование данных с использованием вашего кошелька

Кошельки Эфириум и Биткоин (включая их форки) генерируются из закрытых ключей с использованием алгоритма эллиптической кривой и следовательно, аналогичным образом генерируются открытые ключи.

Однако из-за отсутствия библиотек или простых инструментов мало кто использует механизм асимметричного шифрования для шифрования данных перед отправкой данных деловым партнерам или регистрацией в сети блокчейн. Мало кто даже имеет право владеть своими закрытыми и открытыми ключами, которые являются основой вашего адреса кошелька.

Асимметричное шифрование — это то, с чем мы сталкиваемся ежедневно при работе в Интернете с использованием HTTPS (TLS) протокола. Мы отправляем зашифрованные данные, шифруя их с помощью открытого ключа серверов. Только те сервера, у кого есть закрытый ключ, могут дешифровать данные и наоборот. Однако используемый алгоритм - RSA, значительно отличается от алгоритма, используемого в сетях биткоин и эфириум (эллиптическая кривая).

Итак, как вы можете использовать алгоритм Биткоина и иметь защиту, чтобы только получатель или мы сами могли расшифровать отправленные нами данные?

Чтобы помочь решить эту проблему, я разработал библиотеку с открытым исходным кодом под названием EC Crypto. Используя ресурсы, доступные в Эфириум и Decred, можно создавать приложения, которые позволяют шифровать данные, так что только владелец кошелька с его закрытым ключом может дешифровать его, используя только открытый ключ кошелька получателя. 
С этой библиотекой и приложениями, которые будут созданы из нее, любой может безопасно отправлять или регистрировать данные в блокчейне.

Ниже простой пример написанный на Go:

secretText: =  «Hal Finney was Satoshi Nakamoto.»
pubKeyIKnowInHex: = «0433e59593e3ac1dbf8e7167250c49f5a75f38d37afacc71df97755f3d56cd436c68ee7190f03a9eacddf88911226f1464694e2b9397e1c023aea09efc18591e00»
encryptedText, err: = EncryptECWithPublicKey (pubKeyIKnowInHex, secretText)
if err! = nil {
log.Fatal ( «Error encrypting text:», err)
}

log.Printf ( «Encrypted text in hexa: %x\n», encryptedText)

Чтобы расшифровать его, получатель должен использовать этот простой код:

myPrivateKey: =  «MySuperSecretPrivateKey1234567890» // Помните: вы должны восстановить закрытый ключ безопасным способом;)
decryptedText, err: = DecryptWithECPrivateKey (myPrivateKey, encryptedText)
if err! = nil {
log.Fatal ( «Error decrypting text:», err)
}
log.Println ( «In», secretText,» — Out», decryptedText)

Ссылка на исходный код примера приложения на Go для пользователей Mac и Linux.

Комментарии: