信息安全课程设计第一周任务(7条指令的分析)
概述:本篇博客主要为大家介绍openssl的7条指令的具体功能和实现。
7条指令如下:
dsaparam dsa enc
md_gost94
bf-ecb bf-ofb
camellia-128-cbc
一、openssl和DSA算法相关的指令
openssl中DSA算法指令主要有三个,分别是
指令 | 功能 |
dsaparam | 生成、处理DSA密钥参数,也可以直接生成DSA密钥 |
dsa | 处理DSA密钥格式的转换 |
gendsa | 根据DSA密钥参数生成一个DSA密钥 |
本文主要为大家介绍前两个
1.dsaparam指令说明
dsaparam主要用户生成密钥参数,也可以生成DSA密钥其用法如下:
指令解释:
1.[-help]:显示总结
2.[-inform PEM|DER]:PEM|DER输入格式- DER 或者 PEM
3.[-in infile]:输入文件
4.[-outform PEM|DER]:PEM|DER输出格式- DER 或者 PEM
5.[-out outfile]:输出文件
6.[-text]:文本打印为文本
7.[-C]:输出C代码
8.[-noout]:没有输出
9.[-genkey]:生成一个DSA密钥
10.[-rand val]:加载文件到随机数生成器
11.[-writerand outfile]:将随机数据写入指定的文件
12.[-engine val]:引擎是否使用引擎e,可能是硬件设备
具体实现:
1、生成密钥参数并查看其各个参数值
(1)生成1024位的密钥参数
(2)明文查看密钥参数的值
2、密钥参数格式间的转换
第一条指令为pem格式的密钥参数转为der格式
第二三条指令为der格式的密钥参数转为pem格式
3、直接生成DSA密钥
(1)直接生成DSA密钥
(2)查看DSA密钥,可知参数和密钥都被放在输出文件中,说明本质上还是先生成参数,再利用参数生成密钥
2.dsa指令说明
dsa指令功能如下:
指令解释:
1.[-help]:显示总结
2.[-inform format]:输入格式 DER PEM PVK
3.[-outform format]:输出格式 DER PEM PVK
4.[- in val]:输入关键
5.[-out outfile]:输出文件
6.[-noout]:没有输出
7.[-text]:文本打印为文本
8.[-modulus]:打印DSA公共值
9.[-pubin]:期望输入文件中有一个公钥
10.[-pubout]:输出公钥,而不是私钥
11.[-passin val]:输入文件传递短语源文件
12.[-passout val]:输出文件传递短语源文件
13.[-pvk-strong]:启用'强'PVK编码级别(默认)
14.[-pvk-weak]:启用'弱'PVK编码级别
15.[-pvk-none]:不要强制PVK编码
16.[-engine val]:引擎是否使用引擎e,可能是硬件设备
17.[-*]:任何受支持的密码
具体实现:
1、加密密钥和解密密钥
(1)生成未加密的DSA密钥
(2)使用des3加密DSA密钥
(3)解密DSA密钥
2、提取DSA的公钥
二、openssl对称加密算法enc
openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的方式使用。
openssl的对称加密算法指令主要用来对数据进行加密和解密处理,openssl基本上为所有其支持的对称加密算法都提供了指令的方式的应用,这些应用指令的名字基本上都是对称加密算法本身的名字加上位数、加密模式或者其他属性组合而成。
查询本机Ubuntu版本:
1.Ubuntu20.04 openssl版本enc指令功能如下:
1.[-help]:显示这个总结
2.[-list]:密码列表
3.[-ciphers]:别名附些
4.[-in infile]:输入文件
5.[--out outfile]:输出文件
6.[-pass val]:密码来源
7.[-e/-d]:加解密
8.[-p]:打印iv/key
9.[-P]:打印iv/key并退出
10.[-v]:详细输出
11.[-nopad]:禁用标准块填充
12.[-salt]:在KDF中使用盐(默认)
13.[-nosalt]:在KDF不使用盐
14.[-debug]:打印调试信息
15.[-a]:Base64编码/解码,取决于加密标志
16:[-base64]:同-a
17.[-A]:与-[base64|a]一起使用,将base64缓冲区指定为单个
18.[-bufsize val]:缓冲区大小
19.[-k val]:密码
20.[-kfile infile]:从文件中读取密码
21:[-K val]:Raw键,十六进制
22.[-S val]:盐,在十六进制
23.[-iv val]:IV在十六进制
24.[-md val]:使用指定的摘要从密码短语创建密钥
25.[-iter +int]:指定迭代计数和PBKDF2Use基于密码的密钥派生函数2的强制使用
26.[-none]:不加密
27.[-*]:任何受支持的密码
28.[-rand val]:将文件加载到随机数生成器中
29.[-writerand outfile]:向指定的文件写入随机数据
30.[-engine val]:引擎是否使用引擎e,可能是硬件设备
2.具体实现:
(1)用对称加密指令作为enc指令的参数:
(2)只对文件进行base64编码,而不使用加解密
a.对文件进行base64编码
b.对base64格式文件进行解密操作
c.使用diff命令查看可知解码前后明文一样
(3)不同方式的密码输入方式
a.命令行输入:
b.文件输入:
c.文件描述输入:
d.从标准输入输入:
(4)固定salt值加密
可以看到,不使用-S参数,salt参数随机生成,key和iv值也不断变化,当slat值固定时,key和iv值也是固定的。
(5)手动指定Key和IV值
手动指定key和iv值,salt固定
指定pass密码,不起作用,注意Key和IV值是16进制
三、消息摘要命令:md_gost94
网上找到和md_gost94相关的资料
加密私钥和PKCS12
要生成与MagPro CSP兼容的PKcs12文件,需要使用
对PKcs12文件和GOST R34.11-94文件进行加密的GOST算法
从密码派生密钥的哈希
Openssl pksc12-export-inkey gost.pem-in gost_cert.pem-keypbe gost89 - certpbe gost89 - macalg md_gost94
四、密码命令:
bf-ecb bf-ofb camellia-128-cbc
在密码学中,camellia是块密码的意思。Camellia算法每块的长度为128位元,密钥长度则可以使用128、192或256位元。具有与AES同等级的安全强度及运算量。这里所描述的两条命令是密钥长度为256位元时两种不同的加密解密模式。
1.camellia-128-cbc的实现
2.bf-ecb和bf-ofd的实现: