本文内容主要摘抄网络规划设计师的教材和腾讯-SUMMER课堂,主要对网络安全进行简单梳理和总结
密码分为私钥和公钥密码两种,而介于私钥和公钥只见密码成为混合密码。
私钥密码又称为对称密码,该体制的特点是加密和解密使用相同的密钥。消息的收发双方必须事先通过安全渠道交换密钥
优点:加解密速度快,密文紧凑,使用长密钥时难破解。
缺点:密钥分配问题,密钥管理问题,无法认证源。
常见的对称密钥加密算法如下:DES,3DES,AES,RC4/5,IDEA
DES | Data Encryption Standard,数据加密标准,分组加密算法 采用移位+替换,速度快,密钥易产生。 | 分组长度64位,密钥长度64位,有效密钥长度56位 |
3DES | 三重DES(TDEA),使用DES对明文进行“加密-解密-加密”操作。 • 加密:K1加密→K2解密→K3加密 • 解密:K3解密→K2加密→K1解密 一般K1和K3是相同的密钥。 | 密钥长度112位 |
IDEA | International Data Encryption Algorithm,国际数据加密算法, 分组加密算法。设计思想:混合使用来自不同代数群中的运算。 | 明文和密文分组都是64位,密钥长度为128位,用于PGP |
AES | Advanced Encryption Standard,高级加密标准。 可以通过硬件实现,速度快,像3DES一样安全。 | 分组长度128位,支持128,192和256三种密钥长度 |
RC4/5 | 流加密算法,用于WIFI。加密速度快,可达到DES的10倍。 | 分组和密钥长度都可变 |
公钥密码又称为非对称加密,对数据加密和解密的密钥是不同的。
优点:密钥分发方便,密钥保管量少,支持数字签名。
缺点:加密速度慢(计算量大,不适合加密大数据),数据膨胀率高
常见的非对称加密算法如下:
RSA:512位密钥,计算量极大,难破解。(基于大素数因子分解困难性)
Elgamal,ECC(椭圆曲线算法),背包算法,Rabin,DH等。(基于离散对数问题困难性)
注:数据膨胀率高代表加密完数据比原来数据量大很多,例如1T数据加密完变成3T数据量
混合密码:发送方用对称密钥加密需要发送的消息,再用接受方的公钥加密对称密钥,然后一起发送给接收方,接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文。
《中华人民共和国密码法》密码分为核心密码、普通密码和商用密码,实行分类管理。
• 核心密码、普通密码用于保护国家秘密信息,属于国家秘密,由密码管理部门依法实行严格统一管理。
• 商用密码用于保护不属于国家秘密的信息,公民、法人可用。
国产密码算法:是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法,目前已经公布的国产密码算法如下:
算法名称 | 算法特征描述 |
SM1 | 对称加密,分组长度和密钥长度都为128比特 |
SM2 | 非对称加密,用于公钥加密算法,密钥交换协议,数字签名算法 (椭圆曲线问题) |
SM3 | 杂凑算法(哈希),分组512位,输出杂凑值长度为256位 |
SM4 | 对称加密,分组长度和密钥长度都为128比特 |
SM5 | 标识密码算法,支持公钥加密,密钥交换,数字签名等安全功能 |
HASH函数,又称为杂凑函数、散列函数,它能够将任意长度的信息转换成固定长度的哈希值(数字摘要),并且任意不同消息或文件所生成的哈希值是不一样的。
h表示hash函数,则h满足下列条件:
• (1)h的输入可以是任意长度的消息或文件M。
• (2)h的输出的长度是固定的。
• (3)给定h和M,计算h(M)是容易的。
• (4)给定h的描述,找两个不同的消息M1和M2,使得h(M1)=h(M2)是计算上不可行的。
哈希函数特性:不可逆性(单向)、无碰撞性 、雪崩效应 。
常见的Hash算法有:
• (1)MD5算法:以512位数据块为单位来处理输入,产生128位的信息摘要。常用于文件校验。
• (2)SHA算法:以512位数据块为单位来处理输入,产生160位的哈希值,具有比MD5更强的安全性。
• (3)SM3国产算法:消息分组长度为512比特,输出256位摘要。
应用场景1-文件完整性校验:
只要文件有缺失或者增加都会导致散列值不同,就能知道目标文件是否被篡改过。
应用场景2-账号密码存储
如数据库存储密码是存储hash值而非密码,通过hash值是不可逆的,所以无法从hash值反推原始密码,但是还是可以通过彩虹表攻击(彩虹是存储了常见的hash值对应密码的一个表),通过匹配来得到原始密码。所以才有了盐+哈希的方式,原理是通过原始密码+一个很小固定值得出hash值,相比于直接使用原始密码得出hash值来说,由于hash特性雪崩效应,一点微小值都会导致整个hash值变化,彩虹表查询方式就失效了。
应用场景3-身份认证
这个场景有点像第二场景中的盐+哈希,只不过场景2是在存储中,场景3是在通信过程中,不传递明文,而是传输hash值对身份进行认证。
在计算机世界通过数字签名来实现同样的功能。签名方用自己的私钥进行签名,对方收到后,用签名方的公钥进行验证。数字签名是用于确认发送者身份和消息完整性的一个加密消息摘要,具有如下特点:
常用的签名算法是RSA,采用发送者私钥签名,接收方收到数据后,采用发送者的公钥进行验证。可以直接对明文进行签名,由于明文文件可能很大,这种签名方案效率低。所以也可以先由明文生成Hash(比如MD5生成128位),再对Hash值进行签名,效率更高。
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。
它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
1、用户/终端实体:指将要向认证中心申请数字证书的客户,可以是个人,也可以是集团或团体、某政府机构等。
2、注册机构RA:负责受理用户申请证书,对申请人的合法性进行认证,并决定是批准或拒绝证书申请。注册机构并不给用户签发证书,而只是对用户进行资格审查。较小的机构,可以由CA兼任RA的工作。
3、证书颁发机构CA:负责给用户颁发、管理和撤销证书。
4、证书发布系统:负责证书发放,如可以通过用户自已或是通过目录服务。
CRL库:证书吊销列表,存放过期或者无效证书。
例如这个场景,发送方的Alice想要和接收方Bob进行通信,因为Bob提供某种服务,所以不单单是Alice可能很多人都想和Bob通信,但是这个过程中这么多人包括Alice如果才能确信自己是和真正的Bob进行通信是个问题?
所以数字证书作用就体现出来了,如果Bob有权威机构颁发的数字证书,那么Alice和其他人就会信任Bob的数字证书,然后拿取证书里面的Bob公钥进行加密,Bob收到信息后用自己私钥进行解密。
上面所述的场景最经常用的是浏览器访问某个网站如下图,浏览器会内置很多CA证书,当浏览器访问服务器时候,服务器会返回相应证书,浏览器会验证证书的合法性(涉及到证书链,下文会提到),然后验证通过了就会利用证书里面公钥加密后续通信消息,服务器会利用私钥解密通信消息。
实际上服务器和浏览器交互过程中,只在通信协商阶段会经历浏览器公钥加密,服务器私钥解密,通信协商阶段会商量对称密钥,便于后续数据通信,因为对称加密速度快,而如果数据通信用非对称加密就有前面说的加密速度慢,数据膨胀率高的问题。
准确来说,服务端所返回证书不是一个单一的证书,而是一组有序的证书,称为证书链。证书链由终端证书开始,然后是签署颁发该终端证书的中间CA证书,再然后是签署颁发前一个中间CA证书的另一个中间CA证书…中间CA证书的数量可以是0个到多个,一直链接下去,在证书链的末端,是根证书。当然这边根证书可以有也可以没有。
浏览器就会一级一级的向上查找知道找到最终的根证书,匹配信任的根证书列表,如果匹配就信任该证书,匹配规则参考ThinkStu博客的图片:
网络规划设计师教材
腾讯SUMMER课堂