首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AES,RSA和中间的人

AES,RSA和中间的人
EN

Security用户
提问于 2017-08-02 19:46:52
回答 2查看 1.5K关注 0票数 0

因此,用户A有一个巨大的文本需要加密并发送给用户B。用户A为AES创建一个对称密钥,并使用该AES密钥对消息进行加密。然后,用户A用用户B的公钥加密AES密钥,并将两者发送给用户B。用户B用私密RSA密钥解密AES密钥,然后用解密的AES密钥解密文本。现在,用户A应该如何对消息/ AES密钥进行签名,以便用户B验证消息是否来自用户A。如果用户A签署加密的AES密钥,用户B是否可以用用户A的公钥解密已签名的AES密钥,然后用他的私密RSA密钥解密AES密钥?

EN

回答 2

Security用户

回答已采纳

发布于 2017-08-02 20:44:53

使用RSA签名首先应用加密散列,然后用发送方的私钥(即A)对其进行“加密”。因此,使用发件人的公钥“解密”签名只会导致哈希值,而不会导致AES密钥。由于哈希函数是单向的,因此不能从哈希值导出原始输入(即AES键)。

验证接收方签名的方法是:首先重新计算输入的哈希值(解密后已知),然后将其与通过用发送方的公钥对签名进行“解密”返回的哈希值进行比较。如果它们匹配,签名是有效的。

票数 1
EN

Security用户

发布于 2017-08-02 20:48:38

如果用户A和用户B知道用于AES的相同密码(没有通过网络发送),那么就足够在消息末尾添加校验和并加密消息+校验和。在中间的人无法在不知道密钥的情况下解密消息。如果他试图发送自己用错误密钥加密的数据(他不知道正确的密钥),那么用户B在试图用正确的密钥解密它之后会收到一堆废话,校验和显然是错误的,从而确认消息是伪造的。另一方面,如果AES密钥是通过不安全连接发送的,那么加密消息就变得毫无意义。

要在没有事先同意的情况下创建共享密钥,并且在交换过程中不通过不安全的连接泄漏,可以使用Diffie-Hellman握手。两个用户都为Diffie-Hellman握手创建了一对私钥和公钥。公钥通过不安全的连接进行签名和发送。然后生成一个共享的秘密(查看Diffie-Hellman在wikipedie中握手以获得更多信息)。基本上,即使所有通过连接发送的东西对中间的人来说都是可见的,他也无法恢复共享的秘密,除非他参与了它的创造。签名将确保他不会伪造第一次握手。

另一种创建安全连接的方法是RSA +签名。用户A使用来自用户B的公钥对消息进行加密,并对其签名(在加密之前或之后,没关系)。加密后的签名将允许中间的人验证A不是秘密,并允许用户B删除带有错误签名的伪造消息,而不必先解密它)。然后将消息+签名+校验和发送给用户B。加密前必须添加校验和。用户B验证签名、解密消息和校验和。

从你说的话来看,我敢暗示你对签名的工作方式有误解。签名不会更改消息。它会创建一个额外的数据块(签名)。然后将消息+签名发送给用户B。用户B将您的公钥、消息本身和要验证的签名组合在一起。

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

https://security.stackexchange.com/questions/166623

复制
相关文章

相似问题

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