一、 密码学发展

密码学就是一种将公开信息转化为秘密信息的技术或者方法,简单地说,密码学是研究密码设计和密码破译的科学。加密是密码学中最重要的技术方法之一,它是从古至今的一种保密通信的技术手段。

1. 古代保密之术
  1. 阴书姜太公发明的阴书,以八个不等长度的符契来表达不同的指令。阴书把书分为三份,分三人传递,只有把三份重新拼合才能获得原来的信息。后来演化成皇帝和大将各执一半的虎符,作为调兵遗将的凭证,在后来的战争通信中被广泛使用。
  2. 古代藏头诗《水浒传》“吴用智赚玉麒麟”,军师“智多星”吴用,利用卢俊义正为躲避“血光之灾”的惶恐心理,给卢俊义算了一卦并写了四句卦歌:“芦花丛中一扁舟,俊杰俄从此地游。义士若能知此理,反躬难逃可无忧”。巧妙地把“卢俊义反”四个字藏于四句卦歌之首。
  3. 戚继光的反切密码戚继光使用两首诗作为密码本,破解非常复杂。
  4. 公元前480年 希腊人用蜡遮盖军事情报。
  5. 公元前440年古希腊战争中,用一种“光头刺字”的隐写术来传递情报。
  6. 雅典和斯巴达战争中腰带密码。
  7. 恺撒密码,使用替换、换位的方式加密。
2. 近代密码学发展
  1. 恩尼格玛机德国人在二战时期发明的标志性技术,由德国发明家谢尔比乌斯和里特于1918年制造,它表面上像一台普通的打字机,由三部分组成:键盘、转子和显示器,破译难度史无前例。这种机器最初只被用于商业,由于军事需要,德国很快就将其应用于军事通信。二战爆发后,恩尼格玛机被德国军事部门广泛采用,德国称之为“永远无法破译的超级密码”。

https安全加密通道原理(HTTPS安全通讯学习1.)(1)

  1. 1928年,盟军截获一台恩尼格玛机,波兰并于1932年得到破译方法。1937年,德国对恩尼格玛机进行了修改,1940年图灵制造出一台“图灵炸弹”,最终成功地破译了恩尼格玛。 后来人们都普遍认为盟军在二战的胜利能够提前两年,完全归于恩尼格玛机被成功地破译。
  2. 中国破译专家池步洲破译日本密电中国著名的密码破译专家,1941年12月3日,截获了一封日本发给其驻美大使的密电,通过破译认为日本可能在周日袭击珍珠港。蒋介石立即向美国通报,但美国人没有信任,付出了惨痛的代价。1943年4月18日,指挥偷袭珍珠港的日本海军大将山本五十六,时任日本联合舰队的司令长官,与其他日本高级军官乘坐2架飞机、6架战斗机到太平洋前线巡视。池步洲再次破译了此次军事行动的情报,美军派出16架战斗机袭击,山本五十六在袭击中死亡。
  3. 考文垂之痛1941年11月14日,德国空军晚上袭击考文垂。英国首相丘吉尔决定不予以保护,以防止德军知道其恩尼格玛被破解的密码。
  4. 1945年9月1日,香农完成了内部报告《密码术的一个数学理论》,1949年公开发表。此论文首次将密码学和信息论联系到一起,为对称密码技术提供了数学基础。
  5. 1976年11月,Whitfield Diffie 和 Martin E.Hellman 在 IEEE Transactions on Information Theory 上发表了论文《New Directions in Cryptography(密码学的新方向)》,开创了现代公钥密码学体系的研究。
  6. 1977年,美国国家标准局确定DES数据加密标准为联邦资料处理标准。
  7. 1981年,费曼提出量子计算概念。
  8. 1984年,提出BB84协议,结合量子通道和公开信道,可以实现安全的密钥分发。
  9. 1994年,基于量子计算的Shor算法出现,理论上可以实现远超经典计算速度的大数因子分解。
  10. 1999年科索沃战争。南联盟使用多种计算机病毒,实施网络攻击,使北约军队的一些网站被垃圾信息阻塞,北约的一些计算机网络系统曾一度瘫痪。美国中曲情报局利用互联网彻底干扰了南联盟的军、警和秘密警察通讯网,南联盟的指挥系统一片紊乱。中央情报局还精心设计了一种被称为“AF-99”的计算机病毒,直接侵入了米洛舍维奇的电脑系统。网络信息战随后在阿富汗战争、科索沃战争和伊拉克战争中大显身手。
  11. 2014年2月27日中央网络安全和信息化领导小组宣告成立。
  12. 2016年3月,Shor算法首次完成对数字15的质因数分解。
