2015-04-24 133 views
-2

我读了关于公钥和私钥如何在security.stackexchange.com: How can I explain the concept of public and private keys without technical jargon?上工作的简化。WCF服务和客户端客户端如何交换证书密钥?

无论我从那里了解到什么:私人密钥坐在所有者和所有者身上,将公钥加密后的数据发送给某人。公钥在客户端解密该数据,并加密发送给所有者的客户端数据。一旦数据在客户端被公钥加密,那么相同的公钥就不能被重用来加密该数据。只有私钥的所有者才能加密和解密数据。

我说得对吗?

我的问题是:公钥是如何从所有者端到客户端的旅行?

每次从服务器端向客户端发送相同的公钥,或者每次从服务器端向客户端发送不同的公钥?

@Ewan表示如下:

  1. 客户:发送 “你好”
  2. 服务器:这是我的公共密钥
  3. 服务器:请把你的公钥
  4. 客户:这是我的(用服务器公钥加密)公钥
  5. 客户端:这是一个(用服务器公钥加密)请求
  6. 服务器:这里是一个(加密的w第i个客户端的公钥)响应

这引起了在所述步骤如下问题:

  1. 当第一次客户端发送Hello服务器再怎么打招呼 将前往加密路服务器?

  2. 不明白为什么服务器找到他的公钥?

  3. 为什么服务器请求客户端发送他的公钥?

+0

_“请给我解释的全部细节如何密钥交换作品” _是堆栈溢出过于宽泛。另外,当您接近您的第250个问题时,您可能需要再次阅读[我如何问一个好问题?](http://stackoverflow.com/help/how-to-ask)。请同时尝试使用换档按钮。一个句子以大写字母开头,“I”总是以英文大写。 – CodeCaster

+0

请教育自己。阅读[Wiki:密钥交换](http://en.wikipedia.org/wiki/Key_exchange),[Wiki:Diffie-Hellman密钥交换](http://en.wikipedia.org/wiki/Diffie%E2%80 %93Hellman_key_exchange),如果这仍然太多的文字,请参阅[图片解释它](http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#/media/File:Diffie-Hellman_Key_Exchange.svg )。 – CodeCaster

回答

1

没有你就错了:

  1. 的人物:创建公钥和私钥对

  2. 的人物:发送公钥(A)至PersonB

  3. PersonB:加密带公钥的数据(A)

  4. PersonB:Sen DS加密的数据PERSONA

  5. 的人物:解密与私有密钥(A)加密数据

WCF可以设置做多种类型的加密协议,但essentialy什么,我想你问归结到

握手协议:

  1. 客户:发送 “你好”(未加密)
  2. 服务器:这是我的公共密钥(ServerPublicKEY = “123”)
  3. 服务器:请把你的公钥
  4. 客户:这里是我的公钥(ClientPublicKEY = “ABC”)
  5. 客户端:下面是一个(加密与ServerPublicKEY)请求
  6. 服务器:解密用服务器私钥和读
  7. 服务器:下面是一个(加密与氯ientPublicKEY)响应
  8. 客户端:与客户端解密私钥

回答您的其他问题

Q1:“当第一次客户端发送Hello服务器再怎么打招呼将前往服务器加密的方式?“

A1:这是不加密的

Q2:“不明白为什么服务器找到他的公钥呢?”

A2:服务器会发送一个公钥,以便客户端可以加密消息发送到服务器

Q3:“为什么?服务器请求客户端发送他的公钥”

A3:服务器需要客户端的公共密钥,因此它可以对邮件进行加密发送给客户端

+0

我想知道什么时候PersonA首先将数据发送给PersonB,然后加密的数据将不会从PersonA端传送到PersonB端。第一次PersonB向WCF服务发出请求,WCF服务将以加密方式发送响应....我想我是对的。当服务以加密格式发送响应时,PersonB可以在不解密的情况下阅读。 – Mou

+0

你说的步骤给我造成困惑。服务始终由消费者发起。所以当消费者向wcf服务发送请求时,wcf应该以加密格式和公钥一起返回数据。另外每次服务都会发送相同的公钥给消费者或公钥,每次用wcf服务发送都会有所不同? – Mou

+0

请参阅我的更新区域。 – Mou