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

付録 B 説明付きのエンコーディングサンプル

この付録では、サンプルのエンコーディングファイルを示します。また、ほとんどのファイルの指定項目に関して、そのような指定がなぜ必要かを説明する注釈も記載してあります。このサンプルファイルは、[DDS-2600-6215-91] のサンプルエンコーデングとまったく同じというわけではなく、実用的なエンコーディング例を示すように作られています。ファイルの注釈は四角で囲んで示します。

VERSION 指定は、さまざまなバージョンのエンコーディングを識別するのに役立ちます。この値は、エンコーディングファイルがロードされたときにシステムに格納されます。VERSION 指定は、複数の CMW システム間での相互操作を容易にします。 

VERSION= DISTRIBUTED DEMO VERSION

CLASSIFICATIONS:
*

* Comments can be placed in the encodings file any place a keyword can start. 
* Comments begin with a * and continue to the end of the line.                           *

次の格付け指定では、共通の格付けを定義します。指定した値は格付け同士の正しい階層関係を表現していなければなりません。また、値は、UNCLASSIFIED より下、UNCLASSIFIED と CONFIDENTIAL の間、TOP SECRET より上に拡張できる余裕を持たせて指定します。UNCLASSIFIED ラベルのコンパートメントビットおよびマーキングビットはすべて 0 であるため、初期コンパートメントの指定も初期マーキングの指定もありません。ただし、UNCLASSIFIED 以外の格付けの初期コンパートメントおよびマーキング指定では、次に示す情報ラベル、機密ラベル、認可上限で使用されるインバースビットと、インバースビットとして今後使用するために予約するビットを指定しています。コンパートメントビット 4 と 5 は、リリースコンパートメント REL CNTRY1 および REL CNTRY2 に使用されます。UNCLASSIFIED ラベルのこれらのビットが 0 の場合、どちらの国にもデータがリリース可能であることを示します。次に指定されているように、UNCLASSIFIED 以外のラベルのビット 4 と 5 が 1 であることは、ラベルに明示的に REL CNTRY1 と REL CNTRY2 を追加しない限り、これらの国にはデータをリリースできないことを意味しています。マーキングビット 11 は、REL CNTRY3 というリリースマーキングで使用されるインバースビットです。マーキングビット 17 は、インバース語句 charlie で使用されるインバースビットです。マーキングビット 12 は、インバースコードワード bravo4 で使用されるインバースビットです。これらの語句については、次に詳細を説明します。コンパートメントビットおよびマーキングビットの 100 から 127 は、今後拡張するためにインバースビットとして予約されています。 

name= UNCLASSIFIED; sname= U; value= 1;
name= CONFIDENTIAL; sname= C; value= 4; initial compartments= 4-5 100-127;
   initial markings= 11 12 17 100-127
name= SECRET; sname= S; value= 5; initial compartments= 4-5 100-127;
   initial markings= 11 12 17 100-127
name= TOP SECRET; sname= TS; value= 6; initial compartments= 4-5 100-127;
   initial markings= 11 12 17 100-127

INFORMATION LABELS:
図は、WNINTEL、NOFORN、ALL EYES の 3 つの情報ラベル語句の階層を示しています。
WORDS:

すべての接頭辞と接尾辞は、WORDS: サブセクションの先頭に記述します。また、名前は大文字でも小文字でも指定できます。 

name= REL; prefix;
name= LIMDIS; sname= LD; suffix;
name= ORCON; sname= OC; prefix;
name= eyes only; sname= eo; suffix;

接頭辞と接尾辞を指定したら、次にコンパートメント、サブコンパートメント、コードワードを表す語句を指定します。なお、これらの語句は重要度の高いものから順番に指定します。CC、B、A はメインコンポーネントであり、「チャネル」と呼ばれます。SB および SA は、それぞれ B および A のサブコンポーネントです。bravo1 〜 bravo4 は B のコードワードで、alpha1 〜 alpha3 は A のコードワードです。なお、すべてのコンパートメント、サブコンパートメント、コードワードでは、マーキングビット 7 を指定しています。オンのコンパートメントビットを持たないラベルにこのビットが含まれると、WNINTEL というマーキング (次を参照) を指定します。ラベルにコンパートメント、サブコンパートメント、コードワードが存在するときに WNINTEL を指定することは無効なので、これらの各語句に WNINTEL ビットを設定すると、すべてのコンパートメント、サブコンパートメント、コードワードより下位に WNINTEL が位置する階層が作成されます。実際、すべてのコンパートメント、サブコンパートメント、コードワードは、WNINTEL を意味しますが、WNINTEL という語句が表示されるのは、コンパートメント / サブコンパートメント / コードワードを持たない WNINTEL データだけです。 

