密码(cipher)
// 密码是一套编码方案和使用相应解码方式的结合体// *明文:使用密码加密之前的称为明文// *密文:使用密码进行加密的称为密文
最初的密码是相当简单的,很容易就可以破解,于是产生了密码机:
// 密码机可以用复杂得多得密码来快速、精确地对报文进行编码.它们可以替换字符、改变字符顺序、将报文切片,总之是密码变得更难破解// *密钥:要在密码机中输入正确地密钥,解密过程才能正确进行
数字密钥与编码函数:
// *数字密钥只是一些数字,这些数字密钥值是编 / 解码算法的输入// *编码算法就是一些函数,这些函数会读取一块数据,并根据算法和密钥值对其进行编 / 解码// 给定一段明文P、一个编码函数E和一个数字编码密钥e,就可以生成一段经过编码的密文C// 通过解码函数D和解码密钥d,可以将密文C解码为原始的明文P
对称密钥加密技术:
// 在上文中使用的e和d是相等的// 即,编码和解码使用的是同一个密钥的技术,称为对称密钥加密技术
对称密钥加密技术的一个不好地方在于:如果有N个人同时想与服务器进行对话,需要N*N个保密密钥,这样管理起来特别困难.
一个更好一点的方案是,使用公开密钥加密技术:
// 公开密钥加密技术// 编码密钥是众所周知的// 解码密钥在各个主机中式不同的// 这样,每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单.// 但解码密钥是保密的,因此只有接收端才能对发送给它的报文进行解码
数字签名:
// 数字签名是附加在报文上的特殊加密校验码.// 当节点A向节点B发送一条报文时,节点A对摘要应用了一个签名函数,这个函数用户的私有密钥作为参数,计算出签名// 一旦计算出签名,节点A就将其附加在报文的末尾,并将报文和签名都发送给B// 节点B接收到报文后,就使用公开密钥的反函数对签名进行解码,并拆包报文得到摘要进行比较
数字证书:
// 数字证书中包含了由某个受信任组织担保的用户或公司的相关信息// 数字证书中一些常见的内容:对象的名称、过期时间、证书发布者、来自证书发布者的数字签名// 服务器证书中包括:Web站点的名称和主机名、Web站点的公开密钥、签名颁发机构的名称、来自签名颁发机构的签名// 通过HTTPS建立了一个Web事务后,现代浏览器会自动获取所链接服务器的数字证书// 浏览器在收到证书时,会对签名办法机构进行检查,若是很有权威的公共签名机构,就进行签名验证// 若对签名颁发机构一无所知,浏览器就会向用户显示一个对话框,看看他是否相信这个签名发布者.
参考《HTTP权威指南》P327~P338