OpenSSL加密解密工具
数据安全特性
保密性:
- 数据保密性
- 数据隐私性
完整性:
- 数据完整性
- 系统完整性
可用性
网络服务面临的风险
安全攻击方式
被动攻击:窃听
主动攻击:伪装(冒充他人)、重放(多次发送,烦死你)、消息篡改(甲方我是你爸爸)、拒绝服务
安全机制
加密、数字签名(身份认证,确定是他发的)、访问控制、数据完整性、认证交换机制、流量填充(烟雾弹)、路由控制、公证
安全服务
认证
访问控制
数据保密性:
- 连接保密性
- 无连接保密性
- 选择域保密性
- 流量保密性
数据完整性
不可否认性
密码算法和协议:
- 对称加密
- 公钥加密
- 单向加密
- 认证协议
Linux系统加密解密工具:OpenSSL,gpg
加密算法和协议
对称加密:加密和解密使用同一个密钥、将原始数据分割成大小固定的块,逐个进行加密
DES(已经被攻破):
3DES(也是不太安全)
AES:密钥长度128bits、192bits、258、384、512
缺点:
1、密钥过多
2、密钥分发不安全
公钥加密:密钥是成对出现,用公钥加密的数据,只能使用与之配对的私钥解密
公钥:公开给所有人
私钥:自己留存,必须保证其私密性
用于身份认证、密钥交换、数据加密
算法:RSA,DSA
单向加密:只能加密,不能解密md5 sha256
功能:数据完整性
PKI:
签证机构:CA
注册机构:RA
证书格式
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者唯一标识
主体唯一标识
扩展
发行者签名
OpenSSL开源项目
OpenSSL 是一个开源项目,其组成主要包括一下三个组件:
- openssl:多用途的命令行工具
- libcrypto:加密算法库
- libssl:加密模块应用库,实现了ssl及tls
1、对称加密
对称加密需要使用的标准命令为 enc
常用选项有:
-in filename:指定要加密的文件存放路径
-out filename:指定加密后的文件存放路径
-salt:自动插入一个随机数作为文件内容加密,默认选项
-e:可以指明一种加密算法,若不指的话将使用默认加密算法
-d:解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致
-a/-base64:使用-base64位编码格式
示例:
加密:openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
解密:openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab
2、单向加密
单向加密需要使用的标准命令为 dgst
openssl dgst -md5 test.txt > a
3、生成密码
生成密码需要使用的标准命令为 passwd
常用选项有:
-1:使用md5加密算法
-salt string:加入随机数,最多8位随机数(string要自己填写)
-in file:对输入的文件内容进行加密
-stdion:对标准输入的内容进行加密
默认是加了salt的,如果没有指定,salt值是随机的,所以即使密码一样,生成的加密也是不一样的
4、生成随机数
生成随机数需要用到的标准命令为 rand
常用选项有:
-out file:将生成的随机数保存至指定文件中
-base64:使用base64 编码格式
-hex:使用16进制编码格式
举例
openssl rand -base64 10(字节数) -out test.txt
5、生成秘钥对
首先需要先使用 genrsa 标准命令生成私钥,然后再使用 rsa 标准命令从私钥中提取公钥。
genrsa 的用法如下:
openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
常用选项有:
-out filename:将生成的私钥保存至指定的文件中
-des|-des3|-idea:不同的加密算法
numbits:指定生成私钥的大小,默认是2048
一般情况下秘钥文件的权限一定要控制好,只能自己读写,因此可以使用 umask 命令设置生成的私钥权限,示例如下:
ras 的用法如下:
openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg]
[-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
常用选项:
-in filename:指明私钥文件
-out filename:指明将提取出的公钥保存至指定文件中
-pubout:根据私钥提取出公钥
6、CA和证书
待补充
文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。