二、数论

数论是纯粹数学的分支之一,主要研究整数的性质。整数可以是方程式的解(丢番图方程)。有些解析函数(像黎曼ζ函数)中包括了一些整数、质数的性质,透过这些函数也可以了解一些数论的问题。透过数论也可以建立实数和有理数之间的关系,并且用有理数来逼近实数(丢番图逼近)。按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论、计算数论等等。——百度百科

哥德巴赫猜想(1742年),每一个大偶数都可以写成两个素数之和,我们称之为“1 1”。目前这个猜想尚未被证明。

1966年陈景润发表论文《大偶数表为一个素数与不超过两个素数乘积之和》,即“1 2”。

水仙花数一个具有n(≥3)位数字的整数,它等于每个数字的n次幂之和,如:

https安全加密通道原理(HTTPS安全通讯学习1.)(2)

回文素数如13和31,这两个素数正好是个位数与十位数对换的结果。在数论中,这样的两个素数就是回文素数。

模余运算12/3和12/-9的余数是一样的,模余运算用mode表示,即

https安全加密通道原理(HTTPS安全通讯学习1.)(3)

同余*对于两个整数a和b,给定一个整数n,如果n分别除以a和b的余数相同,那么称a和b关于模n同余,记为a ≡ b(mod n)。同余的充要条件是:

https安全加密通道原理(HTTPS安全通讯学习1.)(4)

https安全加密通道原理(HTTPS安全通讯学习1.)(5)

自反性:即自己和自己同余,即a≡a(mod n)对称性:若 a≡b(mod n),则b≡a(mod n)传递性:若 a≡b(mod n),且b≡c(mo n),则a≡c(mod n)

同余加法:若 a≡b(mod n),c≡d(mod n),那么:a c ≡ b d(mod n)ac=bd(mod n)

素数判定问题

方法1

根据定义,要判定19是不是素数,可以用2到8的所有整数去除19,而2到18所有的整数都不能整除19,所以19是素数。

方法2

用2到根号下19的所有整数去除19,这样可以更快地判定19是素数。

威尔逊定理

整数n是素数的充要条件是(n-1)! 1 ≡ 0 (mod n)

梅森素数

形如 2p-1的素数,其中p是素数,如:

https安全加密通道原理(HTTPS安全通讯学习1.)(6)

梅森素数被人们誉为“数海明珠”,寻找难度极大。1999年3月设在美国的电子新领域基金会(EFF)向全世界宣布了为通过“因特网梅森素数大搜索”项目(GIMPS),来寻找新的更大的梅森素数而设立的奖金。

米勒-拉宾素性判定

目前在整数素性检测的较好办法,基于概率判定方法。但判定结果具有概率性的,不是确定的。

欧拉函数

对于整数n,在n以内并与n互素的整数个数,记为:φ(n),如:

https安全加密通道原理(HTTPS安全通讯学习1.)(7)

如果n是素数,则φ(n)=n-1

欧拉定理

设n>2,且(a,n)=1,则aφ(1) ≡ 1 (mod n)

费马定理

如果p是素数,则ap-1 ≡ 1 (mod p)

孙子定理

中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。

https安全加密通道原理(HTTPS安全通讯学习1.)(8)

解:

https安全加密通道原理(HTTPS安全通讯学习1.)(9)

三、 群论与有限域

在数学和抽象代数中,群论研究名为群的代数结构。群在抽象代数中具有基本的重要地位:许多代数结构,包括环、域和模等可以看作是在群的基础上添加新的运算和公理而形成的。群的概念在数学的许多分支都有出现,而且群论的研究方法也对抽象代数的其它分支有重要影响。群论的重要性还体现在物理学和化学的研究中,因为许多不同的物理结构,如晶体结构和氢原子结构可以用群论方法来进行建模。于是群论和相关的群表示论在物理学和化学中有大量的应用。

----百度百科

1. 抽象加法与群论

