CCCF第7期专题邀请了相关领域的6位专家学者深入探讨图灵对密码学发展的深远影响和密码学的前沿进展,涵盖了密码设计与密码分析这两个密码学的组成部分,同时兼顾了广度与深度。各专题文章原文详见CCF数字图书馆。
关键词: 密码学 图灵 网络空间安全 信息安全
从早期作为一种实用性技术,到今天发展为一门严谨的学科,密码学的发展史汇聚了人类文明的聪明才智。围绕着如何使用密码实现安全和隐私保护与如何安全地使用密码这两个本质问题,密码的设计与分析相互依存,相互促进,处在不断的博弈中,这使得密码的研究得到了持续的发展。
在发展过程中,计算机科学之父艾伦·图灵(Alan M. Turing)做出了多方面本质的贡献,对密码学的成熟产生了深远的影响。首先,在密码安全定义建模方面,图灵的可计算性理论及其发明的(通用)图灵机起着重要的作用。例如,我们知道在现代密码中,设计者首先需要证明其提出的密码算法或者协议可以抵御所有的已知和未知的攻击。然而,有很多密码算法或者协议无法证明自己是安全的,但也无法找到安全漏洞。在这种情况下,是设计者没有找到正确的证明方法呢?还是这个密码算法或者协议本身就不可能被证明呢?图灵奠基的可证明性理论对这些问题给出了答案,那就是很多我们无法证实或者证伪的密码算法或者协议,并不是由于设计者缺少正确的证明方法,而是这个密码算法或者协议本身就不可能在有限步骤内被证明。这就要求设计者不断地对其密码算法或者协议进行修改,使得其能被证明。此外,图灵发明的(通用)图灵机也被广泛应用于密码算法或协议敌手模型中对敌手的建模,使对敌手的运算时间约束可以转化成对于算法的计算步骤限制。目前被密码学界广泛接纳的通用可组合安全模型(universal composability)就是通过多项式时间通用图灵机来模拟敌手的。
本期专题邀请了相关领域的专家学者深入探讨图灵对密码学发展的深远影响和密码学的前沿进展,共组织了六篇文章,涵盖了密码设计与密码分析这两个密码学的组成部分,同时兼顾了广度与深度。
第一篇文章是由英国兰卡斯特大学助理教授张秉晟和浙江大学研究员秦湛联合撰写的《通用图灵机及其对现代密码安全建模的影响》,以(通用)图灵机的计算理论为切入点,深入浅出地分析(通用)图灵机对密码学基本算法工具的安全定义和对密码协议的安全性建模产生的深远影响。作者介绍了密码学中的加密算法是如何从AES时代逐渐演化到现在的可证明安全定义以及(通用)图灵机在其中起到的作用。另外,作者还梳理了密码协议,例如安全多方计算的安全性建模和定义是如何通过几十年的研究探讨演化到如今的通用可组合安全模型,重点解析了交互式图灵机对整个通用可组合安全模型构架的奠基作用。
第二篇文章是由山东大学教授王美琴等撰写的《从图灵破解Enigma到现代密码分析》,介绍了Enigma密码机的工作原理和图灵对Engima密码机的破解,并且解析了Enigma密码机的破解对现代密码分析的影响。作者还以针对哈希函数的破解实例来呈现现代密码分析对安全密码算法设计的重要性。
第三篇文章是由中国科学院信息工程研究所研究员胡磊和副研究员宋凌撰写的《密码杂凑函数的回顾与进展》,介绍了用于实现密码学研究中的完整性和认证性的一类关键密码学函数——密码杂凑函数(又称哈希函数、散列函数等)。作者阐述了密码杂凑函数的性质及其具体应用,梳理了密码杂凑函数的发展脉络,总结了密码分析对密码杂凑函数标准化的影响,并具体介绍美国国家标准与技术研究院(NIST)杂凑函数标准SHA-3及其最新分析进展。
第四篇文章是由香港城市大学副教授王聪和武汉大学教授王骞等联合撰写的《安全多方计算理论与实践》,从理论和实践的双重角度对安全多方计算进行深入的解析。作者从生动的现实问题入手,介绍了安全多方计算的系统模型、安全模型以及理论上的普适性解决方案。同时,文章还梳理了安全多方计算在实际应用中的前沿进展,总结了当前安全多方计算应用的现状,指出了未来安全多方计算的研究方向。
第五篇文章是由美国新泽西理工学院助理教授唐强和哥伦比亚大学教授慕梯·杨(Moti Yung)联合撰写的《抗后门的新一代密码学Cliptography研究进展》,对密码学的通用后门攻击Kleptography进行了系统的总结,并且介绍了抗后门密码学Cliptography的前沿进展。作者先阐述了密码学后门背后的科学原理,回答了如何在设计之初就考虑到这种可能的后门攻击问题,进而介绍了抗后门密码学Cliptography如何弥合这个密码学理论设计与实际实现之间的鸿沟,并对新一代密码学理论基础和密码标准提出新的建议。
第六篇文章是由浙江大学副教授张帆、上海交通大学教授谷大武等撰写的《人工智能之于旁路分析》,介绍了人工智能技术在密码旁路分析领域的研究现状,梳理了机器学习算法在旁路分析领域的发展过程,剖析了人工智能技术在密码旁路分析领域取得成果的原因,并指出了将人工智能技术与旁路分析领域结合的研究方向。
希望本专题能鼓舞更多的学者和安全从业人员参与到网络空间安全和信息安全的研究中,设计与分析新密码算法和协议,开拓新的研究方向和领域。
作者介绍
任 奎
CCF专业会员。浙江大学网络空间安全研究中心主任,国家千人计划特聘教授。主要研究方向为数据安全,云安全,人工智能安全,物联网安全等。kuiren@zju.edu.cn
CCF推荐
【精品文章】
点击 “阅读原文” ,前往CCF数图相关栏目。
图灵发明了破译德国格恩密码机,是计算机的雏形。但并不是人工智能,但对人工智能有很多贡献。艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,称为计算机科学之父,人工智能之父。图灵对于人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即图灵试验,至今,每年都有试验的比赛。图灵发明了破译德国格恩密码机,是计算机的雏形。但并不是人工智能,但对人工智能有很多贡献。艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,称为计算机科学之父,人工智能之父。图灵对于人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即图灵试验,至今,每年都有试验的比赛。
有人说,顶级数学家的能力可以用“恐怖”来形容,那么,数学天才艾伦·麦席森·图灵与恩格尼码的对决就是这样一个“恐怖”过程。恩格尼码不是一个人,而是一个密码机。这个密码机在二战杀了很多人,而图灵就是这个密码机的终结者。
现在我们知道,这个世界的一切,都可以数字化,这就是计算机和人工智能的“本领”,因为它们可以把纯数学的符号与实体的世界联系起来。而最先开启这种联系的是一个伟大的名字~艾伦·麦席森·图灵。他被认为是电脑和人工智能之父,是一位数学奇才,也可以说是一位顶级数学大师。
二战中,纳粹德国发明了令人恐怖的“恩格尼码密码机”。
这个密码机有多厉害呢?它输入一个字母进去,出来的可以是任意一个字母,这样,即便盟军截获了这个密码,也不知所云,看到的是一堆乱码。而德军自己人,只要有相应的破译机,就能够很轻易的破译出来。
这种密码机颠覆了以往任何密码设置的方式,其密匙随机变化能力可达1.59x10^20种,也就是1.59万亿亿种可能。恩格尼码密码排除了人力破解的可能,因为任何一个人穷尽一生也数不出亿亿位数,更别说破解了。有人计算过,如果10个人穷尽一生每时每刻不眠不休都在验证这个密码的各种可能性,完全验证完至少需要2000万年。
因此英军只能眼睁睁的看着自己的军舰、飞机、士兵们不断大量损失,一筹莫展。英国情报部门把希望寄托在特立独行的数学家图灵身上,1939年9月,他们找到了图灵,招募他到英国外交部通讯处服务,主要任务就是破译恩格尼码密码。
图灵一接触这个密码,就知道破译这种密码依靠人力是无法完成的,他想起了自己1936年设计的“图灵机”,这是一种可以辅助数学研究的通用机器,在这台机器里,首次把纯数学的符号以逻辑的方式与外界联系起来,是计算机和人工智能的雏形。
图灵让战争提前两年结束。
1940年,图灵带领自己的团队,研制出了密码破译机“波比”(上图),又称“炸弹”,彻底破解了恩格尼码这个被德军认为固若金汤的密码机器,从而“治好了”盟军的“青光眼”和“白内障”,盟军从睁眼瞎到对德军动向了如指掌甚至毫发毕现,从而规避了德军的各种打击,反过来给予了德军不断沉重打击,战争的规则改变了,德军节节败退。
“波比”被列为最高机密,战后被全部销毁。盟军还采取了真真假假的迷惑战术,没有让德军知道他们的密码已被破译,因此时不时还要付出一些较小的代价换取更大的胜利,还有不少士兵为了掩护“波比”而牺牲,他们并不知道自己为何而死。但战争提前两年结束,挽救了多少士兵和平民的生命?
就像老美在日本放了两个原子弹,虽然直接和间接伤亡了几十万人,但提前促使日本无条件投降,避免了盟军进入日本本土作战,同样减少了数百万军民的伤亡。如果真要进入本土,咱中国也属盟军,当然也要派出军队进入,也要死很多人的。
德军正是在这种迷惑下,一直到战争结束,也没有发现自己的密码被破,因为他们太过自信自己的恩格尼码了,纳粹最终的覆灭很大程度是被图灵天才之手扼杀。
图灵成为英雄,但他的人生却以悲剧落幕。
由于图灵杰出的贡献,1945年,他被英国政府授予了最高的英雄奖项~大英帝国荣誉勋章(O.B.E.勋章)。这之后,图灵结束了自己在英国外交部的工作,回到了战前正在进行的理论计算机方面研究,试图研制出具体的计算机来。
从此,图灵开始了自动计算机的研究和设计,他写出了一份长达50页的ACE(通用计算机)设计说明书,后来的第一台ACE样机就是根据这个设计概念制造出来的。1949年,图灵成为了曼彻斯特大学计算机实验室副主任,负责最早真正意义上的计算机~“曼特斯特一号”的软件理论开发,由此,他成为世界上第一位把计算机实际用于数学研究的科学家。
1950年,图灵编写并出版了《曼彻斯特电子计算机程序员手册》,后来又提出了著名的“图灵测试”;1951年,图灵又发表论文《机器能思考吗》;1951年,他成为英国皇家学会会员,时年39岁;1952年,他辞去剑桥大学国王学院研究员职务,专心在曼特斯特大学从事研究,还担任了制造自动数字计算机的弗兰蒂公司顾问。
但好景不长。正当图灵潜心研究,事业将取得重大突破之际,由于被人迫害,让他的天才创造戛然而止。
与世俗不相容的性格缺陷,葬送了图灵的人生和事业。
1954年6月7日,图灵被发现死于家中的床上,床头放着一个被咬了一口的苹果,经过对苹果的检测,这个苹果被泡过剧毒的氰化物,结论是自杀身亡。22年后的1976年,美国出现了一个苹果公司,它将第一台个人电脑推向市场,颠覆了人们对电脑的使用方式,从而掀起了一场电脑革命,尤其是它们的手机,引领了世纪变革。
巧合的是苹果公司的logo就是一个被咬过一口的苹果,很多人认为这就是为了纪念电脑之父图灵而设计的,但有人认为,这只是一个巧合。不管怎样,这个小插曲也彰显了图灵的影响依然在人间。
图灵的死与他的性取向有关,作为一个同性恋者,在那个时代还是不被法律所容许的。图灵被自己的同性伴侣所害,受到法律制裁。这位图灵的性伴侣叫阿诺德·莫瑞,他们1951年结识并结为伴侣,没想到这是引狼入室。
有一次,图灵发现有人到家里盗窃,他选择了报警,结果这个盗贼正是莫瑞的同伙。审讯中,图灵与莫瑞的同性恋关系暴露,而莫瑞为了减轻罪责,让律师辩护是图灵怂恿引诱才使他堕落。由此图灵因同性恋被捕,他本来完全可以不承认这个“罪行”,但他宁折不弯的个性不允许他说假话,他不但承认有这事,还认为这是他自己的私事,并写了5页陈述报告,把事情交代得清清楚楚。
图灵的罪名被坐实,被判定具有“明显的猥亵和性颠倒行为”罪。法庭给了他两种选择,一是坐牢2年,另一种选择是化学阉割。他选择了后者,就是持续1年强行注射雌激素。于是他在药物的副作用下屈辱的活了一段时间,期间他经历了乳房不断发育等苦不堪言的折磨。最终,他选择了悄悄离开这个不容他的世界。他的人生和事业在他41岁时戛然而止。
最顶级的数学大师都不是常人,因此常被世俗所不容。
图灵当然也不例外。1912年6月23日,图灵在英国伦敦出生。其实他也是一个“留守”儿童,其父亲在印度工作,母亲随行,因此他从小就很少见到父母,只与哥哥约翰相依为命。或许是这种环境,导致了他从小就与众不同。
图灵性格孤僻,沉默寡言,讨厌琐事,具有拒绝交流的倾向,整天沉浸在自己的世界里。他头发凌乱,邋里邋遢,衬衫从裤子里耷拉出来,领带胡乱的缠在领子外面,扣子也常常扣错孔眼,甚至常常穿反鞋子,他认左脚右脚完全没有区别。他对事物的表达都是直通通的,好恶完全展示在人们面前。这就是青少年时期图灵留在人们心目中的印象。
他在学校对数学表现出明显的痴迷,而忽视了对基础课学习,因此他数学是学霸,而其他科目是学渣。他讨厌学校的制度,觉得这种制度约束并剥夺了他悠闲的生活,由此他差点被学校开除。学校给他的评价是:“他根本不知道什么叫恶劣的举止、肮脏的书写和混乱的图形”,“他不该再这么留在这个年级,这太荒唐了”等等。
他就是一个特立独行的人,他不是常人,因此这个以常人为主流世俗的世界很难容忍这种“异人”,他的木讷、偏执、骄傲或许正是他悲剧形成的因素。
但他的天才是毋庸置疑的,很早就显现出来。
图灵在15岁时就能够读懂爱因斯坦相对论,据说当时全世界只有300个人能闹明白。他为了帮助母亲理解相对论,写了一份详细的相对论内容提要,显示出很强的数学水平和科学理解力。中学时期,图灵独特的数学天才能力就使他获得了国王爱德华六世数学金盾奖章。
后来他的数学才华被一路发现和肯定。1931年,图灵考入剑桥大学国王学院,由于成绩优异而获得数学奖学金;1935年,他的第一篇数学论文“左右殆周期性的等价”发表在《伦敦数学会杂志》上,同一年,他还写出“论高斯误差函数”一文。这一年他才23岁,这些成就使他由一名大学生直接当选为国王学院的研究员,并于次年荣获英国著名的史密斯数学奖,成为国王学院最为显赫的毕业生之一。
世俗终于宽容了图灵,他以天才伟人形象定位于历史。
一代巨星过早陨落了,人们惋惜之余,并没有忘记这位纯粹的数学天才。2009年,英国计算机科学家康明发起了为图灵平反的在线请愿,很快,支持请愿的签名就超过3万人,英国政府时任首相戈登布朗由此发表了正式的道歉声明。
2012年,著名科学家斯蒂芬·威廉·霍金、保罗·纳斯(诺贝尔医学奖得主)、马丁·里斯(时任英国皇家学会会长)等致函时任英国首相戴维·卡梅伦,要求为图灵平反;2013年12月24日,英国司法大臣克里斯·格雷林向英国女王提出为图灵平反的要求,女王终于为图灵颁发了赦免令。
格雷林随后宣布:“图灵的晚年生活因为其同性取向而被迫蒙上了一层阴影,我们认为当时的判决是不公的,这种歧视现象如今也已经遭到了废除。为此,女王决定为这位伟人送上赦免,以此向其致敬。”
后来,英国宣布赦免了历史上所有过去因“严重猥亵法”而被定罪的同性恋和双性恋,并向1967年前因同性恋倾向而被定罪的人道歉,这个扭转世俗的法律改变被人们称为“艾伦·图灵法案”。
为了纪念图灵对计算机科学的巨大贡献,美国计算机学会于1966年设立了图灵奖,一年一次表彰在计算机科学中贡献突出的科学家,这个奖项含金量极高,被誉为计算机界的诺贝尔奖。2019年7月15日,英格兰银行行长马克·卡尼展示了以图灵头像为画面的新版50英镑纸币,并宣称在2021年底进入流通,这是一种殊荣。
图灵在科学、特别在数理逻辑和计算机科学方面的成就已被人们熟知,他被誉为计算机和人工智能之父。
由此,我们应该得到一个认识:
最顶尖的杰出人物一定不是世俗的,而世俗也不一定就是好的或者进步的。如果我们这个世界多一分宽容,也许图灵就不会死,他可能为人类进步作出更多的改变。
世界上还有许多科学家在过去和今天受到不公正的对待,而这些科学家正是改变人类文明进程,他们都可能是关系到人类未来存亡的一个齿轮,但愿这样的齿轮不要损坏太多,最终导致人类文明的崩溃。
如果本文能够引起1个人的思考,就没白写;如果能引起很多人的思考,则令人欣慰。谢谢大家的阅读,欢迎讨论。
时空通讯原创版权,侵权抄袭是不道德的行为,敬请理解合作。
恺撒密码是一种相传尤利乌斯.恺撒曾使用过的密码。恺撒于公元前100年左右诞生于古罗马,是一位著名的军事统帅。
恺撒密码是通过将明文中所使用的字母表按照一定的 “平移” 来进行加密的。
恺撒密码是通过将明文中所使用的字母表平移来生成密文的。但是,如果我们将字母表的26个字母,分别与这26个字母本身建立一对一的对应关系,那么无论哪一种对应关系就都可以作为密码来使用。这种将明文中所使用的字母表替换为另一套字母表的密码成为 简单替换密码 。恺撒密码也可以说是简单的替换密码的一种。
简单替换密码的加密过程是一次将明文中的每一个字母按照替换表替换成另一个字母。
Enigma是由德国人阿瑟.谢尔比乌斯于20世纪初发明的一种能够进行加密和解密的机器。Enigma这个名字在德语里是“谜”的意思。谢尔比乌斯使用能够转动的圆盘和电路,创造出人类手工无法实现的高强度密码,在刚刚发明之际,Enigma被用在商业领域,后来到纳粹时期,德国国防采用了Enigma,并将其改良后用于军事用途。
Enigma是一种由键盘、齿轮、电池和灯泡所组成的机器,通过这一台机器就可以完成加密和解密的操作。
发送者和接收者各自拥有一台Enigma。发送者用Enigma将明文加密,将生成的密文通过无线电发送给接收者。接受者接收到的密文用自己的Enigma解密,从而得到明文。
由于发送者和接收者必须使用相同的密钥才能完成加密通信,因此发送者和接收者会事先收到一份叫作 国防军密码本 的册子。国防军密码本中记载了发送者和接收者所使用的 每日密码 ,发送者和接收者需要分别按照册子的指示来设置Enigma。
Egnima的破译过程十分冗长和复杂,在这里就不详细介绍了,不过有一位鼎鼎大名的破译团队一员,阿兰.图灵(现代计算机之父)是一定要提的,并且研制除了破译Enigma的机器。
该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
世界三大计算机科学之父分别是艾伦图灵、冯诺依曼、查尔斯巴贝奇。
1、图灵
艾伦图灵,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,第二次世界大战爆发后回到剑桥,后曾协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。
2、冯诺依曼
冯诺依曼,美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。 冯诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为现代计算机之父、博弈论之父。
3、查尔斯巴贝奇
查尔斯巴贝奇是一名英国发明家,科学管理的先驱者,出生于一个富有的银行家的家庭,曾就读于剑桥大学三一学院。巴贝奇在1812~1813年初次想到用机械来计算数学表;后来,制造了一台小型计算机,能进行8位数的某些数学运算,后被誉为通用计算机之父。
扩展资料:
计算机之父艾伦图灵的主要成就:
艾伦图灵在科学、特别在数理逻辑和计算机科学方面,他的一些科学成果,构成了现代计算机技术的基础。图灵在第二次世界大战中从事的密码破译工作涉及到电子计算机的设计和研制,但此项工作严格保密。直到70年代,内情才有所披露。
从一些文件来看,很可能世界上第一台电子计算机不是ENIAC,而是与图灵有关的另一台机器,即图灵在战时服务的机构于1943年研制成功的CO-LOSSUS(巨人)机,这台机器的设计采用了图灵提出的某些概念。
它用了1500个电子管,采用了光电管阅读器;利用穿孔纸带输入;并采用了电子管双稳态线路,执行计数、二进制算术及布尔代数逻辑运算,巨人机共生产了10台,用它们出色地完成了密码破译工作,战后,图灵任职于泰丁顿国家物理研究所,开始从事自动计算机的逻辑设计和具体研制工作。
1946年,图灵发表论文阐述存储程序计算机的设计。他的成就与研究离散变量自动电子计算机的约翰冯诺伊曼同期。图灵的自动计算机与诺伊曼的离散变量自动电子计算机都采用了二进制,都以内存储存程序以运行计算机打破了那个时代的旧有概念。
参考资料来源:百度百科-图灵
参考资料来源:百度百科-冯诺依曼
参考资料来源:百度百科-查尔斯巴贝奇
密码算法的特性
1、是否需要事先配送私钥:对称密码需要考虑
2、是否会遭到中间人攻击:非对称密码分发公钥时需要考虑
3、不可抵赖(可被双方 和 第三方 用原理证明):非对称密码分发公钥时需要考虑
4、能否保证消息的机密性:即不可破译
5、能否保证消息的完整性(一致性):即不可篡改
6、不可冒充(伪造)
总结:对称密码(解决456)--非对称密码之单向通信-- 混合密码(解决1) --非对称密码之数字签名-- 公钥证书(解决23)
概念
密码算法:加密算法 + 密钥 + 解密算法,简称密码
密钥空间:密钥的所有取值
隐蔽式安全性:以密码算法不为人所知,来保证机密性
分组密码:对明文进行分组加密,而非以全文作为输入
流密码:不分组,整体加密
破解密文的方法
1、窃听 + 破译
2、社会工程学
破解密钥的方法
1、暴力破解(密钥穷举),例如破译凯撒密码
2、频率分析,例如破译简单替换密码
3、选择明文攻击(对分组进行明文穷举)
加密系统的可选技术
隐写术:将消息藏在更大的数据中,例如藏头诗
伪随机数生成器
散列值(摘要,哈希值,指纹):原文经过散列函数(摘要函数,哈希函数,杂凑函数,单向加密)计算出来的值
对称密码(共享密钥密码):加密和解密用同一个私钥
非对称密码(公钥密码):公钥加密,私钥解密
消息认证码
数字签名
公钥证书
碰撞:两个消息的散列值相同
弱抗碰撞性:给定一条消息,很难找到另一条消息与其散列值相同。防止以下情形,Bob持有一个消息A,计算其摘要;Alice找到与A散列值相同的另一条消息B,用B将A调包;由于摘要不变,不被Bob发觉
强抗碰撞性:很难找到两条散列值相同的消息。防止以下情形,Alice拿两个摘要相同的消息A和B,将A发给Bob;Bob计算其摘要;Alice再用B将A调包;由于摘要不变,不被Bob发觉
MD5(Message Digest 5)
历史:1991年Ronald Rivest 设计出MD5
现状:2004年王小云提出了MD5碰撞攻击算法
SHA
历史:1993年NIST发布SHA,1995年发布SHA-1,2002年发布SHA-2
现状:2004年王小云提出了SHA-0的碰撞攻击算法;2005年王小云提出了SHA-1的碰撞攻击算法
SHA-3
历史:2007年NIST发起选拔SHA-3,2012年Joan Daemen等人设计的Keccak算法被选定为SHA-3
弱伪随机数:随机性
强伪随机数:不可预测性
真随机数:不可重现性
随机数生成器:硬件可以通过热噪声实现真随机数
伪随机数生成器:软件只能生成伪随机数,需要一种子seed来初始化
伪随机数算法:线性同余法、散列法、密码法等
好的对称密码解决:不可破译
缺点:需要事先配送密钥
凯撒密码
加密算法:字母平移
密钥:平移位数
解密算法:逆向平移
破解密钥:穷举可能的密钥
简单替换密码
加密算法:一个字母替换成另一个字母
密钥:替换表
解密算法:逆向替换
破解密钥:对密文的字母 和 字母组合进行频率分析,与通用频率表对比;用破译出来的明文字母,代入密文,循环分析
Enigma密码
发明者:德国人Arthur Sherbius
加密算法:双重加密,每日密钥作为密钥1,想一个密钥2;用密钥1加密密钥2,得到密钥2密文;用密钥2加密消息;将密钥2密文和消息密文一起发出
密钥:密钥册子记录的每天不同的密钥
解密算法:用每日密钥解密密钥2密文,得到密钥2;用密钥2解密消息密文
破译者:Alan Turing 图灵
DES密码(Data Encryption Standard)
历史:1974年IBM公司的Horst Feistel开发出了Lucifer密码,1977年被美国国家标准学会(American National Standards Institute,ANSI)确定为DES标准
加密算法:以64比特为一组,进行16轮运算。在一轮中,把一组分为左侧和右侧,并从密钥中提取子密钥;轮函数用一侧和子密钥生成一个比特序列,用这个比特序列对另一侧进行异或运算(XOR)
密钥:长度56位
破译:可在现实时间内被暴力破解
三重DES密码(triple-DES,TDEA,3DES)
加密算法:将DES重复三次
密钥:长度 56 * 3
AES密码(Advanced Encryption Standard)
历史:1997年,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)公开募集AES,2000年比利时密码学家Joan Daemen 和 Vincent Rijmen提交的Rijndael方案,被选为标准
加密算法:以128比特为一组,进行多轮的替换、平移、矩阵运算
密钥:有128,192,256三种长度
分组密码的迭代模式
ECB模式:Electronic CodeBook mode,电子密码本模式;明文分组 和 密文分组 顺序对应。主动攻击者可以改变密文分组的顺序,复制 或 删除密文分组,使得接受者解密后得到错误的明文
CBC模式:Cipher Block Chaining mode,密码分组链接模式;将本组明文 和 上组密文 进行异或运算后,在进行加密;如果被篡改,则不能正常解密
CFB模式:Cipher Feedback mode,密文反馈模式;将本组明文 和 上组密文 进行异或运算后,就得到本组的密文
OFB模式:Output Feedback mode,输出反馈模式;用随机比特序列作为初始化组(初始化向量);用初始化组的密文和 明文分组 异或运算,得到密文分组;再次对初始化组密文进行加密运算,得到新的初始化组密文,跟下组明文进行异或运算,以此类推
CTR模式:CounTeR mode,计数器模式;用随机比特序列作为计数器的初始值,加密后与明文分组进行异或操作,得到密文分组;计数器加一,对下组明文进行加密
对称密码中,发送方发送密文时,带上消息的MAC值A;接收方用相同方法计算出MAC值B;对比A和B,确保消息不被篡改
Encrypt-then-MAC:MAC值为消息密文的散列值
Encrypt-and-MAC:MAC值为消息明文的散列值
MAC-then-Encrypt:MAC值为明文散列值的密文
重放攻击:攻击者窃听到Alice给Bob发送的消息后,重复给Bob发送,Bob以为都是Alice发的
预防重放攻击:消息里带有一个id
比对称密码:不可篡改、不可伪造
缺点:需要实现配送私钥
基于口令的密码:Password Based Encryption,PBE
解决:密钥(会话密钥)保存问题
CEK:会话密钥
KEK:用来加密CEK的密钥
方案
1、随机数作为盐salt,口令 + 盐 的散列值作为KEK
2、用KEK加密CEK,得到CEK密文
3、只保存盐和CEK密文,人脑记住口令,丢弃KEK
字典攻击:如果没有盐参与生成KEK,那么口令决定了KEK,常用的口令对应一个常用KEK字典,攻击者直接拿常用KEK去解密CEK密文
盐的作用:KEK由盐参与形成,不可能有KEK字典包含这样的KEK
非对称密码单向通信,不能单独用于通信,只用在混合密码中
方案:Alice 给 Bob 分发加密密钥(公钥);Bob用公钥加密消息,发送给Alice;Alice用解密密钥(私钥)解密
总结:消息接收者是密钥对主人,即私钥持有人;公钥用于加密,私钥用于解密
RSA密码
历史:1978年,Ron Rivest、Adi Shamir、Reonard Adleman共同发表了RSA
加密算法:密文 = 明文 E mode N
公钥:E 和 N的组合
解密算法:明文 = 密文 D mode N
私钥:D 和 N的组合
生成密钥对
生成质数:用伪随机数生成随机数,通过Miller-Rabin测试法测试它是不是质数,直到得到质数
求最大公约数:欧几里得的辗转相除法
1、求N
生成两个512位的质数p和q,N = p * q
2、求L
L是p-1 和 q-1 的最小公倍数
3、求E
用伪随机数生成(1,L)范围内的随机数,直到满足E和L的最大公约数为1
4、求D
用伪随机数生成(1,L)范围内的随机数,直到满足(E * D) mod L = 1
破解:对N进行质因数分解,得到p和q,从而求出D。但是对大数的质因数分解,未有快速有效的方法
首次通信为混合密码,后续通信为对称密码
比消息认证码:无需事先配送私钥
总体思路:Bob 用会话密钥加密消息,用Alice的公钥加密会话密钥,一起发给Alice;Alice用私钥解密会话密钥,用会话密钥解密消息
会话密钥:用来加密消息的 对称密码的密钥
1、Alice 给 Bob 发送公钥
2、Bob随机生成会话密钥,用会话密钥加密消息,得到消息密文
3、Bob用公钥加密会话密钥,得到会话密钥密文
4、Bob将会话密钥密文和消息密文一起发给Alice
5、Alice用私钥解密会话密钥,再用会话密钥解密消息
6、双方都有了会话密钥,从此以后,可以用对称密码通信了,带上消息认证码
缺点:分发公钥时,可能遭受中间人攻击;Alice可能对给Bob发送公钥这件事进行抵赖
中间人攻击:中间人从一开始Alice向Bob发放公钥时,就拦截了消息,得到Alice的公钥;然后伪装成Alice,向Bob发送自己的公钥;从而Bob打算发给Alice的消息,能被中间人解密
不能单独用于通信,只用在公钥证书中
明文签名:Alice用签名密钥(私钥)加密消息的摘要,把摘要密文和消息明文一起发给Bob;Bob解密摘要密文,得到摘要A;算出明文摘要B,对比A和B
总结:私钥用于加密,公钥用于解密,与 非对称加密之单向通信,刚好反过来
公钥证书:Public-Key Certificate,PKC,简称证书
认证机构:Certification Authority,CA
证书标准:国际电信联盟ITU 和 国际标准化组织ISO指定的X.509标准
流程:
1、Alice在CA登记
2、CA生成Alice的证书明文,包含Alice登记的信息、Alice的公钥、CA信息
3、CA用自己的私钥加密证书明文部分,得到数字签名
4、证书明文部分 和 数字签名 组成PKC,颁发给Alice
5、Bob向Alice获取这个PKC,拿本地已有的CA公钥去验证证书,就得到了可信的Alice的公钥
6、从此Alice 和 Bob之间可以进行混合密码通信
首次通信为从CA获取PKC,后续通信为混合密码
比混合密码:防止了中间人攻击;CA不能抵赖自己的证书
历史:1994年网景公司设计出SSL,2014年SSL 3.0被发现安全漏洞,1999年IEIF发布TLS
TLS(Transport Layer Security)是SSL(Secure Socket Layer)的后续版本,在tcp和http之间加一层TLS,就是https
OpenSSL:OpenSSL是实现SSL/TLS协议的工具包
以https为例
0、浏览器安装时,存有几个CA公钥;服务器在CA登记,拿到证书
1、浏览器访问一个https地址,服务器返回自己的证书
2、浏览器根据证书上的CA信息,拿对应的CA公钥验证证书,得到可信的服务器公钥
3、浏览器生成对称密码的密钥(会话密钥),用服务器公钥加密后发给服务器
4、服务器解密后得到会话密钥,从此用对称密码通信,带上消息认证码
1、生成JKS证书:keytool -genkeypair -alias "别名" -keyalg "RSA" -keystore "D:\app.jks"
2、将JKS转换成PKCS12:keytool -importkeystore -srckeystore D:\app.jks -destkeystore D:\app.p12 -deststoretype pkcs12
3、将PKCS12转成pem:openssl pkcs12 -in ./app.p12 -out app.pem
4、提取加密后的私钥:将pem中 “—–BEGIN ENCRYPTED PRIVATE KEY—–” 至 “—–END ENCRYPTED PRIVATE KEY—–” 的内容拷贝出来,保存为ciphertext.key
5、将密文私钥转成明文私钥:openssl rsa -in ciphertext.key -out plaintext.key
.jks(Java Key Storage):二进制格式,包含证书和私钥,有密码保护
.pfx 或 .p12(Predecessor of PKCS#12):二进制格式,包含证书和私钥,有密码保护
.pem(Privacy Enhanced Mail):文本格式,包含证书,可包含私钥,私钥有密码保护
.der 或 .cer:二进制格式,只包含证书
.crt(Certificate):可以是der格式,也可以是pem格式,只包含证书
SSL证书:SSL证书必须绑定域名,不能绑定IP
加密服务、密钥管理服务