我正在与Asymmetric Cryptography (RSA & ECC)
合作。关于公钥交换或至少我对机制的理解,我有一个非常基本的问题。
注意事项
- 名为C1的客户端
- 名为S1的服务器
- 算法:RSA(非对称)
- 威胁:中间人
- 目标:通过网络传输敏感信息(可以是用于混合加密的数据或对称密钥)
到目前为止我读过的内容
- C1创建一对RSA密钥,并进行API调用,将公钥发送到S1。
- 在收到使用客户端公钥的请求时,服务器(S1)会生成一个RSA密钥对,并将其发送回客户端(C1)。
- 现在密钥已被传输,C1使用服务器的公钥对数据(密文)进行加密,用客户端的私钥对密文进行签名,然后进行API调用。
- 服务器接收包含密文的请求,使用客户端的公钥来验证签名,使用服务器私钥来解密数据,执行一些操作,生成响应,并使用客户端的公钥来加密响应,使用服务器私钥对响应密文签名,然后返回响应。
中间攻击者怎么可能?
- 在初始调用中,假设黑客拦截了客户端(C1)进行的第一个调用,生成了一个RSA密钥对,并将该黑客的公钥发送给了服务器。
- 服务器返回服务器公共密钥,黑客拦截服务器响应并存储服务器的公共密钥,然后将黑客的公共密钥返回给客户端。
- 客户端认为黑客的公钥实际上是服务器的公钥,对数据进行加密,签名并发送回去。
- 黑客也会拦截该调用,然后解密数据,对其进行修改并使用服务器公钥对其进行加密,并使用Hacker的私钥对其进行签名并将其发送到服务器。
- 服务器验证密文并尝试对其进行解密,因为服务器已将黑客的公共密码注册为客户端的公共密钥,所以所有密码均有效。
现在这很容易破解,黑客(中间人)可以读取敏感信息,还可以修改请求,从而导致对应用服务器的恶意操作。
由于RSA和这种交互被广泛使用,因此我肯定会丢失一些内容。有人可以指出我错过了什么吗?如果我什么都没错过,我该如何保护系统免受此类攻击