資訊保安課程設計第一週任務(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的實現: