1. 序章

GNU Privacy Guard(略して GPG )は、OpenPGP仕様を実装する無料のオープンソースツールです。 PGPは通常、電子メールとファイルの暗号化と署名に使用されます。

PGPシステムの中核部分は、暗号化キーです。 gpg ユーティリティは、このような暗号化キーの生成をサポートしています。 このチュートリアルでは、gpg。を使用して暗号化キーをすばやく生成する方法を見ていきます。

2. gpgを使用したキーの生成

gpg でキーのペアを生成するには、 –gen-keyオプションを使用します。

$ gpg --gen-key

まず、名前とメールアドレスの入力を求められます。 次に、必要な入力を入力すると、キーの生成が開始されます。 コンピュータのビジー状態によっては、gpgユーティリティが次のようなメッセージを出力する場合があります。

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy!

強力な暗号化キーを生成するには、真にランダムなバイトを生成する機能が必要です。 エントロピーは、システムのランダム性の尺度です。 したがって、強力な暗号化キーを生成するには、システムのエントロピーを増やす必要があります。 これを行う方法を見てみましょう。

3. エントロピーの増加

前に見たように、強力な暗号化キーを生成するには、高いエントロピーが必要です。 したがって、システムのエントロピーが低い場合、通常、キーの生成に非常に長い時間がかかります。

エントロピーを増やすと、これらのキーをすばやく生成するのに役立ちます。 エントロピーを増やすにはいくつかの方法があります。 ここでは、いくつかのオプションを確認します。

  • 広範なGUI操作
  • 広範なディスク操作
  • 外部プロセスを使用する

重要なのは、gpgコマンドを実行してキーを生成しているときにこれらの操作を実行する必要があるということです。 これらの操作によって生成されたエントロピーは、gpgコマンドによって使用されます。 次に、上記の各オプションの例を見てみましょう。

3.1. 広範なGUI操作

まず、GUIベースのオプションを見てみましょう。 広範なGUI操作を実現する1つの方法は、マウスをすばやく動かすことです。 マウスをすばやく動かすと、UIはUIでマウスポインタを同じようにすばやくレンダリングする必要があります。 これにより、プロセスにランダム性が生じます。

ただし、これはユーザーの努力を伴うため、最も好ましくないオプションです。 また、このアプローチは、マシンにGUIがあることを前提としていますが、サーバーには当てはまらない場合があります。

3.2. 広範なディスク操作

次に、ディスク操作を使用して生成されるエントロピーを見てみましょう。 ディスク上で複数のランダム操作を実行すると、システムエントロピーが増加します。 大規模なディスク操作を行う簡単な方法の1つは、findコマンドを使用することです。 前述のように、キーを生成するgpgコマンドと一緒にfindコマンドを実行する必要があります。 次に例を示します。

find / > /dev/null

このコマンドは、 root ファイルシステムからトラバースし、すべてのファイルとフォルダーを再帰的に一覧表示します。

ただし、これは長時間実行されるコマンドであることを覚えておく必要があります。 したがって、十分なエントロピーを生成したら、 Ctrl +Cを使用してこのコマンドを強制終了できます。

3.3. 外部プロセス

findコマンドを実行することでランダム性を生成するのは簡単ですが、より良い仕事をするバックグラウンドデーモンとして実行されるユーティリティがあります。 そのような例の1つは、havegedです。

HAVEGEアルゴリズムに基づいてランダム性を生成するデーモンです。 選択した配布用にhavegedをインストールできます。これにより、システムのエントロピーが一貫して維持され、gpgなどのユーティリティがランダム性を簡単に利用できるようになります。 havegedのインストールは非常に簡単です。

Debian / Ubuntuでは、次のコマンドを使用してhavegedをインストールできます。

$ sudo apt update
$ sudo apt install haveged

同様に、Fedora / RHELでは、次のようにしてhavegedをインストールできます。

$ dnf update
$ dnf install haveged

インストールすると、havegedがバックグラウンドでデーモンとして自動的に実行されます。 追加の手順は必要ありません。

4. 結論

この記事では、 gpg を使用して暗号化キーを生成する方法と、ランダム性がないために時間がかかる可能性があることを確認しました。 次に、エントロピーを増やすことができるさまざまな方法を見ました。