26.3. JGroups の暗号化


JGroups には、クラスタートラフィックの暗号化を提供するための SYM_ENCRYPT および ASYM_ENCRYPT プロトコルが含まれます。

重要

ENCRYPT プロトコルが非推奨になったため、本番環境で使用することはできません。SYM_ENCRYPT または ASYM_ENCRYPT のいずれかを使用することをお勧めします。
デフォルトでは、これらのプロトコルはいずれもメッセージ本体のみを暗号化し、メッセージヘッダーは暗号化しません。宛先および送信元アドレスなどのすべてのヘッダーを含むメッセージ全体を暗号化するには、プロパティー encrypt_entire_messagetrue でなければなりません。これらのプロトコルを定義する際、NAKACK2 の下に直接配置する必要があります。
どちらのプロトコルも、JGroups で通信を暗号化および暗号の解除を行うために使用でき、以下の方法で使用されます。
  • SYM_ENCRYPT: JCEKS ストアタイプを使用してキーストアのシークレットキーで設定されます。
  • ASYM_ENCRYPT: アルゴリズムおよびキーサイズで設定されます。このシナリオでは、シークレットキーはキーストアから取得されませんが、コーディネーターによって生成され、新規メンバーに配信されます。メンバーがクラスターに参加すると、それらがシークレットキーの要求をコーディネーターに送信し、コーディネーターはメンバーの公開鍵で暗号化された新規メンバーにシークレットキーと共に応答します。
各メッセージは、暗号化ヘッダーを示す特定の暗号化ヘッダーとメッセージの暗号化および暗号化を解除するために使用するキーのバージョンを示す MD5 ダイジェストで暗号化済みとして識別されます。

26.3.1. JGroups 暗号化プロトコルの設定

JGroups 暗号化プロトコルは JGroups 設定ファイルに置かれます。JBoss Data Grid が使用される方法に応じてこのファイルを組み込むメソッドとして 3 つの方法があります。
  • 標準 Java プロパティーを設定で使用することもでき、起動時に JGroups 設定へのパスを -D オプションを使用して渡すことができます。
  • デフォルトの事前に設定された JGroups ファイルは infinispan-embedded.jar にパッケージ化されます。または、独自の設定ファイルを作成できます。ライブラリーモードでカスタム JGroup 設定を使用するために JBoss Data Grid をセットアップする方法については、「JGroups の設定 (ライブラリーモード) 」 を参照してください。
  • リモートクライアントサーバーモードでは、JGroups 設定はメインサーバーの設置ファイルの一部になります。
SYM_ENCRYPTASYM_ENCRYPT の両方のプロトコルを定義する際に、それらを設定ファイルの NAKACK2 の下に直接配置します。

26.3.2. SYM_ENCRYPT: キーストアの使用

SYM_ENCRYPT はストアタイプ JCEKS を使用します。JCEKS と互換性のあるキーストアを生成するには、以下の keytool のコマンドラインオプションを使用します。
$ keytool -genseckey -alias myKey -keypass changeit -storepass changeit -keyalg Blowfish -keysize 56 -keystore defaultStore.keystore -storetype JCEKS
SYM_ENCRYPT は、以下の情報をアプリケーションで使用される JGroups ファイルに追加して設定できます。
<SYM_ENCRYPT sym_algorithm="AES"
            encrypt_entire_message="true"
            keystore_name="defaultStore.keystore"
            store_password="changeit"
            alias="myKey"/>

注記

defaultStore.keystore はクラスパスに置かれる必要があります。

26.3.3. ASYM_ENCRYPT: アルゴリズムとキーサイズによる設定

