加密演算法 公鑰 私鑰 數字簽名與CA

2021-09-17 18:26:55 字數 3653 閱讀 8817

三、數字簽名(digital sign)

四、ca(certificate authority 證書頒發機構)

四、消失的u盾

五、參考文章

秘鑰、可逆、逆演算法

一開始加解密過程,都是對稱加密演算法,對稱的意思是加密和解密是相反(對稱)的過程。

我們假設a希望從b處通過加密得到一串資訊

b選擇一種加密規則r和秘鑰,甚至沒有秘鑰,對資訊m進行加密

a使用r規則的逆規則r,如果加密使用秘鑰,則須使用相同的秘鑰,對資訊進行解密

對稱加密演算法有如下的缺點:

任意一端邏輯洩露,就可以破解訊息,尤其是多人傳輸訊息的時候,端越多風險越大。

另外,假設一對多傳送訊息,可能不希望其它訊息接收方能破譯訊息,所以發往每個訊息接收者的秘鈅要有所不同,使得秘鑰管理變得繁瑣。

在開放的網際網路中,如何通過公共途徑把秘鑰安全送達到對方手中也是個問題。

為了解決對稱加密演算法的這些問題,發明了非對稱加密,非對稱,簡單說就是鑰匙和鎖是一組,但是根據鎖無法推測出鑰匙的形狀,而對稱加密演算法,能夠根據鎖反推測出鑰匙的形狀(演算法),如果再獲取到秘鑰(鑰匙)就能解密,所以不夠安全。做法是生成一組公鑰和私鑰,訊息接收方儲存私鑰(就乙份,自己收好,不傳播,所以安全性高),公鑰給訊息傳送方,可以有很多傳送方 。訊息傳送方將訊息使用加密演算法進行加密接收方使用私鑰進行解密才能得到報文。

rsa是可以雙向加解密的,但是用於加解密的時候,只會有公鑰加密,私鑰解密。試想如果私鑰加密,公鑰是公開的,,,那不是誰都能破譯訊息。

私鑰加密,公鑰解密用於另一種場景,那就是數字簽名,用此來證明這個報文確實是我發出去的,內容就是這個內容。

注意這兩種場景的方向。

可逆就是加密完還可以解密,假設目的用來傳輸報文,必須使用可逆演算法保證對方能解開。解密需要鑰匙(私鑰)。

不可逆,密文無法轉成明文,所以不可逆演算法不需要鑰匙(也有鑰匙,我們這個時候管它叫做「」)。但是相同的明文一定會得到相同的結果(未必),如果報文發生變化,內容一定會發生變化,報文不發生變化,密文也一定不會發生變化。所以可以用於驗證內容是否一致。

不可逆的加密演算法,大部分是hash演算法中的,比如md5、sha1、bcrypt

長度越長,越難破解。目前已經破解到了700+位的,推薦使用1024位,甚至2048位來確保安全。

將文件進行hash,得到h(有的文章把這個叫做指紋),然後將h使用私鑰加密,得到的就叫做數字簽名,然後將【報文+數字簽名】發給接收方。

這裡面有兩個關鍵點,乙個是hash演算法。hash演算法是對文件進行摘要,相同的文件得到的hash值一定相同,對文件稍作修改,就會得到不同的hash值。然後hash演算法的實現有很多種,接收方要和傳送方要約定,採用相同的hash演算法,採用什麼樣的hash演算法完全可以公開。

另乙個關鍵點就是使用私鑰加密,這樣證明簽名是傳送方簽發的,如果不加密,攻擊者可以將內容改了,然後將hash也順便改了。

網上有的文章說需要對報文也使用私鑰加密,因為公鑰是放出來的,加密的意義不是那麼大。如果一定要加密,應該雙向加密,報文使用接收方的公鑰進行加密,hash的結果使用傳送方的私鑰進行加密。這種意義沒有那麼大。

在非對稱加密中,因為私鑰只有乙份,由傳送者自己負責私鑰的安全,我們假定私鑰是絕對安全的。而公鑰是不安全的,公鑰的使用者並沒有意識/責任/能力保證公鑰的安全。

在數字簽名場景中,私鑰持有者為傳送方,公鑰持有者為接收方。假設攻擊者知道了接收方公鑰的位置與使用的hash演算法,使用自己的公鑰將接收方的公鑰替換,然後自己偽造乙份報文,使用hash演算法得到指紋,將指紋用自己的私鑰加密,形成假的」數字簽名「,連同報文一起傳送給接收方。接收方此時能夠驗證數字簽名,認為這是乙份有效力的報文。

這樣問題變成了如何保證公鑰的安全。

