导航:首页 > 文档加密 > 双线性对加密消息

双线性对加密消息

发布时间:2022-04-19 05:24:20

A. 什么是双线性对

你所说的是一种加密算法

双线性对,也就是代数曲线上的Weil对和Tate对,最初在密码学中只是用来攻击椭圆曲线密码系统和超椭圆曲线密码系统。

不知道说明白了没有,祝你好运朋友!!

B. 我们老师让我们看着原文写一篇论文,谁可以帮忙写下。星期一就要交看。急!!!!

我只写两句吧……没时间啊
第一句:The security and privacy of the Internet of Things has a relatively large impact on the participants. So it needs to establish the appropriate security framework to achieve data confidentiality, access control, client privacy and other functions to resist sophisticated attacks. 第二句:The papers used trustable computing technology and bilinear pairingssigncryption method to propose a secure transmission model for the Internet of things which satisfies the security needs of the two aspects of the Internet of Things - ONS inquiries and items of information transmission.

C. 能否举例一个双线性映射的实际例子

呵呵,好吧。看来你是个公钥密码学的初学者,跟你简单讲讲这个双线性映射。
1,要熟悉超奇异椭圆曲线域上群元素数学性质,比如:E(x,y):y^2=x^3+x这种椭圆曲线,每个群元素都是椭圆曲线上的点,比如P(x,y),那么这个P就可以抽象表示成图中定义里面的g,u,v等。
2,要学习这种基于椭圆曲线上加法和点乘的运算原理。
3,有了以上基础,就可以了解配对运算的原理了,比如weil配对,P和Q是阶为m椭圆曲线上的两个点,那么两个点的配对(pairing)运算,e(P,Q)=weil_paring(P,Q),产生的结果同样满足阿贝尔群属性,因此满足双线性。
4,weil_paring算法的原理,要了解除子,Miller算法等,比较复杂。
关于可运行的代码,你可以参考一下tate配对算法,软件名称为:TinyPairing,可以在
http://opencores.com/project,tiny_tate_bilinear_pairing
下载。

D. Symantec专业版SSL证书支持ECC加密算法,什么是ECC加密

服务器上装 SSL 证书会不会影响到用户浏览网页的速度?
https://www.gworg.com/ssl/218.html

然而ECC加密算法更简单了,所以加载证书验证速度提升。
平常我们看到的是:RSA算法,目前独立服务器都支持ECC,不过CDN不支持。

E. 什么是双线性对以及椭圆曲线和双线性对的关系

双线性对是以椭圆曲线作为它的两个自变量,而函数值是整数

F. 首次将椭圆曲线用于密码学,建立公开密钥加密的算法是在那一年

椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。

椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

椭圆曲线密码学:

椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射。

基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。其缺点是同长度密钥下加密和解密操作的实现比其他机制花费的时间长。

但由于可以使用更短的密钥达到同级的安全程度,所以同级安全程度下速度相对更快。一般认为160比特的椭圆曲线密钥提供的安全强度与1024比特RSA密钥相当。

G. 线性系统的双线性

式中分别是状态向量和控制向量,上标T表示转置;A,Pi和B均为常系数矩阵;dx/dt表示x对时间t的微商。这类状态方程的特点是,它相对于状态或控制在形式上分别是线性的,双线性的名称即源于此。但同时相对于状态和控制来说,系统则不是线性的。它实际上是一类具有比较简单形式的特殊非线性系统。双线性系统模型是对线性系统模型的推广,它能更准确地描述一类实际过程。生物繁殖过程就是一个典型的例子,用状态变量x表示种群中生物体的数量,控制变量u表示可人为控制的净增殖率,则控制种群中生物体数量的繁殖过程可用形式为dx/dt=ux的一个双线性系统来描述。双线性系统模型已被广泛用于工程、生物、人体、经济和社会问题的研究。例如,化学反应中的催化作用问题;人体内的水平衡过程、体温调节过程、呼吸中氧和二氧化碳交换过程、心血管调节过程等问题;细胞内的某些生物化学反应问题;社会和经济领域中的人口问题,动力资源问题,钢铁、煤炭、石油产品生产问题等。
双线性系统的研究始于60年代,70年代以来得到了广泛的重视和迅速的发展,成为非线性系统研究中比较成熟的分支之一。双线性系统理论中已有的主要结果为:
①双线性系统具有变结构系统的一些特征,因而有一定的自适应性(见适应控制系统)。
②对于控制变量受限制(即控制变量的大小必须在一定的界限内)的情况,已经找到用频率域语言表达的稳定性条件。
③双线性系统具有比线性系统更好的能控性。即使控制变量受限制,系统仍可能是完全能控的。已经获得系统完全能控的一些充分条件。
④用李雅普诺夫稳定性理论能够求得双线性系统的镇定控制解,即可找到一个反馈控制律u=u(x)使系统实现全局稳定。这种控制函数是开关型或饱和型的,开关曲面(或曲线)对状态变
而言是二次曲面(或曲线)。
⑤采用动态规划或极大值原理已能解决双线性系统的一些最优控制问题,如最速控制,最省燃料控制,以及离散双线性系统和随机双线性系统的最优控制等。
双线性系统理论已有不少实际应用的例子。例如核电站、核动力装置中核裂变和热交换过程的最优控制,人口预测和控制等。

