1. 程式人生 > >DH祕鑰交換演算法

DH祕鑰交換演算法

1、DH 概述

Diffie–Hellman key exchange is a specific method of securely exchanging cryptographic keys over a public channel and was one of the first public-key protocols as originally conceptualized by Ralph Merkle and named after Whitfield Diffie and Martin Hellman. D–H is one of the earliest practical examples of public key exchange implemented within the field of cryptography. Traditionally, secure encrypted communication between two parties required that they first exchange keys by some secure physical channel, such as paper key lists transported by a trusted courier. The Diffie–Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel. This key can then be used to encrypt subsequent communications using a symmetric key cipher.

它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起一個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。

2、演算法實現

如下圖所示
這裡寫圖片描述
假如使用者A和使用者B希望交換一個金鑰。

取素數p和整數a,a是p的一個原根,公開a和p。

A選擇隨機數XA<p,並計算YA=a^XA mod p。

B選擇隨機數XB<p,並計算YB=a^XB mod p。

每一方都將X保密而將Y公開讓另一方得到。

A計算金鑰的方式是:K=(YB) ^XA modp

B計算金鑰的方式是:K=(YA) ^XB modp

證明:

  (YB)^ XA mod p = (a^XB modp)^ XA mod p

 = (a^XB)^ XA mod p = (a^XA) ^XB mod p    
 (<-- 金鑰即為 a^(XA*XB) mod p)

 =(a^XA modp)^ XB mod p= (YA) ^XB mod p

由於XA和XB是保密的,而第三方只有p、a、YB、YA可以利用,只有通過取離散對數來確定金鑰,但對於大的素數p,計算離散對數是十分困難的。
下面我們以Alice和Bob為例敘述Diffie-Hellman金鑰交換的原理。

1,Diffie-Hellman交換過程中涉及到的所有參與者定義一個組,在這個組中定義一個大質數p,底數g。
2,Diffie-Hellman金鑰交換是一個兩部分的過程,Alice和Bob都需要一個私有的數字a,b。 

這裡寫圖片描述
下面我們進行一個例項

1.愛麗絲與鮑伯協定使用p=23以及g=5.

2.愛麗絲選擇一個祕密整數a=6, 計算A = g^a mod p併發送給鮑伯。
   A = 5^6 mod 23 = 8.

3.鮑伯選擇一個祕密整數b=15, 計算B = g^b mod p併發送給愛麗絲。
   B = 5^15 mod 23 = 19.

4.愛麗絲計算s = B a mod p
  19^6 mod 23 = 2.

5.鮑伯計算s = A b mod p
   8^15 mod 23 = 2. 

對方的公鑰和自己的私鑰計算的到祕密整數,雙方對比之後,驗證正確性。

3、用途

  1. 可以用作對稱加密演算法中,雙方約定的加密準則的交換(對方的公鑰和自己的私鑰計算的到祕密整數,可以作為雙方的加密準則)。交換雙方可以在不共享任何祕密的情況下協商出一個金鑰。

相關推薦

DH交換演算法

1、DH 概述 Diffie–Hellman key exchange is a specific method of securely exchanging cryptographic keys over a public channel and was

java加密體系-交換演算法DH

金鑰交換演算法(祕鑰協商演算法)——DH 1.簡述     1976年,W.Diffie和M.Hellman在發表的論文中提出了公鑰加密演算法思想,但當時並沒有給出具體的實施方案,原因在於沒有找到單向函式(也就是訊息摘要演算法),但在該論文中給出了通訊

密碼學_Diffine-Hellman交換 3

開始先問個問題:對稱加密和非對稱加密的對稱指的是什麼? 答案請看第四節                 接著第二節繼續來,現在有個黑客,他監視了Alice和Bob公鑰交換的全過程並且

密碼學_Diffine-Hellman交換 2

開始本節之前先問個簡單問題: 加密技術屬於通訊協議模型裡的第幾層裡的應用? 答案:第六層表現層  Diffine-Hellman祕鑰交換的過程大致如下: 先舉個情景例子 如果Alice 和 Bob 正在通訊,

密碼學_Diffine-Hellman交換 1

Diffine-Hellman演算法的功能只限制用於祕鑰交換,是後面的ElGamal加密演算法的重要組成部分. 公鑰加密典型的有RSA加密還有就是ElGamal加密演算法 公鑰(public-key)分配機制 -Cannot be used to exchange an arbitrar

ssh交換詳解與實現 diffie-hellman-group-exchange-sha

    ssh的DH祕鑰交換是一套複合幾種演算法的祕鑰交換演算法。在RFC4419中稱為diffie-hellman-groupX-exchange-shaX 的演算法(也有另一種單純的 rsaX-shaX 交換演算法)。本文就以diffie-hellman-group-

解決secureCRT賬號密碼正確,無法連線伺服器,那大概因為不支援新的金交換演算法

連線比較新版本的linux類伺服器,是否出現下面這些問題? 或者是openstack新建centos7映象的時候,無法連線新建立的centos7系統。 我百度或者谷歌好像都沒有找到答案啊,所以才寫這篇文章的。 問題1: The client has discon

