(57)【特許請求の範囲】
【請求項１】
量子通信システムに関する送信部であって、前記送信部は、
受信部に送信するための複数の量子ビットを生成する量子ビット源と、
前記量子ビットの一部の強度を変調する強度変調器と、
前記量子ビットの一部の位相を変調する位相変調器と、
少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力する文字列プロセッサと、を具備し、
前記文字列プロセッサは、処理部とメモリデバイスとを具備し、
前記メモリデバイスは、符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
前記処理部は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記処理部はさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記強度変調器および前記位相変調器の少なくとも１つは、前記文字列プロセッサからバイアスがある出力文字列を受信する送信部。
【請求項２】
量子通信システムのための送信部であって、前記送信部は、
受信部に送信するための複数の量子ビットを生成する量子ビット源と、
前記量子ビットの一部の強度を変調する強度変調器と、
前記量子ビットの一部の位相を変調する位相変調器と、
少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力するモジュールを具備する少なくとも１つのフィールドプログラマブルゲートアレイと、を具備し、
前記フィールドプログラマブルゲートアレイは、
符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記モジュールはさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記強度変調器および前記位相変調器の少なくとも１つは、前記フィールドプログラマブルゲートアレイからバイアスがある出力文字列を受信する送信部。
【請求項３】
量子通信システムのための受信部であって、前記受信部は、
受信した量子ビットを検出する少なくとも１つの検出器と、
測定のために前記受信した量子ビットの一部の位相を変調する位相変調器と、
少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力する文字列プロセッサを具備し、
前記文字列プロセッサは、処理部とメモリデバイスとを具備し、
前記メモリデバイスは、符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
前記処理部は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記処理部はさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記位相変調器は、前記文字列プロセッサからバイアスがある出力文字列を受信する受信部。
【請求項４】
量子通信システムための受信部であって、前記受信部は、
受信した量子ビットを検出する少なくとも１つの検出器と、
測定のために前記受信した量子ビットの一部の位相を変調する位相変調器と、
少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力するモジュールを具備するフィールドプログラマブルゲートアレイと、を具備し、
前記フィールドプログラマブルゲートアレイは、
符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記モジュールはさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記位相変調器は、前記フィールドプログラマブルゲートアレイからバイアスがある出力文字列を受信する受信部。
【請求項５】
受信部に送信するための複数の量子ビットを生成する量子ビット源、
前記量子ビットの一部の強度を変調する強度変調器、および
前記量子ビットの一部の位相を変調する位相変調器
を具備する送信部と、
受信した量子ビットを検出する少なくとも１つの検出器、および
測定のために前記受信した量子ビットの一部の位相を変調する位相変調器を具備する受信部と、を具備し、
前記量子通信システムは、少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力する文字列プロセッサを具備し、
前記文字列プロセッサは、処理部とメモリデバイスとを具備し、
前記メモリデバイスは、符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
前記処理部は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記処理部はさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記受信部における前記位相変調器、前記送信部における前記強度変調器および前記位相変調器の少なくとも１つは、前記文字列プロセッサからバイアスがある出力文字列を受信する量子通信システム。
【請求項６】
受信部に送信するための複数の量子ビットを生成する量子ビット源、
前記量子ビットの一部の強度を変調する強度変調器、および
前記量子ビットの一部の位相を変調する位相変調器を具備する送信部を具備する量子通信システムであって、
前記量子通信システムは、
受信した量子ビットを検出する少なくとも１つの検出器、および
測定のために前記受信した量子ビットの一部の位相を変調する位相変調器を具備する受信部をさらに具備し、
前記量子通信システムは、
少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を具備するバイアスがある出力文字列を出力するモジュールを具備する、少なくとも１つのフィールドプログラマブルゲートアレイをさらに具備し、
前記フィールドプログラマブルゲートアレイは、
符号語集合を格納し、
前記符号語集合は、複数の符号語を具備し、各符号語は、少なくとも１つの入力値を具備し、各出力値は、少なくとも１つの対応する符号語を有し、
比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を具備し、
前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、
出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きく、
前記モジュールはさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力であり、
前記受信部における前記位相変調器、前記送信部における前記強度変調器および前記位相変調器の少なくとも１つは、前記フィールドプログラマブルゲートアレイからバイアスがある出力文字列を受信する量子通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、文字列プロセッサおよび変数の文字列を処理する方法に関する。
【０００２】
本出願は、その内容全体が参照により本明細書に明確に組み込まれる、２０１４年９月２２日に出願された英国特許出願番号１４１６７３５．７号に基づいて優先権の利益を主張する。
【背景技術】
【０００３】
モデル化、シミュレーションおよび暗号作成ツールは、ランダム値またはビットの文字列をたびたび要求する。例えば、ランダムビットの文字列は、データ暗号化キーを生成すること、ランダムプロセスをシミュレートすること、複雑な自然現象をモデル化することのために、たびたび要求される。これらのランダムビットの文字列は、全ての出力値は同じ発生の機会を得ている（「１」または「０」である各出力ビットの等しい機会が存在する）という意味で、バイアスがない（無作為である）必要があるかもしれないし、出力値が同じ発生の機会を得ていない（例えば、平均で「０」の２倍の「１」が存在する）という意味で、バイアスがある（作為である）ことが必要であるかもしれない。そのため、実施形態の実装の１つの特定例は、値のランダム文字列の処理であってもよい。
【０００４】
決定論的なシステムであるコンピュータは、ランダムな値またはビットの文字列を生成するために本質的に適さない。そうすることへの２つの主なアプローチがある。擬似乱数発生器（ＰＲＮＧ）および真の乱数発生器（ＴＲＮＧ）である。
【０００５】
ＴＲＮＧは、物理的な現象からそれらの「不確定性」を引き出す。一般に、ＴＲＮＧは、測定値に由来したランダムな値またはビットの文字列を生産するためにランダムな自然発生からの測定を用いることにより、これをおこなう。測定される現象の代表例は、大気雑音、放射性崩壊および半透鏡を通過した光子の伝送を含む。出力が本質的にランダムである自然過程によって決定されるので、出力は真にランダムである。
【０００６】
ＰＲＮＧは、ある程度までランダムに見えるであろう値またはビットの文字列を作成するアルゴリズム、数式または他の方法が実装されたコンピュータである。値のランダムな文字列を出力するように思えるＰＲＮＧアルゴリズムの例は、線形合同法（ｌｉｎｅａｒ
ｃｏｎｇｒｕｅｎｔｉａｌ  ｇｅｎｅｒａｔｏｒｓ）、ラグ付きフィボナッチ法（ｌａｇｇｅｄ  Ｆｉｂｏｎａｃｃｉ  ｇｅｎｅｒａｔｏｒｓ）、線形帰還シフトレジスタおよび計算難度推定（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｈａｒｄｎｅｓｓ  ａｓｓｕｍｐｔｉｏｎｓ）に基づくアルゴリズムを含む。
【０００７】
（たいていコンピュータ実装されるアルゴリズムである）ＰＲＮＧは、一般により効率的で、ＴＲＮＧより高いビットレートを持つことができる。したがって、値またはビットの大きな文字列が要求される多くのアプリケーションによく用いられる。
【０００８】
しかし、そのようなＰＲＮＧはランダムに見える出力を生産するかもしれないが、全てのＰＲＮＧは、まさにそれらの定義によって、真にランダムではない。
【０００９】
ランダムなビットのバイアスがある文字列は、いくつかの暗号手法技術、例えば量子鍵配送（ＱＫＤ）において用いられる。ＱＫＤは、量子ビットまたはキュービットを用いて安全なやり方で、２つのパーティがランダムな秘密鍵または暗号を作成し共有することを可能にする。ＱＫＤは、理論上、盗聴者（よく「イブ」と呼ばれる）が鍵のセキュリティを危険にさらし、通信を傍受した場合、鍵の送信者（よく「アリス」と呼ばれる）および受信者（よく「ボブ」と呼ばれる）に伝えることを可能にする。これは、キュービットが測定されると必ず、測定されたプロパティに影響するという事実に依存する。そのため、イブの干渉による受信キュービットのどんな変更も、アリスおよびボブによって検出されうる。
【００１０】
ＱＫＤ技術を実装する１つの方法は、ＢＢ８４プロトコルである。（特にデコイ状態プロトコルを用いる）ＢＢ８４プロトコルのいくつかの実装を効果的に用いるため、ランダムビットまたは変数のバイアスがある文字列が、ある強度のパルスの頻度を選択するために要求される。ランダム変数のバイアスがある文字列に関してさらに可能性があるアプリケーションは、まれな出来事をモデリングすること、例えば、砂漠での雨、コンピュータ上のカードゲームをシミュレーションすること、およびランダムウォーク型の問題（例えば量子散乱）をモデル化することを含む。これらの例は、暗号学、天気予報、ゲーミングおよび研究の分野における他の用途によって、以下のプロパティを備えた値またはビットの文字列を要求する。（ａ）ビットの文字列は、ランダム性のある種の評価可能な品質に一致しなければならない。  （ｂ）ビットの文字列は、ＴＲＮＧによって生成されるビットまたは値の比較可能な（例えば同じ値／ビットレートおよびバイアス）文字列と統計的に判別不能でなければならない。  （ｃ）出力におけるビットの発生頻度（つまり、バイアス）は、ユーザによって選択されたものに近づかなければならない。
【００１１】
付加的な効率最適化要求も考慮に入れることができ、それは、  （ｄ）出力文字列における各ビットの生成は、平均で、出力文字列のエントロピーに近い入力文字列からのビット数を用いなければならない。
【００１２】
ここに記述される実施形態は、最適化要求（ｄ）と同様に、必要条件（ａ）から（ｃ）を満たすことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、入力および出力文字列を備えるプロセッサとして実施形態を概略的に図示する。
【図２】図２は、ランダム性の同一の評価可能な品質を特徴とするバイアスがある出力文字列及び高品質な無バイアスがある入力文字列を備えるプロセッサとして実施形態を概略的に図示する。
【図３】図３は、ＲＮＧ及び品質評価の例と共に、高品質のＲＮＧを概略的に図示する。
【図４】図４ａは複数の文字列生成器を概略的に図示し、図４ｂは複数の高品質のＲＮＧを概略的に図示する。
【図５】図５は、実施形態の動作を概略的に図示する。
【図６】図６は、２つの値（ｓ１，ｓ２）のバイアスがない入力文字列から３つの値（ｓ’１、ｓ’２、ｓ’３）のバイアスがある出力文字列を作成するための、実施形態の符号木を概略的に図示する。
【図７−８】図７は、実施形態に係る符号木に関する枝木構造を図示する。図８は、バイアス２：１での２進のバイアスがある出力文字列を作成するための実施形態に係る符号木に関する枝木構造を図示する。
【図９】図９は、バイアス５：３：１：１での４つのシンボルでバイアスがある出力文字列を作成するための実施形態に係る符号木に関する枝木構造を図示する。
【図１０】図１０は、実施形態に係る内蔵型フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を概略的に図示する。
【図１１】図１１は、概略的にＱＫＤシステムで実装される実施形態に係るＦＰＧＡを図示する。
【図１２】図１２は、ここに記述される実施形態およびバイアスがある真ＲＮＧを概略的に図示する。
【図１３ａ】図１３ａは、実施形態に係る符号木に関する枝木構造を図示する。
【図１３ｂ】図１３ｂは、図１３ａに係る実施形態に関する理想的な分布と比較される達成された発生頻度のプロットを図示する。
【図１４】図１４は、実施形態に係る文字列プロセッサを概略的に図示する。
【発明を実施するための形態】
【００１４】
実施形態によれば、少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を含むバイアスがある出力文字列を出力する文字列プロセッサであって、前記文字列プロセッサは、処理部とメモリデバイスとを含み、前記メモリデバイスは、符号語集合を格納し、前記符号語集合は、複数の符号語を含み、各符号語は、少なくとも１つの入力値を含み、各出力値は、少なくとも１つの対応する符号語を有し、前記処理部は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を含み、前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きい。
【００１５】
本開示では、用語「入力」および「出力」は、文字列プロセッサ、ＲＮＧおよび他のデバイスからの出力またはこれらへの入力である、特定のシンボルまたはシンボルの文字列、たいてい（しかし常にではない）ビットまたはビットの文字列を表現するために用いられる。用語「値」は、ここに用いられるように、異なるビット、ビットの文字列、シンボルまたはシンボルの文字列を表現する。例えば、ここに記述される実施形態は、素でない量（non-primed quqntities）で示される２つの可能な入力値Ｓ１およびＳ２、素である量（primed quqntities）で示されるＳ’１、Ｓ’２、Ｓ’３を有してもよい。一旦これらの値のうちの１つが選択されれば、特定の入力または出力となり、それゆえ、例えば、ｉ１ｉ２ｉ３ｉ４ｉ５ｉ６およびｏ１ｏ２ｏ３ｏ４ｏ５ｏ６…のように示される入力または出力文字列をそれぞれ構成する。入力文字列中の各シンボルｉｘは、入力値ｓｊのうちの１つを割り当てられる。同様に、出力文字列中の各シンボルｏｘは、出力値ｓ’ｊのうちの１つを割り当てられる。
【００１６】
文字列プロセッサ、特にＲＮＧの１つの特性は、バイアスである。出力文字列のバイアスは、別のものと比較される、１つの値の発生の平均数の比率である。例えば、文字列プロセッサが１５個のｓ’２ごとに平均１個のｓ’１を出力する場合、ｓ’１：ｓ’２のバイアスは１：１５である。ｓ’１の発生確率または発生頻度（２つの用語は、ここで大体は可換である）は、１／１６であり、ｓ’２の発生確率または発生頻度は、１５／１６である。各値の発生確率が等しい場合（すなわち、次の入力または出力となるような値がすべて等しい場合）、システムは、例えば、公平なコインを弾くことのように、バイアスがないといわれている。
【００１７】
いくつかの実施形態によれば、入力値のバイアスがない文字列を与えられる値のバイアスがある文字列を出力する文字列プロセッサであって、前記文字列プロセッサは、前記入力文字列の一部と符号語集合とを比較し、比較した前記入力文字列の一部が前記符号語集合の中の符号語と一致する場合、出力値を出力する。  
実施形態に係る文字列プロセッサは、乱数プロセッサでもよい。  
実施形態に係る文字列プロセッサは、処理ボックスでもよい。
【００１８】
実施形態は、バイアスがある出力値の文字列を提供してもよく、出力の数および各出力の前記発生確率は、ユーザによって決定されうる。出力値および各出力値の発生確率は、入力値および／または入力発生確率と異なってもよい。入力値は２進値でもよい。入力値／入力文字列は、バイアスがなくともよい。入力値／入力文字列はランダムであってもよいし、あるいは、入力値／文字列はランダムでなくてもよい。
【００１９】
実施形態は処理部とメモリデバイスとを含んでもよい。処理部は、比較、割り当ておよび出力機能を行ってもよい。メモリデバイスは、符号語集合を格納してもよい。
【００２０】
出力の数および各出力の発生確率は、符号語集合の利用を通じて決定されてもよい。出力文字列は、出力値の任意の数を含んでもよい。実施形態は少なくとも２つの出力値を含む。値の文字列と符号語集合とを比較することは、値の文字列と符号語のそれぞれとを比較することを含んでもよい。符号語の数は、入力文字列、所望の出力確率および計算複雑度に依存してもよい。
【００２１】
各符号語は、単一の入力値、または入力値の組合せでもよい。符号語は、入力値の考慮される文字列ごとに一致した時、出力文字列に関連する出力値が割り当てられてもよい入力値の特定シーケンスであってもよい。各符号語は、各出力値が対応する符号語を有するものとして、出力値に関連付けられてもよい。符号語集合における符号語と比較される入力文字列の一部は、比較文字列であってもよい。比較文字列は、入力文字列からの入力を含んでもよい。比較文字列は、入力文字列からの少なくとも１つの入力を含んでもよい。比較文字列は、入力文字列の部分集合または一部でもよい。比較文字列は、それらのどれも同じであるか確かめるために、符号語集合に包含される符号語と比較されてもよい。
【００２２】
処理部はさらに、前記比較文字列が符号語と一致しない場合、前記入力文字列における次に利用可能な入力を読み込み、前記次に利用可能な入力を前記比較文字列に追加し、利用可能な入力は、前記比較文字列の一部ではない入力である。
【００２３】
比較文字列は、比較ストリングが符号語と比較され一致しないときはいつでも、１の超過入力（次に利用可能な入力）を組み入れてもよい。比較される比較文字列が符号語と一致しない場合、処理部は、入力文字列における次に利用可能な入力を読み込み、比較文字列に次に利用可能な入力を追加し、新しい比較文字列と符号語集合における符号語とを比較してもよい。（ここで追加入力を含む）比較ストリングは、符号語と比較されてもよい。比較文字列が符号語と一致しない場合、次に利用可能な入力が比較文字列に加えられてもよい。比較文字列が符号語と一致するまで、これは無制限に続いてもよい。
【００２４】
したがって、比較文字列は、最初の１＋ｎ個の利用可能な入力を含んでもよい。ここで、利用可能な入力は、以前に比較文字列の一部でなく、ｎは、符号語と一致せずに符号語集合と比較された回数である。比較文字列の一部であった、または一部である入力は、利用可能な入力でなくともよい。そのため、比較文字列は、比較文字列が符号語集合と比較されかつ一致しないごとに増加するｘを備える第１ｘ入力を含んでもよい。比較文字列が符号語と一致する場合、一致した符号語が関連する出力値は、出力文字列または出力に割り当てられてもよい。
【００２５】
文字列プロセッサの初期化に際して、次に利用可能な入力ｉｘは、入力文字列における最初の入力であり、そのため比較文字列に読み込まれ追加されてもよい。比較文字列ｉｘが符号語集合と比較され、符号語と一致しない場合、（ここで次に利用可能な入力である）入力文字列における第２入力ｉｘ＋１が、比較文字列に追加されてもよい。比較文字列は、ここでｉｘｉｘ＋１である。
【００２６】
処理部はさらに、比較文字列が符号語集合における符号語と一致する場合、比較文字列を破棄してもよい。  
符号語と一致している比較文字列は、出力が割り当てられる出力値が破棄され、無視され、初期化されてもよい結果となる。一旦比較文字列が符号語と一致したならば、その比較文字列における入力はもはや比較文字列の一部ではない。比較文字列が破棄されまたは初期化された場合、比較文字列は入力を含まない。入力文字列における次に利用可能な入力はその後、比較文字列における最初の入力である、比較文字列に読み込まれてもよい。
【００２７】
符号語は接頭コード（prefix code）でもよく、符号語は別のものの前置ではない。  
出力されるまたは出力に割り当てられることになっている関連した出力と、符号語とが一致しなければならないので、一般的に、符号語が長いほど、符号語が比較文字列と一致する可能性が低く、さらにこの符号語は、関連した出力に出力される可能性が低くなる。
【００２８】
より少数の値を含む符号語は、一般に、より多くの値を含む符号語よりも高い発生頻度を有してもよい。バイアスがない２進の入力文字列で、出力値がそれに関連する単一の符号語のみに有することができる、最も高い発生確率は、０．５である。それゆえ、出力に関する発生確率が０．５を超えるものである場合、１以上の符号語はそれに関連付けられなければならない。これは、２進の入力文字列と同様に、２進でない入力文字列に適用してもよい。これはさらに、バイアスがある入力文字列に関して適用してもよい。
【００２９】
１以上の符号語は、単一の出力値に関連付けられてもよい。このように、各出力値の特定の発生確率は、関連する符号語の注意深い選択によって調整されうる。異なる出力値に対応する符号語の異なる長さおよび数を選択によって、それぞれの出力の確率は異なっているとして特定されうる。それゆえ、バイアスがある出力文字列はバイアスがない入力文字列から得られうる。実施形態では、出力文字列は２つの出力値を含む。出力値の出力確率は、その出力値に対応する符号語の数および長さによって定義され、第１出力値の出力確率は、第２出力値の出力確率よりも大きくてもよい。
【００３０】
特定の出力値に関連する符号語の数の制限はなくてもよい。そのため、実質的に、どんな所望の出力確率または十分に近似した推定は、特定の出力値に関して実現されうる。単一の出力値に関連する１以上の符号語を有することは、ユーザに文字列プロセッサのバイアスを正確に定義させてもよい。具体的に、発生頻度が特定されうる精度を増加させる。
【００３１】
処理部はユーザに符号語集合を定義させてもよい。  ユーザは符号語を設定し、ある出力に、ある符号語を割り当ててもよい。ユーザは符号語集合を定義することができてもよい。ユーザは符号語を定義することができてもよい。ユーザは、符号語の数、長さおよび構成を修正することにより、符号語集合を変更することができてもよい。あるいは、符号語は、文字列プロセッサのアプリケーションに依存して、ある出力に自動的に設定され割り当てられてもよい。
【００３２】
符号木構造は、比較文字列と符号語集合とを比較するために用いられてもよい。処理部は、符号木構造を用いて、比較操作を実行するように構成されてもよい。符号木構造は、ハフマン符号木構造でもよい。
【００３３】
実施形態は、符号木構造を用いて実装されてもよい。符号木構造は、メモリデバイス上に格納され、処理部によって実装されてもよい。符号木構造は、読み込み、書き込み、比較および割り当て機能を実装してもよい。
【００３４】
符号木構造は、符号語の集合と入力文字列の少なくとも一部とを読み込みて比較する効率的な方法として用いられてもよく、比較文字列が符号語と一致する場合、出力文字列に出力値を出力してもよい。符号木構造は一連の読み込みおよび比較操作を含んでもよく、決定木構造は、比較文字列が符号語と一致するまで、比較文字列に追加されたもっとも最近の入力の値を繰り返し決定し、比較文字列と集合とを比較する。
【００３５】
符号木は、コンピュータプログラムによって実装されてもよい。符号木構造は、ＮＡＮＤゲートの大きな集合上で実行されてもよい。符号木構造は、ＦＰＧＡまたはＡＳＩＣ上で実行されてもよい。
【００３６】
次に利用可能な入力は、比較文字列が符号語と一致しないときの１つまたは各々の決定の後に、比較文字列に追加されてもよい。あるいは、比較文字列が符号語集合の中の符号語と一致するかどうかを決定する１以上の決定ステップを行ってもよい。次に利用可能な入力は、（符号木の特定の実装と同様に、要求される決定は入力文字列における値の数および符号語の数に依存してもよい）２、３または３以上の決定の後に、比較文字列に追加されてもよい。
【００３７】
ハフマン型符号木構造は、本開示に係る実施形態を実装するための効率的な方法を提供してもよい。伝統的に、ハフマン符号木はメッセージを符号化する効率的な方法を導き出すために用いられる。しかし、下記に述べられるように、同じアプローチは本開示のいくつかの実施形態に従って異なるタスクに用いられてもよい。他の実装がさらに適用可能であってもよい。
【００３８】
ハフマン符号木が情報を圧縮し復元するために用いられるとき、符号化されたメッセージのシーケンス順は、符号化と復号化との間で維持される。符号化されるビット順に適用されるどんな崩壊（disruption）または入れ替えも、復号中の誤りをもたらす。そのため、ここに開示されるような実施形態を実装するための（ハフマン符号木のような）符号木を用いて、シーケンス順が重要ではなく、それゆえ悪影響がないさらなる出力文字列で統合されうるあるバイアスがある出力確率を備える出力文字列を提供することは、出力文字列順序付けが崩壊されないまたは入れ替えられないべきである圧縮に関する値の文字列を符号化するための符号木を用いて区別されうる。
【００３９】
実施形態では、入力文字列のシーケンス順は、比較文字列が符号語集合と比較される前に、再配置されまたは崩壊してもよい。出力文字列の順序付けは、文字列プロセッサから出力される前に、再配置されまたは崩壊してもよい。出力文字列における出力値は、それらが出力文字列に割り当てられたものと同じ順序で出力されなくてもよい。入力または出力値の再配置は、そのような再配置が入力または出力文字列におけるシンボルの値に依存しない限り、ここに記述される実施形態の効率に影響しない。
【００４０】
入力文字列は、２進の入力文字列であってもよい。実施形態に係る入力文字列はバイアスがない２進の文字列であるが、他の実施形態では、入力文字列はバイアスがかけられてもよい。入力は、バイアスがある２進の入力文字列、または、２進の入力文字列よりもより値を含む、バイアスがないまたはバイアスがある文字列であってもよい。入力文字列は、バイアスがあるまたはバイアスがない１０進または１６進の入力文字列でもよい。
【００４１】
入力文字列は、品質評価された２進の入力文字列であってもよい。入力文字列は、品質評価されたランダムな２進の入力文字列であってもよい。いくつかの実施形態では、入力文字列はランダムでなくてもよい。
【００４２】
処理部は、品質評価された２進の入力文字列を受信してもよい。入力文字列は、生成され、操作され、テストされ、または評価されていてもよい。入力文字列は、独立統計的検定またはスイートによって評価されていてもよい。入力文字列は、ランダム値列ではなくむしろ非ランダム値列を含んでもよい。入力文字列は、乱数発生器または文字列生成器の任意の種類によって生成されてもよい。
【００４３】
ここに記述されるいくつかの実施形態は、品質評価された２進の入力文字列を用いてもよい。品質評価された入力文字列は、品質評価入力文字列と呼ばれてもよく、または高品質ＲＮＧに由来してもよい。用語「高品質ＲＮＧ」は、ある種の品質評価の対象である乱数発生器を参照してもよい。適切な品質評価の例は、理想的記述、科学的議論および統計的検定を含んでもよい。入力文字列は、ともに統合される２以上の分離した入力文字列を含んでもよい。入力文字列は、２以上の、結合した文字列からなってもよい。入力文字列は、結合した、乱数発生器および／または品質乱数発生器から２以上の出力からなってもよい。
【００４４】
等しく、本開示に係る複数の文字列プロセッサは、それらの出力（およびそれゆえ出力文字列）が単一の出力文字列を形成するために結合されるように、配置されてもよい。そのような配置は、ある値出力（またはビット）レートが達成されることを保証するように要求されてもよい。
【００４５】
実施形態によれば、乱数発生器は、文字列生成器および文字列プロセッサを含んでもよい。文字列プロセッサは実施形態に従ってもよい。乱数発生器は、バイアスがある出力文字列を出力してもよい。乱数発生器は、ランダムで、バイアスがある出力文字列を出力してもよい。乱数発生器の出力文字列は、文字列プロセッサの出力文字列であってもよい。
【００４６】
文字列生成器の出力文字列は、文字列プロセッサの入力文字列でもよいし、中間文字列と呼ばれてもよい。中間文字列は、バイアスがなくてもよい。中間文字列は、ランダムでもよい。用語「中間文字列」は、明瞭さを保証するために用いられる。文字列生成器の出力文字列は、文字列プロセッサの入力文字列でもよいし、明瞭さのために中間文字列と呼ばれてもよい。中間文字列は中間値を含んでもよい。そのため、中間値は、文字列生成器の出力値および／または文字列プロセッサの入力値を指してもよい。文字列プロセッサの出力文字列は、バイアスがあってもよい。
【００４７】
本実施形態に係る乱数発生器は、少なくとも２つの中間値を含むバイアスがない中間文字列を出力する文字列生成器、および少なくとも２つの値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を含むバイアスがある出力文字列を出力する文字列プロセッサを含んでもよく、前記文字列プロセッサの入力文字列は中間文字列であり、前記文字列プロセッサは、処理部とメモリデバイスとを含み、前記メモリデバイスは、符号語集合を格納し、前記符号語集合は、複数の符号語を含み、各符号語は、少なくとも１つの入力値を含み、各出力値は、少なくとも１つの対応する符号語を有し、前記処理部は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を含み、前記比較文字列が符号語と一致する場合、出力値を前記出力文字列に割り当て、前記割り当てられた出力値は、前記一致した符号語に対応し、出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きい。文字列プロセッサ出力文字列は、乱数発生器出力文字列でもよい。
【００４８】
文字列生成器は、擬似乱数発生器または真の乱数発生器を含んでもよい。文字列生成器は、品質評価された、または品質の、乱数発生器を含んでもよい。文字列生成器は、物理的な現象の測定に由来するランダムな値またはビットの文字列を生産してもよい。測定値は、出力の値を決定するために、１つの閾値または一連の閾値と比較されてもよい。読み込みの文字列は、出力文字列を提供してもよい。
【００４９】
物理的な現象は本質的に、ランダムな原子または素粒子の物理的現象であってもよい。そのような現象の例は、大気雑音、放射性崩壊、熱雑音、ショット雑音、クロックドリフト、電波雑音および／または半透鏡を通過した光子の伝送を含む。
【００５０】
文字列生成器からの出力文字列は、バイアスがない文字列であってもよい。文字列生成器の出力文字列はランダムであってもよい。文字列生成器の出力文字列は２進であってもよい。文字列生成器からの出力文字列は、ともに統合される、多くの文字列を含んでもよい。そのため、中間文字列は、ともに統合される、多くの文字列を含んでもよい。文字列プロセッサの入力文字列は、ともに統合される、多くの文字列を含んでもよい。文字列プロセッサ適用に関してどこでも議論される特徴は、上述されるような乱数発生器の文字列プロセッサに、準用して当てはまる。
【００５１】
実施形態では、メモリデバイスを備えるプロセッサ上で実行される場合、前記プロセッサおよび前記メモリデバイスに文字列プロセッサとして動作させるコンピュータ実行可能な指示を伝達するコンピュータ読み取り可能なキャリア媒体が提供される。
【００５２】
ここに記述されるような文字列プロセッサは、量子鍵配送（ＱＫＤ）システムで用いるのに適していてもよい。  
ＱＫＤシステムは光を用いてもよい。ここに開示される実施形態は、光強度値を制御してもよい。ここに開示される実施形態は、ＱＫＤプロトコルによって規定される基底の符号化および／または復号化を制御してもよい。特定例は、デコイ状態を備えるＢＢ８４プロトコルでもよく、本開示に係る実施形態は、「信号」、「デコイ」および「真空」状態にそれぞれ対応する３つの値ｕ、ｖおよびｗを出力してもよい。これらの出力値のそれぞれに関して、異なる出力頻度で生じることが望ましいかもしれない。そのため、ここに記述されるような文字列プロセッサは、そのようなＱＫＤシステムに用いられてもよい。別の例は、いわゆる「効率的ＢＢ８４プロトコル」であり、実施形態では、２つの基底、ＺおよびＸ、が用いられてもよい。これらの基底は、異なる発生確率で選択されうる。そのため、ここに記述されるようなＲＮＧが用いられてもよい。さらに、デコイ状態を備える効率的ＢＢ８４プロトコルを、共同で有することが可能である。この場合、複数の出力シンボル（Ｚｕ、Ｚｖ、Ｚｗ、Ｘｕ、Ｘｖ、Ｘｗ）が、異なる確率で選択されなければならず、ここに記述されるＲＮＧが用いられてもよい。
【００５３】
ここに記述されるような文字列プロセッサは、ランダムイベントをモデル化する際の利用に適しているだろう。例えば、ここに記述されるような文字列プロセッサは、例えば量子散乱をモデル化するといった、ランダムウォーク型の問題をモデル化しまたはシミュレートするために用いられてもよい。ここに記述されるような実施形態は、ユーザに、出力値の数および各値の出力確率のようなあるパラメータを設定し、その後その品質評価されおよび／または品質保証されたランダム入力に基づく振る舞いをモデル化することを可能にしてもよい。これは、現在の技術でのそのようなモデルの信頼性および関連を大幅に増加させるだろう。
【００５４】
ここに記述されるような文字列プロセッサは、運だめしゲームをシミュレートする際の利用に適しているだろう。例えば、ここに記述されるような文字列プロセッサは、カードゲームまたはルーレットをシミュレートするまたはモデル化するために用いられてもよい。
【００５５】
同様に、ここに記述されるような実施形態は、ユーザに、出力値の数および各値の出力確率のようなあるパラメータを設定し、その後その品質評価されおよび／または品質保証されたランダム入力に基づく振る舞いの結果をシミュレートすることを可能にしてもよい。これは、現在の技術でのそのようなシミュレーションの信頼性および関連を大幅に増加させるだろう。
【００５６】
実施形態によれば、少なくとも２つの入力値のバイアスがない入力文字列を与えられる第１出力値および第２出力値を含むバイアスがある出力文字列を出力するための方法であり、前記方法は、比較文字列と前記符号語とを比較し、前記比較文字列は、前記入力文字列からの入力を含み、前記符号語集合は、複数の符号語を含み、各符号語は、少なくとも１つの入力値を含む。各出力値は、少なくとも１つの対応する符号語を有してもよい。比較文字列が符号語と一致する場合、方法は出力値を出力文字列に割り当ててもよく、前記割り当てられた出力値は、前記一致した符号語に対応し、出力値の出力確率は、前記出力値に対応する前記符号語の長さおよび数によって定義され、前記第１出力値の出力確率は、前記第２出力値の出力確率よりも大きい。実施形態に係る文字列プロセッサは、実施形態に係る方法を実装してもよい。そのため、文字列プロセッサが構成されてもよいステップに関する議論は、実施形態に係る方法に準用して適用する。
【００５７】
実施形態に係る方法は、実施形態に係る文字列プロセッサが着手するように構成されてもよいステップのいずれかを含んでもよい。フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、ここに記述されるような文字列プロセッサとして動作するように構成されてもよい。実施形態によれば、ＦＰＧＡは、ここに示されるような文字列プロセッサとして動作するように構成されるモジュールを含んでもよい。モジュールは、前記比較文字列における入力の数をモニタする減算カウンタと、前記比較文字列の前記入力の数によって前記入力文字列をシフトするシフトレジスタと、符号木決定構造とを含んでもよく、前記シフトレジスタおよび減算カウンタは、前記符号木決定構造に操作可能に接続される。
【００５８】
モジュールは、前記符号木構造から一致した符号語に関連する前記出力値を、前記モジュールからの出力に割り当てて格納するファーストインファーストアウトメモリ部をさらに含んでもよい。フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはそのモジュールは、少なくとも１つのシフトレジスタを含んでもよい。シフトレジスタまたは複数のシフトレジスタは、入力文字列を符号木に効率的に入れるために用いられてもよい。フィールドプログラマブルゲートアレイまたはそのモジュールは、減算カウンタを含んでもよい。減算カウンタは、符号木または符号木決定構造、およびシフトレジスタに接続されてもよく、いくつの値が比較文字列にあるかを設定またはモニタしてもよい。減算カウンタは、これらの入力が再利用されないことを保証するために、ＦＰＧＡが何回待機すべきかを設定してもよい。
【００５９】
ＦＰＧＡまたはそのモジュールは、ファーストインファーストアウト（ＦＩＦＯ）メモリ部を含んでもよい。ＦＩＦＯメモリ部は、ＦＰＧＡから出力される前に、出力データを格納してもよい。ある出力値レートに適合するために、ＦＰＧＡの入力クロックレートは、出力クロックレートより速い速度、例えば、出力レートが入力レートの半分より大きい場合、出力クロックレートの２倍に設定されてもよい。ＦＰＧＡは、ここに記述されるような少なくとも２つの文字列プロセッサを含む、または含むように構成されてもよく、少なくとも２つの文字列プロセッサの出力は、単一の文字列に統合されてもよい。
【００６０】
実施形態によれば、ＦＰＧＡは、第１モジュールおよび第２モジュールを具備してもよく、前記第１モジュールおよび第２モジュールはそれぞれ、ここに開示されるような文字列プロセッサとして動作し、前記第１モジュールおよび第２モジュールの前記出力は、単一の出力文字列に結合される。前記第１モジュールおよび第２モジュールの前記出力は、フィールドプログラマブルゲートアレイ出力レートと入力レートとを一致させるために結合されてもよい。
【００６１】
実施形態によれば、ＦＰＧＡは、第１モジュールおよび第２モジュールを具備し、前記第１モジュールおよび第２モジュールは、ここに記述されるような第１文字列プロセッサおよび第２文字列プロセッサとして動作し、前記第１モジュールは、前記第１文字列プロセッサの前記比較文字列における入力の数をモニタする第１減算カウンタと、前記第１文字列プロセッサの前記比較文字列における前記入力の数によって前記第１文字列プロセッサの前記入力文字列をシフトする第１シフトレジスタと、第１符号木決定構造と、前記第１符号木決定構造から一致した符号語に関連する前記出力値を前記第１モジュールからの出力に割り当てて格納する第１ファーストインファーストアウトメモリ部と、を具備し、前記第１シフトレジスタおよび前記第１減算カウンタは、前記第１符号木決定構造に操作可能に接続され、前記第２モジュールは、前記第２文字列プロセッサの前記比較文字列における入力の数をモニタする第２減算カウンタと、前記第２文字列プロセッサの前記比較文字列における前記入力の数によって前記第２文字列プロセッサの前記入力文字列をシフトする第２シフトレジスタと、第２符号木決定構造と、前記第２符号木決定構造から一致した符号語に関連する前記出力値を前記第２モジュールからの出力に割り当てて格納する第２ファーストインファーストアウトメモリ部と、を具備し、前記第２シフトレジスタおよび前記第２減算カウンタは、前記第２符号木決定構造に操作可能に接続され、前記第１モジュールおよび第２モジュールの前記出力は、単一の出力文字列に結合される。
【００６２】
前記第１モジュールおよび前記第２モジュールの前記出力は、フィールドプログラマブルゲートアレイ出力レートと入力レートとを一致させるために結合されてもよい。各文字列プロセッサは、処理ブロックまたはモジュールにおいて実装されてもよい。各モジュールは、任意のＦＩＦＯメモリ部に加えて、処理部およびメモリデバイスを含んでもよい。各モジュールは、ＦＰＧＡに関して上述される特徴を含んでもよい。各モジュールは、異なるバイアスがない入力文字列を与えられてもよい。各モジュールは、それ自身のバイアスがない入力文字列を与えられてもよい。各モジュールは、同じバイアスがない入力文字列を与えられてもよい。各モジュールは、少なくとも１つのシフトレジスタを含んでもよい。１つのシフトレジスタまたは複数のシフトレジスタは、符号木に入力文字列を入力するために用いられてもよい。各モジュールは、減算カウンタを含んでもよい。減算カウンタは符号木およびシフトレジスタに接続されてもよく、いくつの値が比較文字列にあるかを設定またはモニタしてもよい。減算カウンタは、これらの入力が再利用されないことを保証するために、各モジュールが何回待機すべきかを設定してもよい。
【００６３】
各モジュールは、ファーストインファーストアウト（ＦＩＦＯ）メモリ部を含んでもよい。ＦＩＦＯメモリ部は、ＦＰＧＡから出力される前に、それぞれのモジュールの文字列プロセッサの出力データを格納してもよい。ＦＰＧＡは、前記第１ファーストインファーストアウトメモリ部および第２ファーストインファーストアウトメモリ部のどちらから前記単一の出力文字列の出力を読み込むかを決定する出力制御部と、前記第１ファーストインファーストアウトメモリ部および第２ファーストインファーストアウトメモリ部からの前記出力を読み込み、前記単一の出力文字列を出力する選択部とをさらに含んでもよい。
【００６４】
ＦＩＦＯメモリ部は、選択部において他のモジュールまたは複数の他のモジュールからのデータでマージされる前に、各モジュールに出力データを格納するために用いられてもよい。選択部は、ＦＰＧＡから最終の出力文字列を出力してもよい。選択部は、単一のＦＰＧＡ出力文字列にモジュールからの２つの出力文字列を統合してもよい。
【００６５】
出力制御部は、「almost empty」信号を含み、用い、作成し、読み込みまたは送ってもよい。「almost empty」の信号または機能は、各モジュールと共に用いられてもよい。almost emptyは、ＦＩＦＯおよび選択部を接続してもよい。almost emptyは、出力ＦＩＦＯに格納されたＮ個のシンボル未満であることを示す。Ｎは、０（ゼロ）より大きい小さな値であってもよい。
【００６６】
出力制御部は、どちら側を読み込むかを決定するために２つのモジュールからalmost emptyを用いてもよい。一旦、どちら側を読み込むかを決定するために出力制御部がAlmost Emptyを用いた場合、「読み込み（read）」機能は、関連するＦＩＦＯメモリの関連する出力値を選択部にいれる。almost emptyは、ＦＩＦＯに関して空の読み込み（アンダーフロー）を回避するために要求されてもよい。ＦＩＦＯの条件フラグを更新するために、読み込み動作から有限時間（つまりクロックサイクルの数）かかる。Ｎは、almost empty更新への読み込みのラウンドトリップのレイテンシによって決定されてもよい。
【００６７】
しかし、ＦＩＦＯの深さは、十分なデータを予防的に読み込むことによって、アンダーフローを回避するのにかなり十分に選択される。Almost Emptyの利用は、本実施形態において用いられる符号木のどのような利用が、以前の利用から異なるかを示す。Almost Emptyおよび選択部の利用は、単一の出力文字列を提供するためにともに組み込まれる２つ以上のモジュールからの出力文字列をもたらす。これは、必然的に崩壊または個々の文字列の初期シーケンス順の入れ替えまたは崩壊をもたらすだろう。
【００６８】
符号木に基づく圧縮／復元方法の文字列の順序付けの入れ替えまたは崩壊は、誤りをもたらすである一方、ここに示されるような符号木に基づく実施形態で用いられる文字列の順序付けの入れ替えまたは崩壊は、行わない。実施形態では、選択機能、出力の順序付け、または出力文字列によって接続される２つのまたはより多くの並列機能モジュールのおかげで、各機能モジュールに含まれる符号木構造からの出力の順序付けと同じではなくてもよい。
【００６９】
結果として、ＦＰＧＡからの出力文字列または出力の順序付けは、符号木構造またはモジュールからの出力の順序付けと同じでなくともよい。これは、選択機能によって操作される再配置が文字列中のシンボルの値と独立しているので、ここに記述された実施形態の効能に影響しないだろう。これに反して、符号木に基づく圧縮／復元方法のどんな実装も防ぐだろう。文字列プロセッサのそれぞれは、その自身の入力文字列を受信してまたは含んでもよい。モジュールのそれぞれは、その自身の入力文字列を含んでまたは受信してもよい。１つの、またはそれぞれの入力文字列は、バイアスがあっても、バイアスがなくても、２進または非２進であってもよい。各入力文字列は、バイアスがなく、２進の、高品質ＲＮＧであってもよい。
【００７０】
ここに記述されるような文字列プロセッサを含む量子通信システムは、本開示に従う。ここに記述されるようなＦＰＧＡを含む量子通信システムは、本開示に従う。  
本実施形態によれば、量子通信システムのための送信部であって、前記送信部は、受信部に送信するための複数の量子ビットを生成する量子ビット源と、前記量子ビットの一部の強度を変調する強度変調器と、前記量子ビットの一部の位相を変調する位相変調器と、を含み、前記強度変調器および前記位相変調器は、ここに記述されるような文字列プロセッサからバイアスがある出力文字列を受信する。
【００７１】
実施形態によれば、量子通信システムに関する送信部であって、前記送信部は、受信部に送信するための複数の量子ビットを生成する量子ビット源と、前記量子ビットの一部の強度を変調する強度変調器と、前記量子ビットの一部の位相を変調する位相変調器と、ここに記述されるような少なくとも１つのＦＰＧＡと、を含み、前記強度変調器および前記位相変調器は、前記ＦＰＧＡからバイアスがある出力文字列を受信する。
【００７２】
実施形態によれば、量子通信システムのための受信部であって、前記受信部は、受信した量子ビットを検出する少なくとも１つの検出器と、測定のために前記受信した量子ビットの一部の位相を変調する位相変調器と、を含み、前記位相変調器は、ここに記述されるような文字列プロセッサからバイアスがある出力文字列を受信する。
【００７３】
実施形態によれば、量子通信システムための受信部であって、前記受信部は、受信した量子ビットを検出する少なくとも１つの検出器と、測定のために前記受信した量子ビットの一部の位相を変調する位相変調器と、ここに記述されるようなＦＰＧＡと、を含み、前記位相変調器は、前記ＦＰＧＡからバイアスがある出力文字列を受信する。
【００７４】
実施形態によれば、受信部に送信するための複数の量子ビットを生成する量子ビット源、前記量子ビットの一部の強度を変調する強度変調器、および、前記量子ビットの一部の位相を変調する位相変調器を含む送信部と、受信した量子ビットを検出する少なくとも１つの検出器、および、測定のために前記受信した量子ビットの一部の位相を変調する位相変調器を含む受信部と、を含む量子通信システムであり、前記受信部における前記位相変調器、前記送信部における前記強度変調器および前記位相変調器の少なくとも１つは、ここに記述されるような文字列プロセッサからバイアスがある出力文字列を受信する。あるいは、送信部における強度変調器および位相変調器、および、受信器における位相変調器は、ここに記述されるような文字列プロセッサからバイアスがある出力文字列を受信してもよい。
【００７５】
実施形態では、受信部に送信するための複数の量子ビットを生成する量子ビット源、前記量子ビットの一部の強度を変調する強度変調器、および前記量子ビットの一部の位相を変調する位相変調器を含む送信部を含む量子通信システムであって、前記量子通信システムは、受信した量子ビットを検出する少なくとも１つの検出器、および測定のために前記受信した量子ビットの一部の位相を変調する位相変調器を含む受信部をさらに具備し、前記量子通信システムは、ここに記述されるような少なくとも１つのＦＰＧＡをさらに具備し、前記受信部における前記位相変調器、前記送信部における前記強度変調器および前記位相変調器の少なくとも１つは、ＦＰＧＡからバイアスがある出力文字列を受信する。あるいは、送信部における強度変調器および位相変調器、および、受信器における位相変調器は、ＦＰＧＡからバイアスがある出力文字列を受信してもよい。
【００７６】
量子通信システムは、ここに記述されるような送信器および受信器を含んでもよい。量子ビットは、光パルスまたは単一光子パルスに符号化されてもよい。量子ビット源は、光パルスまたは単一光子の光源であってもよい。上記強度変調器または位相変調器のうちのどれでも、ここに記述されるようなＦＰＧＡまたは文字列プロセッサの出力によって制御されてもよい。例えば、バイアスがある出力値のそれぞれは、ある強度に対応する。そのため、量子ビットは、特定の出力値の出力頻度および確率によって決定される異なる出現頻度を有する各強度で、多くの異なる強度のうちの１つに変調されてもよい（多くの異なる強度は、多くの異なる出力値によって決定される）。
【００７７】
同じことは、位相変調器に準用して適用できる。量子通信システムまたはそれについての送信器または受信器は、強度変調器を含んでもよい。強度変調器は、デコイ状態プロトコルを実装するために用いられてもよい。強度変調器は、量子ビットの一部の強度を変調するために配置されてもよい。強度変調器は、量子ビットの全てを変調してもよい。強度変調器は、多くの異なる要因または量によって、量子ビットを変調してもよい。強度変調器は、どの量子ビットを変調するかをランダムに選択してもよい。ランダム選択は、バイアスがあってもよい。
【００７８】
各量子ビットは、多くの予め定義された強度、「信号」、「おとり」および「真空」状態にそれぞれ対応する３つの強度値｛ｕ、ｖ、ｗ｝の１つにランダムに変調されてもよい。強度値は、ユーザ｛ｆｕ、ｆｖ、ｆｗ｝によって決定される発生頻度で生じてもよい。文字列プロセッサまたはＦＰＧＡは、ユーザによって決定された発生頻度に従い、強度値のランダム選択を制御または実装してもよい。
【００７９】
量子通信システムまたはそれについての送信器または受信器は、位相変調器を含んでもよい。位相変調器は、量子ビットの一部の位相を変調するために配置されてもよい。位相変調器は、量子ビットの全ての位相を変調するために配置されてもよい。各量子ビットは、位相変調器によって多くの予め定義された位相のうちの１つにランダムに変調されてもよい。各量子ビットは、位相変調器によって２つの位相のうちの１つにランダムに変調されてもよい。各位相変調の発生頻度は、バイアスがあってもよい。発生頻度は、ユーザによって決定されてもよい。送信器および受信器は、位相変調器を有してもよい。
【００８０】
ここに記述されるような同じ文字列プロセッサまたはＦＰＧＡは、強度および位相変調の両方を制御してもよい。あるいは、異なる文字列プロセッサまたはＦＰＧＡは、各変調器をコントロールしてもよい。量子通信システムは、光の伝達を用いてもよく、文字列プロセッサは、量子通信プロトコルによって規定された基底を符号化しおよび復号化することまたは、光強度値の少なくとも１つ制御してもよい。
【００８１】
量子通信システムは本開示に係る２つの文字列プロセッサまたはＦＰＧＡを含んでもよい。あるいは、本開示に係る１つ、３つまたは３つ以上の文字列プロセッサまたはＦＰＧＡが、量子通信システムで実装されてもよい。量子通信システムは、受信器に暗号化されたキーを送る送信器を含んでもよい。量子通信システムは、光源または光子源を含んでもよい。量子通信システムは、またはそれについての送信器または受信器は、入力ビームスプリッタを含んでもよい。強度変調パルスは、入力ビームスプリッタによって分割されてもよい。量子通信システムは２つ以上のパスを含んでもよい。１つのパス（「第１パス」）は、位相変調を通過してもよい。位相変調器は、ビームスプリッタの後であってもよい。位相変調器は、特定の位相によって光子をランダムに変調し、それにより、２つの基底｛Ｚ、Ｘ｝のうちの１つを備える光子を出力してもよい。２つの基底間の発生比率は、バイアスがかけられてもよいし、ユーザによって予め決定されてもよい。
【００８２】
本開示に係る文字列プロセッサ、または実施形態に係るＦＰＧＡは、基底選択のための位相変調器を制御するために用いられてもよい。位相変調器における基底選択を制御するＦＰＧＡまたは文字列プロセッサは、強度変調器を制御する同じＦＰＧＡまたは文字列プロセッサであってもよい。あるいは、付加的な文字列プロセッサまたはＦＰＧＡは、位相変調器を制御するために用いられてもよい。入力ビームスプリッタからの別のパスは、光学的遅延を通して送られてもよい。量子通信システム、またはそれについての送信器または受信器は、光伝送路および２つの偏光ビームスプリッタを含んでもよい。第１および第２パスからの光パルスまたは光子は、光伝送路および２つの偏光ビームスプリッタを経由して受信器に送られてもよい。送信器の偏光ビームスプリッタは、２つの異なるパスからのパルスまたは光子を偏向し、光伝送路を通過してそれらを送ってもよい。
【００８３】
パルスまたは光子が偏光されるとともに、受信器の偏光ビームスプリッタは、パルスまたは光子の２つのパスを、再び２つのパスに分割し、今回送るパルスまたは光子は、受信器における光学的遅延を介して送信器の位相変調を介して送り、パルスおよび光子は、受信器における位相変調器を介して送信器の位相変調器を介して送られない。受信器の位相変調器は、送信器におけるものと同じ種類であってもよい。受信器の位相変調器は、位相変調を選択することにより、受信パルスまたは光子を測定する２つの基底のうちの１つをランダムに選択してもよい。
【００８４】
送信器の位相変調器と同様に、受信器の位相変調器は、特定の位相で光子をランダムに変調し、それにより、２つの基底｛Ｚ、Ｘ｝のうちの１つで光子を効率的に測定する。２つの基底間の発生比率は、バイアスがあってもよく、送信器の位相変調器での発生比率と等しくなるように、ユーザによって予め決定されてもよい。実施形態に係るさらに（または同じ）文字列プロセッサ配置またはＦＰＧＡは、基底選択に関するこの第２位相変調器を制御するために用いられてもよい。受信器における２つのパスは、出力ビームスプリッタで組み合わせられてもよい。量子通信システムは、可変遅延線路を含んでもよい。２つの光学的遅延が適切に結合し、両方の全体経路が同じ遅延を経験することを保証するために、可変遅延線路が受信器における遅延を微調整するために用いられてもよい。量子通信システム、またはそれについての送信器または受信器は、１つ、または１つ以上の光子検出器を含んでもよい。光子検出器は、２つの経路間の干渉を調査してもよく、これらの結果から、キーが抽出されてもよい。
【００８５】
図１は、ここに記述されるいくつかの実施形態の一般的なスキームを概略的に図示する。  
値またはシンボルの文字列は、文字列生成器１１によって生成される。値またはシンボルの文字列（入力文字列１２）は、
【００８６】
【数１】
0006397966.tif 000002
【００８７】
で発生する値またはシンボル｛ｓ１，ｓ２，ｓｍ｝を含む。ここで、ｍは整数であり、  
【００８８】
【数２】
0006397966.tif 000003
【００８９】
は、入力シンボルｓｍの発生頻度、または確率である。  
例えば、  
【００９０】
【数３】
0006397966.tif 000004
【００９１】
が０．２５である場合、平均では、入力文字列中の入力の４分の１はｓ２である。入力文字列１２は、いくつかの実施形態において中間文字列と呼ばれてもよい。入力文字列１２は、実施形態に係る文字列プロセッサ１０に供給される。文字列プロセッサ１０は、値またはシンボルのさらなる文字列（出力文字列１３）を出力する。
【００９２】
図１の出力文字列１３は、
【００９３】
【数４】
0006397966.tif 000005
【００９４】
での値またはシンボル｛ｓ’１，ｓ’２，ｓ’ｎ｝を含む。ここで、ｎは整数であり、  
【００９５】
【数５】
0006397966.tif 000006
【００９６】
は、出力シンボルｓｎの発生頻度または確率である。  
例えば、
【００９７】
【数６】
0006397966.tif 000007
【００９８】
が０．１２５である場合、平均で出力文字列中の出力の８分の１はｓ’２である。文字列プロセッサは、
【００９９】
【数７】
0006397966.tif 000008
【０１００】
での値またはシンボルの文字列｛ｓ１，ｓ２，．．．，ｓｍ｝を受信し、この文字列を処理し、  
【０１０１】
【数８】
0006397966.tif 000009
【０１０２】
での値またはシンボルの出力文字列を出力する。
【０１０３】
ここで、ｎはｍと等しい必要はなく、
【０１０４】
【数９】
0006397966.tif 000010
【０１０５】
は、
【０１０６】
【数１０】
0006397966.tif 000011
【０１０７】
と等しい必要はない。  
あるいは、ｎはｍと等しくてもよいし、
【０１０８】
【数１１】
0006397966.tif 000012
【０１０９】
および／または、
【０１１０】
【数１２】
0006397966.tif 000013
【０１１１】
と等しくてもよい。
【０１１２】
図２に概略的に図示されるように、文字列生成器１１は、高品質ＲＮＧ１４であってもよい。高品質ＲＮＧはその後、入力文字列１２を生成してもよい。図１に関して記述されるように、図２の文字列プロセッサ１０が動作する。
【０１１３】
図３は高品質ＲＮＧ１４を概略的に図示する。用語「高品質ＲＮＧ」１４は、ある種類の品質評価１８の主題であるＲＮＧ１６を指す。ＲＮＧ１４の例は、ＰＲＮＧ、物理的ＲＮＧ、量子的ＲＮＧおよびＴＲＮＧとして図３に挙げられる。適切な品質評価の例も図３に提供され、理想的な記述、科学的議論および統計的検定を含んでもよい。
【０１１４】
様々な統計的解析ツールおよびスイートは、値のバイアスがある文字列での利用のため、一般的に互換性がないか不適当であるけれども、乱数発生器の品質を評価するために存在する。全米標準技術研究所（ＮＩＳＴ）によって生産された統計的解析スート、例えば、８００−２２統計的検定スイートは、「ｐ値」に帰着する１５個のテストを含む。各検定に関するｐ値は、「the probability a perfect RNG would have produced a sequence less random than the sequence that was tested, given the kind of non-randomness assessed by the test" ‘ A. Rukhin, J. Soto, J. Nechvatal, M. Smid, E. Barker, S. Leigh, M. Levenson, M. Vangel, D. Banks, A. Heckert, et al., A statistical test suite for random and pseudorandom number generators for cryptographic applications (2001)」として定義される。
【０１１５】
これらのスイートは、バイアスがある文字列で用いられることは想定されない。ＮＩＳＴスイートにおけるバイアスがある文字列を入力することは、失敗結果を出力する。値の文字列のランダム性を評価する方法のさらなる例は、理想的記述および科学的議論方法を含む。また、これらは、バイアスがある文字列での利用によく適していない。「ランダム性抽出器」および「universal-2 functions」のようなツールに基づく科学的議論は、バイアスが大きいほど、推定のために必要なサンプルが多くなるように、バイアスがある文字列での利用がより著しく困難になる。これは、たいていこれらの方法をバイアスがある文字列での利用に適さなくする。そのため、値またはビットのバイアスがある文字列に、品質の統計的に証明されたレベルを提供することは難しい。
【０１１６】
科学的議論における例および議論については、「D. Frauchiger, R. Renner, and M. Troyer, (2013), quant-ph/1311.4547v1; and Y. Z. Law, J.-D. Bancal, and V. Scarani, (2014), quant-ph/1401.4243v1」を参照する。
【０１１７】
図４ａは、文字列生成器１１が実際には複数の文字列生成器を含んでも良いことを協調する。例えば、図１の文字列生成器１１は、２、３、４または４以上の個別の文字列生成器を含む。
【０１１８】
図４ｂは、図２および図３の高品質ＲＮＧ１４が複数のＱ−ＲＮＧを含むことができることを協調する。例えば、図２および図３のＱ−ＲＮＧ１４は、２、３、４または４以上の個別のＱ−ＲＮＧを含む。図３のＱ−ＲＮＧ１４において、各ＲＮＧ１６は、複数のＲＮＧ（例えば１、２、３、４または４以上）を含んでもよく、それぞれは品質評価１８を受けてもよく、それゆえ、複数のＱ−ＲＮＧに帰着する。
【０１１９】
図５は、図６の符号木を利用する実施形態に係る文字列プロセッサ１７を示す。文字列プロセッサ１７は、この場合、２つの値、ｓ１とｓ２とを含む値のバイアスがない文字列２０を受信する。文字列プロセッサ１７はその後、ユーザによって定義される符号語集合２４と入力文字列２０とを比較するために、図６の符号木を用いた一連のビット単位の読み込み／比較／書き込み動作を始める。一連の読み込み／比較／書き込み動作は、実用目的に用いられる。他の実施形態では、読み込み／比較／書込み動作は、連続していなくてもよい。符号語集合２４は、メモリデバイスに格納される。文字列プロセッサは、値と符号語集合２４とを比較し、かつ出力文字列に出力値を割り当てる処理部を含む。
【０１２０】
入力文字列は、２よりも大きい値を含んでもよい。入力文字列は、３、４または４よりも大きい値を含んでもよい。
【０１２１】
図５の文字列プロセッサ１７は、値の出力文字列２２を出力する。図５の実施形態では、出力文字列２２は、３つの値、ｓ’１、ｓ’２およびｓ’３を含む。しかし出力文字列は、代わりに、２、４または４以上の出力値を含んでもよい。出力文字列は、バイアスがあり、バイアスは、符号語集合２４の選択を介して、ユーザによって定義される。本実施形態によれば、符号語集合は、一つの入力または入力の文字列が出力に割り当てられるために用いられる符号語のグループである。これは、図６を参照してさらに説明される。
【０１２２】
図６は、読み込み／比較／書き込み操作を行う実施形態の実装を図示する。図６の符号木構造はハフマン符号木に基づく。しかし、ハフマン符号木は、適切な符号木構造の単に一例である。他の符号木実装も適用可能である。
【０１２３】
図６の図示される実施形態では、２進法の入力文字列｛ｉ１ｉ２ｉ３ｉ４ｉ５ｉ６...｝はシステムに入力する。図５でのように、入力は値ｓ１またはｓ２を取る。値ｓ’１、ｓ’２およびｓ’３を含む出力文字列｛ｏ１ ｏ２ ｏ３ ｏ４ ｏ５ ｏ６．．．｝は、出力として好ましい。図６の符号木構造の利用は、ユーザが特定の出力バイアスを選ぶことを可能にする。これは特定の符号語集合２４の選択を介して実現される。
【０１２４】
符号語集合２４は、出力文字列２２に書かれるべき、ある出力値のトリガとなる入力値の（１つ以上の）シーケンス（比較文字列と呼ばれてもよい）を決定する。図６の実施形態では、比較された１つの入力または複数の入力（比較文字列）がｓ１またはｓ２ｓ１のどちらかである場合、ｓ’１の出力は、出力文字列２２に書き込まれる。比較文字列がｓ２ｓ２ｓ１である場合、ｓ’２の出力は、出力文字列２２に書き込まれる。比較文字列がｓ２ｓ２ｓ２の場合、ｓ’３の出力は、出力文字列２２に書き込まれる。この符号語集合は、ｓ’１：ｓ’２：ｓ’３の出力バイアスが６：１：１であることを保証する。したがって、ｓ’１、ｓ’２およびｓ’３の発生確率は、それぞれ０．７５、０．１２５および０．１２５である。これは、より詳細に以下に説明する。
【０１２５】
図６の符号木は、任意の適切に構成されたコントローラによって実行されてもよい、繰り返しプロシージャを概略的に図示する。本開示の方法を実装するために用いられる特定のハードウェアは、変わってもよい。例えば、図６の符号木の方法は、１組のＮＡＮＤゲートを含む集積回路によって実装されてもよい。ＦＰＧＡおよびＡＳＩＣチップは、そのような方法の実装に適するコンポーネントの特定例である。
【０１２６】
図６の処理木の完全な繰り返しごとに、出力文字列２２に書き込まれることなっている選択された値で終了する。各繰り返しは、出力文字列２２に書き込まれる値で終了する。選択された符号語に依存して、各繰り返しは、１つ、または１つ以上の入力を読み込む。本実施形態では、１つ、２つまたは３つの入力は、各繰り返しにおいて読み込まれる。
【０１２７】
図６および本実施形態に関して、処理は、処理開始２６において、ｋ＝１で開始する。各連続した繰り返し、ｋは、対応する出力２８、ｏｋを決定する。それゆえ、第１の繰り返しは、第１出力ｏ１を決定することになる。処理ステップは、読み込みｉ１（３０）、入力文字列２０の中の第１入力を読み込むことに着手する。この入力は、まだされていない、またはまだ完了していない比較文字列の一部なので、利用可能な入力である。この入力、次に利用可能な入力は、比較文字列に追加される。一旦ｉ１が読み込まれると、決定ステップ３２は、ｉ１＝ｓ１であるかどうかを決定する。この決定ステップ３２の答えがＹｅｓである場合、その後、ｉ１＝ｓ１となる（３４）。この結果と符号語集合２４とを比較することは、読み込み入力として対応する符号語を提供する。図６の実施形態の組（セット）は、ｓ１の入力がｓ’１の出力に対応することを提供する。その場合には、ｏ１はｓ’１にセットされるべきである（３６）。値ｓ’１はその後、第１出力ｏ１として出力文字列２２に書き込まれる。
【０１２８】
本実施形態の第１決定ステップ３２の答えがＮｏ、ｉ１≠ｓ１である場合、ｉ１＝ｓ２（３８）となる。符号語集合２４は、ｓ２の符号語を含まず、したがって、次の入力ｉ２が読み込まれる。入力ｉ２は、ここで次に利用可能な入力であり、したがって、比較文字列に加えられることになる。そのため、入力文字列２０における最初の２つの入力は、ここで比較文字列であり、符号語集合２４と比較される。次の入力ｉ２がｓ１と等しいかどうかのさらなる決定４０がなされる。ｉ２＝ｓ１（４２）の場合、符号語集合２４と比較される入力は、ここでｓ２ｓ１である。入力文字列ｓ２ｓ１がｓ’１の出力に対応することが、この実施形態の集合２４に定義される。そのため、ｏ１はｓ’１に設定される（４４）。値ｓ’１はその後、第１出力ｏ１として出力文字列２２に書き込まれる。
【０１２９】
本実施形態の第２の決定ステップ４０への答えがＮｏ、ｉ２≠ｓ１の場合、その後、ｉ２＝ｓ２となる（４６）。本実施形態の集合２４は、ｓ２ｓ２の符号語を含まず、したがって、次に利用可能な入力ｉ３は、比較文字列に読み込まれ追加される必要がある。そのため、入力文字列２０の中の最初の３つの入力は、ここで比較文字列であり、集合２４と比較される。次の入力ｉ３がｓ１と等しいかどうかについてのさらなる決定４８がなされる。ｉ３＝ｓ１の場合（５０）、集合２４と比較される入力は、ここでｓ２ｓ２ｓ１である。ｓ２ｓ２ｓ１の入力文字列がｓ’２の出力に対応することが、この実施形態の集合２４に定義される。そのため、ｏ１はｓ’２に設定される（５２）。値ｓ’２はその後、第１出力ｏ１として出力文字列２２に書き込まれうる。
【０１３０】
本実施形態の３番目の決定ステップ４８の答えがＮｏ、ｉ３≠ｓ１である場合、ｉ３＝ｓ２となる（５４）。比較される入力文字列はここでｓ２ｓ２ｓ２であり、符号語集合は、ｓ２ｓ２ｓ２の入力文字列がｓ’２の出力値にマップすることを定義する。そのため、ｏ１はｓ’３に設定されてもよい（５６）。値ｓ’３はその後、第１出力ｏ１として出力文字列２２に書きまれる。
【０１３１】
一旦出力ｏ１が出力値を割り当てられたならば、比較文字列は廃棄されるか、消去されるか、空にされ、繰り返しループ５８は、１ずつｋの値を増加させ、再び処理を開始する。同じステップはその後、ｏ２に関する値を決定するために行われる。符号語集合２４と既に比較されており、出力を決定するために用いられる入力は無視されるべきである。次の入力（つまり、まだ比較されていない第１入力（例えばｉ４））は、次の繰り返し中に読み込まれる。そのため、入力文字列２０は出力文字列２２を生産するためにビット単位で、読み込まれ比較される。
【０１３２】
ここに記述される実施形態に係る方法のようなアルゴリズムの効率は、非常に重要である。効率Ｅは、出力文字列を生成するために用いられる初期ビットの期待数Ｃの逆数として定義される。時々、Ｃを初期ビットの「消費」と呼ぶ。効率Ｅが高いほど、Ｃが小さくなる、すなわち、各出力に必要な入力がより少なくなる。符号木の使用、ハフマン木がそのような例の１つであり、高効率Ｅおよび初期ビットの低い消費Ｃをもたらす。
【０１３３】
ここで開示されるような符号木の効率Ｅは、式
【０１３４】
【数１３】
0006397966.tif 000014
【０１３５】
を用いて計算されうる。
【０１３６】
ここで、ｐｎは、初期文字列からのｎビットが用いられる確率である。  
図６の実施形態に関し、３つの出力ｓ’１、ｓ’２およびｓ’３の消費Ｃは、以下のようになる。
【０１３７】
【数１４】
0006397966.tif 000015
【０１３８】
同じ例に関するエントロピーは、出力シンボルｐ（ｓ１’）＝３／４，ｐ（ｓ２’）＝ｐ（ｓ３’）＝１／８の確率から計算されうる。  
【０１３９】
【数１５】
0006397966.tif 000016
【０１４０】
そのため、消費ＣがエントロピーＨに近づくことが、上述した最適化要求（ｄ）によって理解できる。ＣとＨとの間の近似の定量的記述として、それらが２ビット未満で異なる場合、それらが近いと考慮されてもよい。
【０１４１】
上で述べたように、本実施形態において、出力バイアスおよび個々の出力発生確率は、ユーザによって設定されてもよい。これは、符号語集合の選択を介して達成される。  
入力文字列２０がバイアスがない２進の入力であると仮定すると、ある出力に達するために要求されるすべての決定は、特定の入力文字列発生に関する確率を半分にする。さらに、０．５以上の発生確率を設定するために、多重符号語が、単一の出力値に割り当てられてもよい。そのため、バイアスがない２進法の入力文字列および２つのバイアスがない出力値を備えたシステムについては、１つの決定だけが要求され、それゆえ、出力として選択されている各出力値の発生確率は、０．５である。しかし、例えば、２つの出力値、ＸおよびＹが要求される場合、それぞれ０．７５および０．２５の発生確率で、２つの決定が要求され、符号語は例えば以下のように当てられてもよい。Ｘ＝１と０１、Ｙ＝００。
【０１４２】
この方法を用いて、出力発生確率の広い範囲が、効率的に得られうる。上に述べたように、図６の符号語集合は、ｓ’１：ｓ’２：ｓ’３の出力バイアスが６：１：１であり、ｓ’１、ｓ’２およびｓ’３の発生確率が、それぞれ０．７５、０．１２５および０．１２５であることを保証する。しかし、発生頻度は、本開示に係る実施形態において実質的に任意の目標値に設定されうる。
【０１４３】
図７から図９は、バイアスがないバイアス入力文字列で、符号語集合が、任意の所望のバイアスを表すためにどのように選択されうるかを図示する。図７から図９は、決定木構造を概略的に示す。図７から図９の構造における各結合は、図６のように、”ｉｎ＝Ｓｎ？”かもしれない決定を表す。出力値が表現される各線の終端は、その特定値にそれぞれの出力を設定するステップを表す。
【０１４４】
図８は、任意のバイアスがない２進入力文字列（図９および図１０に関しても維持される推定）、および単一の決定（すなわち、１つの入力の識別）は、２つの可能な出力値ｓ’１およびｓ’２のうちの１つとして設定される出力をもたらし、これらの値のそれぞれは、ｐ＝２−１の発生確率を有する。これは、関連の入力において零または１を有することの確率、すなわちバイアスがなく、かつ２進文字列が０．５となるからである。
【０１４５】
このように、分離を考慮するとき、入力文字列における全ての入力位置で１または０のどちらかが存在する確率は、２−１または０．５である。そのため、次のレベルに移るための決定パスまたは決定のいずれかの次に続く確率は、２−１または０．５である。２回の決定の後に、特定の入力組合せに達する確率は２−２であり、ｎ回の決定の後に、特定の入力組合せに達する確率は２−ｎである。図７から図９の横線は、それぞれのレベルでの符号木上のある点（例えば、出力値に関する符号語に一致する入力文字列）に達するための確率を表す。
【０１４６】
これは、バイアスがないバイナリ入力が用いられる実施形態において、２−ｎの出力確率およびその倍数が正確に達成されうるを意味する。２−ｎの倍数以外の出力確率が要求される実施形態に関して、近似が要求される。それに応じて、３つの値のバイアスがない入力文字列が用いられる場合、３−ｎの出力確率およびその倍数が正確に達成されうる。４つの値のバイアスがない入力文字列であれば、４−ｎの出力確率およびその倍数が正確に達成されうる。このルールは、可能な入力値の任意の数に適用される。
【０１４７】
上述されるように、所望の出力確率が正確に表わされることができないとき、代わりに近似が用いられうる。図８および図９は、そのような近似の例を図示する。
【０１４８】
２つの可能な出力値ｓ’１およびｓ’２で、それぞれ約２／３および１／３の発生確率が要求されるとき、図８は可能な符号木枝構造を概略的に図示する。破線は、所望の出力確率を正確に達成するようにバイアスを設定するため、決定および枝の無限数が要求されることを図示する。しかし、実用的であるために、その終端でｓ’１を備える破線によって図８に図示されるように、実際の枝構造は、切り詰められうる。決定が実行されるほど、近似がより正確になるが、実際符号木は、計算効率の理由からあるレベルで通常切り詰められる。
【０１４９】
図８の切り詰められた枝構造に関する実際の出力確率ｐ（ｓ’１）およびｐ（ｓ’２）は、２−１＋２−３＋２−５＋２−６＝０．６７１８７５および２−２＋２−４＋２−６＝０.３２８１２５である。６つの決定または「レベル」だけが用いられるという事実にもかかわらず、これは非常に正確な近似であるとみなせる。
【０１５０】
図８の枝構造に関する消費Ｃは、出力ｓ’１およびｓ’２が単一のシンボル出力であると仮定すると、以下の通りである。  
【０１５１】
【数１６】
0006397966.tif 000017
【０１５２】
初期文字列から２ビット未満が、所望の出力分布を達成するために必要であることを意味する。  
【０１５３】
【数１７】
0006397966.tif 000018
【０１５４】
これらの値は、目標値に非常に近い。最も低い枝（破線）は左を開放するように、これらの値は１まで追加されない。この枝は、出力確率の精度をさらに向上させるためにさらに決定レベルが続いてもよい。
【０１５５】
図９の実装は、１０個の入れ子である「ＩＦ」条件を用いてもよい。これは、ハードウェア実装におけるメモリの深さにだいたい対応する。  
図１０は、実施形態にかかるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）６０の概略である。図１０の実施形態のアーキテクチャは、上述した２つの文字列発生器または２つのＱ−ＲＮＧによって運ばれる、Ｒ０ ６２およびＲ１ ６４と呼ばれる、２つの入力文字列を利用する。これらの２つの入力文字列は、２つの同様のモジュール６６および６８へ入力される。機能モジュール６６および６８のそれぞれは、入力文字列６２および６４のどちらが符号木７４に入力されるかの手段として、標準シフトレジスタ７０および７２を含む。符号木７４は、図６の実施形態において図示されるようなハフマン符号木、または代替的な実施形態の符号木に基づいてもよい。減算カウンタ７５は、符号木７４とシフトレジスタ７０および７２とに操作可能に接続される。
【０１５６】
減算カウンタ７５は、電流出力または出力値を決定するために、どれだけの入力または入力変数が、それぞれの入力文字列から用いられたかを設定する。システムはその後、シフトすべき新しいシンボルのその数を待機する。これは、減算カウンタ７５とシフトレジスタ７０および７２とによって実装される。これは、０までカウントダウンすること、または他のいくつかの予め設定された値により実装されうる。これは、出力または出力値を決定するために用いられる入力または入力値が、第２の出力または出力値を決定するために用いられないことを保証する。
【０１５７】
ＦＩＦＯメモリ部は、選択部７８において同様の第２モジュール６８からのデータでマージされる前に、第１モジュール６６に出力データを格納するために、図１０の実施形態において用いられる。選択部７８はその後最終の出力文字列８０を出力する。それは、Ｒ０ ６２およびＲ１ ６４の出力の組合せである。
【０１５８】
「Almost Empty」は、出力ＦＩＦＯに格納されたＮ個のシンボル未満であることを示す。Ｎは、通常０より大きい小さな値になる。出力制御は、どちら側を読み込むかを決定するために２つのモジュールからAlmost Emptyを用いる。一旦、出力制御がどちら側を読み込むかを決定するためにAlmost Emptyを用いた場合、Ｒｅａｄ０／Ｒｅａｄ１は、関連するＦＩＦＯメモリの関連する出力値を引き出す。
【０１５９】
Almost Emptyは、ＦＩＦＯに関して空の読み込み（アンダーフロー）を回避するために要求される。ＦＩＦＯの条件フラグを更新するために、読み込み動作から有限時間（つまりクロックサイクルの数）かかる。Ｎは、almost empty更新への読み込みのラウンドトリップのレイテンシによって決定されうる（大部分のＦＰＧＡ／ＡＳＩＣについてＮは４未満であり、ＦＰＧＡ／ＡＳＩＣの組み合わせ速度が速く、クロックが遅い場合、それは０でありえる）。しかし、ＦＩＦＯの深さは、十分なデータを予防的に読み込むことによって、アンダーフローを回避するのにかなり十分に選択されうる。
【０１６０】
代替となる実施形態は、単一のモジュールにおいて上記のものを実装してもよい。そのような実施形態は、出力シンボルレートが入力レートの値の半分より大きいと仮定して、出力クロックレートの２倍で入力クロックを設定してもよい。このように、入力および出力スループットは一致するだろう。
【０１６１】
図１１は、ＱＫＤシステムで実装される実施形態に係る２つのＦＰＧＡ文字列プロセッサ８２および８４を示す。ここに記述される実施形態に係る２つのＦＰＧＡは、図１１におけるＱＫＤシステムで実装される。あるいは、実施形態に係る１つ、３つまたは３つ以上のＦＰＧＡは、図１１のそのようなＱＫＤシステムにおいて実装されてもよい。
【０１６２】
図１１では、デコイ状態ＢＢ８４プロトコルの標準的または効率的なバージョンを実装するためのＱＫＤセットアップが描かれる。図１１の実施形態は、受信器（ボブ）へ暗号化されたキーを送る、送信器（アリス）が図示される。光源８６、または光子源は、その後、強度変調器８８を介して渡される光パルスを生成する。強度変調器８８は、デコイ状態方法を実装し、光パルスまたは光子はそれぞれ、「信号」、「おとり」または「真空」にそれぞれ対応する、多くの所定の強度｛ｕ，ｖ，ｗ｝の１つにランダムに変調され、また、これらの所定の強度は、ユーザによって決定された発生頻度｛ｆｕ，ｆｖ，ｆｗ｝で生じる。文字列プロセッサ、または実施形態に係るＦＰＧＡ文字列プロセッサ８２は、ランダム性の品質保証されたレベルでかつ所定のバイアスで（ある強度にそれぞれ一致する）３つの出力を提供する、強度変調器８８を制御するために用いられる。
【０１６３】
強度変調されたパルスはその後、入力ビームスプリッタ９０によって分割される。１つのパス（「第１パス」）ビームスプリッタ９０の後に位相変調器９２を通過する。位相変調器９２は、特定の位相で光子をランダムに変調し、その後、（この実施形態における）２つ基底｛Ｚ，Ｘ｝の１つで光子を出力する。２つの基底間の発生比率は、バイアスがあるまたはバイアスがなくてもよいし、ユーザによって予め決定されてもよい。前の場合では、ＢＢ８４プロトコルの効率的なバージョンが実現され、後の場合では、ＢＢ８４プロトコルの標準バージョンが実現される。ここに開示される発明は、バイアスがない場合を些細な特別の場合として、両方の場合をカバーすることができる。文字列プロセッサ、または実施形態に係るＦＰＧＡ文字列プロセッサ８２は、基底選択に関して位相変調器９２を制御するために用いられる。図１１の位相変調器９２における基底選択をコントロールするＦＰＧＡ８２は、強度変調器８８を制御するＦＰＧＡ８２と等価である。あるいは、異なる文字列プロセッサまたは実施形態に係るＦＰＧＡは、位相変調器９２を制御するために用いられてもよい。
【０１６４】
入力ビームスプリッタ９０からの第２パスは、光学的遅延９３を介して送信される。第１および第２パスからの光パルスまたは光子はその後、光伝送路９４およびビームスプリッタ９６および９８を介して、受信器、ボブへ送信される。アリスの偏光ビームスプリッタ９６は２つの異なるパスからの光子または偏光パルスを回転させて結合し、光伝送路９４を通ってそれらを送信する。パルスまたは光子が偏光されるとともに、ボブの偏光ビームスプリッタ９８はそれらを分離し、彼の干渉計の２つのパスにそれらを向ける。今回、光学的遅延１００を介してアリスの位相変調器９２を介して送信された光子およびパルス、および、位相変調器１０２を介してアリスの位相変調器９２を介して送信されない光子およびパルスが送られる。このようにして、パルスまたは光子は最終のビームスプリッタ１０４に同時に到達でき、干渉しうる。
【０１６５】
ボブの位相変調器１０２は、位相変調値を選択することにより、受信パルスまたは光子を測定する２つの基底のうちの１つをランダムに選択する。アリスの位相変調器９２と同様に、ボブの位相変調器１０２は、特定の位相で光子をランダムに変調し、それゆえ、（この実施形態における）２つの基底｛Ｚ、Ｘ｝のうちの１つで、検出器１０８および１１０を介して効率的に測定する。２つの基底間の発生比率は、バイアスがかかり、アリスの位相変調器９２での発生比率と等しくなるようにユーザによってあらかじめ決定される。実施形態に係るさらなるプロセッサまたはＦＰＧＡ文字列プロセッサ８４は、基底選択に関する第２変調器１０２を制御するために用いられてもよい。
【０１６６】
受信機における２つのパスはその後、出力ビームスプリッタ１０４で再び組み合わせられる。２つの光学的遅延９３および１００が適切に結合し、両方の全体経路が同じ遅延を経験することを保証するために、可変遅延線路が受信器における遅延を微調整するために用いられてもよい。
【０１６７】
光子検出器１０８および１１０はその後、２つの経路上のパルスまたは光子の間の干渉の結果を測定するために用いられ、これらの結果から、キーが抽出されてもよい。例えば、検出器１１０がクリックする場合、キービット値１が割り当てられうる一方、検出器１０８がクリックする場合、キービット値０が割り当てられうる。
【０１６８】
図１２は、品質が証明されるバイアスがない値の入力文字列が与えられる、ここに記述される実施形態に係る文字列プロセッサ１０が、
【０１６９】
【数１８】
0006397966.tif 000019
【０１７０】
での異なるバイアスがある値｛ｓ’１，ｓ’２，ｓ’ｎ｝の文字列１３をどのように出力できるか、および、そのような文字列プロセッサ１０と、
【０１７１】
【数１９】
0006397966.tif 000020
【０１７２】
での値の出力文字列｛ｓ’１，ｓ’２，ｓ’ｎ｝を出力するバイアスがある真ＲＮＧ１５とがどのように比較されうるかの概略図である。
【０１７３】
図１３ａは、出力ｓ’１およびｓ’２が出力確率ｐ（ｓ’１）＝１５／１６およびｐ（ｓ’２）＝１／１６を有する決定木構造を図示する。上に説明されるように、図１３ａに図示されるように、これらの確率は、バイナリ入力に関してここに示されるような符号木フォーマットで正確に表わされうる。バイアスがないランダムバイナリ入力に関しては、出力値ｓ’１およびｓ’２は、符号語集合ｓ’１＝０、１０、１１０および１１１０があり、ｓ’２＝１１１１を有することができる。
【０１７４】
図１３ｂは、コンピュータプログラムによって得られる予測された数学的分散を表す理想分散と比較される、符号木を用いて達成された図１３ａに係る実施形態の発生頻度のプロットを示す。確率は、２つの「まれな（rare）」ビット間の間隔に対してプロットされ、システムのバイアスは、１／１６である。それに見られるように、２つのデータセット間に非常によい一致がある。
【０１７５】
図１４は実施形態に係る文字列プロセッサ１０を示す。文字列プロセッサ１０は、処理部１２０およびメモリデバイス１２２を含む。この文書の冒頭で概説されるように、バイアスがない文字列、さまざまなアプリケーションに用いられるのに適すべきランダムビット、文字列は、以下の特性が要求される。  
（ａ）ビットの文字列は、ランダム性の品質の、ある評価可能なレベルに一致しなければならない。  
（ｂ）ビットの文字列は、ＴＲＮＧによって生成されたビットまたは値の比較可能な文字列（例えば、同じ値／ビットレートおよびバイアス）から統計的に判別不能でなければならない。  
（ｃ）出力でのビットの発生頻度（すなわち、バイアス）は、ユーザによって選択されたものに近似しなければならない。
【０１７６】
更に、付加的な効率最適化要求も考慮されうる。  
（ｄ）出力文字列中の各ビットの生成は、平均で出力文字列のエントロピーに近い入力文字列からの多くのビットを用いなければならない。
【０１７７】
実施形態に係る値またはビットの文字列に関する３つの必要条件および最適化要求を再検討すると、以下の観測が得られうる。
【０１７８】
（ａ）実施形態に係る文字列プロセッサは、バイアスがないランダム変数の入力文字列に基づく。上に議論されるように、この入力文字列は、品質評価の対象とされうる。実施形態の続く方法は、入力文字列のランダム性に影響せず、そういうものとして、バイアスがある、ランダム変数の出力文字列は、入力文字列のそれと等しい品質を有する。
【０１７９】
（ｂ）実施形態の出力の統計的分布は、数学的な理想に近似する。例は、図１３ｂに図示される。２つの分布間の近さは、変動距離（variational distance）または他の標準的統計距離を用いて正確に定量化されうる。
【０１８０】
（ｃ）図６から図９に関して上述されるように、発生確率は、ある程度の正確さ内で任意の所望の確率に設定されうる。
【０１８１】
（ｄ）符号木フォーマットを用いることにより達成される実施形態の効率は最適である。具体的には、効率は、出力文字列のエントロピーの常に２ビット以内である。
【０１８２】
特定の実施形態は、概略的に示される。多くの方法で各実施形態の詳細な実装が達成されてもよいことを認識するだろう。例えば、専用ハードウェア実装が設計され構築されてもよい。一方、プロセッサは、実施形態に関係する上述の文字列プロセッサを実装するために、記憶媒体（例えば磁気、光学、固体物理メモリに基づくデバイス）、または、コンピュータ受信可能な信号（例えば、完全なプログラムのダウンロードまたは既存のプログラムへの「パッチ」更新）のいずれかを手段として伝達されるような、コンピュータプログラムで構成されてもよい。これらの２つの立場に加えて、ＤＳＰ、ＦＰＧＡなどのような、多機能ハードウェアデバイスは、コンフィグレーション命令によって構成されうる。
【０１８３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行なうことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
0006397966.tif 000021
【図２】
0006397966.tif 000022
【図３】
0006397966.tif 000023
【図４】
0006397966.tif 000024
【図５】
0006397966.tif 000025
【図６】
0006397966.tif 000026
【図７−８】
0006397966.tif 000027
【図９】
0006397966.tif 000028
【図１０】
0006397966.tif 000029
【図１１】
0006397966.tif 000030
【図１２】
0006397966.tif 000031
【図１３ａ】
0006397966.tif 000032
【図１３ｂ】
0006397966.tif 000033
【図１４】
0006397966.tif 000034