日本-日本語
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:V8.3の新機能
第 2 章:一般ユーザ機能
第 3 章:システム管理機能
第 4 章:光メディアのマスタリング
第 5 章:プログラミング機能
第 6 章:InfoServerユーティリティ
第 7 章:関連製品の機能
第 8 章:新規および改訂されたドキュメント
第 9 章:英語版ドキュメント一覧
第 10 章:各英語版ドキュメントの内容
索引
PDF
OpenVMS ホーム

HP OpenVMS
V8.3 新機能説明書


目次 索引



まだ DOSD 用のダンプ・ファイルを作成していない場合は,ここで作成します。 SYS$STARTUP:SYCONFIG.COM ファイルを編集し,DOSD デバイスをマウントするコマンドを追加します。エラー・ログ・バッファが復旧されるようにするには, DOSD デバイスを SYCONFIG 内でマウントする必要があります。

3.4 ロックの動的な再マスタリング---LOCKRMWT

OpenVMS がロック・ツリーを再マスタリングするかどうかを判断する方法が,OpenVMS Version 8.3 で更新されました。 Version 8.3 よりも前のバージョンでは,システム・パラメータ LOCKDIRWT に基づいて決定されていました。ロック・ツリーは,LOCKDIRWT 値が大きなノードに移動されていました。複数のノードの LOCKDIRWT の値が同じ場合は,ロック・ツリーはアクティビティの高いノードに移動されていました。アクティビティの量の判断では,ハードコードされた非常に小さなしきい値が使用されていたため,ノード間でのロック・ツリーの移動でスラッシングが発生することがよくありました。

Version 8.3 では,新しいシステム・パラメータであるロック・マスタの重み (LOCKRMWT) が実装されています。このパラメータは,ゼロ (0) から 10 の範囲の値を取り,デフォルト値は 5 です。このパラメータの値は,ノードがマスタ・ロック・ツリーを必要としている度合いを表します。値が大きいほどツリーがそのノードに移動する可能性が高まります。 0 と 10 は特別な値です。ゼロは,そのノードが,リソース・ツリー上のロックを持つ唯一のノードにならないかぎり,そのノードにマスタ・ツリーを移動させないことを示します。値がゼロのノード上のマスタ・ツリーは,LOCKRMWT の値が 0 より大きなノードがあれば,そのノードに移動されます。値 10 は,そのノードが常にマスタ・ロック・ツリーを必要とすることを示します。 LOCKRMWT の値が 10 より小さいノードにマスタ・ロック・ツリーがあり,値が 10 のノードが必要としている場合は,値が 10 のノードにロック・ツリーが再マスタリングされます。

その他の場合は,現在のマスタ・ノードとリモート・ノードの LOCKRMWT の差が計算されます。差が大きいほど,ツリーが再マスタリングされる可能性が高まります。ノードの LOCKRMWT の値が同じ場合は,リモート・ノード上の動作が約 13% 以上多い場合にツリーが再マスタリングされます。リモート・ノードが 8 で現在のマスタが 5 の場合は,差は 3 となり,あと約 2% 動作が多いとロック・ツリーはリモート・ノードに移動されます。リモート・ノードが 1 で現在のマスタが 9 の場合は,差は -8 となります。この場合,仮に現在のマスタよりも約 200% 動作が多くても,ロック・ツリーはリモート・ノードに再マスタリングされます。

新しい LOCKRMWT パラメータは動的であるため,動作中のシステム上で SYSGEN を使用して変更することができます。また,ロックの再マスタリングでは,引き続き PE1 システム・パラメータが考慮されます。 PE1 の値よりも多くのロックを持つロック・ツリーは再マスタリングされません。 LOCKDIRWT パラメータは,ロックの動的な再マスタリングとは全く関係がなくなりました。このパラメータは,リソース・ディレクトリ・エントリを管理するノードの可能性だけを決定します。

