173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

非对称加密私钥保存

keros@mark 2022-11-07 资讯中心

本篇文章给大家谈谈非对称加密私钥保存以及对应的知识点,希望对各位有所帮助。

本文目录一览

使用非对称加密的服务器如何保管私钥?

首先私钥可以用口令保护。

你可以用U盘携带,不过你认为保险不?你想安全,就去正经的发密钥的公司取得那种不可直接复制的Ukey。(这玩意只能读不能写,自己写了也没用-没签发人签名)

或者,你就用你银行或社保等发的那种u-key

你有硬件就不泄露了?先是你总要有机会去插是吧,那时还不是能读,甚至有饶过的。

9 非对称加密

目前为止,本书中只讨论到对称加密。假设一个密码系统不只有一个密钥,而是有一对密钥,其中公钥可以自由地发布,而私钥由自己保管。其他人可以使用你的公钥来加密数据,这个信息只有你的私钥可以解密,这个被称为 公钥加密(public-key encryption)

很长一段时间,这都被认为是不可能的。然而从1970年开始,这一类型的算法开始出现。第一个广为流传的是MIT的三位密码学家:Ron Rivest,Adi Shamir 和Leonard Adleman提出的RSA。

公钥算法并不仅仅用来加密,实际上本书之前的部分已经提到过公钥算法而其不是直接用在加密上。有三个与公钥算法相关的主题

从表面来看,公钥加密好像可以淘汰之前提到的对称密钥算法。对于任何事情都可以使用公钥加密,也不需要对称密钥系统中的密钥交换过程。然而在实际的密码学系统中,可以看到到处都是混合的加密,公钥加密在其中起着重要作用,但是大部分的加解密以及认证工作还是基于对成密钥算法的。

目前来看最重要的原因是性能。与流密码(原生的流密码或者其他)算法相比,公钥加密机制实在是太慢了。RSA通常情况下需要2048位也就是256个字节。其加密需要0.29百万次循环,解密需要11.12百万次循环。而对称加密和解密只需要每字节约10次循环。这也意味着在对称密钥算法中,解密256位数据,只需要3000次循环,这个效率是非对称版本的4000次。而目前的密码系统使得对称加密更快了,在aes-GCM硬件加速或者Salsa20/ChaCha20只需要2或者4次每字节,更大程度上提高了性能。

实际的密码系统中还有更多其他的问题。例如对于RSA来说,它不能加密任何比它大的信息,通常情况是小于或者等于4096位,比大部分的需求要小的多。当然最重要的问题依然是上述的速度的问题。

本节简单描述RSA背后的数学问题。其本身并不能产生安全加密机制。之后会看到在其上构造的密码指导OAEP。

为了产生一个key,需要挑选两个大素数p和q,这些数需要随机私密的挑选。将两者相乘的到N,这个是公开的。然后选择一个加密指数e,这个也是公开的。通常这个数是3或者65537.因为这些数的二进制形式中仅有很少量的1。计算指数会更有效。(N,e)是公钥,任何人都可以用公钥来加密消息M,得到密文C。

接下来的问题是解密,有一个解密指数d,可以将C转化会M。如果指导p和q,d很容易计算。可以使用d来解密消息:

RSA的安全性依赖于对于不知道d的人来说解密操作是不可能的,并且在只知道(N,e)的情况下d的计算是非常难的。

类似于很多密码系统,RSA依赖于特定数学问题的难度。给定密文C,和公钥(N,e),反推出明文M。这被称为RSA难题。

最直接的方法是将N分解为p*q。给定p和q,攻击者只需要重复密钥拥有者的过程来计算产生d即可。

幸运的是,没有一个算法可以在合理的时间内分解这么大的数。不幸的是,目前也无法证明该算法一定不存在。更加糟糕的是,有一个理论上的算法,被称为Shor's Algorithm,可以在量子计算机上在合理的时间内分解一个数。目前,量子计算机还离我们有些远,但是未来某天可能就会成为现实。到时候RSA就变得不再有效。

本节中仅仅提到了分解大数这个最直接的方式来攻击RSA。在接下来的部分可以看到一系列针对RSA的实际攻击,其主要依赖于一些具体的实现。

