Diffie–Hellman Key Exchange#
共通鍵の交換に使用される手法で、公開鍵暗号と同様に現状では解くのが困難な問題を利用している。
TLS において共通鍵を共有する際、公開鍵暗号を用いた暗号化の代わりに使用できるもので、公開鍵暗号の秘密鍵が漏洩したとしても共通鍵は守れるという。ただし、TLS のハンドシェイクの時間が延びやすいとされている。そのオーバーヘッドがどの程度のものなのかは、実際に動かして確認しておきたい。
OpenSSL では、サーバで Diffie–Hellman Parameters というものを設定しておくと使用できるようになる。
OpenSSL による Diffie–Hellman Parameters の生成#
openssl コマンドを使用すると以下のように生成できる。
$ openssl dhparam -out dhparam.pem 2048
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
................................................................................................................+.........................................................................................................................................................................+..........................................................+.............................................+............................................................................................................................................................................................+..................+..........................+............................................................+.......................................................................................+...........................................................................................................+........................................................................................................................................................................................................+.............................................................................................................................................................................................+.........................................+........................+....................................................................+...........................+............+.................................................................................+................+..................+......................................................+......................................+..........+............+...................................................................................+...........................+.............................+....................................................................................................+...........................................................+.....................................+...............................................................................+.......................+..............................................+.+.................................................................................................................+...................................................................................................................................................................+............................................+..............+......................................................................................................................................+.............................................................................................................................................................................................................+..............................................+.....................................................................................................................................+................+................................................+................................................................................................+............................+..................................................................................................................................................................................................+.+....................+.....................................................................+...................................................+..............................................+...........................................................................+.......................................+.............................................................................................................................................+...............................................................................................+...........................................................................+............................................+.................................................................................+................................................................................................................................................................................................+....................................+.....................................................+.....................................+.......+....................................................+...................................................+..............+.................................................+............................................................+............................................................................................................................................+..................................................................+..+...................................................................................................................+.....................+.......................................................................................+....................................................................................................+................................................................................................+...................+.....................................................................................+...........................+...................................................+....................................................................+.....................................................................................+.......................................+..........................................................................................................................................................................................+........................................................................................................................+.................+......................+......+.............................................................................................................................................................................................................................................+.....................................................................................+..................................................................................................+.........................................................................................................................................................+................................................................+...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................+...................................................................................+....................................................+.....................................................................+..................................................+......+......................................+.........+................................................................+.......................................................................................................................................+..........................................................................................................................................................................................................................................+.............................................+......+..........................................................................................................................+......................................................+...............................+..+..........................................+...............+...................................................................+...................................................................................................................................................................................................+..................+......................................................................................................................................................................................................................................................................................................................................................................................................+.............+..........................................................................................................................................................................+..................+...............................+...................................................................................................................................+.+................................................................................+.....................................................................................................................................................................................................................................................+................................................................................................................................+.............................................................................................................................................+..........++*++*++*++*
$ ls dhparam.pem
dhparam.pem