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

 

5-6 DH 公鑰 系統操作

內容:

  • 5-6-1 產生鑰匙材料 - gendh

  • 5-6-2 管理 DH 命令 - dh

  • 5-6-3 管理 DH 參數 - dhparam

DHDiffie-Hellman)演算法提供一套交換鑰匙材料的公開鑰匙系統,許多應用系統利用它產生僅使用一次的會議鑰匙。DH 演算法僅產生通訊用的會議鑰匙,並不進行加密或解密的動作(相關原理請參考第四章)。OpenSSL 提供有 gendhdhparam dh 等三只命令,以下分別介紹之。

5-6-1 產生鑰匙材料 - gendh

DH 演算法參數有原數 g 與模數 n(即是 gxy mod n 中的 n g),利用 gendh 產生的命令格式如下:

openssl gendh [-out filename] [-outform DER | PEM] [-2 | -5] [-rand file(s)]

 [-engine id] [numbits]

  • -out filename:指定參數輸出檔案的名稱。

  • -outform DER |PEM:指定輸出檔案的編碼格式,內定值為 PEM

  • -2 | -5DH 最主要是產生共用模數 n,至於原數 g 可以是 2 5,一般也會採用 3,但 OpenSSL 只使用 2 5。內定值是 2

  • -rand file:指定亂數產生的質子(seed)。

  • -engin id:產生其他指定系統的格式。

  • numbits:產生鑰匙參數(n)的長度,一般都是 512 1024 位元。

操作範例。吾人產生一個 512 位元長度的鑰匙參數,g 指定為 5,輸出儲存於 dh512.pem 檔案內,操作如下:

H:\SecureLab\study>openssl gendh -out dh512.pem -5 512

Loading 'screen' into random state - done

Generating DH parameters, 512 bit long safe prime, generator 5

….

5-6-2 管理 DH 命令 – dh

基本上,所產生的 DH 參數檔案並不需要經過加密處理,因為參數內容都是公開的,但有時候也需要一些適當處理,命令格式如下:

openssl dh [-inform DER | PEM] [-outform DER | PEM] [-in filename]

       [-out filename] [-noout] [-text] [-C] [-engine id] [-check]

  • -inform-outform:指定輸入與輸出檔案格式,內定值為 PEM

  • -in-out:指定輸入與輸出檔案名稱。

  • -noout:不輸出到輸出檔案。

  • -text:將 DH 參數檔案以明文解析。

  • -C:將 DH 參數檔案轉換成 C 語言格式。

操作範例:吾人將之前產生的 dh512.pem 參數檔案以明文格式,顯示於螢幕上。操作如下:(內容請參考第四章說明)

H:\SecureLab\study>openssl dh -in dh512.pem -text

Diffie-Hellman-Parameters: (512 bit)

    prime:

        00:c5:8c:8c:0a:94:a5:be:7d:2d:84:b0:28:08:59:

        0c:a4:d8:07:62:f4:74:56:86:65:4e:94:db:97:7f:

        0f:04:44:07:bb:bc:36:d8:6c:fe:01:eb:7f:02:05:

        80:1a:59:df:c1:55:64:76:57:c6:44:ac:82:14:29:

        09:7e:21:8b:e7

    generator: 5 (0x5)

-----BEGIN DH PARAMETERS-----

MEYCQQDFjIwKlKW+fS2EsCgIWQyk2Adi9HRWhmVOlNuXfw

8ERAe7vDbYbP4B638C BYAaWd/BVWR2V8ZErIIUKQl+IYvnAgEF

-----END DH PARAMETERS-----

  • 質數(prime:即是 DH 參數的模數 n

  • 產生數(generator:即是 g 共用參數。

5-6-3 管理 DH 參數 - dhparam

 OpenSSL 較新版本已將 dhgen dh 兩命令功能整合於 dhparam 內,吾人僅介紹他所增加的命令。命令格式如下:

openssl dhparam [-inform DER | PEM] [-outform DER | PEM] [-in filename]

       [-out filename] [-dsaparam] [-noout] [-text] [-C] [-2] [-5] [-rand

       file(s)] [-engine id] [numbits]

  • -dsaparam:產生 DSA 樣式的 DH 參數。

操作範例:吾人欲產生一個  DSA 樣式的 DH 參數,並將 PEM 格式轉換成文字格式顯示於螢幕上,操作如下:

H:\SecureLab\study>openssl dhparam -dsaparam -out dh_dsa512.pem 512

Loading 'screen' into random state - done

Generating DSA parameters, 512 bit long prime

......+....+.+.............+.........+....+.....................................

.+........+......++++++++++++++++++++++++++++++++++++++++*

.+.+......................+....+...+...+......+....+.....+.+....+...............

..+.+......+....+.............+.......+..........+....++++++++++++++++++++++++++

+++++++++++++++++++++++++*

H:\SecureLab\study>openssl dhparam -in dh_dsa512.pem -text

Diffie-Hellman-Parameters: (512 bit)

    prime:

        00:81:4e:c9:58:bc:33:92:8f:64:3a:d4:d9:db:d8:

        9d:75:e2:70:5a:1d:e6:bd:d3:0b:72:bb:6a:f4:87:

        37:7f:74:79:b4:de:94:b9:58:3d:a4:1d:84:82:a0:

        01:88:2a:aa:c4:f8:da:01:0f:7f:06:1d:91:a4:de:

        22:e0:f4:dd:79

    generator:

        7d:72:91:16:db:05:d1:a3:05:c6:54:71:6b:ae:95:

        1d:af:d0:72:f2:9e:19:6a:ae:cd:4e:40:14:21:e0:

        cf:22:c4:95:33:d9:01:f5:a0:6c:27:93:a2:d0:9d:

        95:a3:96:94:19:b9:4c:6f:8e:b9:0d:33:8c:20:ed:

        50:24:ea:4a

    recommended-private-length: 160 bits

-----BEGIN DH PARAMETERS-----

MIGJAkEAgU7JWLwzko9kOtTZ29iddeJwWh3mvdMLcrtq9Ic

3f3R5tN6UuVg9pB2EgqABiCqqxPjaAQ9/Bh2RpN4i4PTdeQJA

fXKRFtsF0aMFxlRxa66VHa/QcvKeGWquzU5AFCHgzyLElTPZ

AfWgbCeTotCdlaOWlBm5TG+OuQ0zjCDtUCTqSgICAKA=

-----END DH PARAMETERS-----

 

主講人:粘添壽博士

 

資訊與網路安全技術