JP2009175196A - 暗号化装置及び復号装置 - Google Patents
暗号化装置及び復号装置 Download PDFInfo
- Publication number
- JP2009175196A JP2009175196A JP2008010954A JP2008010954A JP2009175196A JP 2009175196 A JP2009175196 A JP 2009175196A JP 2008010954 A JP2008010954 A JP 2008010954A JP 2008010954 A JP2008010954 A JP 2008010954A JP 2009175196 A JP2009175196 A JP 2009175196A
- Authority
- JP
- Japan
- Prior art keywords
- exclusive
- encryption
- block
- calculation
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】 従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化する。
【解決手段】 暗号化装置10においては、EMEモードで必要とされるブロック間の相互作用が第2マスクデータ2M〜8Mとの排他的論理和機能(XOR42〜XOR44)により実現されるため、従来手法と同等の安全性を提供できる。また、暗号化装置10においては、従来の1層目の暗号化部分(ECB1)に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の2層目の暗号化部分(ECB2)に相当する部分のビットスライス実装ではビットスライス変換を行わないため、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換(I−BS)及びビットスライス変換(BS)を1層ずつ削減でき、処理効率を向上できる。
【選択図】 図2
【解決手段】 暗号化装置10においては、EMEモードで必要とされるブロック間の相互作用が第2マスクデータ2M〜8Mとの排他的論理和機能(XOR42〜XOR44)により実現されるため、従来手法と同等の安全性を提供できる。また、暗号化装置10においては、従来の1層目の暗号化部分(ECB1)に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の2層目の暗号化部分(ECB2)に相当する部分のビットスライス実装ではビットスライス変換を行わないため、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換(I−BS)及びビットスライス変換(BS)を1層ずつ削減でき、処理効率を向上できる。
【選択図】 図2
Description
本発明は、共通鍵暗号方式を用いた暗号化装置及び復号装置に係わり、例えば、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化し得る暗号化装置及び復号装置に関する。
一般に、データ記憶媒体としては、例えば共通鍵暗号方式における共通鍵ブロック暗号を用いて暗号化された状態のデータを保存するものとして、ハードディスク装置やテープ装置といった磁気ディスクや、光ディスク、フラッシュメモリなどが知られている。この種の記憶媒体は、一般にブロックデバイスと呼ばれ、あるまとまった大きさのブロックを単位としてデータを入出力する。ブロックデバイスにおいては、このあるまとまった大きさのブロックが一般にセクタと呼ばれる。セクタとしては、512バイトあるいは2048バイトといった一定の単位が用いられる。セクタ単位でデータを管理することにより、データの更新、複製、削除や配置などが効率化され管理が容易となる利点がある。
また、データの保存に限らず、データ通信においても、通信するデータの暗号化には共通鍵ブロック暗号が用いられる。現代のデータ通信においては、通信するデータをブロックに分割して送受信するパケット通信が一般的である。例えば、インターネットなどで用いられるTCP/IP(Transmission Control Protocol/Internet Protocol)はパケット通信の上位プロトコルであり、あるまとまった大きさのブロックを単位として、IPヘッダあるいはTCPヘッダを付加してデータを送受信する。TCP/IPを例とすると、データが格納されるブロックはペイロードと呼ばれ、512バイトあるいはそれ以上の単位のデータが格納される。
これらセクタあるいはペイロード単位でデータを暗号化する場合、AES(Advanced Encryption Standard)(非特許文献1参照)などの共通鍵ブロック暗号アルゴリズムが一般に用いられる。以下、共通鍵ブロック暗号アルゴリズムの処理単位をブロックとよぶ。また、前述したセクタとペイロードは、一般性を損ねることなくセクタと呼ぶ。すなわち、AESを用いてハードディスクを暗号化する場合、一般的にはブロックは128ビットすなわち16バイトであり、セクタは512バイトである。
共通鍵ブロック暗号を用いてセクタ単位でデータを暗号化する場合、セクタ内のブロック単位で暗号化する方法は、ECB(Electronic Codebook)モード暗号化(非特許文献2参照)として知られている。
しかしながら、ECBモードは、ブロック単位での変更が同一セクタ内の他のブロックに影響を与えないため、データの並び替えや置き換えといった改ざん攻撃に対して極めて脆弱である。そのため、改ざんを検出するための機構が必要となる不都合がある。
一方、CBC(Cipher Block Chaining)モード暗号化(非特許文献2参照)は、前ブロックの暗号文を平文に排他的論理和(以下、XOR(exclusive or))することにより、ブロック間で連鎖を行う方法であり、セクタ単位の暗号化に広く用いられている。特に、先頭のブロックの平文に対する連鎖値の初期値をIV(initialization vector))と呼ぶ。
しかしながら、CBCモード暗号化には、変更のあったブロックの直後のブロックにしか変更の影響が波及しないことによる脆弱性や、初期値IVが既知あるいは予測可能な場合に改ざんが容易である脆弱性や、処理の並列性に課題があることが知られている。
これらECBモードやCBCモードなどは総称して暗号利用モードと呼ばれる。このような暗号利用モードは、さまざまなものが提案されている。例えば、OCB(Offset Codebook)(非特許文献3及び特許文献2参照)、EMD(Encipher/Mask/Decipher)及びEME(ECB/Mask/ECB)とCMC(CBC/Mask/CBC)(特許文献1参照)、LRW(Liskov - Rivest - Wagner)(非特許文献4参照)及びCCM(counter with cipher block chaining-message authentication code)(非特許文献5参照)などの暗号利用モードが考案されている。
データの秘匿を含む暗号利用モードは、データの秘匿を目的とする手法と、秘匿に加え改ざん検出機能を備えた方法に大別される。改ざん検出機能を実現する場合、暗号化による秘匿に加え改ざんを検出するためのデータが必要となるため、一般にデータ量が増加する。ブロックデバイスにおいては、データの管理単位であるセクタの大きさが固定であるため、暗号処理によるデータ量の増加は望ましくない。このため、データ量を増加させずに、データの秘匿を目的とする手法が用いられる。EMD及びEMEとCMC、LRWは暗号化対象のデータ量と比較して暗号化後のデータ量が増加しないため、セクタ単位での暗号化に適している。
EMDは、暗号化処理Eにより求めた中間値を攪拌処理Mで攪拌し、攪拌した中間値に復号処理Dを行うことにより、共通鍵ブロック暗号の処理をセクタ単位に広げる暗号利用モードである。EMDの暗号処理には、tweakと呼ばれる公開情報に基づいて、暗号処理の内部データの一部を変更し、セクタ間での複製を困難とする機構が備わっている。EMDは、NR(Naor - Reingold)モード(非特許文献7,8)の概念を具体化したモデルである。EMDの実現方法としては、暗号化処理Eと復号処理DにそれぞれECBモードによる暗号化を使用するEMEモードと、それぞれCBCモードによる暗号化を使用するCMCモードが知られている。
図19は従来の暗号化装置により実行されるEMEモードの暗号化処理を説明するための模式図である。ここで、暗号化処理Ek1,Ek11〜Ek14,Ek21,Ek31〜Ek34は、例えば16バイトをブロックとした、共通鍵kに基づくAES暗号処理である。ここでは、64バイトのデータの処理について説明する。
最初に、暗号化装置は、入力データにラベルLによるマスクとECBモードによる暗号化処理ECB1を行う。すなわち、暗号化装置は、64バイトの入力データを各16バイトずつ4つのブロックP1,P2,P3,P4に分割し、それぞれラベルL、2L、4L、8Lとの排他的論理和XOR11〜XOR14を計算する。
ここで、ラベルLは、図20に示すように、128ビットの0データを暗号化処理Ek1で暗号化した出力を、ガロア体GF(2128)上でx倍演算“xtime128()”処理xt1した結果である。ラベル2Lは、128ビットのラベルLをガロア体GF(2128)上でx倍演算“xtime128()”処理xt2した結果である。以下同様に、ラベル4Lは、128ビットのラベル2Lをガロア体GF(2128)上でx倍演算“xtime128()”処理xt3した結果であり、ラベル8Lは、128ビットのラベル4Lをガロア体GF(2128)上でx倍演算“xtime128()”処理xt4した結果である。
また、暗号化装置は、4つの排他的論理和XOR11〜XOR14の計算結果に対して個別に暗号化処理Ek11〜14を実行し、4つの暗号化結果を出力する。
次に、暗号化装置は、これら4つの暗号化結果と、セクタ毎に異なる非秘密情報Tとの排他的論理和XOR21を計算する。
次に、暗号化装置は、排他的論理和XOR21の計算結果を暗号化処理Ek31により暗号化し、得られた暗号化結果と、暗号化前の排他的論理和XOR21の計算結果との排他的論理和XOR31を計算し、排他的論理和XOR31の計算結果としての中間値Mを得る。
また、暗号化装置は、前述したラベル2L〜8Lと同様に、中間値Mにガロア体GF(2128)上のx倍演算“xtime128()”を適用し、中間値2M,4M,8Mを得る。すなわち、中間値2Mは、128ビットの中間値Mをガロア体GF(2128)上でx倍演算“xtime128()”処理した結果であり、中間値4Mは、128ビットの中間値2Mをガロア体GF(2128)上でx倍演算“xtime128()”処理した結果である。中間値8Mは、128ビットの中間値4Mをガロア体GF(2128)上でx倍演算“xtime128()”処理した結果である。
暗号化装置は、これら中間値2M,4M,8Mと、暗号化処理Ek12,Ek13,Ek14との排他的論理和XOR42,XOR43,XOR44を個別に計算する。
次に、暗号化装置は、セクタ毎に異なる非秘密情報Tと、これら3つの排他的論理和XOR42,XOR43,XOR44の計算結果との排他的論理和XOR51を計算する。
次に、暗号化装置は、この排他的論理和XOR51の計算結果と、3つの排他的論理和XOR42,XOR43,XOR44の計算結果とに対し、個別に暗号化処理Ek31〜Ek34を実行し、得られた4つの暗号化結果と、4つのラベルL,2L,4L,8Lの排他的論理和XOR61〜XOR64を計算する。最後に、暗号化装置は、4つの排他的論理和XOR61〜XOR64の計算結果を各16バイトずつ4つのブロックC1〜C4に分配し、EMEモードの暗号化出力、すなわち暗号文とする。
図21は従来の復号装置により実行されるEMEモードの復号処理を説明するための模式図であり、図19に示した暗号化処理に比べ、入力が暗号文C1〜C4であり、出力が平文P1〜P4である点と、暗号化処理Ek11〜Ek14,Ek21,Ek31〜Ek34に代えて、復号処理Dk11〜Dk14,Dk21,Dk31〜Dk34を行う点とが異なる。ここで、復号処理Dk11〜Dk14,Dk21,Dk31〜Dk34は、例えば16バイトをブロックとした、共通鍵kに基づくAES復号処理である。
図22は従来の暗号化装置により実行されるCMCモードの暗号化処理を説明するための模式図である。ここで、暗号化処理Ek11〜Ek14,Ek41〜Ek44は、前述同様に、例えば16バイトをブロックとした、共通鍵kに基づくAES暗号処理である。ここでは、64バイトのデータの処理について説明する。
最初に、暗号化装置は、暗号化処理CBC1において、入力データをCBCモードで暗号化する。すなわち、暗号化装置は、64バイトの入力データを各16バイトずつ4つのブロックP1〜P4に分割し、先頭のブロックP1の暗号化処理Ek11を実行し、暗号化結果を出力する。なお、先頭のブロックP1は、前ブロックがないため、暗号化処理Ek11前の排他的論理和が省略される。
暗号化装置は、暗号化処理Ek11による暗号化結果と、次のブロックP2との排他的論理和XOR12を計算し、この計算結果の暗号化処理Ek12を実行し、暗号化結果を出力する。
同様に、暗号化装置は、暗号化処理Ek12,Ek13による暗号化結果と、次のブロックP3,P4との排他的論理和XOR13,XOR14を計算し、この計算結果の暗号化処理Ek13,Ek14を実行し、暗号化結果を出力する。
また、暗号化装置は、先頭のブロックP1に対する暗号化処理Ek11による暗号化結果と、末尾のブロックP4に対する暗号化処理Ek14による暗号化結果との排他的論理和XOR24を計算し、計算結果をガロア体GF(2128)上でx倍演算“xtime128()”処理xt24した結果として中間値Mを得る。
次に、暗号化装置は、中間値マスク処理XOR-Mにおいて、各暗号化処理Ek11〜Ek14による暗号化結果と、中間値Mとの排他的論理和XOR31〜XOR34を個別に計算し、計算結果を出力する。
次に、暗号化装置は、暗号化処理CBC2において、逆方向にCBCモードで復号相当の処理を行う。但し、一般のCBCモードによる復号処理の場合とは異なり、暗号化処理Ek41〜Ek44を実行する。
具体的には暗号化装置は、先頭のブロックにおける排他的論理和XOR31の計算結果の暗号化処理Ek41を実行し、この暗号化結果と、次のブロックの排他的論理和XOR32の計算結果との排他的論理和XOR41を計算し、この計算結果を暗号文C4として出力する。
同様に、暗号化装置は、排他的論理和XOR32,XOR33の計算結果に対する暗号化処理Ek42,Ek43による暗号化結果と、次のブロックの排他的論理和XOR33,XOR34の計算結果との排他的論理和XOR42,XOR43を計算し、この計算結果を暗号文C3,C2として出力する。
また、暗号化装置は、末尾のブロックにおける排他的論理和XOR34の計算結果の暗号化処理Ek44を実行し、この暗号化結果を暗号文C1として出力する。
図23は従来の復号装置により実行されるCMCモードの復号処理を説明するための模式図であり、図22に示した暗号化処理に比べ、入力が暗号文C1〜C4であり、出力が平文P4〜P1である点と、暗号化処理Ek11〜Ek14,Ek41〜Ek44に代えて、復号処理Dk11〜Dk14,Dk41〜Dk44を行う点とが異なる。ここで、復号処理Dk11〜Dk14,Dk41〜Dk44は、例えば16バイトをブロックとした、共通鍵kに基づくAES復号処理である。
CMCモードは、従来のCBCモードによる暗号化処理CBC1,CBC2を順方向と逆方向の2度繰り返す構造であり、処理のパイプライン化による並列処理が困難であるという不都合と、一般にECBモードに比べて低速であるCBCモードを2度繰り返すため、安全性が向上する代償として速度が低下するという不都合がある。
また、EMEモードは、従来のECBモードによる暗号化処理ECB1,ECB2を2度繰り返す構造に、攪拌用の1回の暗号化処理Ek31と、マスクによるデータランダム化用の1回の事前計算処理(Mask2n-1M)を加えた構造であり、安全性が向上する代償として速度が低下する不都合がある。
一方、処理を効率化する観点から、データ処理をビット単位で並列化容易な構成とする実装手法として、ビットスライス手法が知られている。ビットスライス手法は、ECBモードによる暗号処理に対し、従来のデータ処理同様に適用可能であることが非特許文献6などで知られている(なお、非特許文献6では、ビットスライスとは呼ばず、SIMD(Single Instruction for Multiple Data)実装と呼んでいる。)。
また、ビットスライス手法は、EMEモード内部のECBモードによる暗号処理相当部分にも適用可能である。
しかしながら、ビットスライス手法をECBモードによる暗号処理相当部分に適用する場合、EMEモードの入出力及び、内部の攪拌処理の前後でビットスライス用のデータ表現に変換する処理を追加する必要があるので、EMEモード全体の処理が複雑となり、ビットスライス手法による効率化の利点を発揮できないという不都合がある。
米国標準技術研究所 (National Institute of Standards and Technology): "Advanced Encryption Standard", Federal Information Processing Standards 197, 2001 米国標準技術研究所 (National Institute of Standards and Technology): "Recommendation for Block Cipher Modes of Operation - Methods and Techniques", NIST Special Publication 800-38A 2001 Edition, 2001. P. Rogaway, M. Bellare, J. Bloack, and T. Krovetz. "OCB: A Block-Cipher Mode of Operation for Efficient Authenticated Encryption. "ACM Transactions on Information and System Security (TISSEC), vol. 6, no. 3, pp. 365-403, August 2003. M. Liskov, R. Rivest, and D.Wagner. "Tweakable block ciphers", In Advances in Cryptology−CRYPTO ’02, Lecture Notes in Computer Science. Springer-Verlag, 2002. 米国標準技術研究所 (National Institute of Standards and Technology): "Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality", NIST Special Publication 800-38C 2007. E.Biham, A fast new DES implementation in software, Proc. Fast Software Encryption, Lecture Notes in Computer Science, Springer-Verlang, 1997. M.Naor and O.Reingold "On the Construction of Pseudo-Random Permutations: Luby-Rackoff Revisited", Journal of Cryptography vol.12 no.1, pp 29-66, 1999. M.Naor and O.Reingold "A pseudo-random encrypt mode"(Naors'web) 米国公開特許US2004/0131182 A1
米国登録特許US7,046,802 B2
米国標準技術研究所 (National Institute of Standards and Technology): "Advanced Encryption Standard", Federal Information Processing Standards 197, 2001 米国標準技術研究所 (National Institute of Standards and Technology): "Recommendation for Block Cipher Modes of Operation - Methods and Techniques", NIST Special Publication 800-38A 2001 Edition, 2001. P. Rogaway, M. Bellare, J. Bloack, and T. Krovetz. "OCB: A Block-Cipher Mode of Operation for Efficient Authenticated Encryption. "ACM Transactions on Information and System Security (TISSEC), vol. 6, no. 3, pp. 365-403, August 2003. M. Liskov, R. Rivest, and D.Wagner. "Tweakable block ciphers", In Advances in Cryptology−CRYPTO ’02, Lecture Notes in Computer Science. Springer-Verlag, 2002. 米国標準技術研究所 (National Institute of Standards and Technology): "Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality", NIST Special Publication 800-38C 2007. E.Biham, A fast new DES implementation in software, Proc. Fast Software Encryption, Lecture Notes in Computer Science, Springer-Verlang, 1997. M.Naor and O.Reingold "On the Construction of Pseudo-Random Permutations: Luby-Rackoff Revisited", Journal of Cryptography vol.12 no.1, pp 29-66, 1999. M.Naor and O.Reingold "A pseudo-random encrypt mode"(Naors'web)
以上説明したように、EMEモード及びCMCモードは、攪拌処理と2重の暗号化処理を備えた構造により、安全性が向上する代償として、処理効率及び速度が低下している。
また、ECBモードを内部に含むEMEモードにおいては、ビットスライス手法によるECBモードの効率化を図ると、EMEモード全体の処理が複雑となり、ビットスライス手法による効率化の利点を発揮できないという不都合がある。
本発明は上記実情を考慮してなされたもので、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化し得る暗号化装置及び復号装置を提供することを目的とする。
本発明の第1の局面は、ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、前記ブロック毎のビットスライス変換結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス暗号化手段と、前記ブロック毎の全ての暗号化結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、前記第2の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、前記第1のビットスライス暗号化手段における2番目乃至m番目のブロック毎の暗号化結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第2のビットスライス暗号化手段と、前記第2のビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、前記ブロック毎のビットスライス逆変換結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、を備えた暗号化装置である。
本発明の第2の局面は、ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス暗号化手段と、前記ブロック毎の全ての暗号化結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、前記第2の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、前記第1のビットスライス暗号化手段における2番目乃至m番目のブロック毎の暗号化結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第2のビットスライス暗号化手段と、前記第2のビットスライス暗号化手段により得られたブロック毎の暗号化結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、を備えた暗号化装置である。
本発明の第3の局面は、共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、前記各第1マスクデータL,2L,…,2m-1Lのうちの1番目の第1マスクデータLと、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第1の排他的論理和計算手段と、前記第1の排他的論理和計算手段により得られた計算結果と、平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmのうちの2番目乃至m番目のブロックP2,P3,…,Pmとに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、前記m個のブロックP1,P2,…,Pmのうちの1番目のブロックP1と、前記ハッシュ値と、前記非秘密情報Tとの排他的論理和を計算し、計算結果Uを得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果Uに基づいて、m−2個の互いに異なる第2マスクデータ2U,…,2m-2Uを生成する第2マスクデータ生成手段と、前記2番目乃至m番目のブロックP2,P3,…,Pmと、前記計算結果U及び前記各第2マスクデータ2U,…,2m-2Uとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第3の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果Uに対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果Mを得る第1の暗号化手段と、前記第1の暗号化手段の暗号化結果Mに基づいて、m−1個の互いに異なる第3マスクデータ2M,4M,…,2m-1Mを生成する第3マスクデータ生成手段と、前記第3の排他的論理和計算手段により得られたブロック毎の計算結果と、前記各第3マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第4の排他的論理和計算手段と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る第2の暗号化手段と、前記第2の暗号化手段により得られたブロック毎の暗号化結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、を備えた暗号化装置である。
本発明の第4の局面は、ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、前記ブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第1のビットスライス復号手段と、前記ブロック毎の全ての復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果を得る復号手段と、前記第2の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、前記第1のビットスライス復号手段における2番目乃至m番目のブロック毎の復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第2のビットスライス復号手段と、前記第2のビットスライス復号手段により得られたブロック毎の復号結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、前記ブロック毎のビットスライス変換結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第6の排他的論理和計算手段と、を備えた復号装置である。
本発明の第5の局面は、ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス復号手段と、前記ブロック毎の全ての復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果を得る暗号化手段と、前記第2の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、前記第1のビットスライス復号手段における2番目乃至m番目のブロック毎の復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第2のビットスライス復号手段と、前記第2のビットスライス復号手段により得られたブロック毎の復号結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第6の排他的論理和計算手段と、を備えた復号装置である。
本発明の第6の局面は、共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、前記第1の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、ブロック毎の復号結果を得る第1の復号手段と、前記第1の復号手段により得られたブロック毎の復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果Mを得る第2の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、前記第1の復号手段により得られた復号結果のうちの2番目乃至m番目のブロックに対応する復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第3の排他的論理和計算手段と、前記第2の排他的論理和計算手段の計算結果Mに対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果Uを得る第2の復号手段と、前記第2の復号手段の復号結果Uに基づいて、m−2個の互いに異なる第3マスクデータ2U,…,2m-2Uを生成する第3マスクデータ生成手段と、前記第3の排他的論理和計算手段により得られたブロック毎の計算結果と、前記計算結果U及び前記各第3マスクデータ2U,…,2m-2Uとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第4の排他的論理和計算手段と、前記各第1マスクデータL,2L,…,2m-1Lのうちの1番目の第1マスクデータLと、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、前記第2の復号手段の復号結果Uと、前記ハッシュ値と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第6の排他的論理和計算手段と、前記第6の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とを平文データとして出力する手段と、を備えた復号装置である。
なお、第1乃至第6の局面は、「装置」として表現したが、これに限らず、「プログラム」、「プログラムを記憶したコンピュータ読み取り可能な記憶媒体」又は「方法」として表現してもよい。
(作用)
本発明の第1及び第4の局面によれば、従来のEMEモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理あるいは復号処理を従来手法に組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
本発明の第1及び第4の局面によれば、従来のEMEモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理あるいは復号処理を従来手法に組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
また、本発明の第2及び第5の局面によれば、第1の局面の暗号化装置及び復号装置がそれぞれビットスライス変換手段とビットスライス逆変換手段を省略した構成により、第1の局面に対応する作用に加え、安全性を低下させることなく、より一層、全体の処理を効率化できることができる。
さらに、本発明の第3及び第6の局面によれば、ハッシュ関数計算手段と、内部データの攪拌手段としての第3及び第4の排他的論理和手段と、第2の暗号化手段あるいは第1の復号手段を組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
以上説明したように本発明によれば、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化できる。
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各装置は、装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。また、以下の各実施形態は、平文データを暗号化してハードディスク装置に書き込む場合やハードディスク装置内の暗号文データを復号して出力する場合に限らず、平文データを暗号化してネットワークパケット通信を行う場合やネットワークパケット通信により受信した暗号パケットを復号する場合などにも適用可能である。また、暗号化装置及び復号装置は、別々の装置とする場合に限らず、1台の装置として設けてもよい。
(第1の実施形態)
図1は本発明の第1の実施形態に係る暗号化装置の構成を示す模式図である。この暗号化装置10は、図19に示したECBモードによる暗号化処理ECB1,ECB2に代えて、図2に示すように、ビットスライス変換処理BS、第1のビットスライス暗号化処理BS−Ek1、第2のビットスライス暗号化処理BS−Ek2及びビットスライス逆変換処理I−BSを実行するものである。
図1は本発明の第1の実施形態に係る暗号化装置の構成を示す模式図である。この暗号化装置10は、図19に示したECBモードによる暗号化処理ECB1,ECB2に代えて、図2に示すように、ビットスライス変換処理BS、第1のビットスライス暗号化処理BS−Ek1、第2のビットスライス暗号化処理BS−Ek2及びビットスライス逆変換処理I−BSを実行するものである。
具体的には、暗号化装置10は、ROM11、RAM12、不揮発性メモリ13、CPU14及び入出力部15が互いにバス16を介して接続された構成となっている。
ここで、ROM11は、CPU14から読出可能な読出専用メモリであり、暗号化装置10のOSが予め記憶されている。
RAM12は、CPU14から読出/書込可能なランダムアクセスメモリであり、暗号化処理の前に不揮発性メモリ13の記憶内容が書き込まれ、更に、平文データP、計算結果等といった処理中データ、暗号文データC等を一時的に保存するために用いられる。
不揮発性メモリ13は、CPU14から読出/書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされた暗号化プログラムep、及び前述した公開情報tweakに相当する非秘密情報Tなどが予め記憶され、また、後述する外部の復号装置20と共有する共通鍵kなどが適宜、記憶される。
なお、非秘密情報Tとしては、例えば不揮発性メモリ13がハードディスク装置(mass-storage device)の場合、当該ハードディスク装置のセクタ毎に異なるセクタ番号(sector index)が使用可能となっている(例えば、特許文献1の第0012−0013段落参照。)。また、非秘密情報Tとしてセクタ番号が使用可能なことは、復号装置20及び以下の各実施形態でも同様である。
CPU14は、入出力部15から入力された平文データPに対して暗号化処理を実行し、得られた暗号文データCを入出力部15から出力するものであり、具体的にはRAM12を参照しながら暗号化プログラムepに基づいて、図2、図3及び図20に示す処理を実行する機能をもっている。
具体的にはCPU14は、暗号化プログラムepに基づく、以下の各機能(f14-1)〜(f14-14)をもっている。なお、「機能」を「処理」と呼び、「…機能をもっている」に代えて、「…処理を実行する」と述べてもよく、これは復号装置20でも同様である。
(f14-1) 共通鍵暗号方式の共通鍵k及び非秘密情報TをRAM12に書き込む機能。
(f14-2) RAM12内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成機能(Ek1,xt1〜xt4;図20)。補足すると、第1マスクデータ生成機能は、予め設定された変更可能な非秘密変数を、RAM12内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化機能(Ek1)と、変数暗号化機能により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算機能(xt1〜xt4)と、を備えている。この演算機能における有限体上の所定の演算処理は、有限体上の乗算処理であり、ここではガロア体GF(2128)上のx倍演算“xtime128()”としている。また、本実施形態では、m=4個の場合を代表例に挙げて述べるが、m=4に限定されない。以上の第1マスクデータ生成機能の説明は、後述する復号装置20と、以下の各実施形態でも同様である。
(f14-3) 平文データPをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmと、各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算機能(XOR11〜XOR14;図2)。
(f14-4) このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換機能(BS;図2及び図3)。補足すると、ビットスライス変換機能は、従来のECBモードによる暗号化部分(ECB1)を、ビットスライス手法により並列化するための機能であり、具体的には、各暗号化機能(Ek11〜Ek14)の入力ブロックの同じビット位置を集めて変数に格納するビットスライス処理用のビット表現に変換する機能である。m=4を例とすると、ビットスライス変換処理の入力は64バイトであり、1変数をmビット(すなわち4ビット)とする128個のビットスライス処理用のビット表現に変換される。なお、このビットスライス変換機能は、復号装置20及び以下の各実施形態でも同様である。
(f14-5) このブロック毎のビットスライス変換結果に対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス暗号化機能(BS−Ek1;図2)。なお、第1のビットスライス暗号化機能(BS−Ek1)は、ブロック単位の従来の暗号化機能(Ek)を並列化してセクタ単位で暗号化する機能に相当し、例えばCPUが32ビットの場合、1回に最大で32ブロック分の並列計算を実行できる(なお、図3の例では、4ビットの128変数で4ブロック分の並列計算を実行できる。)。これは第2のビットスライス暗号化機能(BS−Ek2)及び以下の各実施形態でも同様である。
(f14-6) このブロック毎の全ての暗号化結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算機能(XOR21;図2)。
(f14-7) 第2の排他的論理和計算機能による計算結果に対し、RAM12内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る暗号化機能(Ek21;図2)。
(f14-8) 第2の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算機能(XOR31;図2)。
(f14-9) 第3の排他的論理和計算機能による計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成機能(xt1〜xt4;図20)。
(f14-10) 第1のビットスライス暗号化機能による2番目乃至m番目のブロック毎の暗号化結果と、各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算機能(XOR42〜XOR44;図2)。
(f14-11) 第4の排他的論理和計算手段により得られたブロック毎の計算結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算機能(XOR51;図2)。
(f14-12) 第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第2のビットスライス暗号化機能(BS−Ek2;図2)。
(f14-13) 第2のビットスライス暗号化機能により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換機能(I−BS;図2及び図3)。補足すると、ビットスライス逆変換機能は、前述したビットスライス変換機能により得られたビットスライス処理用のビット表現を元のバイトまたビットの集まりに復元する機能である。なお、このビットスライス逆変換機能は、復号装置20及び以下の各実施形態でも同様である。
(f14-14) ブロック毎のビットスライス逆変換結果と、各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算機能(XOR61〜XOR64;図2)。
入出力部15は、図示しない外部装置と暗号化装置10との間のデータ等の入出力機能や、暗号化装置10を操作する操作者との間のユーザインタフェース機能をもっている。
一方、図4は同実施形態における復号装置の構成を示す模式図である。この復号装置20は、図21に示したECBモードによる復号処理Dk11〜Dk14,Dk31〜Dk34に代えて、図5に示すように、ビットスライス逆変換処理I−BS、第1のビットスライス復号処理BS−Dk1、第2のビットスライス復号処理BS−Dk2及びビットスライス変換処理BSを実行するものである。
具体的には、復号装置20は、ROM21、RAM22、不揮発性メモリ23、CPU24及び入出力部25が互いにバス26を介して接続された構成となっている。
ここで、ROM21は、CPU24から読出可能な読出専用メモリであり、復号装置20のOSが予め記憶されている。
RAM22は、CPU24から読出/書込可能なランダムアクセスメモリであり、復号処理の前に不揮発性メモリ23の記憶内容が書き込まれ、更に、暗号文データC、計算結果等といった処理中データ、平文データP等を一時的に保存するために用いられる。
不揮発性メモリ23は、CPU24から読出/書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされた復号プログラムdp、及び公開情報tweakに相当する非秘密情報Tなどが予め記憶され、また、外部の暗号化装置10と共有する共通鍵kなどが適宜、記憶される。
CPU24は、入出力部25から入力された暗号部データCに対して復号処理を実行し、得られた平文データPを入出力部25から出力するものであり、具体的にはRAM22を参照しながら復号プログラムspに基づいて、図5及び図20に示す処理を実行する機能をもっている。
具体的にはCPU24は、復号プログラムdpに基づく、以下の各機能(f24-1)〜(f24-14)をもっている。
(f24-1) 共通鍵暗号方式の共通鍵k及び非秘密情報TをRAM22に書き込む機能。
(f24-2) RAM12内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成機能(Ek1,xt1〜xt4;図20)。この第1マスクデータ生成機能は、暗号装置10の第1マスクデータ生成機能と同一の機能であり、前述同様に、予め設定された変更可能な非秘密変数を、RAM22内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化機能(Ek1)と、変数暗号化機能により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算機能(xt1〜xt4)と、を備えている。この演算機能における有限体上の所定の演算処理は、有限体上の乗算処理であり、ここではガロア体GF(2128)上のx倍演算“xtime128()”としている。
(f24-3) 暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算機能(XOR11〜XOR14;図5)。
(f24-4) このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換機能(I−BS;図3及び図5)。
(f24-5) このブロック毎のビットスライス逆変換結果に対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第1のビットスライス復号機能(BS−Dk1;図5)。なお、第1のビットスライス復号機能(BS−Dk1)は、ブロック単位の従来の復号機能(Dk)を並列化してセクタ単位で復号する機能に相当する。これは第2のビットスライス復号機能(BS−Dk2)及び以下の各実施形態でも同様である。
(f24-6) このブロック毎の全ての復号結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算機能(XOR21;図5)。
(f24-7) 第2の排他的論理和計算機能による計算結果に対し、RAM22内の共通鍵kに基づいて復号処理を実行し、復号結果を得る復号機能(Dk21;図5)。
(f24-8) 第2の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算機能(XOR31;図5)。
(f24-9) 第3の排他的論理和計算機能による計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成機能(xt1〜xt4;図20)。
(f24-10) 第1のビットスライス復号機能による2番目乃至m番目のブロック毎の復号結果と、各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算機能(XOR42〜XOR44;図5)。
(f24-11) 第4の排他的論理和計算機能により得られたブロック毎の計算結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算機能(XOR51;図5)。
(f24-12) 第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第2のビットスライス復号機能(BS−Dk2;図5)。
(f24-13) 第2のビットスライス復号機能により得られたブロック毎の復号結果に対し、ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換機能(BS;図5)。
(f24-14) ブロック毎のビットスライス変換結果と、各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第6の排他的論理和計算機能(XOR61〜XOR64;図5)。
入出力部25は、図示しない外部装置と復号装置20との間のデータ等の入出力機能や、復号装置20を操作する操作者との間のユーザインタフェース機能をもっている。
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。
(暗号化装置10の動作)
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
(暗号化装置10の動作)
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
CPU14は、この暗号化要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM12内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。
また、CPU14は、第1の排他的論理和計算機能(XOR11〜XOR14)により、RAM12内の平文データPをブロックP1,P2,…,P4毎に分割して得られた4個のブロックP1,P2,…,P4と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。補足すると、4個のブロックP1,P2,…,P4は、平文データ全体のうち、64バイトのセクタ毎の平文データPを16バイトのブロックP1,P2,…,P4毎に分割したものである。但し、セクタ単位は64バイトに限定されない。
さらに、CPU14は、ビットスライス変換機能(BS)により、このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得る。
また、CPU14は、第1のビットスライス暗号化機能(BS−Ek1)により、このブロック毎のビットスライス変換結果に対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る。
さらに、CPU14は、第2の排他的論理和計算機能(XOR21)により、このブロック毎の全ての暗号化結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
また、CPU14は、暗号化機能(Ek21)により、第2の排他的論理和計算機能による計算結果に対し、RAM12内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る。
さらに、CPU14は、第3の排他的論理和計算機能(XOR31)により、第2の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Mを得る。
また、CPU14は、第2マスクデータ生成機能(xt1〜xt4)により、第3の排他的論理和計算機能による計算結果Mに基づいて、3個の互いに異なる第2マスクデータ2M,4M,8Mを生成する。
さらに、CPU14は、第4の排他的論理和計算機能(XOR42〜XOR44)により、第1のビットスライス暗号化機能による2番目乃至4番目のブロック毎の暗号化結果と、各第2マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU14は、第5の排他的論理和計算機能(XOR51)により、第4の排他的論理和計算手段により得られたブロック毎の計算結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る。
さらに、CPU14は、第2のビットスライス暗号化機能(BS−Ek2)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る。
また、CPU14は、ビットスライス逆変換機能(I−BS)により、第2のビットスライス暗号化機能により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得る。
さらに、CPU14は、第6の排他的論理和計算機能(XOR61〜XOR64)により、ブロック毎のビットスライス逆変換結果と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をRAM12に書き込んだ後に暗号文データとして入出力部15から出力する。補足すると、出力される暗号文データは、RAM12に書き込まれたブロック毎の計算結果C1,C2,…,C4を連接して64バイトのセクタ毎の暗号文データCとし、以下同様にして得られたセクタ毎の暗号文データCを順次連接して、平文データ全体に対応する暗号文データとして得られたものである。但し、セクタ単位は64バイトに限定されない。
(従来の暗号化処理との比較説明)
図19に示す従来のEMEモード暗号化は、始めに、マスクとECBモードによる1層目の暗号化処理を行う。すなわち、値L乃至8Lのマスクをそれぞれ排他的論理和機能(XOR11〜XOR14)により演算し、暗号化機能(Ek11〜Ek14)でECBモードによる暗号化を行う。
図19に示す従来のEMEモード暗号化は、始めに、マスクとECBモードによる1層目の暗号化処理を行う。すなわち、値L乃至8Lのマスクをそれぞれ排他的論理和機能(XOR11〜XOR14)により演算し、暗号化機能(Ek11〜Ek14)でECBモードによる暗号化を行う。
ここで、従来のECBモードによる暗号化部分(ECB1)は、ビットスライス手法により並列化が可能である。この際、ビットスライス手法で計算を行うためには、各暗号化機能(Ek11〜Ek14)の入力ブロックの同じビット位置を集めて変数に格納するビットスライス処理用のビット表現に変換するビットスライス変換機能(BS)と、ビットスライス暗号化処理のビットスライス暗号化機能(BS−Ek)と、ビットスライス処理用のビット表現を元のバイトまたビットの集まりに復元するビットスライス逆変換機能(I−BS)とが必要となる。
同様に、図19に示す如き、ECBモードによる2層目の暗号化部分(ECB2)も、ビットスライス変換機能(BS)、ビットスライス暗号化機能(BS−Ek)及びビットスライス逆変換機能(I−BS)の処理により置き換える必要がある。
一方、第1の実施形態の図2に示す暗号化処理においては、従来の図19のECBモードによる1層目の暗号化機能(ECB1)をビットスライス変換機能(BS)と第1のビットスライス暗号化機能(BS−Ek1)で置き換え、図19のECBモードによる2層目の暗号化機能(ECB2)を第2のビットスライス暗号化機能(BS−Ek2)とビットスライス逆変換機能(I−BS)で置き換えた構成となっている。また、図2の第2マスクデータM,…,8Mの処理部分(PMASK1)は、図19に示す従来手法と同様の手順で処理を行う。
すなわち、第1の実施形態は、従来の1層目の暗号化部分(ECB1)に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の2層目の暗号化部分(ECB2)に相当する部分のビットスライス実装ではビットスライス変換を行わないため、図19に示す従来手法とは扱うデータが異なる。
第1の実施形態によれば、扱うデータが異なるものの、EMEモードで必要とされるブロック間の相互作用が第2マスクデータ2M乃至8Mとの排他的論理和機能(XOR42〜XOR44)により実現されるため、従来手法と同等の安全性を提供できる。また、第1の実施形態によれば、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換(I−BS)及びビットスライス変換(BS)を1層ずつ削減できるので、処理効率を向上させることができる。
なお、図19に示す従来のEMEモード暗号化と、図2に示す第1の実施形態によるEMEモード暗号化とは、平文データと共通鍵kとの同じ組み合わせに対しても、図19と図2で異なる暗号文データを出力することから、互換性が無く、互いに異なる手法である。このことは、後述する復号装置20においても同様である。しかし、第1の実施形態をセクタ単位での暗号化及び復号に使用する場合には、従来の類似の手法とのデータ互換性は必要条件ではない。
なお、暗号化装置10において、第1の排他的論理和機能(XOR11〜XOR14)とビットスライス変換機能(BS)との間での順序の入れ替え及び、第6の排他的論理和機能(XOR61〜XOR64)とビットスライス逆変換機能(I−BS)との間での順序の入れ替えは、それぞれ一般性を損なうことなく可能である。
(復号装置20の動作)
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
CPU24は、この復号要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM22内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。
また、CPU24は、第1の排他的論理和計算機能(XOR11〜XOR14)により、RAM22内の暗号文データをブロックC1,C2,…,C4毎に分割して得られた4個のブロックC1,C2,…,C4と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。補足すると、4個のブロックC1,C2,…,C4は、暗号文データ全体のうち、64バイトのセクタ毎の暗号文データCを16バイトのブロックC1,C2,…,C4毎に分割したものである。但し、セクタ単位は64バイトに限定されない。
さらに、CPU24は、ビットスライス逆変換機能(I−BS)により、このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得る。
また、CPU24は、第1のビットスライス復号機能(BS−Dk1)により、このブロック毎のビットスライス逆変換結果に対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る。
さらに、CPU24は、第2の排他的論理和計算機能(XOR21)により、このブロック毎の全ての復号結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
また、CPU24は、復号機能(Dk21)により、第2の排他的論理和計算機能による計算結果に対し、RAM22内の共通鍵kに基づいて復号処理を実行し、復号結果を得る。
さらに、CPU24は、第3の排他的論理和計算機能(XOR31)により、第2の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Mを得る。
また、CPU24は、第2マスクデータ生成機能(xt1〜xt4)により、第3の排他的論理和計算機能による計算結果Mに基づいて、3個の互いに異なる第2マスクデータ2M,4M,8Mを生成する。
さらに、CPU24は、第4の排他的論理和計算機能(XOR42〜XOR44)により、第1のビットスライス復号機能による2番目乃至4番目のブロック毎の復号結果と、各第2マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU24は、第5の排他的論理和計算機能(XOR51)により、第4の排他的論理和計算機能により得られたブロック毎の計算結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る。
さらに、CPU24は、第2のビットスライス復号機能(BS−Dk2)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る。
また、CPU24は、ビットスライス変換機能(BS)により、第2のビットスライス復号機能で得られたブロック毎の復号結果に対し、ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得る。
さらに、CPU24は、第6の排他的論理和計算機能(XOR61〜XOR64)により、ブロック毎のビットスライス変換結果と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をRAM22に書き込んだ後に平文データとして入出力部25から出力する。補足すると、出力される平文データは、RAM22に書き込まれたブロック毎の計算結果P1,P2,…,P4を連接して64バイトのセクタ毎の平文データPとし、以下同様にして得られたセクタ毎の平文データPを順次連接して、暗号文データ全体に対応する平文データとして得られたものである。但し、セクタ単位は64バイトに限定されない。
(従来の復号処理との比較説明)
この比較説明は、暗号化装置10の比較説明に述べた内容と同様の内容となる。また特に、復号装置20によれば、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス変換(BS)及びビットスライス逆変換(I−BS)を1層ずつ削減できるので、処理効率を向上させることができる。
この比較説明は、暗号化装置10の比較説明に述べた内容と同様の内容となる。また特に、復号装置20によれば、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス変換(BS)及びビットスライス逆変換(I−BS)を1層ずつ削減できるので、処理効率を向上させることができる。
また同様に、復号装置20において、第1の排他的論理和機能(XOR11〜XOR14)とビットスライス逆変換機能(I−BS)との間での順序の入れ替え及び、第6の排他的論理和機能(XOR61〜XOR64)とビットスライス変換機能(BS)との間での順序の入れ替えは、それぞれ一般性を損なうことなく可能である。
上述したように本実施形態によれば、従来のEMEモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理あるいは復号処理を従来手法に組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
補足すると、本実施形態によれば、EMEモードで必要とされるブロック間の相互作用が第2マスクデータ2M〜8Mとの排他的論理和機能(XOR42〜XOR44)により実現されるため、従来手法と同等の安全性を提供できる。また、本実施形態によれば、従来の1層目の暗号化部分(ECB1)に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の2層目の暗号化部分(ECB2)に相当する部分のビットスライス実装ではビットスライス変換を行わないため、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換(I−BS)及びビットスライス変換(BS)を1層ずつ削減でき、処理効率を向上できる。
(第2の実施形態)
図6は本発明の第2の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図7は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図であって、前述した図面と同様の機能には同一符号を付してその詳しい説明を省略し、ここでは異なる機能について主に述べる。なお、以下の各実施形態についても同様にして重複した説明を省略する。また、第1の実施形態で述べた図1及び図4に示す各装置10,20の構成は、以下の各実施形態でも同様に用いられる。以下の各実施形態では、図1及び図4に示す各装置10,20の構成において、暗号化プログラムep及び復号プログラムdpの内容が異なっており、当該各プログラムep,dpにより実現される各機能が異なっている。
図6は本発明の第2の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図7は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図であって、前述した図面と同様の機能には同一符号を付してその詳しい説明を省略し、ここでは異なる機能について主に述べる。なお、以下の各実施形態についても同様にして重複した説明を省略する。また、第1の実施形態で述べた図1及び図4に示す各装置10,20の構成は、以下の各実施形態でも同様に用いられる。以下の各実施形態では、図1及び図4に示す各装置10,20の構成において、暗号化プログラムep及び復号プログラムdpの内容が異なっており、当該各プログラムep,dpにより実現される各機能が異なっている。
すなわち、第2の実施形態は、第1の実施形態の図2及び図5に示した各機能に比べ、図6及び図7に示すように、ビットスライス変換機能(BS)及びビットスライス逆変換機能(I−BS)を省略した各機能を実現するための暗号化プログラムep及び復号プログラムdpがそれぞれ暗号化装置10及び復号装置20にインストールされた構成となっている。なお、各装置10,20のCPU14,24は、各プログラムep,dpに基づいて、図6、図20及び図7に示す処理を実行する機能をもっている。
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。
(暗号化装置10の動作)
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
CPU14は、この暗号化要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM12内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。
また、CPU14は、第1の排他的論理和計算機能(XOR11〜XOR14)により、RAM12内の平文データPをブロックP1,P2,…,P4毎に分割して得られた4個のブロックP1,P2,…,P4と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU14は、第1のビットスライス暗号化機能(BS−Ek1)により、このブロック毎の計算結果に対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る。
さらに、CPU14は、第2の排他的論理和計算機能(XOR21)により、このブロック毎の全ての暗号化結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
また、CPU14は、暗号化機能(Ek21)により、第2の排他的論理和計算機能による計算結果に対し、RAM12内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る。
さらに、CPU14は、第3の排他的論理和計算機能(XOR31)により、第2の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Mを得る。
また、CPU14は、第2マスクデータ生成機能(xt1〜xt4)により、第3の排他的論理和計算機能による計算結果Mに基づいて、3個の互いに異なる第2マスクデータ2M,4M,8Mを生成する。
さらに、CPU14は、第4の排他的論理和計算機能(XOR42〜XOR44)により、第1のビットスライス暗号化機能による2番目乃至4番目のブロック毎の暗号化結果と、各第2マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU14は、第5の排他的論理和計算機能(XOR51)により、第4の排他的論理和計算手段により得られたブロック毎の計算結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る。
さらに、CPU14は、第2のビットスライス暗号化機能(BS−Ek2)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る。
また、CPU14は、第6の排他的論理和計算機能(XOR61〜XOR64)により、ブロック毎の暗号化結果と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をRAM12に書き込んだ後に暗号文データとして入出力部15から出力する。
(復号装置20の動作)
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
CPU24は、この復号要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM22内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。
また、CPU24は、第1の排他的論理和計算機能(XOR11〜XOR14)により、RAM22内の暗号文データをブロックC1,C2,…,C4毎に分割して得られた4個のブロックC1,C2,…,C4と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU24は、第1のビットスライス復号機能(BS−Dk1)により、このブロック毎の計算結果に対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る。
さらに、CPU24は、第2の排他的論理和計算機能(XOR21)により、このブロック毎の全ての復号結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
また、CPU24は、復号機能(Dk21)により、第2の排他的論理和計算機能による計算結果に対し、RAM22内の共通鍵kに基づいて復号処理を実行し、復号結果を得る。
さらに、CPU24は、第3の排他的論理和計算機能(XOR31)により、第2の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Mを得る。
また、CPU24は、第2マスクデータ生成機能(xt1〜xt4)により、第3の排他的論理和計算機能による計算結果Mに基づいて、3個の互いに異なる第2マスクデータ2M,4M,8Mを生成する。
さらに、CPU24は、第4の排他的論理和計算機能(XOR42〜XOR44)により、第1のビットスライス復号機能による2番目乃至4番目のブロック毎の復号結果と、各第2マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU24は、第5の排他的論理和計算機能(XOR51)により、第4の排他的論理和計算機能により得られたブロック毎の計算結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る。
さらに、CPU24は、第2のビットスライス復号機能(BS−Dk2)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る。
また、CPU24は、第6の排他的論理和計算機能(XOR61〜XOR64)により、ブロック毎の復号結果と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をRAM22に書き込んだ後に平文データとして入出力部25から出力する。
上述したように第2の実施形態によれば、第1の実施形態に比べ、暗号化装置10及び復号装置20がそれぞれビットスライス変換機能(BS)とビットスライス逆変換機能(I−BS)を更に省略した構成により、安全性を低下させることなく、より一層、全体の処理を効率化でき、第1の実施形態よりも高速に実行することができる。
補足すると、ビットスライス変換機能(BS)とビットスライス逆変換機能(I−BS)がいずれもビット転置処理であり、平文乃至暗号文に対する線形演算に相当し安全性に寄与しないことから、両機能(BS,I−BS)を省略しても、安全性を低下させることなく、全体の処理を効率化することができる。
(第3の実施形態)
図8は本発明の第3の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図9は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
図8は本発明の第3の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図9は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
すなわち、第3の実施形態は、暗号装置10においては、従来の図19に示した入力側のECBモードの暗号化部分(ECB1)、第2及び第3の排他的論理和機能(XOR21,XOR31)を省略し、図8に示すように、第1の排他的論理和計算機能(XOR1)、ハッシュ関数計算機能(H)、第2の排他的論理和計算機能(XOR2)及び第4の排他的論理和計算機能(XOR42〜XOR44)を備えた各機能を実現するための暗号化プログラムepがインストールされた構成となっている。
一方、復号装置20においては、従来の図21に示した出力側のECBモードの復号部分(Dk31〜Dk34)、第3及び第5の排他的論理和計算機能(XOR31,XOR51)を省略し、図9に示すように、第3乃至第5の排他的論理和計算機能(XOR32’〜XOR34’,XOR42’〜XOR44’,XOR5)、ハッシュ関数計算機能(H)及び第6の排他的論理和計算機能(XOR6)を備えた各機能を実現するための復号プログラムdpがインストールされた構成となっている。なお、各装置10,20のCPU14,24は、各プログラムep,dpに基づいて、図8、図20及び図9に示す処理を実行する機能をもっている。
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。
(暗号化装置10の動作)
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
いま、暗号化装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の暗号化プログラムepをRAM12にロードして起動し、不揮発性メモリ13内の非秘密情報T及び共通鍵kをRAM12に書き込んだとする。また、暗号化装置10では、操作者の操作により、平文データPが入出力部15を介してRAM12に書き込まれた後、暗号化要求が入出力部15を介して入力されたとする。
CPU14は、この暗号化要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM12内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。補足すると、第1マスクデータ生成機能(Ek1,xt1〜xt4)は、h番目の第1マスクデータ2h-1Lに有限体上の乗算処理を実行してh+1番目の第1マスクデータ2hLを生成する第1演算機能(xt1〜xt4)(但し、h=1,2,…,m−1)を含んでいる。
また、CPU14は、第1の排他的論理和計算機能(XOR11〜XOR14)により、各第1マスクデータL,2L,…,2m-1Lのうちの1番目の第1マスクデータLと、RAM12内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
CPU14は、ハッシュ関数計算機能(H)により、第1の排他的論理和計算機能により得られた計算結果と、平文データをブロックP1,P2,…,Pm毎に分割して得られた4個のブロックP1,P2,…,P4のうちの2番目乃至4番目のブロックP2,P3,P4とに基づいてハッシュ関数を計算し、ハッシュ値を得る。ここで、ハッシュ関数としては、例えば、MD4、MD5、SHA−1、SHA−256などさまざまなハッシュ関数が利用可能である。なお、計算したハッシュ値が、後述する第1の暗号化機能(Ek21)のブロック幅よりも大きいならば、一般性を損なうことなく、計算したハッシュ値の先頭あるいは末尾などの一部のビットを選択して、最終的に得られたハッシュ値とする。また、ハッシュ値は、ダイジェスト値と呼んでもよい。
また、CPU14は、第2の排他的論理和計算機能(XOR2)により、4個のブロックP1,P2,…,P4のうちの1番目のブロックP1と、ハッシュ値と、非秘密情報Tとの排他的論理和を計算し、計算結果Uを得る。
CPU14は、第2マスクデータ生成機能(xt2,xt3)により、第2の排他的論理和計算機能の計算結果Uに基づいて、2個の互いに異なる第2マスクデータ2U,4Uを生成する。補足すると、第2マスクデータ生成機能(xt2,xt3)は、i番目の第2マスクデータ2i-1Uに有限体上の乗算処理を実行してi+1番目の第2マスクデータ2iUを生成する第2演算機能(xt2,xt3)(但し、i=1,2,…,m−2)を含んでいる。
また、CPU14は、第3の排他的論理和計算機能(XOR32〜XOR34)により、2番目乃至4番目のブロックP2,P3,P4と、計算結果U及び各第2マスクデータ2U,4Uとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
CPU14は、第1の暗号化機能(Ek21)により、第2の排他的論理和計算機能の計算結果Uに対し、RAM12内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果Mを得る。
また、CPU14は、第3マスクデータ生成機能(xt2〜xt4)により、第1の暗号化機能の暗号化結果Mに基づいて、3個の互いに異なる第3マスクデータ2M,4M,8Mを生成する。補足すると、第3マスクデータ生成機能(xt2〜xt4)は、j番目の第3マスクデータ2j-1Mに有限体上の乗算処理を実行してj+1番目の第3マスクデータ2jMを生成する第3演算機能(xt2〜xt4)(但し、j=1,2,…,m−1)を含んでいる。
CPU14は、第4の排他的論理和計算機能(XOR42〜XOR44)により、第3の排他的論理和計算機能により得られたブロック毎の計算結果と、各第3マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る。ここで、同じデータ、例えば平文データの2番目のブロックP2に対し、第3の排他的論理和機能(XOR32)ではUすなわち1Uとの排他的論理和を、第4の排他的論理和機能(XOR42)では2Mとの排他的論理和を計算する。すなわち、同一のデータに対して排他的論理和が計算されるマスクデータUとMのx倍演算には異なる係数を用いる。すなわち、ここでは、係数1と2を用いた。2〜3番目のブロックP3、P4に対しても同様に異なる係数である、2と4、4と8を用いる。
また、CPU14は、第5の排他的論理和計算機能(XOR51)により、第4の排他的論理和計算機能により得られたブロック毎の計算結果と、RAM12内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
CPU14は、第2の暗号化機能(Ek31〜Ek34)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る。なお、第2の暗号化機能はECBモードの暗号化処理を実行するものである。
また、CPU14は、第6の排他的論理和計算機能(XOR61〜XOR64)により、第2の暗号化機能により得られたブロック毎の暗号化結果と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をRAM12に書き込んだ後に暗号文データとして入出力部15から出力する。
(復号装置20の動作)
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
いま、復号装置10では、操作者の操作により、CPU14が不揮発性メモリ13内の復号プログラムdpをRAM22にロードして起動し、不揮発性メモリ23内の非秘密情報T及び共通鍵kをRAM22に書き込んだとする。また、復号装置20では、操作者の操作により、暗号文データCが入出力部25を介してRAM22に書き込まれた後、復号要求が入出力部25を介して入力されたとする。
CPU24は、この復号要求を受けると、第1マスクデータ生成機能(Ek1,xt1〜xt4)により、RAM22内の共通鍵kに基づいて、4個の互いに異なる第1マスクデータL,2L,…,8Lを生成する。補足すると、第1マスクデータ生成機能(Ek1,xt1〜xt4)は、h番目の第1マスクデータ2h-1Lに有限体上の乗算処理を実行してh+1番目の第1マスクデータ2hLを生成する第1演算機能(xt1〜xt4)(但し、h=1,2,…,m−1)を含んでいる。
また、CPU24は、第1の排他的論理和計算機能(XOR11〜XOR14)により、RAM22内の暗号文データをブロックC1,C2,…,C4毎に分割して得られた4個のブロックC1,C2,…,C4と、各第1マスクデータL,2L,…,8Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU24は、第1の復号機能(Dk11〜Dk14)により、このブロック毎の計算結果に対し、RAM22内の共通鍵kに基づいて復号処理を実行し、当該ブロック毎の復号結果を得る。なお、第1の復号機能はECBモードの復号処理を実行するものである。
さらに、CPU24は、第2の排他的論理和計算機能(XOR21)により、このブロック毎の全ての復号結果と、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果Mを得る。
また、CPU24は、第2マスクデータ生成機能(xt1〜xt4)により、第3の排他的論理和計算機能による計算結果Mに基づいて、3個の互いに異なる第2マスクデータ2M,4M,8Mを生成する。補足すると、第2マスクデータ生成機能(xt1〜xt4)は、j番目の第2マスクデータ2j-1Mに有限体上の乗算処理を実行してj+1番目の第2マスクデータ2jMを生成する第2演算機能(xt1〜xt4)(但し、j=1,2,…,m−1)を含んでいる。
さらに、CPU24は、第3の排他的論理和計算機能(XOR32’〜XOR34’)により、第1の復号機能により得られた復号結果のうちの2番目乃至4番目のブロックに対応する復号結果と、各第2マスクデータ2M,4M,8Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
また、CPU24は、第2の復号機能(Dk21)により、第2の排他的論理和計算機能による計算結果Mに対し、RAM22内の共通鍵kに基づいて復号処理を実行し、復号結果Uを得る。
CPU24は、第3マスクデータ生成機能(xt2,xt3)により、第2の復号機能の復号結果Uに基づいて、2個の互いに異なる第3マスクデータ2U,4Uを生成する。補足すると、第3マスクデータ生成機能(xt2,xt3)は、i番目の第3マスクデータ2i-1Uに有限体上の乗算処理を実行してi+1番目の第3マスクデータ2iUを生成する第3演算機能(xt2,xt3)(但し、i=1,2,…,m−2)を備えている。
また、CPU24は、第4の排他的論理和計算機能(XOR42’〜XOR44’)により、第3の排他的論理和計算機能により得られたブロック毎の計算結果と、計算結果U及び各第3マスクデータ2U,4Uとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る。
また、CPU24は、第5の排他的論理和計算機能(XOR5)により、各第1マスクデータL,2L,…,8Lのうちの1番目の第1マスクデータLと、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
CPU24は、ハッシュ関数計算機能(H)により、第5の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得る。
また、CPU24は、第6の排他的論理和計算機能(XOR6)により、第2の復号機能の復号結果Uと、ハッシュ値と、RAM22内の非秘密情報Tとの排他的論理和を計算し、計算結果を得る。
CPU24は、第6の排他的論理和計算機能により得られた計算結果と、第4の排他的論理和計算機能により得られたブロック毎の計算結果とをRAM22に書き込んだ後に平文データとして入出力部25から出力する。
上述したように第3の実施形態によれば、ハッシュ関数計算機能(H)と、内部データの攪拌手段としての第3及び第4の排他的論理和機能(XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’)と、ECBモードによる暗号化機能(ECB2)あるいは復号機能(Dk11〜Dk14)を組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化できる。
補足すると、各実施形態においては、平文データと暗号文データのサイズが互いに同一であることを前提とし、入力が少し変われば出力全体が変化することが望まれる。このことを踏まえ、第3の実施形態においては、図8に示したように、次の構成(1)〜(4)を用いている。
(1)ハッシュ関数計算機能(H)の入力に非秘密情報Tと第1マスクデータLとの排他的論理和(XOR1)の計算結果を用いている。
(1)ハッシュ関数計算機能(H)の入力に非秘密情報Tと第1マスクデータLとの排他的論理和(XOR1)の計算結果を用いている。
(2)第1の暗号化機能(Ek21)は従来のEME/CMCモードと同等である。
(3)第3の排他的論理和機能(XOR32〜XOR34)における第2マスクデータU,2U,4Uと、第4の排他的論理和機能(XOR32〜XOR34)における第3マスクデータ2M,4M,8Mとは、同一ブロックにおける各マスクデータの係数が互いにズレている。なお、従来のEME/CMCモードは、同一ブロックにおける各マスクデータの係数が互いに同一である。
(3)第3の排他的論理和機能(XOR32〜XOR34)における第2マスクデータU,2U,4Uと、第4の排他的論理和機能(XOR32〜XOR34)における第3マスクデータ2M,4M,8Mとは、同一ブロックにおける各マスクデータの係数が互いにズレている。なお、従来のEME/CMCモードは、同一ブロックにおける各マスクデータの係数が互いに同一である。
(4)第2の暗号化機能(Ek31〜Ek34)及び第6の排他的論理和計算機能(XOR61〜XOR64)は、従来のEME/CMCモードと同等である。
これらの構成(1)〜(3)のうち、第1から第3の構成(1)〜(3)により、入力の少しの変化を出力全体に波及させることができる。
これに加え、第1の構成(1)によれば、セクタ毎に異なる非秘密情報Tと共通鍵kに関係した第1マスクデータLとの排他的論理和の値をハッシュ関数の入力に用いることから、攻撃者に第2マスクデータUの衝突を起こさせにくい効果がある。なお、衝突とは、異なる入力で出力値/中間値が同じになることであり、ここでは、異なる平文データP1〜P4を入力したときに同一のマスクデータUが生成されてしまうことを衝突と表現している。
また、第3の構成(3)によれば、各排他的論理和機能において、同一ブロックにおける各マスクデータの係数を互いにズラした構成としたので、従来手法に比べ、マスクデータによる攪拌効果を向上させることができる。
また、第4の構成(4)によれば、以上の構成(1)〜(3)により攪拌した中間データからブロック毎の暗号文データを作成することができる。なお、第4の構成は、以下の第4及び第5の実施形態に示すように、ビットスライス手法による暗号化機能に置換することができ、あるいは第6の実施形態に示すように、CBCモードの暗号化機能に置換することもできる。
また、本実施形態によれば、図19に示した従来のEMEモードによる暗号化処理(CEB1)に代えて、図8に示すように、ハッシュ関数計算機能(H)を用い、第2マスクデータU、2U、4Uを用いた第3の排他的論理和機能(XOR32〜XOR34)などを付加した構成としたが、ハッシュ関数計算機能(H)に例えばMD4のようなECBモード暗号化よりも高速なハッシュ関数を用いることにより、従来よりも効率的なセクタ単位での暗号化処理を実現することができる。このことは復号装置20でも同様である。
(第4の実施形態)
図10は本発明の第4の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図11は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
図10は本発明の第4の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図11は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
すなわち、第4の実施形態は、第3の実施形態の図8に示したECBモードの暗号化機能(Ek11〜Ek14)に代えて、図10に示すように、ビットスライス暗号化機能(BS−Ek)及びビットスライス逆変換機能(I−BS)を備えた暗号化プログラムep暗号化装置10にインストールされた構成となっている。なお、暗号化装置10のCPU14は、暗号化プログラムepに基づいて、図10及び図20に示す処理を実行する機能をもっている。
ここで、暗号化プログラムepによるビットスライス暗号化機能(BS−Ek)は、第5の排他的論理和計算機能(XOR51)により得られた計算結果と、第4の排他的論理和計算機能(XOR42〜XOR44)により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る機能である。
また、暗号化プログラムepによるビットスライス逆変換機能(I−BS)は、ビットスライス暗号化機能(BS−Ek)により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、得られたブロック毎のビットスライス逆変換結果をブロック毎の暗号化結果として第6の排他的論理和計算機能(XOR61〜XOR64)に送出する機能である。
同様に、第4の実施形態は、第3の実施形態の図9に示したECBモードの復号機能(Dk11〜Dk14)に代えて、図11に示すように、ビットスライス逆変換機能(I−BS)及びビットスライス復号機能(BS−Dk)を備えた復号プログラムdpが復号装置20にインストールされた構成となっている。なお、復号装置20のCPU24は、復号プログラムdpに基づいて、図11及び図20に示す処理を実行する機能をもっている。
ここで、復号プログラムdpによるビットスライス逆変換機能(I−BS)は、第1の排他的論理和計算機能(XOR11〜XOR14)により得られたブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得る機能である。
また、復号プログラムdpによるビットスライス復号機能(BS−Dk)は、ビットスライス逆変換機能により得られたブロック毎のビットスライス逆変換結果に対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る機能である。
以上のような構成によれば、第3の実施形態の効果に加え、第1の実施形態と同様に、従来手法のEMEモードにビットスライスの手法をそのまま適用した場合に比べ、暗号化装置10及び復号装置20ではそれぞれビットスライス変換機能(BS)を1層ずつ削減できるので、処理効率を向上させることができる。
換言すると、第4の実施形態によれば、従来のEMEモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理(BS−Ek,I−BS)あるいは復号処理(I−BS,BS−Dk)と、ハッシュ関数計算機能(H)と、内部データの攪拌手段としての第3及び第4の排他的論理和機能(XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’)とを従来手法に組み合わせることにより、従来のEMEモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
なお、図8に示す第3の実施形態による暗号化処理と、図10に示す第4の実施形態によるEMEモード暗号化とは、平文データと共通鍵kとの同じ組み合わせに対しても、図8と図10で異なる暗号文データを出力することから、互換性が無く、互いに異なる手法である。このことは、図11に示した復号装置20においても同様である。しかし、第4の実施形態をセクタ単位での暗号化及び復号に使用する場合には、第3の実施形態の手法とのデータ互換性は必要条件ではない。
また、暗号化装置10において、第6の排他的論理和機能(XOR61〜XOR64)とビットスライス逆変換機能(I−BS)との間での順序の入れ替えは、一般性を損なうことなく可能である。
同様に、復号装置20において、第1の排他的論理和機能(XOR11〜XOR14)とビットスライス逆変換機能(I−BS)との間での順序の入れ替えは、一般性を損なうことなく可能である。
(第5の実施形態)
図12は本発明の第5の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図13は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
図12は本発明の第5の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図13は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
すなわち、第5の実施形態は、第4の実施形態の図10及び図11に示した各機能に比べ、図12及び図13に示すように、ビットスライス逆変換機能(I−BS)を省略した各機能を実現するための暗号化プログラムep及び復号プログラムdpがそれぞれ暗号化装置10及び復号装置20にインストールされた構成となっている。なお、各装置10,20のCPU14,24は、各プログラムep,dpに基づいて、図12、図20及び図13に示す処理を実行する機能をもっている。
ここで、暗号化プログラムepによるビットスライス暗号化機能(BS−Ek)は、第5の排他的論理和計算機能(XOR51)により得られた計算結果と、第4の排他的論理和計算機能(XOR42〜XOR44)により得られたブロック毎の計算結果とに対し、RAM12内の共通鍵kに基づいてビットスライス手法による暗号化処理を実行し、得られたブロック毎の暗号化結果を第6の排他的論理和計算機能(XOR61〜XOR64)に送出する機能である。
同様に、復号プログラムdpによるビットスライス復号機能(BS−Dk)は、第1の排他的論理和計算機能(XOR11〜XOR14)により得られたブロック毎の計算結果に対し、RAM22内の共通鍵kに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る機能である。
以上のような構成の第5の実施形態によれば、第4の実施形態に比べ、暗号化装置10及び復号装置20がそれぞれビットスライス逆変換機能(I−BS)を更に省略した構成により、安全性を低下させることなく、より一層、全体の処理を効率化でき、第4の実施形態よりも高速に実行することができる。
補足すると、ビットスライス逆変換機能(I−BS)がビット転置処理であり、平文乃至暗号文に対する線形演算に相当し安全性に寄与しないことから、この機能(I−BS)を省略しても、安全性を低下させることなく、全体の処理を効率化することができる。
(第6の実施形態)
図14は本発明の第6の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図15は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
図14は本発明の第6の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図15は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
すなわち、第6の実施形態は、第3の実施形態の図8に示した各機能に比べ、図14に示すように、ECBモードの暗号化機能(ECB2)及び第6の排他的論理和機能(XOR61〜XOR64)に代えて、CBCモードを構成する暗号化機能(Ek31〜Ek34)及び第6の排他的論理和機能(XOR61〜XOR63)を備えた各機能を実現するための暗号化プログラムepが暗号化装置10にインストールされた構成となっている。
同様に、第6の実施形態は、第3の実施形態の図9に示したECBモードの復号機能(Dk11〜Dk14)に代えて、図15に示すように、CBCモードを構成する復号機能(Dk11〜Dk14)及び第1の排他的論理和機能(XOR12〜XOR14)を備えた各機能を実現するための復号プログラムdpが復号装置20にインストールされた構成となっている。なお、各装置10,20のCPU14,24は、各プログラムep,dpに基づいて、図14、図20及び図15に示す処理を実行する機能をもっている。
以上のような構成によれば、第3の実施形態の作用効果と従来のCBCモードの作用効果とを組み合わせた作用効果を奏することができる。
すなわち、第6の実施形態によれば、ハッシュ関数計算機能(H)と、内部データの攪拌手段としての第3及び第4の排他的論理和機能(XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’)と、CBCモードによる暗号化機能(CBC2)あるいは復号機能(Dk11〜Dk14)を組み合わせることにより、従来のCMCモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
<各実施形態の補足説明>
(入出力データのサイズ)
各実施形態において、入出力データのサイズ、すなわちセクタの単位は64バイトとして説明したが、64バイトに制限されるものではない。例えば、ハードディスクのセクタとして一般的な512バイトの場合、各実施形態を説明する図における平文P1乃至P4は、それぞれP1乃至P32に一般性を損なうことなく拡張される。例えば、第3の実施形態の図8及び図9における平文データP1乃至P4は、図16及び図17に示すように、平文データP1乃至P32に拡張される。これらの拡張は、特には図示しないが、他の各実施形態でも同様に行われる。
(入出力データのサイズ)
各実施形態において、入出力データのサイズ、すなわちセクタの単位は64バイトとして説明したが、64バイトに制限されるものではない。例えば、ハードディスクのセクタとして一般的な512バイトの場合、各実施形態を説明する図における平文P1乃至P4は、それぞれP1乃至P32に一般性を損なうことなく拡張される。例えば、第3の実施形態の図8及び図9における平文データP1乃至P4は、図16及び図17に示すように、平文データP1乃至P32に拡張される。これらの拡張は、特には図示しないが、他の各実施形態でも同様に行われる。
(ガロア体上のx倍演算)
各実施形態において、2L乃至8Lの計算や2M乃至8Mの計算といったガロア体GF(2n)のx倍演算は、例えばn=128によるガロア体GF(2128)上のx倍演算“xtime128()”(xt1〜xt4;図20)が利用可能である。なお、ガロア体GF(2128)上のx倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばx128+x7+x2+x+1といった広く一般に知られている原始多項式であってもよい。
各実施形態において、2L乃至8Lの計算や2M乃至8Mの計算といったガロア体GF(2n)のx倍演算は、例えばn=128によるガロア体GF(2128)上のx倍演算“xtime128()”(xt1〜xt4;図20)が利用可能である。なお、ガロア体GF(2128)上のx倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばx128+x7+x2+x+1といった広く一般に知られている原始多項式であってもよい。
ビットスライス手法を用いた各実施形態において、ガロア体上のx倍演算を、ビットスライス手法で用いる演算ビット幅と同一とすることにより、x倍演算の処理負荷を低減し、処理を効率化できる。
より具体的には、32ビットCPUにおけるビットスライス手法では、演算ビット幅は32ビットであることが望ましい。すなわち、本発明による、例えば64バイトのセクタ単位での暗号化にビットスライス手法を用いる場合、16バイトの4つのブロックは、32ビット(すなわち4バイト)の16個の入力変数からなるビットスライス処理用表現に変換される。512バイトのセクタ単位の場合、同様にビットスライス処理用の32ビットの入力変数は128個となる。
ここで、ガロア体上のx倍演算を、GF(232)上で行うと仮定すると、次数が32であるため、ある32ビットの値からx倍演算を用いて生成する値は、安全性の観点から32個以下であることが望ましい。
ここで、各実施形態におけるL、U、Mなどは、AES暗号の出力する128ビットのデータであるため、32ビットあるいは64ビットのブロックに分割しても、ブロック間のビットが無相関であるという性質がある。この性質に伴い、図18に示すように、128ビットを32ビットの4つのブロックに分割し、それぞれ個別にガロア体上のx倍演算を行うことにより、512バイトのセクタ単位の処理において、ビットスライス処理及びガロア体上のx倍演算の単位を32ビットで効率的に実装することが可能となる。換言すると、第1〜第3マスクデータ生成機能は、ブロック毎のブロック幅のビット数(例、1128ビット)よりも小さい次数(例、次数32)の有限体の乗算処理を実行するように実装することが可能である。具体的には、例えば、図8における、各マスクデータU及びMはそれぞれ32ビットの各マスク部分データU0、U1、U2、U3と、M0、M1、M2、M3に分割し、第3の排他的論理和計算機能(XOR32〜XOR34)及び第4の排他的論理和計算機能(XOR42〜XOR44)は、各マスクデータを32ビット単位で数えた位置を4で割った余りに対応した各マスク部分データU0、U1、U2、U3あるいはM0、M1、M2、M3を初期値とするx倍演算結果との排他的論理和を計算する。
なお、ガロア体GF(232)上のx倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばx32+x7+x6+x5+x3+x2+x+1やx32+x7+x6+x2+x+1といった広く一般に知られている原始多項式であってもよい。
また、64ビットCPUにおけるビットスライス手法も、一般性を損なうことなく同様の効率化が可能である。このとき、ガロア体GF(264)上のx倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばx64+x4+x3+x+1といった広く一般に知られている原始多項式であってもよい。
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
10…暗号化装置、11,21…ROM、12,22…RAM、13,23…不揮発性メモリ、14,24…CPU、15,25…入出力部、16,26…バス、20…復号装置、L〜8L,M〜8L,U〜4U…マスクデータ、T…非秘密情報、P1〜P4…平文データ、C1〜C4…平文データ、XOR1,XOR2,XOR5,XOR6,XOR11〜XOR14,XOR21,XOR31,XOR32〜XOR34,XOR42〜XOR44,XOR51,XOR61〜XOR64…排他的論理和機能、BS…ビットスライス変換機能、I−BS…ビットスライス逆変換機能、BS−Ek1,BS−Ek2…ビットスライス暗号化機能、BS−Dk1,BS−Dk2…ビットスライス復号機能、Ek21…暗号化機能、Dk21…復号機能、H…ハッシュ関数計算機能。
Claims (26)
- ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、
前記ブロック毎のビットスライス変換結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス暗号化手段と、
前記ブロック毎の全ての暗号化結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、
前記第2の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、
前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、
前記第1のビットスライス暗号化手段における2番目乃至m番目のブロック毎の暗号化結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、
前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第2のビットスライス暗号化手段と、
前記第2のビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ブロック毎のビットスライス逆変換結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。 - 請求項1に記載の暗号化装置において、
前記第1マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算手段と、
を備えたことを特徴とする暗号化装置。 - 請求項2に記載の暗号化装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする暗号化装置。 - ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス暗号化手段と、
前記ブロック毎の全ての暗号化結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、
前記第2の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、
前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、
前記第1のビットスライス暗号化手段における2番目乃至m番目のブロック毎の暗号化結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、
前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第2のビットスライス暗号化手段と、
前記第2のビットスライス暗号化手段により得られたブロック毎の暗号化結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。 - 請求項4に記載の暗号化装置において、
前記第1マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算手段と、
を備えたことを特徴とする暗号化装置。 - 請求項5に記載の暗号化装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする暗号化装置。 - 共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
前記各第1マスクデータL,2L,…,2m-1Lのうちの1番目の第1マスクデータLと、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第1の排他的論理和計算手段と、
前記第1の排他的論理和計算手段により得られた計算結果と、平文データをブロックP1,P2,…,Pm毎に分割して得られたm個のブロックP1,P2,…,Pmのうちの2番目乃至m番目のブロックP2,P3,…,Pmとに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、
前記m個のブロックP1,P2,…,Pmのうちの1番目のブロックP1と、前記ハッシュ値と、前記非秘密情報Tとの排他的論理和を計算し、計算結果Uを得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果Uに基づいて、m−2個の互いに異なる第2マスクデータ2U,…,2m-2Uを生成する第2マスクデータ生成手段と、
前記2番目乃至m番目のブロックP2,P3,…,Pmと、前記計算結果U及び前記各第2マスクデータ2U,…,2m-2Uとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第3の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果Uに対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、暗号化結果Mを得る第1の暗号化手段と、
前記第1の暗号化手段の暗号化結果Mに基づいて、m−1個の互いに異なる第3マスクデータ2M,4M,…,2m-1Mを生成する第3マスクデータ生成手段と、
前記第3の排他的論理和計算手段により得られたブロック毎の計算結果と、前記各第3マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第4の排他的論理和計算手段と、
前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る第2の暗号化手段と、
前記第2の暗号化手段により得られたブロック毎の暗号化結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第6の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。 - 請求項7に記載の暗号化装置において、
前記第2の暗号化手段は、ECBモードの前記暗号化処理を実行することを特徴とする暗号化装置。 - 請求項7に記載の暗号化装置において、
前記第2の暗号化手段は、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいてビットスライス手法による前記暗号化処理を実行し、当該ブロック毎の暗号化結果を得るビットスライス暗号化手段と、
前記ビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、得られたブロック毎のビットスライス逆変換結果をブロック毎の暗号化結果として前記第6の排他的論理和計算手段に送出するビットスライス逆変換手段と、
を備えたことを特徴とする暗号化装置。 - 請求項7に記載の暗号化装置において、
前記第2の暗号化手段は、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による前記暗号化処理を実行し、得られたブロック毎の暗号化結果を前記第6の排他的論理和計算手段に送出するビットスライス暗号化手段、
を備えたことを特徴とする暗号化装置。 - 請求項7に記載の暗号化装置において、
前記第2の暗号化手段及び前記第6の排他的論理和計算手段はCBCモードを構成していることを特徴とする暗号化装置。 - 請求項7乃至請求項11のいずれか1項に記載の暗号化装置において、
前記第1のマスクデータ生成手段は、h番目の第1マスクデータ2h-1Lに有限体上の乗算処理を実行してh+1番目の第1マスクデータ2hLを生成する第1演算手段(但し、h=1,2,…,m−1)を備え、
前記第2のマスクデータ生成手段は、i番目の第2マスクデータ2i-1Uに有限体上の乗算処理を実行してi+1番目の第2マスクデータ2iUを生成する第2演算手段(但し、i=1,2,…,m−2)を備え、
前記第3のマスクデータ生成手段は、j番目の第3マスクデータ2j-1Mに有限体上の乗算処理を実行してj+1番目の第3マスクデータ2jMを生成する第3演算手段(但し、j=1,2,…,m−1)を備えたことを特徴とする暗号化装置。 - 請求項12に記載の暗号化装置において、
前記第1乃至第3演算手段は、ブロック毎のブロック幅のビット数よりも小さい次数の前記有限体上の乗算処理を実行することを特徴とする暗号化装置。 - ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第1のビットスライス復号手段と、
前記ブロック毎の全ての復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果を得る復号手段と、
前記第2の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、
前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、
前記第1のビットスライス復号手段における2番目乃至m番目のブロック毎の復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、
前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、新たな計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第2のビットスライス復号手段と、
前記第2のビットスライス復号手段により得られたブロック毎の復号結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、
前記ブロック毎のビットスライス変換結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第6の排他的論理和計算手段と、
を備えたことを特徴とする復号装置。 - 請求項14に記載の復号装置において、
前記第1マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算手段と、
を備えたことを特徴とする復号装置。 - 請求項15に記載の復号装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする復号装置。 - ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の暗号化結果を得る第1のビットスライス復号手段と、
前記ブロック毎の全ての復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果を得る暗号化手段と、
前記第2の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Mを得る第3の排他的論理和計算手段と、
前記第3の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、
前記第1のビットスライス復号手段における2番目乃至m番目のブロック毎の復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第4の排他的論理和計算手段と、
前記第4の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第2のビットスライス復号手段と、
前記第2のビットスライス復号手段により得られたブロック毎の復号結果と、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第6の排他的論理和計算手段と、
を備えたことを特徴とする復号装置。 - 請求項17に記載の復号装置において、
前記第1マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵kに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をm回実行し、各回の実行結果として各第1マスクデータL,2L,…,2m-1Lを生成する演算手段と、
を備えたことを特徴とする復号装置。 - 請求項18に記載の復号装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする復号装置。 - 共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵k及び非秘密情報Tを記憶する記憶手段と、
前記記憶手段内の共通鍵kに基づいて、m個の互いに異なる第1マスクデータL,2L,…,2m-1Lを生成する第1マスクデータ生成手段と、
暗号文データをブロックC1,C2,…,Cm毎に分割して得られたm個のブロックC1,C2,…,Cmと、前記各第1マスクデータL,2L,…,2m-1Lとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第1の排他的論理和計算手段と、
前記第1の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、ブロック毎の復号結果を得る第1の復号手段と、
前記第1の復号手段により得られたブロック毎の復号結果と、前記非秘密情報Tとの排他的論理和を計算し、計算結果Mを得る第2の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果Mに基づいて、m−1個の互いに異なる第2マスクデータ2M,4M,…,2m-1Mを生成する第2マスクデータ生成手段と、
前記第1の復号手段により得られた復号結果のうちの2番目乃至m番目のブロックに対応する復号結果と、前記各第2マスクデータ2M,4M,…,2m-1Mとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第3の排他的論理和計算手段と、
前記第2の排他的論理和計算手段の計算結果Mに対し、前記記憶手段内の共通鍵kに基づいて復号処理を実行し、復号結果Uを得る第2の復号手段と、
前記第2の復号手段の復号結果Uに基づいて、m−2個の互いに異なる第3マスクデータ2U,…,2m-2Uを生成する第3マスクデータ生成手段と、
前記第3の排他的論理和計算手段により得られたブロック毎の計算結果と、前記計算結果U及び前記各第3マスクデータ2U,…,2m-2Uとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第4の排他的論理和計算手段と、
前記各第1マスクデータL,2L,…,2m-1Lのうちの1番目の第1マスクデータLと、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第5の排他的論理和計算手段と、
前記第5の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、
前記第2の復号手段の復号結果Uと、前記ハッシュ値と、前記非秘密情報Tとの排他的論理和を計算し、計算結果を得る第6の排他的論理和計算手段と、
前記第6の排他的論理和計算手段により得られた計算結果と、前記第4の排他的論理和計算手段により得られたブロック毎の計算結果とを平文データとして出力する手段と、
を備えたことを特徴とする復号装置。 - 請求項20に記載の復号装置において、
前記第1の復号手段は、ECBモードの前記復号処理を実行することを特徴とする復号装置。 - 請求項20に記載の復号装置において、
前記第1の復号手段は、
前記第1の排他的論理和計算手段により得られたブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ビットスライス逆変換手段により得られたブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵kに基づいて前記ビットスライス手法による前記復号処理を実行し、当該ブロック毎の復号結果を得るビットスライス復号手段と、
を備えたことを特徴とする復号装置。 - 請求項20に記載の復号装置において、
前記第1の復号手段は、
前記第1の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵kに基づいてビットスライス手法による前記復号処理を実行し、当該ブロック毎の復号結果を得るビットスライス復号手段、
を備えたことを特徴とする復号装置。 - 請求項20に記載の復号装置において、
前記第1の排他的論理和計算手段及び前記第1の復号手段はCBCモードを構成していることを特徴とする復号装置。 - 請求項20乃至請求項24のいずれか1項に記載の復号装置において、
前記第1のマスクデータ生成手段は、h番目の第1マスクデータ2h-1Lに有限体上の乗算処理を実行してh+1番目の第1マスクデータ2hLを生成する第1演算手段(但し、h=1,2,…,m−1)を備え、
前記第2のマスクデータ生成手段は、j番目の第2マスクデータ2j-1Mに有限体上の乗算処理を実行してj+1番目の第2マスクデータ2jMを生成する第2演算手段(但し、j=1,2,…,m−1)を備え、
前記第3のマスクデータ生成手段は、i番目の第3マスクデータ2i-1Uに有限体上の乗算処理を実行してi+1番目の第3マスクデータ2iUを生成する第3演算手段(但し、i=1,2,…,m−2)を備えたことを特徴とする復号装置。 - 請求項25に記載の復号装置において、
前記第1乃至第3演算手段は、ブロック毎のブロック幅のビット数よりも小さい次数の前記有限体上の乗算処理を実行することを特徴とする復号装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008010954A JP2009175196A (ja) | 2008-01-21 | 2008-01-21 | 暗号化装置及び復号装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008010954A JP2009175196A (ja) | 2008-01-21 | 2008-01-21 | 暗号化装置及び復号装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009175196A true JP2009175196A (ja) | 2009-08-06 |
Family
ID=41030403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008010954A Withdrawn JP2009175196A (ja) | 2008-01-21 | 2008-01-21 | 暗号化装置及び復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009175196A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016090710A (ja) * | 2014-10-31 | 2016-05-23 | 株式会社東海理化電機製作所 | 暗号処理装置 |
-
2008
- 2008-01-21 JP JP2008010954A patent/JP2009175196A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016090710A (ja) * | 2014-10-31 | 2016-05-23 | 株式会社東海理化電機製作所 | 暗号処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5120830B2 (ja) | 共用のハードウェアを利用して暗号文及びメッセージ認証コードを生成するための方法及びシステム | |
Gueron | Intel’s new AES instructions for enhanced performance and security | |
TWI402675B (zh) | 低等待時間的區塊密碼術 | |
JP4961909B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP5131187B2 (ja) | 情報処理システム、情報処理方法および情報処理プログラム | |
US8966279B2 (en) | Securing the implementation of a cryptographic process using key expansion | |
JP7031580B2 (ja) | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 | |
US20080084996A1 (en) | Authenticated encryption method and apparatus | |
US20100135486A1 (en) | Nonlinear feedback mode for block ciphers | |
US20070237327A1 (en) | Method and System for High Throughput Blockwise Independent Encryption/Decryption | |
US8913740B2 (en) | Method and apparatus for generating an Advanced Encryption Standard (AES) key schedule | |
JP2001324925A (ja) | 共通鍵暗号方法及び装置 | |
JP2007288514A (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、及びメッセージ認証システム | |
JP2017097376A (ja) | 可変入力長調整可能暗号の構造および使用 | |
JP2018515815A (ja) | データ暗号化装置及び方法、並びにデータ復号化装置及び方法 | |
TW201044334A (en) | Encryption device, encryption method, and computer program | |
JP7323196B2 (ja) | 暗号化装置、暗号化方法、プログラム、復号装置、復号方法 | |
WO2016067524A1 (ja) | 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム | |
JP5652363B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
Anusha et al. | Symmetric key algorithm in computer security: a review | |
Singh et al. | Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish | |
Buell | Modern symmetric ciphers—Des and Aes | |
JP5489115B2 (ja) | 原本性保証装置、原本性保証プログラム、及びこのプログラムを記録する記録媒体 | |
JP5431191B2 (ja) | 認証付きストリーム暗号の暗号化装置、認証付きストリーム暗号の復号化装置、暗号化方法、復号化方法およびプログラム | |
JPWO2009090689A1 (ja) | 暗号化装置及び暗号処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20110405 |