以下本発明の実施の形態について、実施例を用い図面を参照しながら説明する。なお、実質同一部位には同じ参照番号を振り、説明は繰り返さない。
図1は光アクセスネットワークのブロック図である。光アクセスネットワーク10は、光集線装置(以下、OLT)1、光加入者装置(以下、ONT)2、スプリッタ3、OLT1とスプリッタ3との間の幹線ファイバ8およびスプリッタ3とONT2との間の加入者ファイバ9で構成されている。ONT2はIPシステム4およびTDMシステム5に接続されている。また、OLT1はIPネットワーク6およびTDMネットワーク7に接続されている。
TDMシステム5からのTDM信号は光アクセスネットワーク10を介してTDMネットワーク7に収容される。またIPシステム4からの信号は光アクセスネットワーク10を介してIPネットワーク7へと収容される。これらの信号を上り信号と呼ぶ。
また、逆にTDMネットワー7からのTDM信号は、光アクセスネットワーク10を介してTDMシステム5に収容される。またIPネットワーク6からの信号は光アクセスネットワーク10を介してIPシステム4へと収容される。これらの信号を下り信号と呼ぶ。
なお、以下説明する図7までのブロック図において、信号の流れる方向(上り、下り)は、図1に合わせている。
図2はOLTのブロック図である。幹線ファイバ8からの上り光信号は、光電変換モジュール71で電気信号に変換された後、OLT PON送受信ブロック72でGEM終端される。変換された電気信号は、GEM終端によって、イーサネット信号およびTDM信号に変換される。イーサネット信号とTDM信号は、それぞれイーサネットPHY73およびTDM PHY 74を介して、IPネットワーク6およびTDM信ネットワーク7へと送出される。
IPネットワーク6およびTDHネットワーク7から到来する下り信号は、それぞれイーサネットPHY73またはTDM PHY74で受信された後、OLT PON送受信ブロック72に送信される。OLT PON送受信ブロック72は、GEMフレーム組み立てを行った後、光電変換モジュ−ル71を介して幹線光ファイバ8へ送出される。MPU75、RAM76および制御系インターフェース77は、OLT1を制御するためのマイコン、RAMおよび外部よりOLT1に設定を行うためのインターフェースである。
図3はONTのブロック図である。加入者ファイバ9からの下り光信号は、光電変換モジュール81で電気信号に変換された後にONT PON送受信ブロック82にてGEM終端される。ONT PON送受信ブロック82は、変換された電気信号を、イーサネットフレームおよびTDM信号に変換する。イーサネットフレームおよびTDM信号は、それぞれイーサネットPHY 83およびTDM PHY84を介して、IPシステム4およびTDMシステム5へと送出される。
IPシステム4およびTDMシステム5からの上り信号は、それぞれイーサネットPHY83またはTDM PHY 84で受信された後、ONT PON送受信ブロック82に送信される。ONT PON送受信ブロック82は、GEMフレーム組み立てを行った後、光電変換モジュール81を介して、加入者ファイバ9へ送出される。MPU85、RAM86および制御系インターフェース87は、ONT2を制御するためのマイコン、RAMおよび外部よりONT2に設定を行うためのインターフェースである。
図4はOLTのPON送受信ブロックのブロック図である。光電変換モジュール71からの上りPONフレーム信号は、PON受信部90で同期処理とGEM切り出し処理を行った後に、切り出されたペイロードは、受信GEM組立部91に送信される。受信GEM組立部91は、複数の短期フレームに分割されて送信されたGEMの組み立てを行う。その後、受信GEMバッファ92に格納されて、OLT受信テーブル93のテーブル情報に応じて、OLT上りイーサネットGEM終端部94とOLT上りTDM GEM終端部96に振り分けられる。
OLT上りイーサネットGEM終端部94は、GEMフレームからイーサネットフレームを取り出し、取り出したイーサネットフレームをOLT上りイーサネットインターフェース95を介してイーサネットPHY73へと送出する。OLT上りTDM GEM終端部96は、GEMフレームからTDM信号を抜き出し、抜き出したTDM信号を所望のタイミングでOLT上りTDMインターフェース97を介してTDM PHY74へと送出する。
下り信号に関しては、OLT下りTDMインターフェース104は、TDM PHY74からTDM信号を受信する。OLT下りTDM GEM終端部103は、TDM信号をバッファリングしてGEMを生成する。OLT下りイーサネットインターフェース106は、イーサネットPHY73からのイーサフレームを受信する。OLT下りイーサネットGEM終端部105は、GEMの生成を行う。OLT送信スケジューラ102は、OLT下りTDM GEM終端部103を制御して、周期的にTDMのGEMを送信GEMバッファ101に送出する。OLT送信スケジューラ102は、また、OLT下りイーサネットGEM終端部105を制御して、空いたタイミングでイーサ信号のGEMを送信GEMバッファ101に送出する。OLT送信スケジューラ102は、送信GEMバッファ101を制御して、周期的にTDM信号のGEMとイーサ信号のGEMを送信GEM組立部100に転送する。送信GEM組立部100は、PONフレームのペイロード分のGEMを組み立て、PON送信部99に転送する。PON送信部99は、ヘッダを生成した後、PONフレームの送信を行う。
OLT1とONT2との距離測定であるレンジングを行う場合には、レンジング制御部98がレンジング信号を、OLT送信スケジューラ102により許可されたタイミングで、PON送信部99より送出する。ONT2からの応答がPON受信部90を介してレンジング制御部98に戻って<ることで、レンジングが完了する。
なお、MPUインターフェース107は、MPU75の各制御ブロックに対する制御を仲介する。
図5はONTのPON送受信ブロックのブロック図である。光電変換モジュール81からの下り信号は、PON受信部127が受信する。PON受信部127は、同期処理、GEM切り出し処理を行う。受信GEM組立部126は、複数の短期フレームに分割されて送信されたGEMの組み立てを行う。組み立てられたGEMは、受信GEMバッファ125に格納されて、ONT受信テーブル124のテーブル情報に応じて、ONT下りイーサネットGEM終端部121とONT下りTDM GEM終端部123に振り分けられる。ONT下りイーサネットGEM終端部121は、GEMからイーサネットフレームを抜き出す。イーサネットフレームは、ONT下りイーサネットインターフェース120を介して、イーサネットPHY83へ送出される。ONT下りTDM GEM終端部123は、GEMからTDM信号が抜き出し、予め定められたタイミングでONT下りTDMインターフェース122を介して、TDM PHY84へと送出される。
上り信号に関しては、ONT上りTDMインターフェース134がTDM信号を受信する。ONT上りTDM GEM終端部133は、TDM信号をバッファリングしてGEMを組み立てる。ONT上りイーサネットインターフェース136は、イーサフレームを受信する。ONT上りイーサネットGEM終端部135は、GEMの生成を行う。ONT送信スケジューラ131は、ONT上りTDM GEM終端部133を制御して、周期的にTDMのGEMを、送信GEMバッファ132に転送する。また、ONT送信スケジューラ131は、ONT上りイーサネットGEM終端部135を制御して、空いたタイミングで、イーサネットのGEMを、送信GEMバッファ132に転送する。ONT送信スケジューラ131は、送信GEMバッファ132を制御して、周期的にTDMのGEMとイーサネットのGEMを送信GEM組立部130に転送する。送信GEM組立部130は、PONフレームのペイロード分のGEMを組み立て、PON送信部129に転送する。PON送信部129は、ヘッダを生成した後、PONフレームの送信を行う。
レンジングを要求された場合には、PON受信部127で受信したレンジング要求信号をレンジング制御部128で処理し、折り返しPON送信部129を介してレンジング受信信号を送り返す。
なお、MPUインターフェース137は、MPU85の各制御ブロックに対する制御を仲介する。受信GEM組立部126は、Idle GEMを廃棄する。
図6はOLTのPON受信部とPON送信部のブロック図である。また、図7はONTのPON受信部とPON送信部のブロック図である。図6(a)において、OLT PON受信部90は、上り信号のスクランブルを解除するデスクランブラ901と、デスクランブル信号のフレーム同期を取るフレーム同期部902と、情報ワードとFEC(Forward Error Correction)パリティを分離し、情報ワードの誤り修正を行うFECデコーダ903と、PONフレーム終端部904と、暗号を復号する暗号デコーダ905とから構成される。図6(b)において、OLT PON送信部99は、GEMにIdle GEMを挿入する非暗号GEM挿入部990と、下り信号を暗号化する暗号エンコーダ991と、暗号化データをPONフレーム化するPONフレーム生成部992と、PONフレームにFECパリティを加えるFECエンコーダ993と、フレーム同期信号を挿入するフレーム同期信号挿入部994と、スクランブラ995とから構成される。
なお、非暗号GEM挿入部990は、OLT PON送信部99ではなく、送信GEM組立部100に置いても良い。
図7(a)のONT PON受信部127は、図6(a)のOLT PON受信部90と信号の流れを除いて同一構成である。また、図7(b)のONT PON送信部129は、図6(b)のOLT PON送信部99と信号の流れを除いて同一構成である。したがって、説明を省く。
なお、上り側で暗号を採用しない場合は、OLT PON受信部90の暗号デコーダ905と、ONT PON送信部129の非暗号GEM挿入部990、暗号エンコーダ991は不要である。
図8は暗号エンコード部のブロック図である。図8において、暗号エンコード部991はGEMデータを受信し、暗号化GEMデータを送信する。暗号エンコード部991は、GEMデータを受信する暗号対象判定部11と、暗号対象判定部11と接続された計算回路振分部12と、計算回路振分部12からのONU−ID(ONTのIDだが、一般にONU−IDと称する)に対して鍵を戻す暗号鍵取得部17と、計算回路振分部12によって振り分けられたGEMデータを暗号化する暗号計算部15−A、Bと、2つの暗号計算結果の一方を選択する回路選択部20と、暗号対象判定部11に接続されたデータ遅延メモリ14の出力と回路選択部20の出力の排他的論理和を演算するEXOR部21と、暗号鍵取得部17が参照する暗号鍵テーブル19と、計算回路振分部にカウンタ値を供給する暗号カウンタ18と、暗号対象判定部11が参照する暗号ON/OFFテーブル13とから構成される。暗号エンコード部991は、Port−IDとONU−IDとを対応付けるPort−ID/ONU−ID対応テーブル25含んでも良い。
暗号化は、全てGEMペイロード内の暗号ブロック単位に計算する。暗号鍵、暗号ON/OFFは、1個のGEM毎に変わり、GEM内部の暗号ブロック単位には変わらない。
暗号鍵、暗号カウンタは128bitであるが、特にそれには拘らない。AESの規格で定められるように128bit以外の96bitや256bitでもよい。また、AES暗号をカウンタモードで使用することを前提にしているが、他のモードで使用してもよい。いずれにしても暗号計算回路の規模を削減できることに変わりはない。
暗号対象判定部11は、受信GEMデータのヘッダ内のPort−ID情報をキーにして暗号ON/OFFテーブル13を参照する。暗号対象判定部11は、暗号ON/OFFテーブル13からそのGEMが暗号化対象か否かを判定する。暗号対象判定部11は、データ遅延メモリ14に対して、GEMデータと共に判定結果(暗号対象情報)を渡す。暗号化対象と判定したとき、暗号対象判定部11は、計算回路振分部12に対して暗号化実行指示、Port−ID、 ONU−IDを受け渡す。ONU−IDは、前段のGEMヘッダを付与する送信GEM組立部100から貰ってもよいし、この暗号エンコード部991でPort−IDからONU−IDを割り出してもよい。後者の場合はPort−ID/ONU−ID対応テーブル25から割り出す。
計算回路振分部12は、暗号対象判定部11からの暗号化実行指示なされた場合、該当GEMに被せるべき暗号パターンを計算させる。計算回路振分部12は、暗号鍵取得部17にONU−IDを出して対応するONUの暗号鍵を受け取る。また、計算回路振分部12は、暗号カウンタ18から暗号カウンタ値を受け取る。計算回路振分部12は、暗号鍵取得部17にONU−IDを渡す代わりにPort−IDを渡してもよい。
計算回路振分部12は、2面ある暗号計算部15−A、Bのうち、計算開始可能な方に、暗号鍵、暗号カウンタ値を受け渡して、計算開始を指示する。単純に交互に暗号計算A、暗号計算Bを使ってもよい。計算回路振分部12は、暗号ブロック単位のタイミングで振り分ける。
暗号鍵取得部17は、計算回路振分部12からのONU−IDから、暗号鍵テーブル19を参照して暗号鍵を取得する。ONU−IDの代わりにPort−IDを受け取る場合は、暗号鍵取得部17は、Port−ID/ONU−ID対応テーブル25を参照してONU−IDを割り出した後、暗号鍵テーブル19を参照して暗号鍵を取得する。
暗号カウンタ部18は、AES暗号をカウンタモードで使用するためのカウンタ値を生成し、計算回路振分部12に受け渡す。暗号カウンタ部18のカウンタ値の生成条件は、ITU−T勧告G.984.3で規定されるように、 GEMがマッピングされるPONフレームのスーパーフレームカンタ値と、そのPONフレーム内にGEMヘッダがマッピングされるタイムスロットから一意に決まる値である。
暗号計算部15は、AES規格にもとづきカウンタモードで暗号計算を行う。128bitの暗号カウンタ値、128bitの暗号鍵を入力し、所定の時間後(Pクロック後)に128bitの暗号パターンを生成出力する。Pは、AES方式上のラウンド計算数10以上の時間がかかり、通常は10〜12クロック周期である。この時間はカウンタモードに依存しない。
回路選択部20は、暗号計算部15−Aからの出力、暗号計算部15−Bからの出力を選択する。回路選択部20は、計算回路振分部12で振り分けたスキームに応じて選択する。
計算回路振分部での振り分けタイミングと、回路選択部での選択タイミングは、暗号計算に必要な所定時間分だけズレたものである。
データ遅延メモリ14は、暗号計算に要する一定の固定時間分だけ受信GEMデータ、暗号対象情報をバッファリングし遅延させて出力する。
EXOR部21は、GEMデータが暗号化対象の際は、回路選択部20からの暗号パターンとデータ遅延メモリ14からのGEMデータとをビット毎に排他的論理和を行う。GEMデータが暗号化対象ではない際は、排他的論理和を行わずGEMデータをそのまま出力する。どちらかはデータ遅延メモリ14からGEMデータと共に受信する暗号対象情報から決める。暗号ブロックが16バイトよりも短い場合は、EXOR部21は、暗号パターンのうち、上位側のビットから暗号ブロック長に等しいビット分だけが有効で、暗号ブロックのデータと排他的論理和を行う。残りの暗号パターンのビットは無視する。
図9ないし図11を参照して、非暗号GEM挿入部を説明する。ここで、図9はGEM長からIdle GEM挿入を判定する非暗号GEM挿入部のブロック図である。図10は暗号ブロック積算値から非暗号GEM挿入を判定する非暗号GEM挿入部のブロック図である。図11は鍵型検出付きの非暗号GEM挿入部のブロック図である。
図9において、非暗号GEM挿入部990Aは、送信GEM組立部100からのGEMデータを受信し、送信GEMデータを暗号エンコード部に送信する。非暗号GEM挿入部990Aは、GEMデータを受信する次送信GEM遅延メモリ31、GEM長検出部32、暗号対象検出部34と、送信GEM選択部38と、Idle GEM生成部35と、送信スケジュール部37とから構成される。
非暗号GEM挿入部990Aは、GEM毎にIdle GEMをパディング挿入するか否かを判定し、挿入する。非暗号GEM挿入部990Aは、判定に際してはGEM長を用いる。暗号鍵、暗号ON/OFFは、1個のGEM毎に変わり、1個のGEM内部の暗号ブロック単位には変わらない。
次送信GEM遅延メモリ31は、受信したGEMデータに対して、送信GEM選択部での判定を経て実際に出力するまでの間、待ち合せるために受信GEMデータをバッファリングする。次送信GEM遅延メモリ31は、GEMデータの到着順にバッファリングし、出力する。次送信GEM遅延メモリ31のバッファリング時間(入力から出力までの遅延時間)は、一定ではなく、Idle GEMを何個パディング挿入したか、GEMデータを受信しなかった時間の累計によってダイナミックに変化する。したがって、次送信GEM遅延メモリ31は、ある程度ダイナミックに変化しても溢れないだけの十分なメモリ容量を持つ。
GEM長検出部32は、受信GEM長(GEMヘッダ先頭からGEMペイロード末尾までの長さ)を検出し、送信GEM選択部38に渡す。検出方法は、以下がある。
・受信したGEMデータ内のGEMヘッダ内のPLIフィールドからGEM長を取得する。
・送信GEM組立部100から組み立てたGEMの長さをGEMデータとともに非暗号対象GEM挿入部990に通知する。
・送信GEM組立部100から組み立てたGEMの長さをGEMデータに先立って予め非暗号対象GEM挿入部990に通知する。この場合、次送信GEM遅延メモリ31は不要となる。
暗号対象検出部34は、後段の暗号エンコード部内の暗号対象判定部と同様に、受信GEMデータのヘッダ内のPort−IDをもとにして暗号ON/OFFテーブルを参照して、そのGEMが暗号化対象か否かを判定する。送信GEM選択部に、判定結果(暗号対象情報)を受け渡す。
Idle GEM生成部35は、5バイトの固定パターンからなるIdle GEMを生成する。常時40bit分生成し、全て同時に(並列に)送信GEM選択部に受け渡してもよいし、あるいは送信GEM選択部からの指示を契機に生成してもよい。いずれにしても固定パターンなので生成時間は無視できる。
送信スケジュール部37は、送信GEM選択部で判定した受信GEMデータ、Idle GEMの送信スケジュールを保持する。次送信GEM遅延メモリにバッファリングされている何番目の受信GEMデータの後にIdle GEMを挿入しない/何個挿入する、の形で保持する。
送信GEM選択部38は、GEM長検出部32から取得した受信GEM長から、受信したGEMデータの後にIdle GEMをパディングするか否かを判定する。パディングすると判定した場合は、次送信GEM遅延メモリ31からGEMデータを読み出して出力した直後に、Idle GEM生成部で生成したIdle GEMを挿入する。
送信GEM選択部38がGEMを実際に送信するタイミングは、前GEM(パディングしたIdle GEMも含む)の送信完了後であり、それまでのパディング量の累計に応じて、判定したタイミングからかなり後にズレうる。この間該当GEMデータ列は次送信GEM遅延メモリ31にバッファリングされる。そして、送信GEM選択部38は、どのGEMの後に何個Idle GEMをパディングするかの情報を保持する。
図10において、非暗号GEM挿入部990Bは、図9の非暗号GEM挿入部990Aに、さらに暗号ブロック長計算部33と、送信GEM暗号ブロック長記憶部36とを加えた構成である。
非暗号GEM挿入部990Bは、GEM毎にIdle GEMをパディング挿入するか否かを判定し、挿入する。非暗号GEM挿入部990Bは、判定に際しては暗号ブロック単位の積算値を用いる。暗号鍵、暗号ON/OFFは、1個のGEM毎に変わり、1個のGEM内部の暗号ブロック単位には変わらない。
次送信GEM遅延メモリ31は、受信したGEMデータに対して、送信GEM選択部での判定を経て実際に出力するまでの間、待ち合せるために受信GEMデータをバッファリングする。次送信GEM遅延メモリ31は、GEMデータの到着順にバッファリングし、出力する。次送信GEM遅延メモリ31のバッファリング時間(入力から出力までの遅延時間)は、一定ではなく、Idle GEMを何個パディング挿入したか、やGEMデータを受信しなかった時間の累計によってダイナミックに変化する。したがって、次送信GEM遅延メモリ31は、ある程度ダイナミックに変化しても溢れないだけの十分なメモリ容量を持つ。
次送信GEM遅延メモリ31は、送信GEM選択部38からの読み出し指示で1個のGEM単位に出力する。
GEM長検出部32は、受信GEM長(GEMヘッダ先頭からGEMペイロード末尾までの長さ)を検出し、暗号ブロック長計算部33に渡す。以下に可能な受信GEM長検出方法を挙げる。
・受信したGEMデータ内のGEMヘッダ内のPLIフィールドからGEM長を取得する。
・送信GEM組立部100から組み立てたGEMの長さをGEMデータとともに非暗号対象GEM挿入部に通知する。
・送信GEM組立部100から組み立てたGEMの長さをGEMデータに先立って予め非暗号対象GEM挿入部に通知する。この場合、次送信GEM遅延メモリ31は不要となる。
暗号ブロック長計算部33は、GEM長検出部32から受け取ったGEM長から、暗号ブロックの構造を計算し、送信GEM選択部38に受け渡す。
暗号ブロックの構造は、図17〜図20を用いて後述するように、GEMペイロードを16バイト毎に区切ったもので、通常は16バイトであるが、GEM長が可変であるため、1つのGEMの最後の暗号ブロックは1バイト以上16バイト以下の任意の値となりうる。
暗号対象検出部34は、後段の暗号エンコード部991内の暗号対象判定部11と同様に、受信GEMデータのヘッダ内のPort−IDをもとにして暗号ON/OFFテーブル13を参照して、そのGEMが暗号化対象か否かを判定する。暗号対象検出部34は、送信GEM選択部38に、判定結果(暗号対象情報)を受け渡す。
Idle GEM生成部35は、5バイトの固定パターンからなるIdle GEMを生成する。常時40bit分生成し、全て同時に(並列に)送信GEM選択部に受け渡してもよいし、あるいは送信GEM選択部からの指示を契機に生成してもよい。いずれにしても固定パターンなので生成時間は無視できる。
送信GEM暗号ブロック長記憶部36は、送信GEM選択部38において送信を決定した最も新しい暗号対象GEMの、最後の暗号ブロックを含む最新のQ個分の暗号ブロックの長さと総和Σを送信GEM選択部から受け取り、保持する。送信GEM暗号ブロック長記憶部36は、この保持値をGEM選択部38に受け渡す。
送信スケジュール部37は、送信GEM選択部38で判定した受信GEMデータ、Idle GEMの送信スケジュールを保持する。次送信GEM遅延メモリにバッファリングされている何番目の受信GEMデータの後にIdle GEMを挿入しない/何個挿入する、の形で保持する。
送信GEM選択部38は、送信スケジュール部からの送信スケジュール情報に基づいて受信GEMデータ、Idle GEMを送信する。受信GEMデータの場合、送信GEM選択部38は、次送信GEM遅延メモリから該当するGEMデータを読み出し、出力する。Idle GEMの場合、送信GEM選択部38は、Idle GEM生成部で生成したIdle GEMを出力する。
GEMデータを読み出す際、送信GEM選択部38は、次送信GEM遅延メモリ31に読み出し指示を行って1個のGEM単位で読み出す。
送信GEM選択部38は、暗号ブロック長計算部33から取得した受信GEMデータの暗号ブロックの構造と、送信GEM暗号ブロック長記憶部36から取得した過去Q個分(Qは以下で定義)の暗号ブロックの各々の長さL1〜LQとL1〜LQに挟まれたgemhとの総和Σとから、受信したGEMデータをそのまま送信するか、あるいはIdle GEMを挿入するかを判定する。
その際の判定条件は、過去Q個の暗号ブロックの先頭の暗号ブロックの開始位置から、受信GEMデータの最初の暗号ブロックSに達するまでのクロック周期の数Tsが所定値P以上か否か等で決める。ここで、TsはΣとgemhとの加算値である。また、gemhはGEMヘッダ受信に要するクロック周期の数である。
送信GEM選択部38は、判定した結果を送信スケジュール部に受け渡して送信スケジュール情報を更新、記憶する。
送信GEM選択部38は、送信を決定した最も新しいGEMに対して、最後の暗号ブロックを含む最新のQ個分の暗号ブロックの各々の長さL1〜LQとL1〜LQに挟まれたgemhとの総和Σを計算して、送信GEM暗号ブロック長記憶部36に受け渡す。
このGEMの暗号ブロック数が1個等の少ない場合は、1個前のGEM、さらには2個前のGEM迄等、過去複数個のGEMに跨りうる。
なお、新たに送信を決定したGEMが非暗号対象GEMまたはIdle GEMだった場合、送信GEM選択部38は、過去Q個分の最後の暗号ブロック長LQと総和Σに、新たなGEMの長さLgemまたはgemhを加算したものを最新のQ個分の新たなΣとして更新し、送信暗号ブロック長記憶部38に受け渡す。
上述した説明でQは、以下の通りである。
暗号エンコード部991の暗号計算部15が1面の場合:Q=1
暗号エンコード部991の暗号計算部15が2面の場合:Q=2 図8に該当
暗号エンコード部991の暗号計算部15が3面の場合:Q=3
図11において、非暗号GEM挿入部990Cは、図9の非暗号GEM挿入部990Aまたは図10の非暗号GEM挿入部990Bに鍵型検出部39を追加した構成である。このため、非暗号GEM挿入部990Aと非暗号GEM挿入部990Bとの間で共通でない、暗号ブロック長計算部33、送信GEM暗号ブロック長記憶部36は、破線で囲まれたブロックとして、表現されている。
16ビット並列回路で発生するGEM間の鍵型構造を常に一定に保つために、非暗号GEM挿入部990Cは、Idle GEMをパディングして補正する。具体的には、非暗号GEM挿入部990Cは、Idle GEMが5バイトと奇数長であることを利用する。
非暗号GEM挿入部990、暗号エンコード部991を16ビット並列回路で構成した場合、後述する図19、図20に示すように暗号ブロック、GEMヘッダが鍵型になる。しかもそれがGEMの長さが可変であることから、GEM毎に先頭が上位バイト位置から始まる場合と、下位バイト位置から始まる場合があり、鍵型の構造が動的に変化する。
鍵型の構造が動的に変化することをケアすると回路規模が増大する。このため、鍵型の構造を動的に変化させず固定化するため、鍵型の発生を検出して、非暗号GEM挿入部990Cは、Idle GEMをパディング挿入することで一定の鍵型に抑える。
これによって、鍵型に対するケアを最小限に留めて回路を簡易化できる。常に図19の状態のようにGEM先頭を上位バイト位置にするには、受信したGEM先頭が下位バイト位置の場合に、非暗号GEM挿入部990Cは、Idle GEMを割り込み挿入し、受信したGEM先頭が上位バイト位置から始まるようにすればよい。
また、逆に常に図20の状態のようにGEM先頭を下位バイト位置にするには、受信したGEM先頭が上位バイト位置の場合に、非暗号GEM挿入部990Cは、Idle GEMを割り込み挿入し、受信したGEM先頭が下位バイト位置から始まるようにすればよい。
鍵型検出部39は、受信したGEM先頭が鍵型で始まったか否か、つまり16ビットの中の下位バイト位置から始まったか否かを検出し、送信GEM選択部38に受け渡す。
送信GEM選択部38は、非暗号GEM挿入部990Aまたは非暗号GEM挿入部990Bでの判定条件に加え、暗号対象検出部34からの暗号対象情報と、鍵型検出部39からの鍵型発生情報から該当GEMの前にIdle GEM挿入するか否かを判定し、挿入する。
非暗号GEM挿入部990Cは、次のいずれかに決めて、受信した暗号対象GEMの先頭位置での鍵型構造を一定にすればよい。
・該当GEMが暗号対象でかつ、該当GEM先頭で鍵型発生した場合、該当GEM の前にIdle GEM挿入する。
・該当GEMが暗号対象でかつ、該当GEM先頭で鍵型発生しなかった場合、該当GEM の前にIdle GEM挿入する。
もしくは、鍵型検出部からの鍵型発生情報とGEM長検出部からのGEM長から該当GEMが鍵型で終了するか否か、つまり16ビットの中の上位バイト位置で終了するか否かを検出し、非暗号GEM挿入部990Cは、該当GEMの後にIdle GEMをパディング挿入するか否かを判定してもよい。この場合は暗号対象か否かに関わらない。
この場合も次のいずれかに決めておけばよい。次以降に受信する暗号対象GEMの鍵型構造が一定に成型できればよい。
・GEMが鍵型で終了する場合に該当GEMの後にIdle GEMをパディング挿入する。後述する図35は、これを前提としている
・GEMが鍵型で終了しない場合に該当GEMの後にIdle GEMをパディング挿入する。
この判定は、図9、図10を用いた説明での判定条件とは独立であり、図10の判定でIdle GEMパディング挿入しない、の判定でも当判定条件でパディング挿入する、であればパディング挿入する。その逆も同じである。
図12ないし図16を参照して、各機能ブロックが参照する参照テーブルを説明する。ここで、図12は暗号ON/OFFテーブルを説明する図である。図13は暗号ON/OFFテーブルの補助テーブルを説明する図である。図14は暗号鍵テーブルを説明する図である。図15は暗号鍵テーブルの補助テーブルを説明する図である。図16はPort−ID/ONU−IDテーブルある。
図12において、暗号ON/OFFテーブル13は、番地と内容とから構成され、番地を指定した読み出し要求に対して、当該番地の内容を出力する。番地の最大数は4096であり、サポートするPort−ID数分持てばよい。内容は、番地に該当するGEMの暗号ON/OFFである。Port−IDと番地との対応は、Port−ID番号が番地番号に等しくなるような固定的な対応でも良く、Port−ID番号と番地番号を図13の補助テーブル13aで設定しても良い。
図13において、暗号ON/OFFテーブルの補助テーブル13aは、番地と内容とから構成され、番地を指定した読み出し要求に対して、当該番地の内容を出力する。番地の最大数は4096であり、サポートするPort−ID数分持てばよい。内容は、番地(Port−ID)に該当する暗号ON/OFFテーブルの番地である。
図14において、暗号鍵テーブル19は、番地と内容とから構成され、番地を指定した読み出し要求に対して、当該番地の内容を出力する。番地の最大数は64であり、サポートするONU−ID数分持てばよい。内容は、番地に該当するONUの暗号鍵である。ONU−IDと番地との対応は、ONU−ID番号が番地番号に等しくなるような固定的な対応でも良く、ONU−ID番号と番地番号を図15の補助テーブル19aで設定しても良い。
図15において、暗号鍵テーブルの補助テーブル19bは、番地と内容とから構成され、番地を指定した読み出し要求に対して、当該番地の内容を出力する。番地の最大数は64であり、サポートするONU−ID数分持てばよい。内容は、番地(ONU−ID)に該当する暗号鍵テーブルの番地である。
図16において、Port−ID/ONU−IDテーブル25は、番地と内容とから構成され、番地を指定した読み出し要求に対して、当該番地の内容を出力する。番地の最大数は4096であり、サポートするPort−ID数分持てばよい。内容は、番地に該当するGEMの送信先ONT2のONU−IDである。しかし、同時に複数個のONT2へのマルチキャスト送信用のPort−IDをもつGEMについては、ONU−IDではなく、マルチキャストであることを示す内容(例えばオール”1”)を格納する。マルチキャスト送信用のPort−IDは複数個もありうる。
図17ないし図20を参照して、GEMのフォーマットと信号の流れを説明する。ここで、図17は、各1バイトはシリアルな8ビットのシーケンスのときの、GEMのフォーマットと暗号ブロックを説明する図である。図18は、各1バイトはパラレルな8ビットのシーケンスのときの、GEMのフォーマットと暗号ブロックを説明する図である。図19は、各2バイトはパラレルな16ビットのシーケンスであり、GEM先頭が上位バイト側で、GEM長が奇数のときの、GEMのフォーマットと暗号ブロックを説明する図である。図20は、各2バイトはパラレルな16ビットのシーケンスであり、GEM先頭が下位バイト側で、GEM長が偶数のときの、GEMのフォーマットと暗号ブロックを説明する図である。
図17において、GEMは、GEM先頭から5バイトがGEMヘッダで、GEMヘッダに引き続く1バイト〜4090バイトがGEMペイロードである。暗号ブロック長は16バイトであり、暗号ブロック#1〜#m−1は16バイトであるが、最後の暗号ブロック#mはk(1≦k≦16)バイトである。
図18は、図17のシリアルデータをパラレルデータにしたのみの違いである。
図19において、GEM先頭が上位バイト側であるため、固定長5バイトのGEMヘッダは、上位バイト側で終了する。本明細書では、このように上位バイト側での終了または下位バイト側での開始を鍵型と呼ぶこととする。また、GEM長が奇数なのでGEM末尾が上位バイト側で終わり、鍵型となる。また、暗号ブロック#1〜#mはいずれも鍵型である。なお、GEM末尾のタイミングの下位バイトは、次のGEMの先頭である。
図20において、GEM先頭が下位バイトであり、GEMヘッダは鍵型を呈する。GEM長が偶数なので暗号ブロック#mが鍵型となる。GEM先頭の上位バイトは前のGEMの末尾である。
図21および図22を参照して、暗号計算面の必要面数を説明する。ここで、図21は8ビット並列回路のAES−128暗号計算面の必要面数を説明する図である。図22は16ビット並列回路のAES−128暗号計算面の必要面数を説明する図である。
図21において、AES−128は10回のラウンド計算を要するので、1クロックで1回のラウンド計算を行い、データの取り込みにも1クロック必要なので、P=11となる。暗号対象であるGEM#1は、5バイトのヘッダ、16バイトの暗号ブロック#1、1バイトの暗号ブロック#2から構成され、GEM#2〜GEM#5は、いずれも5バイトのヘッダと1バイトの暗号ブロック#1とから構成されている。ここでは、1クロックで1バイト処理する8ビット並列回路なので、1バイトは1クロックと等しく、GEM#1の暗号ブロック#1は16クロック周期以内で暗号計算B面で処理できる。しかし、GEM#1の暗号ブロック#2以降の暗号ブロックは、いずれも1バイトなので、ヘッダ5バイトを考慮して、暗号計算の面数は2面((5+1)x2=12>11))必要となる。
図22において、1クロックで2バイト処理する16ビット並列回路では、1クロック=2バイトとなり、ヘッダの処理に2.5クロック、16バイトの暗号ブロックは8クロック(2.5+8=10.5<11)となり、暗号処理部は1つでは、足りないことが明らかである。暗号ブロックが1バイト(0.5クロック)のGEMが連続するケースを想定すると少なくとも4面((2.5+0.5)x4=12>11))必要となる。
なお、図21および図22において、AES−128とは鍵長の異なるAES−192(鍵長192bit)、AES−256(鍵長256bit)はラウンド計算も12回、14回と異なるため、暗号計算の面数が、変わってくる。
図23ないし図27を参照して、暗号計算部の削減方法を説明する。ここで、図23は暗号対象GEMの長さに基づくIdle GEM挿入による2面化を説明する図である。図24は暗号対象GEMの長さに基づくIdle GEM挿入による3面化を説明する図である。図25は暗号ブロックの積算情報を元に非暗号対象GEM挿入による1面化を説明する図である。図26は暗号ブロックの積算情報を元に非暗号対象GEM挿入による2面化を説明する図である。図27は暗号ブロックの積算情報を元に非暗号対象GEM挿入による3面化を説明する図である。
図23において、受信GEMデータ列、送信GEMデータ列は、図6または図7の非暗号GEM挿入部990が、受信/送信するデータである。非暗号GEM挿入部990は、受信GEMデータ列にIdle GEMを挿入し、短い符号ブロックを意図的に長くして、暗号計算に余裕を持たせる。
ここで、受信GEMデータ列のGEM#1〜#4は全て暗号対象とする。非暗号GEM挿入部990は、暗号対象のGEM#iの長さLgem−i(クロック周期数での換算)が所定の値Rに満たない場合、次のGEM#jの開始までの時間Lgem−i’(クロック周期数)が所定の値R以上になるように、GEM#iとGEM#jの間に1個以上のIdle GEMをパディング挿入する。図23では、非暗号GEM挿入部990は、GEM#2、#3の長さLgem−2、Lgem−3がR未満なので、各々次のGEM#3、#4の開始までの時間Lgem−2’、Lgem−3’がR以上になるように、Idle GEMを挿入する。
なお、暗号対象でないGEM、あるいは長さがR以上のGEMについては、Idle GEMのパディング挿入は不要である。
ここで、
P:暗号計算に必要なクロック周期の数
R:P≦12のとき、R≧(P÷2)を満たす値
P>12のとき、R>(P−6)を満たす値である。
8bit並列回路の場合、1クロック周期で1バイトのデータを処理するので、クロック周期数はバイト数に等しい。16bit並列回路の場合、1クロック周期で2バイトのデータを処理するので、クロック周期数はバイト数の半分に等しい。バイト数が奇数の場合、Lgem−2’等は小数点以下を切り捨ててR以上かを判定する。
8bit並列回路の場合は、全てのLgem−iは6以上であるため、P≦12の暗号計算回路であればIdle GEMのパディング挿入は不要である。16bit並列回路の場合は、全てのLgem−i は3以上であるため、P≦6の暗号計算回路であればアイドルGEMのパディング挿入は不要である。
この方法によって、GEM#2と#3の間にパディング挿入することで、斜線部の時間が出現し、暗号計算A面でのオーバラップを回避できる。
なお、図23では、実はGEM#3と#4の間にはパディング挿入しなくても問題はない。これは、GEMの長さだけでパディング判定していることに起因する。
図24において、受信GEMデータ列、送信GEMデータ列は、図6または図7の非暗号GEM挿入部990が、受信/送信するデータである。非暗号GEM挿入部990は、受信GEMデータ列にIdle GEMを挿入し、短い符号ブロックを意図的に長くして、暗号計算に余裕を持たせる。
ここで、受信GEMデータ列のGEM#1〜#4は全て暗号対象とする。非暗号GEM挿入部990は、暗号対象のGEM#iの長さLgem−i(クロック周期数での換算)が所定の値Rに満たない場合、次のGEM#jの開始までの時間Lgem−i’(クロック周期数)が所定の値R以上になるように、GEM#iとGEM#jの間に1個以上のIdle GEMをパディング挿入する。図24では、非暗号GEM挿入部990は、GEM#2、#3の長さLgem−2、Lgem−3がR未満なので、各々次のGEM#3、#4の開始までの時間Lgem−2’、Lgem−3’がR以上になるように、Idle GEMを挿入する。
なお、暗号対象でないGEM、あるいは長さがR以上のGEMについては、後ろにアイドルGEMのパディング挿入は不要である。
ここで、
R:P≦18のとき、R≧P÷3
P>18のとき、R>(P−6)÷2である。
8bit並列回路の場合 1クロック周期で1バイトのデータを処理するので、 クロック周期数はバイト数に等しい。16bit並列回路の場合、1クロック周期で2バイトのデータを処理するので、クロック周期数はバイト数の半分に等しい。バイト数が奇数の場合、Lgem−2’等は小数点以下を切り捨ててR以上かを判定する。
8bit並列回路の場合は、全てのLgem−iは6以上であるため、P≦18の暗号計算回路であればアイドルGEMのパディング挿入は不要である。16bit並列回路の場合は、全てのLgem−iは3以上であるため、P≦9の暗号計算回路であればアイドルGEMのパディング挿入は不要である。
この方法によって、GEM#2と#3の間にパディング挿入することで、斜線部の時間が出現し、暗号計算C面でのオーバラップを回避できる。
なお、図23と同様に、図24でも、実はGEM#3と#4の間にはパディング挿入しなくても問題はない。これも、GEMの長さだけでパディング判定していることに起因する。
図25において、非暗号GEM挿入部990は、次の暗号ブロックまでの長さT1、T1’、T1”、…がPクロック周期分以上になるように非暗号対象のGEMを単数個または複数個挿入する。つまり1個のGEM毎に、それまでの1個の暗号ブロック長を元に、非暗号対象のGEMを挿入するか否かを判定する。ここで、非暗号対象のGEMとは、受信したGEMデータで暗号対象でないもの、またはIdle GEMである。また、ヘッダ部分は前の暗号ブロックに加算する。
このような非暗号GEM挿入部990の後段の暗号エンコーダ991は、暗号計算は1面で構わない。
図26において、非暗号GEM挿入部990は、2個先の暗号ブロックまでの各々の長さT2、T2’、T2”、…がPクロック周期分以上になるように非暗号対象のGEMを単数個または複数個挿入する。つまり1個のGEM毎に、それまでの2個の暗号ブロック長の積算値を元に、非暗号対象のGEMを挿入するか否かを判定する。なお、ヘッダ部分は前の暗号ブロックに加算する。
このような非暗号GEM挿入部990の後段の暗号エンコーダ991は、暗号計算は2面で構わない。また、過去2暗号ブロックの積算値に基づいているので、図23、図24で説明した不要なパディングが発生しない。
図27において、非暗号GEM挿入部990は、3個先の暗号ブロックまでの各々の長さT3、T3’、T3”、…がPクロック周期分以上になるように非暗号対象のGEMを単数個または複数個挿入する。つまり1個のGEM毎に、それまでの3個の暗号ブロック長の積算値を元に、非暗号対象のGEMを挿入するか否かを判定する。なお、ヘッダ部分は前の暗号ブロックに加算する。
このような非暗号GEM挿入部990の後段の暗号エンコーダ991は、暗号計算は3面で構わない。
図28ないし図32を参照して、送信GEM選択部の判定の詳細を説明する。ここで、図28は、Ts<Pを判定してIdle GEMを挿入する動作を説明する図である。図29は、GEMデータ受信なしを判定してIdle GEMを挿入する動作を説明する図である。図30は、非暗号対象のGEMを受信したことを判定したときの動作を説明する図である。図31は、鍵型を判定してIdle GEMを挿入する動作を説明する図である。図32は、鍵型を考慮してTs<Pを判定してIdle GEMを挿入する動作を説明する図である。
図28において、前提としてQ=2(暗号計算部2面)、受信GEMデータ列のGEM#1、#2、#3、#4は全て暗号対象とする。また、横軸は時間経過、縦軸は判定順序である。
送信GEM判定部38は、GEM#2の送信判定をGEM#2の送信前に実施する。L1はGEM#1の暗号ブロック#1の長さ、L2は暗号ブロック#2の長さ、Q=2なのでΣ=L1+L2、Ts=Σ+gemhとなる。ここでは、Ts≧Pなので、送信GEM判定部38は、GEM#2をそのまま暗号エンコード部991に送信する。送信GEM判定部38は、ここでパラメータを更新する。なお、この更新をパラメータ更新B1と呼ぶ。すなわちL1をGEM#1の暗号ブロック#2の長さ(新L1←旧L2)、L2をGEM#2の暗号ブロック#1の長さ、Σ=L1+L2+αとする。ここでαはGEM#2のヘッダ長なのでgemhである。
送信GEM判定部38は、GEM#3の送信判定をGEM#3の送信前に実施する。Σは演算済みなので、送信GEM判定部38は、Ts=Σ+gemhを求める。ここでは、Ts<Pなので、送信GEM判定部38は、Idle GEM数を演算する。ここではn個とすると、送信GEM判定部38は、n個のIdle GEMを暗号エンコード部991に送信する。なお、Idle GEMをパディング完了まで、GEM#3はバッファリング状態にある。送信GEM判定部38は、n個のIdle GEMをパディング完了して、はじめてGEM#3を送信する。送信GEM判定部38は、ここでパラメータを更新する。なお、この更新をパラメータ更新Aと呼ぶ。すなわちL1をGEM#2の暗号ブロック#1の長さ(新L1←旧L2)、L2はGEM#3の暗号ブロック#1の長さ、Σ=L1+L2+α+nxgemhとなる。ここでnxgemhはIdle GEM長である。
Idle GEMパディング中にさらに次のGEM#4、GEM#5、…も到着している。これらは到着したタイミングで判定すればよい。あるいはこれら各々のGEMの暗号化対象、暗号化構造の情報を一次保持しておき、適当なタイミング(前GEM#3の送信開始タイミング)で判定してもよい。図34のフローチャートは前者で、前GEM#3の受信完了まで待って、新たにGEM受信があるかないかを判定する
送信判定後のGEMデータ列は、GEM#3までの送信スケジュールが確定している。破線で示すGEM#4は、このデータ列のままで送信するか否かは未だ確定していない状態にある。
Idle GEMを送信することを確定した時には、直前のGEM#2の送信状態は送信待機中か、送信中か、または丁度送信完了したか、のいずれかであり、それはさらに前のGEM#1の送信状態で決まる。GEM#1が送信待機中か、送信中であれば、GEM#2は送信待機中だし、GEM#1が既に送信完了していればGEM#2は送信中か、または丁度送信完了したかのいずれかである。
Idle GEMをパディングして送信するのはGEM#2を送信完了してからである。GEM#2やIdle GEMが待機中でも、次のGEM#3の送信判定を行うので、送信スケジュール情報(GEMを送る順序、そのGEMの後にパディングするIdle GEMの個数)は待ち合わせが発生しうるGEMの個数分だけ保持が必要である。
図29において、前提としてQ=2(暗号計算部2面)、受信GEMデータ列のGEM#1、#2、#3は全て暗号対象とし、GEM#2と#3の間にGEMを受信しなかったとする。なお、最初のパラメータ更新B1までは図28の説明と同様なので省略する。
GEM#2の受信後、次のGEMを受信していないとき、送信GEM判定部38は、GEM未受信のためIdle GEM挿入と判定する。送信GEM判定部38は、ここでパラメータを更新する。なお、この更新をパラメータ更新Cと呼ぶ。すなわちL1をGEM#1の暗号ブロック#2の長さのまま(新L1←旧L1)、L2はGEM#2の暗号ブロック#1の長さ+gemh(新L2←旧L2+gemh)、Σ=L1+L2+α+gemh(新Σ←旧Σ+gemh)となる。
Idle GEM挿入後、次のGEMを受信していないとき、送信GEM判定部38は、GEM未受信のためIdle GEM挿入と判定し、上記を繰り返す。
一方、GEM#3を受信したとき、送信GEM判定部38は、Tsを演算する。ここでは、Ts≧Pなので、送信GEM判定部38は、GEM#3をそのまま暗号エンコード部991に送信する。送信GEM判定部38は、ここでパラメータ更新B1を実施する。
パラメータ更新Cでは、挿入するIdle GEM分の長さ(gemh)を旧L2、旧Σに加算して更新しているが、パラメータ更新Aと同様に計算してもよい。この場合、L1とL2を更新せず、Idle GEMの挿入のk個目を判定した時点ではパラメータ更新Aにおけるnにkを代入してΣを計算する。
図30において、前提としてQ=2(暗号計算部2面)、受信GEMデータ列のGEM#1、#2、#4は全て暗号対象とし、GEM#3は非暗号対象とする。なお、最初のパラメータ更新B1までは図28の説明と同様なので省略する。
送信GEM判定部38は、GEM#3を受信したとき、暗号対象でないことを検出して、そのまま暗号エンコード部991に送信する。送信GEM判定部38は、ここでパラメータ更新B2を実施する。パラメータ更新B2では、GEM#3分の長さ(Lgem)を旧L2、旧Σに加算して更新する。
GEM#4を受信したとき、送信GEM判定部38は、Tsを演算する。ここでは、Ts≧Pなので、送信GEM判定部38は、GEM#4をそのまま暗号エンコード部991に送信する。送信GEM判定部38は、ここでパラメータ更新B1を実施する。
パラメータ更新B2は、パラメータ更新B1と同様に計算してもよい。この場合、L1とL2を更新せず、Lgemをαに含めて「L1+L2+α」をΣとして更新する。
図31において、前提としてQ=2(暗号計算部2面)、16ビット並列回路、受信GEMデータ列のGEM#1、#2は暗号対象とし、GEM#1、#2とも鍵型とする。
送信GEM判定部38は、GEM#1の暗号ブロック#1長をL1、暗号ブロック#2長をL2、ΣをL1+L2+αとする。ただし、暗号ブロックがGEMヘッダを跨がないのでα=0である。送信GEM判定部38は、GEM#1の最後が鍵型のため、最後を鍵型としないIdle GEM挿入と判定する。送信GEM判定部38は、パラメータ更新C’を実施する。パラメータ更新C’は、L1はそのまま、L2は旧L2+gemhB、Σは旧Σ+gemhBとする。ここで、gemhBは最後を鍵型としないIdle GEM長である。
送信GEM判定部38は、GEM#2の送信判定において、Tsを演算する。ここでは、Ts≧Pなので、送信GEM判定部38は、GEM#2をそのまま暗号エンコード部991に送信する。送信GEM判定部38は、ここでパラメータ更新B1を実施する。送信GEM判定部38は、GEM#2の最後が鍵型のため、最後を鍵型としないIdle GEM挿入と判定する。送信GEM判定部38は、パラメータ更新C’を実施する。
なお、パラメータ更新C’では、挿入するIdle GEM分の長さ(gemhB)を旧L2、旧Σに加算して更新しているが、パラメータ更新B1と同様に計算してもよい。この場合、L1とL2を更新せず、GEM分の長さ(gemhB)をαに含めて「L1+L2+α」をΣとして更新すればよい。なお、GEM#1のパラメータ更新C’はGEMヘッダを跨がないので、αをgemhBとすればよい。GEM#2のパラメータ更新C’ではGEMヘッダ1個を跨ぐので、αを(gemh+gemhB)とすればよい。
図32において、前提としてQ=2(暗号計算部2面)、16ビット並列回路、受信GEMデータ列のGEM#1、#2は暗号対象とし、GEM#1、#2とも非鍵型とする。
送信GEM判定部38は、GEM#1の暗号ブロック#1長をL1、暗号ブロック#2長をL2、ΣをL1+L2+αとする。ただし、暗号ブロックがGEMヘッダを跨がないのでα=0である。送信GEM判定部38は、GEM#1の最後が非鍵型のため、鍵型判定ではIdle GEMを挿入しない。
しかし、GEM#2の送信判定において、この場合Ts<Pなので、送信GEM判定部38は、n個(n=2m)のIdle GEMの挿入を判定する。送信GEM判定部38は、パラメータ更新A’を実施する。パラメータ更新A’ha,
L1は旧L2に、L2は次(GEM#2の暗号ブロック#1)の暗号ブロック長に、ΣはL1+L2+α+n/2xβである。ここでβは、挿入するIdle GEMの長さである。
GEM#2は、n個のIdle GEMの送信完了まで、バッファに貯えられる。
図33ないし図35を参照して、非暗号GEM挿入部990の動作を説明する。ここで、図33は、GEM長を元に判定する動作を説明する図である。図34は、過去の暗号ブロック情報を元に判定する動作を説明する図である。図35は、過去の暗号ブロック情報と鍵型とを元に判定する動作を説明する図である。なお、図33ないし図35において、直列に記載したステップは逐次処理であるが、並列に記載したステップは並列処理である。
図33において、非暗号GEM挿入部990は、まず送信スケジュール部37の送信スケジュール情報を初期化する(S101)。非暗号GEM挿入部990の送信GEM選択部38は、送信スケジュール情報に基づいて受信GEM、Idle GEMを送信する(S102)。送信GEM選択部38は、また新たなGEMデータの受信があるか判定する(S103)。新たなGEMデータがないとき、送信GEM選択部38は、Idle GEM挿入を決定する(S104)。送信スケジュール部37は、Idle GEM挿入を送信スケジュール情報に記憶する(S105)。ステップ104、105と並行して、非暗号GEM挿入部990はIdle GEM長相当の時間分Waitし(S107)、ステップ103に戻る。なお、送信スケジュール情報の初期化はPONフレーム送信開始、PON1フレームごとのスタートタイミンブ、初期化割り込み発生等で行う。
ステップ103で新たなGEMデータの受信があるとき、送信GEM選択部38は、受信データは暗号対象か判定する(S108)。暗号対象外のとき、送信GEM選択部38は、Idle GEMでパディングしないと判定する(S109)。送信スケジュール部37は、受信GEMを送信スケジュール情報に記憶する(S110)。これらステップ109、110と並行して、非暗号GEM挿入部990は、受信GEM長相当の時間分Waitし(S112)、ステップ103に戻る。
ステップ108で暗号対象であるとき(YES)、送信GEM選択部38は、受信GEM長がR以上か判定し(S113)、YESならばステップ109に遷移する。ステップ113でNOならば、送信GEM選択部38は、Idle GEMでパディングすると判定する(S114)。送信GEM選択部38は、パディングすべきIdle GEMの個数nを計算する(S115)。さらに、送信スケジュール部37は、受信GEMとパディングすべきIdle GEMの個数nを送信スケジュール情報に記憶する(S117)。ステップ114〜117と並行して、非暗号GEM挿入部990は、受信GEMとIdle GEMn個相当の時間分Waitし(S118)、ステップ103に戻る。なお、Rは後段の暗号エンコード部における暗号計算に要する時間P(クロック周期の数)から、事前に演算しておく。
前段の送信GEM組立部100において、出力すべきGEMが無いときにIdle GEMを出力する構成とした場合は、非暗号GEM挿入部はIdle GEMを受信しうる。Idle GEMを受信した際は、非暗号対象の5バイトのGEMとして処理する。
なお、GEMを実際に送信するタイミングは、前GEM(パディングしたIdle GEMも含む)の送信完了後であり、それまでのパディング量の累計によっては、判定したタイミングからかなり後にズレうる。この間該当GEMデータ列は、次送信GEM遅延メモリ31にバッファリングされる。非暗号GEM挿入部990は、どのGEMの後に何個Idle GEMをパディングするかの情報を送信スケジュール部37に追加、保持する。
図34において、非暗号GEM挿入部990は、まず送信GEM暗号ブロック長記憶部36のパラメータと、送信スケジュール部37の送信スケジュール情報を初期化する(S201)。非暗号GEM挿入部990の送信GEM選択部38は、送信スケジュール情報に基づいて受信GEM、Idle GEMを送信する(S202)。送信GEM選択部38は、また新たなGEMデータの受信があるか判定する(S203)。新たなGEMデータがないとき、送信GEM選択部38は、Idle GEM挿入を決定する(S204)。送信GEM暗号ブロック長記憶部36は、パラメータ更新Cを実施する(S205)。送信スケジュール部37は、Idle GEM挿入を送信スケジュール情報に記憶する(S207)。ステップ207と並行して、非暗号GEM挿入部990はIdle GEM長相当の時間分Waitし(S208)、ステップ203に戻る。なお、パラメータと送信スケジュール情報の初期化はPONフレーム送信開始、PON1フレームごとのスタートタイミンブ、初期化割り込み発生等で行う。
ステップ203で新たなGEMデータの受信があるとき、送信GEM選択部38は、受信データは暗号対象か判定する(S209)。暗号対象外のとき、送信GEM選択部38は、受信GEMデータの送信を決定する(S210)。送信GEM暗号ブロック長記憶部36は、パラメータ更新B1/B2を実施する(S212)。送信スケジュール部37は、受信GEMを送信スケジュール情報に記憶する(S213)。これらステップ213と並行して、非暗号GEM挿入部990は、受信GEM長相当の時間分Waitし(S214)、ステップ203に戻る。なお、ステップ212は、この場合暗号対象外なので、パラメータ更新B2である。
ステップ209で暗号対象であるとき(YES)、送信GEM選択部38は、暗号ブロック長計算部33から受信GEMデータの暗号ブロックの構造を取得し(S215)、過去Q個の暗号ブロックの先頭の暗号ブロックの開始位置から、受信GEMデータの最初の暗号ブロックSに達するまでのクロック周期数Ts(=Σ+gemh)を計算する(S217)。送信GEM選択部38は、Ts≧Pか判定し(S218)、YESならばステップ210に遷移する。なお、このときステップ212はパラメータ更新B1である。
ステップ218でNOならば、送信GEM選択部38は、Idle GEMでパディングすると判定する(S219)。送信GEM選択部38は、パディングすべきIdle GEMの個数nを計算する(S220)。送信GEM暗号ブロック長記憶部36は、パラメータ更新Aを実施する(S222)。さらに、送信スケジュール部37は、受信GEMとパディングすべきIdle GEMの個数nを送信スケジュール情報に記憶する(S223)。ステップ222〜223と並行して、非暗号GEM挿入部990は、受信GEMとIdle GEMn個相当の時間分Waitし(S224)、ステップ203に戻る。なお、Pは後段の暗号エンコード部における暗号計算に要する時間P(クロック周期の数)である。
ここで、パラメータ更新をまとめておく。
(1)パラメータ更新A
L1、L2、…、LQ、Σを更新。
受信GEMデータの最後の暗号化ブロックEを含む過去に遡ったQ個の暗号ブロック(最新版)の長さをL1、L2、…、LQ、(LQが最後の暗号ブロックE)とし、その総和をΣとする。
nをパディングするIdle GEMの個数とすると、
Σ←L1+L2+…+LQ+α+(nxgemh)
(2)パラメータ更新B1…暗号対象のGEMの場合
パラメータ更新Aと同様。
ただし、Idle GEMパディングしないので、n=0でΣを計算する。
(3)パラメータ更新B2…暗号対象でないGEMの場合
LQ、Σを更新。
L1〜LQ−1は更新しない。
LQ←LQ+Lgem
Σ←Σ+Lgem
(3)パラメータ更新C
LQ、 Σを更新。
L1〜LQ−1は更新しない。
LQ←LQ+gemh
Σ←Σ+gemh
パラメータ更新AまたはB2において、暗号ブロック(最新版)の数がQ個に満たず、m個のときは、そのm個分について総和計算と各々の長さを保持する。ただし、m≧1である。
パラメータ更新B2またはCにおいて、暗号ブロックの数がQ個に満たず、 m個のときは、そのm個分について更新を行う。ただし、m≧0である。
パラメータL1、L2、L3、…、LQ、Σは、送信GEM暗号ブロック長記憶部36で保持する。L1、L2、…、LQ、Σ、gemh、Lgem、Rは、全てクロック周期を単位とした値である。これらの値は、8bit並列回路の場合はバイト単位の値に等しく、16bit並列回路の場合はバイト単位の値の半分となる。ここで、gemhは、GEMヘッダ5バイトの受信に要するクロック周期の数であり、8bit並列回路の場合;gemh=5、16bit並列回路の場合;gemh=2である。また、P:暗号計算に要する時間(クロック周期の数)、Lgem:受信GEMデータ長、α:暗号ブロック(最新版)が過去のGEMに跨る場合の過去のGEM個数分のgemhの合計値である。
図35において、非暗号GEM挿入部990は、まず送信GEM暗号ブロック長記憶部36のパラメータと、送信スケジュール部37の送信スケジュール情報を初期化する(S301)。非暗号GEM挿入部990の送信GEM選択部38は、送信スケジュール情報に基づいて受信GEM、Idle GEMを送信する(S302)。送信GEM選択部38は、前GEMの最後が鍵型か判定する(S303)。YESのとき、送信GEM選択部38は、Idle GEM挿入を決定する(S304)。送信GEM暗号ブロック長記憶部36は、パラメータ更新C’を実施する(S305)。送信スケジュール部37は、Idle GEM挿入を送信スケジュール情報に記憶する(S307)。ステップ307と並行して、非暗号GEM挿入部990はIdle GEM長相当の時間分Waitし(S308)、ステップ309に遷移する。なお、パラメータと送信スケジュール情報の初期化はPONフレーム送信開始、PON1フレームごとのスタートタイミンブ、初期化割り込み発生等で行う。
ステップ303においてNOのとき、送信GEM選択部38は、新たなGEMデータの受信があるか判定する(S309)。新たなGEMデータがないとき、送信GEM選択部38は、ステップ304に遷移する。ステップ309で新たなGEMデータの受信があるとき、送信GEM選択部38は、受信データは暗号対象か判定する(S310)。暗号対象外のとき、送信GEM選択部38は、受信GEMデータの送信を決定する(S312)。送信GEM暗号ブロック長記憶部36は、パラメータ更新B1/B2を実施する(S313)。送信スケジュール部37は、受信GEMを送信スケジュール情報に記憶する(S314)。これらステップ314と並行して、非暗号GEM挿入部990は、受信GEM長相当の時間分Waitし(S315)、ステップ309に戻る。なお、ステップ313は、この場合暗号対象外なので、パラメータ更新B2である。
ステップ310で暗号対象であるとき(YES)、送信GEM選択部38は、暗号ブロック長計算部33から受信GEMデータの暗号ブロックの構造を取得し(S317)、過去Q個の暗号ブロックの先頭の暗号ブロックの開始位置から、受信GEMデータの最初の暗号ブロックSに達するまでのクロック周期数Ts(=Σ+gemh)を計算する(S318)。送信GEM選択部38は、Ts≧Pか判定し(S319)、YESならばステップ312に遷移する。なお、このときステップ313はパラメータ更新B1である。
ステップ319でNOならば、送信GEM選択部38は、Idle GEMでパディングすると判定する(S320)。送信GEM選択部38は、パディングすべきIdle GEMの個数nを計算する(S322)。ここで、nは偶数である。送信GEM暗号ブロック長記憶部36は、パラメータ更新A’を実施する(S323)。さらに、送信スケジュール部37は、受信GEMとパディングすべきIdle GEMの個数nを送信スケジュール情報に記憶する(S324)。ステップ323〜324と並行して、非暗号GEM挿入部990は、受信GEMとIdle GEMn個相当の時間分Waitし(S325)、ステップ309に戻る。なお、Pは後段の暗号エンコード部における暗号計算に要する時間P(クロック周期の数)である。
ここで、パラメータ更新をまとめておく。
(1)パラメータ更新A’
L1、L2、…、LQ、Σを更新。
受信GEMデータの最後の暗号化ブロックEを含む過去に遡ったQ個の暗号ブロック(最新版)の長さをL1、L2、…、LQ、(LQが最後の暗号ブロックE)、その総和をΣとする。
nはパディングするIdle GEMの個数で、偶数である。
Σ←L1+L2+…+LQ+α+n/2xβ
(2)パラメータ更新B1…暗号対象のGEMの場合
パラメータ更新Aと同様。
ただし、Idle GEMパディングしないので、n=0でΣを計算する。
(3)パラメータ更新B2…暗号対象でないGEMの場合
LQ、 Σを更新。
L1〜LQ−1は更新しない。
LQ←LQ+Lgem
Σ←Σ+Lgem
(4)パラメータ更新C’
LQ、 Σを更新。
L1〜LQ−1は更新しない。
LQ←LQ+gemhB
Σ←Σ+gemhB
パラメータ更新A’またはB1において、暗号ブロック(最新版)の数がQ個に満たず、m個のときは、そのm個分について総和計算と各々の長さを保持する。ただし、m≧1である。
パラメータ更新B2またはC’において、暗号ブロックの数がQ個に満たず、m個のときは、そのm個分について更新を行う。ただし、m≧0である。
パラメータL1、L2、L3、…、LQ、Σは送信GEM暗号ブロック長記憶部36で保持する。ここで、L1、L2、…、LQ、Σ、gemh、Lgem、Rは全てクロック周期を単位とした値であり、8bit並列回路の場合はバイト単位の値に等しく、16bit並列回路の場合はバイト単位の値の半分となる。ここで、gemhは、GEMヘッダ5バイトの受信に要するクロック周期の数であり、8bit並列回路の場合;gemh=5、16bit並列回路の場合;gemh=2である。また、
β=2xgemh+1(=gemh+gemhB)
gemhB=gemh+1
P:暗号計算に要する時間(クロック周期の数)
Lgem:受信GEMデータ長
α:暗号ブロック(最新版)が過去のGEMに跨る場合の過去のGEM個数分のgemhの合計値である。
本実施例に拠れば、暗号化回路の規模を削減した暗号化装置を得ることができる。
1…光集線装置(OLT)、2…光加入者装置(ONT)、3…スプリッタ、4…IPシステム、5…TDMシステム、6…IPネットワーク、7…TDMネットワーク、8…幹線ファイバ、9…加入者ファイバ、10…光アクセスネットワーク、11…暗号対象判定部、12…計算回路振分部、13…暗号ON/OFFテーブル、14…データ遅延メモリ、15…暗号計算部、17…暗号鍵取得部、18…暗号カウンタ、19…暗号鍵テーブル、20…回路選択部、21…EXOR部、25…Port−ID/ONU−ID対応テーブル、31…次送信GEM遅延メモリ、32…GEM長検出部、33…暗号ブロック長計算部、34…暗号対象検出部、35…Idle GEM生成部、36…送信GEM暗号ブロック長記憶部、37…送信スケジュール部、38…送信GEM選択部、39…鍵型検出部、71…光電変換モジュール、72…OLT PON送受信ブロック、73…イーサネット PHY、74…TDM PHY、75…MPU、76…RAM、77…制御系インターフェース、81…光電変換モジュール、82…ONT PON送受信ブロック、83…イーサネット PHY、84…TDM PHY、85…MPU、86…RAM、87…制御系インターフェース、90…PON受信部、91…受信GEM組立部、92…受信GEMバッファ、93…OLT受信テーブル、94…OLT上りイーサネットGEM終端部、95…OLT上りイーサネットインターフェース、96…OLT上りTDM GEM終端部、97…OLT上りTDMインターフェース、98…レンジング制御部、99…PON送信部、100…送信GEM組立部、101…送信GEMバッファ、102…OLT送信スケジューラ、103…OLT下りTDM GEM終端部、104…OLT下りTDMインターフェースGEM終端部、105…OLT下りイーサネットGEM終端部、106…OLT下りイーサネットインターフェース、107…MPU IF、120…ONT下りイーサネットインターフェース、121…ONT下りイーサネットGEM終端部、122…ONT下りTDMインターフェース、123…ONT下りTDM GEM終端部、124…ONT受信テーブル、125…受信GEMバッファ、126…受信GEM組立部、127…PON受信部、128…レンジング制御部、129…PON送信部、130…送信GEM組立部、131…ONT送信スケジューラ、132…送信GEMバッファ、133…ONT上りTDM GEM終端部、134…ONT上りTDMインターフェース、135…ONT上りイーサネットGEM終端部、136…ONT上りイーサネットインターフェース、137…MPU IF、901…デスクランブラ、902…フレーム同期部、903…FECデコーダ、904…PONフレーム終端部、905…暗号デコーダ、990…非暗号GEM挿入部、991…暗号エンコーダ、992…PONフレーム生成部、993…FECエンコーダ、994…フレーム同期信号挿入部、995…スクランブラ。