非對稱加密技術 共享秘鑰

2021-09-11 14:11:27 字數 3616 閱讀 3165

非對稱加密技術是當前網際網路界採用較多的一種資料加密方式。

通過網路傳輸機密資訊的問題是,傳輸的渠道是公開、透明的,某種程度上來講,這就好比要使用明信片來傳遞秘密一樣。

因此我們需要構建的資料加密方式必須能夠做到,只有接受和傳送訊息的人才能夠得到明信片上所真正表示的內容。

首先,毋庸置疑的是,我們需要對公開傳送的內容進行修改,使其成為加密的密文。

乙個最簡單的方法,就是「移位密碼」。以英文為例,我們可以簡單的讓每個字母向後移動幾個距離來實現內容的加密,比如下面這樣:

mark =每個字元向後移動3個距離=> pdun

複製**

這是乙個簡單的方法,更進一步的,使用凱撒密碼等方式,可以實現進一步的加密。

切換到計算機層面上,即是說可以對傳輸的二進位製包整體做移位處理,從而實現加密(當然實際的演算法要比這複雜的多)。

可以看到,無論是採用什麼樣的加密方式,訊息的傳送者和接受者都需要提前共享一樣東西,來實現加密和解密:在移位密碼的例子中,這個東西是字母向後移動的距離,在凱撒密碼中,則是一串字母或是也該單詞。

我們將這個需要雙方提前共享的東西稱為秘鑰,這是乙個很形象的比喻,我們對資訊加密,就像是要對資訊加上一把老式的旋轉鎖,而無論是上鎖還是解鎖,都需要一把同樣的鑰匙。

所以在共享秘鑰的加密方式裡,傳輸加密訊息的關鍵在於如何通過公開的通道共享同一把秘鑰

現在讓我們想象乙個場景:

在同乙個房間裡有a,b,c三個人,a要向b傳輸一段私密訊息(比如說他的銀行卡密碼),而c是一名竊聽者。

在不使用小紙條、悄悄話等方式的前提下,a和b要如何傳輸訊息,才能避免c的竊聽呢?

另外需要注意的一點是,a和b是陌生關係,這也就意味著他們沒法使用諸如「天王蓋地虎,寶塔鎮河妖」之類的暗號進行交流。

乍看之下似乎是乙個很無解的問題,但卻有乙個很巧妙的方法能夠解決 —— 我們需要的只是幾桶不同顏色的顏料罷了。

現在我們假設a,b,c三個人,分別位於房間的三個角落裡,而每個角落裡都有很多很多不同顏色的顏料,每種顏色的顏料也是無限多的。

注意,我們規定,每個人在自己的角落裡所做的事情,是其他任何人都無法看到的,如果兩個人需要對話或是交換資訊,就必須走到房間**的公共區域去,在這裡做的事情,是公開透明的。

a和b在各自的角落裡選定一種顏色,我們將這個稱為a和b的私有顏色,這意味著只有a和b自己知道它是什麼顏色,其他人都無法知曉。

現在a和b需要再各自選定一種顏色,與之前不同的是,這次選定的顏色是公開的,這意味著a和b需要將這種顏色放到房間**的公共區域去:任何人都可以取到他們的公開顏色。

現在a和b需要在各自的角落裡做一些「調色」工作,這非常簡單:

a將自己的私有顏色和自己的公開顏色進行混合,得到一種新的顏色,我們稱其為a的「公開-私有混合顏色」。

同樣的,b將自己的私有顏色,與a的公開顏色進行混合,得到b的「公開-私有混合顏色」。

注意,他們各自的混合顏色並不相同。

接下來a和b將會把各自的混合顏色公開,放置到房間**的公共區域去。

現在我們假設,a獲得了b的「公開-私有混合顏色」,並將它搬回了自己的角落;同樣的,b也將a的「公開-私有顏色」搬回了自己的角落。

那麼,神奇的地方來了,現在a和b分別向彼此的混合顏色中,加入自己的私有顏色,最終他們將得到相同的顏色,因為他們使用了同樣的成分(a的公開顏色+a的私有顏色+b的私有顏色)來構建最終的顏色。

接下來,a和b只需要使用這種相同的顏色對要傳輸的資訊進行加密/解密操作,就可以實現訊息的秘密傳輸了(參照移位密碼)。

我們可以看到,對於竊聽者c,無論如何拼湊資訊,都無法得到真正的共享秘鑰。

之所以能夠使用混合顏料來達到上述的神奇效果,關鍵在於:

