下文主要介绍了什么是加密解密;为何要用到加密解密技术;加密解密技术能够为我们带来什么样的好处;常见的几种加密解密技术介绍以及Linux中的openssl。
一、什么是加密,解密
加密技术是一种常用的安全保密手段,利用各种技术手段把重要的数据进行加密传送;再用对应的技术手段进行解封,该过程的逆过程就称为解密。这里用一个不太恰当的例子说一下:也就好比你去办一张银行卡,需要你设置一个密码,就可以理解成在为这张银行卡做一个加密的操作;用银行卡到提款机取钱需要你输入密码,这就是一个解密的操作。
二、为什么我们需要用到加密,解密技术?
因为在互联网日益普及的今时今日,产生出大量的个人数据或者企业数据;又或者主机之间进行的通信,数据的传输等等操作都面临着如窃听、通信流量分析,DOS攻击等等;所以我们需要一些手段来面临这些威胁。
三、加密技术的目的:
机密性:也就是数据保密
身份认证:鉴定消息的来源进行身份确认
完整性:接收者能够验证在消息传送过程中是否被更改
四、加密,解密技术介绍:
1.类别:
传统加密方法:使用密码算法,一般是一些数学函数
缺陷:受限制,大家都必须知道加解密算法
现代加密方法:使用密钥来进行数据加密,加密和解密都使用一个密钥,运算都依赖于密钥;数据传输过程中为密文。算法强大:仅知道密文很难破译出明文
2.密钥算法:
(1) 单向加密:计算一段数据的特征值,加密过程不可逆
特点:输入数据有一点点不同,结果会有变化
输入的数据无论多长,输出的结果都是一样长度
目的:数据完整性的校验
算法:
MD5:message digest,128bits
SHA(1)家族:secure hash algorithm 安全的哈希算法,输出结果固定长度160bits;sha224,sha256,sha384,sha512
(2) 对称加密:加密方和解密方都使用同一个密钥,又称单钥加密
优点:安全性高
加密解密速度快
缺点:
随着网络规模的扩大,密钥过多导致管理困难
密钥分发困难,无可靠手段发送至对象
算法:
DES:数据加密标准,使用56bits的密钥长度
AES:高级加密标准,使用128bits、192bits、256bits、384bits密钥
3DES:DES的加强版,对原有数据加密三次,3*56bits密钥长度
Blowfish
Twofish
RC6
IDEA
CAST5
(3) 非对称加密:加密密钥与解密密钥不同
公钥:根据私钥生成,可公开
私钥:工具创建,自己留存
优点:不需要通过安全通道传输密钥
缺点:算法复杂,加密速度慢
用法:
1. 数字签名:发送方以自己用工具生成的密钥进行加密,接收方用发送方密钥对应的公钥进行解密;可以确认发送方的身份。
2. 密钥交换:发送方用接收方公钥加密一个对称密钥,并发送给对方,保证数据保密性、完整性。下面是加密、解密的步骤:
加密(发送方):
第一步:单向加密算出特征码
第二步:用自己的私钥加密特征码
第三步:用双方协定好的算法计算出对称密钥并加密整个数据
第四步:用接收方的公钥进行加密
解密(接收方):
第一步:用自己的私钥解密
第二步:用双方协定好的算法计算出对称密钥并解密
第三步:用发送方的公钥获得特征码
第四步:计算特征码进行比较
以上是对加密解密的一个简单的介绍,在下面的内容中我会继续提到 PKI, SSL, TSL以及OpenSSL
PKI: Public Key Infrastructure公钥基础设施;PKI为电子商务交易提供一套安全基础平台的技术和规范。PKI基础设施采用证书管理公钥,通过CA认证中心把用户的公钥和用户的其它标识信息集合在一起,保证公钥的可靠性传输。PKI把公钥密码和对称密码结合起来,实现密钥的自动管理。
PKI的组成:
证书机构CA:颁发管理证书
注册机构RA:接受用户申请并提交给CA,是CA和用户之间的桥梁
证书吊销机构CRL:提供被吊销的证书列表
数字证书库:存储已签发的证书及公钥,用户可由此获得所需的其他用户的证书及其公钥
PKI的基础协议:X.509,用于定义一个规范的证书格式
用户公钥
版本号
证书序列号
CA标识符
证书有效期
签名算法标识
签发者名称
用户标识
...
SSL:Secure Sockets Layer安全套接层;使用公钥和私钥为网络通信提供安全性及数据完整性的一种安全协议。广泛适用于Internet上的身份认证与Web服务器和客户端浏览器之间的数据安全通信;如:http+ssl=https
版本:v3.0
特性:
1.机密性:在握手协议中定义了绘画密钥后,所有的消息都被加密
2.可靠性:服务器和客户端都会被认证
3.完整性:SSL协议会对传送的数据进行完整性检查
位置:介于应用层和TCP层之间;也就是说应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并加上自己的SSL头。
4.SSL会话流程
TLS:Transport Layer Security安全传输层协议;用于在两个通信应用程序之间提供保密性和数据完整性。TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。
版本:1.3
实现于:OpenSSL
OpenSSL:OpenSSL是一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议。
OpenSSL工具使用:
1.对称加密算法、命令:
算法:AES、DES3、Blowfish、CAST、TDEA、RC2
命令:openssl enc
示例:用DES3算法加密文件Mageedu.txt并将结果输出到log.txt
加密后的结果:
2.非对称加密算法、命令:
加密解密:
算法:RSA
命令:openssl rsautl
数字签名:
算法:RSA,DSA
命令:openssl genrsa | gendsa
密钥交换:
算法:DH
命令:openssl dhparam
示例:
一、DSA应用例子
1. 生成1024位DSA参数集,输出到文件dsatest.pem
2. 使用参数文件dsatest.pem生成DSA私钥并用des3加密后输出到dsakey.pem
3. 使用私钥dsakey.pem生成公钥,输出到dsapulic.pem
4. 读取dsakey.pem公钥
二、RSA应用例子:
1. 创建1024位的RSA私钥
2. 提出公钥输出到rsapulic.pem
3. 用公钥加密test.txt文件并输出到rsatest.txt
4. 使用私钥对rsatest.txt文件解密并输出到文test1.txt
3.信息摘要算法、命令:
算法:MD5、SHA系列
命令:openssl dgst
示例:
1. 用MD5计算test.txt文件的值并输出(默认为输出至标准输出)
2. 用SHA1计算test1.txt文件的值并输出至log.txt文件
4.密钥和证书管理命令:
提供产生公开密钥对和对称密钥的方法,以及建立私有CA,管理CA的功能
下面我用一个建立私有CA的示例来简单介绍下相关的命令:
第一步:生成私钥放在/etc/pki/CA/private/xxx 目录下
第二步:生成自签证书
选项:
-new:生成新的自签证书请求
-x509:生成新的自签证书格式
-key:生成自签证书需要的私钥路径
-out:输出路径
-days:证书有效期指定
第三步:为CA创建相关目录和文件
客户端申请证书步骤:
第一步:创建目录,生成私钥
第二步:生成自签署证书请求
与CA服务端配置格式一样
第三步:将证书请求发送给CA服务端
在这里我用scp命令从服务端直接复制过来:
第四步:在CA服务端签署证书
查看生成的证书:
以上就是创建私有CA的全过程