Diffie-Hellman金交換演算法

選取兩個大數p和g並公開,其中p是一個素數,g是p的一個模p本原單位根(primitive root module p),所謂本原單位根就是指在模p乘法運算下,g的1次方,2次方……(p-1)次方這p-1個數互不相同,並且取遍1到p-1; 對於Alice(

密碼學_Diffie-Hellman交換 5

中間人攻擊- Man-in-the-Middle Attack 第四節我們講了中間人攻擊的一部分,這節繼續講中間人攻擊. 每種演算法都有自身的優點和缺點, 萬物都沒有絕對的事,正如大體劃分的對稱加密和非對稱加密也是各有利弊. Diffie-Hellman演算法的全過程只

Diffie-Hellman(迪菲-赫爾曼)交換

Diffie-Hellman演算法是Whitefield Diffie和Martin Hellman在1976年公佈的一種祕鑰交換演算法,它是一種建立祕鑰的方法,而不是加密方法,所以祕鑰必須和其他一種加密演算法結合使用。這種祕鑰交換技術的目的在於使兩個使用者安全的交換一個祕

圖解 ECDHE 金交換演算法

HTTPS 常用的金鑰交換演算法有兩種,分別是 RSA 和 ECDHE 演算法。 其中,RSA 是比較傳統的金鑰交換演算法,它不具備前向安全的性質,因此現在很少伺服器使用的。而 ECDHE 演算法具有前向安全,所以被廣泛使用。 我在上一篇已經介紹了 RSA 握手的過程,今天這一篇就「從理論再到實戰抓包」介紹

python3 RSA演算法生成對、檔案加密解密

RSA檔案加密解密生成祕鑰對檔案加密檔案解密 生成祕鑰對 @staticmethod def create_rsa_keys(code='nooneknows'): # 生成 2048 位的 RSA 金鑰 key

利用SHA-1演算法和RSA進行簽名驗籤(帶註釋)

  背景介紹 1、SHA 安全雜湊演算法SHA (Secure Hash Algorithm)是美國國家標準和技術局釋出的國家標準FIPS PUB 180-1,一般稱為SHA-1。其對長度不超過264二進位制位的訊息產生160位的訊息摘要輸出,按512位元塊處理其輸入。 SHA是一種資料加密

RSA公演算法

RSA公鑰金鑰演算法總結 RSA演算法既能用於資料加密也能用於數字簽名,它是素數的典型應用。 RSA是什麼? 計算機的加密技術分為對稱加密和非對稱加密兩類。在對稱加密中,資訊的加解密使用同一祕鑰key,其可簡化加解密的過程,較為簡單,但不足之處在於由於加解密使

ZeroMQ介面函式之 :zmq_z85_encode – 使用Z85演算法對一個二進位制進行加密,輸出可列印的文字

zmq_z85_encode(3)          ØMQ Manual - ØMQ/4.1.0 Name zmq_z85_encode – 使用Z85演算法對一個二進位制祕鑰進行加密,輸出可列印的文字 Synopsis char *zmq_z85_encode (char *dest, u

小王的尷尬日常(二)---Openssl 實現國密演算法(基礎介紹和產生對)

國密非對稱加密演算法又稱sm2,它是採取了ECC(曲線加密演算法)中的一條固定的曲線,實際上就是ECC演算法。 那麼這次讓我尷尬的是什麼呢?我現在維護一個專案,裡面包含了大量的加密演算法,而且很多是自己實現的,其中ECC演算法就有問題,現在打算用openssl

【IoT】加密與安全:非對稱加密演算法 RSA 1024 公、明文和密文長度

RSA 1024 是指公鑰及私鑰分別是 1024bit,也就是 1024/8 = 128Bytes。 RSA 演算法金鑰長度的選擇是安全性和程式效能平衡的結果,金鑰長度越長,安全性越好,加密解密所需時間越長。 1、非對稱加密演算法中 1024bit 金鑰的強度相當於對稱加

Https傳輸中加密和金交換涉及到的演算法總結與介紹

以下都是來自網際網路中的摘抄與總結,難免有不對或理解錯誤之處,也希望各位不吝嗇指出,賜教! 可參考此文章幫助理解: 圖解SSL/TLS協議(阮一峰) 1. DEA (Data Enc

加密的類型及其相關算法--密交換

加密算法 密鑰交換 前兩節講到了信息的加密和信息的完整性,可是無法解決密碼(密鑰)傳輸保密的問題。如何在不安全的網絡上來進行協商密碼(密鑰)呢? 1976年,W.Diffie和M.Hellman在發表的論文中提出了公鑰加密算法思想,但當時並沒有給出具體的實施方案,原因在於沒有找到單向函數

SSH分發、檔案分發、批量執行命令

SSH祕鑰分發、檔案分發、批量執行命令 要求使用同一使用者lss,實現A機器從本地分發資料到B、C的過程不需要輸入密碼,且可以批量在B、C主機上執行命令 IP 角色 使用者 192.1