【问题标题】:Big Dilemma With Encryption Public And Private Key Pairs Concept加密公钥和私钥对概念的大困境
【发布时间】:2011-10-12 23:11:15
【问题描述】:

我正在创建一个 RESTful API Web 服务,我需要一种实现公钥和私钥对的方法。

我将使用一些 PHP 的内置函数来创建我自己的算法来生成键的两个值。

我只需要大致了解系统背后的概念或逻辑即可。

例如客户端和服务器都有公钥和私钥值。然后在客户端使用另一个算法组合密钥,该算法在服务器端解码,如果匹配,则显示请求的资源?

还是我离他们很远?任何链接或建议将不胜感激

【问题讨论】:

  • 生成私钥并将其存储在服务器上的密钥库中。使用私钥,生成公钥。此公钥提供给其他人(例如,浏览器)以加密消息以发送到服务器,该消息只能(希望)使用密钥库中的私钥解密。跨度>
  • 但是,private 密钥的意义是 将其泄露出去。 :)

标签: php encryption


【解决方案1】:

有一些算法可以使用私钥/公钥对。它们的三种常见用途是:加密/解密、签名/验证和密钥协商。

对于加密/解密,数据仅使用公钥加密,并使用私钥解密。 RSA 算法就是一个例子。

对于签名/验证,使用私钥对数据进行签名,并使用公钥进行验证。 DSA 算法就是一个例子。

对于密钥协商,有两方拥有他们的公钥/私钥。双方交换自己的公钥,使用对方的私钥、公钥和公钥生成共享秘密。 Diffie-Hellman (DH) 算法就是一个例子。

顾名思义,对于任何一方,您永远不会泄露您的私钥。您可以在任何地方安全地发布您的公钥。仅使用公钥,您无法执行上述任何需要私钥的任务 - 显然,在给定公钥的情况下找出私钥是不可行的。

【讨论】:

  • 公钥/私钥加密的一个更具挑战性的方面是了解公钥被提供给发送者,然后发送者对发送者将生成的消息进行编码(加密)发送回给接收者(谁“拥有”公钥/私钥)。所以在某种程度上,这是一个相反的过程,消息发送者接收公钥,消息接收者发送公钥以接收未来的消息,并且总体两者通常交易头寸(浏览器/服务器,例如)。
  • 第二个也称为不可否认性,对吧?
  • @JaredFarrish 是的。签名操作做了两件事:验证您发送的消息确实来自您,并允许接收者稍后证明它来自您(不可否认术语来自后者)。
  • 感谢您的回答,您帮助我了解了更多需要做什么。我认为带有签名/验证的 DSA 算法是我想要使用的。
  • 关于使用私钥签名的一个问题。这基本上是用私钥对来自客户端的请求进行编码,并在服务器端使用相同的私钥对请求进行解码?
猜你喜欢
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2018-02-27
  • 2018-07-19
  • 2013-04-06
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多