1.1、Bob和Alice的爱情故事
??早些年间,恋人们之间的交往以书信沟通较为频繁,在那个年代,这种恋爱的人叫笔友。假设Bob和Alice正是处于这一时代,Bob和Alice恋爱了,他们两个好不容易走到一起,可是Eve也喜欢Alice,他妒忌他们两个人。于是想方设法的想窃取他们之间的书信联系。某天,Bob和Alice由于一些观念的不统一,闹矛盾了,于是Bob想写一封信向Alice道歉,并合好,信的内容大概是:
她们(Bob和Alice)的沟通方式大概图解如下(如果不加密的情况下):
??Eve作为第三方窃听者,他可以看到Bob发给Alice的信笺的内容,这样他就可以了解Bob和Alice之间的进展情况。他甚至可以通过一些特殊的手段来修改Bob发给Alice的信笺的内容,更改原来的意思。比如他把信笺的内容修改为以下部分:
??这样Bob和Alice之间就这样因为Eve的干预可能导致最终Alice心灰意冷,最终和Bob走向一个不好的结局。现在,我们假设,Bob对书信的内容进行加密,然后发送给Alice。
以上简单通过Bob与Alice的书信往来简单的说明了一下通信过程中加密与不加密的区别,实际情况远比这要复杂的多。我们先来看看常见的一些术语名词。
?
1.2、常见术语
明文(plaintext):没有加密过的原始内容;
密文(ciphertext):对原始内容经过特殊处理过的内容;
加密(encrypt):对明文经过特殊处理后,可以实现隐藏原始含义的操作;
解密(decrypt):对密文进行处理后,可以看到原始内容含义,是加密的反向过程;
伪装(spoofing):假设自己是某某某,去完成一些不可告人的事情;
否认(repudiation):对自己答应过的事情表示否认;
密码破译(cryptanalysis):简称为破译,有时候叫密码分析,就是可以对加密的数据进行破解;
破译者(cryptanalyst):实现密码破译的人或者机器;
密码算法,简称算法(algorithm):加密和解密过程中用到的规则;
加密算法:从明文生成密文的步骤,表示加密的步骤,加密过程中要用到加密算法;
解密算法:从密文生成明文的步骤,表示解密的步骤,解密过程中要用到解密算法;
密码算法:加密和解密的算法合在一起统称为"密码算法";
密钥(key):密码算法中需要密钥(key);
中间人(man-in-the-middle attack):假设自己是各种身份,与其他人进行伪装通信;假设A和B通信,中间人为C,C对A宣称自己就是B,对B宣称自己就是A;
暴力***(brute-force attack):也叫穷举搜索(exhaustive search),一种用于破解的方式;
单向加密(one way encryption):一种特殊加密方式,可以提取原始数据的特征码或者消息摘要码;
单向散列函数(one-way hash function):单向加密过程中用到的加密函数;
对称密码(symmetric cryptography):对称密码也叫对称加密(symmetric encryption),解密过程和解密过程使用同一个密钥的方式;
非对称密码(asymmetric cryptography):非对称密码也叫非对称加密(asymmetric encryption)或者叫公钥加密(public-key encryption);
密钥对(key pair):公钥加密体系中成对密钥(公钥和私钥);
公钥(public key):可以公开示人的密钥;
私钥(private key):不可以公开示人,要自己好好保留的密钥;
公钥加密算法:公钥加密过程中要用到的算法;
常用的公钥加密算法:RSA,DSA等;
对称加密算法:对称加密过程中要用到的算法;
常用的对称加密算法:DES,3DES,AES,IDEA,CAST5等;
公钥基础设施(Public-key Infrastructure,PKI):与证书颁发,吊销,申请注册等相关的一个庞大体系;
认证(签证)机构(Certification Authority,CA):PKI中的一部分,与证书签署有关的;
注册机构(Registration Authority,RA):对申请者的身份经过验证,并注册公钥成证书的一个机构,是PKI中的一部分;
证书吊销列表(Certificate Revocation List):与证书吊销有关系的,属于PKI中的一部分;
仓库(repository),证书存储库:保存证书的数据库;
证书(certificate):申请人向CA提交申请后,CA向申请人颁发的一种用于验证身份的东西,证书中包含了对应申请人的公钥以及其他相关信息;
数字签名(digital signature):
混合密码系统(hybrid cryptosystem):将对称加密体系和公钥加密体系结合起来的方式;
?
1.3、安全的目标以及常见***类型和解决方案
1、安全的目标有以下几点
- 保密性(confidentiality)
- 完整性(integrity)
- 可用性(availability)
2、现实生活中,常见的***类型
(1) 威胁到保密性的
- 窃听
- 通信量分析
(2) 威胁到完整性的
- 更改
- 伪装
- 重放
- 否认
(3) 威胁到可用性的
- 拒绝服务器(Dos)
3、解决方案
(1) 通过技术来实现
解密和解密。解密和解密可以分为两大类:
- 传统加密方法(替代加密方法、置换加密方法等)
- 现代加密方法(现代块加密方法)
(2) 通过服务来实现
用于抵御***的服务,也即是为了上述安全目标而特地设计的安全服务。
- 认证机制
- 访问控制机制
4、密钥算法和协议
- 对称加密
- 公钥加密(非对称加密)
- 单向加密
- 认证协议
2.1、对称加密
对称加密就是加密和解密使用同一个密钥。常见的对称加密算法有:
对称加密特点
- 加密和解密使用同一个密钥;
- 将原始数据分割为多个固定大小的块(多个分组),逐个进行加密;
对称加密缺点:
- 密钥过多;
- 密钥分发困难;
2.2、非对称加密
非对称加密又称为公钥加密,它的密钥有公钥和私钥两种,是成对出现的,俗称密钥对儿。
- 公钥:从私钥中提取产生,可公开给所有人;
- 私钥:通过工具创建,使用者自己留存,必须保证其私密性;
公钥加密特点:
用公钥加密的数据,只能用与之对应的私钥才能解密;用私钥加密的数据,只能用与之对应的公钥才能解密。
公钥加密用途:
- 数字签名(主要在于让接受方确认发送方的身份);
- 密钥交换(发送方用对方的公钥加密一个用于对称加密的密钥,并发送给对方);
- 数据加密(这里的数据指的是比较大的数据,有公钥加密效率较低,虽然安全,对于生活中的模型,加密大数据还是用对称加密的方式);
公钥加密常见的算法有:
RSA,DSA,ELGamal
RSA: Digital Signature Standard,数据签名标准;
DSA:Digital Signature Algorithm,数据签名算法
2.3、单向加密
单向加密,即提取数据指纹信息,只能加密,不能解密;(一种计算特征码的方式)
特点:定长输出(不管要加密的数据量有多大),雪崩效应(原始数据微小的改变会导致整个结果彻底发生变化)
主要用途:用于保证数据的完整性(完整性校验);
常见算法有:
md5:Message Digest 5,128bits;
sha家族:
sha1:Secure Hash Algorithm 1,160bits
sha224,224bits
sha384,384bits
sha512,512bits
2.4、密钥交换
常见用于实现密钥交换的有:
DH(Deffie-Hellman)
公钥加密
3.1、基于TLS和SSL协议的开源实现程序以及基本概述
比较有名的开源实现方案:
GnuPG和OpenSSL
GnuPG官网:https://www.gnupg.org/
OpenSSL官网:https://www.openssl.org/
这里我们只介绍OpenSSL。OpenSSL是为了传输层安全协议(TLS)和安全套接字层(SSL)协议开发的一个开源组件。
功能非常强大,集成了很多密码库。大概包含以下几个部分:
libcrypto,libssl这两个是库;
openssl是多用途命令行工具(也是介绍的重点)。
linux实际上有两个软件包,分别为上面两类应用提供。分别是:
其中openssl-libs是分包,它主要是提供基于TLS实现的通用密码库;
openssl主要是提供了与加密,通信安全相关的一些组件,它是一个比较全面的工具包。
它提供的工具包提供了对不同主机时间通信安全的支持,包括证书管理工具以及提供
应用于各种加密算法和协议的共享库。
除此之外,还有一个不是由OpenSSL提供的另外一个与安全相关的包,叫nss:
3.2、openssl命令行工具
man手册的翻译配合自己的理解:
3.2.1、openssl支持的标准命令
可以执行以下命令查看支持的标准命令有哪些:
这些标准命令的概述如下:
3.2.2、openssl支持的消息摘要命令
可以执行以下命令查看支持的消息摘要命令有哪些:
支持的消息摘要命令有以下这些:
3.2.3、openssl支持的对称加密命令
可以执行以下命令查看支持的对称加密命令有哪些:
支持的加密命令有:
3.2.4、openssl支持的对称加密算法
可以执行以下命令查看支持的对称加密算法有哪些:
算法大概有:
上面的加密算法大概有AES,DES,Blowfish,CAST,IDEA,RC2,RC5等这些都是分组加密算法;
RC4是流加密算法。分组加密算法都支持密码本模式(ECB),加密分组链接模式(CBC),加密反馈模式(CFB),
以及输出返回模式(OFB).其中DES,CAST等都有其演变版本,比如3重DES,CAST5等。具体使用请参照
对称加密算法配合对称加密命令使用。上边出现的这种形式“from => to”表示别名的含义,例如:
rc5 => RC5-CBC
表示rc5实际上用的是RC5-CBC
3.2.5、openssl支持的消息摘要算法
可以执行以下命令查看支持的消息摘要算法有哪些:
支持的消息摘要算法:
3.2.6、openssl支持的公钥加密算法
可以执行以下命令查看支持的公钥加密算法有哪些:
公钥加密算法有:
3.3、openssl 命令,算法等综合介绍
关于openssl常见的问题解答(英):
https://www.openssl.org/docs/faq.html
在线阅读官网推荐阅读书籍(英):
https://www.feistyduck.com/library/openssl-cookbook/online/
各版本的变更:
https://github.com/openssl/openssl/blob/master/CHANGES
3.3.1、标准命令version
3.3.2、标准命令enc
3.3.3、标准命令rand
3.3.4、标准命令passwd
3.3.5、标准命令genrsa(重点)
3.3.6、标准命令dsaparam
3.3.7、标准命令gendsa
3.3.8、标准命令rsa(重点)
3.3.9、标准命令dsa
3.3.10、标准命令dgst(重点)
3.3.11、标准命令ca(非常重要)
3.3.12、标准命令req(重点)
3.3.13、标准命令x509
3.3.14、标准命令crl
4.1、混合加密解密图解
4.2、PKI和CA相关图解
PKI(公钥基础设施),主要由以下部分组成:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存储库
4.3、openssl的默认配置文件部分节选说明
4.4、一台服务器做根ca,一台web服务器
ca的服务器ip信息:172.168.110.22
web服务器ip信息:172.168.110.21
1、在确定配置为ca的服务器上生成一个自签证书,并为ca提供所需要的目录及文件即可
以下部分在172.168.110.22上执行。
(1)生成私钥(注意CA配置文件中指定的路径和名字要与生成的私钥保持一致)
(2)生成自签证书(注意要和openssl的配置文件中指定的位置和名字保持一致)
(3)为ca提供所需的目录及文件
2、要在到证书进行安全通信的服务器,需要向ca请求签署证书
以下步骤在172.168.110.21上执行。
(1) 用到证书的主机生成证书签署请求用到的私钥
(2)生成证书签署请求
(3) 通过工具将证书签署请求文件文件发送给ca,利用ftp或者scp网络拷贝工具都行
(4)特定步骤,在ca主机上执行证书签署步骤
4.5、不单独生成私钥,自签时或签署证书请求时候一次生成所需密钥
ca的服务器ip信息:172.168.110.22
web服务器ip信息:172.168.110.21
以下步骤在ca主机上执行:
(1) 生成自签证书(会生成所需要的私钥)
(2) 为CA提供所需的目录及文件
以下步骤在web主机上执行:
(1) 生成证书签署请求(会生成所需的私钥)
(2) 将证书签署请求文件通过工具(ftp或scp或rsync等)传递给ca主机
以下步骤在ca主机上执行:
(3) 在ca主机上完成证书签署请求并提供给站点主机下载或者传递给站点主机
(4)把签证的证书传递给站点服务器
五、TCP/IP四层模型配合半层ssl开发库以及SSL会话的步骤和阶段
5.1、TCP/IP模型图解
5.2、SSL会话阶段图解
转载请注明来自石家庄天鲲化工设备有限公司 ,本文标题:《通信加密与解密》
还没有评论,来说两句吧...