关于加密的一些笔记

关键字: 对称加密 非对称加密 私钥 公钥 签名  加密 CA中心 TLS 会话秘钥

1、为什么要加密

Bob将消息发送给Alice,不希望别人知道他们的消息是什么。

2、对称加密算法

如果加密秘钥和解密秘钥是相同的,那么这类加密算法称为对称加密算法,常见的对称加密算法:DES、3DES和AES。工作过程如下:


关于加密的一些笔记_第1张图片

美国国家标准局催生了DES

1973年5月,在尼克松任期,美国国家标准局下发了红头文件,征求加密算法来保护传输过程中的数据。国家标准局等了很久一直没有人投标,一直到1974年8月6日,尼克松卸任前三天,IBM才拿出了自己家开发的一套代号LUCIFER(金星)的东西。美国安全局评估后,在1977年7月15日采用了LUCIFER的一个变种作为数据加密标准DES。

DES很快被非数字媒体采用,比如电话线中的信号加密。在那些年里,国际香料组织IFF曾用DES来加密那些用电话线传输的秘密配方。("With Data Encryption, Scents Are Safe at IFF,"Computerworld14, No. 21, 95 (1980))

同时,作为政府之后第二大急需加密的银行业也将DES作为广泛应用的标准,美国国家标准协会ANSI制定了整个银行业的加密规范。1980年采用的ANSI X3.92指定了DES算法的应用。

DES算法优点:运算速度快、资源消耗较少。

缺点:但是随着计算机计算能力的增强,DES已经能够在短时间内暴力破解,安全性较低。RSA公司在20世纪末举办过的破译DES密钥的比赛数据显示,到1999年破译密钥只需要22小时15分钟。鉴于DES已经能够在短时间内被破解,现在除了破解之前的密文,已不再推荐使用。

由于DES已经能够在短时间内被破解,为了增加DES的强度,将DES重复3次的用来替代DES的分组密码3DES被开发出来,也称为TDEA(Triple Data Encryption Algorithm)。3DES的加解密机制如下。

3DES的加密

关于加密的一些笔记_第2张图片

3DES的解密

关于加密的一些笔记_第3张图片

但是,3DES处理速度不高,除了在一些重视向下兼容性的环境中,很少有新的用途,也逐渐被AES所取代。

AES(Advanced Encryption Standard)高级加密标准是取代DES标准的一种对称加密算法的新标准,最终在2000年从众多候选对称密码算法中选出了Rijndael作为AES。被选为AES的密码算法必须满足一定的条件,比如,算法没有弱点、加密以及密钥准备的速度要够快、实现容易、能够在各平台上有效工,同时,还必须无条件地免费供全世界使用。可以说,被选为AES的算法近乎“完美”。AES加解密机制较复杂,综合运用了逐字节替换、平移行、混合列、与轮密钥进行XOR等,其优点在运算速度快、资源消耗少,且安全性高。

前面我们简单介绍了DES、3DES和AES三种对称密码,DES已经能够被暴力破解,3DES也逐渐被AES取代。鉴于AES在其选定过程中经过了全世界密码专家的严谨验证,一般来说,我们在使用的时候应尽量使用AES。

3、对称加密算法最大的缺陷:

加密密钥=解密密钥。秘钥在传输过程中易泄露、程序员有可能掌握秘钥。

死穴,如何破?

4、非对称加密

非对称加密算法需要两个密钥:公开秘钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对。由私钥可以很容易计算出公钥,反过来,由公钥非常难计算出私钥。

5、非对称加密算法的加解密过程

关于加密的一些笔记_第4张图片
鲍勃有两把钥匙,一把是公钥,另一把是私钥。


关于加密的一些笔记_第5张图片
公钥可以给所有人,私钥只能鲍勃自己拥有。于是他把公钥送给了他的朋友们:帕蒂、道格、苏珊,每人一把。



关于加密的一些笔记_第6张图片
关于加密的一些笔记_第7张图片

苏珊给鲍勃写了一封信,但不想让其他人看到。于是她就用鲍勃给的公钥设置个密码(加密),鲍勃收到信后,用他唯一的私钥解密后,就可以看到信件内容。

也就是只有鲍勃有解密的密码,其他人都能看到苏珊给鲍勃写了封信,但是不知道信的内容。只要他的私钥不泄露,这封信即使落在别人手里,也无法解密。

6、数字签名

数字签名也是字符串,是接收者用来识别发送者身份的。类似我们生活中白纸黑字的签名,这样更方便理解。

还是鲍勃的故事继续举例:

关于加密的一些笔记_第8张图片

鲍勃打算给苏珊回信,他写完后先用Hash函数(哈希函数),生成信件的摘要(digest)。

哈希函数是一种算法,就是把输入的数据(不论多大),打碎重组成另一段固定长度的数据,也就是鲍勃通过一个函数,把写给苏珊的回信转换成了一串字符。

关于加密的一些笔记_第9张图片
关于加密的一些笔记_第10张图片

为了保密,鲍勃再用自己的私钥,对这个摘要(digest) 进行加密,生成了专属于他的 "数字签名"(signature)。然后,将这个数字签名,附在信件下面,一起发给苏珊。

