有关密钥的最全总结都在这了

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 有关密钥的最全总结都在这了

目录



在之前的文章中,我们讲到了对称密码,公钥密码,消息认证码和数字签名等密码学的技术,这些技术中都使用到了一个叫做密钥的东西。


那么到底什么是密钥呢?密钥就是一个key,通过这个key可以获得最终的明文。所以密钥其实是和明文等价的。


举个例子,保险箱里面放着十万美元,保险箱被锁住了,并且有一个钥匙。那么这个拥有钥匙的人和拥有了十万美元是等价的。


各种密钥总结


之前的文章中,我们分别讲到了对称密码,公钥密码,消息认证码和数字签名这四种密码学技术。这里我们再来回顾一下。


  • 对称密码


image.png


对称密码使用相同的密钥来进行明文的加密和解密。


  • 公钥密码


image.png


公钥密码使用不同的密钥来对消息进行加密解密。


  • 消息认证码


image.png


消息认证码使用相同的密钥来对消息进行认证。


  • 数字签名


image.png


数字签名使用不同的密钥来对消息进行签名和验证。


其中对称密码和公钥密码是直接对明文进行加密,从而用来保证消息的机密性。


而消息认证码和数字签名则是用来做消息的认证,其本身并不用作对明文的加密,主要来验证消息的合法性。


其他密钥分类


上面的四种是按照加密方式和使用用途来分的,其实安装密钥的使用次数可以分为会话密钥和主密钥。


会话密钥是只用在一个会话中的密钥,用完之后就废弃不用了,而主密钥是固定的密钥,一直重复使用的密钥。


熟悉SSL/TLS协议的朋友肯定对这个比较熟悉,在这个协议中每次会话都会创建一个单独的密钥用来加密会话消息,也就是说每次会话都会创建一个会话密钥。


另外安装加密对象是内容还是密钥,我们可以分为加密消息的密钥(CEK)和加密密钥的密钥(KEK)。加密消息的密钥很好理解,之前的对称密钥和公钥密钥就是CEK。而加密密钥的密钥主要是为了减少密钥的保存个数。


密钥的管理


我们主要从下面几个方面来讲解密钥的管理:


  1. 生成密钥

生成密钥有两种方式,使用随机数和使用口令。


随机数一定要有不可被推断的特性,一般来说我们需要使用伪随机送生成器来生成。

java代码中我们通常会用到Random类,但是这个类是不能用来生成密钥的。我们可以使用java.security.SecureRandom来生成密码安全的随机数。


下面是SecureRandom的两种常用用法:


SecureRandom random = new SecureRandom();
        byte bytes[] = new byte[20];
        random.nextBytes(bytes);


byte seed[] = random.generateSeed(20);


除了随机数,另外一种方式就是口令了。


口令是人类可以记住的密码,为了保证口令生成的密钥不会被暴力破解,需要对口令加盐。


简单点说就是向口令添加一个随机数,然后对添加之后的数进行hash计算,计算出来的结果就可以当做密钥了。


  1. 配送密钥

为了配送密钥我们可以采用事先共享密钥,使用密钥分配中心,使用公钥密码等方式。当然还可以采用其他的方式来配送。


  1. 更新密钥

有的时候,为了保证密钥的安全,我们需要不定期的更新密钥,一般的做法就是使用当前的密钥作为一个基准值,通过特定的算法计算出新的密钥。


  1. 保存密钥

学过区块链的应该都知道有个纸密钥的东西,实际上就是把密钥写在纸上进行保存。


当密钥太多的话,离线保存密钥也成了一个非常困难的工作。这时候就可以使用到密钥的密钥KEK。将这些密钥加密后保存。


这样加密后的密钥我们不用特别考虑其安全性,因为即使被窃取也无法还原之前的密钥。我们只需要保存加密这些密钥的密钥即可。


  1. 作废密钥

作废密钥是个非常比较复杂的事情,因为密钥就是密钥,即使你把它删除,其他的人也可能持有它的备份。所以在设计的时候要充分考虑到密钥作废的情况。

相关文章
|
6月前
|
算法 数据安全/隐私保护
对称密钥加密算法和公开密钥加密算法有什么区别
【4月更文挑战第19天】对称密钥和公开密钥加密算法各有特点:对称密钥加密速度快,适用于大量数据,但密钥管理困难;公开密钥加密安全性高,密钥管理方便,但速度慢,常用于数字签名和身份验证。两者在不同场景下有不同优势。
325 6
|
6月前
|
算法 数据库 数据安全/隐私保护
rsa加密解密,使用rsa对密码加密
rsa加密解密,使用rsa对密码加密
|
3月前
|
安全 算法 数据安全/隐私保护
加密与安全:公开密钥加密、加密过程、数字签名等
这篇文章详细解释了非对称加密算法,包括公开密钥加密的原理、加密过程、数字签名的功能,以及它与对称加密的比较和实际应用场景。
加密与安全:公开密钥加密、加密过程、数字签名等
|
2月前
|
算法 安全 网络安全
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
106 0
|
6月前
|
安全 数据安全/隐私保护
密钥的生成和加密
【5月更文挑战第14天】密钥的生成和加密,在非对称加密中,密钥的生成和加密过程涉及到复杂的数学运算
66 2
|
数据安全/隐私保护
|
算法 安全 Java
共享密钥加密与公开密钥加密
共享密钥加密与公开密钥加密
共享密钥加密与公开密钥加密
|
安全 数据安全/隐私保护 C++
加密/解密 公钥/私钥
加密/解密 公钥/私钥
846 0
加密/解密 公钥/私钥
小程序RSA2的密钥生成和上传公钥
注:目前小程序只支持RSA2的密钥方式来进行验签等。  首先,先去支付宝开放平台下载专门的生成密钥工具:         开发者可以在【支付宝开发文档】中下载Windows/mac_osx        在下载的文件中找到RSA签名验签工具        点击打开RSA签名验签工具               生成相应的密钥。
1185 12
密钥原理,公钥和私钥的作用
说明: 下面流程图中说到的支付宝私钥是不对外开放的,商户自己的私钥也要注意保密不要对外展示,否则会影响账号安全!  一般我们会看到4个密钥      rsa_private_key              商户私钥 :        适用开发语言php ,.net等。
1724 12