我需要确保REST请求知道谁在做这件事。 我知道HMAC方法,但我不想将客户机私钥存储在我的服务器上。 这是我的方法:
SERVER为客户端创建私钥和公钥 SERVER将私钥和客户端ID发送给客户端 CLIENT存储其私钥 SERVER只存储公共客户端密钥 CLIENT通过使用其私钥(ecryptedData)加密其客户机ID来发出RESTful请求,并将对clientID:encryptedData发送到SERVER SERVER查找给定客户端ID的公钥并解密encryptedData SERVER检查解密的数据是否包含相同的客户端ID。 如果客户端ID相同,则SERVER信任发件人,否则拒绝该请求。 也许这种方法已经存在,但我不知道。
这种方法安全吗?
编辑
我重新提出了这个问题:
如果我只关心发件人是谁,而不关心他在单向通信中发送的内容(客户端 - >服务器),那么我可以以这种方式使用RSA吗?
一次
SERVER为客户端创建RSA对密钥 SERVER存储客户端公钥(如果密钥被盗,我无关紧要!) SERVER将客户机私钥发送给客户机 在客户端 - >服务器通信
CLIENT通过其私钥ex来加密已知的单词+时间戳(以防止重放攻击)。 SIGNATURE =加密(RSA,'FOO:1234234') CLIENT使用API KEY发送消息并标识前者。 54545345:SIGNATURE SERVER查找给定API KEY的公钥 SERVER使用找到的公钥解密消息 SERVER检查已知单词FOO和时间戳的正确性 如果上一步失败,SERVER会拒绝该消息 这种方法安全吗?
非常感谢!
前!
“服务器将客户机私钥发送给客户机”:这看起来不太安全。 如果恶意客户拦截此通信,他们可以获取客户端的私钥并可以发送消息,就好像它们是由实际客户端发送的一样。 您应让客户端生成两个密钥,而不共享私钥。
链接地址:
http://www.djcxy.com/p/21773.html
上一篇:
Sharing only the public key Is secure?
下一篇:
Client side data encryption/decryption for rails application