加密算法
国密算法
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
对称加密算法
- 分组加密算法
在数据固定长度的小分组上进行加密
- DES 64位分组 56位秘钥长度
- 以现在计算机的水平,是可以破击的,强穷力枚举
- RC2 比DES快,目标是替换DES 比DES要快2-3倍
- RC5 64位或128位分组,支持可变长度的密钥,密钥长度最多为2048位
- RC6
- AES 高级加密标准
- 序列加密算法
在单个的数据上进行运算加密
- RC4:非常快,比所有的分组密码都快,支持可变长度的密钥
- 优缺点
- 同一个密钥既可以加密也可以解密
- 对称加密速度很快
- 对称加密是安全的
- 对称加密得到的密文是紧凑的
- 因为接收者需要得到对称密钥,所以对称加密容易受到中途拦截窃听的攻击(即先建立一次连接发送对称密钥)
- 对称密码技术不适用于数字签名和不可否认性
非对称加密算法
具体比较课参考如下地址:https://www.jianshu.com/p/557545bd97ca
- RSA算法是最为成功的公/私钥密码算法
- RSA 算法是由美国三位科学家 Rivest、Shamir 和 Adleman 于1976年提出并在1978年正式发表的公开密码加密算法,其命名取自三位创始者的首字母缩写。该算法基于数论中的大数分解难题,即:根据数论,寻求两个大素数比较简单,而将它们的乘积分解开则极为困难。
- ECC 椭圆曲线密码算法
- ECC在计算上比RSA简单,用比较小的密钥就可以达到和使用较大的RSA密钥同等水平的安全性
- ECC 是椭圆曲线密码 (Elliptic Curve Cryptography) 的缩写。1985 年, Koblitz 和 Miller 提出基于椭圆曲线离散对数问题 (ECDLP, Elliptic Curve Discrete Logarith Problem) 的公钥密码体制,即 椭圆曲线密码体制 ECC 。 它是用椭圆曲线有限群代替基于有限域上离散对数问题公钥密码中的有限循环群所得到的一类密码体制。由于在一般的椭圆曲线群中没有亚指数时间算法解,所以椭圆曲线密码成了目前最流行的公钥密码体制。
- SM2
- SM2 算法由国家密码局于2012年12月17日发布的椭圆曲线公钥密码算法,主要满足电子认证服务系统等应用需求
- 优缺点
- 使用非对称密码技术时,用一个密钥(公钥或私钥)加密的东西,只能用另外一个密钥(私钥或公钥)来解密
- 非对称加密时是安全的
- 因为不必发送密钥给接收者,所以非对称加密不必担心必要被中途拦截的问题
- 需要分发的密钥的数目和参与者的数目一样,这样,在参与者数目很多的情况下,非对称密码技术仍然会工作的很好
- 没有复杂的密钥分发问题
- 不需要事先在各参与方建立关系以交换密钥
- 支持数字签名和不可否认性
- 加密速度相对比较慢
- 加密会导致得到的密文变长
- 密文长度要大于明文长度
各种密钥算法比较(RSA实验室做的实验比较)
各取所长
- 对称加密
- 速度快
- 密文紧凑
- 非对称加密
- 不需要事先建立连接
- 简化密钥管理
- 抗窃听
- 支持数字签名和不可否认
- 应用
- 数字信封
- 描述:即使用对称加密算法,又使用非对称加密算法
- 描述:发送方使用接收方的公钥对对称密钥进行加密,接收方用自己的私钥对收到的信息进行解密,得到对称密钥,再使用对称密钥对通信过程中的数据进行加密
- 意义:非对称加密算法确保了对称密钥的安全性,对称加密确保了传输过程中加解密的速度(非对称加密的解密速度要比对称解密的速度慢,消耗的系统资源也更多)
- 缺点:黑客侵入我的电脑,加密随机字符串,发送给接收方
散列函数(摘要算法)
- 作用
- 可以保证数据的完整性(也称为消息摘要)
- 描述
- 接受一大块得数据并将其压缩为最初数据的一个指纹或者摘要()
- 原理
- 将发送数据进行散列计算,得到一个散列值,将原数据和散列值一同发往对端,对端收到后,同样对原数据进行散列,将本地得到的散列值与收到的散列值进行比对,若一致,则证明数据没有被修改
- 常见算法
- MD5
- 产生128位摘要,针对32位处理器做了优化
- MD2
- 产生128位摘要,针对低端8位处理器做了优化
- SHA1
- 产生160位摘要,针对高端处理器做了优化
- 优点
- 无法反向执行散列算法来恢复最初的明文
- 摘要不会告诉你任何关于最初明文的信息
- 即使明文只变动了一位,散列算法计算出的摘要也会有所不同。散列函数的这种检查明文中微小变动的能力使得他们对于检查报文完整性非常有用。
- 应用
数字签名
散列算法结合非对称加密
- 描述
- 对明文进行哈希散列值用本地私钥进行加密就是数字签名
- 描述
- 对一个数据块进行散列算法得到散列函数,用发送方的私钥对散列值进行加密(用私钥是为了验证数据合法来源,因为不可以被伪造,用发送方的公钥可以将数据进行解密,则证明是来自发送方的数据),然后将加密后的散列值和原数据块(这两部分一般采用对称加密算法,用对称密钥加密,用对称密钥解密)一起发送给接收方,接收方用对称密钥对数据进行解密得到原数据包和加密后的散列值,再用发送方的公钥对加密的散列值进行解密,将解密的散列值和自己对原数据进行散列算法得到的散列值进行比对,若一致则可以认为数据没有被更改
- 缺点
- 无法确保一个特定的公钥属于一个特定的人
数字证书
为什么会出现数字证书
- 前面介绍的几种算法都用到了公钥,那么公钥的来源的可靠性就成为了通信安全中非常重要的一个环节,不法分子可以通过使用假的或者不合法的公钥对安全产生映像,所以需要一个机制来对公钥的来源和可靠性进行支持,数字证书就是这样一种机制,来证明公钥的可靠性
是什么
- 数字证书简称证书,它是一个经证书授权中心CA数字签名的文件,包含拥有者的公钥及相关身份信息。数字证书技术解决了数字签名技术中无法确定公钥是指定拥有者的问题。
目的
- 担保特定公钥是和特定的人相关联的
描述
- 列出了公钥的所有者是谁,而且还包含了该用户公钥的一份拷贝,然后一个可信的权威机构就对上面所有东西签名(签名即:计算整个证书的散列值,然后用那个可信权威机构的私钥对这个散列值进行加密)
验证
- 用那个可信权威机构的公钥来验证证书上的签名
数字证书结构
证书的各字段解释:
- 版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
- 序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
- 签名算法:颁发者颁发证书使用的签名算法。
- 颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
- 有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
- 主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
- 公钥信息:用户对外公开的公钥以及公钥算法信息。
- 扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
- 签名:颁发者用私钥对证书信息的签名。
PKI(公钥基础设施)
主要任务就是确立可信赖的数字身份
创建可信赖的身份的就是要找到某个完全信任的人挥着机构,让他们来正式身份
认证机构(CA)
- 负责创建或者证明身份的可信赖的权威机构
- 对申请注册证书的申请者的身份的验证以及颁发可用于证明该身份的数字证书
- 有能力撤销证书并且通知证书使用者该证书已被撤销
使用证书的应用
- 安全套接字层
- 安全的电子邮件
- 虚拟专用网络
为什么需要公钥基础设施
提供了实际实施和运作使用证书的系统。pki必须处理下面这些问题:
- 好密钥的安全生成
- 初始身份的确认
- 证书的颁发、更新和终止
- 证书有效性的检查
- 证书和相关信息的分发
- 密钥的安全存档和恢复
- 签名和时间戳的产生
- 信任关系的建立和管理
PKI最终必须完美地集成到业务应用中,甚至于使业务应用的用户完全感觉不到它的存在
公钥基础设施的组件
认证机构
- CA负责确认身份和创建数字证书以建立一个身份和一对公/私钥之间的联系
注册机构(RA)
- RA负责申请者的登记和初始鉴别
证书服务器
- 证书服务器负责根据注册过程提供的信息生成证书的机器或者服务
证书库
- 在投入使用之前,证书和响应的公钥需要公布出不去。证书库通常是发布证书的地方。
证书验证
- 验证证书签名者的签名
- 检查证书的有效期,确保该证书仍然有效
- 检查该证书的预期用途是否符合CA在该证书中指定的所有策略限制
- 确认该证书没有被CA撤销
密钥恢复服务
- 丢失可以恢复
时间(时间戳)服务器
签名服务器
- 生成数字签名
密钥和证书生命周期管理
- 证书颁发
- 密钥要用多久
- 数学攻击
- 密钥被暴露
好的习惯建议定期更细密钥。这是证书提供有效期的一个原因,因为证书过期经常于生成一个新色密钥相关联
- 证书撤销
- 密钥泄露之类的事件,必须有一个方法来警告CA用户的的私钥已经被泄露
- CA用来公布已更改的证书状态的机制是一个撤销证书列表(CRL),证书撤销列表包含已被撤销证书的序列号与车i下日期,还有标识撤销原因的状态。
- 证书验证
- 证书必须包含一个有效的数字签名,确保证书内容没有被修改
- 颁发者的公开密钥败必须可以用来验证证书的数字签名
- 证书有效期
- 认证路径
- 比较理想的世界,建立单一认证机构,由他颁发所有证书。从使用角度看,单一的大型CA可能也不是合理的,管理工作过于繁忙
- 事实上,CA越分散,越接近它需要认证的实际用户就越好。
- 证书层次
- 密钥类型
- 加密密钥
- 数字签名密钥
格式标准
X.509
l两个PKI应用程序之间要想进行交互,只有互相理解对方发来得数据大的比特含义才行。标准提供了数据语法和语义得共同约定。X.509作为最流行得PKI应用格式标准,定义了公钥证书的基本结构