首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用经过身份验证的加密和签名

使用经过身份验证的加密和签名
EN

Cryptography用户
提问于 2021-01-25 13:25:25
回答 1查看 252关注 0票数 1

我知道一个使用认证加密公钥签名实现C0加密的项目。因此,为一条消息生成的密文是:

代码语言:javascript
复制
ciphertext = signature_Ed25519 + nonce + mac_Poly1305 + XSalsa20(plaintext)

我很难理解这两种方法的好处,因为MAC已经在那里对发送者进行身份验证。有什么想法吗?

整个流程如下:

代码语言:javascript
复制
Alice and Bob each have an X25519 encryption key pair for talking to each other.
Alice has an Ed25519 signing key pair that is used for everybody.

爱丽丝给鲍勃发了一条消息:

代码语言:javascript
复制
1. encrypted = crypto_box(plaintext, nonce, bob_publickey, alice_secretkey)

这是加密_方框()提供的。

加密is = nonce + mac_Poly1305 +XSalsa20(明文)

代码语言:javascript
复制
2. ciphertext = crypto_sign(encryted, alice_signing_secretkey)

这是加密_标志()提供的。

密文现在= signature_Ed25519 +加密

EN

回答 1

Cryptography用户

回答已采纳

发布于 2021-01-25 14:21:17

签名提供了MACs不具备的一项属性:不可否认。只要有MAC (或AEAD),任何拥有秘密密钥的人都可以发送消息。这样鲍勃就可以伪造一条信息并声称是爱丽丝发的。有了签名,只有持有相应私钥的一方才能创建签名。MAC认证消息,而不是发送者。

当需要此属性时,必须接受添加签名的性能下降。如果不需要这个属性,那么就没有必要签名了。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/87773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档