資訊與網路安全技術 第 五章 密碼系統實習環境 - OpneSSL  上一頁      下一頁

 

5-4 對稱密碼系統操作

內容:

OpenSSL 包含許多對稱密碼系統套件,不但製作成函數庫(Crypto 套件),也編寫成可執行程式(通稱為命令),讓使用者可以直接利用它完成加密或解密處理,而不用另外編寫程式。至於對稱密碼演算法相關原理與製作技巧,請參考本書第二、三章介紹。

5-4-1 命令彙集

吾人可以在 OpenSSL 交談環境裡輸入”?” 命令,觀察它提供有哪些加密演算法命令,如下:

H:\SecureLab\study>openssl

OpenSSL> ?

Cipher commands (see the `enc' command for more details)

aes-128-cbc    aes-128-ecb    aes-192-cbc    aes-192-ecb    aes-256-cbc

aes-256-ecb    base64         bf             bf-cbc         bf-cfb

bf-ecb         bf-ofb         cast           cast-cbc       cast5-cbc

cast5-cfb      cast5-ecb      cast5-ofb      des            des-cbc

des-cfb        des-ecb        des-ede        des-ede-cbc    des-ede-cfb

des-ede-ofb    des-ede3       des-ede3-cbc   des-ede3-cfb   des-ede3-ofb

des-ofb        des3           desx           idea           idea-cbc

idea-cfb       idea-ecb       idea-ofb       rc2            rc2-40-cbc

rc2-64-cbc     rc2-cbc        rc2-cfb        rc2-ecb        rc2-ofb

rc4            rc4-40

加密演算法大多屬於 enc 命令下的選項(演算法、加密或解密)。演算法名稱有許多共通性,吾人僅就幾種典型範例說明,即可了解大多數密碼系統,如下:

  • aes-128-cbcAES 演算法、鑰匙長度為 128 位元,採用『密文區段串接』(Cipher Block Chaining, CBC)操作模式。

  • aes-128-ecb:同上,但採用『電子密碼書』(Electronic Code Book, ECB)操作。

  • base64Base64 編碼工具。

  • bfBlowfish 演算法,採用 CBC 操作模式。

  • bf-cbc:同上。

  • bf-cfb:同上,但採用『密文反饋』(Cipher Feedback, CFB)操作模式。

  • bf-ofb:同上,但採用『輸出反饋』(Output Feedback, OFB)操作模式。

  • cast5Cast 5 演算法。

  • desDES 演算法。

  • des-ede-cbc:兩支鑰匙的三重 DES 演算法(E-D-E),採用 CBC 操作模式。

  • des-ede3-ofb:三支鑰匙的三重 DES 演算法,採用 OFB 操作模式。

  • ideaIDEA 演算法。

  • rc4RC4 演算法。

5-4-2 命令格式 - enc

對稱加密演算法的命令格式如下:

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]

       [-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p] [-salt]

       [-P] [-bufsize number] [-nopad] [-debug]

各個選項說明如下:

  • -ciphername:演算法選項。

  • -in filename:輸入檔案名稱。

  • -out filename:輸出檔案名稱。

  • -pass arg:輸入通行碼(如 0-3-2 節介紹)。如利用於加密演算法,該選項可當加密鑰匙輸入;如運用於『私有鑰匙』加密時,則該選項視為通行碼輸入,通過確認後才可取出私有鑰匙。

  • -e –d:加密或解密處理,內定值是 –e(加密)。

  • -K key:直接輸入加密鑰匙。

  • -salt:交談式輸入醃製法中的『鹽』。如果沒有 K pass 選項,則可當作加密鑰匙輸入。

  • -nosalt:不採用交談式輸入『鹽』(醃製法)。

  • -iv IV:操作模式的起始值(Initial Vector)。

  • -nopad:明文不用填滿補期。

5-4-3 操作範例

吾人利用 DES 密碼系統做個操作範例。首先將 f1.txt 編碼加密成為 f1.bin,隨機輸入秘密鑰匙(-salt 選項,如 123456)。再將密文 f1.bin 還原存入 f1_n.txt,觀察是否與原明文相同。(在 Linux 系統下操作,Windows 下操作也相同)

[tsnien@Secure-1 openssl]$ cat file.txt            【顯示明文內容】

1234567890

1234567890

1234567890

[tsnien@Secure-1 openssl]$ openssl enc -des -salt -in file.txt -out file.bin

enter des-cbc encryption password:               輸入秘密鑰匙:123456

Verifying - enter des-cbc encryption password:     秘密鑰匙:123456

[tsnien@Secure-1 openssl]$ ls file.bin

file.bin

[tsnien@Secure-1 openssl]$ openssl enc -des -d -salt -in file.bin -out file_n.txt

enter des-cbc decryption password:           輸入秘密鑰匙:123456

[tsnien@Secure-1 openssl]$ cat file_n.txt      顯示解密後明文

1234567890

1234567890

1234567890

吾人也可以在 Windows 系統下執行相關範例,如下:

H:\SecureLab\study>type data.txt               【顯示原明文內容】

012345678901234567890123456789

 

H:\SecureLab\study>openssl rc4 -in data.txt -out cipher.txt     【加密處理】

enter rc4 encryption password:               【輸入加密鑰匙:1234567

Verifying - enter rc4 encryption password:      【重複輸入加密鑰匙】

 

H:\SecureLab\study>openssl rc4 -d -in cipher.txt -out plain.txt    【解密處理】

enter rc4 decryption password:             【輸入解密鑰匙】

 

H:\SecureLab\study>type plain.txt            【顯示解密後明文】

012345678901234567890123456789

 

主講人:粘添壽博士

 

資訊與網路安全技術