複合バージョン・クラスタでは,Version 8.3 のノードと (LOCKRMWT システムパラメータを持たない) Version 8.3 よりも前のノードの間のやり取りには,LOCKDIRWT を使用した古い規則が使用されます。ロック・ツリーがクラスタ内で移動し続けるのを避けるために,上の規則には 1 つの例外があります。 Version 8.3 のマスタ・ノードは,LOCKDIRWT の値が大きなノードがあると,Version 8.3 よりも前のノードに,ロック・ツリーを再マスタリングしません。この例外が必要な理由としては,Version 8.3 よりも前のノードが,値が大きな LOCKDIRWT を持つノードにすぐに再マスタリングするためです。

SHOW CLUSTER ユーティリティは,クラスタ内のノードの LOCKRMWT システム・パラメータを表示するように拡張されています。 LOCKRMWT を表示するには,コマンド ADD RM_WT または ADD MEMBERS/ALL を使用します。 Version 8.3 よりも前のノードでは,このフィールドは **** で表示され,これらのノードに LOCKRMWT システム・パラメータがないことを示します。

3.5 OpenVMS での暗号化

OpenVMS Version 8.3 では,以前の Encryption for OpenVMS ソフトウェア製品がオペレーティング・システムに統合されています。これにより,別途製品をインストールする必要がなく,製品ライセンスも不要になります。また,OpenVMS Version 8.3 には,AES (Advanced Encryption Standard) アルゴリズムのサポートが追加されており,OpenVMS ユーザ,システム管理者,セキュリティ管理者,プログラマが,ファイル,セーブ・セット,アプリケーション・データを AES 暗号化で保護することができます。

暗号化は,機密データや個人的なデータを,暗号文と呼ばれる理解不能な形式に変換することを指します。これは,データの機密を保護するために行います。復号化ではこの処理を逆に実行し,理解不能な暗号文を,平文と呼ばれる元の形式のデータに戻します。復号化は解読とも呼ばれます。

3.5.1 AES の機能

AES 暗号化は,以下の機能と互換性を備えています。

  • 以前のデータ暗号化標準 (DES) アルゴリズムは,既存の DES データとそのアプリケーションで使用するために,引き続き提供されています。 DES で提供されていた機能については,同じレベルの DES のサポートが引き続き提供されます。

  • AES 暗号化は BACKUP に統合されており,AES または DES を使用してセーブ・セットを暗号化および復号化することができます。

  • コマンド行での AES 暗号化の使用方法は,修飾子が少し変更されていること以外は同じです。

  • ENCRYPT$ アプリケーション・プログラミング・インタフェース (API) の変更は最小限で,AES アルゴリズムを使用するに当たっては,テキスト・パラメータやフラグを変更するだけで済みます。

  • AES 暗号化では,AES アルゴリズムで 4 つの暗号化モードがサポートされています。それぞれのモードで,3 種類の長さ (128,192,256 ビット) の秘密鍵を指定することができ,合計 12 種類の暗号化と復号化操作が可能です。

    • AESCBC128 ! Cipher Block Chaining

    • AESCBC192 ! Cipher Block Chaining

    • AESCBC256 ! Cipher Block Chaining

    • AESECB128 ! Electronic Code Book

    • AESECB192 ! Electronic Code Book

    • AESECB256 ! Electronic Code Book

    • AESCFB128 ! Cipher Feedback

    • AESCFB192 ! Cipher Feedback

    • AESCFB256 ! Cipher Feedback

    • AESOFB128 ! Output Feedback

    • AESOFB192 ! Output Feedback

    • AESOFB256 ! Output Feedback

  • これらの追加の AES アルゴリズム,モード,鍵サイズは,API ENCRYPT$ENCRYPT_FILE( ) および ENCRYPT$INIT( ) の algorithm パラメータで指定するか, ENCRYPT$GENERATE_KEY( ) API の algorithm-name パラメータで指定します。



3.5.2 /CREATE_KEY /AES コマンド修飾子

AES の鍵 (および DES の鍵) は,ENCRYPT のコマンド行修飾子 /CREATE_KEY で作成します。ただし,AES の鍵の場合は,/AES 修飾子を追加する必要があります。