使用 表示一种运算,它是一个抽象的加法运算。一个集合G对于运算符 称为群,任取a,b,c∈G,假如满足以下四个运算性质:

https安全加密通道原理(HTTPS安全通讯学习1.)(10)

如果除了满足上述四个条件外,还满足交换率a b=b aa b=b aa b=b a,称为交换群或阿贝尔群。整数加法是阿贝尔群。

群论是法国数学家伽罗瓦的发明。

2. 有限域

集合G和定义于其上的二元运算 和×,(G, ,×)构成一个环,若它们满足:

  1. (G, )是一个交换群,其单位元称为零元素,记作“0”;
  2. “×”满足: 封闭性:a×b∈G 结合律:(a×b)×c=a×(b×c)
  3. 乘法对加法满足分配律:

https安全加密通道原理(HTTPS安全通讯学习1.)(11)

四、 对称密钥算法1. 简介

加密与解密使用相同的密钥,对于加密算法本身是公开的。对称密码算法具有速度快、效率高的优势,适用于大批量数据加密的场合,是现代密码学主流方向之一。现代对称密码体制的核心是打乱,它有两个目标:

  1. 扩散(diffusion),打乱明文,使得明文和密文之间的统计关系尽量复杂,即从密文不能获得明文的统计特性。
  2. 混淆(confusion),打乱明文,使从密文中不能获得密钥的任何统计特性。

破解古典密码学,比较有效的方法是频率分析法。而现代对称密码算法使用分组密码、复式替换密码,使得最终得到的加密算法强度远高于每个简单替换密码的强度结果。

2. DES

1977年1月,(Data Encryption Standard)正式向社会公布。DES加密标准的核心采用Feistel结构,明文分组长度为64位,初始密钥长度也是64位(实际用的是56位),循环轮数是16轮。

DES使用了S盒结构,S盒是一种非线性变换结构。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

算法流程:

https安全加密通道原理(HTTPS安全通讯学习1.)(12)

算法主要分为三步:

  1. 初始置换
  2. 经过16轮加密
  3. 逆转换

解密时也是通过这样3步。

DES的破译基本是暴力破解。

3. 3DES

三重数据加密算法。3DES是DES向AES过渡的一种加密算法,它使用“密钥包”(3个56位的密钥)对分组数据进行三次加解密,即以DES为基本模块,通过对DES加密算法的三次不同组合,构造出3DES加密算法。目前3DES普遍运用于电子货币,像网上钱包、虚拟钱包等,它能提高交易的安全性。但现在该算法也被认为不够安全。

4. 高级加密标准AES

1997年NIST建议撤销DES相关标准。 2002年5月26日,Rijndael成为高级加密标准(AES)。AES在线工具:http://www.seacha.com/tools/aes.html

算法流程

https安全加密通道原理(HTTPS安全通讯学习1.)(13)

AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

ECB模式(电子密码本模式:Electronic codebook)

ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

CBC模式(密码分组链接:Cipher-block chaining)

CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。

CFB模式(密文反馈:Cipher feedback)

与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。

OFB模式(输出反馈:Output feedback)

OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。

Java Cipher的加密模式

https安全加密通道原理(HTTPS安全通讯学习1.)(14)

5. IDEA

1991年由密码学家 James Massey 与华人密码学家来学嘉共同提出,设计类似于3DES,密钥长度增加到128位,有更好的加密强度。

6. 我国的对称密码标准SM4

分组密码算法的安全性主要在于S盒的设计,但国外的大多数密码算法并没有公开S盒的设计原理。2012年3月21日 国家密码管理局将SM4 算法确定为国内官方公布的第一个商用密码算法。SM4算法的前身是用于我国无线局域网产品的加密算法SMS4算法。与DES和AES一样,SM4也是分线密码算法,它的分组长度和密钥长度都是128 bits,加密算法和密钥扩展都采用32轮非线性迭代结构。它仍然具有分组密码的经典特征,加密算法与解密算法结构相同,只是轮密钥的使用顺序相反。

7. 轻量级密码体制五、非对称密钥算法

https安全加密通道原理(HTTPS安全通讯学习1.)(15)

1. 非对称密钥算法的提出

