テキストに対する複雑な操作
単純な文字列マッチングの他に、特定の文字列ではなく、文字列の長さとテキストブロックを調べる式を設定できます。
テキストベースの操作では、次の点に注意してください。
- 文字列引数を取る操作では、文字列が 255 文字を超えることはできません。
- 式に文字列を指定するときは、空白文字を含めることができます。
文字列の長さに対する演算
以下の操作は、文字数によって文字列を抽出します。
文字カウント操作 | 説明 |
---|---|
<text>.TRUNCATE(<count>) |
ターゲットの末尾を<count> の文字数で切り捨てた後の文字列を返します。文字列全体が<count> よりも短い場合、何も返されません。 |
<text>.TRUNCATE(<character> ,<count> ) |
<count> で指定した文字数だけ後の<character> テキストを切り捨てた後の文字列を返します。 |
<text>.PREFIX(<character> ,<count> ) |
<character> の最も多く出現する<count> のある、ターゲット内で最も長いプレフィックスを選択します。 |
<text>.SUFFIX(<character> ,<count> ) |
<character> の最も<count> 出現数が多いターゲット内の最も長い接尾辞を選択します。たとえば、次のレスポンスボディ JLEwx を考えてみます。次の式は「JLEwx」の値を返します。http.res.body (100) .サフィックス (‘L’,1) 次の式は「LLEwx」を返します。 |
<text>.SUBSTR(<starting_offset>, <length> ) |
ターゲットオブジェクトから<length> 文字数の文字列を選択します。<starting_offset> の後の文字列の抽出を開始します。オフセット後の文字数が<length> 引数の値より少ない場合は、残りの文字をすべて選択します。 |
<text>.SKIP(<character>, <count>) |
<character> が多く<count> 出現する最長のプレフィックスをスキップした後、ターゲットから文字列を選択します。 |
文字列の一部に対する操作
いずれかの操作を使用して、より大きな文字列のサブセットを抽出する方法については、文字列演算テーブルを参照してください。
2 つの文字列の英数字の順序を比較する操作
COMPARE 操作は、2 つの異なる文字列の最初の一致しない文字を検査します。この操作は、辞書の用語を並べ替えるときに使用される辞書順に基づいています。
この操作は、比較された文字列内の最初の一致しない文字の ASCII 値間の算術差を返します。次に相違点を示します。
- 「abc」と「and」の違いは-1です(3番目のペア単位の文字比較に基づきます)。
- 「@」と「abc」の違いは-33です。
- 「1」と「abc」の差は-47です。
以下は、COMPARE操作のための構文です。
<text>.COMPARE(<string>)
テキストを表すバイト文字列から整数を抽出する
テキストをバイトのシーケンスとして表すバイト文字列を扱い、シーケンスから 8、16、または 32 ビットを抽出し、抽出したビットを整数に変換する方法については、整数抽出テーブルを参照してください。
テキストをハッシュ値に変換する
HASH 関数を使用して、テキスト文字列をハッシュ値に変換できます。この関数は、演算の結果として 31 ビットの正の整数を返します。式の形式は次のとおりです。
<text>.HASH
この関数は、大文字と小文字と空白を無視します。たとえば、操作の後、2 つの文字列 Ab c と bc は同じハッシュ値を生成します。
Base64 エンコードアルゴリズムを適用してテキストをエンコードおよびデコードする
次の 2 つの関数は、Base64 エンコーディングアルゴリズムを適用して、テキスト文字列をエンコードおよびデコードします。
関数 | 説明 |
---|---|
text.B64ENCODE | Base64 エンコードアルゴリズムを適用して、テキスト文字列 (テキストで指定) をエンコードします。 |
text.B64DECODE | Base64 デコードアルゴリズムを適用して、Base64 エンコードされた文字列 (テキストで指定) をデコードします。テキストが B64 エンコード形式でない場合、この操作は UNDEF を生成します。 |
EXTEND 関数を使用して書き換えアクションで検索を絞り込む
EXTEND 関数は、パターンまたはパターンセットを指定し、HTTP パケットの本体をターゲットとする書き換えアクションで使用されます。パターン一致が見つかると、EXTEND 関数は、一致する文字列の両側にあらかじめ定義されたバイト数だけ検索範囲を拡張します。正規表現を使用して、この拡張領域の一致に対して書き換えを実行できます。EXTEND 関数で構成された書き換えアクションは、正規表現のみを使用して HTTP 本文全体を評価する書き換えアクションよりも速く書き換えを実行します。
EXTEND 関数の形式は EXTEND (m, n) です。m と n は、検索範囲が一致するパターンの前後に拡張されるバイト数です。一致が見つかると、新しい検索範囲は、一致する文字列の直前の m バイト、文字列自体、および文字列の後の n バイトで構成されます。正規表現を使用して、この新しい文字列の一部を書き換えることができます。
EXTEND 関数は、使用される書き換えアクションが次の要件を満たしている場合にのみ使用できます。
- 検索は、パターンまたはパターンセット(正規表現ではない)を使用して実行されます。
- 書き換えアクションは、HTTP パケットの本体のみを評価します。
また、EXTEND 関数は、次のタイプの書き換えアクションでのみ使用できます。
- replace_all
- insert_after_all
- deleteall
- すべての前に挿入します
たとえば、本文の最初の 1000 バイトにある”http://exampleurl.com/” と”http://exampleurl.au/” のすべてのインスタンスを削除できます。これを行うには、文字列 exampleurl のすべてのインスタンスを検索するように書き換えアクションを設定し、一致が見つかったときに文字列の両側で検索範囲を拡張し、正規表現を使用して拡張領域で書き換えを実行します。次の例では、検索の範囲を、一致する文字列の左に 20 バイト、右に 50 バイトずつ拡張します。
add rewrite action delurl_example delete_all 'HTTP.REQ.BODY(1000)' -pattern exampleurl -refineSearch 'extend(20,50).regex_select(re#http://exampleurl.(com|au)#)'
テキストを 16 進形式に変換する
次の関数は、テキストを 16 進形式に変換し、結果の文字列を抽出します。
<text>.BLOB_TO_HEX(<string>)
たとえば、この関数は、バイト文字列「abc」を「61:62:63」に変換します。
テキストの暗号化と復号化
デフォルトの構文式では、ENCRYPT 関数と DECRYPT 関数を使用して、テキストを暗号化および復号化できます。特定のCitrix ADCアプライアンスまたは高可用性(HA)ペアでENCRYPT機能によって暗号化されたデータは、同じCitrix ADCアプライアンスまたはHAペアでのDECRYPT機能による復号化を目的としています。アプライアンスは、RC4、DES3、AES128、AES192、および AES256 暗号化方式をサポートしています。暗号化に必要なキー値は、ユーザーが指定することはできません。暗号化方式が設定されると、アプライアンスは指定された方式に適したランダムなキー値を自動的に生成します。デフォルトの方式はAES256暗号化方式です。これは最も安全な暗号化方式で、Citrix が推奨する暗号化方式です。
暗号化方式を変更する場合や、アプライアンスが現在の暗号化方式に対して新しいキー値を生成する場合を除き、暗号化を設定する必要はありません。
注: XML ペイロードを暗号化および復号化することもできます。XML ペイロードを暗号化および復号化する関数の詳細については、「XML ペイロードの暗号化と復号化」を参照してください。
暗号化の構成
起動時に、アプライアンスは set ns encryptionParams コマンドをデフォルトでAES256暗号化方式で実行し、AES256暗号化に適したランダムに生成されたキー値を使用します。アプライアンスはまた、キー値を暗号化し、暗号化されたキー値とともにコマンドをCitrix ADC構成ファイルに保存します。したがって、既定では、ENCRYPT 関数と DECRYPT 関数に対して AES256 暗号化方式が有効になっています。構成ファイルに保存されたキー値は、再起動するたびにアプライアンスがコマンドを実行しても、再起動後も保持されます。
暗号化方式を変更する場合、またはアプライアンスが現在の暗号化方式に対して新しいキー値を生成する場合は、set ns encryptionParams コマンドを手動で実行するか、設定ユーティリティを使用します。CLI を使用して暗号化方式を変更するには、「例 1: 暗号化方式の変更」に示すように、method パラメータだけを設定します。アプライアンスが現在の暗号化方式に対して新しいキー値を生成する場合は、「例 2: 現在の暗号化方式に対する新しいキー値の生成」に示すように、method パラメータを現在の暗号化方式に設定し、keyValue パラメータを空の文字列(「」)に設定します。で指定します。」新しいキー値を生成したら、設定を保存する必要があります。設定を保存しない場合、アプライアンスは次回の再起動時までに、新しく生成されたキー値を使用します。その後、保存した設定のキー値に戻ります。
GUI を使用した暗号化の構成
- [システム] > [設定]に移動します。
- [設定] 領域で、[暗号化パラメータの変更] をクリックします。
- [暗号化パラメータの変更] ダイアログボックスで、次のいずれかの操作を行います。
- 暗号化方法を変更するには、[方法] ボックスの一覧で、使用する暗号化方法を選択します。
- 現在の暗号化方法の新しいキー値を生成するには、[選択した方法に新しいキーを生成する] をクリックします。
- [OK] をクリックします。
ENCRYPT関数とDECRYPT関数の使用
ENCRYPT 関数と DECRYPT 関数は、テキストを返す任意の式のプレフィックスで使用できます。たとえば、Cookie 暗号化の書き換えポリシーで ENCRYPT 関数と DECRYPT 関数を使用できます。次の例では、書き換えアクションは、バックエンドサービスによって設定される MyCookie という名前の Cookie を暗号化し、クライアントから返されたときに同じ Cookie を復号化します。
add rewrite action my-cookie-encrypt-action replace "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0)" "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0).ENCRYPT" -bypassSafetyCheck YES
add rewrite action my-cookie-decrypt-action replace "HTTP.REQ.COOKIE.VALUE("MyCookie")" "HTTP.REQ.COOKIE.VALUE("MyCookie").DECRYPT" -bypassSafetyCheck YES
暗号化と復号化のポリシーを設定したら、設定を保存してポリシーを有効にします。
サードパーティ暗号化の暗号化キーを構成する
デフォルトの構文式では、ENCRYPT 関数と DECRYPT 関数を使用して、要求または応答のテキストを暗号化および復号化できます。アプライアンス(スタンドアロン、高可用性、またはクラスター)で ENCRYPT 機能によって暗号化されたデータは、同じアプライアンスによって DECRYPT 機能によって復号化されることを意図しています。アプライアンスは RC4、DES、トリプルDES、AES92、AES256暗号化方式をサポートしています。これらの方式はそれぞれ、データの暗号化と復号化の両方に秘密鍵を使用します。これらの方法のいずれかを使用して、自己暗号化とサードパーティ暗号化の 2 つの方法でデータを暗号化および復号化できます。
アプライアンスの自己暗号化機能(スタンドアロン、高可用性、またはクラスタ)は、ヘッダー値を評価してデータを暗号化し、復号化します。これを理解するための1つの例は、HTTP Cookie暗号化です。この式は、ヘッダーを評価し、発信応答の Set-Cookie ヘッダー内の HTTP cookie 値を暗号化し、クライアントからの後続の着信要求の cookie ヘッダーに返されたときに cookie 値を復号化します。キー値はユーザー設定できません。代わりに、set ns encryptionParams コマンドで暗号化方式が設定されている場合、アプライアンスは設定済みの方式に対してランダムなキー値を自動的に生成します。デフォルトでは、このコマンドはAES256暗号化方式を使用します。これは高度なセキュリティ保護方式です。
サードパーティの暗号化機能は、サードパーティのアプリケーションを使用してデータを暗号化または復号化します。たとえば、クライアントが要求内のデータを暗号化し、アプライアンスがデータを復号化してからバックエンドサーバーに送信するか、逆の場合も同様です。これを実行するには、アプライアンスとサードパーティのアプリケーションが秘密鍵を共有する必要があります。アプライアンスでは、暗号化キーオブジェクトを使用して秘密キーを直接設定でき、より強力な暗号化のためにアプライアンスによってキー値が自動的に生成されます。アプライアンスとサードパーティアプリケーションの両方が同じキーを使用してデータの暗号化と復号化を行うことができるように、サードパーティアプライアンスで同じキーを手動で設定します。
注:サードパーティの暗号化を使用して、XML ペイロードを暗号化および復号化することもできます。XML ペイロードを暗号化および復号化する関数の詳細は、「XML ペイロードの暗号化および復号化」を参照してください。
暗号方式
暗号方式は、平文のバイトシーケンスを暗号文のバイトシーケンスに変換する暗号化関数と、暗号文を平文に変換する復号関数の 2 つの関数を提供します。暗号方式では、キーと呼ばれるバイトシーケンスを使用して、暗号化と復号化を実行します。暗号化と復号化に同じキーを使用する暗号メソッドは、対称と呼ばれます。暗号化と復号化に異なるキーを使用する暗号方式は非対称です。非対称暗号の最も顕著な例は、公開鍵暗号です。公開鍵暗号では、暗号化のために誰でも利用できる公開鍵と、復号化器だけが知っている秘密鍵を使用します。
良い暗号方法は、鍵を持っていない場合、暗号文を復号化(「クラック」)することは不可能です。「実現不可能」とは、暗号文の解読には価値があるよりも多くの時間とコンピューティングリソースがかかることを意味します。コンピュータがより強力で安価になるにつれて、以前はクラックが不可能であった暗号はより実現可能になりました。また、時間の経過とともに、暗号メソッド(またはその実装)に欠陥があり、クラッキングが容易になります。したがって、新しい暗号方式は、古い暗号方式よりも優先されます。一般に、長めのキーは、短いキーよりもセキュリティが優れており、暗号化と復号化に要する時間が長くなります。
暗号方式では、ストリーム暗号またはブロック暗号を使用できます。RC4は、主にセキュアなストリーム暗号であり、それが唯一のレガシーアプリケーションのために使用されます。ブロック暗号にはパディングを含めることができます。
ストリーム暗号
ストリーム暗号方式は、個々のバイトに対して動作します。Citrix ADC アプライアンスで使用できるストリーム暗号は、128 ビット(16 バイト)のキーの長さを使用する RC4 だけです。特定のキーに対して、RC4はバイトの擬似ランダムシーケンスを生成し、キーストリームを呼び出します。キーストリームは、プレーンテキストとX-ORで暗号化テキストを生成します。RC4 は安全とは見なされなくなり、レガシーアプリケーションで必要な場合にのみ使用してください。
ブロック暗号
ブロック暗号方式は、固定バイトブロックで動作します。Citrix ADCアプライアンスは、データ暗号化標準(DES)と高度な暗号化標準(AES)の2つのブロック暗号を提供します。DESでは、8バイトのブロック・サイズを使用し、(Citrix ADCアプライアンスの場合)キー長には64ビット(8バイト)(56ビットがデータ、8ビットがパリティであるトリプル DES(トリプル DES)(192ビット(24バイト))のキー長を使用します。AESは16バイトのブロックサイズを持ち、(Citrix ADCの場合)キー長には128ビット(16バイト)、192ビット(24バイト)、256ビット(32バイト)の3つの選択肢があります。
パディング
ブロック暗号の平文が整数ブロックでない場合、より多くのバイトのパディングが必要になることがあります。たとえば、プレーンテキストが「xyzzy」(16進数 78797a7a79) であるとします。8 バイトの Triple-DES ブロックの場合、8 バイトを作成するには、この値をパディングする必要があります。パディング方式では、復号化関数が復号化後の元の平文の長さを決定できるようにする必要があります。以下は、現在使用されているいくつかのパディングスキームです(nは追加されたバイト数です)。
- PKCS7: それぞれ n バイトの値を追加します。たとえば、次のようになります。これは、OpenSSL および ENCRYPT () ポリシー関数で使用されるパディング方式です。PKCS5 パディング方式は PKCS7 と同じです。
- ANSI X.923: n-1 ゼロバイトと値 n の最後のバイトを追加します。たとえば、次のように指定します。
- ISO 10126:n-1ランダムバイトと値nの最後のバイトを追加します。たとえば、78797a7a79xx03 と指定します。ここで、xx には任意のバイト値を指定できます。DECRYPT () ポリシー関数は、このパディングスキームを受け入れます。これにより、PKCS7 および ANSI X.923 スキームを受け入れることもできます。
- ISO/IEC 7816-4:0x80 バイトと n-1 のゼロバイトを追加します。たとえば、次のように指定します。これは、OneAndZerosパディングとも呼ばれます。
- [ゼロ]: 0 バイトを n 個加算します。たとえば、次のようになります。これは、NUL バイトを含まないプレーンテキストでのみ使用できます。
パディングが使用され、プレーンテキストが整数ブロックである場合、通常、復号関数が元のプレーンテキストの長さを明確に決定できるように、余分なブロックが追加されます。PCKS7および8バイトブロックの場合、これは08080808080808になります。
操作モード
ブロック暗号には、複数のプレーンテキストのブロックがどのように暗号化されるかを指定するさまざまな動作モードがあります。一部のモードでは、暗号化プロセスの開始に使用される平文とは別に、データのブロックである初期化ベクトル (IV) を使用します。同じ平文が異なる暗号文を生成するように、暗号化ごとに異なる IV を使用することをお勧めします。IVは秘密である必要はなく、暗号文の前に付加されます。次のモードがあります。
- 電子コードブック(ECB):平文の各ブロックは個別に暗号化されます。IV は使用されません。平文が暗号ブロックサイズの倍数でない場合は、パディングが必要です。同じ平文とキーは、常に同じ暗号文を生成します。このため、ECB は他のモードよりも安全性が低いと考えられ、レガシーアプリケーションでのみ使用してください。
- 暗号ブロック連鎖(CBC):平文の各ブロックは、暗号化される前に、前の暗号文ブロック、または最初のブロックのIVと排他的論理和されます。平文が暗号ブロックサイズの倍数でない場合は、パディングが必要です。これは、Citrix ADC暗号化パラメータメソッドで使用されるモードです。
- 暗号フィードバック(CFB):前の暗号文ブロック、または最初のブロックのためのIVは、暗号化され、出力は、現在の暗号文ブロックを作成するために、現在の平文ブロックと排他的論理和されます。フィードバックは、1ビット、8ビット、または128ビットにすることができます。プレーンテキストは暗号テキストとXORされるため、パディングは必要ありません。
- 出力フィードバック(OFB):キーストリームは、IVに連続的に暗号を適用し、プレーンテキストでキーストリームブロックをXORingすることによって生成されます。パディングは必要ありません。
サードパーティ暗号化の暗号化キーを構成する
次に、暗号化キーの設定で実行される設定作業を示します。
- 暗号化キーを追加する。指定されたキー値を使用して、指定された暗号方式の暗号化キーを設定します。
- 暗号化キーの変更。設定された暗号化キーのパラメータを編集できます。
- 暗号化キーの設定を解除します。設定された暗号化キーのパラメータをデフォルト値に設定します。名前を持つ暗号化キー値が存在する必要があります。パディングをDEFAULT(メソッドによって決定される)に設定し、既存のIVを削除します。これにより、ENCRYPT()はランダムIVを生成します。既存のコメントを削除します。メソッドとキーの値はリセットできません。
- 暗号化キーを削除する。設定された暗号化キーを削除します。キーには参照を指定できません。
- 暗号化キーを表示します。設定された暗号化キーまたはすべての設定済みキーのパラメータを表示します。名前を省略すると、キーの値は表示されません。
CLI を使用した暗号化キーの追加
コマンドプロンプトで、次のように入力します。
add ns encryptionKey <name> -method <method> [-keyValue <keyvalue>][-padding (OFF | ON)] [-iv <hexstring>] -keyValue <keyvalue> [-comment <string>]
各項目の意味は次のとおりです。
<method> = ( NONE | RC4 | DES3 | AES128 | AES192 | AES256 | DES | DES-CBC | DES-CFB | DES-OFB | DES-ECB | DES3-CBC | DES3-CFB | DES3-OFB | DES3-ECB | AES128-CBC | AES128-CFB | AES128-OFB | AES128-ECB | AES192-CBC | AES192-CFB | AES192-OFB | AES192-ECB | AES256-CBC | AES256-CFB | AES256-OFB | AES256-ECB ) <hexstring> = hex-encoded byte sequence
上記の暗号化方式では、デフォルトの動作モードとして CBC を使用する動作モードを指定します。したがって、DES、DES2、AES128、AES192、およびAES256メソッドは、DES-CBC、AES128-CBC、AES192-CBC、およびAES256-CBCのメソッドに等価です。
CLI を使用した暗号化キーの変更
コマンドプロンプトで、次のように入力します。
set ns encryptionKey <name> [-method <method>] [-keyValue <keyvalue>] [-padding ( OFF | ON )] [-iv <string>] [-comment <string>]
CLI を使用して暗号化キーを設定解除する
コマンドプロンプトで、次のように入力します。
unset ns encryptionKey <name> [-padding] [-iv] [-comment]
CLI を使用した暗号化キーの削除
コマンドプロンプトで、次のように入力します。
rm ns encryptionKey <name>
CLI を使用した暗号化キーの表示
コマンドプロンプトで、次のように入力します。
例:
show ns encryptionKey [<name>]
add ns encryptionKey my_key -method aes256 -keyValue 26ea5537b7e0746089476e5658f9327c0b10c3b4778c673a5b38cee182874711 –iv c2bf0b2e15c15004d6b14bcdc7e5e365
set ns encryptionKey my_key -keyValue b8742b163abcf62d639837bbee3cef9fb5842d82d00dfe6548831d2bd1d93476
unset ns encryptionKey my_key -iv
rm ns encryptionKey my_key
show ns encryptionKey my_key
Name: my_key
Method: AES256
Padding: DEFAULT
Key Value: (not disclosed)
GUI を使用した暗号化キーの追加
[システム] > [暗号化キー] に移動し、[追加] をクリックして暗号化キーを作成します。
GUI を使用した暗号化キーの変更
[システム] > [暗号化キー] に移動し、[編集] をクリックして、設定された暗号化キーのパラメータを変更します。
GUI を使用して暗号化キーを削除する
[システム] > [暗号化キー] に移動し、[削除] をクリックします。
サードパーティの暗号化のためのENCRYPTおよびDECRYPT機能
以下は、第三部暗号化に使用されるENCRYPT関数です。
ENCRYPT (encryptionKey, out_encoding)
各項目の意味は次のとおりです。
アプライアンスの入力データは、暗号化されるテキストです。
encryptionKey: 暗号化方法、秘密キー値、およびその他の暗号化パラメータを提供するために、設定された暗号化キーオブジェクトを指定するオプションの文字列パラメータです。省略した場合、set ns encryptionParamS コマンドに関連付けられた自動生成されたキー値が使用されます。
out_encoding: この値は、出力がどのようにエンコードされるかを指定します。省略すると、BASE64 エンコーディングが使用されます。
入力:
BASE64: original PEM base64-encoding: 6 bits (0..63) encoded as one ASCII character:
0..23 = 'A'..'Z', 24..51 = 'a'..'z', 52..61 = '0'..'9', 62 = '+', 63 = '/', '=' = pad byte.
BASE64URL: URL and Filename safe base64-encoding: same as BASE64 except 62 = '-', 63 = '_'
HEX_UPPER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'.
HEX_LOWER: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'a'..'f'.
HEX_COLONS: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'; ':' between each hex byte. Matches BLOB_TO_HEX() output format
HEX: For input, accepts HEX_UPPER, HEX_LOWER, and HEX_COLONS format. For output, produces HEX_LOWER format
出力:出力は、指定されたメソッドとキーを使用して暗号化され、指定された出力エンコーディングを使用してエンコードされたテキストです。IV を必要とするブロックメソッドおよびモードの暗号化テキストの前に生成された IV を挿入し、encryptionKey に IV が指定されていないか、encryptionKey が省略されます。
以下は、第三部復号化のために使用されるDECRYPT関数です。
DECRYPT(encryptionKey, in_encoding)
各項目の意味は次のとおりです。
入力データは、指定された入力エンコーディングを使用してエンコードされた指定されたメソッドとキーを使用して暗号化されたテキストです。このテキストには、IV を必要とするブロックメソッドおよびモードの暗号化テキストの前に生成された IV が含まれていることが予想され、encryptionKey に IV が指定されていないか、encryptionKey が省略されます。
encryptionKey:暗号化方式、秘密キー、およびその他の暗号化パラメータを提供するために、設定された encryptionKey オブジェクトを指定するオプションの文字列パラメータ。省略すると、encryptionParams 設定に関連付けられたメソッドと自動的に生成されたキーが使用されます。
in_encoding—入力のエンコード方法を指定するオプションの列挙パラメータ。値は、ENCRYPT の out_encoding と同じです。省略した場合、BASE64 エンコーディングが想定されます。
出力データは、エンコードされていない復号化されたテキストです。
バリアントとオプションのパラメータ
オプションのパラメータを持つこれらの関数の変形は次のとおりです。
バリアント型 | 説明 |
---|---|
暗号化します | encryptionParams コマンドと BASE64 出力エンコーディングパラメータを使用します。 |
暗号化 (出力エンコーディング) | encryptionParams を使用し、出力エンコーディングパラメータを指定します。 |
暗号化 (暗号化キー) | 指定された encryptionKey および BASE64 出力エンコーディングパラメータを使用します。 |
ENCRYPT (暗号化キー、出力エンコーディング) | 指定された encryptionKey と出力エンコードパラメータを使用します。 |
復号化します | encryptionParams コマンドと BASE64 入力エンコーディングパラメータを使用します。 |
DECRYPT (出力エンコーディング) | encryptionParams コマンドと指定された入力エンコードパラメータを使用します。 |
暗号化解除 (暗号化キー) | 指定された encryptionKey および BASE64 入力エンコードパラメータを使用します。 |
DECRYPT (暗号化キー、出力エンコーディング) | 指定された encryptionKey と入力エンコードパラメータを使用します。 |
HMAC キーの設定
Citrix ADCアプライアンスは、メッセージ送信者とメッセージ受信者の間で共有される秘密キーを使用して、入力テキストのダイジェスト方法またはハッシュを計算するハッシュメッセージ認証コード(HMAC)機能をサポートしています。ダイジェスト方式(RFC 2104 技術から派生した)は、送信者を認証し、メッセージの内容が変更されていないことを確認します。たとえば、クライアントが共有 HMAC キーを持つメッセージをCitrix ADC アプライアンスに送信する場合、詳細(PI)ポリシー式は HMAC 関数を使用して、選択したテキストのハッシュベースのコードを計算します。次に、受信者がシークレットキーを持つメッセージを受信すると、元の HMAC と比較して HMAC を再計算し、メッセージが変更されたかどうかを判断します。HMAC 機能は、スタンドアロンアプライアンスと、高可用性構成またはクラスタ内のアプライアンスでサポートされます。これを使用することは、暗号化キーの設定に似ています。
add ns hmackey コマンドと set ns hmackey コマンドには、HMAC 計算に使用するダイジェストメソッドと共有秘密キーを指定するパラメータが含まれています。
HMAC キーを設定するには、以下を実行する必要があります。
- HMAC キーの追加。指定されたキー値で HMAC キーを設定します。
- HMAC キーの変更。設定された HMAC キーのパラメータを変更します。ダイジェスト方式は、ダイジェストによってキー値の長さが決まらないため、キー値を変更することなく変更できます。ただし、ダイジェストを変更するときは、新しいキーを指定することをお勧めします。
- HMAC キーの設定を解除します。設定された HMAC キーのパラメータをデフォルト値に設定します。名前の hmacKey オブジェクトが存在する必要があります。設定解除できる唯一のパラメータは、コメントです。コメントは削除されています。
- HMAC キーを削除する。設定されたキーを削除します。キーには参照を指定できません。
- HMAC キーを表示します。設定済みの HMAC AC キーまたはすべての設定済みキーのパラメータを表示します。名前を省略すると、キーの値は表示されません。
一意でランダムな HMAC キーを設定する
一意の HMAC キーを自動的に生成できます。アプライアンスがクラスタ構成の場合、HMAC キーはプロセスの開始時に生成され、すべてのノードとパケットエンジンに配布されます。これにより、HMAC キーはすべてのパケットエンジンとクラスタ内のすべてのノードで同じになります。
コマンドプロンプトで、次のように入力します。
add ns hmacKey <your_key> -digest <digest> -keyValue <keyvalue>
例:
add ns hmacKey <name> -digest sha1 -keyValue AUTO
各項目の意味は次のとおりです。
- 名前の構文は正しく、既存のキーの名前と重複しません。
- 「AUTO」キー値は、既存のencrytionKeyおよびhmacKeyオブジェクトの新しいキーを生成するために、セットコマンドで使用することができます。
注:
キーの自動生成は、Citrix ADCアプライアンスがキーを使用してデータを暗号化および復号化する場合、またはHMACキーを生成および検証する場合に便利です。キー値自体は表示時に暗号化されているため、生成されたキー値を取得して他のユーザーが使用することはできません。
例:
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
上記の暗号化方式では、デフォルトの動作モードとして CBC を使用する動作モードを指定します。したがって、DES、DES2、AES128、AES192、およびAES256メソッドは、DES-CBC、AES128-CBC、AES192-CBC、およびAES256-CBCのメソッドに等価です。
CLI を使用した HMAC キーの変更
このコマンドは、HMAC キーに設定されたパラメータを変更します。キー値の長さはダイジェストによって決定されないため、キー値を変更せずにダイジェストを変更できます。ただし、ダイジェストを変更するときは、新しいキーを指定することをお勧めします。コマンドプロンプトで、次のように入力します。
set ns hmacKey <name> [-digst <digest>] [-keyValue <keyvalue>]
[-comment <string>]
CLI を使用して HMAC キーを設定解除する
このコマンドは、HMAC キーに設定されたパラメータをデフォルト値を使用して設定します。名前の hmacKey オブジェクトが存在する必要があります。設定解除できるパラメータは、コメントオプションだけです。コメントオプションは削除されます。コマンドプロンプトで、次のように入力します。
unset ns hmacKey <name> -comment
CLI を使用した HMAC キーの削除
このコマンドは、設定された hmac キーを削除します。キーは参照を持つことはできません。コマンドプロンプトで、次のように入力します。
rm ns hmacKey <name>
CLI を使用した HMAC キーの表示
コマンドプロンプトで、次のように入力します。
show ns encryptionKey [<name>]
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
set ns hmacKey my_hmac_key -keyValue f348c594341a840a1f641a1cf24aa24c15eb1317
rm ns hmacKey my_hmac_key
show ns hmacKey my_hmac_key
Name: my_hmac_key
Digest: SHA1
Key Value: (not disclosed)