前言
日常工作中摘投,偶爾會遇到證書相關(guān)的問題煮寡,比如瀏覽器提示證書不可信、證書過期等犀呼。實際上幸撕,我們訪問大多數(shù)網(wǎng)站時,數(shù)字證書都在背后默默的工作外臂。那么杈帐,什么是數(shù)字證書?數(shù)字證書又是如何工作的呢专钉?
信息傳遞交換
日常訪問網(wǎng)站其實就是信息傳遞交換的過程挑童。舉例來說,訪問購物網(wǎng)站跃须,會將賬號站叼、密碼發(fā)送給購物網(wǎng)站,購物網(wǎng)站收到后菇民,會返回給我們用戶信息尽楔、網(wǎng)站頁面等內(nèi)容。在此過程中第练,用戶的賬號密碼阔馋、購物網(wǎng)站的網(wǎng)頁內(nèi)容,這些都是信息娇掏。包括后續(xù)的用戶付款給購物網(wǎng)站呕寝,購物網(wǎng)站返回訂單號這些,也都是信息傳遞交換婴梧。
既然涉及到信息傳遞交換下梢,那么有一個問題就不得不考慮,就是信息的安全性塞蹭。所謂信息的安全性孽江,可以理解成通信雙方交換的信息,不被第三方截獲番电,或者即使被第三方截獲岗屏,但是信息是加密的,第三方也破譯不出原始信息。
其實這個過程我們在電視劇中經(jīng)痴馑ⅲ看到婉烟,首先截獲電文,然后破譯電文密碼崭歧。
互聯(lián)網(wǎng)同樣也面臨著信息安全的問題隅很,解決的方法也很簡單,就是對信息加密率碾。
對稱加密叔营、非對稱加密
對信息加密的方法可以分為對稱加密和非對稱加密兩類,每類又有多個算法支持實現(xiàn)所宰。
加密算法對應(yīng)有專門的密碼學绒尊,不做太多介紹,這里介紹下兩種方法的區(qū)別仔粥。
對稱加密:即消息發(fā)送方婴谱、消息接收方兩者用的密鑰是相同的。消息發(fā)送方用密鑰對信息加密躯泰,消息接收方用同樣的密鑰對信息解密谭羔。
對稱加密所面臨的一個問題是:在雙方通信之前,如何將密鑰傳遞給對方麦向,且不被第三方截獲瘟裸?
非對稱加密:即消息發(fā)送方、消息接收方兩者用的密鑰是不同的诵竭,密鑰分為兩個话告,分別是公鑰和私鑰。以購物網(wǎng)站為例卵慰,購物網(wǎng)站使用密碼學安全偽隨機數(shù)生成器生成一對密鑰沙郭,其中一個為公鑰,一個為私鑰裳朋。私鑰由購物網(wǎng)站自己保管病线,購物網(wǎng)站自己確保私鑰不外泄。公鑰可以發(fā)放給任何用戶再扭。在發(fā)放公鑰的過程中不怕被監(jiān)聽氧苍、截獲。
用戶獲得公鑰后泛范,發(fā)送給購物網(wǎng)站的信息使用公鑰進行加密,購物網(wǎng)站接收到信息后紊撕,使用私鑰進行解密罢荡。同理,購物網(wǎng)站發(fā)送給用戶的信息,使用私鑰加密区赵,用戶收到后,使用公鑰解密。加密和解密使用的密鑰不同浅役,這就是非對稱加密媳危。
注意:使用非對稱加密,用戶發(fā)給購物網(wǎng)站的信息不怕被截獲骡送。因為即使截獲昂羡,截獲者沒有購物網(wǎng)站的私鑰,也不能夠解密出信息摔踱,所以信息是安全的虐先。且公鑰加密的信息,只有對應(yīng)的私鑰可以解密派敷;私鑰加密的信息蛹批,只有對應(yīng)的公鑰可以解密。
這里信息不能解密篮愉,指的是短時間內(nèi)不能解密(在數(shù)以年計的時間內(nèi)不能破解)腐芍。
兩種方法的優(yōu)劣
通過上面的介紹,非對稱加密似乎要比對稱加密更安全试躏,那對稱加密是不是就完全沒用了呢猪勇?
其實不然。因為非對稱加密邏輯上更復(fù)雜冗酿,所以其效率要低于對稱加密埠对。實際應(yīng)用中,通常是兩種方法結(jié)合使用裁替。先使用非對稱加密建立安全通道项玛,然后再使用對稱加密傳遞信息。
數(shù)字證書
使用非對稱加密已經(jīng)足以保證信息安全了弱判,為什么還要引入數(shù)字證書呢襟沮?
考慮一種情況,用戶要訪問購物網(wǎng)站Xd.com昌腰。當用戶在搜索引擎中輸入"X東"开伏,搜索引擎可能會將用戶引入到一個釣魚網(wǎng)站。該釣魚網(wǎng)站有自己的公鑰遭商、私鑰固灵,同時假冒"X東"的名義,將公鑰返回給了用戶劫流。用戶此時得到的是釣魚網(wǎng)站的公鑰巫玻,但是用戶是不知道的丛忆。照樣將自己的信息通過公鑰加密,發(fā)給釣魚網(wǎng)站仍秤;同時熄诡,釣魚網(wǎng)站將信息使用私鑰加密,發(fā)送給用戶诗力。
用戶使用本地的公鑰能夠解密網(wǎng)站返回的信息凰浮,于是認為自己訪問的是真正的購物網(wǎng)站,然后付款苇本,然后就沒有然后了袜茧。。圈澈。惫周。
一段時間之后,用戶發(fā)現(xiàn)自己被騙了康栈,很生氣递递。。啥么。
這就引出的一個問題:用戶如何確認自己所獲得的公鑰真的是購物網(wǎng)站的公鑰呢登舞?由于用戶已經(jīng)被騙過了,即使現(xiàn)在購物網(wǎng)站再三保證悬荣,用戶也不信任購物網(wǎng)站了菠秒。這時候就需要數(shù)字證書了。
其實這一點和生活中的例子非常像氯迂。生活中交易雙方互相不信任時践叠,通常會找一個第三方機構(gòu)來做擔保。雖然交易雙方互相不信任嚼蚀,但是交易雙方都信任擔保結(jié)構(gòu)禁灼,于是將錢和物存放在擔保機構(gòu),由擔保機構(gòu)促進交易完成轿曙。
數(shù)字證書認證機構(gòu)
數(shù)字證書認證機構(gòu)(Certificate Authority弄捕,簡稱CA)充當?shù)慕巧褪菗C構(gòu)。CA是一個非常權(quán)威的角色导帝,無論是網(wǎng)站守谓,還是個人用戶,都信任CA您单,且相信CA的結(jié)果斋荞。CA有自己的公鑰和私鑰,私鑰自己保管虐秦,公鑰公開譬猫。
還是以購物網(wǎng)站"X東"為例讯檐,"X東"生成了公鑰和私鑰羡疗,私鑰自己保存染服,公鑰不直接給用戶(因為給了用戶也不能確認真正的來源),而是將公鑰以及公司信息發(fā)送給CA叨恨。CA負責核實"X東"的真實身份柳刮,如果核實通過,則將公鑰痒钝、公司信息秉颗、到期時間等信息拼在一起,并使用CA自己的公鑰加密送矩,發(fā)送給購物網(wǎng)站"X東"蚕甥。CA發(fā)送給購物網(wǎng)站的內(nèi)容就是數(shù)字證書(digital certificate)。
注意上面的內(nèi)容栋荸,CA有責任也有能力負責核實申請證書者的真實身份菇怀。如果釣魚網(wǎng)站想假冒"X東"的身份,申請證書晌块,是不會審核通過的爱沟。
數(shù)字證書的作用
購物網(wǎng)站從CA獲得了數(shù)字證書,當用戶訪問購物網(wǎng)站時匆背,購物網(wǎng)站不再將自己的公鑰發(fā)送給用戶呼伸,而是將從CA獲得的數(shù)字證書發(fā)送給用戶。
用戶獲得數(shù)字證書后钝尸,使用CA的公鑰對數(shù)字證書進行解密括享。注意,因為CA的數(shù)量比較少珍促,且CA的公鑰都是公開的铃辖,所以客戶端軟件(如瀏覽器)都已經(jīng)內(nèi)置了CA公鑰,或者可以動態(tài)請求獲取踢星、更新CA公鑰澳叉,因此CA的公鑰通常是不能作假的。如果用戶使用CA公鑰能夠解密成功沐悦,說明證書中的內(nèi)容(購物網(wǎng)站的公鑰成洗、過期時間等)是可信的,這樣就能避免使用了偽造公鑰的情況發(fā)生藏否。
后續(xù)的流程就和上面的一樣了瓶殃,用戶通過購物網(wǎng)站的公鑰對信息加密,然后發(fā)給購物網(wǎng)站副签,購物網(wǎng)站使用私鑰解密遥椿;同時基矮,購物網(wǎng)站使用私鑰對信息加密,返回給用戶冠场,用戶使用購物網(wǎng)站的公鑰進行解密家浇。保證了信息的加密性,且保證了信息來源的正確性碴裙。這樣钢悲,用戶就可以愉快的購物了。
以上就是數(shù)字證書的全部內(nèi)容舔株。
后記
網(wǎng)上很多文章在介紹數(shù)字證書時莺琳,也一起講了數(shù)字簽名。但是我在看這兩個知識點時载慈,感覺兩者穿插著理解非常容易混輪惭等。
實際上,雖然數(shù)字證書和數(shù)字簽名都是用非對稱加密办铡,但是兩者的功能是不一樣的辞做。數(shù)字證書是保證了信息的加密性,數(shù)字簽名是保證了信息的完整性料扰。
我理解的數(shù)字證書和數(shù)字簽名的工作流程是這樣的:首先使用非對稱加密創(chuàng)建一條安全通道(這一步用到了數(shù)字證書)凭豪,安全通道建立之后,信息可以明文傳遞晒杈。在傳遞信息時嫂伞,在附加上數(shù)字簽名,保證信息的完整性拯钻。兩者是工作在不同的階段帖努。
完。