回覆列表
  • 1 # 使用者4724129450890

    最近在複習密碼學相關內容,先簡單介紹一下加密和解密。

    先說結論:公鑰是加密的,私鑰是用來解密的。

    本回答參考《圖解密碼技術 第三版》

    小明想發訊息給小紅表白,但是小明害怕駭客小剛會擷取表白訊息,於是小明決定加密之後再發出去。

    加密之前的訊息稱為明文,加密之後的訊息稱為密文。

    看到明文我們可以理解其中的含義,看到密文則無法理解其中的含義

    小紅收到了小明的加密郵件,但是作為接收者的小紅也讀不懂加密後的密文,於是小紅需要對密文解密後再閱讀,解密就是將密文恢復成明文的過程

    小紅羞紅了臉。

    將訊息加密後傳送的話,即使是訊息被竊聽,竊聽者小剛也只是得到了密文,而無法得知加密前明文內容。

    密碼保證了訊息的機密性:上述場景中,小明將郵件進行加密,而小紅進行解密,這樣做的目的就是為了不讓竊聽者小剛讀取郵件的內容,小明和小紅透過運用密碼技術,保證了郵件的機密性。

    破譯:

    進行加密之後,小剛只能得到密文。如果小剛無論如何都想知道小明和小紅聊了什麼內容,就需要採取某種手段將密文還原成明文。

    小紅將密文還原成明文稱為解密,但是除了小紅之外的人試圖將密文還原成明文則稱為密碼破譯,也稱為密碼分析。

    密碼演算法:

    用於解決複雜問題的步驟,通常稱為演算法。從明文生成密文的步驟,也就是加密的步驟,稱為加密演算法,而解密的步驟則稱為解密演算法,加密解密演算法合在一起統稱為密碼演算法。

    密碼演算法種需要金鑰(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公鑰加密的基本原理。

  • 中秋節和大豐收的關聯?
  • 泡腳用什麼溫度的水好?