1976年麻省理工学院数学系毕业的W.Diffie 和M. Hellman等人发表了《密码这新方向》(New Directions in Cryptography),该论文提出加密和解密可以用两把不同的密钥,一把公钥,可以公开;一把私钥,必须严格保密。论文里以数学方法实现了不念密钥交换协议,称为Diffie-Hellman密钥交换协议。

1977年,R. Rivest、A.Shamir和L.Adleman利用整数分解问题设计了一个单向陷门函数,并构建了RSA密码系统。

公钥密码学还可以用于认证。由于私钥只有主人才拥有,所以用私钥来加密消息的话,这个消息就有了主人的身份信息。

U盾工作过程

客户银行支付申请生成一个随机数传密码U盾使用随机数和私钥对客户密码加密银行使用之前的随机数与客户匹配的公钥对消息解密,验证密码是否正确客户银行

2. 一些数学概念

欧拉函数

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)例如φ(8)=4,因为1,3,5,7均和8互质。

离散对数困难性问题

Discrete Logarithm Problem,DLP对于比较大的整数y,g,p,求出一个整数x满足

https安全加密通道原理(HTTPS安全通讯学习1.)(16)

是非常困难的。

整数因子分解困难问题

IFP给定一个大整数,要将它分解成两个素数因子的乘积,这是一个非常困难的问题。

3. RSA

RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。今天只有短的RSA钥匙才可能被强力方式解破;只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。[1]RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1 mod n;B=A^e2 mod n;

RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。RSA允许选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害;1024位的密钥几乎是安全的。

4. RSA攻击进度
  1. 共模攻击
  2. 低指数攻击
  3. 旁道攻击
  4. 量子计算的威胁
5. 椭圆曲线方程(ECC Elliptic Curves Cryptography)

1637年前后,法国数学家费马在阅读巴歇校订注释的丢番图的《算术》第2卷第8题,即求

https安全加密通道原理(HTTPS安全通讯学习1.)(17)

的正整数解时,在书的空白处写道:“另一方面,将一个立方数分成两个立方数,一个四次幂分为两个四次幂,或者一般地将一个高于二次的幂分为两个同次的幂,这是不可能的。关于此,我已发现一种美妙的证法,可惜这里空白的地方太小写不下”。

即当整数n>2时,方程

https安全加密通道原理(HTTPS安全通讯学习1.)(18)

没有正整数解。1985年,德国数学家格哈德 费赖 第一次创造性地指出如果费马定理有整数解,则必定存在一条与之对应的椭圆曲线,进而打开了由椭圆曲线证明费马大定理的大门,引发了人们对椭圆曲线研究的重视。同年,Neal Koblitz和Victor Miller分别独立地提出将椭圆曲线应用在密码学中,提出了椭圆曲线密码系统(Elliptic Curve Cryptography,简称ECC),它具有良好的特征(密钥短、安全性高)

椭圆曲线有多种表示形式,有各自的用场,这里介绍其中的一种:

https安全加密通道原理(HTTPS安全通讯学习1.)(19)

这里要求曲线上的每个点都是非奇异(或光滑)的,即曲线上任意一点都存在切线,数学上的定义是曲线上任意一点的偏导数

https安全加密通道原理(HTTPS安全通讯学习1.)(20)

不能同时为0.

椭圆曲线的形状并不是椭圆,它只是类似于计算一个椭圆周长的方程。而实数集并不适合密码技术,所以研究整数集上的椭圆曲线,这样椭圆曲线就变成了离散的点。椭圆曲线

https安全加密通道原理(HTTPS安全通讯学习1.)(21)

会构成一个个离散的点,这些点组成一个有限集,我们在这个有限集上定义加法:PQ的加法是PQ与椭圆曲线交点,它的对称点记为和R。对两个一样的点,需要沿该点做一条切线。

https安全加密通道原理(HTTPS安全通讯学习1.)(22)

https安全加密通道原理(HTTPS安全通讯学习1.)(23)

如果椭圆曲线上的三个点A、B、C,处于同一条直线上,那么他们的和等于零元,即A B C= O∞椭圆曲线离散对数问题ECDLP

若已知椭圆曲线上的两个点P和Q满足关系Q=kP,要求出整数k是非常困难的。

现有的实验证明,160位的整数的椭圆曲线离散对数问题的难度,就相当于1024位整数的分解问题难度。实际应用中,公开的参数和密钥长度至少是256bits。

