最近在複習密碼學相關內容,先簡單介紹一下加密和解密。
先說結論:公鑰是加密的,私鑰是用來解密的。
本回答參考《圖解密碼技術 第三版》
小明想發訊息給小紅表白,但是小明害怕駭客小剛會擷取表白訊息,於是小明決定加密之後再發出去。
加密之前的訊息稱為明文,加密之後的訊息稱為密文。
看到明文我們可以理解其中的含義,看到密文則無法理解其中的含義
小紅收到了小明的加密郵件,但是作為接收者的小紅也讀不懂加密後的密文,於是小紅需要對密文解密後再閱讀,解密就是將密文恢復成明文的過程
小紅羞紅了臉。
將訊息加密後傳送的話,即使是訊息被竊聽,竊聽者小剛也只是得到了密文,而無法得知加密前明文內容。
密碼保證了訊息的機密性:上述場景中,小明將郵件進行加密,而小紅進行解密,這樣做的目的就是為了不讓竊聽者小剛讀取郵件的內容,小明和小紅透過運用密碼技術,保證了郵件的機密性。
破譯:
進行加密之後,小剛只能得到密文。如果小剛無論如何都想知道小明和小紅聊了什麼內容,就需要採取某種手段將密文還原成明文。
小紅將密文還原成明文稱為解密,但是除了小紅之外的人試圖將密文還原成明文則稱為密碼破譯,也稱為密碼分析。
密碼演算法:
用於解決複雜問題的步驟,通常稱為演算法。從明文生成密文的步驟,也就是加密的步驟,稱為加密演算法,而解密的步驟則稱為解密演算法,加密解密演算法合在一起統稱為密碼演算法。
密碼演算法種需要金鑰(key),無論是再加密還是解密時,都需要知道金鑰。正如保險櫃的鑰匙可以存放貴重物品一樣,密碼中的金鑰可以保護你的重要資料,即使保險箱再堅固,如果鑰匙被盜,力面的貴重物品也會被盜,同樣的,我們也必須像保護保險櫃鑰匙一樣保護金鑰。
根據金鑰的使用方法可以將密碼分為對稱密碼和公鑰密碼兩種
對稱密碼時指在加密和解密時使用同一金鑰的方式
而公鑰密碼指的是加密和解密時使用不同金鑰的方式,因此,公鑰密碼又稱為非對稱密碼
在介紹公鑰密碼之前,先來說說投幣寄存櫃。投幣寄存櫃是這樣使用的。
首先,將物品放入寄物櫃,然後投入硬幣並拔出鑰匙,就可以將寄物櫃關閉了沒有鑰匙是無法開啟的。
只要有硬幣,任何人都可以關閉寄物櫃,但寄物櫃一旦被關閉,再怎麼投幣也無法開啟,開啟寄物櫃需要使用鑰匙,而不是硬幣。
因此我們可以說,硬幣是關閉寄物櫃的鑰匙,而鑰匙則是開啟寄物櫃的金鑰。
公鑰密碼種,金鑰分為加密和解密金鑰兩種,傳送者用加密金鑰對訊息進行加密,接收者用解密金鑰進行解密。要理解公鑰密碼,清楚的區分加密金鑰和解密金鑰是非常重要的。加密金鑰是傳送者加密時使用的,而解密金鑰是接收者解密時使用的。
仔細思考一下加密金鑰和解密金鑰之間的區別,我們可以發現:
傳送者只需要加密金鑰
接收者只需要解密金鑰
解密金鑰不可以被竊聽者獲取
加密金鑰被竊聽者獲取也沒問題
也就是說,解密金鑰從一開始就是接受著自己報關的,因此只要將加密金鑰傳送給傳送者就可以解決問題了,而根本不需要配送解密金鑰
公鑰密碼種,加密金鑰一般是公開的。正是由於加密金鑰可以任意公開,因此該金鑰被稱為公鑰。公鑰可以直接透過郵件傳送給接收者,也可以刊登在報紙的廣告欄上,做成看板放在街上,或者做成網頁公開給世界上的任何人,完全不必擔心被竊聽者小剛竊取。
當然,我們也沒有必要非將公鑰公開給全世界的所有人,但至少要將公鑰傳送給發信者。
相對的,解密金鑰是絕對不能公開的,這個金鑰只能由你自己來使用,因此被稱之為私鑰。私鑰不能被別人知道,也不可以將傳送給別人,甚至也不能傳送給自己的通訊物件。
下面我們看一看公鑰密碼通訊的流程,和以前一樣還是假設小明要給小紅髮一條表白資訊,竊聽者小剛依然能夠竊聽到他們之間的通訊內容。
1、小紅首先生成一個包含公鑰和私鑰的金鑰對,私鑰由小紅自己保管。
2、小紅將自己的公鑰發給小明,即使被小剛竊聽了也沒關係。小紅將公鑰傳送給小明,表示小紅請小明用這個公鑰對訊息進行加密併發送給他。
3、小明用小紅的公鑰對訊息進行加密,加密後的訊息只有用小紅的私鑰才能解密
雖然小明有小紅的公鑰,但是用小紅的公鑰是無法對密文進行解密的
4、小明將密文傳送給小紅
密文被竊聽者小剛截獲也沒關係。小剛可能擁有小紅的公鑰,但是用小紅的公鑰是無法進行解密的。
5、小紅用自己的私鑰對密文進行解密
RSA
終於進入正題了,下面來講一下現在使用最廣泛的公鑰密碼演算法RSA
什麼是RSA?
RSA是一種公鑰密碼演算法,可以被用於公鑰密碼和數字簽名
RSA加密:
下面,我們終於可以講一講公鑰密碼的代表--RSA的加密過程了
在RSA中,明文、金鑰和密文都是數字。RSA的加密過程可以用下列公式來表達,這個公式很重要:
就這麼簡單,僅僅對明文進行E次方求mod即可,這就是整個加密過程
E和N的組合就是公鑰
RSA的解密:
RSA的解密和加密一樣簡單可以用下面的公式來表達:
也就是說,對密文的數字的D次方modN就可以求到明文。
至於怎麼生成E和D和N。
1、求N
先選擇兩個質數p、q
N=p*q
2、求L
L=lcm(p-1,q-1)
3、求E
gcd(E,L)=1,選擇一個成立的E即可
4、求D
E*D mod L=1
E,N可以任意公開
私鑰D,N必須妥善保管
恭喜你,至此我們已經學會了RSA公鑰加密的基本原理。
最近在複習密碼學相關內容,先簡單介紹一下加密和解密。
先說結論:公鑰是加密的,私鑰是用來解密的。
本回答參考《圖解密碼技術 第三版》
小明想發訊息給小紅表白,但是小明害怕駭客小剛會擷取表白訊息,於是小明決定加密之後再發出去。
加密之前的訊息稱為明文,加密之後的訊息稱為密文。
看到明文我們可以理解其中的含義,看到密文則無法理解其中的含義
小紅收到了小明的加密郵件,但是作為接收者的小紅也讀不懂加密後的密文,於是小紅需要對密文解密後再閱讀,解密就是將密文恢復成明文的過程
小紅羞紅了臉。
將訊息加密後傳送的話,即使是訊息被竊聽,竊聽者小剛也只是得到了密文,而無法得知加密前明文內容。
密碼保證了訊息的機密性:上述場景中,小明將郵件進行加密,而小紅進行解密,這樣做的目的就是為了不讓竊聽者小剛讀取郵件的內容,小明和小紅透過運用密碼技術,保證了郵件的機密性。
破譯:
進行加密之後,小剛只能得到密文。如果小剛無論如何都想知道小明和小紅聊了什麼內容,就需要採取某種手段將密文還原成明文。
小紅將密文還原成明文稱為解密,但是除了小紅之外的人試圖將密文還原成明文則稱為密碼破譯,也稱為密碼分析。
密碼演算法:
用於解決複雜問題的步驟,通常稱為演算法。從明文生成密文的步驟,也就是加密的步驟,稱為加密演算法,而解密的步驟則稱為解密演算法,加密解密演算法合在一起統稱為密碼演算法。
密碼演算法種需要金鑰(key),無論是再加密還是解密時,都需要知道金鑰。正如保險櫃的鑰匙可以存放貴重物品一樣,密碼中的金鑰可以保護你的重要資料,即使保險箱再堅固,如果鑰匙被盜,力面的貴重物品也會被盜,同樣的,我們也必須像保護保險櫃鑰匙一樣保護金鑰。
根據金鑰的使用方法可以將密碼分為對稱密碼和公鑰密碼兩種
對稱密碼時指在加密和解密時使用同一金鑰的方式
而公鑰密碼指的是加密和解密時使用不同金鑰的方式,因此,公鑰密碼又稱為非對稱密碼
在介紹公鑰密碼之前,先來說說投幣寄存櫃。投幣寄存櫃是這樣使用的。
首先,將物品放入寄物櫃,然後投入硬幣並拔出鑰匙,就可以將寄物櫃關閉了沒有鑰匙是無法開啟的。
只要有硬幣,任何人都可以關閉寄物櫃,但寄物櫃一旦被關閉,再怎麼投幣也無法開啟,開啟寄物櫃需要使用鑰匙,而不是硬幣。
因此我們可以說,硬幣是關閉寄物櫃的鑰匙,而鑰匙則是開啟寄物櫃的金鑰。
公鑰密碼種,金鑰分為加密和解密金鑰兩種,傳送者用加密金鑰對訊息進行加密,接收者用解密金鑰進行解密。要理解公鑰密碼,清楚的區分加密金鑰和解密金鑰是非常重要的。加密金鑰是傳送者加密時使用的,而解密金鑰是接收者解密時使用的。
仔細思考一下加密金鑰和解密金鑰之間的區別,我們可以發現:
傳送者只需要加密金鑰
接收者只需要解密金鑰
解密金鑰不可以被竊聽者獲取
加密金鑰被竊聽者獲取也沒問題
也就是說,解密金鑰從一開始就是接受著自己報關的,因此只要將加密金鑰傳送給傳送者就可以解決問題了,而根本不需要配送解密金鑰
公鑰密碼種,加密金鑰一般是公開的。正是由於加密金鑰可以任意公開,因此該金鑰被稱為公鑰。公鑰可以直接透過郵件傳送給接收者,也可以刊登在報紙的廣告欄上,做成看板放在街上,或者做成網頁公開給世界上的任何人,完全不必擔心被竊聽者小剛竊取。
當然,我們也沒有必要非將公鑰公開給全世界的所有人,但至少要將公鑰傳送給發信者。
相對的,解密金鑰是絕對不能公開的,這個金鑰只能由你自己來使用,因此被稱之為私鑰。私鑰不能被別人知道,也不可以將傳送給別人,甚至也不能傳送給自己的通訊物件。
下面我們看一看公鑰密碼通訊的流程,和以前一樣還是假設小明要給小紅髮一條表白資訊,竊聽者小剛依然能夠竊聽到他們之間的通訊內容。
1、小紅首先生成一個包含公鑰和私鑰的金鑰對,私鑰由小紅自己保管。
2、小紅將自己的公鑰發給小明,即使被小剛竊聽了也沒關係。小紅將公鑰傳送給小明,表示小紅請小明用這個公鑰對訊息進行加密併發送給他。
3、小明用小紅的公鑰對訊息進行加密,加密後的訊息只有用小紅的私鑰才能解密
雖然小明有小紅的公鑰,但是用小紅的公鑰是無法對密文進行解密的
4、小明將密文傳送給小紅
密文被竊聽者小剛截獲也沒關係。小剛可能擁有小紅的公鑰,但是用小紅的公鑰是無法進行解密的。
5、小紅用自己的私鑰對密文進行解密
RSA
終於進入正題了,下面來講一下現在使用最廣泛的公鑰密碼演算法RSA
什麼是RSA?
RSA是一種公鑰密碼演算法,可以被用於公鑰密碼和數字簽名
RSA加密:
下面,我們終於可以講一講公鑰密碼的代表--RSA的加密過程了
在RSA中,明文、金鑰和密文都是數字。RSA的加密過程可以用下列公式來表達,這個公式很重要:
就這麼簡單,僅僅對明文進行E次方求mod即可,這就是整個加密過程
E和N的組合就是公鑰
RSA的解密:
RSA的解密和加密一樣簡單可以用下面的公式來表達:
也就是說,對密文的數字的D次方modN就可以求到明文。
至於怎麼生成E和D和N。
1、求N
先選擇兩個質數p、q
N=p*q
2、求L
L=lcm(p-1,q-1)
3、求E
gcd(E,L)=1,選擇一個成立的E即可
4、求D
E*D mod L=1
E,N可以任意公開
私鑰D,N必須妥善保管
恭喜你,至此我們已經學會了RSA公鑰加密的基本原理。