❶ 對稱加密、非對稱加密、摘要、數字簽名、數字證書
作為一個開發人員,或多或少都聽說過對稱加密、非對稱加密、摘要、數字簽名、數字證書這幾個概念,它們是用來保證在互聯網通信過程中數據傳輸安全的。有人可能會有疑惑,我給傳輸數據加個密不就安全了,為什麼還要搞這么多花樣出來?本文主要通過一個案例來講解這幾個概念的實際作用。
在此之前,我先簡單介紹一下這幾個概念。
對稱加密是指用來加密和解密的是同一個秘鑰。其特點是加密速度快,但是秘鑰容易被黑客截獲,所以安全性不高。常見的有AES、DES演算法。
非對稱加密是指用來加密和解密的是不同的秘鑰,它們是成對出現的,稱為公鑰和私鑰,知道其中一個秘鑰是無法推導出另外一個秘鑰的。用公鑰加密的內容需要用私鑰才能解密,用私鑰加密的內容需要用公鑰才能解密。非對稱加密的特點是安全性高,缺點是加密速度慢。常見的有RSA演算法。
所謂的摘要就是一段信息或者一個文件通過某個哈希演算法(也叫摘要演算法)而得到的一串字元。摘要演算法的特點就是不同的文件計算出的摘要是不同的(也有可能相同,但是可能性非常非常低),比如一個1G的視頻文件,哪怕只是改動其中一個位元組,最後計算得到的摘要也是完全不同的,所以摘要演算法通常是用來判斷文件是否被篡改過。其還有一個特點就是通過摘要是無法推導出源文件的信息的。常用的摘要演算法有MD5、SHA等。
數字簽名就是一個文件的摘要加密後的信息。數字簽名是和源文件一起發送給接收方的,接收方收到後對文件用摘要演算法算出一個摘要,然後和數字簽名中的摘要進行比對,兩者不一致的話說明文件被篡改了。
數字證書是一個經證書授權中心生成的文件,數字證書里一般會包含公鑰、公鑰擁有者名稱、CA的數字簽名、有效期、授權中心名稱、證書序列號等信息。其中CA的數字簽名是驗證證書是否被篡改的關鍵,它其實就是對證書裡面除了CA的數字簽名以外的內容進行摘要演算法得到一個摘要,然後CA機構用他自己的私鑰對這個摘要進行加密就生成了CA的數字簽名,CA機構會公開它的公鑰,驗證證書時就是用這個公鑰解密CA的數字簽名,然後用來驗證證書是否被篡改。
場景:
張三要找人裝修一個房子,原則是誰的出價便宜就給誰裝修,所以對於報價文件就是屬於機密文件。下面我們來看下不同的方式傳輸報價文件都會有什麼風險。
現在李四想接這個裝修的活,他做了一份報價文件(文件名: lisi.txt ,文件內容: 報價50萬 )。然後李四用一個對稱秘鑰 123 對這個文件進行加密。最後李四將這個秘鑰和加密的文件發給張三,張三收到後用這個秘鑰解密,知道了李四的報價是50萬。
同時王五也想接這個裝修的活,他本來是想報價55萬的,但是又擔心報價太高而丟掉這個活。恰巧王五是個黑客高手,於是他截獲了李四發給張三的秘鑰和加密文件,知道了李四報價是50萬。最後王五將自己的報價改成了49萬發給張三,結果王五接下了這個裝修活。
結論:
用對稱加密的話,一旦秘鑰被黑客截獲,加密就形同虛設,所以安全性比較低。
首先張三會生成一對秘鑰,私鑰是 zhangsan1 ,公鑰是 zhangsan2 ,私鑰張三自己保存,將公鑰公布出去。
李四將報價文件 list.txt 用張三公布的公鑰 zhangsan2 進行加密後傳給張三,然後張三用私鑰 zhangsan1 進行解密得到李四的報價是50萬。
這個時候即使王五截獲到了李四發給張三的報價文件,由於王五沒有張三的私鑰,所以他是無法解密文件的,也就無法知道李四的報價。最後王五因為報價55萬而丟掉了這個裝修的機會。
所以用非對稱加密是可以保證數據傳輸安全的。不過這里說一句題外話,既然非對稱加密安全性高,那為什麼不淘汰掉對稱加密呢?其實關鍵就在於加密速度,非對稱加密計算量很大,所以加密速度是很慢的,如果發送消息非常頻繁,使用非對稱加密的話就會對性能造成很大影響。所以在實際開發過程中通常是對稱加密和非對稱加密結合使用的。也就是對稱加密的秘鑰是用非對稱加密後發送的,這樣能保證對稱加密的秘鑰不被黑客截獲,然後在發送業務數據時就用對稱加密。這樣既保證了安全性也保證了加密速度。
結論:
非對稱加密可以防止黑客截獲加密後的內容,安全性高。
前面都說了非對稱加密是安全的,那為什麼還要數字簽名呢?
設想一下,王五截獲了李四的報價文件,王五雖然無法知道李四的實際報價,但是他完全可以偽造一份李四的報價(文件名: lisi.txt ,文件內容: 報價60萬 ),然後將這份偽造文件用張三公布的公鑰 zhangsan2 進行加密後替換原來的報價文件。張三收到後解密發現報價是60萬,於是張三就以為李四報的價是60萬,最後決定將裝修的活給報價55萬的王五來做。
發生這個問題的關鍵就在於張三無法知道報價文件是否被篡改過。要解決這個問題就需要用到數字簽名。
首先李四需要自己生成一對非對稱加密的秘鑰,私鑰 lisi1 自己保存,公鑰 lisi2 發給張三。然後李四對自己的報價文件通過摘要演算法得到一個摘要(假設摘要是 aaa ),再用自己的私鑰 lisi1 加密這個摘要就得到了報價文件的數字簽名,最後將加密的報價文件和數字簽名一起發給張三,張三收到後先用李四發過來的公鑰 lisi2 解密數字簽名得到摘要 aaa ,然後用自己的私鑰 zhangsan1 解密加密的文件得到報價源文件,然後對報價源文件進行摘要演算法,看計算得到的結果是不是 aaa ,如果不是 aaa 的話就說明報價文件被篡改了。
在這種情況下,如果王五截獲了李四發給張三的文件。王五是無法解密報價文件的。如果王五偽造一份報價文件的話,等張三收到後就會發現報價文件和數字簽名不匹配。那王五能不能偽造報價文件的同時也偽造簽名呢?因為王五沒有李四的私鑰,所以沒法對偽造的報價文件的摘要進行加密,所以也就沒法偽造簽名。
結論:
非對稱加密雖然能確保加密文件內容不被竊取,但不能保證文件不被篡改。數字簽名就是用來驗證文件是否被篡改過。
既然非對稱加密可以保證文件內容的安全性,數字簽名又可以保證文件不被篡改,那還要數字證書有什麼用呢?
我們再來設想一下,王五自己也生成了一對用於非對稱加密的秘鑰,私鑰是 wangwu1 ,公鑰是 wangwu2 。前面李四將自己的公鑰 lisi2 發給張三的過程中被王五給截獲了,王五用自己的公鑰 wangwu2 替換了李四的公鑰 lisi2 ,所以張三最後收到的公鑰實際上是王五的,但張三對這並不知情。後面李四發的數字簽名和加密的報價文件都被王五截獲,並且王五偽造了一份報價文件,同時用自己的私鑰加密報價文件的摘要生成偽造的簽名並發給張三,張三收到後進行驗證發現數字簽名和報價文件是匹配的,就以為這份報價文件是真實的。
出現這個問題的關鍵就在於張三沒法確認收到的公鑰到底是不是李四發的,這個時候數字證書就起到作用了。李四到權威的數字證書機構申請數字證書,證書裡麵包含了公鑰( lisi2 )和公鑰的擁有者( 李四 )等相關信息,然後李四將證書發給張三,張三通過證書裡面的信息就可以知道公鑰到底是不是李四的了。
那證書在發送過程中有沒有可能被王五截獲並篡改呢?要知道證書裡面還包含CA的數字簽名,這個簽名是證書機構用他們自己的私鑰對證書的摘要進行加密的,而公鑰是公開的。所以即便王五截獲並篡改了證書內容,他也無法偽造證書機構的簽名,張三在收到證書後通過驗證簽名也會發現證書被篡改了。所以到這一步才能保證數據傳輸的真正安全。
❷ 加密和簽名的區別是什麼
數字簽名和驗證:發送報文時,發送方用一個hash演算法從報文中產生固定長度的報文摘要,然後利用自己的私鑰對這個摘要進行加密,這個過程就叫簽名。這個加密後的摘要作為報文的數字簽名和報文一起發送給接收方,接收方用發送方的公鑰解密被加密的摘要(報文附加的數字簽名)得到結果A,然後用於發送方一樣的hash演算法從接收到的原始報文中算出報文摘要B。最後,把A和B作比較。如果相同,那麼接收方就能確認該數字簽名是發送方的。加密和解密:發送方利用接收方的公鑰對要發送的明文進行加密,接受方利用自己的私鑰進行解密,其中公鑰和私鑰匙相對的,任何一個作為公鑰,則另一個就為私鑰。
2、數字簽名的功能:
a) 對簽名者進行身份認證;
b) 保證信息的完整性(在交易過程中,沒有被篡改)
c) 防止交易中的抵賴發生(簽名者無法否認信息是由自己發出的)
加密的功能:
a) 重點在於「數據的安全性」,可以防止數據被監聽攻擊。
❸ RSA加密/解密和簽名/驗簽過程理解
加密是為了防止信息被泄露
簽名是為了防止信息被篡改
第一個場景:戰場上,B要給A傳遞一條消息,內容為某一指令。
RSA的加密過程如下:
(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。
(2)A傳遞自己的公鑰給B,B用A的公鑰對消息進行加密。
(3)A接收到B加密的消息,利用A自己的私鑰對消息進行解密。
在這個過程中,只有2次傳遞過程,第一次是A傳遞公鑰給B,第二次是B傳遞加密消息給A,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進行解密,防止了消息內容的泄露。
第二個場景:A收到B發的消息後,需要進行回復「收到」。
RSA簽名的過程如下:
(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。
(2)A給B發送消息,A先計算出消息的消息摘要,然後使用自己的私鑰加密消息摘要,被加密的消息摘要就是簽名.並將簽名和消息本身(簽名原文)一起傳遞給B.(A用自己的私鑰給消息摘要加密成為簽名)
(3)B收到消息後,也會使用和A相同的方法提取消息摘要,然後用A的公鑰解密簽名,並與自己計算出來的消息摘要進行比較-->如果相同則說明消息是A發送給B的,同時,A也無法否認自己發送消息給B的事實.(B使用A的公鑰解密簽名文件的過程,叫做"驗簽")
在這個過程中,只有2次傳遞過程,第一次是A傳遞加簽的消息和消息本身給B,第二次是B獲取A的公鑰,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進行簽名,即使知道了消息內容,也無法偽造帶簽名的回復給B,防止了消息內容的篡改。
但是,綜合兩個場景你會發現,第一個場景雖然被截獲的消息沒有泄露,但是可以利用截獲的公鑰,將假指令進行加密,然後傳遞給A。第二個場景雖然截獲的消息不能被篡改,但是消息的內容可以利用公鑰驗簽來獲得,並不能防止泄露。所以在實際應用中,要根據情況使用,也可以同時使用加密和簽名,比如A和B都有一套自己的公鑰和私鑰,當A要給B發送消息時,先用B的公鑰對消息加密,再對加密的消息使用A的私鑰加簽名,達到既不泄露也不被篡改,更能保證消息的安全性。
總結:公鑰加密、私鑰解密、私鑰簽名、公鑰驗簽。
❹ 加密,簽名,證書概述
加密、簽名和證書概述如下:
加密: 對稱加密:利用相同的密鑰進行加密和解密,如AES和DES。優點在於效率高、加密速度快,適用於需要快速加密大量數據的場合。缺點是密鑰管理較為復雜,一旦密鑰丟失,數據安全性將大打折扣。 非對稱加密:採用一對公鑰和私鑰,公鑰用於加密,私鑰用於解密,如RSA和ECC。主要優點在於提供安全的密鑰交換,確保通信過程中的數據安全,特別適用於密鑰協商。但性能開銷較大,可能導致連接速度變慢。
簽名: 簽名演算法:如RSA簽名,通過摘要演算法對信息進行壓縮,再用私鑰加密生成簽名,以確保信息的完整性和發送者的身份。服務端通過公鑰驗證簽名,確保數據未被篡改。 簽名驗證過程:包括生成、簽名和驗證三個步驟,這一過程確保了信息的完整性和來源的真實性。由於非對稱加密的長度限制,它不適合直接用於加密大量數據,但非常適合用於簽名。
證書: 證書機制:通過引入第三方證書頒發機構,確保公鑰的可信度,防止在網路傳輸中被篡改。證書是公鑰的載體,包含了公鑰、頒發者信息、持有者信息、有效期等。 證書驗證:獲取公鑰時,需通過驗證證書鏈,確保其完整性和有效性。證書鏈中的每一級證書都由上一級證書頒發機構簽發,最終形成一個可信的鏈條,確保公鑰的來源可信。
❺ 加密和簽名的區別
加密是對信息的加密,比如A給B發消息則會使用b的公鑰加密,發送後只能使用B的私鑰才能解密。
簽名,是給信息加個身份,是由誰發送的。一般用私鑰生成。A給B發送,A使用自己的私鑰簽名,B收到後用A的公鑰解密,來確認是不是A發的。
對稱加密:是加密解密使用相同的密鑰。
優使用簡卜薯單快捷高效。
缺加密強度不高,密鑰分發困難
DES採用替換和移位,密鑰56位,每次對64位數據塊加密。
3DES使喚弊鬧用兩個密鑰K1,k2,
加密時k1加密,k2解密,k1加密
解密時k1解密,k2加密,k1解密
rc-5:rsa 數據安全公司很多產品使用了rc-5
idea:密鑰是128位每次對64位數據塊加密。
非對稱加密:一個公鑰一個私鑰
優:解決了加密強度不高,密鑰分發困難的問題
缺:加密速度慢
rsa:512位密鑰,計算量大,難破解。
ecc:橢圓體制曲線密碼
信息摘要:一份長文件的數字指紋,可以用於創建數字簽名
md5 128位散列值
sha 160位散列值
md5+salt
簡單的md5密碼加和罩密,黑客可以通過密碼md5比較,可以輕松試出密碼。
如果加上salt,密碼加密之前拼接上salt,之後再散列。
黑客用自己密碼和salt值試,就很難找到密碼。
❻ 關於CA、簽名、證書、非對稱加密、摘要、公私鑰匙和keystore概念和區別
這幾個概念才接觸密碼學時候理解不是很到位,現在將其理清楚,寫下自己的理解。
公私秘鑰對可以通過一種演算法得到。
公鑰:公開的,都可以拿到的秘鑰。用來加密也用來解密,公鑰加密的信息只能用對應私鑰來解。
私鑰:只有一個持有者,其他人都拿不到。用來加密也用來解密,私鑰加密的信息只有對應的公鑰能解。因為私鑰具有唯一性,可以用來鑒別身份。需要注意的是私鑰的唯一性是針對自己的公鑰來說的。
非對稱加密:過程使用兩把不同的鑰匙加解密,私鑰加密只能用公鑰解,公鑰加密用私鑰解,一般流程為:A生成公私密鑰對,把公鑰給B,B用公鑰加密信息發送給A,A用私鑰解密。
摘要:對任意一組輸入數據通過演算法進行計算,得到一個固定長度的輸出摘要,常見RSA公司的MD5演算法和SHA-1演算法。
簽名:包含兩部分:對所簽信息做摘要運算得到一個結果值,在運用非對稱加密中的私鑰對這個值進行加密(比如app簽名就是對app自身文件做多次摘要,然後私鑰加密,https流程簽名就是對一些企業證書信息做摘要然後私鑰加密)。
證書:公鑰相關信息,其他信息如證書有效期,名稱,最後貼附私鑰簽名的信息,格式普遍採用的是X.509V3國際標准(app中證書指紋,他是簽名工具相關信息的hash值不包括貼附私鑰簽名只會隨簽名keystore變化而變化,app變化時候不會改變,用來配合包名做身份鑒別,常用於app升級和安裝場景)。
keystore:證書庫文件,保存證書信息和公鑰及私鑰(用設置密碼保護私鑰),訪問私鑰要密碼。
CA:第三方可信機構。為什麼https過程中非對稱加密傳輸過程中需要用到第三方可信機構(CA),大家得客戶端都以保存在本地的CA發出來的公鑰解密,就可以確定CA的身份因為CA是唯一的私鑰擁有者,CA做的事就是給合法的服務端證書簽名,所以客戶端鑒定CA的身份後,自然也認為解得CA簽名的伺服器證書是合法的。
注意https中涉及兩對公私密鑰,CA的私鑰用來簽名,其簽名信息用來防篡改,CA公私鑰配合確定CA的是身份。伺服器的公私密鑰用來加解密信息,也用來確定的伺服器身份,其交互的信息用來協商對稱密鑰。
❼ RSA公鑰、私鑰、加密、簽名區別
加密與簽名是兩種信息安全手段,RSA演算法利用一對公鑰和私鑰實現。公鑰是公開的,用於加密信息,確保只有持有私鑰的人能解密,從而保護信息不被竊取,這被稱為加密。相反,私鑰用於簽名,它加密信息以驗證其完整性和發送者的身份,但同時,簽名會暴露消息內容,不提供隱私保護。
為了更安全,推薦採用"一人一對公鑰私鑰"的方法。首先,雙方各自保留自己的私鑰和公開的公鑰。發送者使用接收者的公鑰加密信息(密文A),然後用自己的私鑰對這個密文再次加密(密文B)。接收者收到後,先用發送者的公鑰解密B,確認信息未被篡改,接著用自己私鑰解密A獲取原文。這種方法在保護信息不被第三方竊取的同時,也確保了消息的真實性。
需要注意的是,盡管公鑰可以公開,但私鑰的保密至關重要,因為它是驗證和保護信息完整性的關鍵。通過這種方式,信息的完整性得以保護,但隱私性仍然受到一定程度的影響。