H. 网络安全就业难度大不大

未邀自答。本来我都关机、躺下、准备睡觉了,结果手贱点了知乎,看到了这么一个问题,又看到好朋友 @scalers回答了这个问题,忍不住又把电脑打开,准备花一点时间认真回答一下这个问题。这可能不仅是对问题本身的回答,也是差不多这一年来我对信息安全这个领域的理解和体会吧。=============================利益相关:信息安全方向博士生,主攻Public Key Encryption,主要方向是Predicate Encryption。1-2年之内就要就业,方向应该就是数据安全了。这一年认识了不少领域内的前辈和朋友,了解到不少现状。=============================0. 总体感受:人才既饱和,又匮乏现在安全行业的现状基本是:上层人才极度匮乏,下层人才极度饱和。大概半年多前和一位领域内的人士聊天,对方说了这么一句话:我们招人要求真的不高啊,只要领域相关,7年以上工作经验就好了。当时,幼稚的我心想,我靠你逗我呢,这还要求不高?哪儿找安全领域干7年以上的人去?经过半年的折腾,我现在的感觉是:这个要求真的不高,一点都不高,可能太低了…为什么?因为信息安全这个领域太大了,大到什么程度呢?大到做这个领域的人可能需要把几乎计算机科学的所有领域全理解(注意,不是了解,是理解)以后,才能集大成,然后把这个领域做好。=============================1. 数学和计算机理论基础要求信息安全中最理论的基础是密码学。密码学谁提出来的?图灵提出来的。为什么是他提出的密码学?因为密码学的实现基础是图灵机,或者说是有限自动机原理。密码学的理论基础是抽象代数和信息论。想要比较深入的学习密码学里面的知识,至少要明白计算机领域的归约(Rection),计算复杂性理论;至少要明白抽象代数里面的群(Group)、环(Ring)、域(Field);至少要了解信息论中信息熵的概念;这些如果不理解的话,安全证明估计就过不去了…要是追新,看看密码学界的发展,起码说提出一个名字能明白是什么意思,估计得了解了解椭圆曲线(Elliptic Curve),双线性对(Bilinear Pairing)或者多线性对(Multilinear Pairing),格(Lattice)等等。=============================2. 编程能力要求有人说了,我不用学密码学理论,我能看懂论文,把方案实现了就行了啊。因为实现的方案从理论上是否安全,要考察参数的选择。参数选择的话,就得看懂安全性证明了。我个人只是做了Java Pairing-Based Cryptography Library(jPBC)的一些实现,几乎时常会收到很多邮件,询问这个库怎么用,为什么自己实现的不对。多数情况都是因为对根上的东西没理解,导致用起来不对。有人说了,我也不用看懂论文,我能写最经典的密码学算法,能正确调用就好了。很遗憾,就算是最经典的密码学算法,即使是有经验的开发人员,绝大多数都不能正确实现。仅以RSA为例,请移步我的专栏文章:RSA有多安全,有多不安全?Black Hat 2014 - The Matasano Crypto Challenges解析 - 第一部分 - 刘学酥的密码学与信息安全专栏 - 知乎专栏看看里面有多少坑吧。=============================3. 计算机相关技术能力要求有人说了,我不用写密码学算法,我能正确用就行了。提到网络通信,就有计算机网络的相关知识了。我个人感觉计算机网络知识的复杂度现在和操作系统都差不多了。尤其是现在分布式系统,比如分布式计算和分布式存储技术的普及,分布式计算机网络本身就构成了一个比操作系统还要复杂的总系统。做安全的话,没有计算机网络和操作系统的知识几乎只能做点皮毛工作。提到网络和操作系统,就会想到这本身就需要比较强的编程能力。举个简单的例子,Java优秀的网络通信框架Netty和MINA(感谢 @Edsger Lin 的指正,这里打错了),是不是需要了解一下?HDFS,MapRece是不是了解一下?要不要看看源代码… 来吧,这相关的资料、书籍,可以放满一个书柜了。=============================4. 网络安全技术要求有人说了,我也不用懂这些,我是做技术的,了解网络知识以后,找漏洞挖漏洞,直接走向人生巅峰!怎么说呢,漏洞这个东西虽然知识本身要求的不深入,但是非常考验广度。比如数据库的了解,网络得了解,各种Web语言得了解,里面有什么坑得了解。而且,很多时候漏洞检测和网络渗透会涉及到语言本身上去。举个例子,Black Hat 2014中有个视频,所在的公司开发了一套漏洞检测工具Ravage(为什么我知道,我听译的…逆天漏洞检测及渗透生成工具——RAVAGE课程详情)。这个工具的制作已经深入到JVM的汇编层了。=============================5. 文档能力和与人交流的能力信息安全领域,不光是技术层面的,还有人员层面的。软件开发过程中出现的漏洞,绝大多数都是开发人员没有遵守安全软件开发要求而导致的。同时,各个公司、各个产品的安全架构,安全技术都不太一样。这种时候,为了保证产品的安全特性,就需要文档撰写和阅读能力,以及交流能力了。我和某位领域内人士交流的时候,总听到一种抱怨:我靠,这安全机制不是瞎搞么,这怎么评估,怎么实现?很遗憾,互联网发展太快了,很多东西都没有模块化体系化,现实就是这样。想要解决这个问题,就需要一群在计算机各个领域内都精通,或者退一步,都了解的人,将各种安全技术和产品抽象,从而提出并设计架构。这样才能提出一种比较通用的方法,从架构上去解决大部分的安全问题。不过这对一个人的要求可是有点高啊。安全又仅仅是技术问题吗?非也。信息安全中,技术占3成,管理占7成。技术再好,密钥管理不成熟,开发流程不成熟,访问控制机制设计的不成熟,甚至私下交易,从内部泄露用户隐私,也会导致严重的安全问题。这并不是耸人听闻。CSDN密码数据库泄露可能仅仅是冰山一角。要我看,用户的密码早就被泄露光了… 当然现在已经好了很多。这就意味着,管理也是个很困难的问题。说到管理,交流能力也是必不可少的。=============================6. 其他能力信息安全和通信技术是密不可分的。通信技术的发展必然会导致信息安全技术的发展。举例来说,枚举法是最没创意的攻击方法了。但是现在有了高性能计算机,分布式计算机系统,对于几年前的数据,用枚举法可能反而比其他方法更快。另一个例子,量子计算领域现在蓬勃发展,没准几年,十几年或者几十年后量子计算机就普及了。这并不是不可能,想想计算机从刚出现到现在人手几台一共花费了多长时间?那个时候,现有的体制全部推翻重来,作为安全人员就要更新自己的知识库了。当然了,这个例子有点极端,量子计算机真的来了,所有计算机科学相关的从业人员就要洗牌了。总的来说,信息安全领域要求从业人员随时学习,随时更新知识库。而且这种更新速度是依赖于计算机科学这门学科的发展而来的。2008年DDoS攻击还没影子呢,现在DDoS几乎就是家常便饭了。网络的迅速发展,特别是后面云计算云存储的发展,给安全从业人员又带来了更多的问题。这必须要求从业人员随时更新自己的知识,持之以恒的站在最前沿思考问题。=============================7. 有人能做到吗?密码学精通,可以到安全研究院。比如很多着名密码学家,Gentry,Shoup什么的就在IBM,进行全同态加密的理论研究和具体实现。而且,理解密码学的人学其他方面也比较快。但是需要到领域内快速积累。编程能力强,计算机相关技术强,就可以不光做安全了。但安全领域绝对欢迎这样的人才。网络安全技术能力强,可以到任何一家互联网公司做安全。知乎上的几位技术派大牛们,大多是这方面的佼佼者。文档能力和与人交流的能力强,可以做安全咨询。这是个比较有意思的领域。这个领域更需要广泛了解安全的相关知识。不仅从技术角度,也要从管理角度。我自己只是在公钥密码学中的一个很小的领域有一点点很小的成绩。因为计算机基础知识不足,接下来的一年我估计要各种补基础知识了,而且估计还补不完。上面说的这些对人才的需求,基本上只要精通一点,就是领域内的佼佼者了。所以,信息安全领域是一个集大成的领域。而且几乎任何一个分领域对于领域内知识的要求,都高于本身的要求。因为基础不够的话,想做安全就有点痴人说梦了。=============================8. 回到主题:会饱和吗?回到问题上面来,安全人才会达到饱和吗?我认为有生之年能把上面说的起码都做过一遍,几乎都是不可能的。信息安全的人才要求很高。能力强,哪怕是一方面能力强,都可以从茫茫人海中脱颖而出。一个直接的体现就是信息安全周围配套内容的普及。我在做Black Hat,包括密码学一些视频的听译时,就尝试过让别人帮忙听写,我来翻译。结果,即使是专业听译人员,拿到这些视频也都瞎了。因为专业词汇太多,几乎是中文都不知道什么意思。Black Hat系列这么好,为什么一直以来没人做字幕,听写翻译?因为确实对听译人员要求很高。我自己水平有限,只能听译密码学、Java、以及部分数据库、网络通信相关主题的Black Hat,而且也会遇到各种问题,遇到从来没听说过的技术、开源代码、工具、或者思想。当然这个过程也是收获的过程。所以,从高层看,信息安全人才应该一直会保持匮乏的状态,等待新鲜血液的注入。另一方面,由于门槛太高,不少人会在门外徘徊。门外的人多了,饱和一词也就来了。对于我自己,虽然得到了领域内人士的部分认可。但是,越往里面走,越发现里面的坑有多深。唯一的办法就是不停的学习和更新知识。毕竟,学习要比提出新方法简单多了,大家说对吗?=============================9. 只有信息安全领域是这样?就如同事物都是螺旋向上发展的一样,正像其他回答说的那样,任何领域都是:水平不高,哪里都饱和;水平高了,哪里都会要。什么叫水平高,高到什么程度就够了?我认为没有尽头。一个领域,越是钻研,越是往深了看,就越发现自己的渺小和无能。这会反过来导致更强的求知欲和更强的动力。等觉得自己小到只是一个沙子的时候,抬头一看,可能就会明白,绝大多数人,可能连分子大小都没到,但他们认为自己内部的原子和电子,就是整个世界。希望我们都能成为一粒沙子,看着大海的波涛汹涌,而毫无意识的,为这个世界的组成贡献自己的一份力量。以上。