6. SM2

我国在2010年12月颁布了我们自己的椭圆曲线密码算法标准《SM2椭圆曲线公钥密码算法》。

六、Hash算法

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。——百度百科

目前,常用的Hash算法 Md5(128 bits) 和 SHA-1(160 bits),它们都是以MD4为基础设计的。Hash算法在信息安全方面的应用主要有文件校验、数字签名、鉴权协议等。

1. 单向Hash函数的构造

Hash是这样一类特殊函数:

  1. 给定h,找m满足h(m)=h很难
  2. 给定m,找m’满足h(m)=h(m’)很难
  3. 直接找出m1和m2满足h(m1)= h(m2)很难。

Hash算法是一种摘要算法.

2. Md5

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

https安全加密通道原理(HTTPS安全通讯学习1.)(24)

主要步骤为:

  1. 填充
  2. 初始化变量
  3. 处理分组数据
  4. 输出

2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。(注意:并非是真正的破解,只是加速了杂凑冲撞)。

3. SHA-1

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2)。最初载明的算法于1993年发布,称做安全散列标准 (Secure Hash Standard),FIPS PUB 180。这个版本常被称为 “SHA-0”。它在发布之后很快就被NSA撤回,并且以 1995年发布的修订版本 FIPS PUB 180-1 (通常称为 “SHA-1”) 取代。根据 NSA的说法,它修正了一个在原始算法中会降低密码安全性的错误。然而 NSA 并没有提供任何进一步的解释或证明该错误已被修正。1998年,在一次对 SHA-0 的攻击中发现这次攻击并不能适用于 SHA-1 — 我们不知道这是否就是NSA 所发现的错误,但这或许暗示我们这次修正已经提升了安全性。SHA-1已经被公众密码社群做了非常严密的检验而还没发现到有不安全的地方,它被认为是安全的。SHA-0 和 SHA-1 会从一个最大 2^64 位元的讯息中产生一串 160 位元的摘要,然后以设计 MD4 及 MD5 讯息摘要算法的 MIT 教授Ronald L. Rivest类似的原理为基础来加密。

2006年,王小云教授宣布找到了SHA-1算法的漏洞。

4. SM3

国家密码管理局编制的商用算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。算法描述:

七、消息认证码

对消息的摘要进行加密,可以防止消息被篡改和认证身份。消息认证码利用对称加密算法,对消息完整性进行保护。基本过程:利用提前共享的对称密钥和散列算法进行处理,得到消息认证码值(HMAC)。该HMAC值持有方可以向对方证明自己拥有某个对称密钥,并且确保所传输消息内容是未篡改过的。典型的HMAC生成算法包括K、H、M三个参数。

例: Alice,Bob提前共享了K和HAlice欲确认对方是不是Bob

  1. Alice发消息M给Bob
  2. Bob收到M后计算HMAC,返回给Alice
  3. Alice检验收到的HMAC值,验证对方是不是Bob。

消息认证码需要提前共享密钥。 如果使用非对称加密,即数字签名技术。

八、数字签名

数字签名(又称公钥数字签名),使用非对称加密用来确认发送者身份和消息不被篡改的技术。

https安全加密通道原理(HTTPS安全通讯学习1.)(25)

  1. 苏珊现在发消息给鲍勃只要把消息用鲍勃的公钥加密一下, 这封信就安全了
  2. 鲍勃回信,怎么确保未被篡改写完信把内容生成摘要,使用私钥加密,生成数字签名。签名和信件一起发给苏珊。苏珊用公钥解密数字签名,得到信件摘要;再把信件计算摘要,对比知道消息有没有被篡改。
  3. 别人如果把苏珊的公钥换掉怎么办?这样就好冒充鲍勃了大家都找证书中心(CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和额外的一些信息一起加密,生成数字证书。
  4. 以后鲍勃再发消息时,把数字证书也附上:

https安全加密通道原理(HTTPS安全通讯学习1.)(26)

苏珊收到信后,用CA公钥解开数字证书,解出鲍勃的公钥,就能证书数字签名是否真是鲍勃签的。

九、 密钥管理国家标准1. 密钥管理国家标准的管理机构

oscca

2. 国家标准中密码等级划分(1) 核密

不存在任何商务行为。

(2) 普密

重要机关单位的信息安全级别。

普密可以用于保护一定范围的国家安全信息,对国家秘密保护的强度包括它的手段和技术。从密码角度来说保护国家信息的时候所采用的密码必须是普密以上的。

(3) 商密

用于保护企业级的商业密秘,技术上不一定比普密低,但商密产品的管理程度不如普密,应用产品多,应用面广。国家规定商密禁止操作任何国家秘密以上的安全信息。

3. 算法比较1. 对称密码 SM1SM1算法

该算法是国家密码管理部门审批的 SM1 分组密码算法 , 分组长度和密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片中。采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加 密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政 务通、警务通等重要领域)。