$ ENCRYPT /CREATE_KEY keyname "This is my secret key" /AES 

これにより,21 文字の AES 鍵が生成されます。最小の鍵の長さの要件を満たし, Encrypt の最大文字数 (約 240 文字) を超えない,任意の長さの鍵を指定することができます。

3.5.3 AES 鍵の長さに関する要件

AES 鍵の要件は,それぞれの AES モードで使用される実際のビット数です。これは,実際には,暗号化操作または復号化操作で必要な最小バイト数です。必要な最小の鍵サイズは以下のとおりです。

  • 128 ビット・モード = 16 バイトの鍵

  • 192 ビット・モード = 24 バイトの鍵

  • 256 ビット・モード = 32 バイトの鍵



3.5.4 リテラル鍵の値と ASCII 圧縮

リテラル鍵の値は,通常は圧縮されずにそのまま暗号化アルゴリズムに渡されます。リテラル鍵の値は,ASCII,HEX,バイナリのいずれかです。ただし,ASCII DES 鍵の値は,記述子のデータ型が DSC$K_TYPE_T, DSC$K_TYPE_VT,DSC$K_TYPE_VT のいずれかの場合は圧縮されます。 AES 鍵は圧縮されません。その他の記述子データ型では,DES リテラル鍵の値を圧縮せずにそのまま渡すことが可能です。

リテラル鍵の値はコマンド行の /HEX 修飾子とともに指定するか, ENCRYPT$DEFINE _KEY() ルーチンに対する鍵フラグ literal とともに指定します。リテラル鍵の値は,key-type 引数を使用し,鍵名の記述子で値を渡すことで, ENCRYPT$INIT() ルーチンに直接渡すことも可能です。コマンド行で指定した DES ASCII 鍵の値は,鍵が引用符で囲まれているかどうかにかかわらず圧縮されます。

3.5.5 XOR 鍵フラグ,または鍵の折りたたみ

Encrypt は,鍵の中の残りの文字に対して XOR 操作を行って,鍵自体に対して折りたたみを行い,アルゴリズムで使用する数のバイトで,AES (または DES) 用のサイズの鍵を作成します。そのため,鍵の値に対して最大バイト数 (240) のバイト・データを指定できますが,鍵の作成時には,AES 用に保存されるのは 32 バイト, DES 用に保存されるのは 8 バイトです。

この鍵を使用するときには,元の鍵が復元され,ストレージから復号化されます。しかし,暗号化操作に対して選択した AES 鍵のサイズに応じて, DES では 8 バイト (折りたたみ済み) の鍵だけが使用され, AES では 16 バイト,24 バイト,32 バイト (折りたたみ済み) の鍵だけが使用されます。

鍵サイズは,algorithm-name パラメータの一部として指定します。たとえば,以下の API で,または ENCRYPT コマンドおよび DECRYPT コマンドのファイルに対する修飾子 /DATA_ALGORITHM または /KEY_ALGORITHM で AESCBC256 を指定します。

  • ENCRYPT$ENCRYPT_FILE( )

  • ENCRYPT$INIT( )

  • ENCRYPT$GENERATE_KEY( )

AES 鍵を作成する例

次の例では,32 バイトの AES 鍵を作成します。この鍵は AES (現在は AESCBC128) で暗号化され,特に指定しなければプロセスの論理名テーブルに ENCRYPT$KEY$MY_KEY という名前で格納されます。この鍵には,DES 鍵と区別するために AES 鍵のフラグが設定されます。


$  encrypt/create MY_KEY "This is a sample ASCII key value" /aes/log
%ENCRYPT-S-KEYDEF, key defined for key name = MY_KEY



3.5.6 ENCRYPT$DEFINE_KEY( ) API

AES 鍵と DES 鍵は,Encrypt のアプリケーション・プログラム・インタフェース (API) ENCRYPT$DEFINE_KEY( ) でも作成できます。鍵フラグは,鍵の種類 (名前またはリテラル鍵の値) と,鍵を格納する論理名テーブルを区別するために使用します。

