(57)【要約】【課題】データの暗号化／復号処理に伴うシステム全体の処理効率の低下を防止する。【解決手段】第１のメモリ回路１ｂは、外部バス接続端子１ａから入力されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・を記憶する。第２のメモリ回路１ｃは、第１のメモリ回路１ｂに対して内部接続されており、第１のメモリ回路１ｂに記憶されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・の複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を取得し、取得した複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を記憶する。暗号化／復号回路１ｄは、第２のメモリ回路１ｃに対して内部接続されており、外部からの動作指示入力に応答して、第２のメモリ回路１ｃに記憶された複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・の暗号化または復号の処理を実行し、処理結果を第２のメモリ回路１ｃに書き戻す。【選択図】　　　　図１
2004070499.tif 000002
【特許請求の範囲】
【請求項１】
外部バス接続端子から入力されたデータを記憶する第１のメモリ回路と、
前記第１のメモリ回路に対して内部接続されており、前記第１のメモリ回路に記憶された前記データの複製データを取得し、取得した前記複製データを記憶する第２のメモリ回路と、
前記第２のメモリ回路に対して内部接続されており、外部からの動作指示入力に応答して、前記第２のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第２のメモリ回路に書き戻す暗号化／復号回路と、
を有することを特徴とするメモリデバイス。
【請求項２】
前記暗号化／復号回路は、前記第２のメモリ回路の記憶領域のうち処理対象とすべき格納領域が指定されると、指定された前記格納領域に格納されたデータに対してのみ、暗号化または復号の処理を実行することを特徴とする請求項１記載のメモリデバイス。
【請求項３】
前記第２のメモリ回路は、前記データを構成する部分データが前記第１のメモリ回路に格納される毎に、逐次前記部分データの複製を記憶することを特徴とする請求項１記載のメモリデバイス。
【請求項４】
前記第２のメモリ回路は、前記複製データを、所定データ長の単位データに分割して記憶し、
前記暗号化／復号回路は、前記単位データが前記第２のメモリ回路に記憶される毎に、順次前記単位データに対する暗号化または復号の処理を実行することを特徴とする請求項３記載のメモリデバイス。
【請求項５】
前記暗号化／復号回路は、
複数の前記単位データそれぞれに対応づけて設けられ、処理順が直前となる前記単位データに対する暗号化または復号の処理の実行の有無を監視し、直前の前記単位データに対する処理の実行完了を検出する処理順検出回路と、
前記処理順検出回路によって直前の前記単位データに対する処理の実行完了が検出されると、前記処理順検出回路に対応する前記単位データに対する暗号化または復号処理を実行する暗号化／復号処理実行回路と、
を有することを特徴とする請求項４記載のメモリデバイス。
【請求項６】
前記暗号化／復号回路は、暗号化または復号に関する複数の処理方式の処理機能を有しており、外部からの入力に応じて、実行する暗号化または復号の処理方式を決定することを特徴とする請求項１記載のメモリデバイス。
【請求項７】
前記複写データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする請求項１記載のメモリデバイス。
【請求項８】
前記割り込み通知回路は、前記第１のメモリに記憶された前記複写データのデータ長と、前記第２のメモリに記憶された前記複写データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする請求項７記載のメモリデバイス。
【請求項９】
前記割り込み通知回路は、予め終了単位データとして指定された単位データの暗号化または復号の処理が完了したときに、割り込み信号を出力することを特徴とする請求項７記載のメモリデバイス。
【請求項１０】
メモリデバイスに入出力されるデータの暗号化／復号処理を行うための暗号化／復号方法において、
外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第１のメモリ回路に格納し、
外部からの動作指示入力に応答して、前記第１のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化／復号回路を用いて、前記第１のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、
暗号化または復号の処理結果を、前記暗号化／復号回路に内部接続された第２のメモリ回路に格納する、
ことを特徴とする暗号化／復号方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリデバイスおよびメモリデバイスに格納されたデータの暗号化／復号方法に関し、特に暗号化対象データまたは復号対象データの一時記憶として利用されるメモリデバイスおよびそのようなメモリデバイスに記憶されたデータの暗号化／復号方法に関する。
【０００２】
【従来の技術】
近年、インターネットのような広域ネットワークを利用した情報通信が盛んに行われている。インターネットを介して情報を送受信する場合、伝送系路上で、第三者にデータの内容を覗かれる危険がある。そこで、データを暗号化して通信することが行われている。強度な暗号化技術を用いてデータを暗号化しておけば、ネットワーク上で伝送されるデータを第三者が不正に取得してもデータを復号するのは困難である。これにより、情報の漏洩を防止できる。
【０００３】
図２６は、従来の機密保持機能を備えたコンピュータの概略構成を示す図である。図２６に示すように、機密保持機能を備えたコンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）９１０、暗号化／復号部９２０、記憶装置９３０などを有している。ＣＰＵ９１０はコンピュータシステム全体を制御しており、暗号化／復号部９２０や記憶装置９３０との間でデータの受け渡しを行う。暗号化／復号部９２０は、入力されたデータの暗号化、または復号処理を行う。暗号化／復号部９２０は、ハードウェアで構成しても、ソフトウェアで構成してもよい。記憶装置９３０は、たとえば、ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）である。
【０００４】
このようなコンピュータシステムを用いて暗号化通信を行う場合、外部から暗号化して送られてきたデータ９３１，９３２，・・・，９３３，９３４（暗号文）は、記憶装置９３０に格納される。データ９３１，９３２，・・・，９３３，９３４は、たとえば、１ワード（６４ビット）単位で、「Ｄａｔａ＃１」から「Ｄａｔａ＃Ｎ」までのＮワード（Ｎは自然数）に分割されて格納される。
【０００５】
ＣＰＵ９１０は、記憶装置９３０から１ワードずつのデータ９３１，９３２，・・・，９３３，９３４を順次読み出し（ステップＳ７１）、暗号化／復号部９２０に渡す（ステップＳ７２）。暗号化／復号部９２０は、暗号化されているデータを復号し、復号された平文のデータをＣＰＵ９１０に渡す（ステップＳ７３）。ＣＰＵ９１０は、平文のデータを受け取ると、そのデータを記憶装置９３０内の元の位置に書き込む（ステップＳ７４）。
【０００６】
逆に、平文のデータを暗号化して送信する場合も復号の場合と同様に、ＣＰＵ９１０が暗号化／復号部９２０に順次データを渡すことで、ワード単位のデータが順次暗号化される。
【０００７】
このようにして、ネットワークを経由した情報通信において、送受信されるデータの機密を保持することが可能となる。
データの機密を保ちつつ情報通信を行うための装置として、ＶＰＮ（Ｖｉｒｔｕａｌ　Ｐｒｉｖａｔｅ　Ｎｅｔｗｏｒｋ）装置がある。ＶＰＮ装置は、インターネットなどの広域ネットワークを経由して送受信するパケットの暗号化や復号処理を行う。
【０００８】
図２７は、従来のＶＰＮ装置の構成例を示す図である。従来のＶＰＮ装置９４０では、ＣＰＵ９４１に対してメモリバス９４８を介さずにＤＥＳ（Ｄａｔａ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）処理部９４７が接続されている。また、ＣＰＵ９４１には、メモリバス９４８を介して、ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）９４２、ＲＡＭ９４３、ＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）装置９４４が接続されている。ＤＭＡ装置９４４には、ネットワークインタフェースカード（ＮＩＣ）９４５，９４６が接続されている。
【０００９】
たとえば、ＮＩＣ９４５に入力されたパケット９５１を暗号化する場合の処理を説明する。
［暗号化ステップ１］ＮＩＣ９４５から入力されたパケット９５１がＤＭＡ装置９４４によりＤＭＡ転送され、ＲＡＭ９４３に格納される。
【００１０】
［暗号化ステップ２］ＣＰＵ９４１はＲＡＭ９４３中におかれたパケット９５１のＩＰヘッダを解析（チェックサム、フィルタリング、ＩＰアドレス検索によるルーティング情報収得、プロトコルタイプの変更等）する。
【００１１】
［暗号化ステップ３］ＣＰＵ９４１は、ＲＡＭ９４３中におかれたパケット９５１のペイロードデータ部よりデータを６４ビットずつ取り込み、ＤＥＳ処理部９４７に渡す。すると、ＤＥＳ処理部９４７がＤＥＳ処理（暗号化）を行う。なお、図２７の例では、ＤＥＳ処理をＣＰＵ外部にあるＤＥＳ処理部９４７で行っているが、ＣＰＵ９４１によりソフトウェア的にＤＥＳ処理を行うこともできる。ＤＥＳ処理（暗号化）後のデータは、ＲＡＭ９４３に書き戻される。
【００１２】
［暗号化ステップ４］ＣＰＵ９４１は、ＤＥＳ処理後の暗号化されたデータから認証用のデータを作成する。
［暗号化ステップ５］ＣＰＵ９４１はトンネル用のＩＰヘッダを作成する。
【００１３】
［暗号化ステップ６］この時点で１パケット分の暗号化済みのパケットが生成され、ＤＭＡ装置９４４がＤＭＡ転送によりＮＩＣ９４６へパケットを転送する。すると、ＮＩＣ９４６から暗号パケット９５２が送出される。
【００１４】
逆に、ＮＩＣ９４６に入力された暗号パケット９５２を復号する場合について説明する。
［復号ステップ１］ＮＩＣ９４６から入力された暗号パケット９５２は、ＤＭＡ装置９４４によりＤＭＡ転送され、ＲＡＭ９４３に格納される。
【００１５】
［復号ステップ２］ＣＰＵ９４１は、ＲＡＭ９４３中におかれた暗号パケット９５２のＩＰヘッダを解析（チェックサム、フィルタリング、ＩＰアドレス検索によるルーティング情報収得、プロトコルタイプの変更等）する。
【００１６】
［復号ステップ３］ＣＰＵ９４１は、暗号化されたデータをリードし、認証用データを作成する。そして、暗号パケット９５２に含まれている認証用データとの比較により、認証を行う。
【００１７】
［復号ステップ４］ＣＰＵ９４１は、ＲＡＭ９４３中におかれた暗号パケット９５２のペイロードデータ部よりデータを６４ビットずつ取り込み、ＤＥＳ処理部９４７に渡す。すると、ＤＥＳ処理部９４７がＤＥＳ処理（復号）を行う。なお、図２７の例では、ＤＥＳ処理をＣＰＵ外部にあるＤＥＳ処理部９４７で行っているが、ＣＰＵ９４１によりソフトウェア的にＤＥＳ処理を行うこともできる。ＤＥＳ処理（復号）後のデータは、ＲＡＭ９４３に書き戻される。
【００１８】
［復号ステップ５］この時点で１パケット分の復号済みのパケット９５１が生成され、ＤＭＡ装置９４４によりＮＩＣ９４５にＤＭＡ転送される。すると、ＮＩＣ９４５からパケット９５１が出力される。
【００１９】
【発明が解決しようとする課題】
しかし、従来の技術においては、暗号化や復号を行うために、ＣＰＵ＋暗号化／復号部（たとえば、ＤＥＳ処理部）＋記憶装置（たとえば、ＲＡＭ）が必要である。そのため、処理対象のデータの格納に記憶装置上の所定のバッファ領域を利用する場合、平文→暗号文あるいは暗号文→平文にするために、リードとライトの動作を、処理するデータ長に比例した回数実行しなければならなかった。
【００２０】
このリードとライト動作には、システムクロックの数サイクルから数十サイクル要するため、データ長が長くなるほど、デッドサイクル（ＣＰＵ９１０がデータ待ちのために待機する時間）も大きくなる。また、これらのリードとライト動作はＣＰＵもしくはＤＭＡ装置が実行することとなる。すると、処理対象のデータを転送する間メモリバスが専有されるため、暗号化または復号処理が終了するまで実質上システムの動作を先に進めることができなかった。
【００２１】
ここで、従来技術におけるバス専有率の高さを、図２７に示したＶＰＮ装置９４０における処理の流れを用いて説明する。
主にバス専有は下記工程で発生する。これらの工程はシーケンシャルに実行される。
【００２２】
暗号化の場合：１．ＤＭＡ転送→２．ＣＰＵによるＩＰヘッダ解析のためのヘッダリード→３．ＣＰＵによるＤＥＳ処理（暗号化）のためのデータリード・ライト→４．ＤＥＳ処理後のデータから認証データを作成するためのデータのリード・ライト→５．ＤＭＡ転送
復号の場合：１．ＤＭＡ転送→２．ＣＰＵによるトンネルＩＰヘッダ解析のためのヘッダリード→３．暗号化データから認証データを作成し、比較するためのリード・ライト→４．ＣＰＵによるＤＥＳ処理（復号）のためのデータリード・ライト→５．ＤＭＡ転送
この中で暗号化、復号共に、１．２．３．４．５．の全ての工程において、その処理にメモリバスを占有することとなる。そのため、これらの工程は順番に処理しなければならない。しかも、ＤＥＳ処理の工程は、６４ビット単位でＣＰＵからのリードとライトが（パケット長÷６４ビット）回発生するため、その間もメモリバスがＣＰＵによって占有されてしまう。
【００２３】
本発明はこのような点に鑑みてなされたものであり、データの暗号化／復号処理に伴うシステム全体の処理効率の低下を防止することができるメモリデバイスおよび暗号化／復号方法を提供することを目的とする。
【００２４】
【課題を解決するための手段】
本発明では上記課題を解決するために、図１に示すようなメモリデバイス１が提供される。本発明に係るメモリデバイス１は、第１のメモリ回路１ｂ、第２のメモリ回路１ｃ、及び暗号化／復号回路１ｄを有している。
【００２５】
第１のメモリ回路１ｂは、外部バス接続端子１ａから入力されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・を記憶する。第２のメモリ回路１ｃは、第１のメモリ回路１ｂに対して内部接続されており、第１のメモリ回路１ｂに記憶されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・の複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を取得し、取得した複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を記憶する。暗号化／復号回路１ｄは、第２のメモリ回路１ｃに対して内部接続されており、外部からの動作指示入力に応答して、第２のメモリ回路１ｃに記憶された複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・の暗号化または復号の処理を実行し、処理結果を第２のメモリ回路１ｃに書き戻す。
【００２６】
このようなメモリデバイスによれば、外部バス接続端子１ａからデータ１ｂａ，１ｂｂ，１ｂｃ，・・・が入力されると、まず第１のメモリ１ｂに記憶され、その複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・が第２のメモリ回路１ｃに記憶される。すると、暗号化／復号回路１ｄによって複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・に対する暗号化または復号処理が実行され、処理結果が第２のメモリ回路１ｃに書き戻される。
【００２７】
また、本発明では上記課題を解決するために、メモリデバイスに入出力されるデータの暗号化／復号処理を行うための暗号化／復号方法において、外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第１のメモリ回路に格納し、外部からの動作指示入力に応答して、前記第１のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化／復号回路を用いて、前記第１のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、暗号化または復号の処理結果を、前記暗号化／復号回路に内部接続された第２のメモリ回路に格納する、ことを特徴とする暗号化／復号方法が提供される。
【００２８】
このような暗号化／復号方法によれば、外部バス接続端子からメモリデバイスにデータが入力されると、そのデータがメモリデバイス内の第１のメモリ回路に格納される。次に、外部からの動作指示入力に応答して、第１のメモリ回路に対してメモリデバイス内で内部接続されている暗号化／復号回路により、第１のメモリ回路に格納されたデータの複製データに対して暗号化または復号の処理が実行される。暗号化または復号の処理結果は、暗号化／復号回路に内部接続された第２のメモリ回路に格納される。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００３０】
図１は、実施の形態に適用される発明の概念図である。図１に示すメモリデバイス１は、外部バス接続端子１ａ、第１のメモリ回路１ｂ、第２のメモリ回路１ｃ、暗号化／復号回路１ｄおよび内部バス１ｅ，１ｆを有している。
【００３１】
外部バス接続端子１ａは、メモリデバイス１を外部バス２に接続するための接続端子である。外部バス２は、たとえば、ＣＰＵに接続されるメモリバスである。
【００３２】
第１のメモリ回路１ｂは、外部バス接続端子１ａから入力されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・を記憶する。データ１ｂａ，１ｂｂ，１ｂｃ，・・・は、たとえば、所定のデータ長の単位データに分割して記憶される。単位データは、たとえば、６４ビット長のデータ（ワード）である。なお、第１のメモリ回路１ｂは、外部バス２を介したメモリアクセスによって書き込み（ライト）と読み出し（リード）を行うことができる。
【００３３】
第２のメモリ回路１ｃは、第１のメモリ回路１ｂに対して内部接続されている。たとえば、内部バス１ｅを介して、第１のメモリ回路１ｂと第２のメモリ回路１ｃとが接続されている。第２のメモリ回路１ｃは、第１のメモリ回路１ｂに記憶されたデータ１ｂａ，１ｂｂ，１ｂｃ，・・・の複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を取得し、取得した複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・を記憶する。なお、第２のメモリ回路１ｃは、外部バス２を介したメモリアクセスによって読み出し（リード）を行うことができる。
【００３４】
暗号化／復号回路１ｄは、第２のメモリ回路１ｃに対して内部接続されている。たとえば、内部バス１ｆを介して、第２のメモリ回路１ｃと暗号化／復号回路１ｄとが接続されている。暗号化／復号回路１ｄは、外部からの動作指示入力（暗号化処理を実行するのか、復号処理を実行するのかが指示される）に応答して、第２のメモリ回路１ｃに記憶された複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・の暗号化または復号の処理を実行し、処理結果を第２のメモリ回路１ｃに書き戻す。
【００３５】
このようなメモリデバイスによれば、外部バス接続端子１ａからデータ１ｂａ，１ｂｂ，１ｂｃ，・・・が入力されると、まず第１のメモリ１ｂに記憶され、その複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・が第２のメモリ回路１ｃに記憶される。すると、暗号化／復号回路１ｄによって複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・に対する暗号化または復号処理が実行され、処理結果が第２のメモリ回路１ｃに書き戻される。
【００３６】
これにより、暗号化または復号すべきデータをメモリデバイス１に入力すれば、暗号化または復号の処理実行後のデータが第２のメモリ回路１ｃ内に生成される。暗号化または復号の処理はメモリデバイス１内で実行されるため、処理中に外部バス２が占有されることがない。しかも、暗号化／復号処理は、複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・に対して行われるため、その処理中であっても第１のメモリ回路１ｂは通常の主記憶装置と同様に使用できる。すなわち、暗号化／復号の処理中でも、メモリ回路１ｂ内のデータ１ｂａ，１ｂｂ，１ｂｃ，・・・に対して、書き込みや読み出し等の操作を行うことが可能である。
【００３７】
その結果、データの暗号化／復号に関する処理の効率化が図れ、処理速度が向上する。
以下、暗号化／復号技術としてＤＥＳ（Ｄａｔａ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）を採用した場合の本発明の実施の形態を詳しく説明する。
【００３８】
なお、ＤＥＳには、ＣＢＣモード（Ｃｉｐｈｅｒ　Ｂｌｏｃｋ　Ｃｈａｉｎｉｎｇ　Ｍｏｄｅ）、ＥＣＢモード（Ｅｌｅｃｔｒｏｎｉｃ　Ｃｏｄｅ　Ｂｏｏｋ　Ｍｏｄｅ）、および３（トリプル）ＤＥＳ（ＣＢＣモードとＥＣＢモードとがある）という方式がある。以下の実施の形態では、方式毎の実施の形態を実現する装置を説明し、その後、暗号化／復号処理方式を任意に選択可能な装置、およびその他の応用例について説明する。
【００３９】
［第１の実施の形態］
第１の実施の形態は、ＤＥＳ−ＣＢＣモードにより暗号化／復号を行うシステムに本発明を適用した場合の例である。ＤＥＳ−ＣＢＣモードは、最初の１ワード（６４ビット）の暗号文出力と次の１ワードの入力との排他的論理和（ＸＯＲ）を演算し、その演算結果を次段のＤＥＳ演算への入力としている。
【００４０】
ところで、図１に示すメモリデバイスを１つのメモリモジュール上に実装しておけば、既存のＲＡＭのメモリモジュールが接続されるメモリバスに容易に接続することができる。そこで、以下の第１の実施の形態では、メモリモジュール上に機密データ保護機能を実装するものとする。
【００４１】
図２は、ＤＥＳ−ＣＢＣモードの動作を説明する図である。図２では、平文のデータがＮ個（Ｎは自然数）のワード１１，１２，１３に分割されている。ここで、最初のワード１１の内容を「Ｐ１」とする。２番目のワード１２の内容を「Ｐ２」とする。そして、最後のワード１３の内容を「ＰＮ」とする。また、予めＩＶ（Ｉｎｉｔｉａｌ　Ｖｅｃｔｏｒ）１０が用意されている。
【００４２】
平文を暗号化する場合、内容が「Ｐ１」の最初のワード１１は、排他的論理和演算部２１によって、ＩＶ１０との間で排他的論理和が演算される。その演算結果のデータが暗号化部３１によって暗号化され、内容が「Ｃ１」に暗号化されたワード１４が生成される。
【００４３】
内容が「Ｐ２」の２番目のワード１２は、排他的論理和演算部２２によって、前段の処理で暗号化されたワード１４との間で排他的論理和が演算される。その演算結果のデータが暗号化部３２によって暗号化され、内容が「Ｃ２」に暗号化されたワード１５が生成される。
【００４４】
同様に、各ワードの暗号化が行われる。そして、内容が「ＰＮ」のＮ番目のワード１３は、排他的論理和演算部２３によって、Ｎ−１段目の処理で暗号化されたワードとの間で排他的論理和が演算される。その演算結果のデータが暗号化部３３によって暗号化され、内容が「ＣＮ」に暗号化されたワード１６が生成される。
【００４５】
暗号化された各データ１４，１５，１６によって暗号文が構成される。暗号文を平文化（復号）する場合、内容が「Ｃ１」の最初のデータ１４は、復号部３４によって復号される。そして、排他的論理和演算部２４によって、復号されたデータとＩＶ１０との間の排他的論理和が演算される。その結果、内容が「Ｐ１」のワード１７が生成される。
【００４６】
内容が「Ｃ２」の２番目のワード１５は、復号部３５によって復号される。復号されたデータは、排他的論理和演算部２５によって、内容が「Ｃ１」のワード１４との間の排他的論理和が演算される。その結果、内容が「Ｐ２」のワード１８が生成される。
【００４７】
同様に、各ワードの復号が行われる。そして、内容が「ＣＮ」のＮ番目のワード１６は、復号部３６によって復号される。復号されたデータは、排他的論理和演算部２６によって、前段で処理された平分の状態のワードとの間の排他的論理和が演算される。その結果、内容が「ＰＮ」のワード１９が生成される。
【００４８】
このようにして生成されたワード１７，１８，１９で構成される平文の内容は、ワード１１，１２，１３で構成される平文と同じである。
このように暗号化／復号処理を、前段のブロックから連鎖的に実行することで、不正行為による暗号解読を困難にしている。
【００４９】
このようなＤＥＳ−ＣＢＣモードによって暗号化すれば、インターネットを介してデータを受け渡しても、そのデータの秘匿性を保つことができる。このような技術を利用して、たとえば、ＶＰＮを構築することができる。なお、ＶＰＮとは、インターネットのようにだれもが利用できる公共のネットワークを利用して構築されたプライベートな（データの秘匿性が保たれた）ネットワーク環境である。
【００５０】
ＶＰＮを構築する場合、広域ネットワークとプライベートなネットワークとの間にＶＰＮ装置を配置し、ＶＰＮ装置がパケットを中継する。ＶＰＮ装置内に、秘密保持機能を備えたメモリモジュールを実装することで、ＶＰＮ装置のスループット（インターネットとイントラネットとの間のデータの受け渡しの速度）を向上させることができる。以下、機密保持のための暗号化／復号機能が内部に実装されたメモリモジュールを、機密データ保護メモリモジュールと呼ぶ。
【００５１】
図３は、ＶＰＮのシステム構成例を示す図である。ＶＰＮでは、インターネット４２を介して、２つのＶＰＮ装置１００，２００が接続されている。ＶＰＮ装置２００はイントラネット４１に接続されており、イントラネット４１にはコンピュータ３１０が接続されている。ＶＰＮ装置１００はイントラネット４３に接続されており、イントラネット４３にはコンピュータ３２０が接続されている。
【００５２】
ここで、たとえば、コンピュータ３１０からコンピュータ３２０へデータを送信する場合について説明する。
まず、コンピュータ３１０から生のＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ）パケット（生パケット）５１が出力される。生パケット５１は、ＩＰヘッダ５１ａやペイロードデータ（送信されるデータの内容）５１ｂなどで構成される。生パケット５１は、イントラネット４１を経由してＶＰＮ装置２００に送られる。
【００５３】
ＶＰＮ装置２００は、生パケット５１を暗号化して暗号パケット５２を生成する。暗号パケット５２には、トンネル用ＩＰヘッダ５２ａ、ＥＳＰ（Ｅｎｃａｐｓｕｌａｔｉｎｇ　Ｓｅｃｕｒｉｔｙ　Ｐａｙｌｏａｄ）ヘッダ５２ｂ、暗号化されたパケット５２ｃ、認証データ５２ｄなどで構成される。トンネル用ＩＰヘッダ５２ａは、インターネット４２経由で暗号パケット５２をＶＰＮ装置１００に送信するためのヘッダ情報である。ＥＳＰヘッダ５２ｂは、暗号化のアルゴリズムや鍵情報などに関する情報である。暗号化されたパケット５２ｃは、生パケット５１をＩＰヘッダ５１ａ毎に暗号化したときの暗号データである。認証データ５２ｄは、ＩＰヘッダ５１ａのチェックサムなどを含む認証用のデータである。暗号パケット５２は、インターネット４２を介して、ＶＰＮ装置１００に渡される。
【００５４】
ＶＰＮ装置１００は、ＥＳＰヘッダ５２ｂを用いて、暗号化されたパケット５２ｃを復号する。さらに、ＶＰＮ装置１００は、認証データ５２ｄによって、改竄されていない正規なパケットであることを認証する。その後、ＶＰＮ装置１００は、復号された生パケット５３を出力する。生パケット５３は、ＩＰヘッダ５３ａとペイロードデータ５３ｂとを有している。生パケット５３は、イントラネット４３を経由して、コンピュータ３２０に渡される。
【００５５】
このようにして、インターネット４２上を伝送するときのデータの秘匿性が確保される。
図４は、ＶＰＮ装置の内部構造を示す図である。ＶＰＮ装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、メモリバス１０７を介して、ＲＯＭ１０２、ＲＡＭ１０３、ＤＭＡ装置１０４、および機密データ保護メモリモジュール１１０が接続されている。
【００５６】
ＲＯＭ１０２には、ＶＰＮ装置１００の基本動作を記述したプログラムが格納されている。ＣＰＵ１０１は、ＲＯＭ１０２に格納されたプログラムを読み出して、ＶＰＮ装置１００を制御する。ＲＡＭ１０３には、ＣＰＵ１０１が実行する処理に必要なデータや命令が、一時的に格納される。
【００５７】
ＤＭＡ装置１０４は、ＲＡＭ１０３や機密データ保護メモリモジュール１１０に対してダイレクトメモリアクセス（ＤＭＡ）を行うことができる。ＤＭＡ装置１０４には、２つのネットワークインタフェースカード（ＮＩＣ）１０５，１０６が接続されている。ＮＩＣ１０５は、イントラネット４３に接続されたネットワーク制御回路である。また、ＮＩＣ１０６は、インターネット４２に接続されたネットワーク制御回路である。
【００５８】
ＤＭＡ装置１０４は、ＮＩＣ１０５、１０６を介して入出力されるパケットのＤＭＡ転送を行う。たとえば、ＮＩＣ１０５に対して、インターネット４２経由で送信すべき生パケット５３が入力されると、ＤＭＡ装置１０４は、生パケット５３を機密データ保護メモリモジュール１１０にＤＭＡ転送する。その生パケット５３が暗号化されると、ＤＭＡ装置１０４は、暗号化されたパケット（暗号パケット５２）を機密データ保護メモリモジュール１１０から取り出し、ＮＩＣ１０６にＤＭＡ転送する。
【００５９】
また、ＮＩＣ１０６に対して、イントラネット４３経由で送信すべき暗号パケット５２が入力されると、ＤＭＡ装置１０４は、暗号パケット５２を機密データ保護メモリモジュール１１０にＤＭＡ転送する。その暗号パケット５２が復号されると、ＤＭＡ装置１０４は、復号されたパケット（生パケット５３）を機密データ保護メモリモジュール１１０から取り出し、ＮＩＣ１０５にＤＭＡ転送する。
【００６０】
機密データ保護メモリモジュール１１０は、入力されたパケットを記憶し、そのパケットの暗号化または復号処理を行うことができるメモリモジュールである。たとえば、機密データ保護メモリモジュール１１０は、ＤＥＳの技術を用いてデータの暗号化／復号を行う。第１の実施の形態では、ＤＥＳ−ＣＢＣモードの秘密保持機能を備えている。
【００６１】
図５は、第１の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。ＤＥＳ−ＣＢＣモードの秘密保持機能を備えたメモリモジュールは、ＩＶレジスタ１１１、キーコードレジスタ１１２、データ長レジスタ１１３、動作指定ビット１１４、クリアビット１１５、第１段メモリ１１６、第２段メモリ１１７、排他論理和回路１１８ａ，１１８ｂ，１１８ｃ、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃ、カウンタ回路１２０ａ，１２０ｂ，１２０ｃ、エラーレジスタ１２１、割り込み通知回路１２２、及びアドレスデコーダ回路１２３を有している。
【００６２】
ＩＶレジスタ１１１は、排他的論理和回路１１８ａに接続されている。キーコードレジスタ１１２は、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに接続されている。データ長レジスタ１１３は、第１段メモリ１１６と第２段メモリ１１７とに接続されている。動作指定ビット１１４は、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに接続されている。クリアビット１１５は、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃ、カウンタ回路１２０ａ，１２０ｂ，１２０ｃ、エラーレジスタ１２１、およびデータ長レジスタ１１３に接続されている。
【００６３】
第１段メモリ１１６は、ＣＰＵ１０１からリード／ライトが可能な複数のバッファ領域１１６ａ，１１６ｂ，１１６ｃに区分けされている。第２段メモリ１１７は、ＣＰＵ１０１からリード可能な複数のバッファ領域１１７ａ，１１７ｂ，１１７ｃに区分けされている。第１段メモリ１１６と第２段メモリ１１７とは、バッファ領域同士が一対一で対応づけられており、対応するバッファ領域同士が接続されている。なお、バッファ領域１１６ａとバッファ領域１１７ａとを接続する信号線には、カウンタ回路１２０ａが接続されている。バッファ領域１１６ｂとバッファ領域１１７ｂとを接続する信号線には、カウンタ回路１２０ｂが接続されている。バッファ領域１１６ｃとバッファ領域１１７ｃとを接続する信号線には、カウンタ回路１２０ｃが接続されている。
【００６４】
さらに、第２段メモリ１１７内のバッファ領域１１７ａは、排他的論理和回路１１８ａ、ＤＥＳ回路１１９ａ、排他的論理和回路１１８ｂに接続されている。ＤＥＳ回路１１９ａからバッファ領域１１７ａにデータを送る信号線と、排他的論理和回路１１８ａからバッファ領域１１７ａにデータを送る信号線とには、カウンタ回路１２０ａが接続されている。
【００６５】
バッファ領域１１７ｂは、排他的論理和回路１１８ｂ、ＤＥＳ回路１１９ｂ、排他的論理和回路１１８ｃに接続されている。ＤＥＳ回路１１９ｂからバッファ領域１１７ｂにデータを送る信号線と、排他的論理和回路１１８ｂからバッファ領域１１７ｂにデータを送る信号線とには、カウンタ回路１２０ｂが接続されている。
【００６６】
バッファ領域１１７ｃは、排他的論理和回路１１８ｃ、ＤＥＳ回路１１９ｃ、図示されていない次の処理段の排他的論理和回路に接続されている。ＤＥＳ回路１１９ｃからバッファ領域１１７ｃにデータを送る信号線と、排他的論理和回路１１８ｃからバッファ領域１１７ｃにデータを送る信号線とには、カウンタ回路１２０ｃが接続されている。
【００６７】
カウンタ回路１２０ａは、既に説明した接続関係に加え、カウンタ回路１２０ｂ、ＤＥＳ回路１１９ａ、およびエラーレジスタ１２１に接続されている。カウンタ回路１２０ｂは、既に説明した接続関係に加え、カウンタ回路１２０ｃ、ＤＥＳ回路１１９ｂ、およびエラーレジスタ１２１に接続されている。カウンタ回路１２０ｃは、既に説明した接続関係に加え、図示していないカウンタ回路、ＤＥＳ回路１１９ｃ、およびエラーレジスタ１２１に接続されている。
【００６８】
割り込み通知回路１２２は、データ長レジスタ１１３とエラーレジスタ１２１とに接続されているとともに、ＣＰＵ１０１に対する割り込み通知信号の出力線に接続されている。アドレスデコーダ回路１２３は、第１段メモリ１１６と第２段メモリ１１７とに接続されている。
【００６９】
ＩＶレジスタ１１１は、ＩＶを設定する６４ビットのレジスタである。ＩＶとは、１ワード目のデータとの間で排他的論理和の演算を行うべき入力データ（初期ベクトル）である。ＩＶレジスタ１１１は、ＣＰＵ１０１からのアクセスによって書き込みは可能であるが、読み取りはできない。
【００７０】
キーコードレジスタ１１２は、キーコードを設定するための６４ビットのレジスタである。詳細には、キーコードレジスタ１１２内の５６ビットがキーコードであり、他の８ビットがパリティビットである。ＩＶレジスタ１１１は、ＣＰＵ１０１からのアクセスによって書き込みは可能であるが、読み取りはできない。
【００７１】
データ長レジスタ１１３は、ＤＥＳ処理済みのデータ長（ワード数）を表示する６４ビットのレジスタである。データ長レジスタ１１３は、上位３２ビットによって第１段メモリ１１６にストアされたワード数が示され、下位３２ビットによってＤＥＳ処理後、第２段メモリ１１７にストアされたワード数が示される。ＩＶレジスタ１１１は、ＣＰＵ１０１からのアクセスによって書き込みはできないが、読み取りは可能である。
【００７２】
動作指定ビット１１４は、入力されたデータに対して実行する処理がデコード（復号）かエンコード（暗号化）かを設定するビットデータ（フラグ）である。動作指定ビット１１４は、ＣＰＵ１０１からのアクセスによって書き込みも読み取りも可能である。
【００７３】
クリアビット１１５は、回路を初期化するためのビットデータ（フラグ）である。クリアビット１１５は、ＣＰＵ１０１からのアクセスによって書き込みも読み取りも可能である。
【００７４】
第１段メモリ１１６は、ＤＥＳ処理の対象とするデータをストアするための６４ビット幅のＲＡＭメモリ回路である。第１段メモリ１１６は、ＣＰＵ１０１からのアクセスによって書き込みも読み取りも可能である。すなわち、第１段メモリ１１６は、ＣＰＵ１０１から通常のＲＡＭと同様に、主記憶装置として利用することができる。
【００７５】
第２段メモリ１１７は、第１段メモリ１１６にストアされたデータのコピーをストアし、ＤＥＳ処理実行後の暗号もしくは複合されたデータを保持するための６４ビット幅のＲＡＭメモリ回路である。第２段メモリ１１７は、ＣＰＵ１０１からのアクセスによって書き込みはできないが、読み取りは可能である。
【００７６】
排他的論理和回路１１８ａ，１１８ｂ，１１８ｃは、ワード単位で排他的論理和の論理演算を実行する回路である。
ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃは、ＤＥＳによる暗号化または復号処理を実行する回路である。
【００７７】
カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、データの書き変わりをワードごとにカウントし、ＤＥＳ処理の実行開始をコントロールする回路である。換言すると、各カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、処理順が前後するもの同士で連携処理を行い、各ワードの処理順の検出を行う回路である。
【００７８】
連携処理の内容は、次の通りである。すなわち、各カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、ＤＥＳ処理の対象となるワードに関連づけられている。そして、関連づけられたワードのＤＥＳ処理が完了すると、カウンタ回路１２０ａ，１２０ｂ，１２０ｃに所定の値が設定される。
【００７９】
そこで、各カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、前の段のカウンタ回路の値を監視する。そして、処理順が直前となるワードに対する暗号化または復号の処理の実行の有無を、前の段のカウンタ回路に所定の値になったかどうかで判断する。そして、処理順が直前となるワードに対する暗号化または復号の処理の実行完了を確認したら、自身に対応するワードに対するＤＥＳ処理の実行開始をＤＥＳ回路に指示する。
【００８０】
エラーレジスタ１２１は、不正アクセスが行われたときにエラーを表示するレジスタである。
割り込み通知回路１２２は、エラーレジスタ１２１にエラー表示がされたときと、データ長レジスタ１１３において、０以外の値において、上位３２ビットの値＝下位３２ビットの値となったとき、ＣＰＵ１０１に対して割り込み通知を行う回路である。
【００８１】
アドレスデコーダ回路１２３は、第１段メモリ１１６と第２段メモリ１１７とに接続されている。また、アドレスデコーダ回路１２３は、外部のバスを介してＣＰＵ１０１に接続されている。
【００８２】
アドレスデコーダ回路１２３は、メモリ領域をアクセス時に、ワード単位のセレクションと１段目か２段目かの選択を行うデコード回路である。たとえば、割り込み通知回路１２２は、アドレス信号の下位１ビット目を見て、０ならば１段目のメモリをアクセス対象とし、１ならば２段目のメモリをアクセス対象とする。
【００８３】
なお、図５の例では、複数のＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃが示されているが、ＤＥＳの暗号化／復号処理は、ワード単位で順番に実行されるため、実際にはＤＥＳ回路は一つでよい。このようにＤＥＳ回路を各ワードで共有することにより回路規模を低減することができる。
【００８４】
以下、実際のデータ処理の流れに沿って、ＣＰＵ１０１による機密データ保護メモリモジュール１１０の操作、および機密データ保護メモリモジュール１１０内の各機能の働きを説明する。
【００８５】
［ステップＳ１］クリアビット１１５による初期化
ＣＰＵ１０１は、機密データ保護メモリモジュール１１０へのパケットの格納に先立ち、まず、クリアビット１１５に１を設定する。クリアビット１１５に１が設定されると、回路が初期化される。具体的には、エラー表示を行うエラーレジスタ１２１とデータ長を示すデータ長レジスタ１１３とには、それぞれ０が設定される。また、カウンタ回路１２０ａ，１２０ｂ，１２０ｃにも０が設定される。ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃは、前回の暗号化／復号処理で設定された値がクリアされる（たとえば、０が設定される）。
【００８６】
回路が初期化された後、クリアビット１１５は１→０となり、初期化の終了を表示する。
［ステップＳ２］ＩＶ、キーコードの設定
ＣＰＵ１０１は、ＤＥＳ処理に利用するＩＶとキーコードとを、それぞれＩＶレジスタ１１１とキーコードレジスタ１１２とに設定する。ＩＶレジスタ１１１に設定されたＩＶは、１ワード目の処理に利用される排他的論理和回路１１８ａに入力される。キーコードレジスタ１１２に設定されたキーコードは、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに入力される。
【００８７】
［ステップＳ３］暗号化か複合（平文化）の動作設定
ＣＰＵ１０１は、暗号化するのか複合するのか、モードを動作指定ビット１１４に設定する。本実施の形態では、復号（Ｄｅｃｏｄｅ）のとき１に設定し、暗号化（Ｅｎｃｏｄｅ）のとき０に設定する。動作指定ビット１１４に設定された値は、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに入力される。
【００８８】
［ステップＳ４］ＤＥＳ処理
ＣＰＵ１０１は、第１段メモリ１１６へ処理対象のパケットを書き込む。イントラネット４３からインターネット４２へ転送されるパケットであれば、第１段メモリ１１６に書き込まれるパケットは生パケットである。逆に、インターネット４２からイントラネット４３へ転送されるパケットであれば、第１段メモリ１１６に書き込まれるパケットは暗号パケットである。
【００８９】
第１段メモリ１１６へは、パケットが６４ビット単位で、バッファ領域１１６ａ，１１６ｂ，１１６ｃに書き込まれる。格納されたパケットのデータ長（ワード数）が、データ長レジスタ１１３の上位３２ビットに設定される。これにより、データ長レジスタ１１３の上位３２ビットを参照して、処理対象パケットのデータ長が分かる。
【００９０】
第１段メモリ１１６に格納されたパケットは、すぐに、第２段メモリ１１７にコピーされる。すると、複数のカウンタ回路１２０ａ，１２０ｂ，１２０ｃが連携することにより、第２段メモリ１１７内のバッファ領域１１７ａ，１１７ｂ，１１７ｃに格納されたワードの処理タイミングが制御される。その結果、ＤＥＳ処理が１ワード目（バッファ領域１１７ａに格納されたワード）から順次実行される。なお、カウンタ回路１２０ａ，１２０ｂ，１２０ｃの連携処理については後述する。
【００９１】
処理が開始されると、まず、動作指定ビット１１４の内容により暗号化か復号かが判断される。具体的には、動作指定ビット１１４の値が１であれば復号であり、動作指定ビット１１４の値が０であれば暗号化である。
【００９２】
暗号化であれば、最初のワードが格納されたバッファ領域１１７ａのデータが排他的論理和回路１１８ａに入力される。すると、排他的論理和回路１１８ａにおいて、入力されたワードとＩＶとの排他的論理和が演算され、演算結果がＤＥＳ回路１１９ａに入力される。ＤＥＳ回路１１９ａは、動作指定ビット１１４の値に応じたＤＥＳ処理を行う。具体的には、ＤＥＳ回路１１９ａは、キーコードレジスタ１１２に格納されているキーコードを用いて、入力されたデータを暗号化する。ＤＥＳ処理が行われたデータは、元のバッファ領域１１７ａに格納される。
【００９３】
復号であれば、最初のワードが格納されたバッファ領域１１７ａのデータがＤＥＳ回路１１９ａに入力される。ＤＥＳ回路１１９ａは、動作指定ビット１１４の値に応じたＤＥＳ処理を行う。具体的には、ＤＥＳ回路１１９ａは、キーコードレジスタ１１２に格納されているキーコードを用いて、入力されたデータを復号する。ＤＥＳ処理が行われたデータは、排他的論理和回路１１８ａに入力される。すると、排他的論理和回路１１８ａにおいて、入力されたワードとＩＶとの排他的論理和が演算され、演算結果が元のバッファ領域１１７ａに格納される。
【００９４】
次に、次のワードが格納されたバッファ領域１１７ｂのデータに対する暗号化または復号の処理が行われる。
暗号化であれば、次のワードが格納されたバッファ領域１１７ｂのデータが排他的論理和回路１１８ｂに入力される。すると、排他的論理和回路１１８ｂにおいて、入力されたワードと前の段のＤＥＳ処理結果であるバッファ領域１１７ａのデータとの排他的論理和が演算され、演算結果がＤＥＳ回路１１９ｂに入力される。ＤＥＳ回路１１９ｂは、動作指定ビット１１４の値に応じたＤＥＳ処理（暗号化）を行う。ＤＥＳ処理が行われたデータは、元のバッファ領域１１７ｂに格納される。
【００９５】
復号であれば、次のワードが格納されたバッファ領域１１７ｂのデータがＤＥＳ回路１１９ｂに入力される。ＤＥＳ回路１１９ｂは、動作指定ビット１１４の値に応じたＤＥＳ処理（復号）を行う。ＤＥＳ処理が行われたデータは、排他的論理和回路１１８ｂに入力される。すると、排他的論理和回路１１８ｂにおいて、入力されたワードと前の段のＤＥＳ処理結果であるバッファ領域１１７ａのデータとの排他的論理和が演算され、演算結果が元のバッファ領域１１７ｂに格納される。
【００９６】
以後、同様に、第２段メモリ１１７に格納されたワード単位のデータに対するＤＥＳ処理が行われる。ＤＥＳ処理が行われる毎に、処理後のデータが第２段メモリ１１７内の元のバッファ領域に格納される。
【００９７】
なお、第１段メモリ１１６に格納されているパケットは、第２段メモリ１１７に格納されたデータへのＤＥＳ処理実行中であっても、ＣＰＵ１０１によりリード可能である。
【００９８】
［ステップＳ５］処理済みのデータ長の設定
ＤＥＳ処理され、第２段メモリ１１７に格納されたデータ長（ワード数）がデータ長レジスタ１１３の下位３２ビットに設定される。これにより、データ長レジスタ１１３の下位３２ビットを参照して、処理対象パケットのうちＤＥＳ処理が完了したデータのデータ長が分かる。
【００９９】
［ステップＳ６］第２段メモリ１１７より暗号化もしくは複合済みのデータのリード
ＣＰＵ１０１は、第２段メモリ１１７にアクセスし、ＤＥＳによる暗号化処理、または復号処理が完了したデータを、適宜読み出す。なお、データ長レジスタ１１３の下位３２ビットにＤＥＳ処理済みのデータ長（ワード数）が示されているため、ＣＰＵ１０１はデータ長レジスタ１１３を参照することで、処理済みのデータだけ読み出すことが可能である。
【０１００】
また、データ長レジスタ１１３の上位３２ビットの値＝下位３２ビットの値となったとき、割り込み通知回路１２２からＣＰＵ１０１へ割り込み通知が行われる。この割り込み通知の信号により、ＣＰＵ１０１は、全ての処理が終了したことを知ることができる。なお、割り込み通知信号は、データ長レジスタ１１３をＣＰＵ１０１がリードすることにより、ディアサート（ネゲート）される。
【０１０１】
［ステップＳ７］エラー発生時のエラー通知
不正なオペレーションが生じたときエラーレジスタ１２１にエラーを示す情報が設定される。エラーレジスタ１２１にエラー内容が設定されると、割り込み通知回路１２２により、ＣＰＵ１０１に割り込み通知信号が出される。これにより、ＣＰＵ１０１がエラーの発生を認識し、エラーレジスタ１２１の内容を読み取る。割り込み信号は、ＣＰＵ１０１がエラーレジスタ１２１の内容を読み込んだときにディアサートされる。
【０１０２】
以上の様にして、機密データ保護メモリモジュール１１０において暗号化、または復号処理が行われる。
以下、カウンタ回路１２０ａ，１２０ｂ，１２０ｃの役割について説明する。
【０１０３】
カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、ワード単位のバッファ領域に対応づけて備えられている。第１段メモリ１１６に格納されているワードが、第２段メモリ１１７にコピーされたとき、対応するカウンタ回路が０→１にインクリメントされる。
【０１０４】
ＤＥＳ処理されたデータが第２段メモリ１１７に書き戻されると、書き戻されたバッファ領域に対応するカウンタ回路が１→２にインクリメントされる。
ワード単位に設けられたカウンタ回路１２０ａ，１２０ｂ，１２０ｃは前後で連係している。すなわち、１ワード目に対応するカウンタ回路１２０ａは、１の値が設定されると、ＤＥＳ処理の開始指示の信号を出す。また、２ワード目以降に対応するカウンタ回路１２０ｂ，１２０ｃは、前の段（図５中、１つ上に位置する）のカウンタ回路の値が２になったことを確認すると、ＤＥＳ処理の開始指示の信号を出す。このように、２段目以降のカウンタ回路１２０ｂ，１２０ｃは、前段のカウンタ回路の値を参照して、前のワードのＤＥＳ処理が実行終了したか否かを判定し、次のＤＥＳ処理に移ってよいかどうかを判定する。
【０１０５】
より、具体的な説明を行う。１ワード目のカウンタ回路１２０ａは０→１になった時点でＤＥＳ処理を実行に指示を出す。２ワード目のカウンタ回路１２０ｂは、０→１になった時点で１ワード目のカウンタ値を参照し、その値が２であればＤＥＳ処理を実行に移し、１であれば２にインクリメントされるまで待つ。また、各カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、それ以外の値の場合は、誤操作が起きたとみなし、エラーレジスタ１２１へエラー情報を出力する。この機構により、不正な不連続の書き込み動作を防ぐことができる。
【０１０６】
このように各カウンタ回路１２０ａ，１２０ｂ，１２０ｃが動作していれば、カウンタ回路１２０ａ，１２０ｂ，１２０ｃの値を参照することで、ＤＥＳ処理済みのデータのデータ長が分かる。すなわち、値が２であるカウンタ回路の数がＤＥＳ処理済みのデータ長（ワード数）を示す。従って、値が２であるカウンタ回路の数がデータ長レジスタ１１３の下位３２ビットに設定される。
【０１０７】
次に、カウンタ回路１２０ａ，１２０ｂ，１２０ｃの処理内容について説明する。
図６は、カウンタ回路のステートマシンを示す図である。図６に示すように、カウンタ回路１２０ａ，１２０ｂ，１２０ｃには、５つの状態がある。第１の状態（Ｉｄｌｅ）ＳＴ１は、アイドル状態であり、カウンタの値は０である。第２の状態（Ｃｎｔ１）ＳＴ２は、ワードコピー完了状態であり、カウンタの値は１である。第３の状態（ＤＥＳｇｏ）ＳＴ３は、ＤＥＳ処理開始信号出力状態であり、カウンタの値は１である。第４の状態（Ｃｎｔ２）ＳＴ４は、ＤＥＳ処理完了状態であり、カウンタの値は２である。第５の状態（Ｅｒｒｏｒ）ＳＴ５は、エラー発生状態であり、カウンタは様々な値を採り得る。
【０１０８】
ここで、カウンタ回路１２０ａ，１２０ｂ，１２０ｃに入力される信号は、以下の通りである。
・ＣｏｐｙＷｒｉｔｅ：第１段メモリ１１６から第２段メモリ１１７にデータコピーするためのライト信号
・ＡｆｔｅｒＤＥＳＷｒｉｔｅ：ＤＥＳ処理後のデータを第２段メモリ１１７にデータを書き込むためのライト信号
・ＮｅｘｔＣｏｕｎｔｅｒ［１：０］：次段のカウンタ回路のカウンタ値
・ＰｒｅＣｏｕｎｔｅｒ［１：０］：前段のカウンタ回路のカウンタ値（ただし、一番初段のカウンタ回路では、カウント値２が固定値で設定されている。）
・Ｃｌｅａｒ：クリア信号
・ＳｙｓｔｅｍＣｌｏｃｋ：クロック信号
また、カウンタ回路から出力される信号は、以下の通りである。
・ＥｒｒｏｒＳｉｇｎａｌ：エラー信号
・ＤＥＳｇｏ：ＤＥＳ処理実行を開始させるための信号
・Ｃｎｔ［１：０］：カウンタ値
これらの入出力信号に応じて、カウンタ回路１２０ａ，１２０ｂ，１２０ｃの状態が遷移する。
【０１０９】
まず、第１の状態ＳＴ１では、カウンタの値に０が設定される。カウンタの値が０の間、第１の状態ＳＴ１が維持される。ここで、ＣｏｐｙＷｒｉｔｅ信号がアサートされると、第２の状態ＳＴ２に遷移する。なお、次段のカウンタの値を示す信号（ＮｅｘｔＣｏｕｎｔｅｒ［１：０］）が０より大きな値を示した場合、第１の状態ＳＴ１から第５の状態ＳＴ５に遷移する。
【０１１０】
第２の状態ＳＴ２では、カウンタの値に１が設定される。ここで、前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２未満の場合、第２の状態ＳＴ２が維持される。前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２になると、第３の状態ＳＴ３に遷移する。また、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１に遷移する。さらに、前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が０になるか、次段のカウンタ回路のカウンタ値（ＮｅｘｔＣｏｕｎｔｅｒ）が２になると、第５の状態ＳＴ５に遷移する。
【０１１１】
第３の状態ＳＴ３では、ＤＥＳ処理実行を開始させるための信号（ＤＥＳｇｏ）の出力処理が行われる。この信号出力に応じて、カウンタ回路に対応する（同じ処理段の）ＤＥＳ回路によってＤＥＳ処理が実行される。ＤＥＳ処理が実行され、ＤＥＳ処理後のデータを第２段メモリ１１７にデータを書き込むためのライト信号（ＡｆｔｅｒＤＥＳＷｒｉｔｅ）がアサートされると、第４の状態ＳＴ４に遷移する。そして、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１に遷移する。
【０１１２】
第４の状態ＳＴ４では、カウンタ回路のカウンタ値に２が設定される。クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１に遷移する。前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２未満になると、第５の状態ＳＴ５に遷移する。
【０１１３】
第５の状態ＳＴ５では、エラー処理が行われる。そして、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１に遷移する。
以上の仕組みにより、データの暗号化／復号処理を効率よく行うことができる。たとえば、処理対象のパケットを、第１段メモリ１１６から第２段メモリ１１７にすぐにコピーして、第２段メモリ１１７上でＤＥＳ処理を実行するため、ＤＥＳ処理中であっても第１段メモリ１１６内のデータの入出力が可能である。また、データ長レジスタ１１３を参照することで、ＤＥＳ処理が完了したデータのデータ長を知ることができるため、ＤＥＳ処理が完了したデータから順に、ＣＰＵ１０１による解析処理等に利用することができる。さらに、１ワードが第２段メモリ１１７のバッファ領域に書き込まれる毎に逐次ＤＥＳ処理を行うことができる。すなわち、処理対象のパケット全体が格納されるのを待たずに、ＤＥＳ処理を進めることが可能となる。
【０１１４】
［第２の実施の形態］
次に本発明の第２の実施の形態について説明する。第２の実施の形態は、ＤＥＳ−ＥＣＢモードによる暗号化／復号を行うシステムに本発明を適用したものである。
【０１１５】
図７は、ＤＥＳ−ＥＣＢモードの動作を説明する図である。図７では、平文のデータがＮ個（Ｎは自然数）のワード６１，６２，６３に分割されている。ここで、最初のワード６１の内容を「Ｐ１１」とする。２番目のワード６２の内容を「Ｐ１２」とする。そして、最後のワード６３の内容を「Ｐ１Ｎ」とする。
【０１１６】
平文を暗号化する場合、内容が「Ｐ１１」の最初のワード６１は、暗号化部７１によって暗号化され、内容が「Ｃ１１」の暗号化されたワード６４が生成される。
【０１１７】
内容が「Ｐ１２」の２番目のワード６２は、暗号化部７２によって暗号化され、内容が「Ｃ１２」の暗号化されたワード６５が生成される。
同様に、各ワードの暗号化が行われる。そして、内容が「Ｐ１Ｎ」のＮ番目のワード６３は、暗号化部７３によって暗号化され、内容が「Ｃ１Ｎ」の暗号化されたワード６６が生成される。
【０１１８】
暗号化された各ワード６４，６５，６６によって暗号文が構成される。暗号文を平文化（復号）する場合、内容が「Ｃ１１」の最初のワード６４は、復号部７４によって復号され、内容が「Ｐ１１」のワード６７が生成される。
【０１１９】
内容が「Ｃ１２」の２番目のワード６５は、復号部７５によって復号され、内容が「Ｐ１２」のワード６８が生成される。
同様に、各ワードの復号が行われる。そして、内容が「Ｃ１Ｎ」のＮ番目のワード６６は、復号部７６によって復号され、内容が「Ｐ１Ｎ」のワード６９が生成される。
【０１２０】
このようにして生成されたワード６７，６８，６９で構成される平文の内容は、ワード６１，６２，６３で構成される平文と同じである。
このようにワード毎の暗号化／復号処理を実行することができる。ＤＥＳ−ＥＣＢモードは、ワード毎の連鎖を伴わず、ワード単位に独立した処理を行っているため、各ワードのＤＥＳ処理を並列に実行することが可能となる。並列にＤＥＳ処理を実行すれば、処理を高速に行うことができる。
【０１２１】
第２の実施の形態におけるシステム構成例は、図３に示した第１の実施の形態のシステム構成と同様である。図３に示すＶＰＮ装置１００を第２の実施の形態に係るＶＰＮ装置に置き換えた場合を想定して、第２の実施の形態の具体的な内容を説明する。また、第２の実施の形態に係るＶＰＮ装置のハードウェア構成は、図４に示した第１の実施の形態のハードウェア構成とほぼ同様である。ただし、図４に示す機密データ保護メモリモジュール１１０は、ＤＥＳ−ＥＣＢモードの処理を実行する機密データ保護メモリモジュールに置き換えられる。
【０１２２】
以下の説明では、機密データ保護メモリモジュール以外の構成については図３，図４に示した各要素の符号を用いて、第２の実施の形態の詳細について説明する（第３の実施の形態以降の他の実施の形態の説明についても同様）。
【０１２３】
図８は、第２の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。ＤＥＳ−ＥＣＢモードの秘密保持機能を備えたメモリモジュールの構成は、図５に示した第１の実施の形態の構成とほぼ同じである。そこで、図８においては、第１の実施の形態と同じ要素には同一の符号を付し、説明を省略する。
【０１２４】
第１の実施の形態と異なるのは、図５に示すＩＶレジスタ１１１と排他的論理和回路１１８ａ，１１８ｂ，１１８ｃが無いことである。そのため、図８に示す各要素間の接続関係では、第２段メモリ１１７のバッファ領域１１７ａ，１１７ｂ，１１７ｃそれぞれのデータが、対応するＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに直接入力されている。なお、第２の実施の形態においても、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃは、共有の１つの回路で実現してもよいものとする。したがって、ＤＥＳ処理は、１ワード目から順番に行われる。
【０１２５】
また、図８に示す各要素の機能は、図５に示したＤＥＣ−ＣＢＣモードの機能を備えた機密データ保護メモリモジュールの同名の要素の機能と同様である。ただし、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃは、排他論理和回路の論理演算結果ではなく、第２段メモリ１１７のバッファ領域１１７ａ，１１７ｂ，１１７ｃに格納されているワードに対して、ＤＥＳ処理を施す。
【０１２６】
次に、このような構成の機密データ保護メモリモジュール内の各機能の働きを説明する。なお、図５に示した第１の実施の形態に係る機密データ保護メモリモジュールと同じ部分については説明を省略し、異なる処理が行われる部分について説明する。
【０１２７】
第１の実施の形態と異なるのは、「ＩＶ、キーコードの設定（ステップＳ２）」の処理と「ＤＥＳ処理（ステップＳ４）」の処理である。他の処理（「クリアビット１１５による初期化（ステップＳ１）」、「暗号化か複合（平文化）の動作設定（ステップＳ３）」、「処理済みのデータ長の設定（ステップＳ５）」、「第２段メモリ１１７より暗号化もしくは複合済みのデータのリード（ステップＳ６）」、「エラー発生時のエラー通知（ステップＳ７）」）については、第１の実施の形態の動作と同じである。
【０１２８】
［ステップＳ２ａ］キーコードの設定
ＤＥＳ−ＥＣＢモードでは、ＩＶは用いないため、「ＩＶ、キーコードの設定（ステップＳ２）」処理に代えてキーコードの設定が行われる。具体的には、ＣＰＵ１０１は、ＤＥＳ処理に利用するキーコードを、キーコードレジスタ１１２に設定する。キーコードレジスタ１１２に設定されたキーコードは、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに入力される。
【０１２９】
［ステップＳ４ａ］ＤＥＳ処理
第１段メモリ１１６への処理対象のパケットを書き込み処理と、第１段メモリ１１６から第２段メモリ１１７へのコピー処理とが、第１の実施の形態と同様に行われる。すると、複数のカウンタ回路１２０ａ，１２０ｂ，１２０ｃが連携することにより、第２段メモリ１１７内のバッファ領域１１７ａ，１１７ｂ，１１７ｃに格納されたワードの処理タイミングが制御される。その結果、ＤＥＳ処理が１ワード目（バッファ領域１１７ａに格納されたワード）から順次実行される。
【０１３０】
処理が開始されると、まず、最初のワードが格納されたバッファ領域１１７ａのデータがＤＥＳ回路１１９ａに入力される。ＤＥＳ回路１１９ａは、動作指定ビット１１４の値に応じたＤＥＳ処理を行う。具体的には、動作指定ビット１１４の値が１であれば、ＤＥＳ回路１１９ａは、キーコードレジスタ１１２に格納されているキーコードを用いて入力されたデータを復号する。また、動作指定ビット１１４の値が０であれば、ＤＥＳ回路１１９ａは、キーコードレジスタ１１２に格納されているキーコードを用いて入力されたデータを暗号化する。ＤＥＳ処理が行われたデータは、元のバッファ領域１１７ａに格納される。
【０１３１】
次に、次のワードが格納されたバッファ領域１１７ｂのデータがＤＥＳ回路１１９ｂに入力される。ＤＥＳ回路１１９ｂは、動作指定ビット１１４の値に応じたＤＥＳ処理を行う。ＤＥＳ処理が行われたデータは、元のバッファ領域１１７ｂに格納される。
【０１３２】
以後、同様に、第２段メモリ１１７に格納されたワード単位のデータに対するＤＥＳ処理が行われる。ＤＥＳ処理が行われる毎に、処理後のデータが第２段メモリ１１７内の元のバッファ領域に格納される。
【０１３３】
このようにして、ＤＥＳ−ＥＣＢモードによる暗号化／復号処理が行われる。ＤＥＳ−ＥＣＢモードで暗号化／復号を行えば、機密データ保護メモリモジュールの内部構成を簡略化することができる。
【０１３４】
［第３の実施の形態］
第３の実施の形態は、３ＤＥＳによりデータの暗号化／復号処理を行う場合の例である。
【０１３５】
図９は、３ＤＥＳの処理の手順を示す図である。図９（Ａ）は、３ＤＥＳの暗号化処理を示しており、図９（Ｂ）は、３ＤＥＳの復号処理を示している。
３ＤＥＳでは、ＤＥＳ処理が３回繰り返して行われる。ＤＥＳ処理の度に異なるキーコード８１〜８３が使用される。
【０１３６】
３ＤＥＳの暗号化処理では、まず、値が「キーコード＃１」であるキーコード８１を用いて暗号化処理９１を行う。次に、値が「キーコード＃２」であるキーコード８２を用いて復号処理９２を行う。最後に、値が「キーコード＃３」であるキーコード８３を用いて再度暗号化処理９３を行う。これにより、３重のＤＥＳ処理がかけられた強度の高い暗号データが得られる。
【０１３７】
このようにして暗号化された暗号データの復号処理（３ＤＥＳ復号処理）では、まず、値が「キーコード＃３」であるキーコード８３を用いて復号処理９４を行う。次に、値が「キーコード＃２」であるキーコード８２を用いて暗号化処理９５を行う。最後に、値が「キーコード＃１」であるキーコード８１を用いて再度復号処理９６を行う。これにより、３重のＤＥＳ処理がかけられた暗号データを復号することができる。
【０１３８】
なお、このような処理手順は、ＣＢＣモードでもＥＣＢモードでも同じである。
３ＤＥＳを実現するための機密データ保護メモリモジュールの構成は、図５に示す第１の実施の形態の回路構成のうち、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃとキーコードレジスタ１１２との構成を変更したものである。以下、第１の実施の形態と異なる部分について説明する。
【０１３９】
図１０は、第３の実施の形態に係る暗号化／復号処理を実現するための回路構成を示す図である。第３の実施の形態では、図５に示すキーコードレジスタ１１２がキーコードレジスタ群１３０に置き換えられ、図５に示すＤＥＳ回路１１９ａがＤＥＳ処理部１４０に置き換えられている。
【０１４０】
キーコードレジスタ群１３０には、３つのキーコードレジスタ１３１，１３２，１３３が含まれている。ここで、キーコードレジスタ１３１に設定されたキーコードの値を「キーコード＃１」、キーコードレジスタ１３２に設定されたキーコードの値を「キーコード＃２」、キーコードレジスタ１３３に設定されたキーコードの値を「キーコード＃３」とする。
【０１４１】
ＤＥＳ処理部１４０は、ＤＥＳ回路１４１、スイッチ回路１４２、および６４ビットバッファ１４３を有している。動作指定ビット１１４の値は、ＤＥＳ回路１４１とスイッチ回路１４２とに入力される。キーコードレジスタ群１３０内の各キーコードレジスタ１３１〜１３３の値は、ＤＥＳ回路１４１に入力される。ＤＥＳ回路１４１の出力は、６４ビットバッファ１４３に入力される。６４ビットバッファ１４３の出力は、スイッチ回路１４２に入力される。スイッチ回路１４２の出力は、ＤＥＳ回路１４１に入力される。
【０１４２】
また、スイッチ回路１４２は、第２段メモリ１１７に接続されている。だだし、ＣＢＣモードの場合、第２段メモリ１１７からスイッチ回路１４２に入力されるデータは、排他的論理和回路１１８ａを経由して入力される。スイッチ回路１４２から第２段メモリ１１７に出力されるデータは、他の処理回路を経由せずに第２段メモリ１１７に入力される。
【０１４３】
ＤＥＳ回路１４１は、動作指定ビット１１４に設定された値に応じて、３回のＤＥＳ処理を行う。
たとえば、動作指定ビット１１４の値が０であれば、ＤＥＳ回路１４１は、暗号化処理、復号処理、暗号化処理の順でＤＥＳ処理を行う。このとき、最初の暗号化処理では、キーコードレジスタ１３１に設定された「キーコード＃１」を用いて、スイッチ回路１４２から入力されたデータを暗号化する。復号処理では、キーコードレジスタ１３２に設定された「キーコード＃２」を用いて、スイッチ回路１４２から入力されたデータを復号する。２回目の暗号化処理では、キーコードレジスタ１３３に設定された「キーコード＃３」を用いて、スイッチ回路１４２から入力されたデータを暗号化する。
【０１４４】
また、動作指定ビット１１４の値が１であれば、ＤＥＳ回路１４１は、復号処理、暗号化処理、復号処理の順でＤＥＳ処理を行う。このとき、最初の復号処理では、キーコードレジスタ１３３に設定された「キーコード＃３」を用いて、スイッチ回路１４２から入力されたデータを復号する。暗号化処理では、キーコードレジスタ１３２に設定された「キーコード＃２」を用いて、スイッチ回路１４２から入力されたデータを暗号化する。２回目の復号処理では、キーコードレジスタ１３１に設定された「キーコード＃１」を用いて、スイッチ回路１４２から入力されたデータを復号する。
【０１４５】
ＤＥＳ回路１４１は、ＤＥＳ処理が完了する毎に、処理結果を６４ビットバッファ１４３に格納する。６４ビットバッファ１４３は、ＤＥＳ回路１４１によってＤＥＳ処理が行われた結果得られるデータを格納する記憶領域である。
【０１４６】
スイッチ回路１４２は、ＤＥＳ回路１４１への入力を制御する回路である。３ＤＥＳの処理開始の信号が出されると、スイッチ回路１４２は、まず、第２段メモリ１１７の対応するバッファ領域１１７ａから出力されたデータの排他的論理和の演算結果をＤＥＳ回路１４１に入力する。次に、６４ビットバッファ１４３にＤＥＳ処理の結果が格納されたことを確認すると、スイッチ回路１４２は、６４ビットバッファ１４３に格納されたデータを、ＤＥＳ回路１４１に入力する。
【０１４７】
その後、６４ビットバッファ１４３にＤＥＳ処理の結果が格納されたことを確認すると、スイッチ回路１４２は、６４ビットバッファ１４３に格納されたデータを、再度ＤＥＳ回路１４１に入力する。さらにその後、６４ビットバッファ１４３にＤＥＳ処理の結果が格納されたことを確認すると、スイッチ回路１４２は、６４ビットバッファ１４３に格納されたデータを第２段メモリ１１７のバッファ領域１１７ａに対して出力する。
【０１４８】
図５に示す他のＤＥＳ回路１１９ｂ、１１９ｃも、ＤＥＳ処理部１４０と同様の回路に置き換えられる。
このような構成の機密データ保護メモリモジュールによれば、たとえば、第２段メモリ１１７に暗号化対象の生パケットが格納されると、バッファ領域１１７ａに格納されたワードは、排他的論理和回路１１８ａで論理演算されたのち、スイッチ回路１４２を経由してＤＥＳ回路１４１に入力される。ＤＥＳ回路１４１は、「キーコード＃１」を用いて入力されたワードを暗号化し、６４ビットバッファ１４３に格納する。
【０１４９】
すると、６４ビットバッファ１４３に格納されたデータが、スイッチ回路１４２を経由して、ＤＥＳ回路１４１に入力される。ＤＥＳ回路１４１は、「キーコード＃２」を用いて入力されたワードを復号し、６４ビットバッファ１４３に格納する。
【０１５０】
その後、６４ビットバッファ１４３に格納されたデータが、スイッチ回路１４２を経由して、ＤＥＳ回路１４１に入力される。ＤＥＳ回路１４１は、「キーコード＃３」を用いて入力されたワードを暗号化し、６４ビットバッファ１４３に格納する。
【０１５１】
６４ビットバッファ１４３に格納されたデータが、スイッチ回路１４２を経由して、第２段メモリ１１７に出力される。
このようにして、生パケットが暗号化され、暗号化パケットが第２段メモリ１１７に格納される。
【０１５２】
復号すべき暗号化パケットが第２段メモリ１１７に格納されたときは、ワード単位で、「キーコード＃３」による復号、「キーコード＃２」による暗号化、「キーコード＃１」による復号が行われる。その結果、復号された生パケットが第２段メモリ１１７に格納される。
【０１５３】
このようにして、第２段メモリ１１７に格納されたパケットに対して、３ＤＥＳによる暗号化／復号を行うことができる。
［第４の実施の形態］
第４の実施の形態は、モード切替により、暗号化／復号処理の方式を切り替えることができる機密データ保護メモリモジュールの例である。本実施の形態では、以下の４つの暗号化／復号の方式を選択的に適用することができる。
・ＤＥＳ−ＣＢＣモード
・ＤＥＳ−ＥＣＢモード
・３ＤＥＳ−ＣＢＣモード
・３ＤＥＳ−ＥＣＢモード
図１１は、第４の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図１１に示す構成は、ほとんどの要素が図５に示した第１の実施の形態の構成要素と同じであるため、同じ要素には同一の符号を付し説明を省略する。
【０１５４】
図５に示した第１の実施の形態の構成と異なる点として、まず、モードレジスタ１２４が追加されている。モードレジスタ１２４は、暗号化／復号処理のモードを指定する値が設定される記憶領域である。モードレジスタ１２４の内容は、ＣＰＵ１０１によって設定される。たとえば、ＤＥＳ−ＣＢＣモードのときは、モードレジスタ１２４に０が設定される。ＤＥＳ−ＥＣＢモードのときは、モードレジスタ１２４に１が設定される。３ＤＥＳ−ＣＢＣモードのときは、モードレジスタ１２４に２が設定される。３ＤＥＳ−ＥＣＢモードモードのときは、モードレジスタ１２４に３が設定される。
【０１５５】
ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃは、ＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃに置き換えられている。ＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃの内部構成は、図１０に示した第３の実施の形態のＤＥＳ処理部１４０とほぼ同じである。
【０１５６】
ただし、第４の実施の形態に係るＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃは、モードレジスタ１２４の値が入力されており、モードレジスタの値に応じてＤＥＳ処理を実行するか、３ＤＥＳ処理を実行するかの判別機能を有している。
【０１５７】
ＤＥＳ処理を実行する場合、ＤＥＳ回路で最初のＤＥＳ処理が実行され、処理結果が６４ビットバッファに格納されると、スイッチ回路は６４ビットバッファの内容を、第２段メモリ１１７に対して出力する。３ＤＥＳ処理を実行する場合の処理手順は、図１０の説明で示したとおりである。
【０１５８】
キーコードレジスタ１１２は、キーコードレジスタ群１３０ａに置き換えられている。キーコードレジスタ群１３０ａの内部構成は、図１０に示した第３の実施の形態のキーコードレジスタ群１３０と同様である。すなわち、キーコードレジスタ群１３０ａは、３つのキーコードレジスタを有しており、各キーコードレジスタにキーコードが設定されている。
【０１５９】
また、排他的論理和回路１１８ｄ，１１８ｅ，１１８ｆは、図５に示した第１の実施の形態に係る排他的論理和回路１１８ａ，１１８ｂ，１１８ｃの機能に加え、モードレジスタ１２４の値を参照して、論理演算の要否を判断する機能を有している。すなわち、モードレジスタ１２４においてＤＥＳ−ＣＢＣモードまたは３ＤＥＳ−ＣＢＣモードが指定されている場合には、排他的論理和回路１１８ｄ，１１８ｅ，１１８ｆは、排他的論理和演算を実行する。一方、モードレジスタ１２４においてＤＥＳ−ＥＣＢモード、３ＤＥＳ−ＥＣＢモードが指定されていた場合には、排他的論理和回路１１８ｄ，１１８ｅ，１１８ｆは、排他的論理和演算を行わず、第２段メモリ１１７から取り出したデータを、そのままＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃに渡す。
【０１６０】
このような構成の機密データ保護メモリモジュールによれば、第２段メモリ１１７に格納されたパケットは、ワード単位にＤＥＳ処理が施される。たとえば、バッファ領域１１７ａに格納されたワードは、排他的論理和回路１１８ｄに入力される。排他的論理和回路１１８ｄは、モードレジスタ１２４を参照し、ＣＢＣモードが指定されていれば、入力されたデータとＩＶレジスタ１１１に格納されたＩＶとの排他的論理和を演算し、演算結果をＤＥＳ処理部１４０ａに渡す。また、排他的論理和回路１１８ｄは、モードレジスタ１２４においてＥＣＢモードが指定されていれば、バッファ領域１１７ａのデータをそのままＤＥＳ処理部１４０ａに渡す。
【０１６１】
ＤＥＳ処理部１４０ａは、モードレジスタ１２４を参照し、ＤＥＳ処理が指定されていれば、動作指定ビット１１４の値に応じたＤＥＳ処理（暗号化または復号）を１回だけ行い、処理結果をバッファ領域１１７ａに格納する。また、ＤＥＳ処理部１４０ａは、モードレジスタ１２４において３ＤＥＳ処理が指定されていれば、動作指定ビット１１４の値に応じたＤＥＳ処理を３回（暗号化→復号→暗号化または復号→暗号化→復号）繰り返して行い、処理結果をバッファ領域１１７ａに格納する。
【０１６２】
このようにして、モード切替により、暗号化の強度や処理速度等を考慮した適切な暗号化／復号方式を実行することができる。
［第５の実施の形態］
第５の実施の形態は、第２段メモリの一部の記憶領域に対してのみ暗号化／復号処理を施すことができる機密データ保護メモリモジュールの例である。
【０１６３】
すなわち、機密データ保護メモリモジュールをＶＰＮ装置に実装した場合、メモリ上の特定領域を暗号化もしくは複合したい場合が多い。たとえば、図３に示したように、インターネット経由で暗号パケット５２を受け取ったＶＰＮ装置１００では、暗号パケット５２内の暗号化されたパケット５２ｃのみを復号すればよい。メモリに格納されたパケットの一部に対する暗号化／復号処理を行う機能を有している場合、暗号パケット５２をそのまま機密データ保護メモリモジュールにＤＭＡ転送すればよい。
【０１６４】
図１２は、暗号化／復号対象データを限定した場合のメモリ領域を示す図である。図１２に示すように、第２段メモリ１５０の記憶領域が、暗号化／復号の非対象領域１５１，１５３、暗号化／復号対象領域１５２に分けられている。たとえば、ワード数がＺ（Ｚは自然数）のパケットが格納されたとき、ｉワード目（ｉは、０＜ｉ＜Ｚの自然数）を暗号化／復号開始ワードとして指定し、ｊワード目（ｊは、ｉ＜ｊ＜Ｚの自然数）を暗号化／復号終了ワードとして指定することができる。これにより、ｉワード目からｊワード目までの範囲に限定して、暗号化／復号対象領域１５２とすることができる。
【０１６５】
図１３は、第５の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図１３では、ＤＥＳ−ＣＢＣモードによる暗号化／復号処理を行う場合のｋワード目の１ワード分の暗号化／復号回路１７０が示されている。
【０１６６】
図１３において、暗号化／復号回路１７０の外部に示されている要素は、機密データ保護メモリモジュール内に１つだけ設けられた要素である。暗号化／復号回路１７０内の要素は、処理対象となるワード毎に、ワード数分設けられる要素である。
【０１６７】
第５の実施の形態では、図５に示す第１の実施の形態の構成と比較し、機密データ保護メモリモジュール内に、スタートワード指定レジスタ１６１、エンドワード指定レジスタ１６２、スタートビット１６３、及びエンドビット１６４が追加されている。
【０１６８】
スタートワード指定レジスタ１６１は、暗号化もしくは複合化を開始するスタートワードを設定するレジスタである。スタートワード指定レジスタ１６１は、ＣＰＵ１０１からの書き込みも、読み出しも可能である。
【０１６９】
エンドワード指定レジスタ１６２は、暗号化もしくは複合化処理の最終ワードを設定するレジスタである。エンドワード指定レジスタ１６２は、ＣＰＵ１０１による書き込みも、読み出しも可能である。
【０１７０】
スタートビット１６３は、処理の開始を指示するビットデータである。スタートビット１６３は、ＣＰＵ１０１からの書き込みも、読み出しも可能である。
エンドビット１６４は、処理の終了を示すビットデータである。エンドビット１６４は、ＣＰＵ１０１による書き込みも、読み出しも可能である。
【０１７１】
割り込み通知回路１２２ａは、図５に示した第１の実施の形態の割り込み通知回路１２２と異なり、エンドビット１６４に処理終了を示すビットデータが設定されると、ＣＰＵ１０１に対する割り込み信号を発生する。
【０１７２】
ＩＶレジスタ１１１、キーコードレジスタ１１２、動作指定ビット１１４、およびクリアビット１１５については、図５に示した同名の構成要素と同じ機能である。
【０１７３】
１ワード分の暗号化／復号回路１７０は、第１段メモリ１１６のｋ番目のバッファ領域１１６ｋ、第２段メモリ１１７のｋ番目のバッファ領域１１７ｋ、排他的論理和回路１７１、ＤＥＳ回路１７２、カウンタ回路１７３、比較器１７４、比較器１７５、マルチプレクサ（ＭＵＸ）回路１７６、比較器１７７で構成される。ここで、バッファ領域１１６ｋ、バッファ領域１１７ｋ、排他的論理和回路１７１、ＤＥＳ回路１７２、及びカウンタ回路１７３の接続関係は、図５に示した構成の同名の構成要素同士（たとえば、バッファ領域１１６ａ，１１７ａ、排他的論理和回路１１８ａ、ＤＥＳ回路１１９ａおよびカウンタ回路１２０ａ）の接続関係と同様である。
【０１７４】
比較器１７４には、スタートワード指定レジスタ１６１とスタートビット１６３との値が入力されている。比較器１７４の出力は、カウンタ回路１７３に入力される。比較器１７５には、スタートワード指定レジスタ１６１の値が入力されている。比較器１７５の出力は、ＭＵＸ回路１７６に入力されている。ＭＵＸ回路１７６は、比較器１７５の出力以外に、前段の処理済みデータ（第２段メモリ１１７のｋ−１番目のバッファ領域のデータ）と、ＩＶレジスタ１１１の値とが入力されている。ＭＵＸ回路１７６の出力は、排他的論理和回路１７１に入力される。比較器１７７には、エンドワード指定レジスタ１６２の値とカウンタ回路１７３の値とが入力される。比較器１７７の出力は、エンドビット１６４に入力される。
【０１７５】
比較器１７４は、スタートビット１６３に処理開始を示すビットデータが設定されると、スタートワード指定レジスタ１６１に設定されたスタートワードと、暗号化／復号回路１７０に含まれるバッファ領域１１７ｋに格納されるワードを示す値とを比較する。そして、スタートワードがバッファ領域１１７ｋに格納されるワードである場合、処理開始を示す信号を、カウンタ回路１７３に通知する。
【０１７６】
比較器１７５は、スタートワード指定レジスタ１６１に設定されたスタートワードと、暗号化／復号回路１７０に含まれるバッファ領域１１７ｋに格納されるワードを示す値とを比較する。そして、スタートワードがバッファ領域１１７ｋに格納されるワードである場合、バッファ領域１１７ｋに格納されたワードが最初のワードであることを示す信号を、ＭＵＸ回路１７６に通知する。
【０１７７】
ＭＵＸ回路１７６は、比較器１７５からの信号に応じて、ＩＶレジスタ１１１の値と前段の処理済みのデータとの何れか一方を、排他的論理和回路１７１に入力する。具体的には、ＭＵＸ回路１７６は、比較器１７５からの信号によりバッファ領域１１７ｋ内のワードが最初のワードであることが示されたときには、ＩＶレジスタ１１１の値を排他的論理和回路１７１に入力する。また、ＭＵＸ回路１７６は、比較器１７５からの信号によりバッファ領域１１７ｋ内のワードが最初のワードではないことが示されたときには、前段の処理済みのデータを排他的論理和回路１７１に入力する。
【０１７８】
比較器１７７は、暗号化もしくは複合化処理の終了ワードを設定するエンドワード指定レジスタ１６２のワード値がバッファ領域１１７ｋ内のワードである場合、カウンタ回路１７３からの信号を受けて、そのワードのデータ処理が終了した時点で、処理の終了をエンドビット１６４とカウンタ回路１７３へ通知する。
【０１７９】
カウンタ回路１７３は、初期状態では０が設定されており、ワードが第１段メモリ１１６のバッファ領域１１６ｋから第２段メモリ１１７のバッファ領域１１７ｋにコピーされたときに１が設定される。そして、カウンタ回路１７３は、比較器１７４によってバッファ領域１１７ｋ内のワードが開始ワードであることが示されたとき、または前段のカウンタ回路の値が２になったときに、ＤＥＳ回路１７２に対してＤＥＳ処理の開始を指示する。また、カウンタ回路１７３は、ＤＥＳ回路１７２により処理されたデータがバッファ領域１１７ｋに格納されると、カウンタ値を２に設定する。
【０１８０】
ＤＥＳ回路１７２の動作は、図５に示した第１の実施の形態のＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃと同様である。
次に、カウンタ回路１７３の処理内容について詳細に説明する。
【０１８１】
図１４は、カウンタ回路のステートマシンを示す図である。図１４に示すように、カウンタ回路１７３には、５つの状態がある。第１の状態（Ｉｄｌｅ）ＳＴ１１は、アイドル状態であり、カウンタの値は０である。第２の状態（Ｃｎｔ１）ＳＴ１２は、ワードコピー完了状態であり、カウンタの値は１である。第３の状態（ＤＥＳｇｏ）ＳＴ１３は、ＤＥＳ処理開始信号出力状態であり、カウンタの値は１である。第４の状態（Ｃｎｔ２）ＳＴ１４は、ＤＥＳ処理完了状態であり、カウンタの値は２である。第５の状態（Ｅｒｒｏｒ）ＳＴ１５は、エラー発生状態であり、カウンタは様々な値を採り得る。
【０１８２】
ここで、カウンタ回路１７３に入力される信号は、以下の通りである。
・ＣｏｐｙＷｒｉｔｅ：第１段メモリ１１６から第２段メモリ１１７にデータコピーするためのライト信号
・ＡｆｔｅｒＤＥＳＷｒｉｔｅ：ＤＥＳ処理後のデータを第２段メモリ１１７にストアするためのライト信号
・ＮｅｘｔＣｏｕｎｔｅｒ［１：０］：次段のカウンタ回路のカウンタ値
・ＰｒｅＣｏｕｎｔｅｒ［１：０］：前段のカウンタ回路のカウンタ値
・Ｃｌｅａｒ：クリア信号
・ＳｙｓｔｅｍＣｌｏｃｋ：クロック信号
・ＳＴＷ：同じ段のバッファ領域に格納されたワードがスタートワードであることを示す信号
・ＥＮＤＷ：同じ段のバッファ領域に格納されたワードがエンドワードであることを示す信号
・ＭＩＤＷ：同じ段のバッファ領域に格納されたワードがスタートワードとエンドワードの間にあることを示す信号（ただし、スタートワードでもなく、エンドワードでもない）
・Ｓｔａｒｔ：処理開始信号
また、カウンタ回路から出力される信号は、以下の通りである。
・ＥｒｒｏｒＳｉｇｎａｌ：エラー信号
・ＤＥＳｇｏ：ＤＥＳ処理実行を開始させるための信号
・Ｃｎｔ［１：０］：カウンタ値
・ＥｎｄＳｉｇｎａｌ：エンドワードまでの処理が終了したことを通知する信号
これらの入出力信号に応じて、カウンタ回路１７３の状態が遷移する。
【０１８３】
まず、第１の状態ＳＴ１１では、カウンタの値に０が設定される。カウンタの値が０の間、第１の状態ＳＴ１１が維持される。ここで、ＣｏｐｙＷｒｉｔｅ信号がアサートされ、且つＳＴＷ、ＥＮＤＷ、およびＭＩＤＷの何れかの信号が１にアサートされると、第２の状態ＳＴ１２に遷移する。なお、ＳＴＷ、ＥＮＤＷ、およびＭＩＤＷの何れかの信号が１にアサートされ、且つ次段のカウンタの値を示す信号（ＮｅｘｔＣｏｕｎｔｅｒ［１：０］）が０より大きな値を示した場合、第１の状態ＳＴ１１から第５の状態ＳＴ１５に遷移する。
【０１８４】
第２の状態ＳＴ１２では、カウンタの値に１が設定される。ここで、前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２未満の場合、第２の状態ＳＴ１２が維持される。前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２になるか、ＳＴＷとＳｔａｒｔとの何れかの信号が１になると、第３の状態ＳＴ１３に遷移する。また、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１１に遷移する。さらに、ＥＮＤＷとＭＩＤＷとの何れかの値が１にアサートされ、且つ前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が０になった場合、あるいは、次段のカウンタ回路のカウンタ値（ＮｅｘｔＣｏｕｎｔｅｒ）が２になった場合には、第５の状態ＳＴ１５に遷移する。
【０１８５】
第３の状態ＳＴ１３では、ＤＥＳ処理実行を開始させるための信号（ＤＥＳｇｏ）の出力処理が行われる。この信号出力に応じて、カウンタ回路に対応する（同じ処理段の）ＤＥＳ回路によってＤＥＳ処理が実行される。ＤＥＳ処理が実行され、ＤＥＳ処理後のデータを第２段メモリ１１７にデータを書き込むためのライト信号（ＡｆｔｅｒＤＥＳＷｒｉｔｅ）がアサートされると、第４の状態ＳＴ１４に遷移する。そして、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１１に遷移する。
【０１８６】
第４の状態ＳＴ１４では、カウンタ回路のカウンタ値に２が設定される。クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１１に遷移する。前段のカウンタ回路のカウンタ値（ＰｒｅＣｏｕｎｔｅｒ）が２未満になると、第５の状態ＳＴ１５に遷移する。
【０１８７】
第５の状態ＳＴ１５では、エラー処理が行われる。そして、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１１に遷移する。
このような機密データ保護メモリモジュールを搭載したＶＰＮ装置では、第１の実施の形態と同様に、「クリアビット１１５による初期化（ステップＳ１）」、「ＩＶ、キーコードの設定（ステップＳ２）」、「暗号化か複合（平文化）の動作設定（ステップＳ３）」が行われる。その後、ＤＥＳ処理が行われるが、ＤＥＳ処理の内容が第１の実施の形態と異なる。
【０１８８】
［ステップＳ４ｂ］ＤＥＳ処理
ＣＰＵ１０１は、第１段メモリ１１６へ処理対象のパケットを書き込む。第１段メモリ１１６へは、パケットが６４ビット単位で、バッファ領域１１６ａ，１１６ｂ，１１６ｃに書き込まれる。格納されたパケットのデータ長（ワード数）が、データ長レジスタ１１３の上位３２ビットに設定される。
【０１８９】
第１段メモリ１１６に格納されたパケットは、すぐに、第２段メモリ１１７にコピーされる。すると、ＣＰＵ１０１は、格納されたパケットのうち、ＤＥＳ処理の対象となるデータの開始ワードと終了ワードとを判別する。そして、ＣＰＵ１０１は、開始ワードを示す値を、スタートワード指定レジスタ１６１に設定し、終了ワードを示す値を、エンドワード指定レジスタ１６２に設定する。
【０１９０】
その後、ＣＰＵ１０１は、スタートビット１６３に、ＤＥＳ処理の開始を指示する値を設定する。すると、第２段メモリ１１７に格納されたワード毎の暗号化／復号回路の処理が開始される。
【０１９１】
たとえば、ｋ番目のワードが開始ワードの場合の暗号化／復号回路１７０の動作を以下に示す。
ｋ番目のワードに対応する暗号化／復号回路１７０では、比較器１７４によって、ｋ番目のワードが開始ワードか否かが判定される。ｋ番目のワードが開始ワードであれば、その旨がＳＴＷによって比較器１７４からカウンタ回路１７３に伝えられる。すると、カウンタ回路１７３からＤＥＳ回路１７２へ、ＤＥＳｇｏの信号が出力される。
【０１９２】
また、比較器１７５によってｋ番目のワードが開始ワードであることが判定されると、ＭＵＸ回路１７６により、ＩＶレジスタ１１１に設定されているＩＶが排他的論理和回路１７１に渡される。すると、排他的論理和回路１７１によって、バッファ領域１１７ｋに格納されたｋ番目のワードとＩＶとの排他的論理和演算が行われ、ＤＥＳ回路１７２に入力される。
【０１９３】
ＤＥＳ回路１７２では、カウンタ回路１７３から出力されたＤＥＳｇｏの信号に応じて、動作指定ビット１１４で指定されたＤＥＳ処理（暗号化または復号）が実行される。なお、ＤＥＳ処理は、キーコードレジスタ１１２に格納されたキーコードを用いて行われる。ＤＥＳ処理の結果は、バッファ領域１１７ｋに格納される。
【０１９４】
すると、カウンタ回路１７３には、ＡｆｔｅｒＤＥＳＷｒｉｔｅ信号が入力され、カウンタ値に２が設定される。カウンタ回路１７３の値が次の段のワードに対する暗号化／復号回路内のカウンタ回路に入力され、次の段のワードに対するＤＥＳ処理が行われる。以後、ワード毎のＤＥＳ処理が、終了ワードに達するまで実行される。
【０１９５】
ここで、ｋ番目のワードが終了ワードの場合の暗号化／復号回路１７０の動作を以下に示す。
ｋ番目のワードに対応する暗号化／復号回路１７０では、比較器１７４によって、ｋ番目のワードが開始ワードか否かが判定される。ｋ番目のワードが開始ワードでなければ、カウンタ回路１７３は前段の暗号化／復号回路１７０内のカウンタ回路の値が２になるのを待つ。前段のカウンタ回路の値が２になると、カウンタ回路１７３からＤＥＳ回路１７２へ、ＤＥＳｇｏの信号が出力される。
【０１９６】
また、比較器１７５によってｋ番目のワードが開始ワードではないことが判定されると、ＭＵＸ回路１７６により、前段のＤＥＳ処理完了後のワードが排他的論理和回路１７１に渡される。すると、排他的論理和回路１７１によって、バッファ領域１１７ｋに格納されたｋ番目のワードと前段のＤＥＳ処理済みのワードとの排他的論理和演算が行われ、ＤＥＳ回路１７２に入力される。
【０１９７】
ＤＥＳ回路１７２では、カウンタ回路１７３から出力されたＤＥＳｇｏの信号に応じて、動作指定ビット１１４で指定されたＤＥＳ処理（暗号化または復号）が実行される。なお、ＤＥＳ処理は、キーコードレジスタ１１２に格納されたキーコードを用いて行われる。ＤＥＳ処理の結果は、バッファ領域１１７ｋに格納される。
【０１９８】
すると、カウンタ回路１７３には、ＡｆｔｅｒＤＥＳＷｒｉｔｅ信号が入力され、カウンタ値に２が設定される。カウンタ回路１７３の値が２になると、比較器１７７によってエンドワード指定レジスタ１６２に設定された終了ワードが参照され、ｋ番目のワードが終了ワードか否かが判定される。ここで、ｋ番目のワードが終了ワードであると判定されると、エンドワードまでの処理が終了したことを示すＥｎｄＳｉｇｎａｌが比較器１７７から出力され、エンドビット１６４に処理終了を示すフラグが立てられる。すると、割り込み通知回路１２２によって、ＣＰＵ１０１に対して割り込み信号が出力される。
【０１９９】
以上のようにして、機密データ保護メモリモジュール内に転送されたデータの一部に対して、暗号化／復号の処理を実施することが可能となる。
［第６の実施の形態］
第６の実施の形態は、前述の各実施の形態を組み合わせた機密データ保護メモリモジュールを実装したＶＰＮ装置の例である。すなわち、第６の実施の形態に係る機密データ保護メモリモジュールは、第４の実施の形態に示すように、モード切替により暗号化／復号の方式を選択することができ（第１〜第３の実施の形態の機能が含まれる）、且つ、第５の実施の形態に示すように、機密データ保護メモリモジュール内に転送されたデータの一部に対して暗号化／復号の処理を実施することができる。
【０２００】
図１５は、第６の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図１５には、第６の実施の形態に係る機密データ保護メモリモジュールの１ワード分の暗号化／復号回路１７０ａを示している。図１５では、図１３に示した第５の実施の形態の機密データ保護メモリモジュールと同じ構成要素には同一の符号を付し、説明を省略する。
【０２０１】
第６の実施の形態では、図１３に示した第５の実施の形態の構成に対して、モードレジスタ１２４が追加されている。また、キーコードレジスタ１１２は、キーコードレジスタ群１３０に置き換えられている。暗号化／復号回路１７０ａ内にでは、ＤＥＳ回路１７２がＤＥＳ処理部１７２ａに置き換えられている。排他的論理和回路１７１は、排他的論理和回路１７１ａに置き換えられている。ＤＥＳ処理部１７２ａは、図１１に示した第４の実施の形態のＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃと同じ機能を有している。排他的論理和回路１７１ａは、図１１に示した第４の実施の形態の排他的論理和回路１１８ｄ，１１８ｅ，１１８ｆと同じ機能を有している。
【０２０２】
機密データ保護メモリモジュールをこのような構成とすることにより、モード切替により暗号化／復号の方式を選択でき、且つ、機密データ保護メモリモジュール内に転送されたデータの一部に対して暗号化／復号の処理を実施することができる。
【０２０３】
以下、第６の実施の形態に係る機密データ保護メモリモジュールを実装したＶＰＮ装置が、ＤＥＳ−ＣＢＣでトンネルモードを利用してデータの送受信を行う場合の例を用いて、処理内容を具体的に説明する。
【０２０４】
まず、暗号化パケット生成の流れを説明する。
図１６は、生パケット受信中の状態を示す図である。生パケットを受信すると、ＤＭＡ装置１０４から機密データ保護メモリモジュール１１０ａに対して生パケット（ＩＰヘッダ５１０とデータ５２０とで構成される）がＤＭＡ転送される。ＤＭＡ転送されたパケットは、機密データ保護メモリモジュール１１０ａの第１段メモリ１１６に格納される。そして、第１段メモリ１１６に格納されたパケットは、そのパケットを構成するワード毎に瞬時に第２段メモリ１１７へコピーされてゆく。これにより、第２段メモリ１１７内に、生パケットの複製（ＩＰヘッダ５１１とデータ５２１とで構成される）が格納される。
【０２０５】
ＣＰＵ１０１は、この間に第１段メモリ１１６に格納されたＩＰヘッダ５１０の解析を行い、パケット長を知る。また、ＣＰＵ１０１は、生パケットの宛先等から暗号化すべきか、あるいは復号すべきかを判断する。たとえば、図３に示すように、イントラネット４１からインターネット４２へ転送されるパケットは、暗号化の対象となる。逆に、インターネット４２からイントラネット４３へ転送されるパケットは、復号の対象となる。
【０２０６】
ＣＰＵ１０１は、暗号化するパケットであると判定した場合、機密データ保護メモリモジュール１１０ａにＩＶ、キーコード、動作指定（暗号化）、モード（ＤＥＳ−ＣＢＣ）、スタートワード、エンドワードを、それぞれＩＶレジスタ１１１、キーコードレジスタ群１３０内のキーコードレジスタ、動作指定ビット１１４、モードレジスタ１２４、スタートワード指定レジスタ１６１、エンドワード指定レジスタ１６２に設定した後、スタートビット１６３を設定する。スタートビットが設定されることで、機密データ保護メモリモジュール１１０ａに対して、暗号化の開始が指示される。すると、機密データ保護メモリモジュール１１０ａは１ワード単位での暗号化処理を開始する。この暗号化処理は、エンドワードまで続く。
【０２０７】
図１７は、暗号化処理終了後の状態を示す図である。図１７には、機密データ保護メモリモジュール１１０ａ上での暗号化処理が終了し、ＣＰＵ１０１への割り込み通知が行われたときの状態を示している。このとき、ＣＰＵ１０１はエンドビット１６４のステータスリードにより、処理の終了を確認する。その後、ＣＰＵ１０１は、第２段メモリ１１７より暗号化されたＩＰパケット５３０をリードして、認証データ作成を開始する。
【０２０８】
図１８は、トンネルモード用のデータ生成後の状態を示す図である。ＣＰＵ１０１は、トンネルモードで暗号パケットを転送するために、トンネル用ＩＰヘッダ５４０、ＥＳＰヘッダ５５０、認証データ５６０を作成する。そして、ＣＰＵ１０１は、作成したトンネル用ＩＰヘッダ５４０、ＥＳＰヘッダ５５０、認証データ５６０を第１段メモリ１１６に書き込む。書き込まれた各データは、第２段メモリ１１７にコピーされる。これにより、複製されたトンネル用ＩＰヘッダ５４１、ＥＳＰヘッダ５５１、認証データ５６１が第２段メモリ１１７に格納される。これら全てのデータの書込処理が終了した時点で、ＤＭＡ装置１０４により、暗号化パケット（トンネル用ＩＰヘッダ５４１、ＥＳＰヘッダ５５１、暗号化されたＩＰパケット５３０、認証データ５６１で構成される）が他のデバイス（ＮＩＣ等）に転送される。
【０２０９】
次に、暗号化パケットからの復号の流れを説明する。
図１９は、暗号化パケット受信中の状態を示す図である。暗号化パケットを受信すると、ＤＭＡ装置１０４によりＤＭＡ転送が行われる。その結果、暗号化パケットを構成するトンネル用ＩＰヘッダ６４０、ＥＳＰヘッダ６５０、暗号化されたＩＰパケット６３０などが機密データ保護メモリモジュール１１０ａの第１段メモリ１１６に格納される。そして、瞬時に第２段メモリ１１７にコピーされる。これにより、複製されたトンネル用ＩＰヘッダ６４１、ＥＳＰヘッダ６５１、暗号化されたＩＰパケット６３１などが第２段メモリ１１７に格納される。
【０２１０】
ＣＰＵ１０１はこの間、トンネル用ＩＰヘッダ６４０の解析、ＥＳＰヘッダ６５０の解析を行い、パケット長、暗号化モードや暗号鍵を知る。そして、ＣＰＵ１０１は、機密データ保護メモリモジュール１１０ａのＩＶレジスタ１１１，キーコードレジスタ群１３０内のキーコードレジスタ、動作指定ビット１１４、モードレジスタ１２４、スタートワード指定レジスタ１６１、エンドワード指定レジスタ１６２に、それぞれＩＶ、キーコード、動作指定（復号）、モード（ＤＥＳ−ＣＢＣ）、開始ワード（暗号化されたＩＰパケット６３１の先頭のワード）、終了ワード（暗号化されたＩＰパケット６３１の最後のワード）を設定する。その後、ＣＰＵ１０１は、スタートビット１６３に処理開始を示す値を設定し、復号の開始を指示する。すると、機密データ保護メモリモジュール１１０ａは、１ワード単位での復号処理を開始する。復号処理は、暗号化されたＩＰパケットの最後の１ワードまで続けられる。
【０２１１】
図２０は、復号処理中に行われる認証処理の状況を示す図である。ＣＰＵ１０１は、暗号化されたＩＰパケット６３０を読み取り、認証データを作成する。そして、ＣＰＵ１０１は、生成した認証データと、暗号化パケットに含まれる認証データ６６０とを照合し、合致するか否かにより認証を行う。この間にも、機密データ保護メモリモジュール１１０ａ上では復号処理が実行される。そして、復号が済んだ段階で、ＤＭＡ装置１０４により、生パケットがＤＭＡ転送される。
【０２１２】
以上のようにして、本発明の実施の形態によれば、ＶＰＮ装置による暗号パケットの送受信処理を、効率よく行うことができる。
以下、本発明の実施の形態に係るＶＰＮ装置を用いることによる処理の効率化の効果を、従来技術を用いたＶＰＮ装置と比較して説明する。
【０２１３】
図２１は、暗号化の処理効率を比較する図である。図２１（Ａ）は、従来手法による暗号化処理の流れを示しており、図２１（Ｂ）は、本実施の形態による暗号化処理の流れを示している。
【０２１４】
従来手法による暗号化処理は、ＤＭＡ転送（ステップＳ１１）、ＣＰＵによるヘッダ解析（ステップＳ１２）、ＤＥＳによる暗号化（ステップＳ１３）、認証データの作成（ステップＳ１４）、ＤＭＡ転送（ステップＳ１５）の順で行われる。
【０２１５】
本実施の形態による暗号化処理は、ＩＰヘッダのＤＭＡ転送（１）（ステップＳ２１）、ＣＰＵによるヘッダ解析（ステップＳ２２）、ＤＭＡ転送（２）（ステップＳ２３）、並列動作のＤＥＳによる暗号化（ステップＳ２４）、ＤＭＡ転送完了後の認証データの作成（ステップＳ２５）、暗号化と認証データの作成との完了後のＤＭＡ転送（ステップＳ２６）の順で行われる。なお、ＤＭＡ転送が２段階に分かれているのは、ヘッダ解析のためメモリバスがＣＰＵによって一時的に使用されるからである。
【０２１６】
図２２は、復号の処理効率を比較する図である。図２２（Ａ）は、従来手法による復号処理の流れを示しており、図２２（Ｂ）は、本実施の形態による復号処理の流れを示している。
【０２１７】
従来手法による復号処理は、ＤＭＡ転送（ステップＳ３１）、ＣＰＵによるヘッダ解析（ステップＳ３２）、認証確認（ステップＳ３３）、ＤＥＳによる復号（ステップＳ３４）、ＤＭＡ転送（ステップＳ３５）の順で行われる。
【０２１８】
本実施の形態による復号処理は、ＩＰヘッダのＤＭＡ転送（１）（ステップＳ４１）、ＣＰＵによるヘッダ解析（ステップＳ４２）、ＤＭＡ転送（２）（ステップＳ４３）、並列動作のＤＥＳによる復号（ステップＳ４４）、ＤＭＡ転送完了後の認証データの作成（ステップＳ４５）、復号と認証データの作成との完了後のＤＭＡ転送（ステップＳ４６）の順で行われる。なお、ＤＭＡ転送が２段階に分かれているのは、ヘッダ解析のためメモリバスがＣＰＵによって一時的に使用されるからである。
【０２１９】
図２１，図２２に示したように、本実施の形態によれば、ＤＥＳ処理が並列的に行えるため、パケットの暗号化や復号の処理時間が短縮される。たとえば、１５００バイトのフレームを処理する場合の、従来技術と本実施の形態とのおよそのサイクル数を計算する。なお、計算結果の比較を分かり易くするため、生パケットと暗号パケットとは、共に２００ワードで構成されるものとして計算する。
【０２２０】
［従来手法（暗号化）］
ＤＭＡ転送：２００×４＝８００サイクル
ヘッダ解析：２０００サイクル
ＤＥＳ処理：２００×１６＋２００×（４＋４）＝４８００サイクル
認証ヘッダ作成：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１１，４００サイクル
［本発明の手法（暗号化）］
ＤＭＡ転送（１）：３×４＝１２サイクル（ＩＰヘッダの転送）
ヘッダ解析：２０００サイクル
ＤＭＡ転送（２）：７８８サイクル
ＤＥＳ処理：２００×１６＝３２００サイクル
認証ヘッダ作成：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１２＋２０００＋７８８＋３０００＋８００＝６６００サイクル
［従来手法（復号）］
ＤＭＡ転送：２００×４＝８００サイクル
ヘッダ解析：２０００サイクル
ＤＥＳ処理：２００×１６＋２００×（４＋４）＝４８００サイクル
認証：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１，１４００サイクル
［本発明の手法（復号）］
ＤＭＡ転送（１）：３×４＝１２サイクル（ＩＰヘッダの転送）
ヘッダ解析：２０００サイクル
ＤＭＡ転送（２）：７８８サイクル
ＤＥＳ処理：２００×１６＝３２００サイクル
認証：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１２＋２０００＋７８８＋３０００＋８００＝６６００サイクル
ただし、ＤＭＡ転送には１ワードあたり４サイクル、ＣＰＵによるリードとライトにはそれぞれ１ワードあたり４サイクルとしている。
【０２２１】
以上の結果から、機密データ保護メモリモジュールを使用すると２倍近くのパフォーマンスを得ることができる。
［第７の実施の形態］
第７の実施の形態は、ＶＰＮ装置におけるメモリを、機密データ保護メモリモジュールによってリングバッファを構成し、処理の高速化を図ったものである。
【０２２２】
図２３は、第７の実施の形態に適用するリングバッファの構成を示す図である。図２３に示すように、リングバッファ７１０は、複数のパケットバッファ７１１〜７１４で構成されている。各パケットバッファ７１１〜７１４の内部構造は、たとえば、第６の実施の形態に係る機密データ保護メモリモジュール１１０ａと同じである。
【０２２３】
このように機密データ保護メモリ１１０ａによってリングバッファ７１０を構成することで、入力されたパケットの暗号化／復号の処理（たとえば、ＤＥＳ処理）を、各パケットに対して並列に実行することができる。その結果、ＶＰＮ装置としてのデータ処理速度が向上する。
【０２２４】
［第８の実施の形態］
第８の実施の形態は、機密データ保護メモリモジュールを内蔵したＩＤカードを個人認証に利用する場合の例である。
【０２２５】
図２４は、第８の実施の形態に係るＩＤカードの例を示す図である。図２４に示すように、個人認証を行うための認証システム７２０は、認証用データベース７２１とＣＰＵ７２２とを有している。認証用データベース７２１には、個人認証を行うためのＩＤカード７３０の利用者毎の識別情報が格納されている。
【０２２６】
ＩＤカード７３０は、カード番号（Ｎｏ．）７３１と機密データ保護メモリモジュール７３２とを有している。カード番号７３１には、認証システム７２０がＩＤカード７３０を一意に識別するための識別番号が登録されている。また、機密データ保護メモリモジュール７３２には、認証システム７２０に登録されているキーコードやＩＶによって暗号化された利用者本人を特定するためのＩＤ情報が含まれている。
【０２２７】
ＩＤカード７３０が認証システム７２０に接続されると、認証システム７２０は、ＩＤカード７３０のカード番号７３１を読み取る。そして、認証システム７２０は、認証用データベース７２１から、カード番号７３１に対応するユーザ情報を抽出し、ＩＤカード７３０の持ち主を特定する。持ち主が特定されたら、認証システム７２０は、その持ち主に対応するキーコードとＩＶとを取り出す。さらに、認証システム７２０は、取り出したキーコードとＩＶとを、ＩＤカード７３０の機密データ保護メモリモジュール７３２に入力する。すると、ＩＤカード７３０において、暗号化された状態のＩＤ情報が復号される。その結果、認証システム７２０は、ＩＤカード７３０に格納されたＩＤ情報を読み取り、解釈することができる。
【０２２８】
このようにして、ＩＤカード７３０の利用者の本人の特定を確実に行うことができる。
［第９の実施の形態］
第９の実施の形態は、第８の実施の形態の機密性を高めたものである。
【０２２９】
図２５は、第９の実施の形態に係るＩＤカードの例を示す図である。第９の実施の形態では、偽造カードによるキーコードやＩＶの不正取得を防ぐために、多段階の認証を行う。たとえば、図２５に示すようにＩＤカード７４０は、カード番号７４１、本人特定用認証番号７４２ａが格納された機密データ保護メモリモジュール７４２、本人のＩＤ情報７４３ａが格納された機密データ保護メモリモジュール７４３を有する。ここで、本人特定用認証番号７４２ａはＤＥＳで暗号化された状態で機密データ保護メモリモジュール７４２に格納される。また、本人のＩＤ情報７４３ａは、３ＤＥＳで暗号化された状態で機密データ保護メモリモジュール７４３に格納される。
【０２３０】
このように、データの機密性の度合いに応じて暗号の強度を変更することで、不正の行為の困難性を高めることができる。
［その他の変形例］
上記の各実施の形態で示した機密データ保護メモリモジュールの有する機能を、半導体１チップ（半導体メモリチップ）に実装することもできる。
【０２３１】
また、暗号化／復号の技術としてＤＥＳを用いた場合の例を示したが、他の暗号化／復号技術を用いることもできる。
（付記１）　外部バス接続端子から入力されたデータを記憶する第１のメモリ回路と、
前記第１のメモリ回路に対して内部接続されており、前記第１のメモリ回路に記憶された前記データの複製データを取得し、取得した前記複製データを記憶する第２のメモリ回路と、
前記第２のメモリ回路に対して内部接続されており、外部からの動作指示入力に応答して、前記第２のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第２のメモリ回路に書き戻す暗号化／復号回路と、
を有することを特徴とするメモリデバイス。
【０２３２】
（付記２）　前記暗号化／復号回路は、前記第２のメモリ回路の記憶領域のうち処理対象とすべき格納領域が指定されると、指定された前記格納領域に格納されたデータに対してのみ、暗号化または復号の処理を実行することを特徴とする付記１記載のメモリデバイス。
【０２３３】
（付記３）　前記第２のメモリ回路は、前記データを構成する部分データが前記第１のメモリ回路に格納される毎に、逐次前記部分データの複製を記憶することを特徴とする付記１記載のメモリデバイス。
【０２３４】
（付記４）　前記第２のメモリ回路は、前記複製データを、所定データ長の単位データに分割して記憶し、
前記暗号化／復号回路は、前記単位データが前記第２のメモリ回路に記憶される毎に、順次前記単位データに対する暗号化または復号の処理を実行することを特徴とする付記３記載のメモリデバイス。
【０２３５】
（付記５）　前記暗号化／復号回路は、
複数の前記単位データそれぞれに対応づけて設けられ、処理順が直前となる前記単位データに対する暗号化または復号の処理の実行の有無を監視し、直前の前記単位データに対する処理の実行完了を検出する処理順検出回路と、
前記処理順検出回路によって直前の前記単位データに対する処理の実行完了が検出されると、前記処理順検出回路に対応する前記単位データに対する暗号化または復号処理を実行する暗号化／復号処理実行回路と、
を有することを特徴とする付記４記載のメモリデバイス。
【０２３６】
（付記６）　前記処理順検出回路は、対応関係にある前記単位データの暗号化または復号の処理が完了すると所定の値を出力し、処理順が直前となる前記単位データに対応する前段の前記処理順検出回路の出力が前記所定の値になったときに、直前の前記単位データに対する処理の実行が完了したと判断することを特徴とする付記５記載のメモリデバイス。
【０２３７】
（付記７）　前記暗号化／復号回路は、暗号化または復号に関する複数の処理方式の処理機能を有しており、外部からの入力に応じて、実行する暗号化または復号の処理方式を決定することを特徴とする付記１記載のメモリデバイス。
【０２３８】
（付記８）　前記複写データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする付記１記載のメモリデバイス。
【０２３９】
（付記９）　前記割り込み通知回路は、前記第１のメモリに記憶された前記複写データのデータ長と、前記第２のメモリに記憶された前記複写データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする付記８記載のメモリデバイス。
【０２４０】
（付記１０）　前記割り込み通知回路は、予め終了単位データとして指定された単位データの暗号化または復号の処理が完了したときに、割り込み信号を出力することを特徴とする付記８記載のメモリデバイス。
【０２４１】
（付記１１）　外部から入力されたデータを記憶する第１のメモリ回路と、
前記第１のメモリ回路に記憶された前記データの複製データを生成し、取得した前記複製データを記憶する第２のメモリ回路と、
外部からの動作指示入力に応答して、前記第２のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第２のメモリ回路に書き戻す暗号化／復号回路と、
を有することを特徴とする半導体メモリチップ。
【０２４２】
（付記１２）　メモリデバイスに入出力されるデータの暗号化／復号処理を行うための暗号化／復号方法において、
外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第１のメモリ回路に格納し、
外部からの動作指示入力に応答して、前記第１のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化／復号回路を用いて、前記第１のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、
暗号化または復号の処理結果を、前記暗号化／復号回路に内部接続された第２のメモリ回路に格納する、
ことを特徴とする暗号化／復号方法。
【０２４３】
【発明の効果】
以上説明したように本発明では、外部バス接続端子から入力されて第１のメモリに記憶されたデータの複製データを、内部接続された第２のメモリ回路に記憶し、第２のメモリ回路に記憶された複製データに対して暗号化または復号の処理を実行するようにしたため、データの暗号化や復号処理中のために外部バスが占有することが無くなる。その結果、暗号化や復号処理中であっても、第１のメモリ回路に記憶されたデータへの外部からのアクセスが可能となり、入力されたデータを用いた処理の効率が向上する。
【図面の簡単な説明】
【図１】実施の形態に適用される発明の概念図である。
【図２】ＤＥＳ−ＣＢＣモードの動作を説明する図である。
【図３】ＶＰＮのシステム構成例を示す図である。
【図４】ＶＰＮ装置の内部構造を示す図である。
【図５】第１の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図６】カウンタ回路のステートマシンを示す図である。
【図７】ＤＥＳ−ＥＣＢモードの動作を説明する図である。
【図８】第２の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図９】３ＤＥＳの処理の手順を示す図である。図９（Ａ）は、３ＤＥＳの暗号化処理を示しており、図９（Ｂ）は、３ＤＥＳの復号処理を示している。
【図１０】第３の実施の形態に係る暗号化／復号処理を実現するための回路構成を示す図である。
【図１１】第４の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図１２】暗号化／復号対象データを限定した場合のメモリ領域を示す図である。
【図１３】第５の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図１４】カウンタ回路のステートマシンを示す図である。
【図１５】第６の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図１６】生パケット受信中の状態を示す図である。
【図１７】暗号化処理終了後の状態を示す図である。
【図１８】トンネルモード用のデータ生成後の状態を示す図である。
【図１９】暗号化パケット受信中の状態を示す図である。
【図２０】復号処理中に行われる認証処理の状況を示す図である。
【図２１】暗号化の処理効率を比較する図である。図２１（Ａ）は、従来手法による暗号化処理の流れを示しており、図２１（Ｂ）は、本実施の形態による暗号化処理の流れを示している。
【図２２】復号の処理効率を比較する図である。図２２（Ａ）は、従来手法による復号処理の流れを示しており、図２２（Ｂ）は、本実施の形態による復号処理の流れを示している。
【図２３】第７の実施の形態に適用するリングバッファの構成を示す図である。
【図２４】第８の実施の形態に係るＩＤカードの例を示す図である。
【図２５】第９の実施の形態に係るＩＤカードの例を示す図である。
【図２６】従来の機密保持機能を備えたコンピュータの概略構成を示す図である。
【図２７】従来のＶＰＮ装置の構成例を示す図である。
【符号の説明】
１　メモリデバイス
１ａ　外部バス接続端子
１ｂ　第１のメモリ回路
１ｃ　第２のメモリ回路
１ｄ　暗号化／復号回路
１ｅ，１ｆ　内部バス
２　外部バス
１１０　機密データ保護メモリモジュール
１１１　ＩＶレジスタ
１１２　キーコードレジスタ
１１３　データ長レジスタ
１１４　動作指定ビット
１１５　クリアビット
１１６　第１段メモリ
１１７　第２段メモリ
１１８ａ，１１８ｂ，１１８ｃ　排他的論理和回路
１１９ａ，１１９ｂ，１１９ｃ　ＤＥＳ回路
１２０ａ，１２０ｂ，１２０ｃ　カウンタ回路
１２１　エラーレジスタ
１２２　割り込み通知回路
１２３　アドレスデコード回路
【図１】
2004070499.tif 000003
【図２】
2004070499.tif 000004
【図３】
2004070499.tif 000005
【図４】
2004070499.tif 000006
【図５】
2004070499.tif 000007
【図６】
2004070499.tif 000008
【図７】
2004070499.tif 000009
【図８】
2004070499.tif 000010
【図９】
2004070499.tif 000011
【図１０】
2004070499.tif 000012
【図１１】
2004070499.tif 000013
【図１２】
2004070499.tif 000014
【図１３】
2004070499.tif 000015
【図１４】
2004070499.tif 000016
【図１５】
2004070499.tif 000017
【図１６】
2004070499.tif 000018
【図１７】
2004070499.tif 000019
【図１８】
2004070499.tif 000020
【図１９】
2004070499.tif 000021
【図２０】
2004070499.tif 000022
【図２１】
2004070499.tif 000023
【図２２】
2004070499.tif 000024
【図２３】
2004070499.tif 000025
【図２４】
2004070499.tif 000026
【図２５】
2004070499.tif 000027
【図２６】
2004070499.tif 000028
【図２７】
2004070499.tif 000029
【手続補正書】
【提出日】平成15年6月20日(2003.6.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記複製データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする請求項１記載のメモリデバイス。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
前記割り込み通知回路は、前記第２のメモリ回路に記憶された前記複製データのデータ長と、前記第２のメモリ回路に記憶された前記複製データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする請求項７記載のメモリデバイス。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
このようなメモリデバイスによれば、外部バス接続端子１ａからデータ１ｂａ，１ｂｂ，１ｂｃ，・・・が入力されると、まず第１のメモリ回路１ｂに記憶され、その複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・が第２のメモリ回路１ｃに記憶される。すると、暗号化／復号回路１ｄによって複製データ１ｃａ，１ｃｂ，１ｃｃ，・・・に対する暗号化または復号処理が実行され、処理結果が第２のメモリ回路１ｃに書き戻される。


【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
キーコードレジスタ１１２は、キーコードを設定するための６４ビットのレジスタである。詳細には、キーコードレジスタ１１２内の５６ビットがキーコードであり、他の８ビットがパリティビットである。キーコードレジスタ１１２は、ＣＰＵ１０１からのアクセスによって書き込みは可能であるが、読み取りはできない。


【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７１
【補正方法】変更
【補正の内容】
【００７１】
データ長レジスタ１１３は、ＤＥＳ処理済みのデータ長（ワード数）を表示する６４ビットのレジスタである。データ長レジスタ１１３は、上位３２ビットによって第１段メモリ１１６にストアされたワード数が示され、下位３２ビットによってＤＥＳ処理後、第２段メモリ１１７にストアされたワード数が示される。データ長レジスタ１１３は、ＣＰＵ１０１からのアクセスによって書き込みはできないが、読み取りは可能である。


【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
第２段メモリ１１７は、第１段メモリ１１６にストアされたデータのコピーをストアし、ＤＥＳ処理実行後の暗号もしくは復号されたデータを保持するための６４ビット幅のＲＡＭメモリ回路である。第２段メモリ１１７は、ＣＰＵ１０１からのアクセスによって書き込みはできないが、読み取りは可能である。


【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８７
【補正方法】変更
【補正の内容】
【００８７】
［ステップＳ３］暗号化か復号（平文化）の動作設定
ＣＰＵ１０１は、暗号化するのか復号するのか、モードを動作指定ビット１１４に設定する。本実施の形態では、復号（Ｄｅｃｏｄｅ）のとき１に設定し、暗号化（Ｅｎｃｏｄｅ）のとき０に設定する。動作指定ビット１１４に設定された値は、ＤＥＳ回路１１９ａ，１１９ｂ，１１９ｃに入力される。


【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
［ステップＳ６］第２段メモリ１１７より暗号化もしくは復号済みのデータのリード
ＣＰＵ１０１は、第２段メモリ１１７にアクセスし、ＤＥＳによる暗号化処理、または復号処理が完了したデータを、適宜読み出す。なお、データ長レジスタ１１３の下位３２ビットにＤＥＳ処理済みのデータ長（ワード数）が示されているため、ＣＰＵ１０１はデータ長レジスタ１１３を参照することで、処理済みのデータだけ読み出すことが可能である。


【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
［ステップＳ７］エラー発生時のエラー通知
不正なオペレーションが生じたときエラーレジスタ１２１にエラーを示す情報が設定される。エラーレジスタ１２１にエラー内容が設定されると、割り込み通知回路１２２により、ＣＰＵ１０１に割り込み通知信号が出される。これにより、ＣＰＵ１０１がエラーの発生を認識し、エラーレジスタ１２１の内容を読み取る。割り込み通知信号は、ＣＰＵ１０１がエラーレジスタ１２１の内容を読み込んだときにディアサートされる。


【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１０５
【補正方法】変更
【補正の内容】
【０１０５】
より、具体的な説明を行う。１ワード目のカウンタ回路１２０ａは０→１になった時点でＤＥＳ処理を実行する指示を出す。２ワード目のカウンタ回路１２０ｂは、０→１になった時点で１ワード目のカウンタ値を参照し、その値が２であればＤＥＳ処理を実行に移し、１であれば２にインクリメントされるまで待つ。また、各カウンタ回路１２０ａ，１２０ｂ，１２０ｃは、それ以外の値の場合は、誤操作が起きたとみなし、エラーレジスタ１２１へエラー情報を出力する。この機構により、不正な不連続の書き込み動作を防ぐことができる。


【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】変更
【補正の内容】
【０１２７】
第１の実施の形態と異なるのは、「ＩＶ、キーコードの設定（ステップＳ２）」の処理と「ＤＥＳ処理（ステップＳ４）」の処理である。他の処理（「クリアビット１１５による初期化（ステップＳ１）」、「暗号化か復号（平文化）の動作設定（ステップＳ３）」、「処理済みのデータ長の設定（ステップＳ５）」、「第２段メモリ１１７より暗号化もしくは復号済みのデータのリード（ステップＳ６）」、「エラー発生時のエラー通知（ステップＳ７）」）については、第１の実施の形態の動作と同じである。


【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１６３
【補正方法】変更
【補正の内容】
【０１６３】
すなわち、機密データ保護メモリモジュールをＶＰＮ装置に実装した場合、メモリ上の特定領域を暗号化もしくは復号したい場合が多い。たとえば、図３に示したように、インターネット経由で暗号パケット５２を受け取ったＶＰＮ装置１００では、暗号パケット５２内の暗号化されたパケット５２ｃのみを復号すればよい。メモリに格納されたパケットの一部に対する暗号化／復号処理を行う機能を有している場合、暗号パケット５２をそのまま機密データ保護メモリモジュールにＤＭＡ転送すればよい。


【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１６８
【補正方法】変更
【補正の内容】
【０１６８】
スタートワード指定レジスタ１６１は、暗号化もしくは復号化を開始するスタートワードを設定するレジスタである。スタートワード指定レジスタ１６１は、ＣＰＵ１０１からの書き込みも、読み出しも可能である。


【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１６９
【補正方法】変更
【補正の内容】
【０１６９】
エンドワード指定レジスタ１６２は、暗号化もしくは復号化処理の最終ワードを設定するレジスタである。エンドワード指定レジスタ１６２は、ＣＰＵ１０１による書き込みも、読み出しも可能である。


【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１７８
【補正方法】変更
【補正の内容】
【０１７８】
比較器１７７は、暗号化もしくは復号化処理の終了ワードを設定するエンドワード指定レジスタ１６２のワード値がバッファ領域１１７ｋ内のワードである場合、カウンタ回路１７３からの信号を受けて、そのワードのデータ処理が終了した時点で、処理の終了をエンドビット１６４とカウンタ回路１７３へ通知する。


【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１８７
【補正方法】変更
【補正の内容】
【０１８７】
第５の状態ＳＴ１５では、エラー処理が行われる。そして、クリア信号（Ｃｌｅａｒ）が出力されると、第１の状態ＳＴ１１に遷移する。
このような機密データ保護メモリモジュールを搭載したＶＰＮ装置では、第１の実施の形態と同様に、「クリアビット１１５による初期化（ステップＳ１）」、「ＩＶ、キーコードの設定（ステップＳ２）」、「暗号化か復号（平文化）の動作設定（ステップＳ３）」が行われる。その後、ＤＥＳ処理が行われるが、ＤＥＳ処理の内容が第１の実施の形態と異なる。


【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０２０１
【補正方法】変更
【補正の内容】
【０２０１】
第６の実施の形態では、図１３に示した第５の実施の形態の構成に対して、モードレジスタ１２４が追加されている。また、キーコードレジスタ１１２は、キーコードレジスタ群１３０に置き換えられている。暗号化／復号回路１７０ａ内では、ＤＥＳ回路１７２がＤＥＳ処理部１７２ａに置き換えられている。排他的論理和回路１７１は、排他的論理和回路１７１ａに置き換えられている。ＤＥＳ処理部１７２ａは、図１１に示した第４の実施の形態のＤＥＳ処理部１４０ａ，１４０ｂ，１４０ｃと同じ機能を有している。排他的論理和回路１７１ａは、図１１に示した第４の実施の形態の排他的論理和回路１１８ｄ，１１８ｅ，１１８ｆと同じ機能を有している。


【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０２１７
【補正方法】変更
【補正の内容】
【０２１７】
従来手法による復号処理は、ＤＭＡ転送（ステップＳ３１）、ＣＰＵによるヘッダ解析（ステップＳ３２）、認証（ステップＳ３３）、ＤＥＳによる復号（ステップＳ３４）、ＤＭＡ転送（ステップＳ３５）の順で行われる。


【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０２１８
【補正方法】変更
【補正の内容】
【０２１８】
本実施の形態による復号処理は、ＩＰヘッダのＤＭＡ転送（１）（ステップＳ４１）、ＣＰＵによるヘッダ解析（ステップＳ４２）、ＤＭＡ転送（２）（ステップＳ４３）、並列動作のＤＥＳによる復号（ステップＳ４４）、ＤＭＡ転送完了後の認証（ステップＳ４５）、復号と認証データの作成との完了後のＤＭＡ転送（ステップＳ４６）の順で行われる。なお、ＤＭＡ転送が２段階に分かれているのは、ヘッダ解析のためメモリバスがＣＰＵによって一時的に使用されるからである。


【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０２２０
【補正方法】変更
【補正の内容】
【０２２０】
［従来手法（暗号化）］
ＤＭＡ転送：２００×４＝８００サイクル
ヘッダ解析：２０００サイクル
ＤＥＳ処理：２００×１６＋２００×（４＋４）＝４８００サイクル
認証データ作成：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１１，４００サイクル
［本発明の手法（暗号化）］
ＤＭＡ転送（１）：３×４＝１２サイクル（ＩＰヘッダの転送）
ヘッダ解析：２０００サイクル
ＤＭＡ転送（２）：７８８サイクル
ＤＥＳ処理：２００×１６＝３２００サイクル
認証データ作成：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１２＋２０００＋７８８＋３０００＋８００＝６６００サイクル
［従来手法（復号）］
ＤＭＡ転送：２００×４＝８００サイクル
ヘッダ解析：２０００サイクル
ＤＥＳ処理：２００×１６＋２００×（４＋４）＝４８００サイクル
認証：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１１，４００サイクル
［本発明の手法（復号）］
ＤＭＡ転送（１）：３×４＝１２サイクル（ＩＰヘッダの転送）
ヘッダ解析：２０００サイクル
ＤＭＡ転送（２）：７８８サイクル
ＤＥＳ処理：２００×１６＝３２００サイクル
認証：３０００サイクル
ＤＭＡ転送：２００×４＝８００サイクル
計：１２＋２０００＋７８８＋３０００＋８００＝６６００サイクル
ただし、ＤＭＡ転送には１ワードあたり４サイクル、ＣＰＵによるリードとライトにはそれぞれ１ワードあたり４サイクルとしている。


【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０２３８
【補正方法】変更
【補正の内容】
【０２３８】
（付記８）　前記複製データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする付記１記載のメモリデバイス。


【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０２３９
【補正方法】変更
【補正の内容】
【０２３９】
（付記９）　前記割り込み通知回路は、前記第２のメモリ回路に記憶された前記複製データのデータ長と、前記第２のメモリ回路に記憶された前記複製データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする付記８記載のメモリデバイス。


【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０２４３
【補正方法】変更
【補正の内容】
【０２４３】
【発明の効果】
以上説明したように本発明では、外部バス接続端子から入力されて第１のメモリ回路に記憶されたデータの複製データを、内部接続された第２のメモリ回路に記憶し、第２のメモリ回路に記憶された複製データに対して暗号化または復号の処理を実行するようにしたため、データの暗号化や復号処理中のために外部バスが占有することが無くなる。その結果、暗号化や復号処理中であっても、第１のメモリ回路に記憶されたデータへの外部からのアクセスが可能となり、入力されたデータを用いた処理の効率が向上する。


【手続補正２４】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2004070499.tif 000030
【手続補正２５】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2004070499.tif 000031
【手続補正２６】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2004070499.tif 000032
【手続補正２７】
【補正対象書類名】図面
【補正対象項目名】図１８
【補正方法】変更
【補正の内容】
【図１８】
2004070499.tif 000033
【手続補正２８】
【補正対象書類名】図面
【補正対象項目名】図１９
【補正方法】変更
【補正の内容】
【図１９】
2004070499.tif 000034
【手続補正２９】
【補正対象書類名】図面
【補正対象項目名】図２０
【補正方法】変更
【補正の内容】
【図２０】
2004070499.tif 000035
【手続補正３０】
【補正対象書類名】図面
【補正対象項目名】図２２
【補正方法】変更
【補正の内容】
【図２２】
2004070499.tif 000036