TLS:Transport Layer Security,以及前身安全套接层(Secure Sockets Layer ,SSL )是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版Web浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布了第一版TLS标准文件。随后又公布了RFC 5246(2008年8月)与RFC 6176(2011年3月)。TLS及SSL在服务器和客户机两端可同时被支持,目前已成为互联网上保密通讯的工业标准。
TLS协议是可选的,所以如果需要使用就必须配置客户端和服务器,有两种主要方式实现这一目标:一个是使用统一的TLS协议端口号(例如:用于HTTPS的端口443);另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:邮件、新闻协议和STARTTLS)。一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手,客户端和服务器协商各种参数用于创建安全连接:
当客户端连接到支持TLS协议的服务器要求创建安全连接并列出了受支持的密码组合握手开始。
服务器从该列表中决定加密和散列函数,并通知客户端。
服务器发回其数字证书,此证书通常包含服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥。
客户端确认其颁发的证书的有效性。
为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,并将其发送到服务器,只有服务器才能使用自己的私钥解密。
利用随机数,双方生成用于加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接关闭.
如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接。
密码算法和协议:
- 公钥私钥非对称秘钥保密系统:RSA,Diffie-Hellman,DSA
- 对称秘钥保密系统:RC2,RC4,IDEA,DES,Triple DES,AES
- 单向散列函数:MD5,SHA1,以及SHA256
对称加密:加密和解密使用同一个密钥,安全性依赖于秘钥,而非算法。
非对称加密:公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然。它的作用:
- 身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
- 密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方。
- 数据加密。
非对称加密的特性:
- 密钥长度较大,例如512bits, 2048bits, 4096bits
- 加密解密分别使用密钥对儿中的密钥相对进行
- 常用于数字签名和密钥交换
单向加密:通过单向散列函数提出数据的特征码。它的用处是保证数据的完整性。它的特性是:
- 定长输出:无论原来的数据是多大级别,其加密结果长度一样
- 雪崩效应:原始数据微小改变,将会导致结果巨大变化
- 不可逆
数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
数字证书的颁发:数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
数字证书的授权机构:CA机构,又称为证书授证(Certificate Authority)中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。
Openssl:
接下来我们使用openss对文件进行加密操作。
以上就是openssl的基本命令,算法及工具。
例1.使用openssl对/etc/passwd文件进行加密
[[email protected] ~]openssl enc -e -des-ede3 -a -salt -in /etc/passwd -out /etc/passwd.code
参数说明:-e指定加密的Cipher ,-a代表文本输出,-salt加入系统随机生成的东西,-in代表要进行加密的文件,-out文件加密后输出的文件路径。
例2.解密
生成用户密码:
[[email protected] ~]openssl passwd -1 -salt 8
Password:
$1$8$v2p0ZaQFeA2Gn2gboYZUK/
[[email protected] ~]
生成随机数:
[[email protected] ~]openssl rand -base64 8
+mxa+4hTcXo=
公钥加密:
生成秘钥对:# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS
注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;
从私钥中手动提取公钥:# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
随机数生成器:
/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞
/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数
OpenSSL&搭建私人CA