Использование PKI биткойн-кошелька для шифрования сообщений

Может ли отправитель сообщения зашифровать строку сообщения с помощью адреса общедоступного кошелька получателя, отправить этот зашифрованный текст по электронной почте получателю, а затем заставить получателя расшифровать сообщение, используя свой кошелек (закрытый ключ)?

Я не говорю о рассылке спама по блокчейну, сообщение может быть отправлено с помощью IM/Email после шифрования.

Так что это похоже на использование gpg, но с открытым/закрытым ключом кошелька.

Это возможно?

Ответы (3)

Криптография, которую Биткойн использует для закрытых ключей кошелька, — это ECDSA, использующая кривую secp256k1:

http://en.bitcoin.it/wiki/Elliptic_Curve_Digital_Signature_Algorithm

Он предназначен для подписи сообщений и бесполезен для любого метода шифрования.

Существуют и другие методы шифрования и передачи сообщения,... Gli.ph , BitMessage , GPG/OpenPGP и другие.

Если вы доверяете стороне, которой вы отправляете средства, эта сторона может использовать возможность подписи сообщения в клиенте, чтобы подписать сообщение, которое сообщает вам, какой ключ GPG использовать, например, для шифрования сообщения этой стороне. Это дало бы вам уверенность в том, что вы действительно шифруете сообщение, доступное для чтения только той стороне, которая контролирует этот биткойн-адрес и подписала сообщение.

Вы не можете использовать биткойн-адрес напрямую, но если средства в адресе когда-либо были потрачены, вы можете увидеть открытый ключ, связанный с ним в блокчейне, и вы можете зашифровать его, используя эту реализацию Python: https:// github.com/ikndevs/jeeq

обсуждение bitcointalk здесь: https://bitcointalk.org/index.php?topic=196378.5

Это безопасно? Звучит так, как будто он использует криптографический примитив не так, как предполагалось.

Невозможно зашифровать что-то (если указан адрес) так, чтобы владелец мог расшифровать.

Однако, если предоставлено сообщение, адрес и подпись сообщения соответствующим закрытым ключом, можно восстановить открытый ключ, который вы можете использовать.

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

Можно было бы использовать secp256k1 в качестве основы для этого, но в конечном счете выбор кривой является второстепенной деталью в общем дизайне схемы.

Тот факт, что вы можете использовать secp256k1 таким образом, не означает, что вы должны это делать — уже много лет существует программное обеспечение, которое может сделать именно это.