Может ли отправитель сообщения зашифровать строку сообщения с помощью адреса общедоступного кошелька получателя, отправить этот зашифрованный текст по электронной почте получателю, а затем заставить получателя расшифровать сообщение, используя свой кошелек (закрытый ключ)?
Я не говорю о рассылке спама по блокчейну, сообщение может быть отправлено с помощью IM/Email после шифрования.
Так что это похоже на использование gpg, но с открытым/закрытым ключом кошелька.
Это возможно?
Криптография, которую Биткойн использует для закрытых ключей кошелька, — это 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 таким образом, не означает, что вы должны это делать — уже много лет существует программное обеспечение, которое может сделать именно это.
Ник Оделл