AES 鍵フラグ・マスク ENCRYPT$M_KEY_AES と,値 ENCRYPT$V_KEY_AES も,AES 鍵を作成するために使用されます。


ENCRYPT$DEFINE_KEY ( key-name , key-value , key-flags ) 

ENCRYPT$GENERATE_KEY( ) API では,ランダムな鍵の値を生成することができます。


ENCRYPT$GENERATE_KEY (algorithm-name , key-length              [,factor-a] [,factor-b] [,factor-c]              [,key buffer]) 

AES 鍵フラグ

以下の AES マスクを他のフラグと組み合わせて, key-flags パラメータで (参照渡しのロングワードとして) 使用することができます。対応する AES 鍵の値を,プログラム中のビットのテストで使用することができます。 API ENCRYPT$DEFINE_KEY( ),ENCRYPT$DELETE_KEY( ),および ENCRYPT$GENERATE_KEY( ) で,KEY_AES 鍵フラグを使用して AES 鍵を指定します。

  • ENCRYPT$M_KEY_AES

  • ENCRYPT$V_KEY_AES



3.5.7 鍵に関する注意事項

以下に鍵に関する情報を示します。

  • 作成された AES 鍵は,暗号化されて (常に AESCBC128 とマスタ鍵を使用) 論理名テーブルに格納されます。暗号化操作の際,鍵が取り出され,復号化されて,暗号化または復号化操作で選択されたアルゴリズムと鍵のサイズに応じて,16 バイト, 24 バイト,32 バイトの鍵として使用されます。

  • リテラルでない DES 鍵は圧縮 (大文字に変換) されます。使用できる文字は A--Z,0--9,ドル記号 ($),ピリオド (.),アンダスコア (_) であり,その他の文字はスペースに変換され,複数のスペースは削除されます。 AES ASCII キーの値は圧縮されません。

  • 鍵を作成する場合は,後で選択されたアルゴリズム/鍵サイズで使用する際の最小鍵長を満たすように注意してください。 8 バイトの DES 鍵では問題は発生しません。必要以上に長い鍵 (リテラルまたは非リテラル鍵) は,適切な 16 バイト, 24 バイト,32 バイトの鍵サイズに折りたたまれます。

  • 鍵の名前は,論理名テーブル (SYSTEM,JOB,GROUP,または PROCESS (デフォルト)) に格納されている鍵の論理名です。値は ASCII (通常のテキスト鍵),16 進/バイナリのいずれかとなります。リテラル鍵 (key-flags = ENCRYPT$M_LITERAL_KEY) を作成すると,値はリテラル値として格納され,圧縮されません。

  • また,後から ENCRYPT$INIT( ) API に鍵を渡す際には,論理名テーブルに格納されている鍵と一致させるように注意してください。つまり,記述子の型によって DES 鍵の扱い方が決まります。テキストは圧縮され,バイナリ値は圧縮されません。 AES 鍵の値は圧縮されません。鍵フラグ (1= リテラル,0=名前) は,key-name パラメータの解釈方法 (リテラル値を直接 INIT に渡すか,論理名の検索,変換,復号化用に鍵の名前を渡すか) を決定します。鍵の種類が正しくない場合,たとえば鍵フラグが 0 (名前) で,鍵の名前ではなくリテラルの鍵値を指定した場合に出力されるエラーに注意してください。リテラル値として鍵の名前を指定した場合にもエラーが発生します。 ENCRYPT$INIT( ) API では,型が DSC$K_DTYPE_T,DSC$K_DTYPE_VT,および DSC$K_DTYPE_Z の鍵名記述子は,DES 鍵の値を圧縮することを指定します。 AES 鍵の値は圧縮されません。

  • ENCRYPT$GENERATE_KEY( ) を使用して AES 鍵を生成するときに,鍵の長さとして16 の倍数でない値を指定するとエラーになります。



