云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库_方舟搜不到服务器_返现

小七 141 0

椭圆曲线密码(相对容易理解)入门

椭圆曲线密码术(ECC)是当今应用最广泛、但最不为人所理解的密码技术之一。在CloudFlare,我们广泛使用ECC来保护从客户的HTTPS连接到如何在数据中心之间传递数据的所有内容。从根本上讲,我们认为,为了信任任何安全系统,了解其背后的技术是很重要的。为此,我们四处寻找,找到了一本好的、相对容易理解的ECC入门教程,以便与我们的用户分享。找不到一个,我们决定自己写一个。接下来就是这样。警告:这是一个复杂的主题,不可能归结为一篇精辟的博客文章。换言之,接受一点史诗般的故事吧,因为有很多东西要讲。如果你只需要要点,TL;DR IS:ECC是下一代的公钥密码体制,并且基于目前所理解的数学,比第一代公钥密码体制(如RSA)提供了更为安全的基础。如果您担心在保持性能的同时确保最高级别的安全性,ECC采用是有意义的。如果你对细节感兴趣,请继续读下去。公钥密码术的曙光密码学的历史可以分为两个时代:古典时代和现代时代。两者之间的转折点出现在1977年,当时RSA算法和Diffie-Hellman密钥交换算法都被引入。这些新算法是革命性的,因为它们代表了第一个可行的密码方案,其中安全性是基于数论的;它是第一个在没有共享秘密的情况下实现双方之间的安全通信的。密码学从安全地在世界各地传输秘密密码本发展到能够在任何两方之间进行可证明的安全通信,而不必担心有人监听密钥交换。

大数据下-椭圆曲线密码(相对容易理解)入门

惠特菲尔德·迪菲和马丁·赫尔曼现代密码学建立在这样一个理念上:加密数据所用的密钥可以公开,而用来解密数据的密钥可以保持私有。因此,这些系统被称为公钥密码系统。第一个,也是这些系统中使用最广泛的是RSA,它是以第一次公开描述该算法的三个人的首字母缩写命名的:Ron Rivest,Adi Shamir和Leonard Adleman。要使公钥密码系统工作,您需要的是一组算法,它们在一个方向上容易处理,但很难撤消。对于RSA,easy算法将两个素数相乘。如果乘法是简单的算法,那么它的困难对算法就是将乘法的乘积分解成两个分量素数。具有这种特性的算法——一个方向容易,另一个方向难——被称为陷阱门函数。寻找一个好的陷门函数是建立一个安全的公钥密码系统的关键。简单地说:在陷门函数中朝一个方向前进的难度与朝另一个方向前进的难度之间的差距越大,基于它的密码系统就越安全。一个玩具RSA算法RSA算法是最流行和最容易理解的公钥密码系统。它的安全性依赖于这样一个事实:因子分解速度慢,乘法速度快。下面是一个小的RSA系统是什么样子以及它是如何工作的。一般来说,公钥加密系统有两个组成部分,公钥和私钥。加密的工作原理是获取一条消息并对其进行数学运算以获得一个随机的数字。解密获取随机数,并应用不同的操作返回原始数。使用公钥的加密只能通过使用私钥解密来撤消。计算机不能处理任意大的数字。我们可以通过选择一个最大值,只处理小于最大值的数字,来确保我们处理的数字不会太大。我们可以把数字当作模拟时钟上的数字。任何导致数字大于最大值的计算都会被环绕到有效范围内的数字。在RSA中,这个最大值(称之为max)是由两个随机素数相乘得到的。公钥和私钥是两个特别选择的大于零小于最大值的数字,称它们为pub和priv。要加密一个数字,需要将其自身乘以pub倍,确保在达到最大值时绕过来。要解密一条消息,将其自身乘以priv倍,就可以回到原来的数字。这听起来很奇怪,但实际上很管用。这个财产被发现时是一个重大突破。要创建一个RSA密钥对,首先随机选择两个素数以获得最大值(max)。然后选择一个数字作为公钥酒吧。只要知道这两个素数,就可以从这个公钥计算出相应的私钥priv。这就是因子分解与分解RSA的关系——将最大数分解成它的素数可以让你从公钥中计算出某人的私钥并解密他们的私人消息。让我们用一个例子来说明这一点。以质数13和7为例,它们的乘积给出了我们的最大值91。让我们把我们的公共加密密钥设为数字5。然后利用我们知道7和13是91的因子这一事实,并应用一种称为扩展欧几里德算法的算法,我们得到私钥是数字29。这些参数(max:91,pub:5;priv:29)定义了一个功能齐全的RSA系统。你可以取一个数,乘以它自身5次来加密它,然后取这个数再乘以它本身29次,你就得到了原来的数字。让我们使用这些值来加密消息"CLOUD"。为了在数学上表示信息,我们必须把字母变成数字。拉丁字母表的一个常见表示是UTF-8。每个字符对应一个数字。

