數字證書
上面說了這麼多演算法,又是摘要演算法,又是對稱加密演算法,又是非對稱加密演算法的。但是對於通訊中的四種威脅——截獲、中斷、篡改、偽造最多也就只能解決其中的兩個,對於中斷、和偽造威脅,只能乾瞪眼。難道,就沒有其他辦法了嗎。
對於中斷,一般是網路拓撲或協議級別要解決的問題,已經超出了我們的範疇,暫時不表,我們只能做到的是當網路不可用時,傳輸的資料出現丟包或異常時可以進行及時的建設,這裡就需要用到資料完整性的驗證了。
至於,要對付攻擊者「偽造」的威脅,這不僅僅是單一演算法層面可以解決的問題了。
通訊模型
正如上面幾節所說,偽造分為兩種,一種是資料偽造,只要做好防篡改的工作,資料偽造都可以很好的防範。另外一種是偽裝成某一**,與使用者進行互動,盜取使用者的一些信。比較常見的如釣魚**、黑**伺服器等。
哪非對稱加密演算法的通訊模型來舉個例子。客戶端
a在獲得給自己公鑰時,並沒有懷疑與公鑰發出方的身份,客戶端
a以為發給他的依然
b,實際上,
b發出的公鑰已經被攻擊者
c攔截並丟棄了,
c重新生成公鑰偽裝為
b發給了客戶端,後續的流程實際上都是攻擊者
c在於客戶端
a通訊,而客戶端
a則以為與自己通訊的是伺服器b。
這個偽造的過程在平時我們的生活中也經常會碰見,比如:在實名制以前,張三買到火車票後,半路被人打劫,車票被搶。這就有點類似於遭遇了攻擊者的攻擊,攻擊者搶走了張三的火車票(公鑰
gkey
),並偽造了一張可以以將亂真的車票,(重新生成公鑰
gkey』
)使用這張車票上火車。整個過程看似天衣無縫,攻擊者獲得了一張免費的車票,張三損失了一張火車票。
當然,現在這種火車票qiang劫的事件已經不太會發生了,因為已經實行了實名制。實名制的引入,給我們解決上面的「偽造」威脅提供了乙個方案。火車票實名制,使用了身份證作為驗證使用者身份的乙個證明。
ca
正如我們身份證是由可信任的公安局辦發。數字證書也是由權威機構簽發,我們叫做ca,
ca會保證證書的確是發給了應該得到該證書的的人。
ca也屬於乙個機構,他也有被人偽造的風險。所以
ca一般是分級的,頂層的叫做
rootca
,由他保證下面的
ca的身份。
所以我們的機器裡,儲存著有限的幾個
rootca
的機構的公鑰。打個比方,張三有個數字證書,是由a這個
ca機構頒發的,
a的身份由
rootca
rootca
頒發給a
的證書,和
a頒發給張三**的證書。在瀏覽器中儲存著有限個著
rootca
的公鑰。使用
rootca
的公鑰對
a證書進行驗證,驗證通過,使用
a證書裡的公鑰對張三**的證書進行驗證,只有再次驗證通過後,才能說張三**的證書得到了確認。
整個驗證過程是乙個信任鏈。
數字證書裡主要包含著兩樣東西:數字證書所有者的身份資訊,數字證書所有者的公鑰。為了保證證書在網路中通訊不被篡改,證書裡會帶上這些資訊的數字簽名。那麼對數字證書的驗證就是對數字簽名的驗證,這就是上圖中每次證書的驗證都要使用到公鑰的原因了。
加密解密演算法與通訊安全(一)
平時在工作和生活中,我們會經常接觸加密 解密的技術。同時,我們作為開發者,也會經常遇到使用者對資料安全的需求,當我們碰到了這些需求後如何解決,如何何種方式保證資料安全,哪種方式最有效,這些問題經常困惑著我們。那麼我們又會碰到哪些安全的風險的。安全性威脅 一般的,我們在網路中傳輸的資料,都可以認為是存...
加密解密演算法與通訊安全(三)
對稱加密演算法 理論上說對稱加密演算法,才是我們真正說的加密演算法。所謂對稱加密演算法,通俗的講,就是使用金鑰加密,再使用金鑰解密的加密演算法的總稱。也就是平時我們說到加密演算法,腦子裡第乙個跳出來的加密方式一般都是對稱加密演算法。上面將的 base64 其實也是一種 對稱加密演算法 只是其金鑰公開...
加密解密演算法與通訊安全(五)
數字簽名 以上三種演算法都有防篡改的功能,但摘要演算法 和對稱加密演算法若要防篡改,則需要交換金鑰,這又是一件麻煩事兒。所以一般在單純的防篡改的需求上,都是使用非對稱加密演算法。但若是對整個明文進行加密的話,加密過程勢必消耗大量時間,所以就誕生了數字簽名。數字簽名,本質上就是非對稱加密演算法,但出於...