文章目录
- 密码学发展史
- 对称密码算法
- DES
- AES
- 非对称密码算法
- RSA
- 数字签名
- 数字证书
- PKI应用和访问控制
开篇趣味例子:摩斯密码
有两种“符号”用来表示字元:划(—)和点(·),或分别叫嗒(Dah)和滴(Dit)或长和短
I Miss You
密码学发展史
密码学发展阶段
- 1949年之前 密码学是一门艺术
- 1949~1975年 密码学成为科学
- 1976年以后 密码学的新方向——公钥密码学
阶段1 古典密码
公元前5世纪,古斯巴达人用一条带子缠绕在一根木棍上,沿木棍纵轴方向写好明文,解下来的带子上就只有杂乱无章的密文字母。解密者只需找到相同直径的木棍,再把带子缠上去,沿木棍纵轴方向即可读出有意义的明文。
这种方式现代密码学中仍然体现——行列变换。
公元前1世纪,著名的恺撒密码,被用于高卢战争中,这是一种简单易行的单字母替代密码。
这种方式现代密码学中仍然体现——移位。
阿伯提约在1467年发明了多字符加密法,阿伯提的创新在于对信息的不同部分使用不同的代码。
他在凯撒密码原理的基础上做了哪些改进?在现代密码算法中这种思想体现在——替换。而且这个替换表还是动态变化的。
16世纪中期,意大利的卡尔达诺发明了卡尔达诺漏格板,覆盖在密文上,可从漏格中读出明文,这是较早的一种分置式密码。
11世纪,兵书《武经总要》,中国历史上第一部有关密码的记述,介绍了一个小型却名副其实的密码本。
假设双方以《送杜少府之任蜀川》 “城阙辅三秦,风烟望五津……”作为解码密钥。
如果军队粮食将尽需要补充,前方将领就从密码本中查出“请粮料” 的编码“九”,而《送杜少府之任蜀川》中的第九字是“五”。于是请粮将领就将“五”字写到一件普通公文书牒之中,并在字上加盖印章。
指挥机关接到公文后,查出盖印章的“五”字在临时约好的诗中列第九,再对照密码本上的顺序,就得知了前方需要粮草补充。
一战前,密码研究还只限于一个小领域,没有得到各国应有的重视。
第一次世界大战是世界密码史上的第一个转折点。 随着战争的爆发,各国逐渐认识到密码在战争中发挥的巨大作用,积极给予大力扶持,使密码很快成为一个庞大的学科领域。
第一次世界大战进行到关键时刻,英国破译密码的专门机构“40号房间”利用缴获的德国密码本破译了著名的“齐默尔曼电报”,促使美国放弃中立参战,改变了战争进程。
第二次世界大战爆发后, 世界各国开始重视对密码破译的研究工作,纷纷成立专门的研究和破译机构,在战争中发挥重要的作用。德国U-505潜艇受到美海军特遣大队反潜深炸弹攻击,受伤浮起后, 美军缴获了密码机和大量明、密报, 并秘密将U-505潜艇拖回美国。 德军误认为U-505潜艇沉没海底而未换密码。在欧战结束前的11个月里,依靠破译的密码,美军和同盟国军队共击沉德国潜艇300多艘, 平均每天一艘,同时大大减少了自己船只的损失,对战争的胜利产生了重大影响。
1948年以前的密码技术可以说是一种艺术,而不是一种科学,那时的密码专家是凭直觉和信念来进行密码设计和分析的,而不是靠推理证明。1948年,C. E. Shannon 在贝尔系统技术杂志上发表论文《通信的数学理论》,创立了著名的新理论——信息论,标志着密码术到密码学的转变。
阶段2 1949~1975
计算机使得基于复杂计算的密码成为可能
主要特点:数据的安全基于密钥而不是算法的保密
不是基于算法的细节的安全性,这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,算法从贵族、战争走向商用。
即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
阶段3 1976以后
- Diffie和Hellman发表的题为“密码学新方向”文章,提出了“公钥密码”新体制。
- 1977年Rivest,Shamir & Adleman提出了RSA公钥算法。
- 美国国家标准局NBS于1977年公布实施美国数据加密标准DES,保密学史上第一次公开加密算法,并广泛应用于商用数据加密。
- 90年代逐步出现椭圆曲线等其他公钥算法
- 2001年 AES
密码学发展阶段(小结)
自从人类有了战争,就有了密码。
- 历史上的战争,特别是两次世界大战对于保密学的理论
技术的发展起了巨大的推动作用。
- 从手工加密,到机械加密,到计算机加密
- 从基于算法安全,到基于密钥安全
- 从面向贵族到面向平民
对称密码算法
数据加密的基本模型
加密和解密算法的操作通常都是在一组密钥的控制下进行的,分别称为加密密钥(Encryption Key) 和解密密钥(Decryption Key).
数据加密的基本术语
- 消息被称为明文(Plaintext)。用某种方法伪装消息以隐藏它的内容的过程称为加密(Encrtption),被加密的消息称为密文(Ciphertext),而把密文转变为明文的过程称为解密 (Decryption),加密和解密要在密钥的控制下进行。
- 对明文进行加密操作时所采用的一组规则称作加密算法(Encryption Algorithm).
- 接收者对密文解密所采用的一组规则称为解密算法(Decryption Algorithm).
对称密码算法
对称密码算法(symmetric cipher):又称传统密码算法(conventional cipher),就是加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。又称秘密密钥算法或单密钥算法 。
特点
加密速度快,便于硬件实现和大规模生产
密钥分配:必须通过保密的信道
密钥个数:n(n-1)/2
无法用来签名和抗抵赖(没有第三方公证时)
对称密码体制
加密和解密使用相同的密钥
密钥必须使用秘密的信道分配
DES
常见对称密码算法——DES概述
- 1973年美国国家标准局NBS(国家标准与技术研究所NIST的前身)公开征求国家密码标准方案
- 1975年IBM公司首次提出方案
- 1977年被NIST确定为联邦信息处理标准并命名为 DES
曾经是对称密码体制事实上的国际标准 - 输入:64位明文分组、64位密钥(8位校验位)
- 输出:64位密文分组
- 解密算法与加密算法相同
- 交替使用S-变换和P-变换,具有Feistel结构特点
DES作为第一个广泛应用的加密标准,是一种最有代表性的对称分组密码算法。详细研究这一算法的基本原理对于掌握对称分组密码理论很有意义。
DES加密过程:
自从DES问世至今,对它多次的分析研究。利用穷举法搜索攻击,只能说明56位的密钥可能太少;DES的迭代次数可能太少。3DES算法通过增加密钥长度提高安全性。
双密钥3DES
延长密钥到64*2=128位
3密钥3DES
延长密钥到64*3=192位
AES
AES算法——Rijndael
- 1997年4月15日,美国ANSI发起征集AES(advanced encryption standard)的活动,并为此成立了AES工作小组。
- 1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。对AES的基本要求是: 比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。
- 1998年8月12日,在首届AES候选会议(first AES candidate conference)上公布了AES的15个候选算法,任由全世界各机构和个人攻击和评论。
- 1999年3月,在第2届AES候选会议(从15个候选算法中选出了5个。分别是RC6、Rijndael、SERPENT、Twofish和MARS。
- 2000年10月2日,NIST宣布Rijndael作为新的AES。经过3年多的讨论,Rijndael终于脱颖而出。
- Rijndael由比利时的Joan Daemen和Vincent Rijmen设计。算法有很好的抵抗差分密码分析及线性密码分析的能力。
但是对于对称密钥体制,加密方如何将密钥安全传递给解密方?两人共享一个密钥,信息泄露算谁的?公钥密码使得发送端和接收端无密钥传输的保密通信成为可能。这里引入非对称密码算法。
非对称密码算法
非对称密码算法:
- 每个通信实体有一对密钥(公钥 ,私钥 )。公钥公开,私钥保密。
- 甲向乙发送消息,用乙的公钥加密
- 乙收到密文后,用自己的私钥解密
RSA
上述运算中,23和7作为两个密钥,公开一个,另一个作为私钥即可。
例如:公钥为7,私钥为23,则即使攻击者知道7、187和密文11,但如果他不知道私钥23,那么他无论如何也算不出明文88。
- 1977年由美国麻省理工学院三位教授Ron Rivest、Adi Shamir和Len Adleman发明的一种基于因子分解的指数函数的单向陷门函数,于1978年正式公布。它是迄今为止理论上最为成熟完善的公钥密码体制。
- RSA是一种分组加密算法。RSA密钥一般推荐使用1024位,CA采用2048位长的密钥。分组长度小于1024位。
- 目前应用最广泛的公钥密码算法(最重要的算法)。
- 只在美国申请专利,且已于2000年9月到期。
RSA算法
RSA示例1
RSA示例2
RSA为什么不能被破解
密码算法小结
案例剖析——密码算法的运用
Alice想将一份大数据量的合同文件通 Internet 发给远在国外的Bob,此合同文件对双方非常重要,不能有丝毫差错,而且此文件绝对不能被其他人得知其内容。如何才能实现这个合同的安全发送?
- Q1:到底应该用什么加密技术,才能使合同传送既安全又快速呢 ?
- Alice使用对称加密算法对合同进行加密,每次产生一个新的随机密钥(会话密钥, 用会话密钥加密信息
- Q2:Bob怎样才能安全地得到其会话密钥呢?用电话通知,若电话被窃听,通过 Internet 发此密钥给Bob ,可能被黑客截获,怎么办 ?
- 使用非对称加密算法传递会话密钥
- Q3:这样是不是就安全了?会不会出差错?
- 如果黑客截获Alice发的信息,虽不能解密,但可以加密一份假文件冒充Alice发给Bob ,Bob并不知道这不是Alice发给他的,怎么办 ?
这里引入数字签名。
- 公钥E和私钥D可反过来用
- 用私钥D加密,用公钥E解密
- 因为公钥是公开的,所以用私钥D加密不是为了保密,那么是为了什么呢?是为了证明信息是本人发出的。即抗抵赖。
- 因为私钥D加密的数据只能用公钥解密。
- 那么反过来可以这样认为,只要公钥E能解密出来的东西一定是私钥D加密的。
- 而私钥只有一个人保存,不可能泄漏给第三方。
- 那这种机制就可以做为数字签名来用,就如同个人在支票上手写签名一样。不可能有人仿造出来。
数字签名
数字签名不可修改性
- 数字签名就是私钥加密的个人信息
- 任何人都能用公钥将这个信息解密出来。
- 那么可否有人将信息解密出来进行修改呢?这是可能的。但解密出来他没有私钥如何加密成数字签名呢?
- 现在数字签名具有法律效应,经常用在网上银行支付上。
- 数字签名中个人信息比较长,采用非对称密钥加密算法计算慢,如何解决?
Hash算法——信息摘要
特性
- 不可逆,单向性
- 运算上的唯一性
- 对任何长度的信息进行哈希后,结果都是一个固定长度的数据摘要
- 原始信息中一个字节的改变会导致摘要后的结果发生变化
- 常用Hash算法:MD5、SHA、SHA-1
数字签名和hash算法相结合
Bob看不懂,因为反推不回明文
但合同不能让第三方知道, 不能发明文。
加密和数字签名结合
密码算法小结
数字证书
Q:这样是不是就安全了?会不会出差错?
- 用RSA算法加密AES算法密钥是安全的关键所在
- Alice用Bob的公钥加密AES算法密钥
- Bob用Alice公钥来验证签名
- 公钥如何交换?
Q:公钥会不会被替换,怎么证明是对方的公钥?
存在“中间人攻击”
- Alice和Bob都以为是直接和对方进行秘密通信
- 实际上所有的信息都被Tom翻译过了
- 如何确认身份?
这里引入数字证书。
CA(Certification Authority) - CA----认证中心
- CA为电子商务、电子政务等网络环境中各个实体颁发数字证书,以证明身份的真实性,并负责在交易中检验和管理证书。
- CA对数字证书的签名使得第三者不能伪造和篡改证书。
- 权威性、可信赖性、公证性的第三方机构。
CA签名 - 数字证书信息经过hash算法得到摘要1
- CA用自己的私钥对摘要进行签名
- 签名附在数字证书信息后面
- 接收方用CA公钥解密得到摘要1
- 接收方将数字证书信息进行hash得到摘要2
- 比对摘要1和摘要2验证
CA结构
数字证书的格式遵循X.509 V3国际标准
完整流程
PKI应用和访问控制
- PKI,Public Key infrastructure ,公钥基础设施
- PKI是一组组件和规程:是一个用公钥概念和技术来实施和提供安全服务的具有普适性的安全基础设施
- PKI提供的服务:认证服务 完整性 保密性
PKI/CA发展历程
- 20世纪80年代,美国学者提出了PKI的概念
- 为了推进PKI在联邦政府范围内的应用,1996年就成立了联邦PKI指导委员会
- 1996年,以Visa、MastCard、IBM、Netscape、MS、数 家银行推出SET协议,推出CA和证书概念
- 1999年,PKI论坛成立
- 2000年4月,美国国防部宣布要采用PKI安全倡议方案
- 2001年6月13日,在亚洲和大洋洲推动PKI进程的国际组织 宣告成立,该国际组织的名称为“亚洲PKI论坛”,其宗旨 是在亚洲地区推动PKI标准化,为实现全球范围的电子商务奠定基础
PKI就在我们身边:
一般的证书产生流程
实例
- 中国金融认证中心( China Finance Certification Authority 缩写CFCA ),是由中国人民银行牵头,联合中国工商银行、等十二家商业银行参加建设,由银行卡信息交换总中心承建的。
- ICAO(国际民用航空组织International Civil Aviation Organization)制定了PKI数字证书的电子护照标准
- 每个香港公民一人一个智能身份证,每个智能身份证上配发一个全球通用的由香港邮政局颁发的个人数字证书
- 认证机构的严格层次结构
网银安全
柜台注册,开通网银手机银行 ,获得U盾
网银插件下载,手机银行登录
- 用户名、登录密码安全存储和传输?
- 网银插件下载:安全键盘、银行数字证书、安全插件
网银登录,查询账户余额
- 安全机制?需不需要签名?数字证书?
- 余额查询银行要签名并加密,会话密钥由客户端产生
转账,插入U盾
- U盾里是什么?安全机制?数字证书?
- 转账需要用户签名,U盾里是用户的私钥和用户数字证书。
HTTPS(HTTP over SSL)
- SSL(Secure Sockets Layer)协议Internet网上安全通讯与交易的标准, 浏览器就支持此协议
- SSL协议使用通讯双方的客户证书以及CA根证书,在通讯双方间建立起了一条安全的、可信任的通讯通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。
- vTLS(Transport Layer Security,传输层安全协议 )是SSL3.0的后续版本,可以理解为SSL3.1
单向SSL功能
双向认证SSL协议的具体过程
① 浏览器发送一个连接请求给安全服务器。
② 服务器将自己的证书等信息发送给客户浏览器。
③ 客户浏览器检查证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,给出警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
④ 浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。
⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。(单向认证没有)
SET协议
SET协议是Master Card和Visa联合Netscape,Microsoft等公司,于1997年6月1日开发的协议,被称为安全电子交易协议,保证了用户在互联网上使用信用卡进行交易时,信息和数据的安全。