验签过程

苏珊收到鲍勃的来信后,用鲍勃提供的公钥对发过了的原文和数字签名进行验签,如果通过,说明这信件没有被篡改。鲍勃也不能否认这信是他写的。签名和验签过程,可以起到防篡改,防否认的作业。

7、中间人攻击

Tom生成密钥(a_pri/a_pub), Bob生成密钥(b_pri/b_pub)两者都公开公钥 a_pub和 b_pub为了相互传递信息. 第三人(窃听者)也生成密钥(ca_pri/ca_pub)和(cb_pri/cb_pub) 生成两对.

首先John(窃听者)会把Tom的公钥 a_pub截取保存, 再把自己的 ca_pub发给Bob, 然后Bob的公钥 b_pub截取保存, 再把自己的 cb_pub发给Tom. 他们两者都会认为自己拿到的公钥是对方的.

此时Tom和Bob相互传递自认为对方的公钥(实际是窃听者John的)加密后的信息发给对方, John在两边接收密文通过自己的私钥(ca_pri, cb_pri)解密, 再发给各方 完美扮演了中间人的角色.

8、CA中心

出现中间人攻击的根源,在于用户无法确认对方发过来的公钥真是他发过来的。那就出来了中介权威机构,称为 证书签发机构(certificate authority,简称CA)。为公钥做认证,来确保公钥的真实可靠。证书是经过了 CA 私钥签名的证书持有者的公钥、身份信息及其它相关信息的文件,用户通过 CA 的公钥解密获取证书中包含的 证书持有者 的公钥。只要 CA 的私钥保持机密,通过证书验证 证书持有者 的身份,及获取公钥的过程就可靠。

证书的工作过程

互联网PKI证书体系的结构如下图:

关于加密的一些笔记_第11张图片

证书订阅人,也就是需要提供安全服务的人,向证书中心 (CA)的代理登记机构提交自己的公钥来申请证书。登记机构对证书订阅人的身份进行核实,然后向证书中心 (CA)提交证书订阅人的公钥及身份信息。 证书中心 (CA) 用自己的私钥,对证书订阅人的公钥、身份信息和其它一些相关信息进行加密,生成"数字证书"(Digital Certificate),并发送给登记机构。登记机构将证书发送给证书订阅人。证书订阅人将证书部署在Web服务器上。 信赖方,即安全服务的用户,维护 CA 根证书库,并在与Web服务器通信时,从服务器获得证书。 信赖方 用CA根证书验证接收到的证书的有效性,进而验证服务器的真实性。

同样通过几幅图来说明这个过程。

鲍勃去找证书签发机构,为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥、身份信息和一些其它相关信息一起加密,生成"数字证书"(Digital Certificate)。

关于加密的一些笔记_第12张图片

鲍勃拿到数字证书以后,就可以放心,以后再也没人能冒充自己了。再需要发送自己的公钥给朋友们时,只要把自己事先拿到的 数字证书 发送给朋友就可以了。需要写信给苏珊时,照常附上自己的数字签名即可。

关于加密的一些笔记_第13张图片

苏珊收到信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥,然后就能证明"数字签名"是否真的是鲍勃签的。

关于加密的一些笔记_第14张图片

9、CA证书信任链

上面我们可以看到苏珊是新人CA的公钥的,那么CA的公钥从哪里来,为什么又是值得信赖的呢?

前文提到,在向CA 申请证书时是需要CA的私钥去对整个证书的签名摘要做非对称加密的,也就是证书是可以通过CA的公钥去解密得到证书的签名摘要的。

当我们再次用相同的摘要算法(证书里面有保存所使用的算法)对整个证书做签名,如果得到的签名和证书上的签名是一致的,说明这个证书是可信任的。

同理,中介证书 也是可以被这样的方式证明其可信任。这样的一整个流程称为信任链(Chain of trust)。

就是我绝对相信你(A>B);你绝对相信他(B>C);等于我绝对相信他(A>C)。

以下是整个流程:

关于加密的一些笔记_第15张图片

客户端得到服务端返回的证书,通过读取得到服务端证书的发布机构(Issuer)

客户端去操作系统查找这个发布机构的的证书,如果是不是根证书就继续递归下去直到拿到根证书

根证书的公钥解密验证上一层证书的合法性,再拿上一层证书的公钥去验证更上层证书的合法性;递归回溯。

最后验证服务器端的证书是可信任的。

10、根证书的来源

操作系统、浏览器安装时,会自动附带几个根证书,操作系统和浏览器也是无条件信任这些根证书的。假设使用盗版操作系统是有可能被备有用心的人安装上虚假的根证书,然后做坏事,防不胜防的。

11、TLS使用非对称加密和对称加密结合来进行通信

非对称加密,加密安全性高,但加解密速度慢。而对称加密,密钥容易暴露,但是加解密速度快。

我们使用非对称加密算法 ,协商出一个临时使用的会话密码(对称加密算法的),用这个会话秘钥进行业务消息的加解密。

握手阶段分成以下五步:

第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。

第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。


关于加密的一些笔记_第16张图片

你可能感兴趣的:(关于加密的一些笔记)