文章目录
目录
文章目录
一. 网络安全概述
二. 密码学原理
三. 报文完整性和数字签名
密码散列函数
报文鉴别码
数字签名
公钥认证
四. HTTPS通信
总结
一. 网络安全概述
网络安全是保护计算机网络及其数据免受各种威胁和攻击的实践和技术。随着互联网的普及和数字化转型的加速,网络安全的重要性日益凸显。主要的问题有:
- 恶意软件:包括病毒、蠕虫、木马和勒索软件,旨在破坏或窃取数据。
- 网络钓鱼:通过伪装成可信实体来诱骗用户提供敏感信息。
- 拒绝服务攻击(DDoS):通过大量流量使目标网络或服务瘫痪。
- 内部威胁:来自组织内部的员工或合作伙伴的恶意行为。
考虑了上述问题后,我们能够指出安全通信(secure communication)具有下列性质。
二. 密码学原理
密码技术使得发送方可以伪装数据,使入侵者不能从截取到的数据中获得任何信息。
现在假设小红要向小黄发送一个报文,报文的内容可以是任意的,报文刚开始的形式称为明文(plaintest)。小红使用加密算法对明文进行加密,生成的加密报文成为密文。该密文对任何入侵者(例如: 小黑)来说都是难以理解的。有趣的是,在许多现代系统中,加密技术是公开的,这就代表我们使用加密算法进行加密的内容有可能被入侵者进行截取并解密。显然,如果任何人都知道数据编码的方式,那么就一定有一种秘密信息可以阻止入侵者解密被传输的数据,这些秘密信息就是秘钥。
在上图中,小红提供了一个秘钥(key)K,它是一串数字或者字符,作为加密算法的输入。加密算法以秘钥和明文m(message)作为输入,计算得到密文K(m),同样的小黄使用秘钥K对密文进行解密K K(m)=m。如果这两个秘钥是同一个秘钥,我们将其称之为对称密钥系统,反之我们将其称之为公开秘钥系统。
特性 | 对称加密 | 非对称加密 |
---|---|---|
密钥数量 | 1(相同密钥) | 2(公钥和私钥) |
加密速度 | 快 | 慢 |
密钥管理 | 复杂(需要安全共享密钥) | 简单(公钥可公开) |
主要用途 | 数据加密 | 身份验证、密钥交换 |
假如小红和小黄要进行通信。如上图所示,使用的是非对称加密方式,我们使用和来表示小黄的公钥和私钥,为了和小黄进行通信,小红首先需要得到小黄的公钥,然后使用这个公钥和一个众所周知的加密算法,加密他要传递的报文,我们将其表示为K+(m)。 当小黄收到加密报文之后可以使用私钥和一个解密算法对报文进行解密,我们将其表示为K-K+(m)。公钥和私钥进行交换同样可以得到相同的结果,即K+K-(m)=K-K+(m)=m。
尽管公钥密码很吸引人,但是我们不得不考虑一个问题,既然小黄的加密秘钥是公开的,就表明任何人(可能是小红也可能是小红的假冒者)都可以给小黄发送一个已经加密的报文。这个问题就需要使用数字签名把发送方和报文绑定起来。
三. 报文完整性和数字签名
我们再次使用小红和小黄来定义报文完整性的问题。加入小黄收到了一个报文(加密或者明文),并且小黄认为这个报文是小红发来的。为了鉴别这个报文,小黄需要证实。
1)该报文来自小红
2)报文没有在传输过程中没有被修改。
密码散列函数
密码散列函数(Cryptographic Hash Function)是一种将任意长度的输入数据(消息)转换为固定长度的输出(散列值或哈希值)的函数。它在信息安全中扮演着重要角色,主要用于数据完整性验证和密码存储。
对于找到任意的两个不同的报文x和y使得H(x)和H(y)相等,在计算上是不可能的。
报文鉴别码
现在我们再次回到报文完整性的问题上面。看看报文是如何基于散列函数执行报文完整性的。
1)小红生成报文m并计算得到H(m)
2) 随后小红将H(m)附到报文m上,生成一个扩展报文(m,H(m)),并将扩展报文发送给小黄.
3) 小黄接到扩展报文(m,h)并计算H(m)。如果H(m)=h,则表明一切正常。
这种方法是存在缺陷的,显而易见的是,小黑可以生成虚假的(m`,H(m)`), 并声称他就是小红,并且小黄还无法进行识别。
为了执行报文完整性, 除了使用密码散列函数之外,小红和小黄还需要共享秘密s。这个s只不过是一个比特串,它被称为鉴别秘钥(authentication Key)。使用这个共享秘密s,报文完整性能够执行如下
1)小红生成报文m,用s级联m生成m+s,并计算散列H(m+s),H(m+s)被称为报文鉴别码(Message Authentication Code,MAC)。
2)之后小红将MAC附加在报文m上,生成扩展报文(m,H(m+s)),并将扩展报文发送给小黄。
3)小黄收到扩展报文(m,h),由于知道s,计算得出报文鉴别码H(m+s),如果MAC=m,小黄则表示一切正常。
这里遗留下了一个非常重要的问题。如何向通信双方的实体发送这个共享的鉴别秘钥?
数字签名
数字签名是一种用于验证信息完整性和身份认证的加密技术。它通过使用公钥基础设施(PKI)来确保消息的来源和内容未被篡改。我们可以通过私钥来对报文进行加密,通过公钥对报文进行解密。
使用数字签名对报文进行加密加密的其实并不是报文,因为加密和解密的代价非常昂贵。更有效的方法是将散列函数引入数字签名。使用散列函数代替报文进行加密。虽然数字签名是一种“技术含量更高”的技术,但是接收方还是需要先拿到发送方的公钥才可以进行解密。因此引出了具有认证中心支持的公钥基础设施(PKI)。
公钥认证
数字签名的一个重要应用就是公钥认证(public Key certification),即证实一个公钥属于某个特定的实体。看一下下面的场景
- 一群朋友决定给其中一个朋友(比如Charlie)开一个玩笑。他们在没有Charlie知道的情况下,大家同时用自己的手机给Charlie的家下单大量的披萨,可能是几百块钱的订单。
- 当送货员到达时,Charlie会被突然的“披萨派对”吓到,发现他并没有下单,反而有许多朋友在场引发一阵笑声。
这种情况就是charlie的公钥被冒充了。
将公钥与特定实体绑定通常是由认证中心(Certification Authority)CA完成的,CA的职责就是识别和发行证书合法化。一旦CA验证了某个实体的身份,这个CA会生成一个将其身份和实体的公钥绑定起来的证书。这个证书包含了这个公钥和公钥所有者全局唯一的身份标识信息。
四. HTTPS通信
总结
以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!