3.5.8 AES 鍵の削除

AES (および DES) 鍵は,Encrypt のコマンド行修飾子 /REMOVE_KEY,または API ENCRYPT$DELETE_KEY( ) で削除します。


$ ENCRYPT/REMOVE_KEY KEYNAME /AES 

ユーザの秘密鍵は,マスタ鍵で暗号化され,論理名テーブル (PROCESS, JOB,GROUP,または SYSTEM---ENCRYP$SYSTEM テーブル) に格納されます。省略時の論理名テーブルは PROCESS です。 PROCESS 論理名テーブル以外のテーブルから鍵を削除するには, ENCRYPT /REMOVE_KEY コマンドで適切な修飾子 (/JOB,/GROUP,または /SYSTEM) を指定する必要があります。

ユーザの秘密鍵名は一意であるため,DES 鍵と AES 鍵のどちらであっても,同じ論理名テーブルには同じ名前の鍵が 1 つしか存在できません。そのため,/AES 修飾子が実装されていますが,この修飾子は不要です。

3.5.9 ENCRYPT$DELETE_KEY( ) API

Encrypt API を使用して論理名テーブルから鍵を削除するには,削除対象の鍵の名前を指定します。どの論理名テーブルから削除するかをフラグで指定します。


ENCRYPT$DELETE_KEY (key-name , key-flags) 

AES 鍵フラグ

key-flags パラメータでは,他のフラグとともに (論理和をとって),以下の AES マスクを (参照渡しのロングワードとして) 使用することができます。対応する AES 鍵の値は,プログラム内でビットのテストを行うために使用できます。 ENCRYPT$DEFINE_KEY( ),ENCRYPT$DELETE_KEY( ),および ENCRYPT$GENERATE_KEY( ) の各 API で AES 鍵を指定するには,KEY_AES 鍵フラグを使用します。

  • ENCRYPT$M_KEY_AES

  • ENCRYPT$V_KEY_AES



3.5.10 ファイルの暗号化と復号化

鍵を作成したら,ファイルの暗号化や復号化を行うことができます。それには,コマンド行で ENCRYPT コマンドおよび DECRYPT コマンドを使用するか,ENCRYPT$ENCRYPT_FILE() API を使用します。

ファイルの暗号化では,RMS ファイルを,固定長の 512 バイト・レコードで暗号化します。ファイル作成日付と変更日付,ファイルが順編成ファイルなのか索引編成ファイルなのか,そのレコード形式 (STREAM_LF,VAR など) などのファイルの特性と属性は保持されます。ユーザはファイルの暗号化に使用する鍵とデータアルゴリズムを指定しますが,ユーザの鍵は,ランダムな鍵,初期化ベクタ (IV),ランダム鍵レコード中のデータ・アルゴリズムを暗号化するために使用されます。ユーザが指定したデータ・アルゴリズムを使用してファイルの属性,機能レコード,そのデータ・レコードを暗号化するのは,ランダムな鍵です。

ファイルを復号化する際には,ユーザが指定した鍵はランダム鍵レコードを復号化するために使用され,ランダムな鍵 (データ鍵),IV,データ・アルゴリズムなどが取得されます。次に,ランダムな鍵,IV,データ・アルゴリズムを使用して,固定長の 512 バイト・レコードからファイル属性,機能レコード,データ・レコードが復号化され,元の形式に復元されます。

特に指定しなければ,コマンド行からファイルを暗号化するときには,Encrypt は DESCBC アルゴリズムを使用してファイルを暗号化します。すなわち,鍵やデータ・アルゴリズムがコマンド行で指定されていない場合,DESCBC アルゴリズムとモードが使用されます。

DESCBC を使用して,ファイル file-name を鍵 key-name で暗号化し,ファイル file-name に出力する例は次のようになります。


$ ENCRYPT file-name key-name 

DESCBC を使用してファイルを復号化するには,次のコマンドを使用します。


$ DECRYPT file-name key-name 


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