SSF33

SSF33算法是由国家密码管理局编制的一种商用密码分组标准对称算法,分组长度和密钥长度都为 128比特,该算法不公开,仅以 IP 核的形式存在于芯片中。但是SSF33算法性能比较差,因此在实用中,逐步被SM1、SM4代替。

2. 公用密钥算法SM2(对应国际RSA)SM2

国家密码管理局于2010年12月17日发布,全称为椭圆曲线算法,采用基于椭圆曲线加密(ECC)算法的非对称算法,密码复杂度高,160位ECC就可以达到与1024位RSA、DSA相同的安全强度。不仅如此,在实现同样的计算复杂度时,SM2在私钥的处理速度上远快于RSA、DSA算法,所以加密效率更高。SM2在签名、密钥交换方面 同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位曲线作为标准曲线。  SM2 标准包括:总则、数字签名算法、密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。

RSA

RSA算法由Rivest、Shamir、Adleman于1978年首次发表,是迄今为止最容易理解和实现的公钥算法,已经受住了多年深入的攻击,其理论基础是一种特殊的可逆模幂运算,其安全性基于分解大整数的困难性。  RSA算法既可用于加密,又可用于数字签名,已得到广泛采用,并被许多标准化组织(如ISO、ITU、IETF和Swift等)接纳。目前许多国家标准仍采用RSA算法或它的变型。

ECC

椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC)是基于椭圆曲线数学的一种公钥密码的方法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。  ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。不过一个缺点是加密和解密操作的时间比其他机制花费的时间长。

3. 摘要算法 SM3(对应国际MD5、SHA-256)SM3

密码杂凑算法,适用于商用密码中的数字签名和验证,消息认证码生成与验证以及随机数的生成,可满足我种密码应用的安全需求。安全性与效率与SHA256相当。

MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。MD5一度被广泛应用于安全领域。但是由于MD5的弱点被不断发现以及计算机能力不断的提升,现在已经可以构造两个具有相同MD5的信息[2],使本算法不再适合当前的安全环境。2004年,王小云证明MD5数字签名算法可以产生碰撞[3]。2007年,Marc Stevens,Arjen K. Lenstra和Benne de Weger进一步指出通过伪造软件签名,可重复性攻击MD5算法[4]。研究者使用前缀碰撞法(chosen-prefix collision),使程序前端包含恶意程序,利用后面的空间添上垃圾代码凑出同样的MD5 Hash值。

2008年,荷兰埃因霍芬技术大学科学家成功把2个可执行文件进行了MD5碰撞,使得这两个运行结果不同的程序被计算出同一个MD5[5]。2008年12月一组科研人员通过MD5碰撞成功生成了伪造的SSL证书,这使得在https协议中服务器可以伪造一些根CA的签名。

SHA1/SHA2算法:

SHA算法是一种能计算出一个数位讯息所对应到的,长度固定的字串(又称讯息摘要)的算法。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。SHA2包括SHA224、SHA-256,SHA-384和SHA-512。摘要算法运行很快,其中SHA2的性能略低于SHA1。

4. 分组密码算法 SM4(对应国际DES/AES)SM4

此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。  此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和示例见SM4标准。

DES:

DES算法是在美国NSA(国家安全局)资助下由IBM公司开发的密码算法,其初衷是为政府非机密的敏感信息提供较强的加密保护。它是美国政府担保的第一种加密算法,并在1977年被正式作为美国联邦信息处理标准。DES主要提供非军事性质的联邦政府机构和私营部门使用,并迅速成为名声最大,使用最广的商用密码算法。

5. SM7 对称密码

SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。

,