I. 信息安全技术论文

密码学与密匙管理

一 摘要:
密码系统的两个基本要素是加密算法和密钥管理。加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,仅靠加密算法已难以保证信息的安全了。事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。
二 关键词:密码学 安全 网络 密匙 管理
三 正文:
密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。
密码学包括密码编码学和密码分析学。密码体制设计是密码编码学的主要内容,密码体制的破译是密码分析学的主要内容,密码编码技术和密码分析技术是相互依相互支持、密不可分的两个方面。密码体制有对称密钥密码体制和非对称密钥密码体制。对称密钥密码体制要求加密解密双方拥有相同的密钥。而非对称密钥密码体制是加密解密双方拥有不相同的密钥,在不知道陷门信息的情况下,加密密钥和解密密钥是不能相互算出的。
对称密钥密码体制中,加密运算与解密运算使用同样的密钥。这种体制所使用的加密算法比较简单,而且高效快速、密钥简短、破译困难,但是存在着密钥传送和保管的问题。例如:甲方与乙方通讯,用同一个密钥加密与解密。首先,将密钥分发出去是一个难题,在不安全的网络上分发密钥显然是不合适的;另外,如果甲方和乙方之间任何一人将密钥泄露,那么大家都要重新启用新的密钥。通常,使用的加密算法 比较简便高效,密钥简短,破译极其困难。但是,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。1976年,Diffie和Hellman为解决密钥管理问题,在他们的奠基性的工作"密码学的新方向"一文中,提出一种密钥交换协议,允许在不安全的媒体上通讯双方 交换信息,安全地达成一致的密钥,它是基于离散指数加密算法的新方案:交易双方仍然需要协商密钥,但离散指数算法的妙处在于:双方可以公开提交某些用于运算的数据,而密钥却在各自计算机上产生,并不在网上传递。在此新思想的基础上,很快出现了"不对称密钥密码体 制",即"公开密钥密码体制",其中加密密钥不同于解密密钥,加密密钥公之于众,谁都可以用,解密密钥只有解密人自己知道,分别称为"公开密钥"和"秘密密钥", 由于公开密钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大地简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。目前,公开密钥加密算法主要有RSA、Fertezza、EIGama等。我们说区分古典密码和现代密码的标志,也就是从76年开始,迪非,赫尔曼发表了一篇叫做《密码学的新方向》的文章,这篇文章是划时代的;同时1977年美国的数据加密标准(DES)公布,这两件事情导致密码学空前研究。以前都认为密码是政府、军事、外交、安全等部门专用,从这时候起,人们看到密码已由公用到民用研究,这种转变也导致了密码学的空前发展。迄今为止的所有公钥密码体系中,RSA系统是最着名、使用最广泛的一种。RSA公开密钥密码系统是由R.Rivest、A.Shamir和L.Adleman三位教授于1977年提出的,RSA的取名就是来自于这三位发明者姓氏的第一个字母。RSA算法研制的最初目标是解决利用公开信道传输分发 DES 算法的秘密密钥的难题。而实际结果不但很好地解决了这个难题,还可利用 RSA 来完成对电文的数字签名,以防止对电文的否认与抵赖,同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,从而保护数据信息的完整性。
在网上看到这样一个例子,有一个人从E-mail信箱到用户Administrator,统一都使用了一个8位密码。他想:8位密码,怎么可能说破就破,固若金汤。所以从来不改。用了几年,没有任何问题,洋洋自得,自以为安全性一流。恰恰在他最得意的时候,该抽他嘴巴的人就出现了。他的一个同事竟然用最低级也是最有效的穷举法吧他的8位密码给破了。还好都比较熟,否则公司数据丢失,他就要卷着被子回家了。事后他问同事,怎么破解的他的密码,答曰:只因为每次看他敲密码时手的动作完全相同,于是便知道他的密码都是一样的,而且从不改变。这件事情被他引以为戒,以后密码分开设置,采用10位密码,并且半年一更换。我从中得出的教训是,密码安全要放在网络安全的第一位。因为密码就是钥匙,如果别人有了你家的钥匙,就可以堂而皇之的进你家偷东西,并且左邻右舍不会怀疑什么。我的建议,对于重要用户,密码要求最少要8位,并且应该有英文字母大小写以及数字和其他符号。千万不要嫌麻烦,密码被破后更麻烦。
密码设的越难以穷举,并不是带来更加良好的安全性。相反带来的是更加难以记忆,甚至在最初更改的几天因为输人缓慢而被别人记住,或者自己忘记。这都是非常糟糕的,但是密码难于穷举是保证安全性的前提。矛盾着的双方时可以互相转化的,所以如何使系统密码既难以穷举又容易记忆呢,这就是门科学了。当然,如果能做到以下几点,密码的安全还是有保障的。
1、采用10位以上密码。
对于一般情况下,8位密码是足够了,如一般的网络社区的密码、E-mail的密码。但是对于系统管理的密码,尤其是超级用户的密码最好要在10位以上,12位最佳。首先,8位密码居多,一般穷举工作的起始字典都使用6位字典或8位字典,10位或12位的字典不予考虑。其次,一个全码8位字典需要占去4G左右空间,10位或12位的全码字典更是天文数字,要是用一般台式机破解可能要到下个千年了,运用中型机破解还有有点希望的。再次,哪怕是一个12个字母的英文单词,也足以让黑客望而却步。
2、使用不规则密码。
对于有规律的密码,如:alb2c3d4e5f6,尽管是12位的,但是也是非常好破解的。因为现在这种密码很流行,字典更是多的满天飞,使用这种密码等于自杀。
3,不要选取显而易见的信息作为口令。
单词、生日、纪念日、名字都不要作为密码的内容。以上就是密码设置的基本注意事项。密码设置好了,并不代表万事大吉,密码的正确使用和保存才是关键。要熟练输入密码,保证密码输人的速度要快。输人的很慢等于给别人看,还是熟练点好。不要将密码写下来。密码应当记在脑子里,千万别写出来。不要将密码存人计算机的文件中。不要让别人知道。不要在不同系统上使用同一密码。在输人密码时最好保证没有任何人和监视系统的窥视。定期改变密码,最少半年一次。这点尤为重要,是密码安全问题的关键。永远不要对自己的密码过于自信,也许无意中就泄漏了密码。定期改变密码,会使密码被破解的可能性降到很低的程度。4、多方密钥协商问题
当前已有的密钥协商协议包括双方密钥协商协议、双方非交互式的静态密钥协商协议、双方一轮密钥协商协议、双方可验证身份的密钥协商协议以及三方相对应类型的协议。如何设计多方密钥协商协议?存在多元线性函数(双线性对的推广)吗?如果存在,我们能够构造基于多元线性函数的一轮多方密钥协商协议。而且,这种函数如果存在的话,一定会有更多的密码学应用。然而,直到现在,在密码学中,这个问题还远远没有得到解决。