name= CC; minclass= TS; compartments= 6; markings= 7;
name= SB; minclass= TS; compartments= 1 3; markings= 7;

サブコンパートメント SB では、コンパートメントビット 1 と 3 を指定しています。ビット 3 は、サブコンパートメント SB に対応するビットで、ビット 1 は、メインコンパートメント B に対応するビットです。このような指定を行う理由は、サブコンパートメントを指定することにより、情報ラベルの規定によって、情報がメインコンパートメント (チャネル) に存在するものとして自動的に保護されなければいけないからです。 

name= bravo1; sname= b1; minclass= TS; compartments= 1; markings= 3-4 7 12;
name= bravo2; sname= b2; minclass= S; compartments= 1; markings= 3 7 12;

上の 2 つの語句でマーキングビット 3 とマーキングビット 4 を使用することにより、bravo1 が bravo2 より上位に位置する階層を指定しています。それぞれ bravo1 と bravo2 を持つ 2 つの情報ラベルを組み合わせると、階層で上位に位置する語句 (bravo1) だけを持つラベルが作成されます。bravo2 には、bravo2 が bravo4 より階層関係で上位になるよう、マーキングビット 12 を指定しています (次を参照)。したがって、bravo1 が bravo2 の階層の上位に位置するよう保証するには、bravo1 にマーキングビット 12 を指定する必要があります。 

name= bravo3; sname= b3; minclass= S; compartments= 1; markings= 5 7;

bravo3 は、bravo1、bravo2、bravo4 と階層関係を持たないコードワードです。 

name= bravo4; sname= b4; minclass= S; maxclass= S; compartments= 1; markings= 3 7 ~12;

bravo4 は、コンパートメント B のコードワードで、ビット 12 がオフになっているので、インバース的な性質があります。この語句は、組み合わせ対象となる両方の情報ラベルに存在する場合だけ、組み合わされたラベルにも存在できるという意味で、インバース語句と同様な振る舞いをします。ただし、bravo4 のすべてのコンパートメントビットとマーキングビットが 0 ではないので、UNCLASSIFIED ラベルには表示されません。したがって、ominclass を指定する必要はありません。bravo4 は、最上位の格付け SECRET を持ち、bravo2 とも階層関係を持ちます。したがって、bravo4 を持つデータを bravo4 を持たないデータ (SECRET でないデータだけを含む) と組み合わせると、ビット 12 (初期マーキングビットの 1 つ) がオンになるので、作成されるラベルには自動的に bravo2 が含まれます。 

name= B; minclass= C; compartments= 1; markings= 7;

B は、コードワードではないコンパートメント B のデータを表します。bravo1 〜 bravo4 について上記で定義されたいずれのマーキングビット (ビット 3、4、5 および 12) も、値 1 のコンパートメントビットを持つラベルに存在しない場合、語句 B を使用してデータにラベルが付加されます。 

name= SA; minclass= TS; compartments= 0 2; markings= 7;

サブコンパートメント SA では、コンパートメントビット 0 と 2 を指定しています。ビット 2 は、サブコンパートメント SA に対応するビットで、ビット 0 は、メインコンパートメント A に対応するビットです。このような指定を行う理由は、サブコンパートメントを指定すると、情報ラベルの規定によって、情報がメインコンパートメント (チャネル) に存在するものとして自動的に保護されなければならないからです。 

name= alpha1; sname= a1; minclass= TS; compartments= 0; markings= 0-2 7;
name= alpha2; sname= a2; minclass= S; compartments= 0; markings= 0-1 7;
name= alpha3; sname= a3; minclass= S; compartments= 0; markings= 0 7;

上記の 3 つの語句でマーキングビット 0、1、2 を使用すると、高いものから順に alpha1、alpha2、alpha3 となった階層関係を指定したことになります。 

name= A; minclass= C; compartments= 0; markings= 7;

A は、コードワードではないコンパートメント A のデータを表します。alpha1 〜 alpha3 について上記で定義したいずれのマーキングビット (ビット 0、1、2) も、コンパートメントビット 0 を持つラベルに存在しない場合、語句 A を使用してデータにラベルが付加されます。 

コンパートメント、サブコンパートメント、コードワードを指定したら、マーキングを示すこれらの語句を機密度の高いものから順番に指定します。次に示すいくつかの語句は、コンパートメントビット参照 (NOFORN、REL CNTRY1、REL CNTRY2) を含んでいます。規定によって NOFORN およびリリースマーキングがラベルの末尾に表示されるので、これらの語句は次のように記述されます。 

name= project x; sname= px; minclass= C; markings= 14;
   suffix= LIMDIS; access related;  

キーワード flags= が機能するのは、システムでフラグビット 3 に特別な意味が与えられている場合だけです。これを記載したのは、フラグの指定方法を示すためです。 

flags= 3;

name= project y; sname= py; minclass= C; markings= 6;
   suffix= LIMDIS; access related;

上記の 2 つの語句はどちらも、接尾辞 LIMDIS を必要とします。これらの語句は、プロジェクトの関係者以外には公開してはならないデータがあるプロジェクトを表します。LIMIDIS の使用方法として、プロジェクト名を指定しない方法もあります。このような使用方法では、LIMIDIS を接尾辞ではなく基本語句として使用し、LIMIDIS に一意のマーキングビットを割り当てます。 

name= charlie; sname= ch;   ominclass= c;
   minclass= s; maxclass= S; markings= ~17;

ここに示す charlie は非常に複雑な語句の指定例であり、高度な指定機能を示すためのものです。charlie は、インバースマーキングであり、マーキングビット 17 (初期値が 1 に設定されるマーキングビットの 1 つ) が 0 の場合に存在します。charlie の minclass と maxclass の指定により、charlie は、SECRET という格付けを持つラベルにだけ表示されます。すべてのインバースマーキングがそうであるように、charlie は、ominclass の指定により、CONFIDENTIAL より下位の格付けを持つラベルには表示されません。なぜ、charlie の minclass が SECRET なのに、ominclass に SECRET を指定したり、ominclass を完全に省略したりできないのでしょうか。ominclass は省略できません。その理由は、charlie はインバースマーキングであるため、ominclass を省略すると、UNCLASSIFIED ラベルに表示されてしまうからです。しかし、ominclass に SECRET を指定することはできます。ominclass に SECRET を指定すると、charlie は、CONFIDENTIAL ラベルに追加できなくなります。すなわち、+charlie と入力して、CONFIDENTIAL ラベルを変更しようとしても失敗します。しかし、ominclass に CONFIDENTIAL を指定すれば、+charlie と入力して、CONFIDENTIAL ラベルを変更すると、格付けが SECRET に上昇し、マーキング charlie が追加されます。charlie に関して最後に気をつけることは、コードワード alpha2 を必要とすることです (次の REQUIRED COMBINATIONS を参照のこと)。 

name= org x; sname= ox; minclass= C; markings= 9;
   prefix= ORCON; access related;

name= org y; sname= oy; minclass= C; markings= 15;
   prefix= ORCON; access related;

上記の 2 つの語句には接頭辞 ORCON が必要です。この例では、典型的な ORCON の使用方法を応用して示しています。この高度な使用方法を示す目的は、基本語句の名前を介して ORGON データの作成者を示すことです。ORCON org x は、org x を作成者とする ORCON を示し、ORCON org y/org y は、ORCON org x と ORCON org y の各データを組み合わせたデータを示しています。もっと一般的な ORCON マーキングを指定するには、単一のマーキングビットを使用し、接頭辞も接尾辞も持たない基本語句として ORCON を指定します。 

name= D/E; minclass= C; markings= 16;
   access related;

このエンコーディングファイルで語句 D/E が取り上げられているのは、「/」を使用した語句の例を示すためです。「/」は、同じ接頭辞または接尾辞を必要とする複数の語句を区切るために使用されますが、語句の名前自体に使用することができます。そのような使い方をする場合は、混乱が生じないように注意してください。 

name= all eyes; access related; markings= 8 10;

上記の語句は、次に示す 2 つの語句の合成語句です。 

name= p1; markings= 8;
   suffix= eyes only; access related;

name= p2; markings= 10;
   suffix= eyes only; access related;

上記の 2 つの語句には接尾辞 eyes only が必要です。これは、接尾辞の名前であっても、語句の名前にブランクを含めることができることを示す例です。これらの語句は、誰がデータを表示できるかを基本語句の名前を介して指定できるという点で、通常の eyes only のエンコーディングを発展させたものです。より一般的な eyes only マーキングを指定するには、単一のマーキングビットを使用し、接頭辞も接尾辞も持たない基本語句として eyes only を指定します。 

