理解SSL必需要理解的密码技术



要理解SSL就必须理解密码系统、消息摘要函数(单向或散列函数)和数字签名,这些技术是许多文献所讨论的主题(好比[AC96),提供了保密性、完整性和认证的基础。html

密码系统

假设Alice想给她的银行发一个消息以划转资金,并但愿这个消息是保密的,由于其中含有她的账号和划转金额等信息。一种方案是使用密码系统,将要 传输的信息转变为加密形式,从而只能为但愿他读懂的人读懂。一旦加密为这种形式,这条消息也许只能用一个密钥来破译,若是没有,那么这条信息毫无用处,因 为好的密码系统能够使破译难度高到***者认为原文不值得他们花费那么大的努力。算法

常规密码:又称为对称密码,须要发送者和接收者共同持有一个密钥:一小段用来加密和解密的秘密信息。若是这个密 钥是保密的,那么这条消息除了发送者和接受者之外可能没有人能够阅读。若是Alice和银行共同持有一个密钥,则能够互相发送保密信息。可是,私有通信密 钥的选择行为自己,却可能不是无懈可击的。apache

公共密钥密码:又称为不对称密码,定义了一种使用两个密钥的算法以解决密钥交换问题,一个密钥用于加密,另外一个用于解密,从而使简单公布一个密钥(公共的密钥,简称:公钥)而保留其余的(私有的密钥,简称:私钥)以接收保密消息成为可能。安全

任何人均可以用公钥加密一条消息,而仅容许私钥的持有者阅读。如此,Alice就可能使用公钥加密其保密消息,发送给私钥的持有者(银行),只有银行可以对它解密。ide

消息摘要

虽然Alice可能加密其消息使它称为私有的,但仍应注意到某些人可能会篡改或替换其原始消息,以划转资金到他们本身的账户。一种保证Alice消息完整性的方法是同时发一个其消息的简单摘要给银行,供银行与消息自己比对,若是相符则消息正确。函数

这样的方法被称为消息摘要、单向函数散列函数。消息摘要用于对较大并且变长的消息创建较短并且等长的一种表述,其设计使将摘要还原成消息极其困难,并且对两个不一样的消息几乎不可能生成相同的摘要,从而排除了替换一个消息为另外一个而维持相同摘要的可能性。加密

Alice面临的另外一个挑战是要保证摘要发送到银行的安全,如此,才能确保消息的完整性。设计

一种解决方法是在摘要中包含数字签名。server

数字签名

当Alice发送消息到银行,银行须要确认此消息的确是她发送的,而不是***者盗用其账号。为此,能够在消息中包含一个由Alice创建的数字签名htm

数字签名是以加密的消息摘要和其余信息(好比一个流水号)以及发送者的私有密钥创建的。虽然任何人均可能用公共密钥解密签名,可是只有签发者知道其私有密钥,也就是,只有密钥的持有者才能签发。包含在签名中的摘要只对该消息有效,以确保没有人能够改变摘要而保持签名不变。

为了不签名往后被***者破译和再利用,签名包含有一个流水号。如此,万一(只是假设)Alice并无发送此消息,虽然她可能真的签发过,银行能够免遭其欺诈性指控。