大数据下-椭圆曲线密码(相对容易理解)入门

在这种编码下,云是67、76、79、85、68。这些数字中的每一个都小于我们的最大值91,所以我们可以单独加密它们。让我们从第一个字母开始。我们必须将其自身乘以5倍才能得到加密值。67×67=4489=30**因为4489比max大,我们得把它包起来。我们用91除以余数。4489=91×41+3030×67=2010=88×67=536=8181×67=5427=58这意味着67的加密版本是58。对我们得到的每个字母重复加密消息云的过程:58、20、53、50、87要解密这个加扰的消息,我们取每个数字并将其自身乘以29倍:58×58=3364=88(记住,当数字大于max时,我们会将其括起来)>88×58=5104=8…9×58=522=67喂,我们回到67了。这与其余的数字一起工作,生成原始消息。它的好处是你可以取一个数,用它本身乘以若干次得到一个随机数,然后再把这个数乘以一个秘密数,就可以回到原来的数字。不是完美的活板门RSA和Diffie-Hellman之所以强大,是因为它们有严格的安全证明。作者证明,打破这个系统等同于解决一个被认为很难解决的数学问题。因式分解是一个非常著名的问题,自古以来就有研究(见埃拉托斯泰尼的筛子)。任何突破都将是大新闻,并将为发现者带来可观的财政收入。

大数据下-椭圆曲线密码(相对容易理解)入门

"寻找因素,赚钱"——臭名昭著的T.K.G.(路透社)也就是说,因材施教并不是最难解决的问题。专门的算法,如二次筛和一般数域筛被创建来解决素数因式分解问题,并已取得了一定的成功。这些算法比单纯猜测已知素数对的朴素方法更快,计算量更少。当被分解的数字越大,这些因子分解算法就越有效。当数字(即密钥的位长度)变大时,分解大数和乘大数的难度之间的差距正在缩小。随着可用于解密数字的资源增加,密钥的大小需要增长得更快。对于计算能力有限的移动和低功耗设备来说,这不是一个可持续的局面。长期来看,因子分解和乘数之间的差距是不可持续的。所有这些意味着RSA并不是未来密码学的理想系统。在一个理想的陷门函数中,简单方法和困难方法对于所讨论的数字的大小以相同的速率变得更难。我们需要一个基于更好的陷门的公钥系统。椭圆曲线:一个更好的活板门的组成部分在引入RSA和Diffie-Hellman之后,研究人员探索了其他基于数学的密码解决方案,寻找除因子分解之外的其他算法,这些算法可以作为良好的陷门函数。1985年,密码算法基于一个叫做椭圆曲线的深奥数学分支被提出。但究竟什么是椭圆曲线,它的陷门函数是如何工作的呢?不幸的是,与因式分解(我们在中学第一次做的)不同,大多数人对椭圆曲线的数学并不熟悉。数学不是那么简单,也不是解释它,但我将在接下来的几节中对它进行一次尝试。(如果你的眼睛开始变得呆滞,你可以直接跳到下面的部分:这都是什么意思。)满足一个椭圆曲线的数学点集。椭圆曲线的方程如下所示:y2=x3+ax+b这张图是t