要理解SSL就必須理解密碼系統、消息摘要函數(單向或散列函數)和數字簽名,這些技術是許多文獻所討論的主題(好比[AC96),提供了保密性、完整性和認證的基礎。html
假設Alice想給她的銀行發一個消息以劃轉資金,並但願這個消息是保密的,由於其中含有她的賬號和劃轉金額等信息。一種方案是使用密碼系統,將要 傳輸的信息轉變爲加密形式,從而只能爲但願他讀懂的人讀懂。一旦加密爲這種形式,這條消息也許只能用一個密鑰來破譯,若是沒有,那麼這條信息毫無用處,因 爲好的密碼系統能夠使破譯難度高到***者認爲原文不值得他們花費那麼大的努力。算法
常規密碼:又稱爲對稱密碼,須要發送者和接收者共同持有一個密鑰:一小段用來加密和解密的祕密信息。若是這個密 鑰是保密的,那麼這條消息除了發送者和接受者之外可能沒有人能夠閱讀。若是Alice和銀行共同持有一個密鑰,則能夠互相發送保密信息。可是,私有通信密 鑰的選擇行爲自己,卻可能不是無懈可擊的。apache
公共密鑰密碼:又稱爲不對稱密碼,定義了一種使用兩個密鑰的算法以解決密鑰交換問題,一個密鑰用於加密,另外一個用於解密,從而使簡單公佈一個密鑰(公共的密鑰,簡稱:公鑰)而保留其餘的(私有的密鑰,簡稱:私鑰)以接收保密消息成爲可能。安全
任何人均可以用公鑰加密一條消息,而僅容許私鑰的持有者閱讀。如此,Alice就可能使用公鑰加密其保密消息,發送給私鑰的持有者(銀行),只有銀行可以對它解密。ide
雖然Alice可能加密其消息使它稱爲私有的,但仍應注意到某些人可能會篡改或替換其原始消息,以劃轉資金到他們本身的賬戶。一種保證Alice消息完整性的方法是同時發一個其消息的簡單摘要給銀行,供銀行與消息自己比對,若是相符則消息正確。函數
這樣的方法被稱爲消息摘要、單向函數或散列函數。消息摘要用於對較大並且變長的消息創建較短並且等長的一種表述,其設計使將摘要還原成消息極其困難,並且對兩個不一樣的消息幾乎不可能生成相同的摘要,從而排除了替換一個消息爲另外一個而維持相同摘要的可能性。加密
Alice面臨的另外一個挑戰是要保證摘要發送到銀行的安全,如此,才能確保消息的完整性。設計
一種解決方法是在摘要中包含數字簽名。server
當Alice發送消息到銀行,銀行須要確認此消息的確是她發送的,而不是***者盜用其賬號。爲此,能夠在消息中包含一個由Alice創建的數字簽名。htm
數字簽名是以加密的消息摘要和其餘信息(好比一個流水號)以及發送者的私有密鑰創建的。雖然任何人均可能用公共密鑰解密簽名,可是隻有簽發者知道其私有密鑰,也就是,只有密鑰的持有者才能簽發。包含在簽名中的摘要只對該消息有效,以確保沒有人能夠改變摘要而保持簽名不變。
爲了不簽名往後被***者破譯和再利用,簽名包含有一個流水號。如此,萬一(只是假設)Alice並無發送此消息,雖然她可能真的簽發過,銀行能夠免遭其欺詐性指控。