参考文献:
[1]信息技术研究中心.网络信息安全新技术与标准规范实用手册[M].第1版.北京:电子信息出版社.2004
[2]周学广、刘艺.信息安全学[M].第1版.北京:机械工业出版社.2003
[3]陈月波.网络信息安全[M].第1版.武汉:武汉工业大学出版社.2005
[4]宁蒙.网络信息安全与防范技术[M].第1版.南京:东南大学出版社.2005

J. 公钥长度不满足是什么意思

干货:三种公钥密码

公钥密码概述

世界上几乎每天都有新的密码算法诞生,同时,也有旧的密码算法被废弃。事实上,大部分密码算法的诞生并未给密码学家们带来震撼,甚至在密码界连一点细微的涟漪都没有激起。然而,RSA公钥密码算法自1977年问世以来,成为了密码学史上划时代的革命事件,给密码学家们带来了惊喜,其最大的贡献在于它解决了传统对称密码算法难以解决的两个问题:一是签名认证,另一个是密钥交换(协商)。公钥密码算法的设计比对称密码算法的设计具有更大的挑战性。目前所使用的公钥密码算法的安全性基础主要是数学中的难题。

公钥密码算法也常称为非对称密码算法。其最大特点是其密钥是成对出现的,其密钥对由公钥和私钥组成。公钥和私钥是不相同的,已知私钥可推导出公钥,但已知公钥不能推导出私钥。公钥可对外公开,私钥由用户自己秘密保存。

