分类
Note

密钥管理科普篇

之前对密钥管理没有概念,经过1个月的自学,有了一定的理解,下面说说。

密钥管理用于需要加密的网络传输,我所从事的金融软件业领域对这点要求更严格,所有经过局域网,vpn等网络传输的数据都需要加密。

密钥

钥匙的意思,一般是一段二进制数据 (byte[]),为什么叫做密钥,其实是一种对现实问题的抽象。网络传输需要对数据加密,加密只是一种运算,加密并不能解决数据安全问题,只是为了让数据不可读,如果要保证安全性,就需要定义更复杂的规则,比如规定解密方必须要用到另外一段数据一起参与运算,这段数据就好比钥匙,要解密传输内容,就只能唯一的用这段数据,就像是一把锁和它的钥匙,一个锁只能用一种钥匙开。钥匙一般是秘密的,所以一般叫做密钥。

管理

就是钥匙管理,钥匙怎么配,配几把,给谁,怎么给。因为软件密钥有别于传统,就是一段二进制数据,具有电子特性,看不见,摸不着,易复制,传输快,所以它有自己的一套管理方法。

总的来说

所以密钥管理包含需要解决一下3类问题:1.加解密算法,2.密钥如何参与和密钥如何产生的加解密算法,3.密钥如何存储,如何给接收方。

1.加解密算法

比如位运算、md5、sha等,就是常见的加解密算法。好的算法,应该具有运算速度快,效率高,混乱程度高,加密内容不同,混乱后结果应该不同,加密后的内容,再加密,不会再出现原文,即不可逆等特点。这样才能又快又安全。

其实,md的全称是消息摘要算法,意思是对很长很长的数据进行概括,总结一段较短的数据,作为原文的标志,这个过程就像摘要一样,所以md5主要用于消息摘要(sha和md5作用一样)。

现在应用广泛的是只对敏感数据进行加密,比如密码和mac(消息认证码算mac一般是对原文整体做消息摘要,形成码,接收方也用同样的算法算mac,两次mac是否一致,来验证接接收到的消息和原文是否一致。

2.密钥的产生和参与算法

主要有两种模型:DES(对称加密算法),AES(非对称加密算法)。对称是指发送方和接收方使用相同的密钥,对数据进行加解密,非对称是说双方密钥不一样。这个听起来很玄乎,感觉不可能,其实真的不可能,呵呵,因为非对称里面的密钥,已经不是直接参与运行的密钥了。

这里引入了公钥和私钥的概念,公钥就是能通过网络传输告诉对方的钥匙,私钥就是不能传给对方,只有自己知道的钥匙。

非对称是在对称的基础上,又做了一层工作,让发送方有两把钥匙,公钥和私钥,接受方也有两把钥匙,公钥和私钥,这4把钥匙各不相同,但是用发送方的私钥和接收方的公钥可以产生出真正的密钥,用接收方的私钥和发送方的公钥,也能产生出真正的密钥,(真正的密钥只有一个),所以它非对称了。

接受方的私钥怎么来?当时我问了这个问题,他是通过发送方的公钥运算的来的,其实接受方的公钥也是这样产生的,在非对称加密算法里,一个输入,会有公私两个密钥输出。接收方公钥算出来后,需要再发送给发送方,这样发送方才有接收方的公钥。最后双方用对方的公钥和自己的私钥分别产生真正的密钥,然后在对数据进行加解密。(其实这个地方有点绕,呵呵,需要多想想)

3.密钥如何存储和分发

为了提高安全系数,密钥需要定期的更新,变化。所以需要设定有效期。

在互联网领域,公钥被广泛应用,来做简单的服务端的单项身份验证。比如一个网站,会用自己的密钥对数据加密,访问用户想要接受数据,必须知道密钥,网站会颁发自己的公钥,访问用户需要先获取公钥,来解密数据,或者验证数据。此时,访问用户还需要额外注意服务端身份是否正确,所以还需要一个权威的第三方认证机构,相用户担保,证明服务端身份。

有时,服务端还想公布自己的公司名称,简介等信息,所以,就有这样的需求,要把公钥,加密算法,公司信息,公钥有效期等信息储存在一个文件里,作为一个整体的需求,即证书。

证书只能有发送方制作,谁都不能伪造,修改。所以证书的制作,又是单独的一门技术,制作过证书就有体会,有一步需要输入密码,就是防止证书的伪造,只有知道密码,才是证书的制作人,对自己的证书进行修改。

入门完毕

我看了这本书《Java加密与解密的艺术》,以及用百度搜索的相关资料。

由cachetian

追求结构性良好的软件攻城狮

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据