• 【转】话说http那点事
    1 序言今天来聊一聊https 安全传输的原理。在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!)。这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。此时正值米国大选, 张大胖亲切地“致电”Bill, 对米国总统大选的情况表示强烈地关注。 Bill则回电说谢谢关心米国人的事情我们米国人自己做主,不用你们歪果仁瞎操心......张大胖继续“致电”说其实我们支持特朗普, 因为希拉里太情绪化,太难打交道了, 我们挺希望看到特朗普上台这样米国就会变成 The Divided State of America ......Bill 回电: 拉倒你吧你, 我们米国的政体有着强大的纠错性, 虽然有时候发展得慢, 有时候会走上岔路, 但很快就会回到正途,几百年来稳定得很,不像你们像坐了过山车一样.....两个人越聊越投机,天南地北,海阔天空,还夹杂着不少隐私的话题。2 总是有一种被**看的感觉有一天, Bill 突然意识到: 坏了, 我们的通信是明文的, 这简直就是网络上裸奔啊, 任何一个不怀好意的家伙都可以监听我们通信,打开我们发送的数据包,窥探我们的隐私啊。张大胖说: “你不早点说,我刚才是不是把我的微信号给你发过去了? 我是不是告诉你我上周去哪儿旅游了? 估计已经被人截取了吧!”Bill 提议: “要不我们做个数据的加密? 每次传输之前, 你把消息用一个加密算法加密, 然后发到我这里以后我再解密, 这样别人就无法**窥了,像这样: ”张大胖冰雪聪明,一看就明白了, 这加密和解密算法是公开的,那个密钥是保密的, 只有两人才知道, 这样生成的加密消息(密文) 别人就无法得知了。 他说: “Bill 老兄,你生成一个密钥, 然后把密钥发给我, 咱们这就开启加密消息, 让那些**窥狂人们哭去吧!”(码农翻身注:这叫对称加密算法, 因为加密和解密用的是同一个密钥)一炷香功夫过去了, Bill 还是没有回音, 张大胖忍不住地催促: “快发啊?!!!”Bill 终于回复了: “ 我感觉有一双眼睛正在虎视眈眈地盯着我们的通话, 如果我把密钥发给你, 也被他截取了, 那加密岂不白费工夫?”张大胖沉默了, 是啊, 网络是不安全的, 这密钥怎么安全地发过来啊 ? “奥,对了,我下周要去米国旅游,到时候我们见一面,把密码确定下来,写到纸上,谁也**不走, 这不就结了?” “哈哈, 这倒是终极解决之道 ” Bill 笑了, “不过,我不仅仅和你聊天, 我还要和易卜拉欣,阿卜杜拉, 弗拉基米尔,克里斯托夫,玛格丽特, 桥本龙太郎, 李贤俊, 许木木,郭芙蓉,吕秀才等人通信, 我总不能打着飞的,满世界的和人交换密码吧? ”张大胖心里暗自佩服Bill同学的好友竟然遍布全球,看来他对加密通信的要求更加强烈啊!可是这个加密解密算法需要的密钥双方必须得知道啊, 但是密钥又无法通过网络发送, 这该死的**窥者!3 RSA : 非对称加密Bill 和 张大胖的通信无法加密,说话谨慎了不少, 直到有一天, 他们听说了一个叫做RSA的非对称加密算法,一下子来了灵感。这个RSA算法非常有意思,它不是像之前的算法, 双方必须协商一个保密的密钥, 而是有一对儿钥匙, 一个是保密的,称为私钥,另外一个是公开的,称为公钥。更有意思的是,用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密。有了这两个漂亮的特性, 当张大胖给Bill发消息的时候, 就可以先用Bill的公钥去加密(反正Bill的公钥是公开的,地球人都知道), 等到消息被Bill 收到后, 他就可以用自己的私钥去解密(只有Bill才能解开,私钥是保密的 )反过来也是如此, 当Bill 想给张大胖发消息的时候,就用张大胖的公钥加密, 张大胖收到后,就用自己的私钥解密。这样以来,通信安全固若金汤, 没有任何人能窥探他们的小秘密了。4 非对称加密+对称加密两人实验了几次, 张大胖说: “Bill , 你有没有感觉这个RSA的加密和解密有点慢啊?”Bill叹了口气 :“是啊, 我也注意到了, 刚才搜了一下,这个RSA算法比之前的对称密钥算法要慢上百倍。我们就是加个密而已,现在搞得都没法用了”“回到咱们最初的问题,我们想用一个密钥来加密通信,那个对称加密算法是非常快的,但是苦于密钥无法安全传输, 现在有了RSA ,我想可以结合一下, 分两步走 (1) 我生成一个对称加密算法的密钥, 用RSA的方式安全发给你, (2) 我们随后就不用RSA了, 只用这个密钥,利用对称加密算法来通信, 如何? ”Bill 说: “你小子可以啊, 这样以来既解决了密钥的传递问题, 又解决了RSA速度慢的问题,不错。” 于是两人就安全地传递了对称加密的密钥, 用它来加密解密,果然快多了!5 中间人攻击张大胖把和Bill 聊天的情况给老婆汇报了一次。老婆告诫他说: “你要小心啊, 你确定网络那边坐着的确实是Bill ?”张大胖着急地辩解说:“肯定是他啊,我都有他的公钥,我们俩的通信都是加密的。”老婆提醒道:"假如啊,Bill给你发公钥的时候, 有个中间人,截取了Bill的公钥, 然后把自己的公钥发给了你,冒充Bill ,你发的消息就用中间人的公钥加了密, 那中间人不就可以解密看到消息了?"张大胖背后出汗了,是啊,这个中间人解密以后,还可以用Bill的公钥加密,发给Bill , Bill和我根本都意识不到, 还以为我们在安全传输呢!看来问题出现在公钥的分发上! 虽然这个东西是公开的, 但是在别有用心的人看来,截取以后还可以干坏事 !6 你到底是谁?但是怎么安全地分发公钥呢? 似乎又回到了最初的问题: 怎么安全的保护密钥?可是似乎和最初的问题还不一样,这一次的公钥不用保密,但是一定得有个办法声明这个公钥确实是Bill的, 而不是别人的。怎么声明呢?张大胖突然想到: 现实中有公证处,它提供的公证材料大家都信任,那在网络世界也可以建立一个这样的具备公信力的认证中心, 这个中心给大家颁发一个证书, 用于证明一个人的身份。这个证书里除了包含一个人的基本信息之外,还有包括最关键的一环:这个人的公钥!这样以来我拿到证书就可以安全地取到公钥了 ! 完美!可是Bill 马上泼了一盆冷水:证书怎么安全传输? 要是证书传递的过程中被篡改了怎么办?张大胖心里不由地咒骂起来: 我操, 这简直就是鸡生蛋,蛋生鸡的问题啊。天无绝人之路, 张大胖很快就找到了突破口: 数字签名。简单来讲是这样的, Bill可以把他的公钥和个人信息用一个Hash算法生成一个消息摘要, 这个Hash算法有个极好的特性,只要输入数据有一点点变化,那生成的消息摘要就会有巨变,这样就可以防止别人修改原始内容。可是作为攻击者的中间人笑了: “虽然我没办法改公钥,但是我可以把整个原始信息都替换了, 生成一个新的消息摘要, 你不还是辨别不出来?”张大胖说你别得意的太早 , 我们会让有公信力的认证中心(简称CA)用它的私钥对消息摘要加密,形成签名:这还不算, 还把原始信息和数据签名合并, 形成一个全新的东西,叫做“数字证书”张大胖接着说:当Bill把他的证书发给我的时候, 我就用同样的Hash 算法, 再次生成消息摘要,然后用CA的公钥对数字签名解密, 得到CA创建的消息摘要, 两者一比,就知道有没有人篡改了!如果没人篡改, 我就可以安全的拿到Bill的公钥喽,有了公钥, 后序的加密工作就可以开始了。虽然很费劲, 但是为了防范你们这些**窥者,实在是没办法啊。中间人恶狠狠地说: “算你小子狠! 等着吧,我还有别的招。 对了,我且问你, 你这个CA的公钥怎么拿到? 难道不怕我在你传输CA公钥的时候发起中间人攻击吗? 如果我成功的伪装成了CA,你这一套体系彻底玩完。”张大胖语塞了,折腾了半天,又回到了公钥安全传输的问题!不过转念一想,想解决鸡生蛋,蛋生鸡的问题必须得打破这个怪圈才行,我必须得信任CA,并且通过安全的的方式获取他们的公钥,这样才能把游戏玩下去。(注:这些CA本身也有证书来证明自己的身份,并且CA的信用是像树一样分级的,高层的CA给底层的CA做信用背书,而操作系统/浏览器中会内置一些顶层的CA的证书,相当于你自动信任了他们。 这些顶层的CA证书一定得安全地放入操作系统/浏览器当中,否则世界大乱。)7 https 终于可以介绍https了,前面已经介绍了https的原理, 你把张大胖替换成浏览器, 把Bill 替换成某个网站就行了。一个简化的(例如下图没有包含Pre-Master Secret)https流程图是这样的, 如果你理解了前面的原理,这张图就变得非常简单:
  • [数据库] 【第10课】RDS for SQL Server透明数据加密功能,防止机密数据泄露
    随着互联网的迅速发展,以数据库为基础的信息系统在各行各业基础设施建设中得到了广泛的应用,越来越多的数据信息被搜集、存储以及发布,其中大量信息被用于行业合作和数据共享。但是由于信息的易获取,这些包含在数据库系统中的关于商业或技术机密、个人隐私等涉密信息将面临更多的安全威胁。数据泄漏无处不在,且愈演愈烈。因此,数据加密尤为重要。数据库透明加密技术是针对关系型数据库保密需求应运而生的一种数据库加密技术。透明数据加密(Transparent Data Encryption,简称TDE),通过证书加密数据文件和备份文件,可进行实时的io加密/解密,能有效保护数据库及数据文件的安全。RDS for SQL server提供透明数据库加密功能,为您的数据保驾护航。开启实例级别的TDE加密功能1.登录管理控制台。2.单击管理控制台左上角的,选择区域和项目。3.选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页面。4.在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面。5.在“数据库信息”模块,单击“TDE状态”后的。  图1 开启实例级别的TDE加密功能6.在弹出框中,单击“确定”进行二次确认后,开启TDE加密功能。   说明:实例级别的TDE加密功能一旦开启,将不允许关闭,请您谨慎操作。设置数据库级别的TDE加密功能   在开启数据库级别的TDE加密功能之前,请确保已成功开启实例级别的TDE加密功能。 1.连接目标实例。 请参考通过公网连接SQL Server实例、通过内网连接SQL Server实例及通过DAS连接SQL Server实例。 2.通过rds_tde存储过程开启、关闭或查询TDE加密功能。 exec master.dbo.rds_tde DatabaseName,TDE_ActionDatabaseName:目标数据库名,取值可为null。TDE_Action:取值为“-1”,表示查询目标库加密信息。      如果“DatabaseName”取值为null,则返回所有库的加密状态。取值为“0”,表示关闭目标库TDE加密功能。取值为“1”,表示开启目标库TDE加密功能。 3.开启数据库db1的TDE加密功能:  exec master.dbo.rds_tde db1, 1 4.关闭数据库db1的TDE加密功能:  exec master.dbo.rds_tde db1, 0 5.查询数据库db1的TDE加密状态:  exec master.dbo.rds_tde db1, -1 6.查询所有数据库的TDE加密状态:  exec master.dbo.rds_tde null, -1更多相关介绍,欢迎查看https://support.huaweicloud.com/usermanual-rds/rds_11_0004.html
  • [技术干货] KAE加密
    l加速引擎是TaiShan 200服务器基于华为Kunpeng 920提供的硬件加速解决方案,包含了对称加密、非对称加密和数字签名,压缩解压缩等算法,用于加速 SSL/TLS 应用和数据压缩,可以显著降低处理消耗,提高处理器效率。此外,加速引擎对应用层屏蔽了其内部实现细节,用户通过OpenSSL、zlib 标准接口即可实现快速迁移现有业务。lKAE:Kunpeng Acceleration Engine,即华为Kunpeng加速器引擎。 l目前加速引擎主要支持以下算法:p摘要算法SM3。p对称加密算法SM4,支持CTR/CBC模式。p非对称算法RSA,支持 Key Sizes 1024/2048/3072/4096。
  • [技术干货] 带你快速了解什么是KAE
       什么是加速库(KAE)  KAE是TaiShan 200服务器基于Kunpeng 920芯片提供的硬件加速引擎,包含了对称加密、非对称加密和摘要,压缩解压缩等算法,用于加速SSL/TLS应用和数据压缩,可以显著提升所支持算法的运算效率,并卸载CPu资源。此外,加速引擎对应用层屏蔽了其内部实现细节,用户通过opensSL、Zlib标准接口即可以实现对加速引擎的调用。目前加速引擎主要支持以下算法:摘要算法,包括:SM3。对称加密算法,包括: SM4,支持CTR/XTS/CBc模式(XTS模式仅支持内核态应用);AES,支持ECB/CBc/CTR/XTS模式。非对称加密算法,包括:RSA,支持 Key Sizes 1024/2048/3072/4096。压缩解压算法,包括:DEFLATE,支持GZIP/ZLIB两种数据格式。加速库的价值      KAE为开发者用户提供一套可编程的接口,用户可通过此套接口调用硬件加速引擎的能力,从而帮助上层集成产品提升业务性能。主要价值点如下:·接口标准化      适配OpenSSL、Zlib等开源标准库,对外使用接口保持不变,应用层可以不需要做代码级适配修改,如:针对OpenSSL的应用只需要在初始化时指定KAE引擎,其它接口不用修改。·卓越性能      使用KAE引擎后,性能相比软件运算会有大幅提升,如: OpenSSL场景下SM4加解密处理最高可获得4倍以上的性能提升(提升幅度跟包长大小有关系,一般包长越长性能收益越明显,包长小的场景不建议用KAE引擎)。·源码开放      KAE源码包括应用加速库和驱动两部分,所有源码都可公开获得,开发者用户可以根据自身业务需要对代码进行修改或裁剪,其中驱动源码遵循GPL2.0,应用加速库遵循Apache 2.0开源许可协议。基于鲲鹏920系列芯片–加速器引擎功能
  • [问题求助] ABC平台脚本怎么实现DES对称加密
    【功能模块】【操作步骤&问题现象】1、你好,我们现在项目上需要和别的接口对接,然后他们用的是DES的加密方式,我想问下怎么在智慧园区的ABC平台上通过脚本实现这个加密方式呢【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [数据安全] 常用加密算法介绍
    原文地址:常用加密算法介绍作者:果龙女资料来源:http://blog.csdn.net/tang_fu/article/details/6424183http://wenwen.soso.com/z/q235506639.htm5.3.1  古典密码算法  古典密码大都比较简单,这些加密方法是根据字母的统计特性和语言学知识加密的,在可用计算机进行密码分析的今天,很容易被破译。虽然现在很少采用,但研究这些密码算法的原理,对于理解、构造和分析现代密码是十分有益的。表5-1给出了英文字母在书报中出现的频率统计。    古典密码算法主要有代码加密、替换加密、变位加密、一次性密码簿加密等几种算法。   1.代码加密  代码加密是一种比较简单的加密方法,它使用通信双方预先设定的一组有确切含义的如日常词汇、专有名词、特殊用语等的代码来发送消息,一般只能用于传送一组预先约定的消息。   密文:飞机已烧熟。   明文:房子已经过安全检查。   代码加密的优点是简单好用,但多次使用后容易丧失安全性。   2.替换加密  将明文字母表M 中的每个字母替换成密文字母表C中的字母。这一类密码包括移位密码、替换密码、仿射密码、乘数密码、多项式代替密码、密钥短语密码等。这种方法可以用来传送任何信息,但安全性不及代码加密。因为每一种语言都有其特定的统计规律,如英文字母中各字母出现的频度相对基本固定,根据这些规律可以很容易地对替换加密进行破解。以下是几种常用的替换加密算法。  1)移位密码是最简单的一类代替密码,将字母表的字母右移k个位置,并对字母表长度作模运算,其形式为:ek (m)=(k+m)=c mod q,解密变换为:dk (c)=(m-k)=m mod q。凯撒(Caesar)密码是对英文26个字母进行移位代替的密码,其q=26。这种密码之所以称为凯撒密码,是因为凯撒使用过k=3的这种密码。  2)乘数密码也是一种替换密码,它将每个字母乘以一个密钥k,ek (m)=km mod q,其中k和q是互素的,这样字母表中的字母会产生一个复杂的剩余集合,若是和q不互素,则会有一些明文字母被加密成相同的密文字母,而且不是所有的字母都会出现在密文字母表中。异或运算(XOR)也常用于替换加密,加密:c=m XOR k,解密:m=c XOR k。  3)多名或同音替换。每个字母可加密或替换成多个密文字母,这种方法是一种一对多的映射关系,可以挫败一般的频度分析攻击。  3.变位加密  变位加密不隐藏明文的字符,即明文的字母保持相同,但其顺序被打乱重新排列成另一种不同的格式,由于密文字符与明文字符相同,密文中字母的出现频率与明文中字母的出现频率相同,密码分析者可以很容易地由此进行判别。虽然许多现代密码也使用换位,但由于它对存储要求很大,有时还要求消息为某个特定的长度,因而比较少用。以下介绍几种常见的变位加密算法。   1)简单变位加密。预先约定好一组数字表示密钥,将文字依次写在密钥下,再按数字次序重新组织文字实现加密,也有人喜欢将明文逆序输出作为密文。例如    密钥:5 2 4 1 6 3   (密文排列次序)    明文:信息安全技术     密文:技息全信术安   2)列变位法。将明文字符分割成个数固定的分组(如5个一组,5即为密钥!),按一组一行的次序整齐排列,最后不足一组用任意字符填充,完成后按列读取即成密文。如明文是:InformationSecurityTechnology,则分组排列为:    I n f o r    m a t i o    n S e c u    r i t y T    e c h n o    l o g y则密文是:ImnrelnaSicoftethgoicynyrouTo ,这里的密钥是数字5。解密过程则是按列排列密文,再按行读取即可。  3)矩阵变位加密。将明文中的字母按给定的顺序安排在一个矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。一般为按列变换次序,如原列次序为1234,现为2413。如将明文Network Security按行排列在3×6矩阵中,如下所示:    1 2 3 4 5 6    N e t w o r    k   S e c u    r i t y   给定一个置换: ,根据给定的次序,按5、2、6、4、1、3的列序重新排列,得到:    5 2 6 4 1 3    o e r w N t    c   u e k S       i   y r t所以,密文为:oerwNtc uekS i yrt。解密过程正好相反,按序排列密文后,通过列置换再按行读取数据即可。  4.一次性密码簿加密  一次性密码簿加密具有代码加密的可靠性,又保持了替换加密的灵活性,密码簿每一页都是不同的代码表,可用一页上的代码来加密一些词,用后销毁,再用另一页加密另一些词,直到全部的明文完成加密,破译的唯一方法就是获取一份相同的密码簿。   一次性密码簿加密,要求密码簿至少不小于明文长度,即不得重复用来加密明文的不同部分,否则密文就会呈现出某种规律性,也就可能被破译。一般这种加密方法只用于高度保密的场合下,因为如何将至少同长度的密码簿护送到接收端是一个大代价的行动。5.3.2  单钥加密算法  传统加密方法的统计特性是此类算法致命的缺陷。为了提高保密强度,可将这几种加密算法结合使用,形成秘密密钥加密算法。由于可以采用计算机硬件和软件相结合来实现加密和解密,算法的结构可以很复杂,有很长的密钥,使破译很困难,甚至不可能。由于算法难以破译,可将算法公开,攻击者得不到密钥,也就不能破译,因此这类算法的保密性完全依赖于密钥的保密,且加密密钥和解密密钥完全相同或等价,又称为对称密钥加密算法,其加密模式主要有序列密码(也称流密码)和分组密码两种方式。   流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0、 1数字),字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流解密。流密码的强度完全依赖于密钥流序列的随机性和不可预测性,其核心问题是密钥流生成器的设计,流密码主要应用于政府和军事等国家要害部门。根据密钥流是否依赖于明文流,可将流密码分为同步流密码和自同步流密码,目前,同步流密码较常见。由于自同步流密码系统一般需要密文反馈,因而使得分析工作复杂化,但其具有抵抗密文搜索攻击和认证功能等优点,所以这种流密码也是值得关注的研究方向。  分组密码是将明文消息编码表示后的数字序列x1 ,x2 ,…,xi ,…,划分为长为m的组x=(xo ,xl ,…,xm-1 ),各组(长为m的矢量),分别在密钥k=(ko ,k1 ,…,kL-1 )控制下变换成等长的输出数字序列y=(yo ,y1 ,…,yn-1 )(长为n的矢量),其加密函数E:Vn ×K→Vn ,Vn 是 n维矢量空间,K为密钥空间。它与流密码不同之处在于输出的每一位数字不是只与相应时刻输入的明文数字有关,而是还与一组长为m的明文数字有关。在相同密钥条件下,分组密码对长为m的输入明文组所实施的变换是等同的,所以只需要研究对任一组明文数字的变换规则。这种密码实质上是字长为m的数字序列的代替密码。通常取n=m,若n>m,则为有数据扩展的分组密码,若n  围绕单钥密钥体制,密码学工作者已经开发了众多行之有效的单钥加密算法,并且对基于这些算法的软硬件实现进行了大量的工作。常用的单钥加密算法有DES算法、IDEA算法。   1.数据加密标准DES算法  DES 算法的发明人是IBM公司的W.Tuchman和C.Meyer,于1971-1972年研制成功。美国商业部的国家标准局NBS于1973年5月和 1974年8月两次发布通告,公开征求用于电子计算机的加密算法,经评选从一大批算法中采纳了IBM的LUCIFER方案,该算法于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。1977年1月以数据加密标准DES(Data Encryption Standard)的名称正式向社会公布,并于1977年7月15日生效。  DES 算法是一种对二元数据进行加密的分组密码,数据分组长度为64bit(8byte),密文分组长度也是64bit,没有数据扩展。密钥长度为64bit,其中有效密钥长度56bit,其余8bit为奇偶校验。DES的整个体制是公开的,系统的安全性主要依赖密钥的保密,其算法主要由初始置换IP、16轮迭代的乘积变换、逆初始置换IP-1 以及16个子密钥产生器构成。56位DES加密算法的框图如图5-9所示。图5-9  56位DES加密算法的框图DES加密算法框图明文加密过程如下:  1)将长的明文分割成64位的明文段,逐段加密。将64位明文段首先进行与密钥无关的初始变位处理。  2)初始变位后结果,要进行16次的迭代处理,每次迭代的框图相同,但参加迭代的密钥不同,密钥共56位,分成左右两个28位,第i次迭代用密钥Ki 参加操作,第i次迭代完后,左右28位的密钥都作循环移位,形成第i+1次迭代的密钥。  3)经过16次迭代处理后的结果进行左、右32位的互换位置。  4)将结果进行一次与初始变位相逆的还原变换处理得到了64位的密文。  上述加密过程中的基本运算包括变位、替换和异或运算。DES算法是一种对称算法,既可用于加密,也可用于解密。解密时的过程和加密时相似,但密钥使用顺序刚好相反。  DES 是一种分组密码,是两种基本的加密组块替代和换位的细致而复杂的结合,它通过反复依次应用这两项技术来提高其强度,经过共16轮的替代和换位的变换后,使得密码分析者无法获得该算法一般特性以外更多的信息。对于DES加密,除了尝试所有可能的密钥外,还没有已知的技术可以求得所用的密钥。  DES算法可以通过软件或硬件实现。  DES 算法的安全性。DES的出现是密码学上的一个创举,由于其公开了密码体制及其设计细节,因此其安全性完全依赖于其所用的密钥,关于DES的安全问题,学术界有过激烈的争论,普遍的印象是密钥仅有56bit有点偏短。Diffie和Hellman曾设想花千万美元造一台专用机,渴望一天内找到DES的一个密钥,其基本思想是穷举,即强行攻击(需要255 次尝试)。此外,1990年,Eli Biham和Adi Shamir提出用“微分分析法”对DES进行攻击,实际需要247 次尝试,也只有理论上的价值。后来,有人提出一种明文攻击法——“线性逼近法”,它需要243 对明文-密文对,在这样强的要求条件下,要十多台工作站协同工作花费十几天才能完成攻击。表5-2为不同条件下DES攻击时间的预测。在1977 年,人们估计要耗资2000万美元才能建成一个专门计算机用于DES的解密,而且需要12h的破解才能得到结果。1997年开始,RSA公司发起了一个称作“向DES挑战”的竞技赛。1997年1月,用了96天时间,成功地破解了用DES加密的一段信息;一年之后的记录是41天;1998年7月,“第二届 DES挑战赛(DES Challenge II-2)” 把破解DES的时间缩短到了只需56h;“第三届DES挑战赛(DES Challenge III)”把破解DES的时间缩短到了只需22.5h 。总之,随着各种针对DES新攻击手法的不断出现,DES已感觉到了实际的威胁,也许DES即将完成其历史使命。尽管如此,自DES正式成为美国国家标准以来,已有许多公司设计并推广了实现DES算法的产品,有的设计专用LSI器件或芯片,有的用现成的微处理器实现,有的只限于实现DES算法,有的则可以运行各种工作模式。  2.国际数据加密算法IDEA   近年来,新的分组加密算法不断出现,IDEA就是其中的杰出代表。IDEA是International Data Encryption Algorithm的缩写,即国际数据加密算法。它是根据中国学者朱学嘉博士与著名密码学家James Massey于1990年联合提出的建议标准算法PES(Proposed Encryption Standard)改进而来的。它的明文与密文块都是64bit,密钥长度为128bit,作为单钥体制的密码,其加密与解密过程相似,只是密钥存在差异,IDEA无论是采用软件还是硬件实现都比较容易,而且加、解密的速度很快。  IDEA算法是面向块的单钥密码算法,它的安全性与DES类似,不在于算法的保密,而是密钥的安全性。  IDEA的密钥长为128bit,采用穷举搜索进行破译,则需要进行2128 次尝试,这将是用同样方法对付DES的272 倍工作量。目前,尚未见到成功对IDEA进行攻击的报道,有关学者进行分析也表明IDEA对于线性和差分攻击是安全的。此外,将IDEA的字长由16bit加长为32bit,密钥相应长为256bit,采用232 模加,232 +1模乘,可以进一步强化IDEA的安全性能。  3.单钥密码算法性能分析  前面详细介绍了单钥密码体制的典型代表DES算法和IDEA算法,其他一些有意义的算法有SAFER K-64(Secure And Fast Encryption Routine)、GOST、RC-4、RC-5、Blowfish、CAST-128等。为了提高单钥密码的安全性,人们还将分组密码算法通过组合以得到新的分组密码算法,但这种组合密码的安全性必须经仔细检验后才能付诸实用,如二重DES加密、三重DES加密等。  由于各种加密算法的具体实现方法互不相同,因此其性能也存在较大差异,表5-3对单钥密码体制的主要算法在总体实现、速度、安全性能和改进措施几个方面进行了比较,并基于比较结果给出了各算法合适的应用场合。表5-3 单钥密码算法性能比较表5.3.3  双钥加密算法  双钥密码体制的加密密钥和解密密钥不相同,它们的值不等,属性也不同,一个是可公开的公钥,另一个则是需要保密的私钥。双钥密码体制的特点是加密能力和解密能力是分开的,即加密与解密的密钥不同,或从一个难以推出另一个。它可以实现多个用户用公钥加密的消息只能由一个用户用私钥解读,或反过来,由一个用户用私钥加密的消息可被多个用户用公钥解读。其中前一种方式可用于在公共网络中实现保密通信;后一种方式可用于在认证系统中对消息进行数字签名。   双钥加密算法的主要特点如下:   1)用加密密钥PK对明文m加密后得到密文,再用解密密钥SK对密文解密,即可恢复出明文m,即               DSK (EPK (m))=m  2)加密密钥不能用来解密,即:               DPK (EPK (m))≠m ;DSK (ESK (m))≠m  3)用SK加密的信息只能用PK解密;用PK加密的信息只能用SK解密。  4)从已知的PK不可能推导出SK。  5)加密和解密的运算可对调,即               EPK (DSK (m))=m   双钥密码体制大大简化了复杂的密钥分配管理问题,但公钥算法要比私钥算法慢得多(约1000倍)。因此,在实际通信中,双钥密码体制主要用于认证(比如数字签名、身份识别等)和密钥管理等,而消息加密仍利用私钥密码体制。下面介绍双钥密码体制的杰出代表――RSA加密算法。  1.RSA算法  RSA 体制是由R.L.Rivest、A.Shamir和L.Adleman设计的用数论构造双钥的方法,它既可用于加密,也可用于数字签名。RSA得到了世界上的最广泛应用,ISO在1992年颁布的国际标准X.509中,将RSA算法正式纳入国际标准。1999年,美国参议院已经通过了立法,规定电子数字签名与手写签名的文件、邮件在美国具有同等的法律效力。在Internet中广泛使用的电子邮件和文件加密软件PGP(Pretty Good Privacy)也将RSA作为传送会话密钥和数字签名的标准算法。RSA算法的安全性建立在数论中“大数分解和素数检测”的理论基础上。  (1)大数分解  双钥密码体制算法按由公钥推算出密钥的途径可分为两类:一类是基于素数因子分解问题的(如 RSA算法),它的安全性基于100位十进制数以上的所谓“大数”的素数因子分解的难题,这是一个至今没有有效快速算法的数学难题。另一类是基于离散对数问题的(如EIGamal算法),其安全性基于计算离散对数的困难性。离散对数问题是指模指数运算的逆问题,即找出一个数的离散对数。一般地,计算离散对数是非常困难的。  RSA算法运用了数论中的Euler同余定理:即a、r是两个互质的自然数,则az =1 (mod r),其中z为与r互质的且不大于r的自然数,称z为r的Euler指标函数。  (2)RSA算法表述  假定用户A欲送消息m给用户B,则RSA算法的加/解密过程为:  1)首先用户B产生两个大素数p和q(p、q是保密的)。  2)用户B计算n=pq和φ(n)=(p-1)(q-1)(φ(n)是保密的)。  3)用户B选择一个随机数e(0  4)用户B通过计算得出d,使得d*e mod φ(n)=1(即在与n互素的数中选取与φ(n)互素的数,可以通过Euclidean算法得出。d是用户B自留且保密的,用作解密密钥)。  5)用户B将n及e作为公钥公开。  6)用户A通过公开渠道查到n和e。  7)对m施行加密变换,即EB (m)=me mod n=c。  8)用户B收到密文c后,施行解密变换       DB (c)=cd mod n=(me mod n)d mod n=med mod n=m mod n  下面举一个简单的例子用于说明这个过程:令26个英文字母对应于0到25的整数,即a-00,b-01,…,y-24,z-25。设,m=inclub,则m的十进制数编码为:m=08 13 02 11 20 01。设n=3×11=33,p=3,q=11, φ(n)=2×10=20。取e=3,则d=7将n=33和e=3公开,保留d=7。  用户A查到n和e后,将消息m加密:  EB (i)=083 mod 33= 17,  EB (n)=133 mod 33= 19,  EB (c)=023 mod 33= 8,  EB (l)=113 mod 33= 11,  EB (u)=203 mod 33= 14,  EB (b)=013 mod 33= 1,则 c= EB (m) = 17 19 08 11 14 01,它对应的密文为  c=rtilob  当用户B接到密文c后施行解密变换:  DB (r) = 177 mod 33= 8,即明文i,  DB (t) = 197 mod 33= 13,即明文n,  DB (i) = 087 mod 33= 2,即明文c,  DB (l) = 117 mod 33= 11,即明文l  DB (o) = 147 mod 33= 20,即明文u,  DB (b) = 017 mod 33= 1,即明文b。  (3)RSA安全性分析  RSA 的保密性基于一个数学假设:对一个很大的合数进行质因数分解是不可能的!若RSA用到的两个质数足够大,可以保证使用目前的计算机无法分解。即RSA公开密钥密码体制的安全性取决于从公开密钥(n,e)计算出秘密密钥(n,d)的困难程度。想要从公开密钥(n,e)算出d,只能分解整数n的因子,即从n找出它的两个质因数p和q,但大数分解是一个十分困难的问题。RSA的安全性取决于模n分解的困难性,但数学上至今还未证明分解模就是攻击RSA的最佳方法。尽管如此,人们还是从消息破译、密钥空间选择等角度提出了针对RSA的其他攻击方法,如迭代攻击法、选择明文攻击法、公用模攻击、低加密指数攻击、定时攻击法等,但其攻击成功的概率微乎其微。  出于安全考虑,在RSA中,建议使用1024bit的n,对于重要场合n应该使用2048位。  2.ElGamal算法  RSA算法是基于素数因子分解的双钥密码,而ElGamal算法则是基于离散对数问题的另一种类型的双钥密钥,它既可用于加密,也可用于签名。  (1)ElGamal算法方案  1985年,ELGamal第一次在有限域上基于离散对数问题设计了原始的ElGamal数字签名方案。  令p是使在GF(p)域计算离散对数在多项式时间内是不可行的大素数。引进集合Zp ={0,1,2,…,p}及其子集Zp*={0,1,2,…,p-1}。令g∈Zp*,是本原元,定义:密钥集K={(p,g,x,y):y=gx   mod p},这里p,g,y是公钥,x是用户选择的私钥,x∈Zp*且gcd(x,p-1)=1。即产生密钥对时,首先选择一个素数p,两个Zp*中的随机数g和x, 计算 y = gx mod p ,则其公钥为 y, g 和p。私钥是x。g和p可由一组用户共享。  (2)ElGamal加、解密及其安全性  选择随机数k∈zp-1 ,且(k,p-1)=1,计算:y1 =gk mod p(随机数k被加密),y2 =myk mod p,这里,m是发送明文组。密文则由y1 和y2 级连构成,即密文C=y1 ‖y2 。这种加密方式的特点是,密文由明文和所选随机数k来决定,因而是非确定性加密,一般称之为随机化加密,对同一明文由于不同时刻的随机数k不同而给出不同的密文,这样做的代价是使数据扩展1倍。  在收到密文组C后,ElGamal的解密是通过下列计算得到明文的:                ElGamal算法的安全性是基于zP * 中有限群上的离散对数的困难性的。研究表明,mod p生成的离散对数密码可能存在陷门,这会造成有些“弱”素数p下的离散对数较容易求解,但密码学家也发现可以较容易地找到这类陷门以避免选用可能产生脆弱性的这些素数。  3.双钥算法小结  双钥密钥体制的密钥管理和分配较简单,尤其可方便地用于数字签名和认证。虽然其算法都较复杂,运算量巨大,但其仍不失为一种非常有前途的加密体制,它的出现是密码学发展史上的划时代事件。上面我们分析了双钥密码体制的典型代表RSA算法和ElGamal算法,还有其他一些有意义的算法,如LUC密码、Rabin密码,以及DSA密码等。  对于RSA体制,可以将其推广为有多个密钥的双钥体制,即在多个密钥中选用一部分密钥作为加密密钥,而另一些作为解密密钥。同样地,RSA还可以推广为多签名体制,如有k1 、k2 和k3 三个密钥,可将k1 作为A的签名私密钥,k2 作为B的签名私密钥,k3 作为公开的验证签名用密钥,实现这种多签名体制,需要一个可信赖中心对A和B分配秘密签名密钥。
  • [问题求助] 华为专属加密服务可以支持多大的数据量加密传输?它是怎么加密传输的呢?流程是什么?
    华为专属加密服务可以支持多大的数据量加密传输?它是怎么加密传输的呢?流程是什么?
  • [网络安全] 对称加密技术
    加密、解密的密钥相同缺陷:加密强度不高。密钥分发困难。常见对称密钥加密算法:DES :替换+移位、56位密钥、64位数据块、速度快、密钥易产生3DES(三重DES) :两个56位的密钥K1、K2加密:K1加密-> K2解密-> K1加密解密:K1解密-> K2加密-> K1解密AES :高级加密标准Rijndael加密法,是美国联邦政府采用的一-种区块加密标准。这个标准用来替代原先的DES。对其要求是“至少与3DES一样安全”。RC-5:RSA数据安全公司的很多产品都使用了RC-5。IDEA算法:128位密钥、64位数据块、比DES的加密性好、对计算机功能要求相对低,PGP。————————————————原文链接:https://blog.csdn.net/weixin_43203889/article/details/117226233
  • [网络安全] 非对称加密技术
    公钥加密,私钥解密(甲公钥加密,只有甲私钥才能解密)缺陷:加密速度慢常见非对称密钥加密算法:RSA:512位(或1024位)密钥、计算量极大、难破解Elgamal :其基础是Diffie-Hellman密钥交换算法ECC:椭圆曲线算法其它非对称算法包括:背包算法、Rabin、 D-H————————————————原文链接:https://blog.csdn.net/weixin_43203889/article/details/117226233