公钥密码算法有两种基本应用模式:一是加密模式,即以用户公钥作为加密密钥,以用户私钥作为解密密钥,实现多个用户的加密信息只能由一个用户解读;二是认证模式,即以用户私钥进行数字签名,以用户公钥验证签名,实现一个用户的签名可以由多个用户验证。用于加解密中的密钥对,称为加密密钥对。用于签名验证中的密钥对称为签名密钥对。

目前的公钥密码主要有RSA、ECC、IBC三类,针对RSA我国没有相应的标准算法出台,而针对ECC和IBC,我国分别有相应的SM2、SM9标准算法发布。

RSA

1977年,麻省理工学院的三位数学家Rivest、Shamir、Adleman创建了一个比较完善的公钥密码算法,就是着名的RSA算法。RSA算法在过去一直是最受欢迎的公钥密码算法,其算法比较简单,加密解密都只是一个模幂运算,速度快,效率高。在相当长的一段时间内,RSA在公钥密码算法中占据着主导地位,并得到了广泛的应用。

也许因为RSA密码的特殊地位和重要应用,国际上破解RSA的研究工作从来没有间断并在不断推进。目前RSA 1024已失去其安全性,将被淘汰。目前看来,RSA 2048(及以上)是安全的,而RSA算法复杂度随着模长的增加,运算量成指数级上升,同时也相应增加了密钥存储量。

