(57)【要約】  テーブルを参照するブロック暗号をソフトウェアで実装するときの処理時間を削減する。暗号化装置は、秘密鍵からラウンド鍵を生成するラウンド鍵生成手段と、メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスとラウンド鍵とを加算して、得られた値をテーブルエントリとして保持するテーブルエントリ生成手段と、テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、メモリに格納されたＳ−ｂｏｘを参照することで、データを攪拌するデータ攪拌手段と、を備える。
2014003117.tif 000002
【特許請求の範囲】
【請求項１】
秘密鍵からラウンド鍵を生成するラウンド鍵生成手段と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持するテーブルエントリ生成手段と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌するデータ攪拌手段と、を備える、暗号化装置。
【請求項２】
前記テーブルエントリ生成手段は、前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されている場合、前記第１のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記データ攪拌手段は、前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第１のメモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する、請求項１に記載の暗号化装置。
【請求項３】
前記テーブルエントリ生成手段は、前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されていない場合、前記Ｓ−ｂｏｘテーブルを第２のメモリの２ｍ（ｍ≧ｎ）ビット境界にコピーし、前記第２のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記データ攪拌手段は、前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第２のメモリに格納された前記Ｓ−ｂｏｘテーブルを参照することで、前記データを攪拌する、請求項１に記載の暗号化装置。
【請求項４】
前記データ攪拌手段は、ＡＥＳ（Advanced Encryption Standard）のアルゴリズムに従って前記データを攪拌する、請求項１ないし３のいずれか１項に記載の暗号化装置。
【請求項５】
コンピュータが、秘密鍵からラウンド鍵を生成する工程と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持する工程と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する工程と、を含む、暗号化方法。
【請求項６】
前記コンピュータが、前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されている場合、前記第１のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第１のメモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する、請求項５に記載の暗号化方法。
【請求項７】
前記コンピュータが、前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されていない場合、前記Ｓ−ｂｏｘテーブルを第２のメモリの２ｍ（ｍ≧ｎ）ビット境界にコピーし、前記第２のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第２のメモリに格納された前記Ｓ−ｂｏｘテーブルを参照することで、前記データを攪拌する、請求項５に記載の暗号化方法。
【請求項８】
前記コンピュータが、ＡＥＳ（Advanced Encryption Standard）のアルゴリズムに従って前記データを攪拌する、請求項５ないし７のいずれか１項に記載の暗号化方法。
【請求項９】
秘密鍵からラウンド鍵を生成する処理と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持する処理と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する処理と、をコンピュータに実行させる、プログラム。
【請求項１０】
前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されている場合、前記第１のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第１のメモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する処理を、前記コンピュータに実行させる、請求項９に記載のプログラム。
【請求項１１】
前記Ｓ−ｂｏｘテーブルが第１のメモリの２ｍ（ｍ≧ｎ）ビット境界に配置されていない場合、前記Ｓ−ｂｏｘテーブルを第２のメモリの２ｍ（ｍ≧ｎ）ビット境界にコピーし、前記第２のメモリ上における前記Ｓ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリに格納し、
前記第２のメモリに格納された前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記第２のメモリに格納された前記Ｓ−ｂｏｘテーブルを参照することで、前記データを攪拌する処理を、前記コンピュータに実行させる、請求項９に記載のプログラム。
【請求項１２】
ＡＥＳ（Advanced Encryption Standard）のアルゴリズムに従って前記データを攪拌する処理を前記コンピュータに実行させる、請求項９ないし１１のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−１４５４７０号（２０１２年６月２８日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、暗号化装置、暗号化方法およびプログラムに関し、特に、データの通信や蓄積の際にデータを秘匿するための共通鍵ブロック暗号に基づく暗号化装置、暗号化方法およびプログラムに関する。
【背景技術】
【０００２】
通信データや蓄積データを秘匿する技術として、ブロック暗号が知られている。代表的なブロック暗号アルゴリズムとして、ＤＥＳ（Data Encryption Standard)や、非特許文献１に記載されたＡＥＳ(Advanced Encryption Standard）などが挙げられる。【０００３】
図７は、ブロック暗号に基づいて平文（plaintext）を暗号文(ciphertext)に変換する暗号化装置１１０の構成を一例として示すブロック図である。図７を参照すると、暗号化装置１１０は、鍵スケジュール部１１１およびデータ攪拌手段１１２を備える。【０００４】
鍵スケジュール部１１１は、秘密鍵（cipher key）からラウンド鍵（round key）を生成する。計算機上にソフトウェアとして実装することで暗号化装置１１０を実現する場合には、生成されたラウンド鍵はメモリ上に保持される。データ攪拌手段１１２は、平文とラウンド鍵を攪拌して暗号文を生成する。【０００５】
暗号化処理の流れは、次のとおりである。鍵スケジュール部１１１は、プログラムの動作開始時や秘密鍵の更新処理時に動作し、秘密鍵からラウンド鍵を生成する。データ攪拌手段１１２は、暗号化処理時に、平文の長さに応じた回数の動作を行う。【０００６】
多くのブロック暗号では、Ｓ−ｂｏｘと呼ばれる換字表（substitution table、置換表ともいう。）が使用される。Ｓ−ｂｏｘは、非線形な演算を行う部品であり、安全性の基礎をなす構成要素の一つである。Ｓ−ｂｏｘに求められる暗号学的安全性として、差分確率、線形確率、ブール代数次数、補間多項式の項数などがある。これらの項目に関して良い性質を有するＳ−ｂｏｘの設計方法として、ガロア体上のべき乗演算とアフィン変換を組み合わせた方法が知られている。しかしながら、かかる方法によると、演算量が多いため、処理時間が長くなるという問題がある。そこで、事前に計算した演算結果をテーブルに格納する実装方法が採用されている。暗号化処理を行う際には、演算前のデータをテーブルのインデックスとしてテーブル参照することで、演算結果を求めることができる。【０００７】
一例として、ＡＥＳで使用されるＳ−ｂｏｘについて説明する。ＡＥＳのＳ−ｂｏｘは８ビット（１バイト）の値に対して演算を行うため、値域は２５６である。演算前のデータが０ｘ００の場合、演算結果は０ｘ６３、０ｘ０１の場合は０ｘ７Ｃ、０ｘ０２の場合は０ｘ７７、…、０ｘＦＦの場合は０ｘ１６となる（非特許文献１、Fig. 7）。このとき、Ｓ−ｂｏｘの演算結果を格納するテーブルＳは、数式１で定義される。【０００８】
［数１］
Ｓ［２５６］＝｛０ｘ６３，０ｘ７Ｃ，０ｘ７７，…，０ｘ１６｝【０００９】
一般に、Ｓ−ｂｏｘによる演算を行う前にデータに対して鍵データ（ラウンド鍵）を作用させる。データに対して鍵データを作用させる演算として、排他的論理和（exclusive OR、以下「ＸＯＲ」という。）を用いる。演算前のデータをｘ、鍵データをｋ、演算後のデータをｙとしたとき、Ｓ−ｂｏｘ参照の手続きは、Ｃ言語風に記載すると、数式２のように表される。【００１０】
［数２］
ｙ＝Ｓ［ｘ○ｋ］【００１１】
数式２において、○はＸＯＲを表す記号である。鍵データｋは、鍵スケジュール部１１１によって秘密鍵から生成される。【００１２】
また、Ｓ−ｂｏｘ参照の処理をアセンブラレベルの擬似コードで記述すると、数式３のように表される。【００１３】
［数３］
ＬＯＡＤ  ｒ２，［ｒ４］
ＸＯＲ    ｒ１，ｒ２
ＡＤＤ    ｒ１，ｒ３
ＬＯＡＤ  ｒ２，［ｒ１］【００１４】
数式３において、ｒ１〜ｒ４はレジスタであり、レジスタｒ１にはデータｘ、レジスタｒ３にはテーブルＳの先頭アドレス、レジスタｒ４にはラウンド鍵ｋのアドレスが代入されているものとする。【００１５】
数式３を参照すると、まず、１つ目のＬＯＡＤ命令でレジスタｒ２に鍵データｋがロードされる。次に、ＸＯＲ命令では、データｘと鍵データｋとのＸＯＲであるｘ○ｋが計算され、結果がレジスタｒ１に代入される。次に、ＡＤＤ命令では、テーブルＳの先頭アドレスに（ｘ○ｋ）を加算し、結果がレジスタｒ１に格納される。この加算により、演算結果が格納されているアドレスが求められる。次に、２つ目のＬＯＡＤ命令により、アドレスｒ１に保存されている演算結果をレジスタｒ２にロードする。【００１６】
以上のように、Ｓ−ｂｏｘ参照を行うためには、数式３に示した一連の４命令を実行する必要がある。
【先行技術文献】
【非特許文献】
【００１７】
【非特許文献１】Federal Information Processing Standards Publication 197, "Announcing the ADVANCED ENCRYPTION STANDARD (AES)," November 26, 2001.
【発明の概要】
【発明が解決しようとする課題】
【００１８】
以下の分析は、本発明者によってなされたものである。【００１９】
組み込みシステムに利用されるマイコン（特に、安価なマイコン）は、パソコンやサーバに用いられるプロセッサよりも低機能であることが多い。例えば、命令パイプラインやアウト・オブ・オーダーなどの機能は、高機能なプロセッサにおいては、命令の実行順序を最適化し、処理時間を短縮する。しかしながら、低機能なマイコンでは、これらの機能が搭載されないことが多い。したがって、マイコン上で暗号アルゴリズムをソフトウェア実装する場合、命令数を削減した実装が必要とされる。【００２０】
そこで、テーブルを参照するブロック暗号をソフトウェアで実装したときの処理時間を削減することが課題となる。本発明の目的は、かかる課題を解決する暗号化装置、暗号化方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明の第１の視点に係る暗号化装置は、
秘密鍵からラウンド鍵を生成するラウンド鍵生成手段と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持するテーブルエントリ生成手段と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌するデータ攪拌手段と、を備える。【００２２】
本発明の第２の視点に係る暗号化方法は、
コンピュータが、秘密鍵からラウンド鍵を生成する工程と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持する工程と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する工程と、を含む。【００２３】
本発明の第３の視点に係るプログラムは、
秘密鍵からラウンド鍵を生成する処理と、
メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレスと前記ラウンド鍵とを加算して、得られた値をテーブルエントリとして保持する処理と、
前記テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、前記メモリに格納された前記Ｓ−ｂｏｘを参照することで、前記データを攪拌する処理と、をコンピュータに実行させる。【００２４】
なお、プログラムは、コンピュータ読み取り可能な記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００２５】
本発明に係る暗号化装置、暗号化方法およびプログラムによると、テーブルを参照するブロック暗号をソフトウェアで実装したときの処理時間を削減することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】第１の実施形態に係る暗号化装置の構成を一例として示すブロック図である。
【図２】第１の実施形態に係る暗号化装置における鍵スケジュール部の構成を一例として示すブロック図である。
【図３】ＡＥＳ−１２８に基づく暗号化処理の動作を示すフロー図である。
【図４】ＡＥＳ−１２８に基づくラウンド鍵生成手段の構成を示すブロック図である。
【図５】ＲＡＭ上のテーブルエントリを示す図である。
【図６】第２の実施形態に係る暗号化装置における鍵スケジュール部の構成を一例として示すブロック図である。
【図７】ブロック暗号の基本的な構成を示すブロック図である。
【発明を実施するための形態】
【００２７】
はじめに、一実施形態の暗号化装置の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２８】
図１は、本発明に係る暗号化装置（１０）の構成を一例として示すブロック図である。図１を参照すると、暗号化装置（１０）は、鍵スケジュール部（１１）およびデータ攪拌手段（１２）を備える。図２は、鍵スケジュール部（１１）の詳細な構成を一例として示すブロック図である。図２を参照すると、鍵スケジュール部（１１）は、ラウンド鍵生成手段（１３）およびテーブルエントリ生成手段（１４）を備える。
【００２９】
ラウンド鍵生成手段（１３）は、秘密鍵からラウンド鍵を生成する。テーブルエントリ生成手段（１４）は、メモリの２ｍ（ｍ≧ｎ）ビット境界に配置されたｎ（ｎ≧２）ビットのＳ−ｂｏｘテーブルの先頭アドレス（ＳＴ）とラウンド鍵とを加算して、得られた値をテーブルエントリとして保持する。データ攪拌手段（１２）は、テーブルエントリとデータとの排他的論理和をテーブルインデックスとして、メモリに格納されたＳ−ｂｏｘを参照することで、データを攪拌する。
【００３０】
図２に示すように、Ｓ−ｂｏｘテーブルが第１のメモリ（例えば、ＲＯＭ）の２ｍ（ｍ≧ｎ）ビット境界に配置されている場合には、テーブルエントリ生成手段（１４）は、第１のメモリ（ＲＯＭ）上におけるＳ−ｂｏｘテーブルの先頭アドレス（ＳＴ）とラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリ（例えば、ＲＡＭ）に格納してもよい。このとき、データ攪拌手段（１２）は、第２のメモリ（ＲＡＭ）に格納されたテーブルエントリとデータとの排他的論理和をテーブルインデックスとして、第１のメモリ（ＲＯＭ）に格納されたＳ−ｂｏｘを参照することで、データを攪拌する。
【００３１】
一方、図６に示すように、Ｓ−ｂｏｘテーブルが第１のメモリ（例えば、ＲＯＭ）の２ｍ（ｍ≧ｎ）ビット境界に配置されていない場合には、テーブルエントリ生成手段（１５）は、Ｓ−ｂｏｘテーブルを第２のメモリ（例えば、ＲＡＭ）の２ｍ（ｍ≧ｎ）ビット境界にコピーし、第２のメモリ上（ＲＡＭ）におけるＳ−ｂｏｘテーブルの先頭アドレス（ＳＴ）とラウンド鍵とを加算して、得られた値をテーブルエントリとして第２のメモリ（ＲＡＭ）に格納してもよい。このとき、データ攪拌手段（１２）は、第２のメモリ（ＲＡＭ）に格納されたテーブルエントリとデータとの排他的論理和をテーブルインデックスとして、第２のメモリ（ＲＡＭ）に格納されたＳ−ｂｏｘテーブルを参照することで、データを攪拌する。
【００３２】
このように、予めテーブルのアドレスと鍵データとの加算を行っておくことにより、データ攪拌手段（１２）によるＳ−ｂｏｘテーブル参照に要する命令数を削減することが可能となる。ここで、Ｓ−ｂｏｘテーブルのアドレスと鍵データｋを加算したものをｋ’とする。このときのＳ−ｂｏｘテーブル参照の処理をアセンブラレベルの擬似コードで記述すると、数式４で表される。レジスタｒ１にはデータｘ、レジスタｒ４には鍵データｋ’のアドレスが代入されているものとする。
【００３３】
［数４］
ＬＯＡＤ  ｒ２，［ｒ４］
ＸＯＲ    ｒ１，ｒ２
ＬＯＡＤ  ｒ２，［ｒ１］
【００３４】
数式４においては、数式３におけるＡＤＤ命令を削減できていることが分かる。１回の暗号化処理において、Ｓ−ｂｏｘテーブルの参照は多数回行われる。例えば、ＡＥＳ−１２８の場合、１回の暗号化処理で１６０回のＳ−ｂｏｘテーブル参照が行われる。すなわち、Ｓ−ｂｏｘテーブル参照１回当たり１命令を削減することで、１回の暗号化処理では１６０命令も削減することができる。したがって、本発明に係る暗号化装置（１０）によると、テーブルを参照するブロック暗号をソフトウェアで実装したときの処理時間を大幅に削減することができる。
【００３５】
一般に、データＡ、Ｂ、Ｃに対してＡ＋（Ｂ○Ｃ）という演算によって得られる値は、加算とＸＯＲの間で演算順序を変更した（Ａ＋Ｂ）○Ｃという演算によって得られる値とは異なる。加算命令では、下位ビットから上位ビットへ桁上りが発生する可能性があるからである。ここで、データＡのデータ幅をｎＡ、データＢとＣのデータ幅をｎとする（ｎＡ＞ｎ）。Ｓ−ｂｏｘテーブルＳの先頭アドレスを２ｍビット境界（ｎＡ＞ｍ≧ｎ）に配置すると、テーブルＳの先頭アドレスの下位ｍビットは０になる。このとき、下位ｍビットにいかなる値を加算してもｍ＋１ビット以上への桁上りは発生しない。このとき、（Ａ＋Ｂ）○Ｃという演算を行っても、Ａ＋（Ｂ○Ｃ）という演算を行った場合と同一の結果が得られる。よって、数式４の処理に従ってＳ−ｂｏｘテーブル参照を行った場合においても、数式３の処理に従ってＳ−ｂｏｘ参照を行った場合と同一の結果が得られる。
【００３６】
（実施形態１）
第１の実施形態に係る暗号化装置について、図面を参照して詳細に説明する。図１は、本実施形態に係る暗号化装置１０の構成を一例として示すブロック図である。図１を参照すると、暗号化装置１０は、鍵スケジュール部１１およびデータ攪拌手段１２を備える。
【００３７】
図２は、鍵スケジュール部１１の詳細な構成を一例として示すブロック図である。図２を参照すると、鍵スケジュール部１１は、ラウンド鍵生成手段１３およびテーブルエントリ生成手段１４を備える。
【００３８】
ラウンド鍵生成手段１３は、暗号アルゴリズムで規定されている方式に従って実装され、秘密鍵からラウンド鍵を生成する。テーブルエントリ生成手段１４は、ＲＯＭ上に配置されたＳ−ｂｏｘテーブルの先頭アドレスＳＴとラウンド鍵生成手段１３で生成されたラウンド鍵からテーブルエントリを生成し、ＲＡＭ（Random Access Memory）上に格納する。
【００３９】
以下では、本実施形態の暗号化装置１０の動作を、具体的な暗号アルゴリズムを用いて詳細に説明する。ここでは、暗号アルゴリズムとしてＡＥＳ−１２８（非特許文献１）を例に説明する。図３は、ＡＥＳ−１２８の暗号化処理を示す。AddRoundKeyは、１２８ビットのデータに対して１２８ビットのラウンド鍵ＲＫｉ（０≦ｉ≦１０）を排他的論理和する。SubBytesは、１２８ビットのデータを１６個の８ビットデータに分割し、それぞれをＳ−ｂｏｘによる変換を行う。ShiftRowsは、８ビット単位のデータ転置処理である。MixColumnsは、８ビット×４のデータに対してＭＤＳ（Maximum Distance Separable）行列による演算を行う。アルゴリズムの詳細については、非特許文献１に記載されている。
【００４０】
図４は、ＡＥＳ−１２８に対するラウンド鍵生成手段１３の構成を示す。図４は、ラウンド鍵ＲＫｉからＲＫｉ＋１を生成する手順を示している（０≦ｉ≦９）。ＲＫ０には、１２８ビットの秘密鍵が設定される。
【００４１】
ラウンド鍵生成手段１３は、ラウンド鍵ＲＫ０〜ＲＫ１０をテーブルエントリ生成手段１４に入力する。受け渡しの方法として、すべてのラウンド鍵ＲＫ０〜ＲＫ１０を生成してからテーブルエントリ生成手段１４を経由してメモリに格納してもよいし、ラウンド鍵ＲＫｉを生成するごとにテーブルエントリ生成手段１４に受け渡すようにしてもよい。テーブルエントリ生成手段１４は、SubBytesで参照するＳ−ｂｏｘの先頭アドレスＳＴも受け付ける。
【００４２】
ＡＥＳのＳ−ｂｏｘは８ビット入出力であるから、Ｓ−ｂｏｘの先頭は２ｍビット境界に配置されているものとする（ｍ≧８）。すなわち、先頭アドレスＳＴの下位ｍビットは０である。ただし、アドレスＳＴ自体の長さはｍ＋１ビット以上である。
【００４３】
テーブルエントリ生成手段１４は、ラウンド鍵ＲＫｉ（０≦ｉ≦９）を８ビット単位に分割する。分割した８ビットラウンド鍵をＲＫｉｊとする（０≦ｊ≦１５）。テーブルエントリ生成手段１４は、ＲＫｉｊと先頭アドレスＳＴとを加算し、テーブルエントリとする（図５参照）。生成されたテーブルエントリは、ＲＡＭ上に保存される。ただし、ＲＫ１０のAddRoundKeyの後にはSubBytesが存在しないため、先頭アドレスＳＴとの加算は行わず、ＲＫ１０のみを保存する。
【００４４】
暗号化処理におけるAddRoundKeyとSubBytesの処理は、数式４で示した命令により実現される。最初のＬＯＡＤ命令では、テーブルエントリの単位でロードする。それに対してデータをＸＯＲすることで、Ｓ−ｂｏｘの演算結果が格納されたアドレスの計算が完了する。
【００４５】
本実施形態の暗号化装置１０では、データ攪拌手段１２で参照するｎビットのＳ−ｂｏｘテーブルの先頭アドレスをＲＯＭ上の２ｍ（ｍ≧ｎ）ビット境界に配置し、鍵スケジュール部１１では生成したラウンド鍵にテーブルの先頭アドレスを換算した値をテーブルエントリとしてＲＡＭに保存する。データ攪拌手段１２では、データをテーブルエントリに加算したものをアドレスとしてデータをロードする。
【００４６】
暗号化装置１０によると、数式４に従ってＳ−ｂｏｘテーブルの参照が行われ、数式３に従ってＳ−ｂｏｘテーブルの参照を行う場合と比較して、少ない命令数でテーブル参照を行うことができる。したがって、暗号化装置１０によると、テーブルを参照するブロック暗号をソフトウェアで実装したときの処理時間を大幅に削減することが可能となる。
【００４７】
（実施形態２）
第２の実施形態に係る暗号化装置について、図面を参照して詳細に説明する。本実施形態に係る暗号化装置は、第１の実施形態に係る暗号化装置１０の構成（図１）と同様に、鍵スケジュール部１１およびデータ攪拌手段１２を備える。
【００４８】
図６は、本実施形態の暗号化装置における鍵スケジュール部１１の詳細な構成を一例として示すブロック図である。図６を参照すると、鍵スケジュール部１１は、ラウンド鍵生成手段１３およびテーブルエントリ生成手段１５を備える。
【００４９】
図６を参照すると、本実施形態では、ＲＯＭ（Read Only Memory）上のＳ−ｂｏｘテーブルが２ｐビット（ｐ＜ｍ）境界に配置されている。このとき、テーブルエントリ生成手段１５は、ＲＯＭ上のＳ−ｂｏｘテーブルをＲＡＭ上の２ｍビット境界ＳＴにコピーする。また、テーブルエントリ生成手段１５は、ＲＡＭ上にコピーされたＳ−ｂｏｘテーブルの先頭アドレスＳＴとラウンド鍵生成手段１３で生成されたラウンド鍵からテーブルエントリを生成し、ＲＡＭ上に格納する。
【００５０】
本実施形態の暗号化装置によると、第１の実施形態の暗号化装置と同様に、数式４に従ってＳ−ｂｏｘテーブルの参照が行われ、数式３に従ってＳ−ｂｏｘテーブルの参照を行う場合と比較して、少ない命令数でテーブル参照を行うことができる。かかる暗号化装置によると、テーブルを参照するブロック暗号をソフトウェアで実装したときの処理時間を大幅に削減することが可能となる。
【００５１】
本発明に係る暗号化装置は、音声通信端末やデータ通信装置などの通信データの秘匿や、ストレージ上の蓄積データの暗号化といった用途に適用することができる。
【００５２】
なお、上記の特許文献の先行技術文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００５３】
１０、１１０    暗号化装置
１１、１１１    鍵スケジュール部
１２、１１２    データ攪拌手段
１３    ラウンド鍵生成手段
１４、１５    テーブルエントリ生成手段
【図１】
2014003117.tif 000003
【図２】
2014003117.tif 000004
【図３】
2014003117.tif 000005
【図４】
2014003117.tif 000006
【図５】
2014003117.tif 000007
【図６】
2014003117.tif 000008
【図７】
2014003117.tif 000009
【国際調査報告】
2014003117.tif 000010
2014003117.tif 000011
2014003117.tif 000012