2015-04-24 131 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