name= WNINTEL; sname= WN;   minclass= C; markings= 7;
   access related;

上記に示した WNINTEL マーキングと、情報ラベル語句の最上位にあるコンパートメント、サブコンパートメント、コードワードとの関係に注目してください。コンパートメント、サブコンパートメント、コードワードは、マーキングビット 7 を持っており、最下位の WNINTEL と階層関係を形成しています。 

name= WARNING; minclass= C; markings= 7;

上記の語句は、WNINTEL と同じコンパートメントとマーキングを指定しているので、WARNING が 3 つ目の入力専用名として WNINTEL に追加されます。 

次に示す 4 つの語句は、リリースマーキングと関連するマーキング NOFORN から構成されます。これらのエンコーディングでは、NOFORN は、リリースマーキングを持つラベルには表示できないようにエンコーディングされています。また、NOFORN をリリースマーキングとは完全に独立させるエンコーディング方法もあります。この例では、REL CNTRY1 と REL CNTRY2 は実際のリリースコンパートメントですが、REL CNTRY3 は、単なるリリースマーキングです。このようなエンコーディングが有効なのは、CNTRY1 および CNTRY2 の国民がこのシステムまたは接続されたシステムの直接のユーザーであり、それらのシステム上のデータへのアクセスがリリースコンパートメントによって制御されており、一方 CNTRY3 の国民はこのシステムまたは接続されたシステムの直接のユーザーではないが、REL CNTRY3 と記されたシステム出力のハードコピーを受け取ることができる場合です。NOFORN 語句のエンコーディングでは、NOFORN は、すべてのリリースコンパートメントとマーキングにより階層的に上位です。この階層関係を保証するため、マーキングビット 13 は、NOFORN では特に値 1 として指定され、コンパートメントとマーキングでは 0 として指定されています。REL CNTRY1、REL CNTRY2、REL CNTRY3 はインバース語句なので、これらの語句には CONFIDENTIAL の ominclass が指定されています。この ominclass の指定によって、これらの語句が CONFIDENTIAL より下位の、人が読める形式のラベルには表示されなくなります。したがって、これら 3 つのリリースコンパートメントならびにマーキングのビット表現では、これらの語句が UNCLASSIFIED ラベルに存在することが示されていたとしても、規定によって UNCLASSIFIED ラベルには表示されなくなります。リリースコンパートメントならびにマーキングでのビット割り当てについては次のように考えます。コンパートメントビット 4 は、REL CNTRY1 に対応する (インバース) ビットです。コンパートメントビット 4 が 0 であることは、データを CNTRY1 にリリースできることを意味します。コンパートメントビット 5 は、REL CNTRY2 に対応する (インバース) ビットです。コンパートメントビット 5 が 0 であることは、データを CNTRY2 にリリースできることを意味します。マーキングビット 11 は、REL CNTRY3 を表す (インバース) ビットです。マーキングビット 11 が 0 であることは、データを CNTRY3 にリリースできることを意味します。最後に、マーキングビット 13 は NOFORN ビットです。マーキングビット 13 が 1 であることは、このデータは NOFORN であることを示しています。データが NOFORN でもなく、どの国にもリリース可能でない場合、コンパートメントビット 4 と 5 の値は 1、マーキングビット 11 は 1 、マーキングビット 13 は 0 になります。 

name= NOFORN; sname= NF; minclass=  C; compartments= 4-5; markings= 11 13;
   access related;
name= CNTRY1; sname= c1; ominclass= C; compartments= ~4; markings= ~13;
   prefix= REL
name= CNTRY2; sname= C2; ominclass= C; compartments= ~5; markings= ~13
   prefix= REL;
name= CNTRY3; sname= c3; ominclass= C; markings= ~11 ~13;
   prefix= REL;

次の語句は、上記の語句の組み合わせである CC SB bravo1 bravo3 SAalpha1 project X/project Y LIMDIS ORCON org x/org Y D/E all eyes NOFORN の別名です。別名は、別名を持つ語句のすべてのコンパートメントビットとすべてのマーキングビットに関連付けられており、それ以外のビットには関連付けられていません。また、別名の minclass は、別名を持つ語句のうちの最上位の minclass と等しくなります。別名は、エンコーディングファイルでは別名を持つ語句に続いて指定するため、出力ラベルには表示されません。ラベルに入力したりラベルに追加したりする際の入力を簡単にするために別名を使用できるだけです。次の例は、情報ラベル語句の「システムハイ」セットを表すためのものです。 

