(57)【特許請求の範囲】
【請求項１】
コンピュータシステムによって実行される方法であって、
データブロックの第１のセットに対して、生成されるレートレス符号化データブロック毎にレートレスコード化に用いるデータブロックの数である次数値を選択してレートレスコード化を行って、レートレス符号化データブロックを生成するステップと、
前記レートレス符号化データブロックそれぞれに関する次数値に基づいて当該レートレス符号化データブロック毎に暗号化を行うか否かを判断して、前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップと
を含む方法。
【請求項２】
前記レートレスコード化において、前記データブロックに対してＸＯＲ演算を行うステップを含み、前記データブロックの少なくともいくつかが、奇数次数値を使用される請求項１に記載の方法。
【請求項３】
複数の内容ブロックに対してプリコード化を行って、ブロックの前記第１のセットを生成するステップをさらに含む請求項１に記載の方法。
【請求項４】
前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、奇数次数値を有する前記レートレス符号化データブロック中のブロックを暗号化するステップを含む請求項１に記載の方法。
【請求項５】
前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、追加として、前記レートレス符号化データブロック中のブロックのブロック識別子を符号化するステップを含む請求項１に記載の方法。
【請求項６】
前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップの前又は後に、前記レートレス符号化データブロックのブロック識別子を符号化するステップをさらに含む請求項１に記載の方法。
【請求項７】
次数値及びブロック選択を生成するために使用される、乱数発生器又は方法の識別を含むことができる、前記レートレス符号化データブロックのブロック識別子の意味の一方又は両方の知識を秘匿するステップをさらに含む請求項１に記載の方法。
【請求項８】
次数値及びブロック選択を生成するために使用される、乱数発生器又は方法の一方又は両方の知識を秘匿するステップが、レートレス符号化データブロックのサブセットの暗号化を行う暗号化システムと、レートレス符号化データブロックのサブセットの暗号化バージョンを解読する解読システムとの間で交換される秘密に基づく請求項７に記載の方法。
【請求項９】
前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、次数値ｄｋが１である前記レートレス符号化データブロックのブロックのみに対して暗号化を行うステップを含む請求項１に記載の方法。
【請求項１０】
前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、次数値ｄｋが１である又は次数値ｄｋが偶数値である前記レートレス符号化データブロックのブロックのみに対して暗号化を行うステップを含む請求項１に記載の方法。
【請求項１１】
前記レートレス符号化データブロックそれぞれに関する次数値に基づいて、前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、次数値毎に次数値が選択される確率を示す次数分布に基づいて暗号化するかどうか決定するステップを含む請求項１に記載の方法。
【請求項１２】
前記レートレス符号化データブロックそれぞれに関する次数値に基づいて、前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、次数値毎に次数値が選択される確率を示す次数分布に基づいて暗号化するかどうかを確率的に決定するステップを含む請求項１に記載の方法。
【請求項１３】
先行する暗号化から引き続いて暗号化する場合において、前記レートレス符号化データブロックそれぞれに関する次数値に基づいて、前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップが、現行及び過去のブロック選択と現行及び過去の次数値とに基づいて暗号化するかどうか決定するステップを含む請求項１に記載の方法。
【請求項１４】
データブロックの第１のセットに対して、生成されるレートレス符号化データブロック毎にレートレスコード化に用いるデータブロックの数である次数値を選択してレートレスコード化を行って、レートレス符号化データブロックを生成するレートレスコーダと、
前記レートレス符号化データブロックそれぞれに関する次数値に基づいて当該レートレス符号化データブロック毎に暗号化を行うか否かを判断して、前記レートレス符号化データブロックのサブセットに対して暗号化を行うための暗号化モジュールと
を備える装置。
【請求項１５】
前記レートレスコード化がプリコード化操作を有し、前記暗号化モジュールが、追加として又は単独で、前記レートレス符号化データブロックがパリティブロックであるプリコード化ブロックから成っていたか、或いは元のデータブロックと等しいプリコード化ブロックから成っていたかに基づいて、選択的な暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項１６】
前記レートレスコーダが、奇数次数値にてデータブロックに対してＸＯＲ操作を行うことによってレートレスコード化を行うように動作可能である請求項１４に記載の装置。
【請求項１７】
複数の内容ブロックに対してプリコード化を行って、ブロックの前記第１のセットを生成するプリコーダをさらに備える請求項１４に記載の装置。
【請求項１８】
前記暗号化モジュールが、奇数次数値を有する前記レートレス符号化データブロック中のブロックを暗号化することによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行う請求項１４に記載の装置。
【請求項１９】
前記暗号化モジュールが、前記レートレス符号化データブロック中のブロックのブロック識別子を符号化するように動作可能である請求項１４に記載の装置。
【請求項２０】
前記暗号化モジュールが、前記レートレス符号化データブロックのサブセットに対して暗号化を行う前又は後に、前記レートレス符号化データブロックのブロック識別子を符号化するように動作可能である請求項１９に記載の装置。
【請求項２１】
次数値及びブロック選択を生成するために使用される、乱数発生器又は方法の一方又は両方の知識を秘匿するために処理ブロックをさらに備える請求項１４に記載の装置。
【請求項２２】
前記処理ブロックが、当該装置と、レートレス符号化データブロックのサブセットの暗号化バージョンを解読する解読システムとの間で交換された秘密を使用して、次数値及びブロック選択を生成するために使用される、乱数発生器又は方法の一方又は両方の知識を秘匿する請求項２１に記載の装置。
【請求項２３】
前記暗号化モジュールが、次数値ｄｋが１である前記レートレス符号化データブロックのブロックのみに対して暗号化を行うことによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項２４】
前記暗号化モジュールが、次数値ｄｋが１である又は次数値ｄｋが偶数値である前記レートレス符号化データブロックのブロックのみに対して暗号化を行うことによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項２５】
前記暗号化モジュールが、次数値毎に次数値が選択される確率を示す次数分布に基づいて暗号化するかどうか決定することによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項２６】
前記暗号化モジュールが、次数値毎に次数値が選択される確率を示す次数分布に基づいて暗号化するかどうか確率的に決定することによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項２７】
先行する暗号化から引き続いて暗号化する場合において、前記暗号化モジュールが、現行及び過去のブロック選択及び次数値に基づいて暗号化するかどうか決定することによって、前記レートレス符号化データブロックのサブセットに対して暗号化を行うように動作可能である請求項１４に記載の装置。
【請求項２８】
システムによって実行されるときに、
データブロックの第１のセットに対して、生成されるレートレス符号化データブロック毎にレートレスコード化に用いるデータブロックの数である次数値を選択してレートレスコード化を行って、レートレス符号化データブロックを生成するステップと、
前記レートレス符号化データブロックそれぞれに関する次数値に基づいて当該レートレス符号化データブロック毎に暗号化を行うか否かを判断して、前記レートレス符号化データブロックのサブセットに対して暗号化を行うステップと
をシステムに行わせる命令を記憶する１つ又は複数のコンピュータ可読記憶媒体。
【請求項２９】
コード化ブロックそれぞれに関する次数値に基づいて当該コード化ブロック毎に解読を行うか否かを判断して、複数のコード化ブロックのサブセットを解読するための解読モジュールと、
前記解読モジュールによって解読を行われたコード化ブロックの前記サブセットと、前記解読モジュールによって解読を行われなかった前記複数のコード化ブロックの他のコード化ブロックとに対してレートレス復号化を行うためのデコーダと
を備える装置。
【発明の詳細な説明】
【優先権】
【０００１】
[0001]本特許出願は、２００７年３月３０日出願の「Ａ  Ｌｏｗ  Ｃｏｍｐｌｅｘｉｔｙ  Ｅｎｃｒｙｐｔｉｏｎ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｃｏｎｔｅｎｔ  Ｔｈａｔ  Ｉｓ  Ｃｏｄｅｄ  Ｂｙ  Ａ  Ｒａｔｅｌｅｓｓ  Ｃｏｄｅ」という名称の対応する米国特許仮出願第６０／９０９２２５号明細書に対する優先権を主張するものであり、その仮出願を参照として組み込む。
【技術分野】
【０００２】
[0002]本発明は、暗号化の分野に関し、より詳細には、本発明は、レートレスコーダによってコード化された内容に対して暗号化を行うことに関する。
【背景技術】
【０００３】
[0003]レートレス符号は、伝送中の損失に対して情報をよりロバストにするために、又は様々な伝送シナリオに合うように情報を修正可能にするために、伝送前に情報をコード化することができる手段を提供し、それにより、内容は、非同期で、及び／又は伝送損失統計の事前の知識なしで、複数のユーザによって受信される。具体的には、レートレス符号は、従来のブロック畳み込み符号など「固定レート符号」と同様に、情報の「コード化」シンボルを生成する。本明細書において、シンボルは、ビット、バイト、パケットなどであってよい。コード化は、コード化シンボルの適切なサブセットのみを使用して受信者が元の内容の或る有限量又はすべてを再構成することができるように行われ、即ち、「コード化」シンボルが伝送中に損失されうるが、それでも元の内容に関する情報は保存される。レートレス符号は、シンボルのどの適切な１つ又は複数のサブセットが受信されうるか、及び／又はどれが損失されうるかを事前に知らずに、オンデマンドで、コード化シンボルの構成を可能にする。
【０００４】
[0004]例えば、「Ｋ」バイトの或る元の内容に関して、固定レート符号によって、「Ｎ」コード化バイト（ここで、Ｎ＞Ｋ）のセットを生成することができる。そのようなコード化バイトは冗長を含み、それによりユーザは、Ｋコード化バイトの任意のサブセットを使用して、（最大距離分離符号と呼ばれる最も良く機能する符号に関して）元の内容を再構成することができる。これは、Ｎコード化バイトすべてがユーザに伝送され、「Ｍ」コード化バイト（ここで、Ｍ≦（Ｎ−Ｋ））が伝送中に失われる場合に、ユーザが依然として元の内容を回復することができることを意味する。そのような用途では、レートレス符号及び固定レート符号は、損失が生じた際に情報を保護することができる能力を前提として、広範な種類のいわゆる誤り／消失訂正符号を形成する。
【０００５】
[0005]固定レート符号は、所与の符号に関して、既知の値の比「Ｋ／Ｎ」を生成するように設計される。この比は、固定レート符号の「レート」である。理想／最良設定では、これは、Ｎ個のシンボルからなるコード化された内容において、割合（Ｎ−Ｋ）／Ｎのシンボル損失を訂正できるようにする。また、誤り検出と誤り訂正とが、そのような符号によって提供される連合機能であることもある。また、符号は、誤り／消失訂正能力がより低いこともあり、即ち、割合「Ｆ」≦（Ｎ−Ｋ）／Ｋの誤りしか確実に訂正することができないこともある。
【０００６】
[0006]レートレス符号は、システムが、有限量「Ｋ」の元の内容を得て、実質的に無限数の「コード化」ブロックを生成して、１人又は複数のユーザに伝送することができる手段を提供する。この場合、コード化ブロックの「レート」又は固定数「Ｎ」の概念が存在しない。この手法は、１人又は複数のユーザへのコード化シンボルの伝送が調整されない、例えば、送信が１つ又は複数の送信機からのものであり、及び／又は複数の受信機が同じ内容を異なる期間にわたって受信するシナリオで、固定レート符号に勝る基本的な一組の利点を有することができる。また、この符号は、固定レート符号に比べて、符号化及び復号化の複雑性を低くすることができる。
【０００７】
[0007]しかし、コード化された内容における損失の所与の既知数、又はコード化された内容における損失の数の限界に関して、固定レート符号は、平均すると、元の情報の所与の量を回復するためにより少数のコード化ブロックを受信すればよい。即ち、固定レート符号は、レートレス符号よりもオーバーヘッドが低く、したがってより効率が良い。しかし、「Ｋ」が無限に近づくにつれて、レートレス符号が固定レート符号の性能に漸近的に近づくことがある。
【０００８】
[0008]レートレス符号の働き
レートレス符号は、メッセージブロックとも呼ばれるいくつかの「元の」ブロック「Ａ（１）、．．．、Ａ（Ｋ）」を得て、コード化ブロックのストリーム、即ち
「Ｃ（１）、Ｃ（２）、．．．、Ｃ（Ｎ）、Ｃ（Ｎ＋１）、．．．」
を生成する。
【０００９】
これを行うために、そのようなコード化ブロックを生成するための基本的な「レートレス操作」が根底にある。これは、Ｒａｐｔｏｒ符号と同様に、固定レート符号を使用するプリコード化段階によって強化されることがある。
【００１０】
[0009]基本的なレートレス操作を以下に説明し、図１に例示する。
１．コード化ブロック「Ｃ（ｋ）」を生成するために、整数値ｄｋ（ここで、１≦ｄｋ≦Ｋ）を選択する。
ａ．本明細書において、ｄｋは、「次数」値と呼ばれ、「次数分布」に従ってランダムに選択される。
ｂ．この次数分布「ｐ」は、そのような次数値の確率を規定する。即ちｐ（ｎ）＝「ｄｋ＝ｎ」となる確率である。
ｃ．独立同一分布で、次数値が選択される。
ｄ．分布「ｐ（ｎ）」の設計は、この方式の根底にある重要な設計パラメータである。使用できるいくつかの例が存在する。
２．「Ｋ」個の取り得るブロックから、ｄｋ個の別個の元のブロック、即ち
Ａ（ｂ（１，ｋ））、Ａ（ｂ（２，ｋ））、．．．、Ａ（ｂ（ｄｋ，ｋ））
をランダムに選択する。ここで、指標値はｂ（ｊ，ｋ）であり、すべてのｊ＝１、．．．、ｄｋに関して１≦ｂ（ｊ，ｋ）≦Ｋであり、インデックス値は一意であり、即ちすべての１≦ｊ＜ｉ≦ｄｋに関してｂ（ｊ，ｋ）≠ｂ（ｉ，ｋ）である。
３．選択されたブロックをＸＯＲ演算する。即ち、
Ｃ（ｋ）＝Ａ（ｂ（１，ｋ））＋Ａ（ｂ（２，ｋ））＋．．．＋Ａ（ｂ（ｄｋ，ｋ））
である（以下、本明細書において、「＋」は、排他的ＯＲ（ＸＯＲ）関数を表す）。
【００１１】
[0010]上述したように、レートレスシステムは、プリコーダとして固定レート符号を使用して強化することもできる。図２は、レートＫ／Ｎの固定レート符号を使用するレートレスシステムを示す。そのようなシステムでは、「プリコード化」ステップは、初めに元のブロック「Ａ（１）、．．．、Ａ（Ｋ）」を得て、固定レート符号を使用してそれらをプリコード化し、したがって、プリコード化ブロック
Ｐ（１）、．．．、Ｐ（Ｎ）
を生成する。
【００１２】
[0011]また、Ｕｌａｓ  Ｃ．Ｋｏｎｚａｔ  ａｎｄ  Ｓｅａｎ  Ａ．Ｒａｍｐｒａｓｈａｄ；「Ｕｎｅｑｕａｌ  Ｅｒｒｏｒ  Ｐｒｏｔｅｃｔｉｏｎ  Ｒａｔｅｌｅｓｓ  Ｃｏｄｅｓ  ｆｏｒ  Ｓｃａｌａｂｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｄｅｌｉｖｅｒｙ  ｉｎ  Ｍｏｂｉｌｅ  Ｎｅｔｗｏｒｋｓ」Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＩＥＥＥ  Ｉｎｆｏｃｏｍ−２００７（ｍｉｎｉｓｙｍｐｏｓｉｕｍ  ｐａｐｅｒ）、Ａｎｃｈｏｒａｇｅ、Ａｌａｓｋａ、２００７に記載されているように、この操作の不均一誤り保護バージョンを使用することもできる。
【００１３】
[0012]次いで、これらのプリコード化ブロックが、上述のレートレスコード化操作への入力として使用され、（元のブロックではなく）プリコード化ブロックがＸＯＲ演算されて、レートレス符号化ブロックを生成する。即ち、
Ｃ（ｋ）＝Ｐ（ｂ（１，ｋ））＋Ｐ（ｂ（２，ｋ））＋．．．＋Ｐ（ｂ（ｄｋ，ｋ））
であり、ここで１≦ｄｋ≦Ｎである。
【００１４】
[0013]いくつかの設計では、プリコード化に使用される固定レート符号が系統的であることがある。即ち、Ｎ個のブロックＰ（１）、．．．、Ｐ（Ｎ）のうちのＫ個のサブセットが元のメッセージブロックを表現し、残りの（Ｎ−Ｋ）個のブロックは、「パリティ」ブロックと呼ばれ、これは、元のメッセージブロックの２つ以上の数学的な組合せによって生成される。そのような構成が図３に示され、（一般性を損なわずに）、例としてｊ＝１、．．．、Ｋに関してＰ（ｊ）＝Ａ（ｊ）である。
【００１５】
[0014]すべての場合に、各レートレスコード化ブロックが識別子を必要とし、その識別子を使用して、どの元の（又はプリコード化）ブロックがコード化ブロックにＸＯＲ演算されているかを受信者に知らせることができる。この情報は、レートレス符号の復号化の際にコード化ブロックを使用する方法を受信者が知るのに必要とされる。
【００１６】
[0015]そのような情報を提供する１つの手法は、受信機が、次数値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）を選択する同じランダムプロセス（又は単にプロセス）を有するものである。そのような場合に十分なブロック識別子は、単純に値「ｋ」であり、これは、図４におけるように、（低いオーバーヘッドで）コード化ブロックに付加することができる。
【００１７】
[0016]図４を参照すると、コード化ブロックｃ（１）、．．．、ｃ（ｋ）はすべて、ブロック識別子を有し、ｃ（ｊ）に関する識別子は、情報のブロックの既知の領域に単純に付加された整数「ｊ」である。例えば、整数ブロック識別子「ｋ」が、コード化ブロックｃ（ｋ）の情報に付加され、ブロック識別子２が、コード化ブロックｃ（２）の情報に付加され、ブロック識別子１が、コード化ブロックｃ（１）の情報に付加される。そのような情報は、標準的なヘッダの一部であってよく、これは、情報のブロックに追加され、一般には小さな又はごくわずかなオーバーヘッドである。これらの識別子は、非調整で又は大きな損失でユーザが伝送を容易に受信できるようにし、それでも、ブロック識別子により、どのレートレスコード化ブロックが受信されているかを識別することができる。どのブロックであるか知ることによって、ユーザは、ブロック選択及び次数選択アルゴリズムを有する場合には、パケットを生成するためにどのプリコーダ及び／又は元のブロックがＸＯＲ演算されたかの識別を生成することができる。
【００１８】
[0017]別の手法は、単にブロック選択値ｂ（ｉ，ｊ）を表すヘッダを有するものである。これは、当然、より多くのオーバーヘッドを必要とすることになる。
【００１９】
[0018]レートレス符号の復号化
プリコード化段階を仮定した復号化操作が図５に示される。図５を参照すると、ユーザは、「Ｇ」個のコード化ブロック、即ち「Ｃ（ａ１）、．．．、Ｃ（ａＧ）」のサブセットを有し、各ブロックが受信及び識別される。ここで、ユーザは、受信されたコード化ブロックから、すべて（又はいくつか）の元のブロック「｛Ａ（１）、．．．、Ａ（Ｋ）｝」を回復することを望む。
【００２０】
[0019]受信されたコード化ブロックはそれぞれ、ブロック識別子を含む。例えば、コード化ブロックｃ（ａ１）は、ａ１のブロック識別子を有する。コード化ブロックｃ（ａ２）は、ａ２のブロック識別子を有する。これは、ａＧのブロック識別子を有する最後に受信されたコード化ブロックｃ（ａＧ）を含めたすべてのコード化ブロックに関して行われる。
【００２１】
[0020]コード化ブロックは、レートレス復号化段階５０１による復号化操作に通されて、符号化中に行われたレートレスコード化プロシージャを復号化する。例えば、低複雑性の「確率伝播」プロシージャ又は最尤復号法を使用することができる。ガロア域２での線形システム（すべての線形係数が「０」又は「１」である）の逆としてこの復号化操作を見ることができ（加法は、ＸＯＲによって定義され、０＋０＝０、１＋１＝０、１＋０＝１、０＋１＝１である）、それにより、受信されるパケットは、元の（又はプリコード化）パケットの線形結合である。この復号化操作は、Ｐ（ｆ１）、Ｐ（ｆ２）、．．．、Ｐ（ｆＮ）と呼ばれる「Ｎ」個のプリコード化ブロックのサブセットのみ（又は、プリコード化が使用されなかった場合には、Ａ（１）、Ａ（２）、．．．、Ａ（ｋ）と呼ばれる「Ｋ」個の元のブロックのサブセットのみ）を生成することがある。この操作が、すべてのブロックを回復することができることもある。これは、どのレートレスコード化ブロックが受信されたか、及び／又は復号化操作に依存する。また、復号化操作は、新たなブロックが受信されるときに増分的に行うこともできる。
【００２２】
[0021]プリコード化ステップが使用された場合、プリコーダとして使用される固定レート符号の追加の復号化操作が必要とされることがある。レートレス復号化プロセスの終了時に、又は増分的にレートレス復号化プロシージャと共に、又はレートレス復号化プロシージャを反復して、必要に応じて復号化が行われる。したがって、プリコード化ブロックは、プリコード化復号化ブロック５０２など、固定レート符号に適したデコーダに通される。この場合、損失したブロックが固定レート符号によって修復され、元の内容の一部又は全体が受信されることがある。非常に多くのプリコード化ブロックが失われている場合、元の内容のサブセットのみが受信されることもある。元のブロックのすべて又はサブセットが、Ａ（１）、Ａ（２）、．．．、Ａ（ｋ）と表される。
【００２３】
[0022]暗号化との基本的な関連
誤り訂正符号と暗号作成法との関係は前述した。暗号システムは、レートレス及び固定レート符号などの符号の誤り／消失訂正を行うのと同様に、情報の「コード化」も行う。実際、いくつかの暗号システムは、特に、生来的に復号化するのが難しい誤り訂正符号の使用、又はそのタイプに基づく。そのような誤り訂正符号設計がそれ自体、攻撃者に知られていない（固定レート符号及び／又は符号ファミリからの符号選択の設計が、送信側と指定受信者と間での共有秘密である）場合、システムを破壊するには、多数の「復号化するのが難しい」可能性を試験する必要がある。これは、適切な設計であれば、システム自体を壊れにくいものにする。
【００２４】
[0023]いくつかの暗号システムは、ストリーム暗号で使用されるように、単純な「ＸＯＲ」演算に基づく。基本的に、いくつかの情報シンボル「Ａ（１）、Ａ（２）、．．．」を有する場合、暗号文「Ω」（それ自体、シンボルである）を使用し、コード化シンボルのシーケンス「Ｃ（１）、Ｃ（２）、．．．」を生成することができ、ここで、Ｃ（ｋ）＝Ａ（ｋ）＋Ωである。本明細書において、「＋」は、ＧＦ（２）（ＧＦ＝ガロア域）でのビット「ＸＯＲ」演算であってよい。暗号文Ωは、送信側と指定受信者との間の共有秘密である。暗号文及び／又はＸＯＲ演算は、多くの方式において適合させることができ、例えば、情報シンボルのシーケンスに再帰的に適用することができる。
【００２５】
[0024]これらの暗号システムは、複雑性を低くしやすいが、Ｃ（ｋ）を多く観察することによって攻撃者が暗号文Ωを確率的に推論することができることがあるので、壊れやすくもなる。レートレス符号も、そのようなＸＯＲ演算操作に基づくが、そのような演算は、暗号文によってではなく、元の内容の異なるサブセット間で行われる。レートレス符号は、低複雑性の復号化方法を有し、これは、誤り／消失訂正に関しては利点であるが、暗号化に関しては欠点である。しかしまた、レートレス符号は、固定暗号を使用しない。２つ以上の元のメッセージシンボル間でＸＯＲ演算するので、即ち上述したようにコード化シンボルが形式「Ａ（ｋ１）＋Ａ（ｋ２）＋．．．＋Ａ（ｋｄ）」（ここで、「ｄ」は、演算の「次数」として知られる数）であるので、暗号文を推論することは、レートレス符号での弱点の１つではない。しかし、他の弱点が存在する。
【発明の概要】
【課題を解決するための手段】
【００２６】
[0025]本明細書では、レートレス符号によってコード化された内容を保護する低複雑性方法に関して、方法及び装置が開示され、ここで、レートレスコード化パケットのサブセットのみを暗号化すれば十分であることに留意されたい。一実施形態では、この方法は、データブロックの第１のセットに対してレートレスコード化を行って、レートレス符号化データブロックを生成するステップと、レートレス符号化データブロックそれぞれに関する次数値に基づいて、レートレス符号化データブロックのサブセットに対して暗号化を行うステップとを含む。
【００２７】
[0026]本発明は、以下に与えられる詳細な説明、並びに本発明及び従来技術の様々な実施形態の添付図面からより十分に理解されよう。しかしそれらは、特定の実施形態に本発明を限定するために挙げられたものではなく、単に説明及び理解のためのものである。
【図面の簡単な説明】
【００２８】
【図１】基本的なレートレスコード化操作を示す図である。
【図２】プリコード化段階を伴うレートレス符号を示す図である。
【図３】系統的なプリコード化段階を伴うレートレス符号を示す図である。
【図４】コード化ブロックが識別子を有するレートレス符号を示す図である。
【図５】レートレス符号に関する復号化プロセスを示す図である。
【図６】レートレスコード化前の元のブロックの暗号化を示す図である。
【図７】レートレスコード化段階後のコード化ブロックの暗号化を示す図である。
【図８】レートレスコード化段階後にコード化ブロックを暗号化するプロセスの一実施形態の流れ図である。
【図９】ブロック識別子のみに暗号化を適用する手法を示す図である。
【図１０】プリコーダを含むレートレスコード化操作後に奇数次数値の暗号化を行うプロセスの一実施形態の流れ図である。
【図１１】図１０の暗号化／符号化に対応する解読／復号化を行うプロセスの一実施形態の流れ図である。
【図１２】レートレスコード化操作及び識別子暗号化の後に、奇数次数値の暗号化を行うプロセスの一実施形態の流れ図である。
【図１３】次数値及びブロック選択を生成するために使用される乱数値発生器又は方法の知識を秘匿することを加えた、図１２のプロセスの一実施形態の流れ図である。
【図１４】暗号化するか否かに関するより一般的な決定を含むように修正された図１３のプロセスの一実施形態の流れ図である。
【図１５】コンピュータシステムの一実施形態のブロック図である。
【発明を実施するための形態】
【００２９】
[0027]本明細書では、レートレス符号によって符号化された内容に対する暗号化を提供することができる低複雑性方法のための技法が提供される。一実施形態では、技法は、レートレス符号の性質のいくつかを暗号化が利用できるようにする連合レートレスコード化及び暗号化方式を含む。レートレス符号は、生来的に、復号化が簡単なように設計される。また、レートレス符号は、しばしば、実際には元の内容のサブセットのコピーである（任意の復号化操作を必要としないことさえある）「コード化」ブロックを生成する。したがって、レートレス符号は、単独では、非指定受信者からすべての元の内容を秘匿するのに強力な暗号化機能又は良好な手段を提供しない。
【００３０】
[0028]レートレス符号を使用せずに暗号化を提供することができる一方法は、レートレス符号の適用前に、元の内容を暗号化することによるもの、又はレートレス符号の適用後に、レートレス符号化された内容を暗号化することによるものである。これらは、以下で論じる。どちらの場合にも、独立した暗号化／解読操作が、システムでの符号化／復号化ステップで適用される。そのような実施形態では、既知の従来の暗号化技法が、暗号化操作のために使用される。しかし、そのような独立方法は、良好な（即ち強力な）暗号化のために、過剰に多くの操作を必要とすることがある。また、必要以上に高い計算複雑性を有するシステムをもたらすこともある。具体的には、説明したこれらの暗号化技法は、レートレスコード化ステップの根底にある何らかの性質及び操作を利用せず、即ち、レートレスコード化ステップは、暗号のような操作を有する。本明細書で説明する本発明の実施形態は、このレートレスコード化操作を利用する。
【００３１】
[0029]また、ブロック識別子のみを暗号化することもできる。次の節で説明するように、これは、複雑性がより低くなることがあるが、安全ではない。
【００３２】
[0030]本発明の一実施形態では、暗号化ステップとレートレス符号ステップとの独立した適用を考慮するシステムよりも複雑でない連合暗号化／レートレスコード化方法が使用される。あまり複雑でなくなることで、レートレス符号を使用するときに内容を安全に伝送するのに必要とされる暗号化／解読操作の数が減少される。そのような低複雑性方法は、モバイル用途で特に魅力的であり、より低い複雑性によって、計算がより少なくなり、したがって電池寿命の延長などの性質が得られる。
【００３３】
[0031]以下の説明では、本発明のより完全な説明を提供するために、いくつかの詳細を述べる。しかし、これらの特定の詳細を用いずに本発明を実施することもできることが当業者には明らかであろう。他の例では、本発明を曖昧にすることを回避するために、よく知られている構造及びデバイスは、詳細にではなくブロック図の形式で示される。
【００３４】
[0032]以下に続く詳細な説明のいくつかの部分は、コンピュータメモリ内部のデータビットに対する操作のアルゴリズム及びシンボル表現で提示される。これらのアルゴリズムによる説明及び表現は、データ処理分野の当業者が、作業の本質を当業者に最も効果的に伝えるために使用する手段である。アルゴリズムは、本明細書では、且つ一般には、所望の結果を導くステップの自己矛盾のないシーケンスであると考えられる。ステップは、物理量の物理的な操作を必要とするものである。これらの量は、必ずしもそうではないが通常は、記憶、転送、結合、比較、及びその他の操作を行うことができる電気又は磁気信号の形態を取る。時として、主に一般的な用法であるので、ビット、値、要素、シンボル、文字、術語、数などとしてこれらの信号を表すことが簡便であることが分かっている。
【００３５】
[0033]しかし、これら及び同様の術語すべてが、適当な物理量に関連付けられ、これらの量に与えられる簡便な標示にすぎないことを念頭に置くべきである。以下の論述から明らかである別段の定めが特にない限り、本説明を通じて、「処理」又は「計算」又は「演算」又は「決定」又は「表示」などの用語を利用する論述は、コンピュータシステムのレジスタ及びメモリ内部で物理（電子）量として表されるデータを、コンピュータシステムメモリ又はレジスタ又は他のそのような情報記憶、伝送、若しくは表示デバイス内部で同様に物理量として表される他のデータに操作して変換するコンピュータシステム又は同様の電子計算デバイスの作用及びプロセスを表すことを理解されたい。
【００３６】
[0034]また、本発明は、本明細書における操作を行うための装置に関する。この装置は、所要の目的のために特別に構成されることがあり、或いは、コンピュータに記憶されたコンピュータプログラムによって選択的に作動又は再構成される汎用コンピュータを備えることがある。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含めた任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光カード、又は電子命令を記憶するのに適した任意のタイプの媒体など、しかしそれらに限定されない、それぞれコンピュータシステムバスに結合されるコンピュータ可読記憶媒体に記憶されることがある。
【００３７】
[0035]本明細書で提示されるアルゴリズム及びディスプレイは、任意の特定のコンピュータ又は他の装置に本来的には関係付けられない。本明細書での教示によるプログラムと共に様々な汎用のシステムが使用されることがあり、又は、所要の方法ステップを行うために、より特化された装置を構成することが好都合と分かっていることがある。様々なこれらのシステムに関する所要の構造は、以下の説明から明らかになろう。さらに、本発明は、任意の特定のプログラミング言語に関連しては説明されない。本明細書で述べる本発明の教示を実装するために様々なプログラミング言語が使用されることがあることを理解されたい。
【００３８】
[0036]機械可読媒体は、機械（例えば、コンピュータ）によって読むことができる形式で情報を記憶又は伝送するための任意の機構を含む。例えば、機械可読媒体は、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気、光、音、又は他の形態の伝搬信号（例えば、搬送波、赤外信号、デジタル信号など）などを含む。
【００３９】
[0037]基本手法
レートレスコード化を用いるシステムに暗号化を追加するための２つの基本的な手法は、符号化の際に、「プリコード化＋レートレス」ステップの前又は後に暗号化を単純に適用することである。これら２つの「独立暗号化」手法は、それぞれ図６及び図７に示されている。当然、復号化プロシージャが続く。２つの手法のうち、前に暗号化を行うことは、元のメッセージブロックの数がコード化ブロックの数よりも少ないので、（復号化と符号化との両方に関して）複雑性がより低くなることがある。しかし、大きな内容サイズ、即ち大きな「Ｋ」に関しては、レートレス符号は、漸近的に効率が良くなり、手法間の複雑性の差が小さくなることがある。両方の手法が、レートレスコード化と暗号化との凡庸な独立適用を表す。
【００４０】
[0038]別の手法は、プリコード化段階中又は段階内に暗号化を適用することであり、即ち、プリコーダとして（秘密）固定レート符号を使用する。これは、図６及び図７における手法と同様に、すべてのプリコード化ブロックに暗号化が適用されるので、複雑であることがある。また、定義により、システムが安全である場合、使用される固定レート符号は、或る最小複雑性を有するはずである。例えば、少なくとも非系統的符号であるはずであり、また、おそらくは非線形符号でもあるはずである。また、システムに追加の人工損失を意図的に加えることもでき、例えば、情報の識別をさらに秘匿するためにコード化ブロック「Ｐ（ｋ）」のいくつかを消失又は破損し、情報を回復するために固定レート符号の誤り訂正能力に依拠することもできる。これは、例えば、（Ｎ−Ｋ）個以下の誤りと共に追加の「誤り」が加えられるＭｃＥｌｉｅｃｅシステムで使用される。しかし、これは、レートレスコード化パケットのサブセットからの元の内容の回復を補助するためにプリコーダを使用できなくする。不均一誤り保護方式で広まっているこの手法にかかわる別の弱点は、プリコード化が、元のメッセージブロック全部には適用されないことがあり、それによりいくつかのブロックを非保護のままにすることである。当然、いくつかの方式では、優先順位の高い情報のみを暗号化することが、優先順位の低い情報の識別を保護するのに十分であり、しかしこれは常にそうであるわけではない。
【００４１】
[0039]元のプリコーダに加えて、「安全な」固定レート符号をすべてのパケットに対して用いる第２のプリコーダを適用することが、最後のレートレス段階の前に暗号化を適用するのと本質的に同様になる別の手法である。この第２のプリコーダは、元のプリコーダの前又は後に適用することができる。
【００４２】
[0040]別の手法は、図９に示されるように、ブロック識別子にのみ暗号化を適用することである。これは、次数値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）を生成するために使用される乱数発生器又は方法又はプロセスの知識を暗号化することによって、さらに強化することができる。このようにすると、攻撃者は、「ｋ」を得ている場合でさえ、それを値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）に合致させることができないことがある。したがって、各受信されたブロックでのコード化された内容の識別が秘匿にされたままである。
【００４３】
[0041]ブロック識別子自体は少数のビットを表すので、この手法は、上述した元の情報、プリコード化情報、又はレートレスコード化情報を暗号化するよりも複雑でない。
【００４４】
[0042]しかし、この手法は、本来的な弱点を有する。第１に、レートレス符号では、有意な数のコード化ブロックに関してｄｋ＝１を有することが珍しくなく、ｄｋ＝１は即ち、ＸＯＲ演算操作が使用されず、レートレスコード化ブロックが、実際には根底にある元の情報と等しくなりうる場合である。例えば、Ｒａｐｔｏｒ符号で使用される次数分布は、以下のようなものとなる。
Ｒａｐｔｏｒ符号に関する次数分布例
ｐ（１）＝０．００７９６９
ｐ（２）＝０．４９３５７０
ｐ（３）＝０．１６６２２０
ｐ（４）＝０．０７２６４６
ｐ（５）＝０．０８２５５８
ｐ（８）＝０．０５６０５８
ｐ（９）＝０．０３７２２９
ｐ（１９）＝０．０５５５９０
ｐ（６４）＝０．０２４０２３
ｐ（６６）＝０．００３１３５
上述していない他の値のｎに関するｐ（ｎ）＝０
この場合、有意な確率「ｐ（１）」が存在し、この場合、コード化ブロックが、元のメッセージブロックからの、ＸＯＲ演算されていない元の情報を含む。伝送される情報が文、例えば電子メールである場合、これは、識別子が暗号化されたか否かにかかわらず、非指定受信者が元の情報のサブセットを簡単に得る（読む）ことができることを意味する。
【００４５】
[0043]受信された「コード化」ブロックの中にこのように元の情報が存在することにより、識別を知らなくても、即ち「ｋ」、次数値「ｄｋ」、及び／又はブロック選択ｂ（ｊ，ｋ）を知らなくても容易に識別することができることがある。例えば、文の場合、攻撃者は、受信されたブロック内の語又は語句を探索するために、単に自動プロセスを使用することができる。これは、場合によってはＸＯＲ演算されていない情報を有するパケットを攻撃者に知らせるための簡単な方法となる。
【００４６】
[0044]ソースコード化メディアストリーム（例えば、オーディオ、音声、画像、又はビデオのストリーム）の場合、攻撃者は、パケット内部に含まれるストリームの構文が正しいことをメディアデコーダが示すまで、パケット（コード化ブロック）内の情報に様々なメディアデコーダを単純に適用することができる。次いで、攻撃者は、さらに、そのようなデコーダの復号化出力を精査することができる。したがって、これらの「次数−１」コード化ブロックは問題である。
【００４７】
[0045]そのような「次数−１」ブロックだけが問題の原因というわけではない。別の問題は、攻撃者が、ランダムに、ｄｋ＞１でコード化されていることがある情報をそれ相応の労力で得ることができることである。これは、次数「ｎ」コード化パケットを用いた次数「ｎ−１」コード化パケットのＸＯＲ演算が、それ相応の公算で元の情報を生成することができるという性質によるものである。例えば、ｎ＝３の場合を考えると、
Ｃ（ｋ）＝Ａ（ｂ（１，ｋ））＋Ａ（ｂ（２，ｋ））
Ｃ（ｚ）＝Ａ（ｂ（１，ｚ））＋Ａ（ｂ（２，ｚ））＋Ａ（ｂ（３，ｚ））
＝Ａ（ｂ（１，ｋ））＋Ａ（ｂ（２，ｋ））＋Ａ（ｂ（３，ｚ））
と仮定すれば、即ち、
ｂ（１，ｚ）＝ｂ（１，ｋ）、ｂ（２，ｚ）＝ｂ（２，ｋ）
である（パケットのうち２つが、両方のレートレスコード化パケットに共通である）。
【００４８】
[0046]その結果、「ｋ」、「ｚ」、「ｄｋ」、「ｄｚ」、「ｂ（ｉ，ｋ）」、及び／又は「ｂ（ｉ，ｚ）」を知らなくても、攻撃者は、単にパケットをＸＯＲ演算することを試みて、
Ｃ（ｚ）＋Ｃ（ｋ）＝Ａ（ｂ（３，ｚ））
を得ることができる。
【００４９】
[0047]上述した「次数−１」コード化パケットの場合と同様に、元のメッセージブロックの取得の成功を検出することができる。
【００５０】
[0048]したがって、攻撃者又は非指定受信者は、「Ｗ」個のコード化パケットを受信した際、単純にＷ×Ｗ個のＸＯＲ演算組合せをすべて試して、すべてをチェックして、場合によっては元のブロックの漏洩を得られることがある。さらに、次いで、すべてのそのような回復されたブロックを「Ｗ」個のコード化パケットとＸＯＲ演算することを試みて、場合によってはより多くの元のブロックを検索することができる。
【００５１】
[0049]いくつかのパケットのみが回復され、そのようなパケットの並べ替えが可能でないことがありえるが、即ち、「Ａ（ｂ（ｉ，ｊ））」が回復された場合に、依然として「ｂ（ｉ，ｊ）」を識別するのが困難であることがありえるが、システムは、最も強い意味では安全でない（例えば、攻撃者が情報を使用して、内容、即ちビデオ又はオーディオ内容の妥当なストリームの形成若しくは「継ぎ合わせ」、再生、及び／又は著作権侵害を行うことができるという観点からは、依然として安全でありうることに留意されたい）。
【００５２】
[0050]選択された次数の暗号化の概要
本明細書で説明する技法は、安全であり、また上で提示した例よりも低複雑性の暗号化方式を生み出す。これらの技法は、上記の手法の問題を回避する。即ち、
１．レートレスコード化の前又は後にすべての内容を暗号化する手法よりも複雑でない。
２．プリコーダの働きを損なうことを回避する。
３．識別子を暗号化するだけの低複雑性方法とは異なり、安全である。
ａ．背景の項で説明した手法と同様に、コード化された内容が十分に暗号化されない場合、次数１の情報が、システムをあまり安全でなくす弱点となる。
ｂ．背景の項で説明した手法と同様に、コード化された内容が十分に暗号化されない場合、次数「ｎ」情報と次数「ｎ−１」情報との存在が、システムをあまり安全でなくす弱点となる。
【００５３】
[0051]これらの弱点を回避するために、非常に安全なシステムに関し、本発明の実施形態は、奇数次数値でＸＯＲ演算されたすべての情報、即ち何らかの正の整数ｙ又はｙ＝０に関してｄｋ＝２ｙ＋１であるコード化パケットＡ（ｋ）が安全に暗号化されれば、強い暗号に十分であるという原理を使用する。したがって、偶数次数に関するレートレス符号の既存のＸＯＲ演算が暗号化の目的で使用され、必要とされるのは、奇数次数の追加の暗号化だけである。このために、背景の項での任意の技法を使用することができる。このようにして、レートレスコード化ブロックに関する次数値に基づいて容易に暗号化することができる。
【００５４】
[0052]ここでも、プリコード化段階を伴って、又は伴わずにこれを行うことができる。プリコード化段階は、例示としてのみ含まれ、Ａ（ｋ）がここでレートレス符号化後の暗号化プロセスでのＰ（ｋ）の代わりとなる場合には、除去することができる。図８は、レートレスコード化段階後のコード化ブロックの暗号化を例示するデータフロー図である。この場合、プリコード化段階が存在しないが、含めることもできる。ユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械で実行されるものなど）、又は両方の組合せを備えることがある。
【００５５】
[0053]図８を参照すると、元のブロック８０１が、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）を備え、レートレスコーダ８０２に入力される。レートレスコーダ８０２は、上述したレートレスコード化を行ってコード化ブロック８０３を生成し、コード化ブロック８０３は、コード化ブロックＣ（１）、Ｃ（２）、．．．、Ｃ（ｋ）を備える。コード化ブロック８０３はそれぞれ、ブロック識別子を含む。例えば、ブロックＣ（ｋ）は、ブロック識別子ｋを含み、コード化ブロックＣ（２）は、ブロック識別子２を含み、コード化ブロックＣ（１）は、ブロック識別子１を含む。コード化ブロック８０３は、暗号化モジュール８０４に入力される。暗号化モジュール８０４は、レートレスコード化ブロックに関する次数値に基づいてコード化ブロック８０３を暗号化して、伝送されるコード化ブロック、場合によっては暗号化ブロック８０５を生成する。ブロック識別子は、この例では暗号化されず、単にＸＯＲ演算された内容であることに留意されたい。一実施形態では、暗号化モジュール８０４は、各レートレスコード化ブロックに関して関連付けられる次数が奇数であるかどうか試験する。レートレスコード化ブロックに関する次数値が奇数である場合、レートレスコード化ブロックが暗号化される。レートレスコード化ブロックに関する次数値が奇数でない場合、レートレスコード化ブロックは暗号化を行われない。したがって、暗号モジュール８０４の出力は、コード化ブロック、場合によっては暗号化ブロック８０５を備える。
【００５６】
[0054]すべての可能な組合せを試験したとしても攻撃者が任意の元のブロックを得ることができないので、奇数次数パケットを暗号化すれば十分である。背景の項で挙げた次数ｎ−１と次数ｎとの組合せの場合、ブロックの少なくとも１つが暗号化され、これは、ＸＯＲプロシージャが任意の「次数−１」の結果を漏洩しないことを意味する。さらに、次数２ｎ及び２ｊコード化パケットの任意のＸＯＲ組合せ（偶数パケットの組合せ）、又は次数２ｎ＋１及び２ｊ＋１（奇数）コード化パケットのＸＯＲ組合せは、せいぜい次数「ｄ＞１」の別のパケットしか生み出さない。受信されたパケットと共に任意のそのようなパケットを帰納引数によって適用することは、任意の「次数−１」の（元の）パケットを生成しない。簡単に言うと、次数２、３、４、及び５のいくつかの例を使用して、以下のことが当てはまる。
１．暗号化（Ａ＋Ｂ＋Ｃ）＋暗号化（Ａ＋Ｂ＋Ｃ＋Ｄ＋Ｅ）＝ランダムビット（使用されないビット）
２．（Ａ＋Ｂ）＋（Ａ＋Ｂ＋Ｃ＋Ｄ）＝Ｃ＋Ｄ
３．暗号化（Ａ＋Ｂ＋Ｃ）＋（Ａ＋Ｂ＋Ｃ＋Ｄ）＝ランダムビット
ここで、「暗号化（Ｘ）」は、「Ｘ」を暗号化するプロセス／機能を表し、「＋」は、前に定義したシンボルのビットＸＯＲである。
【００５７】
[0055]本発明で説明する暗号化技法は、さらに、プリコード化に使用される符号の知識を秘匿することによって、及び／又は次数値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）を生成するために使用される乱数発生器又は方法の知識を秘匿／暗号化することによって強化することができる。発生器の識別及び／又は発生器の状態を秘匿することによって、攻撃者は、乱数発生器の動作を再生成することを妨げられることがある。そのような秘匿は、既知の公開鍵共有法を使用して、及び／又はコード化データが送信されるチャネルとは異なる側波帯チャネルを使用することによって、送信機と指定受信者との間で安全に交換される次数値ｄｋ及びブロック選択を生成するために使用される暗号化デバイス又は方法を有することによって行われることがある。この知識の秘匿は、上述し、且つ以下でも説明するレートレスコード化データの根底にある暗号化に関連付けてのみ有用であることに留意されたい。
【００５８】
[0056]また、次数数値に基づいて暗号化する他の方法を考慮することもできる。例えば、ｄｋ＝１及びｄｋ＝偶数値を有するすべてのレートレスコード化ブロックを暗号化することができ、即ち、１よりも大きい奇数次数値を有するパケット以外のすべてのパケットを暗号化することができる。また、次数分布の詳細に基づいて、さらなる次数値を暗号化するか否かを決定することができる。例えば、上で示したＲａｐｔｏｒ符号に関する「次数分布例」で、ｄｋ＝１９を使用するブロックを暗号化しないように選択することができる。これは、値ｄｋ＝１８又はｄｋ＝２０が存在せず、（２つ以上の他の次数値の組合せを使用する）「次数−１」の生成が、「Ｗ×Ｗ」個の組合せを単にチェックするよりも若干難しいからである。
【００５９】
[0057]この手法にはいくつかの利点がある。１つの利点は、背景の項で挙げた他の方法に比べて、受信機での解読操作の複雑性が大幅に減少することである。また、背景の項で挙げた他の方法に比べて、送信機での暗号化操作の複雑性の大幅な減少も見られる。
【００６０】
[0058]要約すると、ここで説明した技法は、安全なストリームを生成し、すべてのレートレスコード化パケットが暗号化されているわけではなく、これに関し、安全なストリームを有するためにすべてのパケットを暗号化する必要はない。実際、上述した次数分布例と、奇数次数パケットのみが暗号化されるシナリオとを考慮する場合、暗号化の確率は、
ｐ（１）＋ｐ（３）＋ｐ（５）＋ｐ（９）＋ｐ（１９）＝０．３４９５６６
となり、即ち、コード化パケットの約３５％のみが暗号化される。
【００６１】
[0059]受信されるパケットの数が「Ｎ」又は「Ｋ」に近づく場合、これは、図６及び７に関連して上述した方法に比べて、解読の計算が３５％程にまで削減される。解読は、計算面で複雑なプロセスでありえるので、ここで説明した技法は、モバイル（電池式）受信機を有する用途によく適している。受信されるパケットの数が「２Ｎ」程度まで増えるときでさえ、ここで説明した技法は、依然として利点を有する。そのような場合、レートレス符号は、実際には、いずれにせよ効率的には適用されない。
【００６２】
[0060]伝送されるパケットの数が「Ｎ」又は「Ｋ」に近づく場合、図６及び７に関連して上述した方法に比べて、暗号化の計算も３５％程にまで削減される。そのような場合としては、レートレス符号が漸近的に効率良くなり、送信数がシナリオによって制限される場合（近同期で１つ又は複数の受信機にサービスする、或いは複数のユーザが高い確率で同じレートレスパケットを使用することができる場合など）が挙げられる。
【００６３】
[0061]例えば、レートレス符号化ストリームが異なる期間にわたって多くのユーザにサービスする場合、及び／又は多くのパケットが伝送中に失われる場合、送信機が「Ｎ」個よりもかなり多くのコード化パケットを生成するシナリオがありえる。しかし、そのような場合でさえ、生成されたパケットの数が約３Ｎ未満であると、送信機は依然として計算を節約する。いずれにせよ、この場合、受信機は、前のパラグラフで述べたように計算を節約する。
【００６４】
[0062]一実施形態では、エンコーダで、システムは、単に次数値が奇数であるか否かに基づいて暗号化する。図１０は、プリコード化段階後のレートレスコード化段階後のコード化ブロックの暗号化を例示するデータフロー図である。ユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械で実行されるものなど）、又は両方の組合せを備えることがある。
【００６５】
[0063]図１０を参照すると、元のブロック１００１が、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）を備え、プリコード化モジュール１００２に入力される。プリコード化モジュール１００２は、固定レート符号を使用してプリコード化ブロック１００３を生成し、プリコード化ブロック１００３は、Ｐ（１）、Ｐ（２）、．．．、Ｐ（Ｋ）、Ｐ（Ｋ＋１）、．．．、Ｐ（Ｎ）を備える。レートレスコーダ１００４が、プリコード化ブロック１００３を受信し、上述したようにレートレスコード化を行ってコード化ブロック１００５を生成し、コード化ブロック１００５は、コード化ブロックＣ（ｋ）、．．．、Ｃ（２）、及びＣ（１）を備える。コード化ブロック１００５はそれぞれ、ブロック識別子を含む。例えば、ブロックＣ（ｋ）は、ブロック識別子ｋを含み、コード化ブロックＣ（２）は、ブロック識別子２を含み、コード化ブロックＣ（１）は、ブロック識別子１を含む。コード化ブロック１００５は、暗号化モジュール１００６に入力される。図１０に示されるように、一実施形態では、ブロック識別子は暗号化されないことに留意されたい。
【００６６】
[0064]暗号化モジュール１００６は、レートレスコード化ブロックに関する次数値に基づいてコード化ブロック１００５を暗号化して、伝送されるコード化ブロック、場合によっては暗号化ブロック１００７を生成する。一実施形態では、暗号化モジュール１００６は、試験モジュール１０２１を含み、各レートレスコード化ブロックに関して関連付けられる次数が奇数であるかどうか試験する。試験モジュール１０２１が、レートレスコード化ブロックに関する次数値が奇数であると判定した場合、ブロック暗号化モジュール１０２２は、レートレスコード化ブロックを暗号化する。試験モジュール１０２１が、レートレスコード化ブロックに関する次数値が奇数でないと判定した場合、そのレートレスコード化ブロックは暗号化を行われない。したがって、暗号化モジュールの出力１００７は、コード化ブロック、場合によっては暗号化ブロック１００７を備える。レートレスコード化ブロックに関するブロック識別子は、コード化ブロックが暗号化されるか否かにかかわらず暗号化されないことに留意されたい。
【００６７】
[0065]一実施形態では、これらの暗号化操作は、内容を送信することを司る送信機で、又は送信機に関連付けて行われる。一実施形態では、送信機は、有線インターネット上でのサーバ又はコンテンツサーバの一部であってよい。別の実施形態では、送信機は、有線コンピュータの一部であってよい。他の実施形態では、送信機は、基地局（即ち、無線構成要素）又は移動電話又は他のモバイルデバイスの一部であってよい。
【００６８】
[0066]図１１は、レートレス復号化段階前のコード化ブロックの解読を例示するデータフロー図である。プリコード化が例示されるが、プリコード化に関する復号化操作を無視すると、基本フローはやはり図８に対応する。本質的には、図１１は、図１０に例示されるコード化操作を逆にした復号化操作を例示する。ユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械上で実行されるものなど）、又は両方の組合せを備えることがある。
【００６９】
[0067]図１１を参照すると、受信されたコード化ブロック１１０１は、解読モジュール１１０２に入力され、？（ａ１）、？（ａ２）、．．．、？（ａＧ）を備え、ここで「？」は、コード化パケットを表し、このコード化パケットは、暗号化されていることも暗号化されていないこともある。コード化ブロック１１０１はそれぞれ、ブロック識別子を含む。例えば、コード化ブロック？（ａ１）は、ブロック識別子ａ１を含み、コード化ブロック？（ａ２）は、ブロック識別子ａ２を含み、コード化ブロック？（ａＧ）は、ブロック識別子ａＧを含む。解読モジュールは、一度に１ブロックずつ各コード化ブロック１１０１を処理し、図１０で説明したのと同様に、次数値に基づいて解読を行う。解読モジュール１１０２は、次数値ａｈを使用して、次数値ｄｈ、並びにｂ（ｉ，ｊ）値を回復する。一実施形態では、これは、この情報を「ｋ」で暗黙的に有する、又は識別子中の追加の情報によって有するブロック識別子を使用して行われる。回復された次数値を使用して、解読モジュール１１０２での試験モジュール１１２１は、次数値が奇数であるかどうか判定する。奇数である場合、解読モジュール１１０２は、受信されたコード化ブロックに対して解読を行う。そうでない場合、解読モジュール１１０２は、コード化ブロックに対する解読操作を行わずに、コード化ブロックを通過させる。したがって、解読モジュール１１０２は、コード化ブロック、及び解読されたブロック、並びにｂ（ｉ，ｊ）値を出力する。
【００７０】
[0068]解読モジュール１１０２から出力されたコード化ブロック、及び解読されたブロック、並びにｂ（ｉ，ｊ）値は、レートレス復号化段階１１０３に入力され、この段階１１０３は、解読モジュール１１０２から受信されたコード化ブロック及び解読されたブロックに対してレートレス復号化を行う。レートレス復号化段階１１０２は、確率伝播、最尤復号法、又は別のよく知られているレートレス復号化技法を使用することがある。復号化操作の結果は、Ｐ（ｆ１）、Ｐ（ｆ２）、．．．、Ｐ（ｆｗ）として示されるプリコード化ブロックのサブセット１１０４を備える。
【００７１】
[0069]プリコード化復号化段階１１０５が、プリコード化ブロック１１０４を受信し、プリコード化ブロックを復号化する。一実施形態では、プリコード化復号化段階１１０５は、復号化を行うために復号化固定レート符号を使用する。復号化の結果は、プリコード化復号化段階１１０５から、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）として示される元のブロックのすべて又はサブセット１１０６として出力される。
【００７２】
[0070]一実施形態では、これらの解読及び復号化操作は、内容を受信する受信機によって、又は受信機に関連付けて行われる。
【００７３】
[0071]別の実施形態では、コード化ブロックを暗号化することに加えて、ブロック識別子の符号化も行う。この「識別子暗号化」は、「ブロック暗号化」の前又は後に行うことができる。この場合、ペイロードの暗号化と識別子の暗号化とが別個であることが重要である。そうすることによって、ペイロードを解読するのとは別個に識別子を得ることができる。図１２に、一般性を損なわずに、「ブロック暗号化」後に行われる「識別子暗号化」の符号化プロシージャが示される。図１２におけるユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械上で実行されるものなど）、又は両方の組合せを備えることがある。
【００７４】
[0072]図１２を参照すると、元のブロック１２０１が、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）を備え、プリコード化モジュール１２０２に入力される。プリコード化モジュール１２０２は、固定レート符号を使用してプリコード化ブロック１２０３を生成し、プリコード化ブロック１２０３は、Ｐ（１）、Ｐ（２）、．．．、Ｐ（Ｋ）、Ｐ（Ｋ＋１）、．．．、Ｐ（Ｎ）を備える。レートレスコーダ１２０４が、プリコード化ブロック１２０３を受信し、上述したようにレートレスコード化を行ってコード化ブロック１２０５を生成し、コード化ブロック１２０５は、コード化ブロックＣ（Ｋ）、．．．、Ｃ（２）、及びＣ（１）を備える。コード化ブロック１２０５はそれぞれ、ブロック識別子を含む。例えば、ブロックＣ（ｋ）は、ブロック識別子Ｋを含み、コード化ブロックＣ（２）は、ブロック識別子２を含み、コード化ブロックＣ（１）は、ブロック識別子１を含む。コード化ブロック１２０５は、暗号化モジュール１２０６に入力される。
【００７５】
[0073]暗号化モジュール１２０６は、レートレスコード化ブロックに関する次数値に基づいてコード化ブロック１２０５を暗号化して、伝送されるコード化ブロック、場合によっては暗号化ブロック１２０７を生成する。一実施形態では、暗号化モジュール１２０６は、試験モジュール１２２１を含み、各レートレスコード化ブロックに関して関連付けられる次数が奇数であるかどうか試験する。試験モジュール１２２１が、レートレスコード化ブロックに関する次数値が奇数であると判定した場合、ブロック暗号化モジュール１２２２は、そのレートレスコード化ブロックを暗号化する。試験モジュール１２２１が、レートレスコード化ブロックに関する次数値が奇数でないと判定した場合、そのレートレスコード化ブロックは暗号化を行われない。次数値にかかわらず、暗号化モジュール１２０６が、識別子暗号化モジュール１２２３及び１２２４を使用して、レートレスコード化ブロックに関するブロック識別子を暗号化する。したがって、暗号化モジュールの出力１２０７は、コード化ブロック、場合によっては暗号化ブロック１００７を備え、すべてのブロックが、暗号化されたブロック識別子を有する。
【００７６】
[0074]ここでも、プリコード化段階を伴って、又は伴わずにこれを行うことができる。プリコード化段階は、例示としてのみ含まれ、Ａ（Ｋ）が上述した暗号化プロセスでのＰ（ｋ）の代わりとなる場合には、除去することができる。
【００７７】
[0075]別の実施形態では、符号化プロセスは、次数値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）を生成するために使用される乱数発生器又は方法の知識をさらに秘匿することによって強化するものである。この強化は、図１０、１１、及び１２におけるものなど、上述した任意の実施形態に追加されることがある。図１３は、次数値「ｄｋ」及びブロック選択ｂ（ｊ，ｋ）を生成するために使用される乱数発生器又は方法の知識を秘匿することを加えた、図１２の符号化プロセスの一実施形態の流れ図である。図１３におけるユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械上で実行されるものなど）、又は両方の組合せを備えることがある。
【００７８】
[0076]図１３を参照すると、元のブロック１３０１が、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）を備え、プリコード化モジュール１３０２に入力される。プリコード化モジュール１３０２は、固定レート符号を使用してプリコード化ブロック１３０３を生成し、プリコード化ブロック１３０３は、Ｐ（１）、Ｐ（２）、．．．、Ｐ（Ｋ）、Ｐ（Ｋ＋１）、．．．、Ｐ（Ｎ）を備える。レートレスコーダ１３０４が、プリコード化モジュール１３０２からプリコード化ブロック１３０３を受信し、次数及び選択ブロック生成器１３１０から次数値及び選択を受信して、上述したようにレートレスコード化を行ってコード化ブロック１３０５を生成し、コード化ブロック１３０５は、コード化ブロックＣ（ｋ）、．．．、Ｃ（２）、及びＣ（１）を備える。次数及び選択ブロック生成器１３１０は、ｋ及び秘密Ｓを受信し、これらの値を使用して、ｄｋ及びｂ（ｉ，ｊ）を生成するためのプロセスを行う。次数及び選択ブロック生成器１３１０は、送信機と受信機との両方に共通であり、例えば、（１つ又は複数の）同じ状態を有する（１つ又は複数の）同じ乱数発生器が使用される。「ｋ」及び共有秘密「Ｓ」に基づいて、このモジュールは、次数値及びパケット選択を生成する。したがって、ｋ番目のパケットを識別するためには、秘密「Ｓ」が送信機と指定受信機との間で共有されるという前提で、入力パケットの復号化を取り扱うのに必要なのは、ブロック識別子「ｋ」を識別することだけである。このとき、受信機での乱数発生器が送信機でのものと同じ乱数シーケンスを発生するので、ｋ番目のパケットに関する同じ数値選択（次数値、パケット選択）を得るにはこれで十分である。そのような状態を定義する共有秘密Ｓは、様々な既存の公開共有鍵又は他の基本暗号化方法を使用して、送信側と（１つ又は複数の）受信機との間で交換することができる。より長い識別子は（パケットｋに関して）最大でｄｋ個の数値からなるので、これは、より長い識別子に役立つが、当然、パケットのブロック識別子は常に、単に、レートレスコード化パケットを形成する生のパケットの選択であってもよい。
【００７９】
[0077]コード化ブロック１３０５はそれぞれ、ブロック識別子を含む。例えば、ブロックＣ（ｋ）は、ブロック識別子Ｋを含み、コード化ブロックＣ（２）は、ブロック識別子２を含み、コード化ブロックＣ（１）は、ブロック識別子１を含む。コード化ブロック１３０５は、暗号化モジュール１３０６に入力される。
【００８０】
[0078]暗号化モジュール１３０６は、レートレスコード化ブロックに関する次数値に基づいてコード化ブロック１３０５を暗号化して、伝送されるコード化ブロック、場合によっては暗号化ブロック１３０７を生成する。一実施形態では、暗号化モジュール１３０６は、試験モジュール１３２１を含み、各レートレスコード化ブロックに関して関連付けられた次数が奇数であるかどうか試験する。試験モジュール１３２１が、レートレスコード化ブロックに関する次数値が奇数であると判定した場合、ブロック暗号化モジュール１３２２は、そのレートレスコード化ブロックを暗号化する。試験モジュール１３２１が、レートレスコード化ブロックに関する次数値が奇数でないと判定した場合、そのレートレスコード化ブロックは暗号化を行われない。次数値にかかわらず、暗号化モジュール１３０６が、識別子暗号化モジュール１３２３及び１３２４を使用して、レートレスコード化ブロックに関するブロック識別子を暗号化する。したがって、暗号化モジュールの出力１３０７は、コード化ブロック、場合によっては暗号化ブロック１３０７を備え、すべてのブロックが、暗号化されたブロック識別子を有する。
【００８１】
[0079]ここでも、上述のプロセスは、プリコード化段階を伴って、又は伴わずに行うことができる。プリコード化段階は、例示としてのみ含まれ、Ａ（ｋ）がここで暗号化プロセスでのＰ（ｋ）の代わりとなる場合には、除去することができる。
【００８２】
[0080]上述した実施形態は、「次数−１」コード化ブロックのみが暗号化されるように修正されることがある。これは、上で概説した弱点を有するが、即ち、暗号化されていない次数ｎ−１及びｎブロックが、徹底的な探索によって元のブロックを依然として漏洩する可能性があるが、この修正は、一時的な非指定受信者から情報を秘匿する「弱い暗号化」方法となりうる。
【００８３】
[0081]上述した実施形態は、非指定受信者からプリコード化段階の知識を秘匿するように修正されることがある。これは、基本暗号化技法を使用して行うことができる。一実施形態では、例えば、符号ファミリから１つの符号をランダムに選択することによってこれが達成される。
【００８４】
[0082]上述した実施形態は、次数数値に基づいて暗号化を行うか否かを決定する他の方法を使用することがある。例えば、一実施形態では、システムは、ｄｋ＝１及びｄｋ＝偶数値を有するすべてのレートレスコード化ブロックを暗号化し、即ち奇数値＞１以外のすべてを暗号化する。別の実施形態では、さらなる次数値を暗号化するか否かについて、暗号化するかどうかの決定が次数分布の詳細に基づく。例えば、一実施形態では、上で示したＲａｐｔｏｒ符号に関する「次数分布例」で、システムは、ｄｋ＝１９を使用するブロックを暗号化しないことを選択する。これは、値ｄｋ＝１８又はｄｋ＝２０が存在せず、（２つ以上の他の次数値の組合せを使用する）「次数−１」の生成が、「Ｗ×Ｗ」個の組合せを単にチェックするよりも若干難しいからである。別の実施形態では、パケットを暗号化するか否かについて確率的な決定が行われ、ここで、確率は次数値に依存する。
【００８５】
[0083]さらに別の実施形態では、どのような場合に暗号化するかを決定するためのプロセスに、現行のブロック選択及び次数値、さらにまた先行のブロック選択及び次数値がかかわる方法が修正される。例えば、コード化パケットＣ（ｋ）＝ａ＋ｂ＋ｃであり、Ｃ（ｊ）、ｊ＜ｋに関して、パケットがａ＋ｂ、ａ＋ｃ、又はａ＋ｃ、又はａ＋ｂ＋ｃ＋ｘ（ここで、「ｘ」は、何らかの他のブロック）を有さないことが分かっている場合、Ｃ（ｋ）を暗号化しなくても安全であるという決定がなされることがある。
【００８６】
[0084]同様に、それ自体は元の内容パケットと等しくないプリコード化パケットを、任意の先行のレートレスコード化パケットをＸＯＲ演算することによっては回復することができないと判定することができる場合、暗号化しないという決定を下すことができる。即ち、先行して伝送されたパケットをランダムに組み合わせることからは、プリコード化された内容からのパリティブロックのみが回復されることがあると判定された場合、暗号化しなくても、依然として、元の（コード化されていない）内容の識別を秘匿するのに十分であることがある。
【００８７】
[0085]ここでも、これらの実施形態は、プリコード化段階を含む又は含まないことがある。プリコード化段階は、例示としてのみ含まれ、Ａ（ｋ）がここで暗号化プロセスにおいてＰ（ｋ）の代わりとなる場合には、除去することができる。
【００８８】
[0086]図１４は、上述した強化を含むように図１３が修正された１つの場合の一例を示す。図１３におけるユニット又はモジュールはそれぞれ、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用機械上で実行されるものなど）、又は両方の組合せを備えることがある。
【００８９】
[0087]図１４を参照すると、元のブロック１３０１が、Ａ（１）、Ａ（２）、．．．、Ａ（Ｋ）を備え、プリコード化モジュール１４０２に入力される。プリコード化モジュール１４０２は、固定レート符号を使用してプリコード化ブロック１４０３を生成し、プリコード化ブロック１４０３は、Ｐ（１）、Ｐ（２）、．．．、Ｐ（Ｋ）、Ｐ（Ｋ＋１）、．．．、Ｐ（Ｎ）を備える。レートレスコーダ１４０４は、プリコード化モジュール１４０２からプリコード化ブロック１４０３を受信し、次数及び選択ブロック生成器１４１０から次数値及び選択を受信し、上述したレートレスコード化を行ってコード化ブロック１４０５を生成し、コード化ブロック１４０５は、コード化ブロックＣ（ｋ）、．．．、Ｃ（２）、及びＣ（１）を備える。次数及び選択ブロック生成器１４１０は、ｋ及び共有秘密Ｓを受信し、これらの値を使用して、ｄｋ及びｂ（ｉ，ｊ）を生成するためのプロセスを行う。上述したように、共有秘密Ｓは、様々な基本暗号化方法を使用して送信側と（１つ又は複数の）受信機との間で交換することができる。秘密Ｓは、処理ブロック１４１１で過去の（回復された）ｄｋ及びｂ（ｉ，ｊ）選択と共に記憶され、パケットの番号「ｋ」などパケットの一意の識別子が検索されるときに、パケットに関する任意のｄｋ及びｂ（ｉ，ｊ）を生成できるようにする。
【００９０】
[0088]コード化ブロック１４０５はそれぞれ、ブロック識別子を含む。例えば、ブロックＣ（ｋ）は、ブロック識別子Ｋを含み、コード化ブロックＣ（２）は、ブロック識別子２を含み、コード化ブロックＣ（１）は、ブロック識別子１を含む。コード化ブロック１４０５は、暗号化モジュール１４０６に入力される。
【００９１】
[0089]暗号化モジュール１４０６は、レートレスコード化ブロックに関する次数値に基づいてコード化ブロック１４０５を暗号化し、伝送されるコード化ブロック、場合によっては暗号化ブロック１４０７を生成する。一実施形態では、暗号化モジュール１４０６は、試験モジュール１４２１を含み、現行の次数値（例えば、レートレスコード化ブロックがコード化される次数値）及び過去の次数値を試験して、暗号化するかどうか判定する。試験モジュール１４２１が、コード化ブロックを暗号化すると決定した場合、ブロック暗号化モジュール１４２２は、そのレートレスコード化ブロックを暗号化する。試験モジュール１４２１が、過去及び現行の次数値に基づいて暗号化を行うべきでないと決定した場合、そのレートレスコード化ブロックは暗号化を行われない。次数値にかかわらず、暗号化モジュール１４０６が、識別子暗号化モジュール１４２３及び１４２４を使用して、レートレスコード化ブロックに関するブロック識別子を暗号化する。したがって、暗号化モジュールの出力１４０７は、コード化ブロック、場合によっては暗号化ブロック１４０７を備え、すべてのブロックが、暗号化されたブロック識別子を有する。
【００９２】
[0090]説明した技法によって使用されることがあるいくつかの目標シナリオが存在する。これらは、保守する必要がある機密媒体／データを伝送するためにレートレス符号が使用される任意のシナリオを含む。これらは、通常は、複数のユーザが同じ内容を受信することを望むが、ユーザが、非常に異なるチャネル状態（パケットの損失）である場合、及び／又は内容又はパケットを同時にダウンロードしない場合、及び／又はユーザが、互いに素な時間間隔で内容をダウンロードすることがある場合である。例えば、シナリオは、ユーザが時間と共に増分的に更新を行う又は異なる時間に更新を行うソフトウェア更新、異なる「ピア」間の接続が非常に多様でありうるピアツーピア「Ｐ２Ｐ」シナリオ、多くのサーバ間に分散された内容の送信、ユーザが非同期で接続するが全員が高速再生時間を得ることができるストリーミングアプリケーションをサポートする周期的放送アーキテクチャ（例えば「スカイスクレーパー」システム）を含むことがある。
【００９３】
[0091]コンピュータシステムの一例
図１５は、ここで説明する操作の１つ又は複数を行うことがあるコンピュータシステムの一例のブロック図である。図１５を参照すると、コンピュータシステム１５００は、例示のクライアント又はサーバコンピュータシステムを備えることがある。コンピュータシステム１５００は、情報を通信するための通信機構又はバス１５１１と、バス１５１１と結合された、情報を処理するための処理装置１５１２とを備える。処理装置１５１２は、例えばペンティアム（Ｐｅｎｔｉｕｍ）（登録商標）、ＰｏｗｅｒＰＣ（登録商標）、アルファ（Ａｌｐｈａ）（登録商標）などのマイクロプロセッサを含み、しかしマイクロプロセッサに限定されない。
【００９４】
[0092]システム１５００は、さらに、バス１５１１に結合された、処理装置１５１２によって実行すべき情報及び命令を記憶するためのランダムアクセスメモリ（ＲＡＭ）、又は他の動的記憶デバイス１５０４（主記憶装置と呼ばれる）を備える。また、主記憶装置１５０４は、処理装置１５１２による命令の実行中に一時変数又は他の中間情報を記憶するために使用されることもある。
【００９５】
[0093]また、コンピュータシステム１５００は、バス１５１１に結合された、処理装置１５１２のための静的情報及び命令を記憶するための読み出し専用メモリ（ＲＯＭ）及び／又は他の静的記憶デバイス１５０６と、磁気ディスク又は光ディスクなどのデータ記憶デバイス１５０７及びその対応するディスクドライブとを備える。データ記憶デバイス１５０７は、情報及び命令を記憶するためにバス１５１１に結合される。
【００９６】
[0094]さらに、コンピュータシステム１５００は、バス１５１１に結合された、コンピュータユーザに情報を表示するための陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）などのディスプレイデバイス１５２１に結合されることがある。また、英数字及び他のキーを含む英数字入力デバイス１５２２が、情報及びコマンド選択を処理装置１５１２に通信するためにバス１５１１に結合されることもある。追加のユーザ入力デバイスは、バス１５１１に結合された、方向情報及びコマンド選択を処理装置１５１２に通信するため、及びディスプレイ１５２１上でのカーソルの動きを制御するためのマウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどのカーソル制御機構１５２３である。
【００９７】
[0095]バス１５１１に結合されることがある別のデバイスは、ハードコピーデバイス１５２４であり、これは、紙、フィルム、又は同様のタイプの媒体などの媒体に情報を印刷するために使用されることがある。バス１５１１に結合されることがある別のデバイスは、電話又はハンドヘルドパームデバイスへの通信のための有線／無線通信機能１５２５である。
【００９８】
[0096]システム１５００及び関連ハードウェアの構成要素の任意のもの又はすべてが本発明で使用されることがあることに留意されたい。しかし、コンピュータシステムの他の構成は、いくつか又はすべてのデバイスを含むことがあることを理解することができる。
【００９９】
[0097]前述の説明を読めば、本発明の多くの変更形態及び変形形態が当業者に間違いなく明らかになるであろうが、例として示されて説明された任意の特定の実施形態が、限定とみなされるようには無論意図されていないことを理解すべきである。したがって、様々な実施形態を詳細に言及することは、本発明にとって本質とみなされる特徴のみをそれ自体に挙げる特許請求の範囲を限定するものではない。
【図１】
0005395051.tif 000002
【図２】
0005395051.tif 000003
【図３】
0005395051.tif 000004
【図４】
0005395051.tif 000005
【図５】
0005395051.tif 000006
【図６】
0005395051.tif 000007
【図７】
0005395051.tif 000008
【図８】
0005395051.tif 000009
【図９】
0005395051.tif 000010
【図１０】
0005395051.tif 000011
【図１１】
0005395051.tif 000012
【図１２】
0005395051.tif 000013
【図１３】
0005395051.tif 000014
【図１４】
0005395051.tif 000015
【図１５】
0005395051.tif 000016