很眼熟的界面,对吧!
前段时间参加了某公司的培训,主要是从原理上解释了一下消除证书告警。听之,受益匪浅。整理了一下自己的所得,跟大家简单某公司。
1、PKI 什么是PKI?度娘告诉你:
PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。X.509标准中,为了区别于权限管理基础设施(Privilege Management Infrastructure,简称PMI),将PKI定义为支持公开密钥管理并能支持认证、加密、完整性和可追究性服务的基础设施。这个概念与第一个概念相比,不仅仅叙述PKI能提供的安全服务,更强调PKI必须支持公开密钥的管理。也就是说,仅仅使用公钥技术还不能叫做PKI,还应该提供公开密钥的管理。
2、秘钥 什么是秘钥?同样的,度娘告诉你:
在现代密码学中,秘钥指的是一组特定的秘密数据,在加密时,它控制密码算法按照指定的方式将明文变换为相应的密文,并将一组信源标识信息变换不可伪造的签名;在解密时,它控制密码算法按照指定的方式将密文变换为相应的明文,并将签名信息变换成不可否认的信源证据。
那PKI所管理的公开秘钥又是什么?
公开密钥也称为非对称密钥,每个人都有一对唯一对应的密钥:公开密钥(简称公钥)和私人密钥(简称私钥),公钥对外公开,私钥由个人秘密保存;用其中一把密钥加密,就只能用另一把密钥解密。
3、对称加密 在解了公开秘钥的以后,我们又得到了一个概念叫“非对称加密”。那什么又是非对称加密呢? 在说非对称加密之前,先来说说对称加密。
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 常见的对称加密算法:DES,3DES,AES
又问:秘钥和加密算法是什么关系呢? ①加密算法是明文转换成为密文的变换函数,也即是规律变换的一种方式。 ②秘钥是明文转换成为密文的时候使用的参数。 ③算法是公开的,秘钥是需要严格保密的。
举个很简单的例子,比如凯撒密码,就是将字母循环后移n位,这个n就是一个密钥,循环后移的方法叫做算法,对明文用不同的密钥加密的结果不一样,虽然他们用的是相同的算法。
对称加密虽然很不安全,但是对称加密在对文件的传输中使用非常广泛,因为对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
思考: ①采用对称加密,如何协商采用哪种加密算法?协商过程是否安全? ②秘钥传输的过程是否安全? ③接受到的数据解密后是否完整?是否传输过程没有被修改?
在数据传送前,发送方和接收方必须商定好秘钥,然后双方都要保存好秘钥。并且秘钥的传输过程是明文的。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外数据完整性也无法验证。 对称加密中,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
4、非对称加密 那非对称加密呢?
相对于对称加密的加密和解密都用同一个秘钥而已,非对称加密就是加密和解密用的秘钥不一样。通信双方分别保存着两个密钥,公钥和私钥,公钥和私钥互相加解密,公钥是公开的,私钥必须个人持有,严格保密。
如下图所示,甲乙之间使用非对称加密的方式完成了重要信息的安全传输。 ①乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。 ②得到该公钥的甲方使用该密钥(乙的公钥)对机密信息进行加密后再发送给乙方。 ③乙方再用自己保存的另一把专用密钥(乙的私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。
同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。因此在实际应用中,一般用来加密双方通信的时候采用的对称加密算法的秘钥。
即是: ①甲和乙之间要传输很多份重要文件,甲拿到了乙的公钥(公钥A)。 ②由于文件很大,为了效率决定采用对称加密来加密文件,并协商出来加密秘钥(秘钥X) ③甲用乙的公钥加密了双方协商出来的秘钥X,同时将第一份要传输的重要文件用秘钥X加密一起发送给乙并传输给乙。传输内容=【公钥A加密 [秘钥X] 】 + 【秘钥X 加密[重要文件] 】 ④乙拿到了甲传输的文件以后,用自己的私钥解密文件,得到了[秘钥。并用秘钥X解开得到了明文的重要文件。 ⑤甲和乙开始使用秘钥X进行后续的文件传输加密,文件接收解密。
思考: ①如果这个时候出来了一个黑客丙,丙用乙的公钥加密了一个假的对称加密秘钥(秘钥Xx),又 用秘钥Xx加密了假文件然后传输给乙。乙接收到以后用自己的私钥解密得到了秘钥Xx,又得到了假 文件。换句话说,乙无法肯定给自己发信息的是甲,怎么办呢?
答案是:数字签名 5、数字签名
数字签名是通过散列算法(又称哈希函数),如MD5、SHA-1等算法从大块的数据中提取一个摘要,然后用自己的私钥对这个摘要进行加密。而这个摘要无法通过散列算法恢复出任何一点原文,同时只要原文被修改过,那么通过相同的散列算法得到的摘要肯定会有所不同。 “发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。
于是: ①甲提取出摘要,用自己的私钥(秘钥B)加密这份摘要,然后用乙的公钥加密加密原文及数字 签名一起发送给乙。发送内容 = 【公钥A 加密<原文+(私钥N加密[摘要] ) >】 ②乙用自己的私钥解开得到 原文+(私钥N[摘要] ),再用甲的公钥解开得到摘要。 ③如果能用甲的公钥解秘得到摘要,则证明发送者是甲。 ④采用散列算法提取原文得到摘要2,对比如果 摘要2=摘要,则证明拿到的文件是原文。
到此,甲的身份证明和文件完整性验证看起来是万无一失了。
那么问题又来了:乙如何确定他拿到的所谓“甲的公钥”就是“甲”的公钥呢?
其他用户使用假冒的公钥与用户B通信,信息内容被用户A窃取
所以就有了:数字证书。
6、数字证书 数字证书绑定了公钥及其持有者的真实身份。 数字证书是一个经证书授权中心数字签名的包含公开秘钥以及公开秘钥拥有者信息的文件,是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
CA机构作为电子商务交易中心受信任的第三方,承担公钥体系中公钥的合法性检测的责任。某公司为每个使用公开秘钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中包含的公开秘钥。CA机构的数字签名确保了攻击者不能伪造或篡改证书,CA是PKI体系的核心,CA是负责签发证书、认证证书、管理已颁发证书的机关。
最简单的数字证书包含一个公开秘钥、名称以及证书授权中心的数字签名。一般还包含秘钥的有效期、发证机关(证书授权中心)名称、该证书的序列号等等。
所以甲为了证明自己就是甲,就找到某公司申请了一个数字证书,并且将数字证书传给了乙。乙拿到数据证书以后只要验证了CA的数字签名,就能确认甲的公钥。
这个时候就需要用户对签发证书的机构足够的信任,如果不够信任就需要找更权威的CA机构再去该数据证书进行签名形成新的证书......
一般浏览器都会内置有权威的证书颁发机构所签发的证书。
浏览器内置的都是权威CA机构自己给自己颁发的数字证书,并且数字证书里面包含了自身的公钥,和用自己私钥签名的数字签名。因此,可以直接验证该机构签发的数字证书。
而为什么会弹出告警界面也很明显了,总结如下: a.首先,你给我出示了一张你的数字证书,但是我并不信任给你颁发证书的那个机构。 b.我信任你的颁发机构,但是我打开一看,“颁发给”的那个用户并不是你,你盗用的! c.证书真实有效,我也深信不疑,但是抱歉,过期啦!
这么说来,好像身份验证和数据加密已经完成了。那么,在实际应用中,是怎样的一个传输过程呢? 是采用的SSL协议!关于SSL协议,且听下回分解!
小伙伴们要善用社区资源哦,社区是一个很好的学习平台!
|