name= SYSHI; minclass= TS; compartments= 0-6; markings= 0-16;

次の REQUIRED COMBINATIONS では、上記の情報ラベル語句について 2 つの制約を指定しています。最初の指定では、サブコンパートメント SB が存在する場合は必ずラベルに NOFORN が存在していなければならないことを示しています。2 つ目の指定では、マーキング charlie が存在するときは必ず、コードワード alpha2 がラベルに存在していなければならないことを示しています。 

REQUIRED COMBINATIONS:

SB NF

charlie alpha2

次の COMBINATION CONSTRAINTS では、上記の情報ラベル語句について 3 つの制約を指定しています。最初の指定では、コードワード bravo4 はラベルで単独で存在し、bravo4 の前述の指定により SECRET の格付けを持つことが規定されています。2 つ目の指定では、マーキング charlie をコードワード alpha2 のみと組み合わせることができる必要があります。この指定は、上記の 2 つ目の必須組み合わせと併用すると、ラベルにマーキング charlie が存在する場合は、charlie に対する前述の指定により、charlie は格付けが SECRET で、alpha2 と一緒にまた alpha2 のみが表示される必要があります。3 つ目の指定では、データが CNTRY3 にリリース可能とマーキングされている場合、CNTRY1 または CNTRY2 にはリリースできないことも規定されています。CNTRY1 と CNTRY2 にリリース可能なデータのマーキングに関する制約はありません。 

COMBINATION CONSTRAINTS:

bravo4 &
charlie & alpha2

次の行は、行末に「\」が指定されているので、次の行まで継続します。この例は、組み合わせ制約の指定が長くなったときに必要な行継続機能を示しています。 

REL CNTRY3 ! REL CNTRY1 |  \
REL CNTRY2 

SENSITIVITY LABELS:

WORDS:

エンコーディングでは大文字と小文字が区別されないことを示すために、キーワード PREFIX は大文字で記述されています。なお、接頭辞は語句の先頭に指定します。 

name= REL; PREFIX;

次に示す機密ラベルのコンパートメントは、機密度が低いものから順に指定されています。ただし、リリースコンパートメントは例外で、規定により最後に記述されています。たいていのコンパートメントでは、単一のコンパートメントビットを指定する必要があります。ただし、SB とリリースコンパートメントは特殊なケースです。サブコンパートメント SB は NOFORN とともに表示する必要があるのと、NOFORN はリリースコンパートメントとマーキングとともに表示することはできない (上記のエンコーディング参照) という理由により、SB は、リリースコンパートメントを持つ機能ラベルには表示できません。この制約は、次に示すようにコンパートメントビットを使用して、REL CNTRY1 と REL CNTRY2 より上位の階層関係の最上部に SB が位置するような階層を作成することによって運用されます。コンパートメントビット 3 は、SB を意味するビットです。SB が指定されると、コンパートメント SB のビット 4 とビット 5 には 1 が設定されます。リリースコンパートメントにとってビット 4 とビット 5 はインバースビットであるため、SB を指定すると、リリースコンパートメントが存在しないことが確認されます。リリースコンパートメントに ~3 を指定するのは冗長ですが、存在する階層関係を明確にするのには役立ちます。この階層関係を指定すると、SB を、リリースコンパートメントを含む機密ラベルに追加することができるため、これによってリリースコンパートメントが自動的に削除されます。次に示すエンコーディングの代替手段として、SB ! REL CNTRY1 | REL CNTRY2 という組み合わせ制約を指定することにより、SB をリリースコンパートメントと組み合わせられないようにすることもできます。しかし、このようなエンコーディングは階層を形成しないので、リリースコンパートメントが含まれる機密ラベルに SB を追加することはエラーと見なされます。これらはインバース語句なので、REL CNTRY1 と REL CNTRY2 には CONFIDENTIAL の ominclass が指定されています。この ominclass の指定によって、これらの語句が CONFIDENTIAL より下位の、人が読める形式のラベルには表示されなくなります。したがって、これら 2 つのリリースコンパートメントのビット表現で UNCLASSIFIED ラベルにこれらの語句が存在しても、規定により、UNCLASSIFIED ラベルには表示されなくなります。 

