算法安全分析
一.加密算法的发展史
公元前5世纪,斯巴达人发明了塞塔式密码(滚筒密码),要加密时,先绕棍子卷一张纸条,把信息沿棒水平方向写,写一个字旋转一下,直到写完。解下来后,纸条上的文字消息杂乱无章,这就是密文。将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。如果不知道棍子的粗细,则无法解密里面的内容。
公元前1世纪,凯撒大帝为了能够确保他与远方的将军之间的通信不被敌人的间谍所获知,发明了Caesar密码。每个字母都与其后第3位字母对应,然后进行替换,比如,“a”对应于“d”,“b”对应于“e”,以此类推。
20世纪早期,德国发明了名为enigma的轮转加密机,能对明文进行自动加密,产生的可能性高达1016种,当时处于世界领先地位,二战期间被德军大量使用,后来,波兰人首先破译了德军密码,并发明了名为Bomba的密码破译机,能在2个小时内破解密码。波兰人在被占领前夕,把Bomba交给了英国,并在布莱切利园(Bletchley Park)内继续研发并最后设计出了世界上第一台电子计算机巨人(Colossus),破解了大量德军密文,这,改变了历史。
1972年,1972年美国IBM公司研制的对称密码体制加密算法DES(Data Encryption Standard)。
1976年,两位美国计算机学家,发明了划时代的“非对称加密算法”,DH算法。
1977年,三位学者在麻省理工学院一起提出了RSA算法,这是至今影响最深远的算法,有计算机网络的地方都能找到它。
二.信息安全算法的必要性,每年造成的损失。
泄漏成本:IBM2022年数据泄露成本报告显示,研究组织的数据泄露事件的全球平均成本达到了435万美元的历史新高。这一数字比2020年增加了12.7%。
未来预测:据权威机构预测,未来三年,全球网络损害成本将以每年15%的速度增长,到2025年,达到10.5万亿美元的损失,仅低于中美两国的GDP。
最大影响:对企业而言,除了经济损失,声誉受损才然是公司最大的成本之一。因为客户的信任很难建立,但是很容易被打破。
三.信息安全算法有哪些类型?
四大类:非对称加密,对称加密,摘要算法,签名算法,这4种类型的算法的组合应用让我们的网络,通信,个人隐私,
国家机密的安全到有效的保证。
四.非对称算法
1.什么是非对称加密算法)
在对称加密中,我们只需要一个密钥,通信双方同时持有。但是,非对称加密算法则需要两个密钥:一个是公开密钥(publickey:简称公钥),一个是私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
2.非对称加密算法的特点。
密钥管理容易,安全性高,但是加解密速度远慢于对称加密,适合小数据量加解密或者数据签名。
3.非对称算法的应用场景:
1.服务端加签、客户端解签验证(例如SSH协议),如需要出差或在家办公的运维与开发人员经常通过Xshell直连服务器,一般是通过SSH协议,Xshell生成一对公钥\私钥,把私钥放在本地C:\Users\用户名.ssh目录下并导入shell,把公钥发送给服务器管理员,放在服务器中。这样运维与开发人员连接服务器的时候,使用自己私钥加密,然后发给服务器使其用公钥解密,达到一个签名的效果。
2.相反的一个场景就是加解密了,比如常见的HTTPS中,服务端先给客户端发送一个公钥,客户端通过公钥解密一些信息(比如客户端生成的会话秘钥),发送给服务端,服务端通过自己的私钥解密,达到信息安全传输的目的。
3.非对称算法有哪些需要注意的问题?
(1)小心中间人攻击。
(2)私钥的安全存储。
4.非对称加密的算法有哪些?
RSA,Elgamal,背包算法,Rabin,D-H,ECC,虽然每个算法的原理不一样,但是从大的角度看,最终都是实现一个效果:非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求
5.下面具体拿最流行的RSA算法展开说说。
1.RSA算法
1.1 RSA定义
1.乙方生产两把密钥(公钥和私钥)。公钥是公开的,任何人都可获得,私钥是保密的,如果私钥泄露,则通信已不安全。
2.甲方获取乙方的公钥,然后用他对信息加密。
3.乙方得到加密后的信息,用私钥解密。
1.2 RSA安全性
是一种非对称算法,有RSA512, RSA1024,RSA2048,他的原理决定了位数越高越难破解,目前有记录的被破解的最高位是 RSA-768,所以此记录也是被认为威胁了现通行的1024-bit密钥的安全性,最后结论是可以认为RSA512不安全,RSA1024是基本安全的,RSA2048是非常安全的,因为理论上2048位的RSA加密用超级计算机破解也需要80年,在量子计算机没有真正落地可用前理论可靠,详细原理涉及比较多到数论知识,可看[链接](RSA算法原理(二) - 阮一峰的网络日志 (ruanyifeng.com))详情了解。
1.3 RSA算法应用场景
1.经典用法:公钥加密,私钥解密,一般用于加密少量数据。
2.反向用法:私钥加密,公钥解密,一般用于校验数据是否被篡改,比如签名算法,为了保证自己的签名是独一无二的,可以用私钥加密自己的签名,其他人公钥解密查看签名。
注意:因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。目前,世界上最主要的数字服务认证商是位于美国加州的Verisign公司,它的主要业务就是分发RSA数字证书。
1.4 RSA加解密效率
2.ECC算法
2.1 ECC算法的由来
椭圆加密算法(ECC)是一种公钥加密算法,最初由 Koblitz 和 Miller 两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类
ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用,下面是RSA和ECC的加密安全位一致情况下密钥长度的对比。
加密安全位RSA密钥长度ECC密钥长度RSA VS ECC1283,07225612:11927,68038420:125615,36051230:1
上图可知,ECC-256和RSA-3072是相同安全等级的,但是加密解密的效率相差甚远,但是ECC的算法的数学理论非常深奥复杂,工程应用中比较难实现,可但是他可以用较少的计算能力提供比RSA加密算法更高的安全强度,有效地解决了“提高安全强度必须增加密钥长度”的工程实现问题。
2.2 ECC VS RSA
1、更适合于移动互联网:ECC加密算法的密钥长度很短(256位),意味着占用更少的存储空间,更低的CPU开销和占用更少的带宽。随着越来越多的用户使用移动设备来完成各种网上活动,ECC加密算法为移动互联网安全提供更好的客户体验。
2、更好的安全性:ECC加密算法提供更强的保护,比目前的其他加密算法能更好的防止攻击,使你的网站和基础设施比用传统的加密方法更安全,为移动互联网安全提供更好的保障。
3、更好的性能:ECC加密算法需要较短的密钥长度来提供更好的安全,例如,256位的ECC密钥加密强度等同于3072位RSA密钥的水平(目前普通使用的RSA密钥长度是2048位)。其结果是你以更低的计算能力代价得到了更高的安全性。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA快十几倍。
4、更大的IT投资回报:ECC可帮助保护您的基础设施的投资,提供更高的安全性,并快速处理爆炸增长的移动设备的安全连接。 ECC的密钥长度增加速度比其他的加密方法都慢(一般按128位增长,而 RSA则是倍数增长,如:1024 -2048–4096),将延长您现有硬件的使用寿命,让您的投资带来更大的回报。
5.RSA兼容所有平台,ECC部分平台不支持(Android 2.3以下,IOS5.0及以下,Windows XP等)
五.对称算法
密钥管理难,一般用于内部系统,安全性居中,但是加解密速度非常快,适合大数据量加解密。
3. Des算法
3.1 定义
DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。
DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次
3.2 安全性
安全性不足,已被正式可以在短时间内破解,现在极少使用了。
4. 3Des算法
4.1 定义
3DES(称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解; 3DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,它相当于是对每个数据块使用三次DES加密算法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
4.2 现状
被银行等机构使用,但其处理速度不高,除了特别重视向下兼容性的情况外,很少被用于新的用途。
5.AES算法
5.1 AES是对称算法
这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥,与非对称加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一,类似的对称算法还有DES,3DES,AES算法是DES算法的升级版本。
5.2 AES算法定义
AES 算法依次对每个128 位数据块应用一系列数学变换。由于这种方法的计算要求较低,AES 可用于笔记本电脑和智能手机等消费类设备上进行数据加密,以及快速加密大量数据。它使用相同的 128、192或256 位密钥进行加密和解密。128、192 或 256 位的密钥可以理解为分别对应16、24和32个字节的16进制宇符串密钥,AES 系统的安全性会随密钥长度呈指数增长。
即使使用 128 位密钥,通过对 2128 个可能的密钥值进行暴力枚举,来尝试破解 AES加密后的数据的任务也是个非常计算密集型的任务。事实上,AES算法本身从未被破解,但是有通过其他技术手段获取到密钥的攻击方法在实验室完成。
5.3 AES的应用场景
由于这种加密的计算要求较低,AES 可用于笔记本电脑和智能手机等消费类设备上进行数据加密,以及快速加密大量数据。
5.4 AES加解密效率
6.AES算法和RSA算法的结合
6.1 结合使用原因
1.AES加解密虽然效率很高,但是可能会出现密钥泄露;
2.RSA的泄露风险虽然及小,但是解密大数据速度非常慢,不能满足现在移动互联网公司的快速传递甚至数据的要求;
3.此外单一的加密算法始终不如多个加密算法结合安全,所以常见的方案AES+RSA组合加密。
6.2 AES+RSA结合思路与实现
1.思路:利用RSA 来加密传输 AES的密钥,用 AES的密钥 来加密数据。
2.具体实现流程案例
前提:【服务方】生成一对 RSA 秘钥,自己保留私钥,将公钥由互联网交给【合作方】
从【合作方】向【服务方】方向看 →
【合作方】2.1 使用 AES 秘钥对要传送的报文数据(明文) Data 进行加密,生成密文 EncryData;
【合作方】2.2 使用 RSA 公钥对AES秘钥加密,生成 EncryKey ;
【合作方】2.3 将加密后的 AES 秘钥 EncryKey 和加密后的报文 EncryData 通过网络传输给服务器端;
【服务方】2.4 通过网络拿到上述(3)步骤中的 EncryKey 和 EncryData ;
【服务方】2.5 用 RSA 私钥对 EncryKey (加密的 AES 秘钥)进行解密操作,得到 AesKey;
【服务方】2.6 用 AesKey 解密传入过来的加密报文 EncryData,得到报文数据(明文) Data ,流程结束。
注意:如果是【服务方】向【合作方】请求,上面的流程需要反过来,并且,必须要由【合作方】生成一对 RSA 秘钥,自己保留私钥,公钥提供给【服务方】才可以,不可以用同一对秘钥即加密又解密,否则丢失安全性。
六.常见的摘要算法
7.MD5算法
7.1 定义
任何信息,都可以通过MD5算法运算生成一个16字节(128位)的散列值,但却无法通过这16个字节的散列值获得加密前的信息。最终这16个散列值,通常用一个长度为32的十六进制字符串来表示。他是对一段信息产生信息摘要来防止被纂改的,MD5有3个特点,分别是****加密不可逆,不变性,散列性
7.2 MD5原理
MD5的加密过程,整体来看,就是先定义四个值,然后用这四个值,对原文信息进行计算,并得到新的四个值,然后再对原文进行计算,再得到新的四个值,如此循环一定次数,最终对最后的这四个值进行简单的字符串拼接,就得到了最终的密文。
7.3 应用场景
1.校验文件的完整性
2.存储用户密码
3.数字签名
7.4 缺点
存在碰撞问题,就是指对于一个算法,由明文生成的密文,并不是唯一的,甚至可以人为的通过构造新的明文去得到指定的密文。对于能出现这种情况的算法,我们就说这个算法是有碰撞问题的,简单理解就是两个不同的明文,通过算法加密,却得到了同样的密文,目前为止,MD5算法和SHA-1算法,都被证实了存在碰撞问题,所以在安全性特别高的场景下,都不会用MD5算法和SHA-1算法,至少都用SHA-256算法了。
8.SHA算法
8.1 定义
SHA算法(Secure Hash Algorithm),又叫安全散列算法,是基于MD4演化而来,SHA算法,是一个系列家族,包括SHA-1,SHA-2(SHA-224、SHA-256、SHA-384、SHA-512),括号中的四个通常被统称为SHA-2。
- SHA-1的最终密码长度是160位,但是目前很容易被破解。
- SHA-256的最终密码长度是256位,基本不可破解。
- SHA-384的最终密码长度是384位。
- SHA-512的最终密码长度是512位。
SHA算法,实际上也是一种消息摘要算法,这个和MD算法是类似的,主要特点也是不可逆,目前SHA-1已经不安全,一般用SHA-256。
8.2 SHA-256原理
和MD5一样,先定义常量,然后循环计算,最后组装,不同的就是循环里面的计算方式
8.3 应用场景
1.校验文件的完整性。
2.比特币的挖矿算法就是SHA-256算法,
3.https签名算法,比如google浏览器的签名算法就是带RSA的SHA-256算法。
4.数字签名原理
七.数字签名算法
常见的签名算法有RSA,DSA,ECDSA
7.1 RSA其实是加密算法,但是他也可以用于数字签名。
7.2 DSA是对称加密算法,是基于整数有限域离散对数难题的,其安全性与RSA接近 ,但是只能用于签名,不能用于加解密,也不能进行密钥交换,他的算法流程如下:
- 发送方使用SHA-1和SHA-2编码将发送内容加密产生的数字摘要;
- 发送方用自己的专用密钥对摘要进行再次加密得到数字签名;
- 发送方将原文和加密后的摘要传给接收方;
- 接收方使用发送方提供的密钥对进行解密 ,同时对收到的内容用SHA-1/SHA-2编码加密产生同样的摘要;
- 接收方再将解密后的摘要和d步骤中加密产生的摘要进行比对,如果两者一至,则说明传输过程的信息没有被破坏和篡改,否则传输信息则不安全。
7.3 ECDSA 是椭圆曲线数字签名算法,他是ECC算法和DSA的结合,签名过程和DSA类似,但是签名算法采用ECC,主要用于对数据创建数字签名,你可以把他看成一个不可伪造的真实签名,不能用于对数据进行加密,他只能保证数据没有被纂改;微软的产品的安装的产品密钥就是用的他。
五.数字签名是什么?
数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性、认证数据来源和抗否认,遵循OSI参考模型、私钥签名和公钥验证。也是非对称加密算法和消息摘要算法的结合体。
八.SSL与TLS
前言知识
在SSL/TLS出现之前,很多应用层协议(http、ftp、smtp等)都存在着网络安全问题。最常见的http协议,在传输过程中使用的是明文信息,传输报文一旦被截获便会泄露传输内容;传输过程中报文如果被篡改,对方无法轻易发现;无法保证消息交换的对端身份的可靠性。为了解决此类安全问题,在应用层和传输层之间加入了SSL/TLS协议,升级为https。SSL/TLS目前已经广泛用于数据安全协议。关于SSL/TLS有很多开源软件包,如openSSL,mbedtls等。openSSL功能更强大,mbedtls小巧更适合嵌入式设备。
加密从无到有经历了5个时代。
1.明文时代
2.对称加密时代
3.非对称加密时代
4.公证时代(非对称加密算法+CA认证)// 公证时代的解决方案是SSL/TLS协议加密通信基础。5.SSL/TLS时代
SSL/TLS协议的基本过程:
1、通过CA体系交换公钥
2、使用非对称加密算法,交换用于对称加密的密钥
3、有效数据使用对称加密算法,进行密文传输
前两步又称为"握手阶段"(handshake),是SSL/TLS加密通信的基础。
9. 什么是SSL
**SSL是Secure Sockets Layer (安全套接层)的简写,SSL协议是为网络通信提供安全的一种安全协议,继任者为TLS,即 Transport Layer Security传输层安全.**SSL是一种流行的加密技术,最早在1994年由网景推出,上世纪90年代以来已经被所有主流浏览器采纳。目前该技术在各大网银、在线支付、电商网站、门户网站、电子邮件等重要网站上广泛使用。当用户访问一些安全网站时,会在URL地址旁看到一个“锁”,表明你在该网站上的通讯信息都被加密。这个“锁”表明,第三方无法读取你与该网站之间的任何通讯信息。在后台,通过SSL加密的数据只有接收者才能解密。
SSL协议分两层
9.1 SSL记录协议
它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持,它工作在会话层。
9.2 SSL握手协议
它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等,他工作在表示层。
10. 什么是TLS
10.1 定义
SSL版本SSLv2SSLv3SSLv3.1SSLv3.2SSLv3.3SSLv3.4TLS版本TLS1.0(1999.11)TLS1.1(2006.3)TLS1.2(2008.10)TLS1.3(2018.3)使用情况淘汰淘汰在用在用在用在用
上面可知,从SSL v3.1以后,名称都改为TLS
TLS和SSL协议不能干净地归于一个单独的通信层,不管是OSI模型还是TCP/IP模型。TLS的运作基于一些提供可靠通信的传输层协议(比如TCP协议),这意味着它应该在传输层协议之上。它向更高层的应用层协议(如HTTP、SIP)提供加密服务,这项工作通常属于OSI模型的表示层协议。然而应用程序通常将TLS协议作为传输层协议对待,尽管应用程序在使用TLS协议时必须处理初始握手流程以及交换了的身份证书。
10.2 TLS版本使用情况
1.安全网络咨询公司GIAC的2021年的调查数据表明,在商业领域客户中,绝大部分的用户仍然使用TLS 1.2
- 趋势是TLS 1.3 的使用量正在逐步增加,而TLS 1.2 的使用量却在下降
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1Pm7v0K-1671417049789)(https://pic3.zhimg.com/v2-530f216d3ff53cb1d4d736d3a6996ed2_r.jpg)]
10.3 TLS-1.3相对于1.2的优势
- 减少了 round-trip 处理流程,快速握手机制降低了协商周期时间(300ms->200ms)
- 因为高效的快速握手机制带来的协商时间缩短,优化了网络时延
- 完善了抵御跨协议攻击的弹性处理机制
- 移除了一些旧版本的带安全漏洞的加密算法
11. SSL和SSL的主要区别
1.SSL表示安全套接字层,而TLS表示传输层安全。
2.SSL协议为密码套件提供支持,而TLS不提供任何此类支持,而是使用标准化协议,该协议使定义新的密码套件类别变得容易
3.TLS协议不使用“无证书”警报消息,而是使用其他警报消息,与SSL协议不同,SSL协议仍然依赖“无证书”警报消息
九.SSL/TLS库
12. Mbed TLS
Mbed TLS是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码。这是双重许可与Apache许可证 2.0版(与GPLv2许可也可)。网站上指出,mbed TLS的目标是“易于理解,使用,集成和扩展”
核心SSL 库用C编程语言编写,并实现SSL模块,基本加密功能并提供各种实用功能。与OpenSSL和TLS的其他实现不同,mbed TLS设计为适合小型嵌入式设备,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM。它也是高度模块化的:每个组件,如加密函数,可以独立于框架的其余部分使用。版本也可用于Microsoft Windows和Linux。因为mbed TLS是用C编程语言编写的,没有外部依赖,
PolarSSL的后期版本超过1.3.0,为内核分配和线程添加抽象层,以“支持与现有嵌入式操作系统的更好集成”——机器翻译的凑合着看。想看原版的自行Wikii
现在叫MbedTS,也许是最小巧的ssl代码库。高效、便于移植和集成。尤其适合嵌入式应用。也就是说,无论是嵌入式还是桌面软件版的编程,只要你用的到AES,RSA等加密算法,你都可以直接拿过来源码放进你的工程中,进行编译管理,不用带着DLL,或者必须安装一些不必要的库,并且算法是标准库。
13. OpenSSL
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,且目前多数SSL加密的网站都使用OpenSSL的开源软件包。
OpenSSL与SSL的关系是什么?OpenSSL是一个商业级的、功能齐全的工具包,用于通用加密和安全通信。SSL是Secure Socket Layer(安全套接层协议)的缩写,它为Internet上传输的数据提供加密并验证Web服务器。简单来说,OpenSSL是使用广泛的SSL开源实现。
OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,应用广泛。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,包括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。
14.加密算法的应用–数字证书
1.为什么我们需要数字证书?
2.证书概念,使用场景,颁发机构,
3.SSL自创建证书
4.openssl生成自签名证书(完整版) - 简书 (jianshu.com)
5.使用自定义根 CA 生成自签名证书
// 1.生成 CA 根证书私钥;des3算法,2048位强度的rsa私钥,文件夹里会产生一个名为root.key的秘钥文件
genrsa -des3 -out root.key 1024// 2.生成我们的根证书签名请求文件
req -new-key root.key -out root.csr
// 3.0通过CSR生成 CA 的自签证书(如果我们自己扮演CA这个角色,那么签名请求文件就是我们上步产生的 root.csr)
req -new-x509 -key root.csr -out root.crt -days 365-config ../openssl.conf
// 3.1 通过私钥生成 CA 的自签证书 (如果我们自己扮演CA这个角色,那么签名请求文件就是我们上步产生的 root.csr)
req -new-x509 -key root.key -out root.crt -days 365-config ../openssl.conf
-----上面是创建CA证书的3个流程,最后可以是1->3.1或者1->2->3.0,效果是一样的,注意,3.0和3.1都会让你输入一些组织信息,请记住,输入的信息和你接下来要和服务器签名的信息一致------// 4.生成服务器端私钥
genrsa -out server.key 1024// 5.生成服务器端签名请求文件,注意,和3.0,3.1一样,需要让你输入一个组织信息,输入的信息记得和根证书(3.0,3.1)一致
req -new-key server.key -out server.csr -config openssl.conf
// 6.利用CA进行签名证书
ca -in server.csr -out server.crt -keyfile root.key -cert root.crt -days 365-config openssl.conf
15.密钥保护手段
一.ESM加密芯片,主要原理
1.在安全的系统环境下,把密钥保存到ESM加密芯片;
2.存储在片上安全Flash的密钥任何情况下都不能通过端口获取。
3.应用程序代码只能够通过特定模块使用存储的密钥进行加解密操作。
二.密钥托管:
用户在向 CA 申请数据加密证书之前,必须把自己的密钥分成 t 份交给可信赖的 t 个托管人。任何一个托管人都无法通过自己存储的部分用户密码恢复完整的用户密码。
三.加密服务器存储:
把密钥和算法放在一个独立的服务器上,甚至做成一个专用的硬件设施,对外提供加密和解密服务,应用系统通过调用这个服务,实现数据的加密解密。由于密钥和算法独立部署,由专人维护,每次加密、解密都需要进行一次远程服务调用,系统性能开销也较大。
版权归原作者 小鸡快跑O_O 所有, 如有侵权,请联系我们删除。