2011年,国家密码管理局下发通知,停止审批RSA密码应用新建项目。

ECC(SM2)

1985年, Miller和 Koblitz分别独立提出了椭圆曲线密码(ECC)。和RSA相比,ECC算法的数学理论比较复杂,单位安全强度相对较高。ECC安全性建立在离散对数求取困难性基础上,它的破译或求解难度基本上是完全指数级的,而破解RSA的难度是亚指数级的。ECC公钥密码是单位比特强度最大的公钥密码,256比特的ECC公钥密码的安全强度比2048比特的RSA公钥密码强度还要强。要达到同样的安全强度,ECC所需的密钥长度远比RSA低。

2012年,国家密码管理局发布ECC国密标准算法SM2。

IBC (SM9)

基于标识的密码(Identity-Based Cryptography)简称IBC,是与RSA、ECC相比具有其独特性的又一种公钥密码。这种独特性表现在其公钥是用户的身份标识,而不是随机数(乱码)。

IBC这个概念最初出现于1984年Shamir(RSA密码创始人之一)的论文中,IBC密码系统公钥和私钥采用一种不同于RSA和ECC的特殊方法产生,即公钥是用户的身份标识,而私钥通过绑定身份标识与系统主密钥(master key)生成。

Miller在1985年创建椭圆曲线密码(ECC)后不久,在其一篇未发表的手稿中首次给出了计算双线性对的多项式时间算法。但因为当时双线性对在公钥密码中尚未取得有效应用,因此没有引起研究者的关注。当双线性对在公钥密码学中获得诸多应用后,其计算的重要性也日趋显着,时隔19年之后,Miller于2004年重新整理了当年的手稿,详尽地论述了双线性对的计算。双线性对的有效计算奠定了IBC密码算法基础。