name= A; minclass=  C; compartments= 0;
name= B; minclass=  C; compartments= 1;
name= SA; minclass= TS; compartments= 2;
name= SB; minclass= TS; compartments= 3-5;
name= CC; minclass= TS; compartments= 6;
name= CNTRY1; sname= c1; ominclass= C; compartments= ~3 ~4;
   prefix= REL;
name= CNTRY2; sname= c2; ominclass= C; compartments= ~3 ~5;prefix= REL;

機密ラベル内のコンパートメントビットは、関連する情報ラベルのコンパートメントビットより常に優位でなければならないと規定されているため、上記の 2 つの語句のどちらか一方が機密ラベルに存在する場合は、関連する情報ラベルにも同じ語句が表示されます。 

次の REQUIRED COMBINATIONS では、サブコンパートメント SB が機密ラベルに存在する場合は、必ずコンパートメント B も存在しなければならないことを指定しています。同様に、サブコンパートメント SA が機密ラベルに存在する場合は必ずコンパートメント A も存在しなければならないことを指定しています。前述の情報ラベルのエンコーディングと、この機密ラベルのエンコーディングでは、要件の実現方法が異なります。機密ラベルの場合、次のようなエンコーディングを行うと、規定によりコンパートメントとサブコンパートメントの両方が機密ラベルに表示されます。情報ラベルの場合、サブコンパートメントが存在すると、自動的に該当するメインコンパートメントビットが設定されますが、規定により、人が読める形式のラベルにはメインコンパートメント名が含まれなくなります。 

REQUIRED COMBINATIONS:
SB B 
SA A

機密ラベル語句には組み合わせ制約がないので、次に示すサブセクションには制約が指定されていません。なお、組み合わせ制約の指定がなくても、サブセクション自体は記述する必要があります。 

COMBINATION CONSTRAINTS:

次の CLEARANCES: セクションは、前述の SENSITIVITY LABELS セクションと似ていますが、2 つの相違点があります。1 つは、リリースコンパートメントに使用している接頭辞です。データに REL COUNTRY とマークすることには意味がありますが、同じ考え方を認可上限に適用してユーザーに関連づける場合は、ユーザーの認可上限に REL COUNTRY を指定するより、ユーザーの国籍を指すほうが意味があります。したがって、このセクションでは、国名を表す語句の前に NATIONALITY: という接頭辞を使用します。2 つ目の相違点は、組み合わせ制約が指定されている点です。認可上限のリリースコンパートメント NATIONALITY: CNTRY1 と NATIONALITY: CNTRY2 は、ユーザーがその国の国民であることを意味しているので、ユーザーは 2 つの国の国民にはなれないというのが認可上限の制約になります。このような制約は機密ラベルには必要ありません。なぜなら、機密ラベルにおけるリリースコンパートメントの意味は、データをある国の国民にリリースでき、また、複数の国にもリリースできるということだからです。これらはインバース語句なので、 NATIONALITY:CNTRY1 と NATIONALITY: CNTRY2 には、CONFIDENTIAL の ominclass が指定されています。この ominclass の指定によって、これらの語句が CONFIDENTIAL より下位の、人が読める形式のラベルには表示されなくなります。したがって、これら 2 つのリリースコンパートメントのビット表現で UNCLASSIFIED ラベルにこれらの語句が存在しても、規定により、UNCLASSIFIED ラベルには表示されなくなります。 

CLEARANCES:

WORDS:

name= NATIONALITY:; sname= N:; prefix;
name= A; minclass=  C; compartments= 0;
name= B; minclass=  C; compartments= 1;
name= SA; minclass= TS; compartments= 2;
name= SB; minclass= TS; compartments= 3-5;
name= CC; minclass= TS; compartments= 6;
name= CNTRY1; sname= c1; ominclass=  C; compartments= ~3 ~4;
   prefix= NATIONALITY:;
name= CNTRY2; sname= c2; ominclass=  C; compartments= ~3 ~5;
        prefix= NATIONALITY:;

REQUIRED COMBINATIONS:

SB B
SA A

COMBINATION CONSTRAINTS: 

NATIONALITY:  c1 ! NATIONALITY:  c2

