別の情報ラベルを持つ 2 つのデータ (例、オブジェクト、ファイル、ウィンドウの内容の一部) をマージまたは結合したとき、2 つの情報ラベルの組み合わせが自動的に判定され、マージされたデータを正しく表現する単一の情報ラベルが決定されます。2 つの情報ラベルを判定するこの処理は、ラベルの「結合」、または 1 つのラベルからもう 1 つのラベルへの「浮上」と言います。格付けに割り当てられた値、および情報ラベル語句に割り当てられた内部コンパートメントビットおよびマーキングビットの表現によって、システムによる情報ラベルの判定方法が決定します。
2 つの情報ラベルをもとにシステムが格付けを判定する場合、新たな格付けの値は、常に元の格付けの内部整数値より大きくなります。格付けはすべて厳密な階層関係を持つことが定義により規定されているため、もっとも機密度の高い格付けに最大値を設定し、もっとも機密度の低い格付けに最小値を設定するなど、格付けに階層を表現する整数値を指定することによって、格付けの判定が正しく行なわれます。
語句を適切に判定するために考慮しなければならない点はさらに複雑です。情報ラベルのコンパートメントビットとマーキングビットを判定するために、表 1-2 に示すように、ビット文字列の「論理和」がビット単位にとられます。
表 1-2 情報ラベルのビット文字列の組み合わせ例ビット文字列 | |||
コンパートメント | マーキング | ||
情報ラベル 1 (IL1) | 10100000 | 00001111 | |
情報ラベル 2 (IL2) | 11010001 | 11000000 | |
判定 (IL1 + IL2) | 11110001 | 11001111 |
論理和によって語句を結合する際に目的のプロパティが適用されるよう、各情報ラベル語句のビット表現を定義すると、判定が適切に行なわれるようになります。表 1-3 は、語句の組み合わせがさまざまに判定される可能性があることを示しています。次の図とその次の図では、語句が存在しない場合を (NULL) で示します。
前述したように、語句には、通常の語句とインバース語句という基本的な 2 種類があります。また、語句は、他の語句との階層関係で表示することもできます。このようなさまざまな語句をサポートするために、人が読める語句の名前と内部ビットパターンとの関連付けを、エンコーディングの際に非常に柔軟に行なうことができます。すなわち、語句の名前を単に複数のビットに割り当てるのではなく、固有のビットパターンに関連付けることができます。これらのビットパターンでは、コンパートメントビット、マーキングビット、またはその両方を使用することができます。表 1-3 に示す例は、語句の内部エンコーディングによって、通常の語句、インバース語句、階層関係のある語句、合成語句、より複雑な例がどのように判定されているかを示しています。
各例では、語句に関連付けられた適切なビット値が 1 および 0 で示されています。関係のないビット位置は - (実線) で示します。次に示す各例では、2 つのラベルとその組み合わせについて、人が読める形式と内部形式の両方を示します。語句を持たないラベルについては、(NULL) と示します。次に例示するビットは、コンパートメントビット、マーキングビット、またはその両方です。ラベルの判定という点では、コンパートメントビットとマーキングビットに違いはありません。
表 1-3 ラベル判定の例
通常の語句は、1 だけで構成される 1 つ以上の内部ビットパターンに関連付けられます。次の例は、1 つのビット (値 1) が 1 つの語句に関連付けられたもっとも単純で一般的なケースです。このような語句を、語句を持たないラベルと結合すると、その語句だけが含まれるラベルが作成されます。
Word1 | 1------- |
(NULL) | -------- |
Word1 | 1------- |
次の例では、異なるビット (値 1) に関連付けられている 2 つの通常の語句を結合します。すると、両方の語句を持つラベルが作成されます。
Word1 | 1------- |
Word3 | --1----- |
Word1 Word3 | 1-1----- |
インバース語句は、少なくとも 1 つのインバースビットが含まれる内部ビットパターンに関連付けられます。インバースビットとは、ラベルに語句が存在する場合には値 0 が関連付けられ、ラベルに語句が存在しない場合には値 1 が関連付けられるビットのことです。インバース語句には、複数のビットを関連付けることができます。次の例は、1 つのビット (値 0) が 1 つの語句に関連付けられたもっとも単純で一般的なケースです。このようにビットを反転させて使用する場合、NULL ラベルのインバースビットの値は、1 でなければなりません。このような語句を、語句を持たないラベルと結合すると、語句を持たないラベルが作成されます。
Word2 | -0------ |
(NULL) | -1------ |
(NULL) | -1------ |
次の例では、異なるインバースビット (値 0) に関連付けられている 2 つのインバース語句を結合します。すると、どちらの語句も含まれないラベルが作成されます。
Word2 | -0---1-- |
Word6 | -1---0-- |
(NULL) | -1---1-- |
次の例では、上記のインバース語句を持つ 2 つのラベルを結合します。すると、両方のラベルに存在するインバース語句だけが、作成されたラベルにも含まれます。
Word2 | -0---1-- |
Word2 Word6 | -0---0-- |
Word2 | -0---1-- |
一方のビットセットがもう一方のビットセットを含む場合など、2 つの語句に関連付けられたビットが階層を形成する場合、2 つの語句は階層を形成します。通常の語句もインバース語句も階層関係を持つことができます。次の例は、階層関係を持つ 2 つの通常の語句を扱ったもっとも単純なケースです。この例では、ビットからも明らかなように、Word5 は Word4 より階層の上に位置します。したがって、これら 2 つの語句を結合すると、2 つの語句のうち階層で上位のほう、すなわち、Word5 が作成されたラベルに含まれます。同じ階層に属する 2 つの語句が、1 つのラベルにいっしょに表示されることはありません。
Word5 | ---11--- |
Word4 | ---1---- |
Word5 | ---11--- |
この例は、前述の Word1 と Word3 の例に非常に似ています。前述の例との違いは、この例には、2 つの語句を複合した 3 番目の語句が登場する点です。Word9 は合成語句であり、「Word7 と Word8 を複合した」という意味です。個々の語句を組み合わせたものを組み合わせラベルに表示するのではなく、このような合成語句を使用することができます。この例は、合成語句と合成語句の元となる語句が階層関係を形成している特殊なケースであるため、合成語句を、合成語句の元となるどちらか一方の語句と同じラベルに表示することはできません。
Word7 | ------1- |
Word8 | -------1 |
Word9 | ------11 |
階層とは関係なく合成語句を形成することもできます。階層関係を持たない合成語句は、複数のビットに関連付けられている語句から作成することができます。次の例では、Word12 は Word10 と Word11 の合成語句ですが、どちらの語句とも階層関係がありません。したがって、Word12 は、Word10 と Word11 と同じラベルに表示することができます。Word10 と Word11 を結合すると、これら 3 つの語句がすべて含まれたラベルが作成されます。
Word10 | 1-----1- |
Word11 | -1-----1 |
Word12 | ------11 |
階層には通常の語句とインバース語句の両方が存在できます。次の例では、インバース語句と階層の複雑な組み合わせを示しています。Word13 は、通常のビット (値 1) が 1 つと、インバースビット (値 0) が 1 つから成る内部表現を持つ語句です。一方のビットがインバースビットなので、例の 2 行目に示すように、Word13 を持たない任意のラベル内の対応するインバースビットの値は 1 になります。Word14 は、通常の語句であり、Word13 より階層の上に位置します。階層とインバースビットのこの特殊な組み合わせの結果は興味深いもので、Word13 を、Word13 を持たない任意のラベルと結合すると、Word13 ではなく Word14 が含まれるラベルが作成されます。
Word13 | 10------ |
(Word13 以外の | |
ラベル) | -1------ |
Word14 | 11------ |