為了保證公鑰的安全,出現了certificate authority(證書頒發機構),證書頒發機構存在的目的,作為權威第三方,它用來對公鑰進行合法性檢驗。

具體的驗證方法是

ca自己也有公鑰、私鑰。

傳送方a去ca申請證書,將公鑰和個人資訊傳送給ca,申請「數字證書」。

ca驗證a確實是申請者主體,給a製作乙份「數字證書」,內容大約如下:

issuer(簽發機構) : securetrust ca 

subject(公鑰所屬主體) : abc company

valid from(有效期開始) : 某個日期

valid to(有效期至): 某個日期

public key(a的公鑰) : 一串很長的數字

...其它資訊

證書會包含證書主體資訊和演算法+指紋

為了保證主體資訊沒有被篡改,對主體內容進行hash生成指紋,然後將指紋加密,將演算法和指紋密文也放到證書中。

5. 接收方,在使用a的公鑰時

1) 使用ca的公鑰來解密指紋的密文,得到指紋

2) 對主體進行hash,得到的結果和指紋比對,如果相同,則認為證書沒有被篡改

3) 從證書中取出a的公鑰來使用

現在問題變成了如何保證ca公鑰的安全。。

ca的公鑰存內建(焊接)在作業系統/瀏覽器中,作業系統/瀏覽器不允許修改這個公鑰,由他們來保證ca公鑰的安全。假設真的被篡改了,,,

ca的產生就是覺得公鑰不安全,就往上上公升,使用ca來保證公鑰的安全。所以歸根到底公鑰並不是絕對的安全,好比貸款買房,銀行認定個人不安全,要找個擔保公司。擔保公司也有可能有跑路的一天。雖然一般來講,ca比擔保公司要靠譜的多。。。

證書可以從機構申請,或者自己製作。。。作業系統有一系列權威ca的列表,會驗證證書頒發者是否是權威機構,如果是權威機構會直接安裝。如果不是,會提示風險,,這個時候需要你做出判斷,如果你什麼都管直接continue,那。。。

我們以前去銀行開卡,每次還要花錢買個u盾(u key),u盾可以插入電腦、手機,在進行大額轉賬時必須使用u盾,現在都不會讓人辦這些了。

ukey是什麼

去銀行辦完業務,銀行工作人員拿乙個空白ukey,買下

工作人員錄入使用者資訊,讓我們決定乙個6位ukey密碼(pin personal identify number),使用ukey生成使用者公鑰、私鑰。

將使用者資訊,使用者公鑰,儲存到銀行內部的pki(public key infrastructure)平台。

伺服器生成公鑰、私鑰對,將私鑰自己儲存,將伺服器公鑰生成證書,將ca證書儲存到ukey

燒錄完畢,帶走,此時ukey有密碼,有使用者私鑰,ca證書(伺服器公鑰)

需要使用時,插入ukey

輸入pin,解鎖

如果沒有安裝ca證書,按提示安裝ca證書,,,銀行的ca證書一般都不在權威ca的可信列表中,所以裝在u盾裡讓人有信心點下一步。

傳送訊息時,使用雙向加密的方式。

其實個人好像也有個證書,,,來保證客戶端是安全有效的,這一步不新增進來講了。

大額轉賬前必須要插u盾。輸入pin,安裝證書什麼的,太麻煩。現在移動支付大行其道,簡訊驗證,指紋驗證,人臉識別,這些手段不僅方便,安全性也不弱,逐漸淘汰了u盾。

公鑰 私鑰 數字簽名 CA證書

簡單來說分為兩種,對稱加密和非對稱加密。對稱加密 加密和解密用的是同乙個秘鑰,在對稱加密演算法中常用的演算法有 des 3des tdea blowfish rc2 rc4 rc5 idea等。這類加密演算法的優點就是計算量小 加密速度快 加密效率高 但是缺點也很明顯,在傳輸資料前,雙方必須商定並儲...

數字簽名,公鑰,私鑰

數字簽名是什麼?翻譯 阮一峰 原文 1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。2.鮑勃把公鑰送給他的朋友們 帕蒂 道格 蘇珊 每人一把。3.蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。4.鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩...

公鑰 私鑰 數字簽名

公鑰 私鑰 數字簽名 數字證書 作用1 傳送方的資訊加密,保證不被竊取 他人用公鑰加密,我用私鑰解密 2 傳送方的身份驗證 我用私鑰簽名,他人用公鑰驗證 如數字簽名 1 傳送方的身份驗證 公鑰私鑰實現 也可用於防止抵賴 2 驗證傳送資訊是否被篡改 hash函式實現 證明數字簽名中的公鑰是否可信 未被...