2016年,国家密码管理局于发布IBC国密标准算法即SM9。

三种公钥密码应用比较

RSA与ECC/SM2公钥密码是基于数字证书的公钥密码,IBC/SM9是无证书的基于标识的公钥密码。

基于数字证书的公钥密码是目前广泛使用的公钥密码,由可信的权威机构(CA)为每个用户签发公钥证书。

CA拥有用户的身份和公钥后,CA需要验证用户的有效性和合法性,如果验证通过,CA为其颁发证书,而这个证书包含CA的私钥对用户公钥和身份等信息的签名。如果想要验证用户的公钥,需通过CA的公钥验证用户的证书。

IBC作为PKI体系的发展和补充,既保证了签名的安全特性,又满足了各种应用更灵活的安全需求。IBC应用于PKI中是无证书的(certificateless),由于标识本身就是实体的公钥,这类系统就不再依赖证书,在某种程度上简化了PKI的应用。

在IBC中,可信第三方是密钥生成中心KGC(key generation center),类似于PKI中的CA,一旦用户的身份标识确定,KGC仅仅只需要验证该用户是否拥有该身份标识。如果验证成功,则KGC为用户创建其私钥,这个私钥是根据用户身份标识和KGC的根私钥生成的。

IBC密码的应用比传统公钥密码的应用在某种程度上更加简单,但是,其代价是IBC密码的设计与计算却比其他公钥密码复杂得多。在IBC算法中,除了RSA和ECC中所具有的运算外,还增加了复杂的双线性对(bilinear)计算。因此,IBC密码算法运行速度远不如RSA和ECC

阅读全文

与双线性对加密消息相关的资料

热点内容
程序员在东南亚被毒打 浏览:284
php内存操作 浏览:6
1加手机号码放哪个文件夹 浏览:728
大兵程序员 浏览:785
青桔app福利中心在哪里 浏览:170
算法安全是智能化战争的博弈焦点 浏览:497
编译器用vs多少 浏览:316
pc单机游戏压缩包下载 浏览:570
服务器锁定什么意思 浏览:731
吐司解压神器 浏览:70
程序员的电脑一般用什么 浏览:934
如何从服务器中查询表是否存在 浏览:323
android首页布局源码 浏览:45
虎牙主播是怎么安卓投屏的 浏览:782
redmonk编程语言排行榜 浏览:110
android嵌入html5 浏览:676
云服务器能永久使用吗 浏览:904
linux安装openresty 浏览:386
ubunt配置php 浏览:975
达达取货码在app哪里 浏览:49