テキストに対する複雑な操作
単純な文字列照合に加えて、特定の文字列ではなく、文字列の長さとテキストブロックのパターンを調べる式を設定できます。
テキストベースの操作では、次の点に注意してください。
- 文字列引数をとる操作では、文字列は 255 文字を超えることはできません。
- 式に文字列を指定するときは、空白を含めることができます。
文字列の長さに対する操作
次の操作では、文字列を文字カウントで抽出します。
文字カウント操作 | 説明 |
---|---|
<text>.TRUNCATE(<count>) |
ターゲットの末尾を<count> の文字数で切り捨てた後の文字列を返します。文字列全体が<count> より短い場合、何も返されません。 |
<text>.TRUNCATE(<character> , <count> ) |
<count> で指定された文字数だけ<character> の後のテキストを切り捨てた後の文字列を返します。 |
<text>.PREFIX(<character> , <count> ) |
<character> の出現回数が最も多い<count> ターゲット内で最も長いプレフィクスを選択します。 |
<text>.SUFFIX(<character> , <count> ) |
<character> の出現回数が最も多い<count> ターゲット内で最も長いサフィックスを選択します。たとえば、次のレスポンス本文を考えてみましょう peninsula 。次の式は、sula: http.res.body(100).suffix('n',0) の値を返します。次の式が戻ります insula: http.res.body(100).suffix('n',1) 。次の式は、peninsula: http.res.body(100).suffix('n',2) の値を返します。次の式は、peninsula: http.res.body(100).suffix('n',3) の値を返します。 |
<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 と a bc は同じハッシュ値を生成します。
Base64 エンコーディングアルゴリズムを適用してテキストをエンコードおよびデコードする
次の 2 つの関数は、Base64 エンコーディングアルゴリズムを適用してテキスト文字列をエンコードおよびデコードします。
機能 | 説明 |
---|---|
text.B64ENCODE | Base64 エンコーディングアルゴリズムを適用して、テキスト文字列 (text で指定) をエンコードします。 |
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
- delete_all
- insert_before_all
たとえば、本文の最初の 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構成ファイルに保存します。したがって、AES256 暗号化方式は、ENCRYPT 関数と DECRYPT 関数に対してデフォルトで有効になっています。設定ファイルに保存されているキー値は、アプライアンスが再起動するたびにコマンドを実行しても、再起動後も保持されます。
暗号化方式を変更する場合、またはアプライアンスで現在の暗号化方式に対して新しいキー値を生成する場合は、set ns encryptionParams コマンドを手動で実行するか、構成ユーティリティを使用できます。CLI を使用して暗号化方式を変更するには、「例 1: 暗号化方式の変更」に示すように、methodパラメータのみを設定します。アプライアンスで現在の暗号化方式に対して新しいキー値を生成する場合は、「例 2:現在の暗号化方式に対する新しいキー値の生成」に示すように、method パラメータを現在の暗号化方式に設定し、KeyValueパラメータを空の文字列(”“)に設定します。新しいキー値を生成したら、設定を保存する必要があります。設定を保存しない場合、アプライアンスは次に再起動するまで新しく生成されたキー値のみを使用し、その後、保存された設定のキー値に戻ります。
GUI を使用した暗号化の設定
- [ システム ] > [設定]に移動します。
- [ 設定 ] 領域で、[ 暗号化パラメータの変更 ] をクリックします。
- [ 暗号化パラメータの変更 ] ダイアログボックスで、次のいずれかの操作を行います。
- 暗号化方式を変更するには、[方式] ボックスの一覧で、使用する暗号化方式を選択します。
- 現在の暗号化方式の新しいキー値を生成するには、[選択した方法の新しいキーを生成] をクリックします。
- 「 OK」をクリックします。
暗号化関数と復号化関数を使用する
ENCRYPT 関数と DECRYPT 関数は、テキストを返す任意の式プレフィックスとともに使用できます。たとえば、クッキー暗号化のリライトポリシーで 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
<!--NeedCopy-->
暗号化と復号化のポリシーを設定したら、設定を保存してポリシーを有効にします。
サードパーティ暗号化用の暗号化キーを構成する
デフォルトの構文式では、ENCRYPT および DECRYPT 関数を使用して、リクエストまたはレスポンスのテキストを暗号化および復号化できます。アプライアンス(スタンドアロン、高可用性、またはクラスタ)の ENCRYPT 機能によって暗号化されたデータは、同じアプライアンスによる DECRYPT 機能によって復号化されることを意図しています。アプライアンスは、RC4、DES、Triple-DES、AES92、AES256 暗号化方式をサポートしており、これらの各方式はデータの暗号化と復号化の両方に秘密鍵を使用します。これらの方法のいずれかを使用して、自己暗号化とサードパーティ暗号化の 2 つの方法でデータを暗号化および復号化できます。
アプライアンス(スタンドアロン、高可用性、またはクラスタ)の自己暗号化機能は、ヘッダー値を評価してデータを暗号化してから復号化します。これを理解する一例として、HTTP クッキーの暗号化があります。この式は、ヘッダーを評価し、送信応答の Set-Cookie ヘッダー内の HTTP Cookie 値を暗号化し、クライアントからの後続の着信要求の Cookie ヘッダーで返されたときに Cookie 値を復号化します。キー値はユーザー設定できません。代わりに、set ns encryptionParams コマンドで暗号化方式が設定されている場合、アプライアンスは設定された方式のランダムなキー値を自動的に生成します。デフォルトでは、このコマンドはAES256暗号化方式を使用します。これは高度にセキュリティ保護された方法であり、この方法をお勧めします。
サードパーティの暗号化機能は、サードパーティアプリケーションを使用してデータを暗号化または復号化します。たとえば、クライアントはリクエスト内のデータを暗号化し、アプライアンスはバックエンドサーバーに送信する前にデータを復号化したり、その逆を行ったりします。これを実行するには、アプライアンスとサードパーティアプリケーションが秘密キーを共有する必要があります。アプライアンスでは、暗号化キーオブジェクトを使用して秘密キーを直接設定できます。キー値は、より強力な暗号化のためにアプライアンスによって自動的に生成されます。アプライアンスとサードパーティアプリケーションの両方がデータの暗号化と復号化に同じキーを使用できるように、サードパーティ製アプライアンスで同じキーを手動で設定します。
注:サードパーティの暗号化を使用して、XML ペイロードを暗号化および復号化することもできます。XML ペイロードを暗号化および復号化する関数については、「XML ペイロードの暗号化と復号化」を参照してください。
暗号メソッド
暗号方式は、平文のバイト列を暗号文バイト列に変換する暗号化機能と、暗号文を平文に戻す復号機能の2つの機能を提供する。暗号方式は、鍵と呼ばれるバイトシーケンスを使用して、暗号化と復号化を実行します。暗号化と復号に同じ鍵を使用する暗号方式は、対称と呼ばれます。暗号化と復号化に異なるキーを使用する暗号方式は非対称です。非対称暗号の最も注目すべき例は公開鍵暗号法である。公開鍵暗号では、暗号化のために誰でも利用できる公開鍵と、復号機のみが知っている秘密鍵を使用する。
優れた暗号方式は、鍵を持っていない場合、暗号文を解読(「クラック」)することが不可能になります。「実行不可能」とは、サイファーテキストをクラックすると、価値よりも多くの時間とコンピューティングリソースがかかることを意味します。コンピュータがより強力で安価になるにつれて、以前はクラックが不可能であった暗号がより実現可能になります。また、時間が経つにつれて、暗号メソッド(またはその実装)に欠陥が見つかり、クラッキングが容易になります。したがって、古い暗号方式よりも新しい暗号方式が優先されます。一般に、長い長さのキーは、短いキーよりもセキュリティが優れていますが、暗号化と復号化の時間が長くなります。
暗号方式は、ストリーム暗号またはブロック暗号を使用できます。RC4 は、ほとんどセキュリティで保護されたストリーム暗号であり、レガシーアプリケーションにのみ使用されます。ブロック暗号にはパディングを含めることができます。
ストリーム暗号
ストリーム暗号方式は、個々のバイトに対して動作します。Citrix ADCアプライアンスで使用できるストリーム暗号は1つだけです。RC4は、128ビット(16バイト)のキー長を使用します。与えられたキーに対して、RC4はバイトの擬似乱数シーケンスを生成し、キーストリームを呼び出す。キーストリームは、暗号文を生成するために平文とX論理変換される。RC4 はもはや安全とは見なされず、レガシーアプリケーションで必要な場合にのみ使用すべきです。
ブロック暗号
ブロック暗号方式は、固定されたバイトブロックで動作します。Citrix ADCアプライアンスは、データ暗号化標準(DES)と高度な暗号化標準(AES)の2つのブロック暗号を提供します。DESは8バイトのブロックサイズと(Citrix ADCアプライアンスでは)キーの長さの2つの選択肢を使用します。64ビット(8バイト)(そのうち56ビットはデータ、8ビット)はパリティであり、トリプルDESは192ビット(24バイト)のキー長です。AESのブロックサイズは16バイトで、(Citrix ADCでは)キーの長さには128ビット(16バイト)、192ビット(24バイト)、および256ビット(32バイト)の3つの選択肢があります。
パディング
ブロック暗号のプレーンテキストがブロックの整数でない場合は、より多くのバイトのパディングが必要になることがあります。例えば、平文が「xyzzy」(16進数78797a7a79)であるとする。8 バイトの Triple-DES ブロックの場合、8 バイトを作成するには、この値をパディングする必要があります。パディングスキームは、復号化関数が復号後の元の平文の長さを決定できるようにする必要があります。現在使用されているパディングスキームをいくつか次に示します (n は追加されたバイト数です)。
- PKCS7: n バイトの値を n 個ずつ加算します。たとえば、78797a7a79030303。これは、OpenSSL と ENCRYPT () ポリシー関数で使用されるパディングスキームです。PKCS5 のパディング方式は PKCS7 と同じです。
- ANSI X.923: n-1 個のゼロバイトと値 n の最後のバイトを加算します。たとえば、78797a7a79000003。
- ISO 10126: n-1 個のランダムなバイトと値 n の最後のバイトを加算する。たとえば、78797a7a79xxxx03 と指定します。xx には任意のバイト値を指定できます。DECRYPT () ポリシー関数はこのパディングスキームを受け入れ、PKCS7 および ANSI X.923 スキームを受け入れることもできます。
- ISO/IEC 7816-4:0x80 バイトと n-1 ゼロバイトを追加します。たとえば、78797a7a79800000。これは OneAndZeroS パディングとも呼ばれます。
- ゼロ:n 個のゼロバイトを追加します。例:78797a7a79000000。これは NUL バイトを含まないプレーンテキストでのみ使用できます。
パディングが使用され、平文がブロックの整数である場合、復号関数が元の平文の長さを明確に決定できるように、通常、余分なブロックが追加されます。PCKS7 と 8 バイトブロックの場合、これは 080808080808080808 になります。
動作モード
ブロック暗号にはさまざまな動作モードがあり、平文の複数のブロックをどのように暗号化するかを指定します。一部のモードは、暗号化プロセスを開始するために使用される平文とは別のデータのブロックである初期化ベクトル (IV) を使用します。暗号化ごとに異なる IV を使用することをお勧めします。そうすれば、同じ平文でも異なる暗号文が生成されます。IV は秘密である必要はないので、暗号文の前に付加されます。モードには次のものが含まれます。
- 電子コードブック (ECB): 平文の各ブロックは個別に暗号化されます。IV は使用されません。プレーンテキストが暗号ブロックサイズの倍数でない場合は、パディングが必要です。同じ平文と鍵は、常に同じ暗号文を生成します。このため、ECB は他のモードよりも安全性が低いと考えられ、レガシーアプリケーションにのみ使用する必要があります。
- 暗号ブロック連鎖(CBC):平文の各ブロックは、暗号化される前に、前の暗号文ブロック、または最初のブロックのIVとXOR化されます。プレーンテキストが暗号ブロックサイズの倍数でない場合は、パディングが必要です。これは、Citrix ADC EncryptionParams メソッドで使用されるモードです。
- Cipher Feedback (CFB): 前の暗号文ブロック、または最初のブロックのIVは暗号化され、出力は現在の平文ブロックとXORされ、現在の暗号文ブロックが作成されます。フィードバックは、1 ビット、8 ビット、または 128 ビットです。平文は暗号文とXORされるので、パディングは不要である。
- 出力フィードバック (OFB): キーストリームは、暗号を連続的に IV に適用し、キーストリームブロックを平文で XOR することによって生成されます。パディングは必要ありません。
サードパーティ暗号化用の暗号化キーを構成する
次に、暗号化キーの設定で実行される設定タスクを示します。
- 暗号化キーを追加する。指定された暗号方式の暗号キーを、指定されたキー値で設定します。
- 暗号化キーの変更。設定済みの暗号化キーのパラメータを編集できます。
- 暗号化キーの設定解除。設定済みの暗号化キーのパラメータをデフォルト値に設定します。名前を持つ EncryptionKey 値が存在する必要があります。パディングを 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
<!--NeedCopy-->
上記の暗号化方式は、CBC をデフォルトの動作モードとする動作モードを指定します。したがって、DES、DES2、AES128、AES192、AES256方式は、DES-CBC、DES3-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)
<!--NeedCopy-->
GUI を使用して暗号化キーを追加する
[ システム ] > [ 暗号化キー ] に移動し、[ 追加 ] をクリックして暗号化キーを作成します。
GUI を使用して暗号化キーを変更する
[ システム ] > [ 暗号化キー ] に移動し、[ 編集 ] をクリックして、設定された暗号化キーのパラメータを変更します。
GUI を使用して暗号化キーを削除する
[ システム ] > [ 暗号化キー ] に移動し、[ 削除] をクリックします。
サードパーティ暗号化用の暗号化および復号化機能
以下は、サードパート暗号化に使用される 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
<!--NeedCopy-->
出力:出力は、指定されたメソッドとキーを使用して暗号化され、指定された出力エンコーディングを使用してエンコードされたテキストです。IV を必要とするブロックメソッドおよびモードの暗号化されたテキストの前に生成された IV を挿入し、encryptionKey に IV が指定されていないか、または encryptionKey が省略されます。
以下は、サードパーティの復号化に使用される DECRYPT 関数です。
DECRYPT(encryptionKey, in_encoding)
各項目の意味は次のとおりです。
入力データは、指定されたメソッドを使用した暗号化されたテキストであり、指定された入力エンコーディングを使用してエンコードされたキーです。このテキストは、IV を必要とするブロックメソッドおよびモードの暗号化されたテキストの前に生成された IV を含むことが想定され、encryptionKey に IV が指定されていないか、または encryptionKey が省略されます。
encryptionKey:暗号化方式、秘密鍵、およびその他の暗号化パラメータを提供するために、設定された encryptionKey オブジェクトを指定するオプションの文字列パラメータ。省略すると、encryptionParams 設定に関連付けられたメソッドと自動生成されたキーが使用されます。
in_encoding-入力のエンコード方法を指定するオプションの列挙パラメータ。これらの値は、ENCRYPT の out_encoding と同じです。省略すると、BASE64 エンコーディングが想定されます。
出力データは、エンコードされていない復号化されたテキストです。
バリアントとオプションのパラメータ
以下に、これらの関数のバリアントとオプションのパラメータを示します。
バリアント | 説明 |
---|---|
ENCRYPT | encryptionParams コマンドと BASE64 出力エンコーディングパラメータを使用します。 |
ENCRYPT (out_encoding) | EncryptionParams を使用し、出力エンコーディングパラメータを指定します。 |
ENCRYPT(encryptionKey) | 指定した encryptionKey および BASE64 出力エンコーディングパラメータを使用します。 |
ENCRYPT(encryptionKey, out_encoding) | 指定した encryptionKey と出力エンコーディングパラメーターを使用します。 |
DECRYPT | encryptionParams コマンドと BASE64 入力エンコーディングパラメータを使用します。 |
DECRYPT (out_encoding) | encryptionParams コマンドと指定された入力エンコーディングパラメータを使用します。 |
DECRYPT(encryptionKey) | 指定した encryptionKey および BASE64 入力エンコーディングパラメータを使用します。 |
DECRYPT(encryptionKey, out_encoding) | 指定した 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」KeyValue を設定コマンドで使用すると、既存の encrytionKey オブジェクトと HMAckEy オブジェクトの新しいキーを生成できます。
注意:
自動キー生成は、Citrix ADCアプライアンスがキーを使用してデータを暗号化および復号化する場合、またはHMACキーの生成と検証を行う場合に便利です。キー値自体は表示時にすでに暗号化されているため、生成されたキー値を取得して他の当事者が使用することはできません。
例:
add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
上記の暗号化方式は、CBC をデフォルトの動作モードとする動作モードを指定します。したがって、DES、DES2、AES128、AES192、AES256方式は、DES-CBC、DES3-CBC、AES128-CBC、AES192-CBC、AES256-CBC方式と同等である。
CLI を使用した HMAC キーの変更
このコマンドは、HMAC キーに設定されたパラメータを変更します。キー値の長さはダイジェストによって決定されないため、キー値を変更せずにダイジェストを変更できます。ただし、ダイジェストを変更するときは、新しいキーを指定することをお勧めします。コマンドプロンプトで入力します。
set ns hmacKey <name> [-digst <digest>] [-keyValue <keyvalue>]
[-comment <string>]
<!--NeedCopy-->
CLI を使用した HMAC キーの設定解除
このコマンドは、HMAC キー用に設定されたパラメータをデフォルト値に設定します。という名前の HMAckEy オブジェクトが存在する必要があります。設定解除できる唯一のパラメータは comment オプションで、これは削除されます。コマンドプロンプトで入力します。
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)
<!--NeedCopy-->