(57)【要約】【課題】暗号化されたパケットを復号して得られる情報でパケットのＨｅａｄｅｒを上書きする場合に、Ｈｅａｄｅｒの上書きに要する処理時間を削減する。【解決手段】暗号化されたパケットを読み込む入力手段と、入力手段により読み込まれた暗号化されたパケットを復号する復号手段と、入力手段により読み込まれた暗号化されたパケットが有する第１のヘッダ及び復号手段より出力されたデータを、指定されるメモリ領域に出力する出力手段と、暗号化されたパケットを復号手段により復号して得られた情報を用いて該パケットに係る第２のヘッダを生成する制御手段とを有し、出力手段は、第１のヘッダ及び復号手段より出力されたデータをメモリ領域に出力した後に、生成された第２のヘッダでメモリ領域の第１のヘッダを上書きする。【選択図】図２
2020178169.tif 000002
【特許請求の範囲】
【請求項１】
暗号化されたパケットを読み込む入力手段と、
前記入力手段により読み込まれた前記暗号化されたパケットを復号する復号手段と、
前記入力手段により読み込まれた前記暗号化されたパケットが有する第１のヘッダ及び前記復号手段より出力されたデータを、指定されるメモリ領域に出力する出力手段と、
前記暗号化されたパケットを前記復号手段により復号して得られた情報を用いて該パケットに係る第２のヘッダを生成する制御手段とを有し、
前記出力手段は、前記第１のヘッダ及び前記復号手段より出力されたデータを前記メモリ領域に出力した後に、生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きすることを特徴とする情報処理装置。
【請求項２】
前記第２のヘッダは、前記暗号化されたパケットを前記復号手段により復号して得られた、前記パケットの種別を示す情報及び前記復号手段より出力されたデータのサイズを示す情報の少なくとも一方を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記復号手段より出力されたデータのサイズは、前記暗号化されたパケットが有するパディングデータを除いたサイズであることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記暗号化されたパケットは、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）１．３の規格に従って暗号化されたパケットであることを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
前記出力手段は、前記復号手段による前記暗号化されたパケットの復号においてエラーが発生した場合、生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きしないことを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
前記出力手段は、前記復号手段による前記暗号化されたパケットの復号においてエラーが発生した場合、生成された前記第２のヘッダを前記第１のヘッダと異なるメモリ領域に出力することを特徴とする請求項１〜５の何れか１項に記載の情報処理装置。
【請求項７】
生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きするか否かを、ＣＰＵからの設定によって切り替え可能であることを特徴とする請求項１〜６の何れか１項に記載の情報処理装置。
【請求項８】
前記ＣＰＵからの切り替え設定は、前記パケットを暗号化する規格に基づいて切り替えることを特徴とする請求項７記載の情報処理装置。
【請求項９】
暗号化されたパケットを読み込む入力工程と、
前記入力工程にて読み込まれた前記暗号化されたパケットを復号手段により復号する復号工程と、
前記入力工程にて読み込まれた前記暗号化されたパケットが有する第１のヘッダ及び前記復号手段より出力されたデータを、指定されるメモリ領域に出力する出力工程と、
前記暗号化されたパケットを前記復号工程にて復号して得られた情報を用いて該パケットに係る第２のヘッダを生成する制御工程とを有し、
前記出力工程では、前記第１のヘッダ及び前記復号手段より出力されたデータを前記メモリ領域に出力した後に、生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きすることを特徴とする情報処理方法。
【請求項１０】
暗号化されたパケットを読み込む入力ステップと、
前記入力ステップにて読み込まれた前記暗号化されたパケットを復号手段により復号する復号ステップと、
前記入力ステップにて読み込まれた前記暗号化されたパケットが有する第１のヘッダ及び前記復号手段より出力されたデータを、指定されるメモリ領域に出力する出力ステップと、
前記暗号化されたパケットを前記復号ステップにて復号して得られた情報を用いて該パケットに係る第２のヘッダを生成する制御ステップとをコンピュータに実行させ、
かつ前記出力ステップでは、前記第１のヘッダ及び前記復号手段より出力されたデータを前記メモリ領域に出力した後に、生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きする処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されたパケットを復号する情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
インターネット上のデータを暗号化し、セキュアに伝送するためのプロトコルが広く使用されている。代表的なものに、非特許文献１で開示されているＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）や、その後継の非特許文献２で開示されているＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）がある。
【０００３】
インターネット通信におけるセキュア通信の占める割合は増加している一方で、プロトコルの脆弱性をついた攻撃手法も増加している。例えば、非特許文献３で開示されているＰＯＯＤＬＥ（Ｐａｄｄｉｎｇ  Ｏｒａｃｌｅ  Ｏｎ  Ｄｏｗｎｇｒａｄｅｄ  Ｌｅｇａｃｙ  Ｅｎｃｒｙｐｔｉｏｎ）と呼ばれる攻撃手法がある。この攻撃手法では、攻撃者が、脆弱性のあるＳＳＬ３．０にバージョンを落とし、通信させることが可能である。
【０００４】
こうしたプロトコルの脆弱性をついた攻撃手法の増加に対応するために、非特許文献４で開示されているＴＬＳ１．３においては、通信のセキュリティ性を向上させるための規格変更が加えられた。ＴＬＳ１．３のレコードレイヤープロトコルにおいては、２つの大きな変更点がある。
【０００５】
１つ目の変更点は、パケットの種別を示すＴｙｐｅフィールドが、暗号化されることである。レコードレイヤーパケットのＨｅａｄｅｒには、パケットの種別にかかわらず、常に固定値“２３”がＯｐａｑｕｅＴｙｐｅとして設定される。実際のパケットの種別を示すＴｙｐｅフィールドは、暗号化されたＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔに含まれる。これにより、実際のパケットの種別は、暗号化されたＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔを復号しなければ知ることができない。
【０００６】
２つ目の変更点は、Ｐａｄｄｉｎｇの変更である。実際のＣｏｎｔｅｎｔのサイズを秘匿するために、最大のＰａｄｄｉｎｇサイズが（２14−１）バイトに拡張され、かつＰａｄｄｉｎｇサイズはランダム値をとることが可能である。さらに、パケット内からＰａｄｄｉｎｇサイズを示すフィールドが削除され、レコードレイヤーパケットのＨｅａｄｅｒには、Ｐａｄｄｉｎｇを含むＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔのサイズが設定される。このため、暗号化されたＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔをすべて復号しなければ、実際のＣｏｎｔｅｎｔのサイズを知ることができない。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】A. Freier, P. Karlton, P. Kocher: "The Secure Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, 1996.
【非特許文献２】T. Dierks, E. Rescorla: "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, 2008.
【非特許文献３】Bodo Moller, Thai Duong, Krzysztof Kotowicz: "This POODLE Bites: Exploiting The SSL 3.0 Fallback", Google Security Advisory
【非特許文献４】E. Reacorla: "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, 2018.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＴＬＳ１．３においては、レコードレイヤーパケットのＨｅａｄｅｒのＯｐａｑｕｅＴｙｐｅは、実際のパケットの種別を示しておらず、ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔを復号した後に得られるＴｙｐｅで上書きする必要がある。また、ＨｅａｄｅｒのＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔのサイズは、Ｐａｄｄｉｎｇを含んだサイズであるため、ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔを復号してＰａｄｄｉｎｇを除去した後に得られるＣｏｎｔｅｎｔサイズで上書きする必要がある。これらの上書きの処理をＣＰＵにより実行した場合にはメモリコピーに時間がかかる。
【０００９】
本発明は、このような事情に鑑みてなされたものであり、暗号化されたパケットを復号して得られる情報でパケットのＨｅａｄｅｒを上書きする場合に、Ｈｅａｄｅｒの上書きに要する処理時間を削減することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、暗号化されたパケットを読み込む入力手段と、前記入力手段により読み込まれた前記暗号化されたパケットを復号する復号手段と、前記入力手段により読み込まれた前記暗号化されたパケットが有する第１のヘッダ及び前記復号手段より出力されたデータを、指定されるメモリ領域に出力する出力手段と、前記暗号化されたパケットを前記復号手段により復号して得られた情報を用いて該パケットに係る第２のヘッダを生成する制御手段とを有し、前記出力手段は、前記第１のヘッダ及び前記復号手段より出力されたデータを前記メモリ領域に出力した後に、生成された前記第２のヘッダで前記メモリ領域の前記第１のヘッダを上書きすることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、暗号化されたパケットを復号して得られる情報でパケットのＨｅａｄｅｒを上書きする処理時間を削減することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態における通信処理用の集積回路のシステム構成例を示す図である。
【図２】本実施形態における暗号復号処理部の構成例を示す図である。
【図３】ＴＬＳ１．３におけるレコードレイヤーパケットの構造を示す図である。
【図４】本実施形態における再生成されたヘッダの構造を示す図である。
【図５】本実施形態における暗号復号処理部の動作例を説明するフローチャートである。
【図６】本実施形態におけるデータ出力部の動作例を示すフローチャートである。
【図７】本実施形態における暗号復号処理を説明する図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１４】
図１は、本発明の一実施形態における通信処理用の集積回路のシステム構成例を示すブロック図である。通信処理用の集積回路１００は、ＣＰＵ１０１、暗号復号処理部１０２、ＤＲＡＭコントローラ１０３、通信処理部１０４、ＳＲＡＭ１０５、ＤＲＡＭ１０７、及びネットワークインタフェース部１０８を有する。
【００１５】
ＣＰＵ１０１、暗号復号処理部１０２、ＤＲＡＭコントローラ１０３、通信処理部１０４、及びＳＲＡＭ１０５は、システムバス１０６に接続され、システムバス１０６を介して相互にデータ転送を行う。ＤＲＡＭコントローラ１０３は、ＤＲＡＭ１０７に対するデータの書き込みやデータの読み出しを行う。通信処理部１０４は、ネットワークインタフェース部１０８を介してインターネット等の通信ネットワークに接続され、外部機器との間でパケットの送受信等を行う。この構成は、Ｓｙｓｔｅｍ―Ｏｎ―Ａ―Ｃｈｉｐ（ＳｏＣ）とよばれる集積回路で代表的な構成である。
【００１６】
図２は、本実施形態における暗号復号処理部１０２の構成例を示すブロック図である。暗号復号処理部１０２は、データ入力部２０１、暗号処理部２０２、パディング処理部２０３、データ出力部２０４、及び全体制御部２０５を有する。暗号復号処理部１０２は、パケットに対する暗号化処理及び復号処理を行うことが可能な情報処理部であるが、以下では主に復号処理について説明する。
【００１７】
暗号復号処理部１０２におけるレコードレイヤーパケットの典型的な復号処理の流れを説明する。以下の説明では、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）１．３の規格に準拠したレコードレイヤーパケットを一例に説明するが、これに限定されるものではない。例えば、暗号化されたパケットを復号することでヘッダに格納すべき実際の情報が取得されるパケットを通信するシステムに対して本実施形態は適用可能である。
【００１８】
全体制御部２０５は、ＣＰＵ１０１から、暗号処理か復号処理かを示すモードや、暗号処理やＭＡＣ処理で使用するアルゴリズムや、ＴＬＳのＶｅｒｓｉｏｎ情報や、入力データや出力データの転送アドレス等の設定値が設定される。ＴＬＳ１．３の場合、Ｖｅｒｓｉｏｎ情報は固定値“１．３”となる。全体制御部２０５は、ＣＰＵ１０１から設定された各種設定値を、データ入力部２０１、暗号処理部２０２、パディング処理部２０３、及びデータ出力部２０４に転送する。その後、全体制御部２０５は、ＣＰＵ１０１から処理の開始要求を受けて、各モジュールに対して処理の開始を指示する。
【００１９】
処理の開始指示を受けて、データ入力部２０１は、全体制御部２０５から指示された入力データの転送元アドレスが示すＳＲＡＭ１０５又はＤＲＡＭ１０７等のメモリ領域から、システムバス１０６を経由して暗号化されたレコードレイヤーパケットを読み込む。ここでは、データ入力部２０１は、暗号化されたＴＬＳ１．３のレコードレイヤーパケットを分割して読み込む。
【００２０】
図３は、ＴＬＳ１．３のレコードレイヤーパケットのフォーマットを示す図である。レコードレイヤーパケットは、５バイトのＨｅａｄｅｒ（３１０）、及び“ＣｉｐｈｅｒｔｅｘｔＬｅｎｇｔｈ”バイトのＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）を有する。
【００２１】
Ｈｅａｄｅｒ（３１０）は、１バイトのＯｐａｑｕｅＴｙｐｅ（３１１）、２バイトのＬｅｇａｃｙ  Ｒｅｃｏｒｄ  Ｖｅｒｓｉｏｎ（３１２）、及び２バイトのＣｉｐｈｅｒｔｅｘｔＬｅｎｇｔｈ（３１３）を有する。ＯｐａｑｕｅＴｙｐｅ（３１１）は、実際のパケットの種別（Ｔｙｐｅ）によらず、常に固定値“２３”である。また、Ｌｅｇａｃｙ  Ｒｅｃｏｒｄ  Ｖｅｒｓｉｏｎ（３１２）は、実際のＴＬＳバージョンによらず、常に固定値“３．１”である。ＣｉｐｈｅｒｔｅｘｔＬｅｎｇｔｈ（３１３）は、ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）のサイズを示す。
【００２２】
ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）は、暗号化された領域である。ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）は、“ＭＳＧＬＥＮ”バイトのＣｏｎｔｅｎｔ（３２１）、及び１バイトのＴｙｐｅ（３２２）を有する。さらに、ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）は、“Ｃｐａｄｌｅｎｇｔｈ”バイトのＰａｄｄｉｎｇ（３２３）、及び“ＭＡＣＬＥＮ”バイトのＭＡＣ（３２４）を有する。
【００２３】
Ｃｏｎｔｅｎｔ（３２１）は、暗号化通信で転送される実データである。Ｔｙｐｅ（３２２）は、転送されるレコードレイヤーパケットの種別を示し、パケットの種別に応じた非“０”の値をとる。Ｐａｄｄｉｎｇ（３２３）は、固定値“０”で、（２14−１）バイト以下の任意のランダムなサイズである。ＭＡＣ（３２４）は、ＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔ（３２０）のＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値である。詳細には、ＭＡＣ（３２４）は、Ｃｏｎｔｅｎｔ（３２１）とＴｙｐｅ（３２２）とＰａｄｄｉｎｇ（３２３）とに格納された暗号化前のデータを基に得られるＭＡＣ値である。
【００２４】
データ入力部２０１は、任意の処理単位で、レコードレイヤーパケットを分割して受信する。データ入力部２０１は、まずレコードレイヤーパケットのＨｅａｄｅｒを受信して、全体制御部２０５に送信する。その後、データ入力部２０１は、レコードレイヤーパケットのＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔを処理単位で分割して受信し、暗号処理部２０２に送信する。
【００２５】
全体制御部２０５は、データ入力部２０１から受信したＨｅａｄｅｒをデータ出力部２０４に送信する。データ出力部２０４は、全体制御部２０５から受信したＨｅａｄｅｒを、システムバス１０６を経由して、全体制御部２０５から指示された出力データの転送先アドレスが示すＳＲＡＭ１０５又はＤＲＡＭ１０７等のメモリ領域に出力する。
【００２６】
暗号処理部２０２は、データ入力部２０１から入力されたＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔの暗号処理や復号処理を行う。また、暗号処理部２０２は、ＭＡＣ処理に係る演算等を行う。暗号処理、復号処理、及びＭＡＣ処理で使用するアルゴリズムは、全体制御部２０５により指定されたアルゴリズムを使用する。暗号処理部２０２は、復号されたＣｉｐｈｅｒｔｅｘｔＦｒａｇｍｅｎｔのうち、ＭＡＣを除く復号データを、パディング処理部２０３に出力する。また、暗号処理部２０２は、復号されたＭＡＣと、ＭＡＣ処理で生成されたＭＡＣとを比較することで改竄検知を行う。暗号処理部２０２は、ＭＡＣエラーが発生したか否かを全体制御部２０５に通知する。
【００２７】
パディング処理部２０３は、暗号処理部２０２から入力される復号された分割データに対し、そのデータがＣｏｎｔｅｎｔであるか、Ｔｙｐｅであるか、Ｐａｄｄｉｎｇであるかの判断を行うとともに、“ＭＳＧＬＥＮ”を取得するためのカウントを行う。パディング処理部２０３においてＣｏｎｔｅｎｔと判断されたデータは、データ出力部２０４から、システムバス１０６を経由してＳＲＡＭ１０５又はＤＲＡＭ１０７等に出力される。また、パディング処理部２０３においてＰａｄｄｉｎｇと判断されたデータは、不要なデータであるのでパディング処理部２０３で破棄される。また、パディング処理部２０３においてＴｙｐｅと判断されたデータ及び“ＭＳＧＬＥＮ”は、全体制御部２０５に出力される。
【００２８】
全体制御部２０５は、Ｔｙｐｅと判断されたデータ、“ＭＳＧＬＥＮ”の値、及びＣＰＵ１０１から設定されたＴＬＳのＶｅｒｓｉｏｎ情報を基に、パケットのヘッダを再生成する。図４は、全体制御部２０５により再生成されるＨｅａｄｅｒの例を示す図である。再生成されたＨｅａｄｅｒ（４１０）は、パケットの実際の種別を示す１バイトのＴｙｐｅ（４１１）、ＣＰＵ１０１から設定された２バイトの固定値“１．３”であるＶｅｒｓｉｏｎ（４１２）、及び２バイトのＭＳＧＬＥＮ（４１３）を有する。
【００２９】
暗号処理部２０２におけるＭＡＣ処理の結果がＭＡＣエラーでなければ、再生成されたＨｅａｄｅｒで元のＨｅａｄｅｒを上書きするために、全体制御部２０５は、データ出力部２０４にデータ出力先のアドレスを元の出力データの転送先アドレスに再設定する。その後、全体制御部２０５は、再生成したＨｅａｄｅｒをデータ出力部２０４に送信する。データ出力部２０４は、再設定された出力データの転送先アドレスに基づいて、再生成されたＨｅａｄｅｒを先に出力したＨｅａｄｅｒと同じ領域に出力し、Ｈｅａｄｅｒを再生成されたＨｅａｄｅｒで上書きする。全体制御部２０５は、再生成されたＨｅａｄｅｒをデータ出力部２０４がＳＲＡＭ１０５又はＤＲＡＭ１０７等に転送完了した後に、ＣＰＵ１０１に処理完了を割り込みで通知する。
【００３０】
図５は、本実施形態における暗号復号処理部１０２の動作を説明するフローチャートである。図５には、暗号復号処理部１０２の全体制御部２０５の動作例を示している。なお、図５に示す処理は、１パケットに係る処理である。
【００３１】
ステップＳ５０１では、全体制御部２０５は、ＣＰＵ１０１から、処理に必要な設定値を受信する。処理に必要な設定値には、前述したように暗号処理か復号処理かを示すモードや、暗号処理やＭＡＣ処理で使用するアルゴリズムや、ＴＬＳのＶｅｒｓｉｏｎ情報や、入力データや出力データの転送アドレス等が含まれる。
【００３２】
ステップＳ５０１において設定値の受信が完了した後、ステップＳ５０２では、全体制御部２０５は、ＣＰＵ１０１から設定された各種設定値を、データ入力部２０１、暗号処理部２０２、パディング処理部２０３、及びデータ出力部２０４に転送する。
【００３３】
次に、ステップＳ５０３では、全体制御部２０５は、ＣＰＵ１０１から、処理の開始要求を受信する。続いて、ステップＳ５０４では、全体制御部２０５は、データ入力部２０１、暗号処理部２０２、パディング処理部２０３、及びデータ出力部２０４に、処理の開始を指示する。
【００３４】
次に、ステップＳ５０５では、全体制御部２０５は、データ入力部２０１が受信したレコードレイヤーパケットのＨｅａｄｅｒを、データ入力部２０１から受信する。続いて、ステップＳ５０６では、全体制御部２０５は、データ入力部２０１から受信したＨｅａｄｅｒをＳＲＡＭ１０５又はＤＲＡＭ１０７に転送するために、データ出力部２０４に送信する。
【００３５】
次に、ステップＳ５０７では、全体制御部２０５は、暗号化されたパケットを復号処理して得られた、Ｔｙｐｅと判断されたデータと“ＭＳＧＬＥＮ”の値をパディング処理部２０３から受信する。続いて、ステップＳ５０８では、全体制御部２０５は、ステップＳ５０７において受信したＴｙｐｅと判断されたデータ、“ＭＳＧＬＥＮ”の値、及びＣＰＵ１０１から設定されたＶｅｒｓｉｏｎ情報を基に、パケットのＨｅａｄｅｒを再生成する。
【００３６】
次に、ステップＳ５０９では、全体制御部２０５は、ＣＰＵ１０１からの設定に応じてＨｅａｄｅｒ上書きモードであるか否かの判定を行う。ここで、Ｈｅａｄｅｒ上書きモードは、先に出力したＨｅａｄｅｒを、再生成されたＨｅａｄｅｒで上書きする処理を行うモードである。全体制御部２０５が、Ｈｅａｄｅｒ上書きモードであると判定した場合には（Ｙｅｓ）、処理はステップＳ５１０へ進み、Ｈｅａｄｅｒ上書きモードでないと判定した場合には（Ｎｏ）、処理はステップＳ５１４へ進む。
【００３７】
Ｈｅａｄｅｒ上書きモードであると全体制御部２０５が判定した場合に進むステップＳ５１０では、全体制御部２０５は、暗号処理部２０２でのＭＡＣ処理の結果がＭＡＣエラーであるか否かの判定を行う。全体制御部２０５が、ＭＡＣエラーがないと判定した場合には（Ｎｏ）、処理はステップＳ５１１に進み、ＭＡＣエラーと判断した場合には（Ｙｅｓ）、処理はステップＳ５１１をスキップしてステップＳ５１２へ進む。
【００３８】
ステップＳ５１１では、全体制御部２０５は、先に出力された元のＨｅａｄｅｒを再生成したＨｅａｄｅｒで上書きするために、データ出力部２０４の転送先のアドレスを、出力データの転送先アドレス（開始アドレス）で再設定する。ステップＳ５１１の処理後、処理はステップＳ５１２へ進む。
【００３９】
ステップＳ５１２では、全体制御部２０５は、再生成したＨｅａｄｅｒをデータ出力部２０４に出力する。続いて、ステップＳ５１３では、全体制御部２０５は、データ出力部２０４が再生成されたＨｅａｄｅｒの転送を完了するまで待つ。ステップＳ５１３において、再生成されたＨｅａｄｅｒの転送が完了したと全体制御部２０５が判定した後、ステップＳ５１５では、全体制御部２０５は、ＣＰＵ１０１に処理完了を割り込みで通知して処理を完了する。
【００４０】
ステップＳ５０９においてＨｅａｄｅｒ上書きモードでないと全体制御部２０５が判定した場合に進むステップＳ５１４では、全体制御部２０５は、再生成したＨｅａｄｅｒを内部のレジスタに保持する。続いて、ステップＳ５１５では、全体制御部２０５は、ＣＰＵ１０１に処理完了を割り込みで通知して処理を完了する。
【００４１】
図６は、本実施形態におけるデータ出力部２０４の動作例を示すフローチャートである。なお、図６に示す処理は、１パケットに係るデータ出力部２０４での処理である。パケットに係る処理を開始する際、ステップＳ６０１では、データ出力部２０４は、転送先のメモリ領域を示すアドレス（Ａｄｄｒｅｓｓ）を、全体制御部２０５から指定された転送先アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ）で初期化する。ここで、指定された転送先アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ）で示されるメモリ領域は、ＳＲＡＭ１０５又はＤＲＡＭ１０７の領域である。
【００４２】
次に、ステップＳ６０２では、データ出力部２０４は、全体制御部２０５から受信したＨｅａｄｅｒを転送先アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ）が示すメモリ領域に転送する。このステップＳ６０２において転送されるＨｅａｄｅｒは、データ入力部２０１が受信した復号処理される前のレコードレイヤーパケットのＨｅａｄｅｒである。続いて、ステップＳ６０３では、データ出力部２０４は、転送先のアドレス（Ａｄｄｒｅｓｓ）をＨｅａｄｅｒのサイズである５バイト分だけ加算する。
【００４３】
次に、ステップＳ６０４では、データ出力部２０４は、全データペイロードの処理が完了したか否かを判定する。全データペイロードの処理が完了したか否かは、全体制御部２０５より通知される。データ出力部２０４は、この全体制御部２０５からの通知に基づいて、全データペイロードの処理が完了したか否かを判定する。データ出力部２０４が、全データペイロードの処理が完了していないと判定した場合には（Ｎｏ）、処理はステップＳ６０５へ進み、全データペイロードの処理が完了したと判定した場合には（Ｙｅｓ）、処理はステップＳ６０８へ進む。
【００４４】
全データペイロードの処理が完了していないとデータ出力部２０４が判定した場合に進むステップＳ６０５では、データ出力部２０４は、パディング処理部２０３より単位データペイロードを受信する。続いて、ステップＳ６０６では、データ出力部２０４は、受信した単位データペイロードを転送先のアドレス（Ａｄｄｒｅｓｓ）が示すメモリ領域に転送する。
【００４５】
続いて、ステップＳ６０７では、データ出力部２０４は、転送先のアドレス（Ａｄｄｒｅｓｓ）に単位データペイロードのサイズのバイト数を加算する。その後、ステップＳ６０４に戻り、データ出力部２０４は、後続のデータペイロードがあるか否かの判定を再び行う。
【００４６】
ステップＳ６０４において全データペイロードの処理が完了したとデータ出力部２０４が判定した場合に進むステップＳ６０８では、データ出力部２０４は、ＭＡＣエラーが発生したか否かの判定を行う。ＭＡＣエラーが発生したか否かは、暗号処理部２０２におけるＭＡＣ処理の結果を受けて、全体制御部２０５より通知される。データ出力部２０４は、この全体制御部２０５からの通知に基づいて、ＭＡＣエラーが発生したか否かを判定する。データ出力部２０４が、ＭＡＣエラーが発生していないと判定した場合には（Ｎｏ）、処理はステップＳ６０９へ進み、ＭＡＣエラーが発生したと判定した場合には（Ｙｅｓ）、処理はステップＳ６０９をスキップしてステップＳ６１０へ進む。
【００４７】
ステップＳ６０９では、データ出力部２０４は、転送先のアドレス（Ａｄｄｒｅｓｓ）を全体制御部２０５から指定された転送先アドレス（Ｓｔａｒｔ  Ａｄｄｒｅｓｓ）で再度初期化する。続いて、ステップＳ６１０では、データ出力部２０４は、全体制御部２０５において再生成されたＨｅａｄｅｒを転送先のアドレス（Ａｄｄｒｅｓｓ）が示すメモリ領域に転送する。これにより、先に出力されている元のレコードレイヤーパケットのＨｅａｄｅｒを再生成後のＨｅａｄｅｒで上書きすることができる。元のレコードレイヤーパケットのＨｅａｄｅｒを再生成されたＨｅａｄｅｒで上書きするか否かは、ＣＰＵ１０１からの設定に応じて切り替えるようにしてもよい。例えば、その切り替え動作は、ＣＰＵ１０１から設定される、パケットを暗号化する規格に基づいて切り替えてもよい。例えば、ＣＰＵ１０１から設定されるＴＬＳのＶｅｒｓｉｏｎ情報によってＴＬＳ１．３であるならば上書きを行い、それ以外であるならば上書きを行わないように切り替えてもよい。
【００４８】
ステップＳ６０８においてＭＡＣエラーが発生したとデータ出力部２０４が判定した場合、ステップＳ６１０では、データ出力部２０４は、全体制御部２０５により再生成されたＨｅａｄｅｒを転送先のアドレス（Ａｄｄｒｅｓｓ）が示すメモリ領域に転送する。これにより、再生成されたＨｅａｄｅｒは、既に転送済みのデータペイロードに続くメモリ領域に転送される。ＭＡＣエラーが発生した場合、パケットに対して何らかの改ざんが加えられた可能性もある。この場合には、再生成されたＨｅａｄｅｒで元のＨｅａｄｅｒを上書きしないことで、ＭＡＣエラーの原因の解析に役立てることができる。本実施形態では、ＭＡＣエラーが発生したとデータ出力部２０４が判定した場合、再生成されたＨｅａｄｅｒを転送済みのデータペイロードに続くメモリ領域に転送しているが、別途ＣＰＵ１０１から指定された所定のメモリ領域に転送するようにしてもよい。
【００４９】
図７を参照して、本実施形態における暗号復号処理の処理サイクル数について説明する。図７（ａ）には、従来例による処理サイクル数の例を示しており、図７（ｂ）には、本実施形態における処理サイクル数の例を示している。図７（ａ）及び図７（ｂ）において、ＯＨは受信した（復号処理される前の）レコードレイヤーパケットのＨｅａｄｅｒを示し、Ｄ０〜Ｄ３はＣｏｎｔｅｎｔを示し、Ｐ０、Ｐ１はパディングデータを示し、ＭＨは再生成されたＨｅａｄｅｒを示している。
【００５０】
図７（ａ）に示すように従来例では、ｔ０でＨｅａｄｅｒ（ＯＨ）を読み込み、ｔ１で読み込んだＯＨを出力する。続いて、ｔ１で入力データＤ０を読み込み、ｔ２でデータＤ０の復号処理を行う。ｔ１以降、入力データＤ０〜Ｄ３、Ｐ０、Ｐ１を順次読み込んで復号処理を行う。全パケット処理がｔ７で完了すると、ｔ８でＨｅａｄｅｒ（ＭＨ）が再生成されてレジスタに格納され、ｔ９で処理の完了がＣＰＵ１０１に割り込みＩＮＴで通知される。ＣＰＵ１０１は、処理の完了の通知を受けて、レジスタに格納されている再生成されたＨｅａｄｅｒ（ＭＨ）をＯＨの領域にメモリコピーする。この処理によって、無駄なメモリコピーが発生してしまう。
【００５１】
それに対して、図７（ｂ）に示すように、本実施形態では、全パケット処理がｔ７で完了した後、ｔ８において再生成されたＨｅａｄｅｒ（ＭＨ）がＯＨの領域に転送される。これによって、ＣＰＵ１０１によるメモリコピーを削減することができる。通常、ＣＰＵ１０１によるメモリコピーは、専用のハードウェアによるメモリコピーに対して時間がかかる。ハードウェアによって、再生成されたＨｅａｄｅｒが自動でコピーされることで、本実施形態では、Ｈｅａｄｅｒの上書きに要する処理時間を削減することが可能である。また、再生成されたＨｅａｄｅｒを格納するレジスタを設ける必要もないので、Ｈｅａｄｅｒの上書きに要するハードウェア資源を削減することもできる。
【００５２】
（本発明の他の実施形態）
本発明は、前述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５３】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５４】
１００：ＣＰＵ  １０２：暗号復号処理部  １０３：ＤＲＡＭコントローラ  １０４：通信処理部  １０５：ＳＲＡＭ  １０６：システムバス  １０７：ＤＲＡＭ  １０８：ネットワークインタフェース  ２０１：データ入力部  ２０２：暗号処理部  ２０３：パディング処理部  ２０４：データ出力部  ２０５：全体制御部
【図１】
2020178169.tif 000003
【図２】
2020178169.tif 000004
【図３】
2020178169.tif 000005
【図４】
2020178169.tif 000006
【図５】
2020178169.tif 000007
【図６】
2020178169.tif 000008
【図７】
2020178169.tif 000009