只共享公钥是安全的吗?

我需要确保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