CHANNELS セクションでは、前述のように指定したメインコンパートメント (チャネル) に関連付けられる HANDLE VIA... 警告を指定しています。この警告は、プリンタのバナーページを作成する際にシステムによって使用されます。チャネルが 1 つだけ存在していることを機密ラベルが示す場合、警告は、HANDLE VIA (CHANNEL NAME) CHANNELS ONLY という形式でなければなりません。チャネルが複数存在していることを機密ラベルが示す場合、警告は、HANDLE VIA (CHANNEL NAME)/(CHANNEL NAME)/... CHANNELS JOINTLY という形式でなければなりません。エンコーディングでは、チャネルごとおよびチャネルの組み合わせごとに一意の語句を指定することもできますが、このようなエンコーディングは、多数のエンコーディングが含まれた場合、非常に長くなります。それに比べ、次に示すエンコーディングでは、指定を短くするために、語句が接頭辞と接尾辞の両方を必要とするようにできることを利用しています。次のエンコーディングをよく理解するには、警告文字列を作成するためにチャネル語句がどのように使用されるかを知っている必要があります。語句は、指定した順番にスキャンされ、語句に対応するコンパートメントビットが機密ラベルに存在する場合、その語句がすべてスキャンされた順番に従って警告文字列に組み込まれます。いったん語句に対応するコンパートメントビットが機密ラベル内に見つかると、残りの語句がスキャンされるとき、そのコンパートメントビットに関する情報は無視されます。次の語句には、どれも sname が指定されていませんが、これは、チャネル警告文字列の作成には長形式名しか使用されないからです。 

CHANNELS:

WORDS:

次のエンコーディングでは、HANDLE VIA という接頭辞を 1 つ定義しています。この接頭辞は、エンコーディング内のすべての語句の接頭辞です。ここでは、チャネルが 1 つ存在するときに使用される CHANNELS ONLY と、チャネルが 2 つ以上存在するときに使用される CHANNELS JOINTLY という接頭辞が定義されています。次の各メイン語句にはこの接頭辞と 2 つの接尾辞のうちどちらか 1 つが必要です。 

name= CHANNELS JOINTLY; suffix;
name= CHANNELS ONLY; suffix;
name= HANDLE VIA; prefix;

前半の 3 つのメイン語句は、チャネルが 1 つだけ存在する場合を扱っています。チャネルが 1 つだけ存在する場合にのみ、各メイン語句のコンパートメントビット指定は、機密ラベルに一致します。なお、チャネルビット以外はすべて無視されます。たとえば、語句 CH A のコンパートメント指定が 0、~1、~6 の場合、ビット 0 (チャネル A に対応する) がオン、ビット 1 とビット 6 (チャネル B とチャネル C に対応する) がオフの機密ラベルにだけ一致します。これら前半の 3 つのエントリにはすべて CHANNELS ONLY という接頭辞が必要です。これらの語句の 1 つに対応するコンパートメントビットが機密ラベル内に見つかると、残りの語句がスキャンされるときに、そのコンパートメントビットに関する情報は無視されます。そのため、前半の 3 つの語句のうちの 1 つが警告文字列に組み込まれる場合、後半の 3 つの語句はまったく警告文字列には組み込まれません。なお、前半の 3 つの語句の順序は問題ではありません。なぜなら、機密ラベルに一致する語句は多くともこの中のどれか 1 つだけだからです。 

name= (CH A); prefix=HANDLE VIA; compartments= 0 ~1 ~6;
   suffix=  CHANNELS ONLY;  
name= (CH B); prefix=HANDLE VIA; compartments= ~0 1 ~6;
   suffix=  CHANNELS ONLY;
name= (CH C); prefix=HANDLE VIA; compartments= ~0 ~1 6;
   suffix=  CHANNELS ONLY;

後半の 3 つのメイン語句は、複数のチャネルが存在する場合を扱っています。これらの語句のうち、機密ラベルに一致したものがどれでも警告文字列に組み込まれます。警告文字列の前には、HANDLE VIA が置かれ、/ で区切られ、CHANNELS JOINTLY と続きます。なお、これらの語句は、機密度の高いものから順番に記述しますが、上記の単一チャネルエンコーディングに続いて記述する必要があります。 

name= (CH C); prefix=HANDLE VIA; compartments= 6;
   suffix= CHANNELS JOINTLY;
name= (CH B); prefix=HANDLE VIA; compartments= 1;
   suffix= CHANNELS JOINTLY;
name= (CH A); prefix=HANDLE VIA; compartments= 0;
   suffix= CHANNELS JOINTLY; 

PRINTER BANNERS セクションでは、コンパートメントおよびマーキングに関連付けられるチャネル関連以外の警告を指定します。これは、プリンタのバナーページを作成する際にシステムによって使用されます。次に示す語句には sname が指定されているものがありませんが、これはプリンタバナー警告文字列の作成には長形式名しか使用されないからです。これらの語句は、機密度の高いものから順に指定します。 