我們以混合顏料的例子說明了如何實現共享秘鑰的構建,現在是時候思考如何在二進位制的網路世界裡達到同樣的效果了。

首先我們需要一種特殊的數字運算方式,能夠和顏料的混合一樣實現不可逆運算,同時還能夠保證相同的數字按照不同的順序進行運算後,能夠得到同樣的結果(即滿**換律)。

現在來介紹能夠滿足上述要求的一種計算方式,也是網路早期共享秘鑰diffie hellman演算法所採用的計算方式:模運算+冪運算

這對於熟識計算機常識的人並不是乙個陌生的數學知識,我們假定乙個模數a,那麼任何乙個數字ba取模的結果就是b / a的餘數。

以模數a = 11為例子:

13 mod 11 = 2

(3 + 6) mod 11 = 9

(2^4) mod 11 = 5

複製**

有了模運算的概念後,我們就可以開始著手構建可用的共享秘鑰演算法了,下面依舊基於a,b,c三個人的場景進行說明。

和顏色混合不同,現在每個人的公開部分需要包含兩個數字,其中乙個是模數,另乙個是基數

假設a的公開數字分別是11(模數)和2(基數)。

這是關鍵的一步,我們要解釋乙個等同於顏料混合的算數過程,這個過程構建出的結果將會是不可逆的。

現在,a和b都將使用a的兩個公開數字,和自己的私有數字,利用下面的公式計算自己的公開-私有數字(我們稱其為ppn):

ppn = 基數^私人數字 mod 模數

複製**

於是:

a的ppn = 2^8 mod 11 = 3

b的ppn = 2^9 mod 11 = 6

複製**

可以看到這個計算ppn的過程是不可逆的,這主要歸功於取模操作。

混合的計算方式和上面類似,只是公開基數被替換成了對方的ppn:

a計算共享秘鑰 = b的ppn^8 mod 11 = 6^8 mod 11 = 4

b計算共享秘鑰 = a的ppn^9 mod 11 = 3^9 mod 11 = 4

複製**

之所以能夠得到同樣的結果,是因為冪運算滿**換律,即:

(a^b)^c = (a^c)^b =  a^(bc)

複製**

很好,a和b成功混合得到了同樣的共享秘鑰!現在他們只需要使用這個共享秘鑰進行數字的加密/解密就可以實現私密通訊了。

而竊聽者c無論拿到誰的ppn,都會因為無法混入另乙個人的私鑰而不能得到最終的共享秘鑰。

我們可以把上面的過程總結為下圖:

上面的例子中,為了方便理解,我們都採用了非常小的數字,比如模數11,對應的結果空間只有0-10一共11個數字,那麼竊聽者完全可以通過暴力嘗試的方式遍歷整個結果空間,最終破譯得到密碼。

所以,deffie-hellman對公開數字有以下幾個要求:

3的冪迴圈對11取模後得到的值只有3,9,5,4,1,而無法得到2,6,7,8,10

共享秘鑰加密,是不對稱加密的乙個典型使用範例,除了deffie-hellman演算法之外,大名鼎鼎的rsa也屬於同樣的思路。

本文參考:《改變未來的九大演算法》第四章

加密技術 對稱與非對稱加密技術簡述

首先 加密的目的就是,不能讓傳送方和接收方以外的其他第三方明白兩者之間傳送的資料的意義。加密技術大致分為對稱加密和非對稱加密技術。主要使用替換和移位的方式加密。使用56位金鑰對64位二進位制資料快進行加密,每次加密可以對64位的資料塊進行16輪編碼。特點 運算速度快,金鑰容易產生。類似於三重das,...

對稱 非對稱加密技術初探

部落格已遷移至 對稱加密簡介對稱加密演算法所用到的基本的方法是 代換 和 置換。簡單來說 以早期的加密方式舉例 以上是早期加密時用的簡單的方法,其思想還是通過 替換 來進行加密的 對稱加密過程 常見對稱加密演算法 基於數學函式的演算法,而不再是基於代換和置換技術,公鑰加密演算法是 非對稱的 根據加密...

對稱加密技術與非對稱加密技術優缺點對比

對稱加密 一 對稱加密 雙方使用的同乙個金鑰,既可以加密又可以解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。優點 速度快,對稱性加密通常在訊息傳送方需要加密大量資料時使用,演算法公開 計算量小 加密速度快 加密效率高。缺點 在資料傳送前,傳送方和接收方必須商定好秘鑰,然後 使雙方都能儲存好秘鑰。...