❶ 密码学的密码破译
密码破译是随着密码的使用而逐步产生和发展的。1412年,波斯人卡勒卡尚迪所编的网络全书中载有破译简单代替密码的方法。到16世纪末期,欧洲一些国家设有专职的破译人员,以破译截获的密信。密码破译技术有了相当的发展。1863年普鲁士人卡西斯基所着《密码和破译技术》,以及1883年法国人克尔克霍夫所着《军事密码学》等着作,都对密码学的理论和方法做过一些论述和探讨。1949年美国人香农发表了《秘密体制的通信理论》一文,应用信息论的原理分析了密码学中的一些基本问题。
自19世纪以来,由于电报特别是无线电报的广泛使用,为密码通信和第三者的截收都提供了极为有利的条件。通信保密和侦收破译形成了一条斗争十分激烈的隐蔽战线。
1917年,英国破译了德国外长齐默尔曼的电报,促成了美国对德宣战。1942年,美国从破译日本海军密报中,获悉日军对中途岛地区的作战意图和兵力部署,从而能以劣势兵力击破日本海军的主力,扭转了太平洋地区的战局。在保卫英伦三岛和其他许多着名的历史事件中,密码破译的成功都起到了极其重要的作用,这些事例也从反面说明了密码保和散密的重要地位和意义。
当今世界各主要国家的政府都十分重视密码工作,有的设立庞大机构,拨出巨额经费,集中数以万计的专家和科技人员,投入大量高速的电子计算机和其他先进设备进行工作。与此同时,各民间企业和学术界也对密码日益重视,不少数学家、计算机学家和其他有关学科的专家也投身于密码学的研究行列,更加速了枣知密码学的发展。
在密码已经成为单独的学科,从传统意义上来说,密码学是研究如何把信息转换成一种隐蔽的方式并阻止其他人得到它。
密码学是一门跨学科科目,从很多领域衍生而来:它可以被看做是信息理论,却使用了大量的数学领域的工具,众所周知的如数论和有限数学。
原始的信息,也就是需要被密码保护的信息,被称为明文。加密是把原始信息转换成不可读形式,也就是密码的过程。解密是加密的逆过程,从加密过的信息中得到原始信息。cipher是加密和解密时使用的算法。
最早的隐写术只需纸笔,加密法,将字凳棚消母的顺序重新排列;替换加密法,将一组字母换成其他字母或符号。经典加密法的资讯易受统计的攻破,资料越多,破解就更容易,使用分析频率就是好办法。经典密码学仍未消失,经常出现在智力游戏之中。在二十世纪早期,包括转轮机在内的一些机械设备被发明出来用于加密,其中最着名的是用于第二次世界大战的密码机Enigma。这些机器产生的密码相当大地增加了密码分析的难度。比如针对Enigma各种各样的攻击,在付出了相当大的努力后才得以成功。
❷ Hello,密码学:第三部分,公钥密码(非对称密码)算法
在 《Hello,密码学:第二部分,对称密码算法》 中讲述了对称密码的概念,以及DES和AES两种经典的对称密码算法原理。既然有对称密码的说法,自然也就有非对称密码,也叫做公钥密码算法。 对称密码和非对称密码两种算法的本质区别在于,加密密钥和解密密钥是否相同 :
公钥密码产生的初衷就是为了解决 密钥配送 的问题。
Alice 给远方的 Bob 写了一封情意慢慢的信,并使用强悍的 AES-256 进行了加密,但她很快就意识到,光加密内容不行,必须要想一个安全的方法将加密密钥告诉 Bob,如果将密钥也通过网络发送,很可能被技术高手+偷窥癖的 Eve 窃听到。
既要发送密钥,又不能发送密钥,这就是对称密码算法下的“密钥配送问题” 。
解决密钥配送问题可能有这样几种方法:
这种方法比较高效,但有局限性:
与方法一不同,密钥不再由通信个体来保存,而由密钥分配中心(KDC)负责统一的管理和分配。 双方需要加密通信时,由 KDC 生成一个用于本次通信的通信密钥交由双方,通信双方只要与 KDC 事先共享密钥即可 。这样就大大减少密钥的存储和管理问题。
因此,KDC 涉及两类密钥:
领略下 KDC 的过程:
KDC 通过中心化的手段,确实能够有效的解决方法一的密钥管理和分配问题,安全性也还不错。但也存在两个显着的问题:
使用公钥密码,加密密钥和解密密钥不同,只要拥有加密密钥,所有人都能进行加密,但只有拥有解密密钥的人才能进行解密。于是就出现了这个过程:
密钥配送的问题天然被解决了。当然,解密密钥丢失而导致信息泄密,这不属于密钥配送的问题。
下面,再详细看下这个过程。
公钥密码流程的核心,可以用如下四句话来概述:
既然加密密钥是公开的,因此也叫做 “公钥(Public Key)” 。
既然解密密钥是私有的,因此也叫做 “私钥(Private Key) 。
公钥和私钥是一一对应的,称为 “密钥对” ,他们好比相互纠缠的量子对, 彼此之间通过严密的数学计算关系进行关联 ,不能分别单独生成。
在公钥密码体系下,再看看 Alice 如何同 Bob 进行通信。
在公钥密码体系下,通信过程是由 Bob 开始启动的:
过程看起来非常简单,但为什么即使公钥被窃取也没有关系?这就涉及了上文提到的严密的数学计算关系了。如果上一篇文章对称密钥的 DES 和 AES 算法进行概述,下面一节也会对公钥体系的数学原理进行简要说明。
自从 Diffie 和 Hellman 在1976年提出公钥密码的设计思想后,1978年,Ron Rivest、Adi Shamir 和 Reonard Adleman 共同发表了一种公钥密码算法,就是大名鼎鼎的 RSA,这也是当今公钥密码算法事实上的标准。其实,公钥密码算法还包括ElGamal、Rabin、椭圆曲线等多种算法,这一节主要讲述 RSA 算法的基本数学原理。
一堆符号,解释下,E 代表 Encryption,D 代表 Decryption,N 代表 Number。
从公式种能够看出来,RSA的加解密数学公式非常简单(即非常美妙)。 RSA 最复杂的并非加解密运算,而是如何生成密钥对 ,这和对称密钥算法是不太一样的。 而所谓的严密的数学计算关系,就是指 E 和 D 不是随便选择的 。
密钥对的生成,是 RSA 最核心的问题,RSA 的美妙与奥秘也藏在这里面。
1. 求N
求 N 公式:N = p × q
其中, p 和 q 是两个质数 ,而且应该是很大又不是极大的质数。如果太小的话,密码就容易被破解;如果极大的话,计算时间就会很长。比如 512 比特的长度(155 位的十进制数字)就比较合适。
这样的质数是如何找出来的呢? 需要通过 “伪随机数生成器(PRNG)” 进行生成,然后再判断其是否为质数 。如果不是,就需要重新生成,重新判断。
2. 求L
求 L 公式:L = lcm(p-1, q-1)
lcm 代表 “最小公倍数(least common multiple)” 。注意,L 在加解密时都不需要, 仅出现在生成密钥对的过程中 。
3. 求E
E 要满足两个条件:
1)1 < E < L
2)gcd(E,L) = 1
gcd 代表 “最大公约数(greatest common divisor)” 。gcd(E,L) = 1 就代表 “E 和 L 的最大公约数为1,也就是说, E 和 L 互质 ”。
L 在第二步已经计算出来,而为了找到满足条件的 E, 第二次用到 “伪随机数生成器(PRNG)” ,在 1 和 L 之间生成 E 的候选,判断其是否满足 “gcd(E,L) = 1” 的条件。
经过前三步,已经能够得到密钥对种的 “公钥:{E, N}” 了。
4. 求D
D 要满足两个条件:
1)1 < D < L
2)E × D mod L = 1
只要 D 满足上面的两个条件,使用 {E, N} 进行加密的报文,就能够使用 {D, N} 进行解密。
至此,N、L、E、D 都已经计算出来,再整理一下
模拟实践的过程包括两部分,第一部分是生成密钥对,第二部分是对数据进行加解密。为了方便计算,都使用了较小的数字。
第一部分:生成密钥对
1. 求N
准备两个质数,p = 5,q = 7,N = 5 × 7 = 35
2. 求L
L = lcm(p-1, q-1) = lcm (4, 6) = 12
3. 求E
gcd(E, L) = 1,即 E 和 L 互质,而且 1 < E < L,满足条件的 E 有多个备选:5、7、11,选择最小的 5 即可。于是,公钥 = {E, N} = {5, 35}
4. 求D
E × D mod L = 1,即 5 × D mod 12 = 1,满足条件的 D 也有多个备选:5、17、41,选择 17 作为 D(如果选择 5 恰好公私钥一致了,这样不太直观),于是,私钥 = {D, N} = {17, 35}
至此,我们得到了公私钥对:
第二部分:模拟加解密
明文我们也使用一个比较小的数字 -- 4,利用 RSA 的加密公式:
密文 = 明文 ^ E mod N = 4 ^ 5 mod 35 = 9
明文 = 密文 ^ D mod N = 9 ^ 17 mod 35 = 4
从这个模拟的小例子能够看出,即使我们用了很小的数字,计算的中间结果也是超级大。如果再加上伪随机数生成器生成一个数字,判断其是否为质数等,这个过程想想脑仁儿就疼。还好,现代芯片技术,让计算机有了足够的运算速度。然而,相对于普通的逻辑运算,这类数学运算仍然是相当缓慢的。这也是一些非对称密码卡/套件中,很关键的性能规格就是密钥对的生成速度
公钥密码体系中,用公钥加密,用私钥解密,公钥公开,私钥隐藏。因此:
加密公式为:密文 = 明文 ^ E mod N
破译的过程就是对该公式进行逆运算。由于除了对明文进行幂次运算外, 还加上了“模运算” ,因此在数学上, 该逆运算就不再是简单的对数问题,而是求离散对数问题,目前已经在数学领域达成共识,尚未发现求离散对数的高效算法 。
暴力破解的本质就是逐个尝试。当前主流的 RSA 算法中,使用的 p 和 q 都是 1024 位以上,这样 N 的长度就是 2048 位以上。而 E 和 D 的长度和 N 差不多,因此要找出 D,就需要进行 2048 位以上的暴力破解。即使上文那个简单的例子,算出( 蒙出 ) “9 ^ D mod 35 = 4” 中的 D 也要好久吧。
因为 E 和 N 是已知的,而 D 和 E 在数学上又紧密相关(通过中间数 L),能否通过一种反向的算法来求解 D 呢?
从这个地方能够看出,p 和 q 是极为关键的,这两个数字不泄密,几乎无法通过公式反向计算出 D。也就是说, 对于 RSA 算法,质数 p 和 q 绝不能被黑客获取,否则等价于交出私钥 。
既然不能靠抢,N = p × q,N是已知的,能不能通过 “质因数分解” 来推导 p 和 q 呢?或者说, 一旦找到一种高效的 “质因数分解” 算法,就能够破解 RSA 算法了 。
幸运的是,这和上述的“离散对数求解”一样,当下在数学上还没有找到这种算法,当然,也无法证明“质因数分解”是否真的是一个困难问题 。因此只能靠硬算,只是当前的算力无法在可现实的时间内完成。 这也是很多人都提到过的,“量子时代来临,当前的加密体系就会崩溃”,从算力的角度看,或许如此吧 。
既不能抢,也不能算,能不能猜呢?也就是通过 “推测 p 和 q 进行破解” 。
p 和 q 是通过 PRNG(伪随机数生成器)生成的,于是,又一个关键因素,就是采用的 伪随机数生成器算法要足够随机 。
随机数对于密码学极为重要,后面会专门写一篇笔记 。
前三种攻击方式,都是基于 “硬碰硬” 的思路,而 “中间人攻击” 则换了一种迂回的思路,不去尝试破解密码算法,而是欺骗通信双方,从而获取明文。具体来说,就是: 主动攻击者 Mallory 混入发送者和接收者之间,面对发送者伪装成接收者,面对接收者伪装成发送者。
这个过程可以重复多次。需要注意的是,中间人攻击方式不仅能够针对 RSA,还可以针对任何公钥密码。能够看到,整个过程中,公钥密码并没有被破译,密码体系也在正常运转,但机密性却出现了问题,即 Alice 和 Bob 之间失去了机密性,却在 Alice 和 Mallory 以及 Mallory 和 Bob 之间保持了机密性。即使公钥密码强度再强大 N 倍也无济于事。也就是说,仅仅依靠密码算法本身,无法防御中间人攻击 。
而能够抵御中间人攻击的,就需要用到密码工具箱的另一种武器 -- 认证 。在下面一篇笔记中,就将涉及这个话题。
好了,以上就是公钥密码的基本知识了。
公钥密码体系能够完美的解决对称密码体系中 “密钥配送” 这个关键问题,但是抛开 “中间人攻击” 问题不谈,公钥密码自己也有个严重的问题:
公钥密码处理速度远远低于对称密码。不仅体现在密钥对的生成上,也体现在加解密运算处理上。
因此,在实际应用场景下,往往会将对称密码和公钥密码的优势相结合,构建一个 “混合密码体系” 。简单来说: 首先用相对高效的对称密码对消息进行加密,保证消息的机密性;然后用公钥密码加密对称密码的密钥,保证密钥的机密性。
下面是混合密码体系的加解密流程图。整个体系分为左右两个部分:左半部分加密会话密钥的过程,右半部分是加密原始消息的过程。原始消息一般较长,使用对称密码算法会比较高效;会话密钥一般比较短(十几个到几十个字节),即使公钥密码算法运算效率较低,对会话密钥的加解密处理也不会非常耗时。
着名的密码软件 PGP、SSL/TLS、视频监控公共联网安全建设规范(GB35114) 等应用,都运用了混合密码系统。
好了,以上就是公钥密码算法的全部内容了,拖更了很久,以后还要更加勤奋一些。
为了避免被傻啦吧唧的审核机器人处理,后面就不再附漂亮姑娘的照片(也是为了你们的健康),改成我的摄影作品,希望不要对收视率产生影响,虽然很多小伙儿就是冲着姑娘来的。
就从喀纳斯之旅开始吧。
❸ 密码学基础1:RSA算法原理全面解析
本节内容中可能用到的符号说明如下:
质数和合数: 质数是指除了平凡约数1和自身之外,没有其他约数的大于1的正整数。大于1的正整数中不是素数的则为合数。如 7、11 是质数,而 4、9 是合数。在 RSA 算法中主要用到了质数相关性质,质数可能是上帝留给人类的一把钥匙,许多数学定理和猜想都跟质数有关。
[定理1] 除法定理: 对任意整数 a 和 任意正整数 n,存在唯一的整数 q 和 r,满足 。其中, 称为除法的商,而 称为除法的余数。
整除: 在除法定理中,当余数 时,表示 a 能被 n 整除,或者说 a 是 n 的倍数,用符号 表示。
约数和倍数 : 对于整数 d 和 a,如果 ,且 ,则我们说 d 是 a 的约数,a 是 d 的倍数。
公约数: 对于整数 d,a,b,如果 d 是 a 的约数且 d 也是 b 的约数,则 d 是 a 和 b 的公约数。如 30 的约数有 1,2,3,5,6,10,15,30,而 24 的约数有 1,2,3,4,6,8,12,24,则 30 和 24 的公约数有 1,2,3,6。其中 1 是任意两个整数的公约数。
公约数的性质:
最大公约数: 两个整数最大兆李的公约数称为最大公约数,用 来表示,如 30 和 24 的最大公约数是 6。 有一些显而易见的性质:
[定理2] 最大公约数定理: 如果 a 和 b 是不为0的整数,则 是 a 和 b 的线性组合集合 中的最小正元素。
由定理2可以得到一个推论:
[推论1] 对任意整数 a 和 b,如果 且 ,则 。
互质数: 如果两个整数 a 和 b 只有公因数 1,即 ,则我们就称这两个数是互质数(coprime)。比如 4 和 9 是互质数,但是 15 和 25 不是互质数。
互质数的性质:
欧几里得算法分为朴素欧几里得算法和扩展欧几里得算法,朴素法用于求两个数的最大公约数,而扩展的欧几里得算法则有更多广泛应用,如后面要提到的求一个数对特定模数的模逆元素等。
求两个非负整数的最大公约数最有名的是 辗转相除法,最早出现在伟大的数学家欧几里得在他的经典巨作《几何原本》中。辗转相除法算法求两个非负整数的最大公约数描述如下:
例如, ,在求解过程中,较大的数缩小,持续进行同样的计算可以不断缩小这两个数直至其中一个变成零。
欧几里得算法的python实现如下:
扩展欧几里得算法在 RSA 算法中求模反元素有很重要的应用,定义如下:
定义: 对于不全为 0 的非负整数 ,则必然存在整扰哪数对 ,使得
例如,a 为 3,b 为 8,则 。那么,必然存在整数对 ,满足 。简单计算可以得到 满足要求。
扩展欧几里得算法的python实现如下:
同余: 对于正整数 n 和 整数 a,b,如果满足 ,即 a-b 是 n 的倍数,则我们称 a 和 b 对模 n 同余,记号如下: 例如,因为 ,于是有 。
对于正整数 n,整数 ,如果 则我们可以得到如下性质:
譬如,因为 ,则可以推出 。
另外,若 p 和 q 互质,且 ,则可推出:
此外,模的四则运算还有如下一些性质,证明也比较简单,略去。
模逆元素: 对整数 a 和正整数 n,a 对模数 n 的模逆元素是指满足以下条件的整数 b。 a 对 模数 n 的 模逆元素不一定存在,a 对 模数 n 的模逆元素存在的充分必要条件是 a 和 n 互质,这个在后面我们会有证明。若模逆元素存在,也不是唯一的。例如 a=3,n=4,则 a 对模数 n 的模逆元素为 7 + 4k,即 7,11,15,...都是整数 3 对模数 4 的模逆元素。如果 a 和 n 不互质,如 a = 2,n = 4,则不存在模逆元素。
[推论2] 模逆元素存在的充分必要条件是整数 a 和 模数 n 互质。
[定理3] 唯一质数分解定理: 任何一个大于1的正整数 n 都可族李迟以 唯一分解 为一组质数的乘积,其中 都是自然数(包括0)。比如 6000 可以唯一分解为 。
由质数唯一分解定理可以得到一个推论: 质数有无穷多个 。
[定理4] 中国剩余定理(Chinese remainder theorem,CRT) ,最早见于《孙子算经》(中国南北朝数学着作,公元420-589年),叫物不知数问题,也叫韩信点兵问题。
翻译过来就是已知一个一元线性同余方程组求 x 的解:
宋朝着名数学家秦九韶在他的着作中给出了物不知数问题的解法,明朝的数学家程大位甚至编了一个《孙子歌诀》:
意思就是:将除以 3 的余数 2 乘以 70,将除以 5 的余数 3 乘以 21,将除以 7 的余数 2 乘以 15,最终将这三个数相加得到 。再将 233 除以 3,5,7 的最小公倍数 105 得到的余数 ,即为符合要求的最小正整数,实际上, 都符合要求。
物不知数问题解法本质
求解通项公式
中国剩余定理相当于给出了以下的一元线性同余方程组的有解的判定条件,并用构造法给出了解的具体形式。
模数 两两互质 ,则对任意的整数: ,方程组 有解,且解可以由如下构造方法得到:
并设 是除 以外的其他 个模数的乘积。
中国剩余定理通项公式证明
❹ 密码学——DES解密问题
你这问题比较耗时间,不过不难,给你个网址你棚拿态自己分析分析就出来了敏局。http://en.wikipedia.org/wiki/Data_Encryption_Standard,这里是算法基本描述。http://en.wikipedia.org/wiki/DES_supplementary_material,这里是各种变换的影射关系,你按照这个图里的影射变换就找到某一个bit怎么链源来的了。
❺ 密码学的基本简介
密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。着名的密码学者Ron Rivest解衫亏释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商察岩务等等。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行或没神加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
❻ 密码算法的密码学
(1) 发送者和接收者
假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。
(2) 消息和加密
消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。
明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。
密文用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,单单加密通常达不到这一点)。加密函数E作用于M得到密文C,用数学表示为:
E(M)=C.
相反地,解密函数D作用于C产生M
D(C)=M.
先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:
D(E(M))=M
(3) 鉴别、完整性和抗抵赖
除了提供机密性外,密码学通常有其它的作用:.
(a) 鉴别
消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。
(b) 完整性检验
消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。
(c) 抗抵赖
发送者事后不可能虚假地否认他发送的消息。
(4) 算法和密钥
密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)
如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。
但是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。
尽管有这些主要缺陷,受限制的算法对低密级的应用来说还是很流行的,用户或者没有认识到或者不在乎他们系统中内在的问题。
现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:
EK(M)=C
DK(C)=M.
这些函数具有下面的特性:
DK(EK(M))=M.
有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:
EK1(M)=C
DK2(C)=M
DK2 (EK1(M))=M
所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
密码系统由算法、以及所有可能的明文、密文和密钥组成的。
基于密钥的算法通常有两类:对称算法和公开密钥算法。下面将分别介绍: 对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。
对称算法的加密和解密表示为:
EK(M)=C
DK(C)=M
对称算法可分为两类。一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。 公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。
用公开密钥K加密表示为
EK(M)=C.
虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为:
DK(C)=M
有时消息用私人密钥加密而用公开密钥解密,这用于数字签名(后面将详细介绍),尽管可能产生混淆,但这些运算可分别表示为:
EK(M)=C
DK(C)=M
当前的公开密码算法的速度,比起对称密码算法,要慢的多,这使得公开密码算法在大数据量的加密中应用有限。 单向散列函数 H(M) 作用于一个任意长度的消息 M,它返回一个固定长度的散列值 h,其中 h 的长度为 m 。
输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数还有使其单向的其它特性:
(1) 给定 M ,很容易计算 h ;
(2) 给定 h ,根据 H(M) = h 计算 M 很难 ;
(3) 给定 M ,要找到另一个消息 M‘ 并满足 H(M) = H(M’) 很难。
在许多应用中,仅有单向性是不够的,还需要称之为“抗碰撞”的条件:
要找出两个随机的消息 M 和 M‘,使 H(M) = H(M’) 满足很难。
由于散列函数的这些特性,由于公开密码算法的计算速度往往很慢,所以,在一些密码协议中,它可以作为一个消息 M 的摘要,代替原始消息 M,让发送者为 H(M) 签名而不是对 M 签名 。
如 SHA 散列算法用于数字签名协议 DSA中。 提到数字签名就离不开公开密码系统和散列技术。
有几种公钥算法能用作数字签名。在一些算法中,例如RSA,公钥或者私钥都可用作加密。用你的私钥加密文件,你就拥有安全的数字签名。在其它情况下,如DSA,算法便区分开来了??数字签名算法不能用于加密。这种思想首先由Diffie和Hellman提出 。
基本协议是简单的 :
(1) A 用她的私钥对文件加密,从而对文件签名。
(2) A 将签名的文件传给B。
(3) B用A的公钥解密文件,从而验证签名。
这个协议中,只需要证明A的公钥的确是她的。如果B不能完成第(3)步,那么他知道签名是无效的。
这个协议也满足以下特征:
(1) 签名是可信的。当B用A的公钥验证信息时,他知道是由A签名的。
(2) 签名是不可伪造的。只有A知道她的私钥。
(3) 签名是不可重用的。签名是文件的函数,并且不可能转换成另外的文件。
(4) 被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用A的公钥验证。
(5) 签名是不可抵赖的。B不用A的帮助就能验证A的签名。 加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术的要点是加密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类算法。
对称加密算法 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。美国国家标准局倡导的AES即将作为新标准取代DES。
不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。
不可逆加密算法 的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。
❼ 密码系统的解密(Decrypt)
把己加密的信息(密文做吵)恢复成原始信息明文的过程,也称为脱密。
密码算法(Cryptography Algorithm)
也简称密码(Cipher),通常是指信竖加、解密过程所使用的信息变换规则,是用于信息加密和解密的数学函数。
对滑胡大明文进行加密时所采用的规则称作加密算法,而对密文进行解密时所采用的规则称作解密算法。加密算法和解密算法的操作通常都是在一组密钥的控制下进行的。
❽ 密码学原理
密码学包括密码编码学和密码分析学,是一门研究密码算法和安全协议设计、使用和分析的学科,密码技术是提供网络安全认证、保护信息安全最重要的技术手段。密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;(8)密码学算法脱密问题是什么扩展阅读
在通信过程中,待加密的.信息称为明文,已被加密的信息称为密文,仅有收、发双方知道的信息称为密钥。在密钥控制下,由明文变到密文的过程叫加密,其逆过程叫脱密或解密。在密码系统中,除合法用户外,还有非法的截收者,他们试图通过各种办法窃取机密(又称为被动攻击)或窜改消息(又称为主动攻击)。
现代密码学所涉及的学科包括:信息论、概率论、数论、计算复杂性理论、近世代数、离散数学、代数几何学和数字逻辑等。
主要包括古典密码及其分析、序列密码、香农理论、对称分组密码的设计思想和算法、线性分析和差分分析、工作模式和短块处理、散列函数及其安全性、非对称密码算法的原理和应用、数字签名、计算安全性、密钥管理、密码学应用实例和高级密码算法等。
❾ 加密密钥是公开的,脱密密钥是保密的是什么意思
公开密钥密码体制是现代密码学的最重要的发明和进展。一般理解密码学(Cryptography)就是保护信息传递的机密性。
但这仅仅是当今密码学主题的一个方面。对信息发送与接收人的真实身份的验证、对所发出/接收信息在事后的不可抵赖以及保障数据的完整段敬性是现代密码学主题的另一方面。
公开密钥密码体制对这两方面的问题都给出了出色的解答,并正在继续产生许多新的思想和方案。在公钥体制笑燃衫中,加密密钥不同于解密密钥。人碰腔们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。迄今为止的所有公钥密码体系中,RSA系统是最着名、使用最广泛的一种。
❿ 密码学的理论基础
在通信过程中,待加密的信息称为明文,已被加密的信息称为密文,仅有收、发双方知道的信息称为密钥。在密钥控制下,由明文变到密文的过程叫加密,其逆过程叫脱密或解密。在密码系统中,除合法用户外,还有非法的截收者,他们试图通过各种办法窃取机密(又称为被动攻击)或窜改消息(又称为主动攻击)。
一个密码通信系统可如图3所示。
对于给定的明文m和密钥k,加密变换Ek将明文变为密文c=f(m,k)=Ek(m),在接收端,利用脱密密钥k,(有时k=k,)完成脱密操作,将密文c恢复成原来的明文m=Dk,(c)。一个安全的密码体制应该满足:①非法截收者很难从密文C中推断出明文m;②加密和脱密算法应该相当简便,而且适用于所有密钥空间;③密码的保密强度只依赖于密钥;④合法接收者能够检验和证实消息的完整性和真实性;⑤消息的发送者无法否认其所发出的消息,同时也不能伪造别人的合法消息;⑥必要时可由仲裁机构进行公断。
现代密码学所涉及的学科包括:信息论、概率论、数论、计算复杂性理论、近世代数、离散数学、代数几何学和数字逻辑等。