PRINTER BANNERS:

WORDS:

name= ORCON; prefix;  
name= (FULL SB NAME); compartments= 3
name= (FULL SA NAME); compartments= 2

これらの最初の 2 つの語句は、上記で定義したサブコンパートメントに関連付けられている警告を指定しています。このセクションのエンコーディングによってメインコンパートメント (チャネル) がすべて無視されます。各語句では、指定のコンパートメント (この例ではサブコンパートメント) が機密ラベルに一致した場合にプリンタバナー警告文字列に組み込まれる名前を指定しています。コンパートメント指定には、関連するメインコンパートメントビットを指定することもできます。なぜなら、メインコンパートメントビットは、サブコンパートメントビットとともに存在しなければならないからです (たとえば、compartments= 3 は、compartments= 13 である可能性があります)。 

name= org x; prefix= ORCON; markings= 9;
name= org y; prefix= ORCON; markings= 15;  

これらの 2 つの語句は、上記で定義した特定のマーキングビットに関連付けられている警告を指定しています。各語句では、指定したマーキングが情報ラベルに一致した場合にプリンタバナーの警告文字列に組み込まれる名前を指定しています。 

ACCREDITATION RANGE セクションでは、システムおよびユーザーの認可範囲と関連する定数を指定します。ユーザー認可範囲は、通常のシステムユーザーが操作できる一連の機密ラベルの集まりです。一般的に、システムに定義されているコンパートメントを持つあらゆる機密ラベルがユーザー認可範囲に含まれるとは限りません。エンコーディングでは、有効な機密ラベルをすべてリストするのではなく、もっとも簡潔な方法でユーザー認可範囲を指定することができます。すなわち、有効な機密ラベルは格付けごとに別々に指定します。次のエンコーディングでは、UNCLASSIFIED が指定されていないので、UNCLASSIFIED 機密ラベルは、ユーザー認可範囲に含まれません。 

ACCREDITATION RANGE:

この例では、格付け CONFIDENTIAL に有効な機密ラベルを指定するもっとも簡単な方法は、無効な機密ラベルだけをリストすることであることを示しています。なぜなら、無効なラベルの一覧のほうが短く、意味があるからです。 

classification= c; all compartment combinations valid except:cc ac b

この例では、格付け SECRET に有効な機密ラベルを指定するもっとも簡単な方法は、無効な機密ラベルだけをリストすることであることを示しています。なぜなら、無効なラベルの一覧のほうが短く、意味があるからです。 

classification= s; only valid compartment combinations:
s a b

この例では、格付け TOP SECRET の機密ラベルにはすべて有効です。 

classification= ts;  all compartment combinations valid;  

次のエンコーディングでは、ユーザーに関連付けられる最下位の認可上限を指定しています。最下位の認可上限より下位の認可上限を指定することはできません。次の例に指定する認可上限は、すべてのコンパートメントビットが 0 の TOP SECRET を表します。なお、この認可上限は、上記のエンコーディングに基づくと正しい認可上限とは言えませんが、TS NATIONALITY: CNTRY1 および TS NATIONALITY: CNTRY2 のすぐ下で唯一の、有用な最下位の認可上限を表しています。 

minimum clearance= ts NATIONALITY: CNTRY1/CNTRY2;  

次のエンコーディングでは、システムの最下位機密ラベルを指定しています。最下位機密ラベルを下回る機密ラベルを指定することはできません。次に指定する機密ラベルは、すべてのコンパートメントビットが 0 の CONFIDENTIAL を表します。ユーザー認可範囲の指定には、最下位機密ラベルより下位の機密ラベルが含まれていてはなりませんが、最下位機密ラベルは、必ずしもユーザー認可範囲に含まれている必要はありません。ただし、最下位機密ラベルは、ユーザー認可範囲に含まれている全機密ラベルの最上位の下限でなければなりません。この場合、最下位機密ラベルは、事実上、ユーザー認可範囲の最下位の機密ラベルになります。 

minimum sensitivity label= c REL CNTRY1/CNTRY2;  

次のエンコーディングでは、プリンタバナーページの最上部と最下部に表示できる最下位の格付けを指定しています。この格付けは、プリンタバナー警告文に表示される最下位の格付けでもあります。プリンタバナー警告文では、データが手作業で見直され降格される場合を除き、どのように保護されるべきかを指定します。 

minimum protect as classification= ts;