目前,没有已知的实际的攻破RSA的方法。但这不意味着使用RSA的系统没有被攻破过。和其他被攻破的系统一样,应用中有很多组成部分,一旦其中的某部分没有恰当的使用,就会使整个系统变得不可用。更多有关RSA实施的细节的,参考【Bon99】和【AV96】,本部分只提及一些有趣的部分。

Salt是一个用python写的供应系统。它有一个模块叫做 cypto ,它没有使用已有的密码学系统,而是实现了一个自己的,其中使用的RSA和aes由第三方库提供。

很长一段时间里,Salt使用的公钥指数e是1,这也就意味着P e=P 1=P(mod N)。这也就意味着结果的密文就是明文。目前该问题已经被修复,这里只是为了提醒大家,不要实现自己的加密系统。Salt现在支持了SSH作为传输蹭,但是先前提到的DIY的RSA/aes系统依然存在,并且还是默认的传输层。

OAEP是Optimal asymmetric encryption padding的简称,是RSA填充的一种。它的结构类似于下图(文档中这个图有问题,下面是正确的图):

最终产生的需要被加密的数据是X||Y,是n位长,这个n是N的位数。它使用一个随机的块R它的长度是k,在这个标准中,k是一个定值。消息首先需要用0填充被扩充到n-k位。图中左边的长度为n-k位,右边的长度为k。随机块R和以0扩充的M,M||000...使用两个陷阱函数,G和H。陷阱函数都是从一个方向计算非常简单,但是逆转非常的难。世纪中通常为hash函数。

G的输入是k位,输出是n-k位,H的输入是n-k位,输出是k位。

然后结果的X和Y被连接在一起,然后由标准的RSA来进行加密产生密文。

解密的时候,要反过来操作。接收者收到X||Y,他们是指导k的,因为这个是协议里的定值。所以前n-k是X,后k位是Y。

想要得到M,M||000...,需要去计算

可以看出,对于一些H和G来说,需要所有的X和Y才能找到M。对于H和G有很多种基于Hash函数的选择。

绝大多数的公钥加密只能一次加密一小块,一般都远小于要发送的信息。另外这些算法还很慢,比对称加密要慢的多。通常非对称加密用来连接密码系统。

有了公钥密码和密钥交换,是密码学里面两个非常重要的部分,因为人们总是需要与其他人交换私密的信息。有了这两个技术就可以安全地和其他人交流。

目前为止讨论的加密都没有任何形式的身份认证。这也就意味着对消息进行加密和解密,并不能验证得到的消息确实是发送者发送的原本的消息。

没有身份认证的加密可以提供隐私性,但是如之前章节所言,没有身份认证,尽管攻击者不知道任何原文的信息,他任然可以修改加密的信息。接收这些消息会泄漏一些私密的信息,这也就意味着私密性不在。例如之前第7章提到的CBC的填充攻击。

综上所言,出了加密私密的信息之外,还需要对其进行身份认证。通常身份认证都是对消息增加一些额外的可计算的信息。类似于加密,身份认证也分为对称类型的和非对称类型的。对称类型的通常被称为消息认证(message authentication),非对称类型的通常被称为数字签名。

下一章先介绍一下另一个密码学中的重点:hash函数。hash在产生签名和消息认证等过程中都需要用到。

[Bon99] Dan Boneh. Twenty years of attacks on the RSA cryptosystem. Notices of the AMS , 46:203–213, 1999. URL: .

[AV96] Ross Anderson and Serge Vaudenay. Minding your pʼs and qʼs. In In Advances in Cryptology - ASIACRYPT’96, LNCS 1163 , 26–35. Springer� Verlag, 1996. URL: .

非对称加密算法 (RSA、DSA、ECC、DH)

