我需要知道谁在做它来保护 REST 请求。我知道 HMAC 方法,但我不想将客户端私钥存储在我的服务器上。这是我的方法:
- SERVER 为客户端创建私钥和公钥
- SERVER 将私钥和客户端 ID 发送给客户端
- 客户端存储其私钥
- SERVER 仅存储公共客户端密钥
- CLIENT 通过使用其私钥 (ecryptedData) 加密其客户端 ID 来发出 RESTful 请求,并将 clientID:encryptedData 对发送到 SERVER
- SERVER 查找给定客户端 ID 的公钥并解密 encryptedData
- SERVER 检查解密的数据是否包含相同的客户端 ID。如果客户端 ID 相同,则服务器信任发送者,否则拒绝请求。
也许这种方法已经存在,但我不知道。
这种方法安全吗?
编辑
我重新提出这个问题:
如果我只关心谁是发件人而不关心他在单向通信(客户端->服务器)中发送的内容,我可以以这种方式使用 RSA 吗?
一度
- SERVER 为客户端创建 RSA 对密钥
- SERVER 存储客户端公钥(如果密钥被盗,我无关紧要......它是公开的!)
- SERVER 将客户端私钥发送给客户端
在客户端 -> 服务器通信期间
- CLIENT 通过其私钥 ex 加密已知单词 + 时间戳(以防止重放攻击)。签名 = 加密(RSA,'FOO:1234234')
- 客户端发送带有 API KEY 和签名 ex 的消息。54545345:签名
- SERVER 查找给定 API KEY 的公钥
- SERVER 使用找到的公钥解密消息
- SERVER 检查已知单词 FOO 和时间戳的正确性
- 如果上一步失败,SERVER 拒绝消息
这种方法安全吗?
非常感谢!
前!