1.加密解密
背景:在网络通信中为了达到安全需要,比如通信保密性,保证信息完整性和可用性,这就需要一些技术,下面就来介绍相关的技术
技术包括:加密和解密
服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务)
加密和解密:
传统加密方法:替代加密方法、置换加密方法
现代加密方法:主要是现代块加密方法
注:真正的加密主要依赖密钥而不是加密算法
服务:
认证机制
访问控制机制
加密包括:
对称加密
公钥加密
单向加密
认证加密
2.对Linux系统:为了实现上述安全目标需要一些工具需要一些服务来实现上述功能,而linux的常用工具如下:
linux常用于上述功能(就是的加密算法、协议或服务等)
解决方案的工具主要有两个OpenSSL(ssl),GPG(pgp)
OpenSSL(ssl):是ssl协议和加密解密的实现
GPG(pgp):是gpg协议的实现
3. OpenSSL是什么?
OpenSSL由三部分组成:
libencrypt库(用于实现加密解密的库)
libssl库(用于实现ssl安全通信机制的库)
openssl多用途命令行工具(能实现加密解密等)
4.详解加密解密
加密算法和协议:(我们了解工作模式就行了)
4.1对称加密:加密和解密使用同一个密钥
常见的方式:
DES:data encryption standard 使用16位加密
3DES:Triple DES(即三倍的DES)
AES:advanced encryption standart高级加密
(128bits,192bits,256bits,384bits)
blowfish
twofish
IDEA
RC6
CASTS
加密算法特性:
1、加密解密使用同一个密钥
2、将原始数据分隔成为固定大小的块逐个进行加密
缺陷:
1、密钥过多()
2、密钥发放困难
4.2公钥加密:密钥分为公钥和私钥
公钥:从私钥中提取产生;可公开给所有人;pubkey
私钥:通过工具创建,使用者自己留存,必须保证其私密性:secret key
特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然
公钥加密的算法:
算法:RSA,DSA,ELGamal
dsa不能用于加密解密,仅能用于签名
rsa:既能加密解密又能用于签名
DSS:Digital Signature Standard(数字签名标准)
DSA:Digital Signature Algorthm
公钥加密用途:
数字签名:主要在于让接收方确认发送方的身份
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
数据加密
主要是前两种
双方通信的加密过程步骤:
第一:发送方(A)先生成一份数据,为了保证数据安全无误保密的送达给接收方(B),A要先用单向加密的算法计算出这段数据的特征码
第二:A会用自己的私钥加密这段特征码,并将结果附加在数据后面,
第三:A生成一个临时的对称密钥,并使用这对称密钥加密整段数据
第四:A会获取B的公钥,并使用B的公钥去再加密上一步已经加密的整段数据,并发送给B,实现秘密通信
双方的解密过程:
第一:B用自己的私钥去解密发送过来的对称密钥
第二:用对称密钥解密整段加密的内容
第三:用A的公钥去解密这段特征码,能解密则判断是A发送过来的,A的身份得到验证。
第四:B再用同样的对称加密算法去计算这段数据的特征码,并与解密出来的进行比较,如果相同,数据完整性得到验证,同时保密性也得到验证。
思考:这中间存在安全隐患就是,中途有个人在冒充,同时冒充AB,这时中间人就将AB的信息全部看了一遍。为了解决这个问题于是就有了第三方CA
4.3 单向加密:即提取数据指纹(特征码),只能加密,不能解密
特性:定长输出,雪崩效应(初始结果的微小改变将导致结果的巨大变化)
功能:实现数据的完整性校验
算法:md5:Message Digest5,128bits消息摘要算法
sha1, sha256,sha224, sha384, sha512
sha1:secure hash algorthm 1,安全的hash算法
5. PKI:public key infrastructure
公钥基础设施
它是以CA为核心生成的另一个安全机构
其组成:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
证书包含的内容:
X509v3(数字证书结构标准v3版):定义了证书的结构以及认证协议标准
版本号:
序列号: serial
签名算法ID(用什么算法算的)
发行者名称
有效期限
主体名称(拥有者的信息)
主体公钥
发行者的唯一标识
主体的唯一标识
扩展
发行者的签名
部分截图:如下
6. CA:
CA种类:公共信任的CA,私有CA;
建立私有CA:(只在私有范围内使用时)
工具:openssl:使用范围很小就可以用此来生成CA
OpenCA
6.1 构建私有CA:
在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;
步骤:(要做到耳熟能详)
(1) 生成私钥;
~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
(2) 生成自签证书;
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
以上命令内容说明:
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有CA时使用;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是day;
(3) 为CA提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}##一般就已经存在
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial ##此为给一个序列号
注意:只有创建私建CA时,就是只有作为CA主机的时候才在/etc/pki/CA/目录下进行创建,即上面的例子。在用到证书目录下的服务器要在其对应目录下创建,比如下面的例子实现,以httpd服务器为例。其目录为/etc/httpd/ssl
6.2 某服务器要用到证书进行安全通信的服务器,需要向CA请求签署证书:
步骤123在服务器172.18.26.22上执行
步骤4在主机172.18.26.21上执行
步骤:(以httpd为例)
(1) 用到证书的主机A生成私钥;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成证书签署请求
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 将请求通过可靠方式发送给CA主机;
比如远程复制:
#scp httpd.csr root@172.18.26.21:/tmp/
(4) 在CA主机上签署证书;
先创建文件
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
再签署
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
注:在第二步的时候配置服务地址比如httpd注意是以www开头的。
查看证书中的信息:
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
-serial表示查看序列号
-subject 查看
知识补充:1.scp 命令:把本机文件复制到远程主机上