OpenSSL加密解密工具

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和证书

待补充


文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。

×

喜欢就点赞,疼爱就打赏