コンパートメントモードワークステーションのラベル作成: エンコード形式

付録 C CMW Labeling ソフトウェア C1.0 リリースノート、6/8/93

Release C1.0 は、移植性が改善され、多少のバグ修正と新規機能が組み込まれた Release 2.1.1 の修正版です。この付録は、Release C1.0 マニュアルに追加されたものです。

概要

Release C1.0 では、SPECIAL_INVERSE 語句のために新たな機能がサポートされています。SPECIAL_INVERSE 語句は、Release 2.1.1 でサポートされているインバース語句 (以降「通常インバース語句」とする) とはかなり違っています。通常インバース語句は、1 つ以上の格付けに関連付けられた初期コンパートメントまたは初期マーキングで指定されるインバースビットを使用します。これらの通常インバース語句は、ominclass と一緒に指定するのが一般的ですが、指定の ominclass より下位の格付けを持つ、人が読める形式のラベルには表示されません。これに対して、SPECIAL_INVERSE 語句は、接頭辞で指定したインバースビットを使用し、その接頭辞に関連付けられた 1 つ以上の SPECIAL_INVERSE 語句がラベルに存在しない場合は、人が読める形式のラベルには表示されません。

SPECIAL_INVERSE 語句は、ORCON データをラベルに指定してリリースできる組織で Orignator CONtrolled (ORCON) 取り扱い警告を実装するのに使用できます。たとえば、3 つの組織が特定のシステム (ORG1、ORG2、ORG3) を使用する場合、これら 3 つの組織用の ORCON を扱うエンコーディングは、次のようになります。この例では、SENSITIVITY LABELS 語句だけを示します。

SENSITIVITY LABELS:

WORDS:

name=ORCON RELEASABLE TO; sname=OR; compartments=1-4; prefix;

name=ORCON; minclass=C; compartments=1-4;
name=ORG1; minclass=C; compartments=~1 4; prefix=OR;
name=ORG2; minclass=C; compartments=~2 4; prefix=OR;
name=ORG3; minclass=C; compartments=~3 4; prefix=OR;

この例では、ORG1、ORG2、ORG3 は SPECIAL_INVERSE 語句で、接頭辞 ORCON RELEASABLE TO を必要とします。この接頭辞は、コンパートメントビット 1 から 4 を使用します。ビット 1 は ORG1 に、ビット 2 は ORG2 に、ビット 3 は ORG3 にそれぞれ対応し、ビット 4 は ORCON を表します。ラベルに ORCON RELEASABLE TO ORG1 だけが存在する場合は、ビット 1 はオフ、ビット 2 から 4 はオンになります。ラベルに ORCON RELEASABLE TO ORG2 だけが存在する場合は、ビット 2 はオフ、ビット 1、3、4 はオンになります。ラベルに ORCON RELEASABLE TO ORG3 だけが存在する場合は、ビット 3 はオフ、ビット 1、2、4 はオンになります。ラベルに ORCON RELEASABLE TO ORG1/ORG2 が存在する場合は、ビット 1、2 はオフ、ビット 3、4 はオンになります。ORCON という語句はほかの 3 つの語句より優位にあり、インバース語句ではありません。ORCON という語句がラベルに存在すると、そのようなラベルを持つデータは、3 つの組織のどれにもリリースできなくなります。上記の 3 つの語句のどれも持たないラベルは、ビット 1 から 3 がオフになるため、どの組織にもリリースできます。また、ビット 3 がオフであるため、ORCON データではありません。したがって、情報ラベルが上記と同じ語句を持つ場合、SECRET ORCON RELEASABLE TO ORG1 という情報ラベルを持つデータを TOP SECRET という情報ラベルを持つデータと組み合わせると、TOP SECRET ORCON RELEASABLE TO ORG1 というラベルが作成されます。SPECIAL_INVERSE 語句は、マーキングビットを使用しても指定できます。

上述した変更に加え、コード内のコメントに多少の変更が行われています。コメントの変更については説明しません。

変更したファイル

  1. l_init.c

  2. std_labels.c

  3. CMW Label Setting Demo.c

  4. std_labels.h

サブルーチンインタフェースに関する変更

内部サブルーチン turnoff_word へのインタフェースが、2 ケ所変更されました。第 1 に、turnoff_word が自分自身を呼び出す際に、RECURSING というフラグ引数を渡すことができるようになりました。第 2 に、FORCE_OFF_BY_TURNON_WORD というフラグ引数を渡すことができるようになりました。これは、強制的に語句をオフするために turnon_word が turnoff_word を呼び出していることを示しています。

エンコーディングファイルに関する変更

接頭辞で compartments= および markings= を指定できるようになりました。この意味は前述したとおりです。以前のリリースでは、接頭辞はこれらの指定を受け付けても、無視していました。

std_labels.h に関する変更

  1. ANSI 互換のため、Release 2.1.1 の std_labels.h 36 行目の strings.h を string.h に変更した。ベンダーも独自のライブラリにこの変更を反映することをお勧めします。

  2. l_t3_compartments、l_t3_markings、l_t4_compartments、l_t4_markings、l_t5_compartments、l_t5_markings の各宣言を追加した。

  3. l_w_type フラグである SPECIAL_INVERSE と SPECIAL_COMPARTMENTS_INVERSE を定義した。

サブルーチンに関する変更

  1. CMWLabel Setting Demo.c を Macintosh 固有の方法に変更した。この変更はラベル作成サブルーチンの使用には影響ありません。

  2. std_labels.c および l_init.c で、すべての calloc へのアンキャスト呼び出しを (char*) にキャストした。

  3. Release 2.1.1 の l_init.c の 2862 行目で、sl_buffer を cl_buffer に変更した。

  4. Release 2.1.1 の l_init.c の 1456 行目で、符号なし整数 (unsigned int) のキャストをサブルーチン引数に追加した。このキャストは、一部のコンパイラ / システムで必要となる可能性があります。

  5. l_init.c では、check_special_inverse というサブルーチンを追加した。このサブルーチンは、do_words によって呼び出され、エラーをチェックし、SPECIAL_INVERSE 語句に l_w_type フラグを設定します。

  6. l_init.c では、l_t5_compartments、l_t5_markings というコンパートメントならびにマーキングを保持するための一時変数の新たなセットを割り当てた。

  7. l_init.c では、check_inverse_words というサブルーチンを変更し、新規の l_w_type の SPECIAL_COMPARTMENTS_INVERSE を適宜チェックするようにした。

  8. std_labels.c のサブルーチン word_forced_on では、ノーマルコンパートメントと最下位コンパートメントとの比較チェック機能を修正した。

  9. std_labels.c のサブルーチン word_forced_on では、word_forced_on が SPECIAL_INVERSE 語句を無視するようチェックを追加した。

  10. std_labels.c のサブルーチン l_parse では、SPECIAL_INVERSE 語句をサポートするようになった。

  11. std_labels.c のサブルーチン turnoff_word では、SPECIAL_INVERSE 語句の特殊なケースを扱うようアルゴリズムを追加した。特に turnoff_word の再帰呼び出しを可能にしました。

  12. td_labels.c のサブルーチン turnon_word では、SPECIAL_INVERSE 語句の特殊なケースを扱うようアルゴリズムを追加した。

  13. std_labels.c のサブルーチン l_valid では、SPECIAL_INVERSE 語句をサポートするようになった。

エンコーディング指定に関するエラーメッセージの変更

エンコーディング指定に関するエラーメッセージとして、次のものが追加されました。