非对称加密需要两个密钥:公钥(publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

非对称加密算法的保密性好,它消除了最终用户交换密钥的需要。但是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。使用最广泛的是 RSA 算法,Elgamal 是另一种常用的非对称加密算法。

收信者是唯一能够解开加密信息的人,因此收信者手里的必须是私钥。发信者手里的是公钥,其它人知道公钥没有关系,因为其它人发来的信息对收信者没有意义。

客户端需要将认证标识传送给服务器,此认证标识 (可能是一个随机数) 其它客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务器端保存的是公钥,其它服务器知道公钥没有关系,因为客户端不需要登录其它服务器。

数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性。

简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少。

不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密 (就像字迹他人无法学会一样),得到签名。如果用公钥,那每个人都可以伪造签名了。

问题起源:对1和3,发信者怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?

这样就需要第三方机构来保证公钥的合法性,这个第三方机构就是 CA (Certificate Authority),证书中心。

CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。

信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用 CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。

RSA 是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

A 要把信息发给 B 为例,确定角色:A 为加密者,B 为解密者。首先由 B 随机确定一个 KEY,称之为私钥,将这个 KEY 始终保存在机器 B 中而不发出来;然后,由这个 KEY 计算出另一个 KEY,称之为公钥。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给 A,A 收到公钥后,利用公钥对信息加密,并把密文通过网络发送到 B,最后 B 利用已知的私钥,就能对密文进行解码了。以上就是 RSA 算法的工作流程。

由于进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上好几倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。RSA 的速度是对应同样安全级别的对称密码算法的1/1000左右。

比起 DES 和其它对称算法来说,RSA 要慢得多。实际上一般使用一种对称算法来加密信息,然后用 RSA 来加密比较短的公钥,然后将用 RSA 加密的公钥和用对称算法加密的消息发送给接收方。

这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,否则的话可以越过 RSA 来直接攻击对称密码。

和其它加密过程一样,对 RSA 来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设 A 交给 B 一个公钥,并使 B 相信这是A 的公钥,并且 C 可以截下 A 和 B 之间的信息传递,那么 C 可以将自己的公钥传给 B,B 以为这是 A 的公钥。C 可以将所有 B 传递给 A 的消息截下来,将这个消息用自己的密钥解密,读这个消息,然后将这个消息再用 A 的公钥加密后传给 A。理论上 A 和 B 都不会发现 C 在偷听它们的消息,今天人们一般用数字认证来防止这样的攻击。

(1) 针对 RSA 最流行的攻击一般是基于大数因数分解。1999年,RSA-155 (512 bits) 被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G 中央内存的 Cray C916计算机上完成。

RSA-158 表示如下:

2009年12月12日,编号为 RSA-768 (768 bits, 232 digits) 数也被成功分解。这一事件威胁了现通行的1024-bit 密钥的安全性,普遍认为用户应尽快升级到2048-bit 或以上。

RSA-768表示如下:

(2) 秀尔算法

量子计算里的秀尔算法能使穷举的效率大大的提高。由于 RSA 算法是基于大数分解 (无法抵抗穷举攻击),因此在未来量子计算能对 RSA 算法构成较大的威胁。一个拥有 N 量子位的量子计算机,每次可进行2^N 次运算,理论上讲,密钥为1024位长的 RSA 算法,用一台512量子比特位的量子计算机在1秒内即可破解。

DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS (DigitalSignature Standard)。 DSA 是基于整数有限域离散对数难题的。

简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改,数字签名,是单向加密的升级。

椭圆加密算法(ECC)是一种公钥加密算法,最初由 Koblitz 和 Miller 两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。

ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥 (比如 RSA),提供相当的或更高等级的安全。ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用。

比特币钱包公钥的生成使用了椭圆曲线算法,通过椭圆曲线乘法可以从私钥计算得到公钥, 这是不可逆转的过程。

Java 中 Chipher、Signature、KeyPairGenerator、KeyAgreement、SecretKey 均不支持 ECC 算法。

DH,全称为"Diffie-Hellman",它是一种确保共享 KEY 安全穿越不安全网络的方法,也就是常说的密钥一致协议。由公开密钥密码体制的奠基人 Diffie 和 Hellman 所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。也就是由甲方产出一对密钥 (公钥、私钥),乙方依照甲方公钥产生乙方密钥对 (公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥 (SecretKey) 对数据加密。这样,在互通了本地密钥 (SecretKey) 算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯。

具体例子可以移步到这篇文章: 非对称密码之DH密钥交换算法

参考:

非对称加密算法的优点有哪些?

非对称加密算法的优点如下:安全性高。

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

扩展资料:

主要应用:

非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。

假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。

参考资料来源:百度百科-非对称加密算法

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。非对称加密私钥保存的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

产品列表
产品封装
友情链接