(57)【要約】【課題】暗号処理をより高速に実行可能とする。【解決手段】暗号処理装置は、コンテンツデータを分割して記憶部に格納する入力手段と、暗号処理の対象となるデータが所定のデータ長となるようにコンテンツデータに付加されることになるパディングデータを生成する生成手段と、所定データ量を単位としてコンテンツデータ及びパディングデータに対する暗号処理を実行する暗号処理手段と、を有する。暗号処理手段は、記憶部に格納されたデータが所定データ量未満である場合、生成手段により生成されたパディングデータに対して暗号処理を実行する。【選択図】図２
2018205505.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理装置であって、
コンテンツデータを分割して記憶部に格納する入力手段と、
暗号処理の対象となるデータが所定のデータ長となるように前記コンテンツデータに付加されることになるパディングデータを生成する生成手段と、
所定データ量を単位として前記コンテンツデータ及び前記パディングデータに対する暗号処理を実行する暗号処理手段と、
を有し、
前記暗号処理手段は、前記記憶部に格納されたデータが前記所定データ量未満である場合、前記生成手段により生成されたパディングデータに対して暗号処理を実行する
ことを特徴とする暗号処理装置。
【請求項２】
前記暗号処理手段は、前記コンテンツデータの前記記憶部への格納が完了しておらず、かつ、前記記憶部に格納されたデータが前記所定データ量未満である場合、前記生成手段により生成されたパディングデータのみを含むデータに対して暗号処理を実行し、
、前記コンテンツデータの前記記憶部への格納が完了し、かつ、前記記憶部に格納されたデータが前記所定データ量未満である場合、該記憶部に格納されたデータにパディングデータを付加することにより得られる前記所定データ量のデータに対して暗号処理を実行する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記所定のデータ量は、前記暗号処理手段で利用される暗号アルゴリズムのブロック長である
ことを特徴とする請求項１又は２に記載の暗号処理装置。
【請求項４】
前記所定のデータ長は、ＴＬＳ（Transport Layer Security）１．３で規定されるレコードレイヤーパケットにおけるＴＬＳＩｎｎｅｒＰｌａｉｎｔｅｘｔのデータ長である
ことを特徴とする請求項１乃至３の何れか１項に記載の暗号処理装置。
【請求項５】
前記暗号処理手段は、同時に１つのデータに対して暗号処理を実行可能であり、前記コンテンツデータに対する暗号処理と前記パディングデータに対する暗号処理とを時分割で実行する
ことを特徴とする請求項１乃至４の何れか１項に記載の暗号処理装置。
【請求項６】
前記暗号処理手段は、同時に２以上の暗号処理を並列して実行可能であり、前記コンテンツデータに対する暗号処理と前記パディングデータに対する暗号処理とを並列に実行する
ことを特徴とする請求項１乃至４の何れか１項に記載の暗号処理装置。
【請求項７】
暗号処理装置の制御方法であって、
コンテンツデータを分割して記憶部に格納する入力工程と、
暗号処理の対象となるデータが所定のデータ長となるように前記コンテンツデータに付加されることになるパディングデータを生成する生成工程と、
所定データ量を単位として前記コンテンツデータ及び前記パディングデータに対する暗号処理を実行する暗号処理工程と、
を含み、
前記暗号処理工程では、前記記憶部に格納されたデータが前記所定データ量未満である場合、前記生成工程により生成されたパディングデータに対して暗号処理を実行する
ことを特徴とする制御方法。
【請求項８】
コンピュータを、請求項１乃至６の何れか１項に記載の暗号処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理に関するものである。
【背景技術】
【０００２】
インターネット上のデータを暗号化しセキュアに伝送するためのプロトコルが広く使用されている。代表的なものに、ＳＳＬ（Secure Socket Layer）／ＴＬＳ（Transport Layer Security）がある。一方、プロトコルの脆弱性をついた攻撃が近年増加している。例えば、ＰＯＯＤＬＥ（Padding Oracle On Downgraded Legacy Encryption）（非特許文献３）と呼ばれる攻撃手法では、脆弱性を有するＳＳＬ３．０（非特許文献１）で意図的に通信させることにより攻撃を行う。そこで、よりセキュアなＴＬＳ１．２（非特許文献２）やＴＬＳ１．３（非特許文献４）といったプロトコルが開発されている。
【０００３】
セキュリティを向上させるため、暗号化においてパディングが利用される場合がある。パディングは、通信で送受信したいコンテンツに、ダミーデータを付加することで、コンテンツ長を秘匿するものである。例えば、上述のＴＬＳ１．２においては、最大で２５６バイトのパディングが利用されている。そして、特許文献１では、暗号処理の高速化のため、コンテンツの後ろにパディング用データを自動付加するハードウェア構成が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４２１２３３９号
【非特許文献】
【０００５】
【非特許文献１】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, 2014
【非特許文献４】E. Reacorla RTEM, Inc., "The Transport Layer Security (TLS) Protocol Version 1.3", draft-ietf-tls-tls13-18, 2016
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述のＴＬＳ１．３においては、通信のセキュリティ性を向上させるために、パディング長は最大で２１４−１バイトに拡張され、かつ、ランダム値をとることが可能になっている。そのため、従来と比べパディングの暗号化により多くの処理時間を要するようになると想定される。上述の特許文献１は、このような最大パディング長の増加に伴う処理時間の増加を解決するものではない。
【０００７】
本発明はこのような問題を鑑みてなされたものであり、暗号処理をより高速に実行可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の問題点を解決するため、本発明に係る暗号処理装置は以下の構成を備える。すなわち、暗号処理装置は、コンテンツデータを分割して記憶部に格納する入力手段と、暗号処理の対象となるデータが所定のデータ長となるように前記コンテンツデータに付加されることになるパディングデータを生成する生成手段と、所定データ量を単位として前記コンテンツデータ及び前記パディングデータに対する暗号処理を実行する暗号処理手段と、を有し、前記暗号処理手段は、前記記憶部に格納されたデータが前記所定データ量未満である場合、前記生成手段により生成されたパディングデータに対して暗号処理を実行する。
【発明の効果】
【０００９】
本発明によれば、暗号処理をより高速に実行可能とする技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】通信処理用の集積回路のシステム構成を例示的に示す図である。
【図２】第１実施形態に係る暗号処理装置の構成を示す図である。
【図３】ＴＬＳ１．３におけるレコードレイヤーパケットの構造を説明する図である。
【図４】第１実施形態に係る暗号処理装置の動作フローチャートである。
【図５】暗号処理の具体例及び効果を説明する図である。
【図６】変形例における暗号処理装置の動作フローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１２】
（第１実施形態）
本発明に係る暗号処理装置の第１実施形態として、通信処理用の集積回路に実装した形態を例に挙げて以下に説明する。
【００１３】
＜装置構成＞
図１は、通信処理用の集積回路１のシステム構成を例示的に示す図である。集積回路１は、ＣＰＵ１０、暗号処理装置２０、ＤＲＡＭコントローラ３０、通信処理装置４０、ＳＲＡＭ６０を含み、これらはバスシステム５０を介して相互にデータ転送を行う。ＤＲＡＭコントローラにはＤＲＡＭ２が接続されデータの読み書きを行う。通信処理装置４０の先にはＬＡＮ３が接続され、外部機器との間で通信パケットの送受信を行う。この構成はＳｏＣ（System-On-A-Chip）とよばれる集積回路における代表的な構成である。
【００１４】
図２は、第１実施形態に係る暗号処理装置の構成を示す図である。暗号処理装置２０は、データ入力部２００、暗号処理部２０１、パディング処理部２０２、データ出力部２０３、全体制御部２０４を含む。データ入力部２００は、ＳＲＡＭ６０またはＤＲＡＭ２から、バスシステム５０を経由してデータ（ＨｅａｄｅｒおよびＣｏｎｔｅｎｔ）を分割して読み出し、記憶部に逐次格納する。そして、暗号アルゴリズムごとに定められた所定の処理単位（所定データ量）で暗号処理部２０１へ出力する。パディング処理部２０２は、パディングデータを生成し、暗号処理部２０１への出力を行う。
【００１５】
暗号処理部２０１は、データ入力部２００の出力（コンテンツデータ）及びパディング処理部２０２の出力（パディングデータ）のいずれかを選択して暗号化処理を行う。具体的には、暗号処理及びＭＡＣ処理を行い、データ出力部２０３に処理結果を出力する。データ出力部２０３は、暗号処理部２０１の出力をＳＲＡＭ６０またはＤＲＡＭ２に書き込む。
【００１６】
全体制御部２０４は、データ入力部２００、暗号処理部２０１、パディング処理部２０２、データ出力部２０３の各部に対して設定値を出力し、暗号処理装置２０の制御を行う。設定値には、ＣＰＵ１０から設定された、暗号処理やＭＡＣ処理で使用するアルゴリズムなどで利用する各設定値やコンテンツのｌｅｎｇｔｈ情報などが含まれる。
【００１７】
図３は、暗号処理装置２０が取り扱うＴＬＳ１．３におけるレコードレイヤーパケットのフォーマット構造を説明する図である。レコードレイヤー（ＴＬＳＣｉｐｈｅｒｔｅｘｔ）は、５バイトのＨｅａｄｅｒ、”ｌｅｎｇｔｈ”バイトのｅｎｃｒｙｐｔｅｄ＿ｒｅｃｏｒｄを含む。
【００１８】
Ｈｅａｄｅｒは、１バイト長のＯｐａｑｕｅＴｙｐｅ、２バイト長のｒｅｇａｃｙ＿ｒｅｃｏｒｄ＿ｖｅｒｓｉｏｎ、２バイト長のｌｅｎｇｔｈを含む。ここで、ＯｐａｑｕｅＴｙｐｅは固定値”２３”、ｒｅｇａｃｙ＿ｒｅｃｏｒｄ＿ｖｅｒｓｉｏｎは固定値”０ｘ０３０１”である。”ｌｅｎｇｔｈ”はｅｎｃｒｙｐｔｅｄ＿ｒｅｃｏｒｄのサイズを示す値が格納される。
【００１９】
ｅｎｃｒｙｐｔｅｄ＿ｒｅｃｏｒｄは、暗号化された領域である。当該領域は、”ＴＬＳＰｌａｉｎｔｅｘｔ．ｌｅｎｇｔｈ”バイト長のＣｏｎｔｅｎｔ、１バイト長のＴｙｐｅ、”ｌｅｎｇｔｈ＿ｏｆ＿ｐａｄｄｉｎｇ”バイト長のｚｅｒｏｓ（パディング）、”ＭＡＣＬＥＮ”バイト長のＭＡＣを含む。ここで、Ｃｏｎｔｅｎｔは、暗号化通信で転送されるコンテンツデータ（実データ）、Ｔｙｐｅは転送されるレコードレイヤーパケットの種類を示す非ゼロの値である。ｚｅｒｏｓは固定値”０”で、最大２１４−１バイトのランダムなサイズである。Ｃｏｎｔｅｎｔ、Ｔｙｐｅ、ｚｅｒｏｓから構成されるデータはＴＬＳＩｎｎｅｒＰｌａｉｎｔｅｘｔと呼ばれ、暗号化前のデータを示す。ＭＡＣは、ＴＬＳＩｎｎｅｒＰｌａｉｎｔｅｘｔのＭＡＣ（Message Authentication Code）値である。
【００２０】
＜装置の動作＞
図４は、第１実施形態に係る暗号処理装置の動作フローチャートである。ここでは、ＣＰＵ１０による命令を受けた全体制御部２０４が、暗号処理装置２０の各部の制御を開始することを想定する。
【００２１】
Ｓ１０１では、データ入力部２００は、暗号処理すべきコンテンツデータを取得済みか否かを判定する。たとえば、ブロック暗号が選択されている場合、規格で規定されているブロック長のデータ量を取得済みか否かを判定する。取得済みの場合はＳ１０２に進みコンテンツデータの暗号処理を実行する。一方、取得済みでない場合はＳ１１３に進みパディングデータの暗号処理を実行する。
【００２２】
Ｓ１０２では、暗号処理部２０１は、コンテンツデータを暗号処理単位（例えばブロック長）に分割した単位データをデータ入力部２００から読み込む。そして、Ｓ１０３では、暗号処理部２０１は、読み込んだ単位データに対して暗号処理を実施する。
【００２３】
Ｓ１０４では、データ出力部２０３は、暗号処理部２０１による暗号処理結果を出力する。なお、出力は即座に実施してもよいし、バスシステム５０における混雑の軽減などを目的として、一定量ため込んでから出力してもよい。
【００２４】
Ｓ１０５では、全体制御部２０４は、未処理データ量が条件を満たすか否かを判定する。具体的には、暗号処理の対象となるデータのデータ長から既処理のデータ長を減算して未処理データ長を算出し、当該未処理データ長がブロック長未満（所定データ量未満）であるか否かの判定を行う。ここでは、暗号処理の対象となるデータのデータ長は、ＴＬＳＰｌａｉｎｔｅｘｔ．ｌｅｎｇｔｈのデータ長である。未処理データ長がブロック長以上である場合はＳ１０１に進み、後続の単位データをデータ入力部２００から読み込み、暗号処理を継続する。一方、未処理データ長がブロック長未満である場合は、Ｓ１０６に進む。そして、Ｓ１０６では、全体制御部２０４は、未処理データ長がゼロであるか否かを判定する。未処理データ長がゼロである場合はＳ１１０に進む。一方、未処理データ長がゼロでない場合はＳ１０７に進む。
【００２５】
Ｓ１０７では、データ入力部２００は、未処理データにパディングを付加しブロック長のサイズとする。Ｓ１０８では、暗号処理部２０１は、Ｓ１０７でパディングを付加された未処理データに対して暗号処理を実施する。Ｓ１０９では、データ出力部２０３は、Ｓ１０８による暗号処理結果を出力する。
【００２６】
Ｓ１１０では、全体制御部２０４は、コンテンツ処理完了フラグを”１”にする。コンテンツ処理完了フラグは、データ入力部２００からのデータ入力が完了したか否かを示すフラグである。Ｓ１１１では、全体制御部２０４は、パディング処理が完了しているか判定を行う。パディング処理完了フラグの値が”１”であった場合、パディング処理が完了していると判断し、処理を終了する。一方、パディング処理完了フラグの値が”１”でなかった場合、パディング処理が完了していないと判断し、Ｓ１０１に進み処理を継続する。
【００２７】
Ｓ１１３では、全体制御部２０４は、パディングの暗号化処理が完了しているかどうか判定するため、パディング処理完了フラグの値を確認する。パディング処理完了フラグの値が”１”である場合は、パディングの暗号化処理が完了していると判断しＳ１１９に進む。パディング処理完了フラグの値が”１”でない場合は、Ｓ１１４に進む。
【００２８】
Ｓ１１９では、全体制御部２０４は、コンテンツ処理完了フラグの値を判定する。コンテンツ処理完了フラグの値が”１”の場合は、すべての処理が完了していると判断し処理を終了する。コンテンツ処理完了フラグの値が”１”でない場合はＳ１０１に進みデータ入力部２００におけるコンテンツデータの取得を待機する。
【００２９】
Ｓ１１４では、パディング処理部２０２は、パディングデータを生成する。上述の通りＴＬＳ１．３においてはｚｅｒｏｓ（パディング）の値はゼロと規定されているため、パディング処理部２０２で生成可能である。Ｓ１１５では、暗号処理部２０１は、パディングに対する暗号処理を実施する。Ｓ１１６では、データ出力部２０３は、Ｓ１１５による暗号処理結果を出力する。
【００３０】
Ｓ１１７では、全体制御部２０４は、パディングの暗号化処理が完了しているか判定する。完了していない場合はＳ１０１に戻り処理を継続する。完了している場合はＳ１１８に進む。Ｓ１１８では、全体制御部２０４は、パディング処理完了フラグを”１”にした上でＳ１０１に戻り処理を継続する。
【００３１】
＜動作例および効果＞
以下では、暗号処理の具体例を図５を参照して説明する。ここでは、図５（ａ）に示すような、コンテンツ長がブロック長の整数倍でないコンテンツを処理する例について説明する。Ｃｘ（ここでｘは０〜ｎの整数）は、コンテンツデータをブロック長で区切った単位データを示す。一方、Ｐｘ（ここでｘは０〜ｍの整数）は、パディングデータをブロック長で区切った単位データを示す。
【００３２】
図５（ｂ）は、従来技術における暗号処理を例示的に示す図である。従来技術において、ｔ０で入力データＣ０、ｔ５でＣ１を読み込む。すなわち、従来技術においては、ｔ１からｔ４までの間は、データを読み込めない結果、暗号処理が実施できない。その結果、暗号処理部は稼働していない状態（遊休期間）になっている。更に、従来技術においては、パディングデータの単位データであるＰ０からＰｍはＤＲＡＭ上から取得することが一般的である。そのため、パディングデータを取得するため帯域を無駄に消費するという問題もある。その結果、従来技術においては、暗号処理にｔ１９の時間を要することになっている。
【００３３】
図５（ｃ）は、第１実施形態における暗号処理を例示的に示す図である。第１実施形態においては、ｔ０で入力データＣ０、ｔ５でＣ１を読み込む点は従来技術と同様である。しかし、ｔ０においてＣ０の処理を実施したのち、ｔ１においてパディングの処理（生成処理及び暗号処理）を行う。すなわち、第１実施形態においては、暗号処理部の遊休期間を利用して、パディング処理を前倒しして実行する。なお、図５（ｃ）に示されるように、前倒しで実行されるのはパディングデータのみで構成される、Ｐ１〜Ｐｍの単位データである。Ｐ０はＣｎと共に処理されることになる。これにより、暗号処理部の利用効率を上げ、処理性能を向上させることが可能となる。また、パディングデータはパディング処理部２０２（暗号処理装置２０の内部）で生成するため、バスシステムやＤＲＡＭの制約を受けることなく処理を実施することが可能である。その結果、第１実施形態においては、暗号処理にｔ１２の時間を要することになっている。すなわち、従来技術（図５（ｂ））に比較し処理に要する時間が短縮されることが分かる。
【００３４】
なお、第１実施形態による性能向上の効果は、パケットに含まれるコンテンツデータのサイズとパディングデータのサイズとの割合に依存する。パディングデータのサイズはセキュリティの観点からランダムであることが望ましい。また、取りうるサイズの最大値が大きければ大きいほど分散が大きくなるため、コンテンツデータのデータ長をより秘匿することが可能である。
【００３５】
以上説明したとおり第１実施形態によれば、コンテンツデータに対する暗号処理を実行するにあたって、暗号処理装置の遊休期間を利用してパディングデータに対する処理を先行して実行する。例えば、暗号処理に必要なデータ量のコンテンツデータが取得出来ていない場合に、パディングデータに対する処理を実施する。これにより、データ全体（コンテンツ＋パディング）に対する暗号処理のスループットを向上させることが可能となる。
【００３６】
（変形例）
上述の説明においては、暗号処理部２０１が、同時に１つのデータに対して暗号処理を実行可能に構成されている例について説明した。すなわち、暗号処理を時分割で逐次処理する例について説明した。しかし、本発明の暗号処理は、マルチスレッドやマルチコアなどの同時に２以上の処理を実行する並列処理に適用しても効果を発揮する。以下では、ソフトウェア処理により暗号処理を実行するにあたってマルチスレッドで処理する形態について説明する。もちろん、複数の暗号処理部（マルチコア）を利用するハードウェア処理にも同様に適用可能である。
【００３７】
図６は、変形例における暗号処理装置の動作フローチャートである。図６（ａ）は、暗号処理に関するメインスレッドでの処理を示している。メインスレッドは、図２における全体処理部２０４、データ入力部２００、暗号処理部２０１、データ出力部２０３の機能を実行するスレッドである。一方、図６（ｂ）は、パディング処理を実行するパディング処理スレッドでの処理を示している。パディング処理スレッドは、図２におけるパディング処理部２０２及び暗号処理部２０１の機能を実行するスレッドである。
【００３８】
各スレッドにおける具体的な処理は第１実施形態と同様であるため説明は省略する。ただし、第１実施形態（図４）に対して、Ｓ１０１がＳ２０１に、Ｓ１１０，Ｓ１１１がＳ２１０に、Ｓ１１８がＳ２２０に変更されている。また、フラグ処理（Ｓ１１３，Ｓ１１９）を省略することが可能である。
【００３９】
まず、メインスレッド（図６（ａ））が開始されると、Ｓ２０１においてＣＰＵは、パディング処理スレッドを起動する。起動されたパディング処理スレッドは図２におけるパディング処理部２０２及び暗号処理部２０１としての動作を開始（Ｓ１１４）する。パディング処理スレッドは、処理が完了するとＳ２２０においてパディング処理完了をメインスレッドに通知する。
【００４０】
メインスレッドは、Ｓ２１０においてパディング処理スレッドが完了しているかをチェックし、完了している場合は終了となる。完了していない場合、パディング処理スレッドの終了通知をまち、終了通知を受け取ると処理完了となる。
【００４１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００４２】
２０  暗号処理装置；  ２００  データ入力部；  ２０１  暗号処理部；  ２０２  パディング処理部；  ２０３  データ出力部；  ２０４  全体制御部
【図１】
2018205505.tif 000003
【図２】
2018205505.tif 000004
【図３】
2018205505.tif 000005
【図４】
2018205505.tif 000006
【図５】
2018205505.tif 000007
【図６】
2018205505.tif 000008