この暗号化モードでは、コーディネーターが secretKey を選択し、これをすべてのピアに配信します。キーストアはなく、キーは公開/秘密鍵の交換を使用して配信されます。暗号化は以下のように行われます。
  1. シークレットキーがコーディネーターにより生成され、配信される。
  2. ビューが変更されると、ピアは独自の公開鍵でキーの要求を送信し、シークレットキーを要求する。
  3. コーディネーターは公開鍵を使ってシークレットキーを暗号化し、これをピアに送信し戻す。
  4. ピアが独自のシークレットキーとしてキーの暗号を解除し、これをインストールする。
  5. 追加の通信はシークレットキーを使用して暗号化および暗号化が解除される。

例26.7 ASYM_ENCRYPT の例

    ...
    <VERIFY_SUSPECT/>
    <ASYM_ENCRYPT encrypt_entire_message="true"
             sym_keylength="128"
             sym_algorithm="AES/ECB/PKCS5Padding"
             asym_keylength="512"
             asym_algorithm="RSA"/>

    <pbcast.NAKACK2/>
    <UNICAST3/>
    <pbcast.STABLE/>
    <FRAG2/>
    <AUTH auth_class="org.jgroups.auth.MD5Token"
          auth_value="chris"
          token_hash="MD5"/>
    <pbcast.GMS join_timeout="2000" />
この例では、ASYM_ENCRYPTNAKACK2 の直下に置かれ、encrypt_entire_message が有効にされています。これはメッセージヘッダーがメッセージ本体と共に暗号化されることを示します。つまり、NAKACK2 および UNICAST3 プロトコルも暗号化されます。さらに、AUTH は設定の一部として組み込まれるので、認証されたノードのみがコーディネーターからシークレットキーを要求できます。
新規コントローラーを特定するビューの変更により、新規のシークレットキーが生成され、すべてのピアに配信されます。これにより、ピアの大幅な変更と共にアプリケーションの大きなオーバーヘッドが生じます。オプションとして、新規のシークレットキーは、change_key_on_leave を true に設定することによりクラスターメンバーの退出時に生成することもできます。
メッセージ全体を暗号化する際に、メッセージは暗号化する前にバイトバッファーにマーシャルする必要があります。これによりパフォーマンスが低下します。

26.3.4. JGroups 暗号化設定パラメーター

以下の表は、SYM_ENCRYPT および ASYM_ENCRYPT が共に拡張する ENCRYPT JGroups プロトコルの設定パラメーターを示しています。
表26.1 ENCRYPT 設定パラメーター
名前 説明
asym_algorithm 非対称アルゴリズムの暗号化エンジンの変換。デフォルトは RSA です。
asym_keylength 初期の公開/秘密鍵の長さ。デフォルトは 512 です。
asym_provider 暗号化サービスプロバイダー。デフォルトは Bouncy Castle Provider です。
encrypt_entire_message デフォルトでは、メッセージ本体のみが暗号化されます。encrypt_entire_message を有効にすると、すべてのヘッダー、宛先および送信元アドレス、およびメッセージ本体が暗号化されます。
sym_algorithm 対称アルゴリズムの暗号化エンジンの変換。デフォルトは AES です。
sym_keylength 一致する対称アルゴリズムの初期のキーの長さ。デフォルトは 128 です。
sym_provider 暗号化サービスプロバイダー。デフォルトは Bouncy Castle Provider です。
以下の表では、SYM_ENCRYPT プロトコルパラメーターの一覧を示しています。
表26.2 SYM_ENCRYPT 設定パラメーター
名前 説明
alias キーの回復に使用されるエイリアス。デフォルトを変更します。
key_password キーを回復するためのパスワード。デフォルトを変更します。
keystore_name キーストアリポジトリーが含まれるクラスパス上のファイル。
store_password 整合性のチェックまたはキーストアのロック解除に使用されるパスワード。デフォルトを変更します。
以下の表は、ASYM_ENCRYPT プロトコルパラメーターの一覧を示しています。
表26.3 ASYM_ENCRYPT 設定パラメーター
名前 説明
change_key_on_leave メンバーがビューから出る際にシークレットキーが変更されるため、古いメンバーによる傍受 (eavesdrop)を防ぐことができます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.