三、數字簽名(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函式實現 證明數字簽名中的公鑰是否可信 未被...