我正在使用python和利卜纳,这是一个using包装器,用于开发一个用户可以保存加密数据的应用程序。
Alice使用libnacl.sealed.SealedBox(keyBob)加密她的消息,并将其上传到数据库供Bob下载。鲍勃和伊芙可以读取数据库,并在那里观察到一个新条目。夏娃和鲍勃都不知道这消息是爱丽丝发的。Bob可以解密消息,因此知道他是收件人。
伊芙也知道鲍勃的公钥。伊芙能告诉我消息的收信人是鲍勃吗?
编辑:
VincBreaker向我指出了锂钠密封盒的文档,您可以在那里找到:
ephemeral_pk‖box(m,recipient_pk,ephemeral_sk,nonce=blake2b(ephemeral_pk‖recipient_pk))
这表明密封盒中包含了一些“短暂”的公钥。
“短暂”是什么意思?
准确地说,是否有一种方法可以将ephemeral_pk链接到Bob的实际公钥?
发布于 2019-01-28 19:42:48
来自利伯钠网站的答案
只有收件人可以使用其私钥解密这些消息。虽然收件人可以验证邮件的完整性,但无法验证发送方的身份。
虽然Bob可以解密消息,不能用他的公钥和私钥对验证身份,但Eve无法用唯一的公钥确定身份。
要理解密封的盒子,我们必须先看到密码箱。
Cryptobox使用发送方的秘密密钥和接收方的公钥以及当前的m加密和验证消息n。
接收方使用其秘密密钥和发送者的公钥对c进行验证和解密。
仅使用收件人的公钥构造的密封盒。密封盒是;
生成短命私钥对和公钥对(生成和使用一次),然后销毁临时私钥。
因此,密封盒不包含有关发件人的信息。由于密封盒只能由recipient_{sk}打开,所以Eve也无法理解接收者。
但是,Eve可以查找谁下载了消息。如果没有它,鲍勃怎么会知道有一个信息给他?防止这种情况发生的最好办法是;
此外,这个一个密封的盒子和一个普通的液体钠盒子有什么区别?的答案可能会有所帮助。
发布于 2019-01-31 00:54:51
接收方的公钥应该在加密之前安全地传输到发送方。
而密文本身并不包含任何关于接收者的信息。
但是,如果接收者的密钥被泄露,可以使用该密钥解密先前捕获的密文。
https://crypto.stackexchange.com/questions/66853
复制相似问题