JP3736731B2 - 置換処理装置およびそのプログラム記録媒体 - Google Patents
置換処理装置およびそのプログラム記録媒体 Download PDFInfo
- Publication number
- JP3736731B2 JP3736731B2 JP2000044529A JP2000044529A JP3736731B2 JP 3736731 B2 JP3736731 B2 JP 3736731B2 JP 2000044529 A JP2000044529 A JP 2000044529A JP 2000044529 A JP2000044529 A JP 2000044529A JP 3736731 B2 JP3736731 B2 JP 3736731B2
- Authority
- JP
- Japan
- Prior art keywords
- exclusive
- result
- rotation
- byte
- output
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
この発明は、主に暗号技術で用いられ、特に、秘密鍵の制御のもとでデータをブロック単位で暗号化または復号を行う共通鍵暗号方式に用いられ、第一の非線形変換S−線形変換P−第二の非線形変換Sが行われる装置または非線形変換S−線形変換Pが行われる装置に適する置換処理装置に関する。
【0002】
【従来の技術】
データを秘匿するためには暗号化技術が有効である。暗号化の方式には共通鍵暗号と公開鍵暗号があり、暗号化と復号で同一の秘密鍵を用いる方式を共通鍵暗号、暗号化と復号とで異なる鍵を用いる方式を公開鍵暗号と呼ぶ。処理速度の観点からは共通鍵暗号の方が有利である。
高速かつ安全な共通鍵暗号を構成するために、暗号化対象のデータを適当な長さのブロックに分割し、そのブロック毎に暗号化する方法をブロック暗号と呼ぶ。このような暗号方式の一方式として、S−P−S構造を利用して置換処理における安全性を高めたE2暗号(例えば、文献「神田ら:“128ビットブロック暗号E2の提案”、電子情報通信学会情報セキュリティ研究会ISEC98−12」)がある。
【0003】
図16はE2暗号で利用されている置換処理を表したものである。このなかのP関数処理は、第1のS関数処理と合わせて、行列表現z′=P・z=P・s(x)として、
【0004】
【数24】
のように表され、
【0005】
【数25】
【0006】
という処理が行われる。ここで、s(x)はxを入力として第1のS関数を構成するs−boxによる非線形変換された値を表している。
この第1のS関数処理と{0,1}要素からなる行列Pで表現される置換処理(P関数処理)との合成処理に対する高速な実現方法はいくつか考えられており、例えば文献「青木ら:“E2のソフトウェァ実装、”1999年暗号と情報セキュリティシンポジウムSCIS99−F1−2.2」にその実現方法が記載されている。
例えば、32ビットプロセッサー上での実装例として、以下の4個の32ビット参照テーブル
【0007】
【数26】
を準備した時、上記のS関数処理とP関数処理の合成処理は以下のように書き直すことができる。
【0008】
【数27】
【0009】
ここで、>>yは下yバイトの論理シフト、<<yは上yバイトの論理シフトである。上記行列中の縦線、横線は左辺の行列P・S(x)と右辺のS1(・)〜S4(・)よりなる行列との関係を分かり易くするために記入したものであって特別の意味はない。
このとき、図17に示すように、第1のS関数処理とP関数処理との合成処理では、xのあらゆる値に対して参照可能なテーブルS1(・)〜S4(・)、つまり4KBのメモリ(S1(・)〜S4(・)のテーブルは各々1KBのメモリが必要)を使用し、演算処理としてはx1〜x8によるテーブル参照8回、排他的論理和11回、シフト演算4回を必要とする。また、この文献中には特に記載されていないが、実際の実装においては、これらの演算処理の他に途中データのメモリ退避が1回必要となることに注意されたい。
別の実装例では、上記のS1(・)〜S4(・)のテーブルの他に以下の4個の32ビット参照テーブル
【0010】
【数28】
を準備することにより、上記の置換処理は以下のように書き直すことができる。
【0011】
【数29】
【0012】
このとき、第1のS関数処理とP関数処理との合成処理では、8KBのメモリ(S1(・)〜S8(・)のテーブルは各々1KBのメモリが必要)を使用し、演算処理としては図18に示すようにテーブル参照12回、排他的論理和11回を必要とする。
以上説明したように、E2暗号で利用されている第1のS関数処理とP関数処理との合成処理での高速実装方法は、メモリを4〜8KBも利用しているわりにはテーブル参照、排他的論理和、シフト演算などの処理量が大きく、必ずしも高速なものであるとはいえない。そのうえ、メモリ使用量に制限があるとき、さらに処理量が急増すると予想される。
【0013】
【発明が解決しようとする課題】
この発明の目的は、少なくともS−P構造を有する置換処理において、実装の多様性を持たせたP関数を実現することによって、置換処理での安全性を同じにしながら、様々な実装環境に応じた最適な実装、特に、S関数処理と、{0,1}要素からなる行列Pで表現される置換処理(P関数処理)との合成処理における高速実装を可能とするような置換処理装置を提供することを目的とする。
【0014】
【課題を解決するための手段】
この発明では、上記の目的を達成するための置換処理装置において、S関数処理(非線形変換処理)と、行列Pで表現される置換処理(P関数処理:線形変換処理)との合成処理を以下のように書き直すことが可能となるような構造にすることによって、様々な実装環境に応じた柔軟な高速実装が可能となる。
【0015】
【数30】
【0016】
ここで、<<<yは上にyバイトのローテーション、S1(・)〜S8(・)のテーブルは参照テーブルを表す。なお、y<0のときは下に|y|バイトローテーションを表すものとする。
【0017】
【作用】
この発明によれば、S関数処理と、行列Pで表現される置換処理(P関数処理)との合成処理における高速実装方法として少なくとも、(1)8KBのメモリを使用したときにはテーブル参照8回、排他的論理和8回、ローテーション1回の演算処理、(2)4KBのメモリを使用したときにはテーブル参照8回、排他的論理和10回、ローテーション4回または5回の演算処理、(3)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、の3種類を実現することができる。なお、(2)の実装方法のときには、4KBのメモリを使用したテーブル参照の代わりに、256Bのメモリを使用したテーブル参照と6回のシフト演算によっても実現可能であり、このときテーブル参照8回、シフト6回、排他的論理和10回、ローテーション4回または5回の演算処理となる。また、特に{S1(・),S2(・),S3(・),S4(・)}={S5(・),S6(・),S7(・),S8(・)}を満たすのであれば、(1)の実装方法の時にはさらに4KBのメモリ使用量を削減可能であり、使用メモリは4KBとなる(他の演算処理量は変化しない)。
【0018】
これによって、E2暗号で使われていた置換処理よりも高速で、かつ柔軟な実装が可能となる置換処理装置を提供できる。さらに、合成処理そのものは同じでありながら、(1)の実装方法はPC向き、(2)は32ビットCPUを備えたハイエンドICカード向き、(3)は8ビットCPUを備えたローエンドICカード向きというように多様な実装環境に応じて最適かつ柔軟な実装が可能となる。
【0019】
【発明の実施の形態】
実施例1
以下、この発明の実施例1を、図面を用いて説明する。
図1は、この発明の実施例1を示す置換処理装置におけるS関数処理とP関数処理との合成処理を抜き出して示したものである。この合成処理は、
【0020】
【数31】
という処理が行なわれ、行列表現z′=P・z=P・s(x)として、
【0021】
【数32】
のように表される。これは、
【0022】
【数33】
とすると、
【0023】
【数34】
であるから、
【0024】
【数35】
【0025】
と表すことができる。
まず、4KBのテーブルを利用したときの実装法について述べる。ここで用意するテーブルは以下の32ビット参照テーブルの4個であり、各テーブルが1KBのメモリ量を使用する。
【0026】
【数36】
上記のS関数処理とP関数処理との合成処理は以下のように書き換えることができる。
【0027】
【数37】
【0028】
したがって、このような処理を行う処理図は図2に示すようになる。つまりx1,x2,x3,x4でそれぞれテーブルS1,S2,S3,S4を参照してS1(x1),S2(x2),S3(x3),S4(x4)を求め、これらの排他的論理和を回路11,12,13で求め、またx5,x6,x7,x8でそれぞれテーブルS2,S3,S4,S1を参照してS2(x5),S3(x6),S4(x7),S1(x8)を求め、これらの排他的論理和を回路14,15,16により求め、この排他的論理和演算結果U2と前記排他的論理和演算結果U1との排他的論理和が回路17でとられてz1′,z2′,z3′,z4′として出力され、また回路16よりの排他的論理和演算結果U2に対し、上1バイトローテーションが回路18で行われ、回路17の出力と回路19で排他的論理和演算が行われてz5′,z6′,z7′,z8′が得られる。
【0029】
この変換処理はコンピュータにより行わせることもできる。例えば、図3に示すように、CPUよりなる制御部21はプログラムメモリ22に格納されたプログラムを読出し、解読実行し、図4に示す処理を行う。つまり入力部23を通じてデータx1〜x8を取込んで記憶部24に一時記憶し(ステップ1)、その各データx1〜x8を順次取出して、テーブルメモリ25内の対応するテーブルを参照し(ステップ2)、参照結果を記憶部24に一時格納する(ステップ3)。つまりこの例では参照結果S1(x1),S2(x2),S3(x3),S4(x4),S2(x5),S3(x6),S4(x7),S1(x8)が記憶部24に格納される。
【0030】
記憶部24からS1(x1),S2(x2),S3(x3),S4(x4)を取出し、これらの排他的論理和演算を制御部21の演算部26で行い(ステップ4)、その演算結果U1を記憶部24に一時格納し、また記憶部24からS2(x5),S3(x6),S4(x7),S1(x8)を取出し、演算部26でこれらの排他的論理和演算を行い(ステップ5)、その演算結果U2と、前記演算結果U1との排他的論理和演算を演算部26で行う(ステップ6−1)と共に、制御部21のローテーション部27で演算結果U2に対し、下1バイトローテーションを行い(ステップ6−2)、このローテーションの結果とステップ6の排他的論理和演算の結果との排他的論理和演算を演算部26で行う(ステップ7)。このステップ4の演算結果U1をz1′,z2′,z3′,z4′として、またステップ8の演算結果をz5′,z6′,z7′,z8′として出力部28より出力する(ステップ8)。
【0031】
以上の置換処理ではテーブル参照8回、排他的論理和8回、ローテーション1回で構成可能であることがわかる。なお、ローテーション回路18への入力が別の排他的論理和回路17への(一方の)入力となっている場合にはそのローテーションと排他的論理和は並列処理が可能である。故に、図2中の点線部の処理は並列処理を考慮すると2演算で処理が完了する。
次に、もう1つの4KBメモリを利用したときの実装法について述べる。ここで用意するテーブルは以下の32ビット参照テーブルの4個であり、各テーブルが1KBのメモリ量を使用する。
【0032】
【数38】
このとき、第1のS関数処理とP関数処理との合成処理は以下のように書き換えることができる。
【0033】
【数39】
【0034】
したがって、このような処理を行う処理は図5のようになる。つまり入力データx1,x2,x3,x4でテーブルS6,S7,S8,S5がそれぞれ参照してS6(x1),S7(x2),S8(x3),S5(x4)が出力され、これらは回路31,32,33により排他的論理和演算が行われ、その演算結果Aが回路33から出力される。また入力データx5,x6,x7,x8によりテーブルS5,S6,S7,S8がそれぞれ参照され、S5(x5),S6(x6),S7(x7),S8(x8)が出力され、これらが回路34,35,36により排他的論理和演算が行われ、その演算結果Bが回路36から出力される。演算結果Aは回路37により下に1バイトローテーションされると共に回路38で演算結果Bと排他的論理和演算される。この演算結果Cは回路39により上に1バイトローテーションされると共に回路37の出力との排他的論理和演算が回路41で行われる。その演算結果Dは回路42で上に2バイトローテーションされると共に回路39の出力と排他的論理和演算が回路43で行われる。その演算結果Eは回路44で下に1バイトローテーションされると共に回路42の出力と排他的論理和演算が回路45で行われる。回路45の出力Fがz1′,z2′,z3′,z4′として、回路44の出力がz5′,z6′,z7′,z8′として出力される。
【0035】
この置換処理をコンピュータにより行うには、図3中のテーブルメモリ25にテーブルS1,S2,S3,S4の代りにS5,S6,S7,S8を設け、図6に示すようにステップ1でデータx1〜x8を取込み記憶部24に格納し、ステップ2で各データxiを対応するテーブルを参照してS6(x1),S7(x2),S8(x3),S5(x4),S5(x5),S6(x6),S7(x7),S8(x8)を求め、ステップ3でこれらを記憶部24に記憶する。ステップ4でS6(x1),S7(x2),S8(x3),S5(x4)を取出し、これらの排他的論理和演算を演算部26で行い、その結果Aを記憶部24に格納する。ステップ5でS5(x5),S6(x6),S7(x7),S8(x8)を取出し、これらの排他的論理和演算を演算部26で行う。ステップ6−1でその結果Bをローテーション部27により下に1バイトローテーションし、ステップ6−2で演算結果Aと演算結果Bとの排他的論理和演算を行い、その演算結果Cをステップ7−1で上に1バイトローテーションし、同時にステップ7−2で演算結果Cとステップ6−1のローテーションの結果との排他的論理和演算を行う。その演算結果Dをステップ8−1で上に2バイトローテーションすると共に、ステップ7−1のローテーションの結果と演算結果Dと排他的論理和演算をステップ8−2で行う。この演算結果Eをステップ9−1で下に1バイトローテーションすると共にステップ9−2で、ステップ8−1のローテーション結果と演算結果Eとの排他的論理和演算を行い、ステップ9−1,9−2の各結果をステップ10で出力する。
【0036】
図5、図6に示した置換処理によればテーブル参照8回、排他的論理和10回、ローテーション4回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図5中の点線部の処理は4演算で処理が完了する。
さらに、S5(x)からS8(x)はs(x)とシフト処理によって実現可能である。つまり、xにより8ビットテーブルを参照してs(x)を求め、s(x)を4行目の要素とする4要素の縦行列を論理シフトする。この論理シフトはS5(x)が上3バイトシフトで実現され、またS6(x)が上2バイトシフト、S7(x)が上1バイトシフトで実現される。このことから、図5の処理においてS6(x1),S7(x2),S8(x3),S5(x4)はそれぞれs(x1)と上2バイトシフト、s(x2)と上1バイトシフト、s(x3),s(x4)と上3バイトシフトで実現できることがわかる。同様のことがS5(x5),S6(x6),S7(x7),S8(x8)についてもいえるので、図5の処理のテーブル参照はs(x)を得るテーブル参照と6回のシフトでも実現できることになる。このとき、使用するテーブルサイズは256Bとなる。
【0037】
最後に、256Bのテーブルを利用したときの実装法について述べる。ここで利用するテーブルはもともとのs−boxそのものである。この実施例の説明に示したP行列中の2つの行を取出し、対応する要素が一致しないものの数、いわゆるハミング重みの差が最小となるような順に演算を行う。このとき、上記のP関数処理は、
【0038】
【数40】
【0039】
ここで、zi=S(Xi),(i=1,…,8)であることを考慮すると、S関数処理とP関数処理との合成処理はテーブル参照8回、排他的論理和25回で構成可能であることがわかる。
以上に述べた結果をまとめると、本実施例では、
(1)4KBのメモリを使用したときにはテーブル参照8回、排他的論理和8回、ローテーション1回の演算処理、
(2)4KBのメモリを使用したときにはテーブル参照8回、排他的論理和10回、ローテーション4回の演算処理、
(3)256Bのメモリを使用したとき、テーブル参照8回、シフト6回、排他的論理和10回、ローテーション4回の演算処理、
(4)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、
の4種類の高速実装方法が提供できる。ちなみに、E2暗号での青木らの文献の結果によれば、E2暗号での高速実装結果は、
A)4KBのメモリを使用したときにはテーブル参照8回、排他的論理和11回、シフト演算4回の演算処理(このほかにデータのメモリ退避1回)、
B)8KBのメモリを使用したときにはテーブル参照12回、排他的論理和11回の演算処理、
C)256Bのメモリを使用したときの実装法について記述なし
である。ここで、テーブル参照は排他的論理和やシフト、ローテーションなどと比較して極めて低速な処理であることに注意。したがって、この実施例の置換処理のほうが、E2暗号で使われていた置換処理よりも高速で、かつ様々な実装環境に応じた柔軟な実装が可能となる。
実施例2
以下、この発明の実施例2を、図面を用いて説明する。
【0040】
図7は、この発明の実施例2を示す置換処理装置におけるS関数処理とP関数処理との合成処理を抜き出して示したものである。この合成処理は、
【0041】
【数41】
という処理が行なわれ、行列表現z′=P・z=P・s(x)として、
【0042】
【数42】
のように表される。これは、
【0043】
【数43】
とすると、
【0044】
【数44】
【0045】
と表すことができる。
この式による置換処理は実施例の対応する式との比較から、図2に示した構成と同様に構成できる。つまり図8に示すように、図2に対し、入力データx1〜x8中のx5,x6,x7,x8によるテーブルの参照がそれぞれS4,S1,S2,S3である点と、ローテーション回路18で下に1バイトローテーションを行う点が異なる。またこの場合も図4に示した処理手順と同様にしてコンピュータにより処理できることも容易に理解できよう。
同様に、下記の4KBメモリを用いることもできる。
【0046】
【数45】
【0047】
この場合の置換処理の構成は図9に示すように、図5に示した構成とほぼ同様である。ただ入力データx1〜x8中のx1,x2,x3,x4による参照がそれぞれS8,S5,S6,S7である点と、回路37で上に1バイトローテーションする点と、回路39で下に1バイトローテーションする点と、回路44で上に1バイトローテーションする点が異なる。またこの場合も図6に示した処理手順と同様にしてコンピュータにより処理できることも容易に理解されよう。
【0048】
従ってこの実施例においても実施例1と同様に、
(1)4KBのメモリを使用したとき図8から、テーブル参照8回、排他的論理和8回、ローテーション1回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は2演算で処理が完了する。
(2)4KBのメモリを使用したとき、図9から、テーブル参照8回、排他的論理和10回、ローテーション4回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は4演算で処理が完了する。
(3)図9におけるテーブル参照は、実施例1で説明したのと同様の理由によりテーブル参照8回とシフト6回で実現できる。したがって、256Bのメモリを使用したとき、テーブル参照8回、シフト6回、排他的論理和10回、ローテーション4回の演算処理でも実現可能である。
(4)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、
の4種類の高速実装方法が提供できる。
【0049】
実施例3
以下、この発明の実施例3を、図面を用いて説明する。
図10は、この発明の実施例3を示す置換処理装置におけるS関数処理とP関数処理との合成処理を抜き出して示したものである。この合成処理は、
【0050】
【数46】
という処理が行なわれ、行列表現z′=P・z=P・s(x)として、
【0051】
【数47】
のように表される。これは、
【0052】
【数48】
とすると、
【0053】
【数49】
【0054】
と表すことができる。
この実施例においても、実施例1と同様の考え方により、4KBメモリを使用した場合、図11に示すように実施例1の図2に示した構成と同様に構成することができ、4KBメモリのテーブルの参照で表わした式と、実施例2の対応する式との差から、図8に示した構成に対し、回路18で上に1バイトローテーションを行うようにした点を異ならせればよい。またこの置換処理を図4に示した手順とほぼ同様にコンピュータにより処理させることもできることは容易に理解できよう。
【0055】
4KBメモリを使用した別の場合は、図12に示すように実施例1の図5に示した構成と同様に構成することができる。ただ入力データx1〜x6中のx1,x2,x3,x4によりそれぞれテーブルS5,S6,S7,S8を参照する点、回路37で上に1バイトローテーションを行う点、回路39で下に1バイトローテーションを行う点、回路42で上に1バイトローテーションを行う点、回路44で上に1バイトローテーションを行う点、更に回路45の演算結果Fを回路46で下に2バイトローテーションを行って出力する点が図5と異なる。またこの場合も図6に示した処理手順に順じて同様にコンピュータにより置換処理を行うこともできることは容易に理解できよう。
【0056】
以上より
(1)4KBのメモリを使用したとき図11から、テーブル参照8回、排他的論理和8回、ローテーション1回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は2演算で処理が完了する。
(2)4KBのメモリを使用したとき、図12から、テーブル参照8回、排他的論理和10回、ローテーション5回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は5演算で処理が完了する。
(3)図12におけるテーブル参照は、実施例1で説明したのと同様の理由によりテーブル参照8回とシフト6回で実現できる。したがって、256Bのメモリを使用したとき、テーブル参照8回、シフト6回、排他的論理和10回、ローテーション5回の演算処理でも実現可能である。
(4)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、
の4種類の高速実装方法が提供できる。
【0057】
実施例4
以下、この発明の実施例4を、図面を用いて説明する。
図13は、この発明の実施例4を示す置換処理装置におけるS関数処理とP関数処理との合成処理を抜き出して示したものである。この合成処理は、
【0058】
【数50】
という処理が行なわれ、行列表現z′=P・z=P・s(x)として、
【0059】
【数51】
のように表される。これは、
【0060】
【数52】
とすると、
【0061】
【数53】
【0062】
と表すことができる。
この実施例においても、実施例1と同様の考え方により、4KBメモリを用いた場合、この32ビットテーブルで表現した式を、実施例1の場合と比較すれば直ちに理解されるように、図14に示すように、図2中の回路18を下に1バイトローテーションに変更すればよい。またこの置換処理を図4に示した手順と同様にコンピュータにより行うこともできる。
【0063】
4KBメモリを用いた別の場合、図15に示すように図5に示した構成と同様に構成できる。ただ入力データx1〜x8中のx1,x2,x3,x4によりそれぞれテーブルS5,S6,S7,S8を参照する点、回路42で下に1バイトローテーションを行う点、回路45の演算結果Fを回路46で上に2バイトローテーションを行って出力する点が図2と異なる。またこの場合も、図6に示した処理手順とほぼ同様にコンピュータにより処理を行うこともできる。
【0064】
以上より
(1)4KBのメモリを使用したとき図14から、テーブル参照8回、排他的論理和8回、ローテーション1回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は2演算で処理が完了する。
(2)4KBのメモリを使用したとき、図15から、テーブル参照8回、排他的論理和10回、ローテーション5回で構成可能であることがわかる。なお、前述したようにローテーションと排他的論理和は並列処理が可能であることを考慮すると、図中の点線部の処理は5演算で処理が完了する。
(3)図15におけるテーブル参照は、実施例1で説明したのと同様の理由によりテーブル参照8回とシフト6回で実現できる。したがって、256Bのメモリを使用したとき、テーブル参照8回、シフト6回、排他的論理和10回、ローテーション5回の演算処理でも実現可能である。
(4)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、
の4種類の高速実装方法が提供できる。
【0065】
【発明の効果】
以上、詳細に説明したように、この発明によれば、S−P構造を用いた置換処理装置において、S関数処理と行列Pで表現される置換(P関数処理)との合成処理を、
【0066】
【数54】
【0067】
(ただし、<<<yは上yバイトのローテーション、S1(・)〜S8(・)のテーブルは32ビット参照テーブルを表す。なお、y<0のときは下|y|バイトのローテーションを表すものとする。)
のように書き直すことが可能となるような構造にすることによって、少なくとも(1)8KBのメモリを使用したときにはテーブル参照8回、排他的論理和8回、ローテーション1回の演算処理、(2)4KBのメモリを使用したときにはテーブル参照8回、排他的論理和10回、ローテーション4回または5回の演算処理、(3)256Bのメモリを使用したときにはテーブル参照8回、排他的論理和25回の演算処理、の3種類の高速実装方法が提供できる。なお、実施例のように、(2)の実装方法のときには、4KBのメモリを使用したテーブル参照の代わりに、256Bのメモリを使用したテーブル参照と6回のシフト演算によっても実現可能であり、このときテーブル参照8回、シフト6回、排他的論理和10回、ローテーション4回または5回の演算処理となる。また、特に{S1(・),S2(・),S3(・),S4(・)}={S5(・),S6(・),S7(・),S8(・)}を満たすのであれば、(1)の実装方法の時にはさらに4KBのメモリ使用量を削減可能であり、使用メモリは4KBとなる(他の演算処理量は変化しない)。これによって、E2暗号で使われていた置換処理よりも高速で、かつ合成処理そのものは同じでありながら、(1)の実装方法はPC向き、(2)は32ビットCPUを備えたハイエンドICカード向き、(3)は8ビットCPUを備えたローエンドICカード向きというように多様な実装環境に応じて最適かつ柔軟な実装が可能となる置換処理装置を提供できる。
【図面の簡単な説明】
【図1】この発明の実施例1における置換処理装置における処理を表す図。
【図2】実施例1における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときの処理を表す図。
【図3】実施例1をコンピュータにより処理する場合の構成を示す図。
【図4】実施例1をコンピュータにより処理する場合の処理手順の例を示す流れ図。
【図5】実施例1における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときのもう1つの処理を表す図。
【図6】実施例1の装置を4KBメモリを用いてコンピュータにより処理をする場合の処理手順の例を示す流れ図。
【図7】この発明の実施例2における置換処理装置における処理を表す図。
【図8】実施例2における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときの処理を表す図。
【図9】実施例2における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときのもう1つの処理を表す図。
【図10】この発明の実施例3における置換処理装置における処理を表す図。
【図11】実施例3における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときの処理を表す図。
【図12】実施例3における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときのもう1つの処理を表す図。
【図13】実施例4における置換処理装置における処理を表す図。
【図14】実施例4における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときの処理を表す図。
【図15】実施例4における置換処理装置中のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における4KBのメモリを使用したときのもう1つの処理を表す図。
【図16】E2暗号の置換処理を表す図。
【図17】E2暗号での第1のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における高速な処理例を表す図。
【図18】E2暗号での第1のS関数処理と行列Pで表現される置換(P関数処理)との合成処理における別の高速な処理例を表す図。
Claims (9)
- 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行う置換処理装置において、
上記非線形変換と上記線形変換の合成処理が
のように表現することが可能であり、
ただし、Sj(・)(j=1,2,…,8)はxi(i=1,2,…,8)により32ビットテーブルを参照してSj(xi)を出力すること、<<<yはy>0の場合、上yバイトローテーション、y<0の場合は下|y|バイトローテーションを表わす。
S1(・),S2(・),…,S8(・)の各参照テーブルと、
上記参照テーブルを上記入力データにより参照する手段と、
上記参照テーブルの参照出力に対し排他的論理和演算を行う演算手段と、
排他的論理和演算に対しローテーションを施すローテーション手段と、
を具備し、
であって、
上記テーブル参照手段はx1,x2,x3,x4,x5,x6,x7,x8によりそれぞれS1(x1),S2(x2),S3(x3),S4(x4),S4(x5),S1(x6),S2(x7),S3(x8)を出力する手段であり、
上記排他的論理和演算手段は、上記S1(x1),S2(x2),S3(x3),S4(x4)の排他的論理和演算を行って結果U1を得る手段と、上記S4(x5),S1(x6),S2(x7),S3(x8)の排他的論理和演算を行って結果U2を得る手段と、上記U1とU2の排他的論理和演算を行って結果U3を得る手段と、上記U3と上記ローテーション手段の出力の排他的論理和演算を行って結果U4を得る手段とよりなり、
上記ローテーション手段は上記U2を下に1バイトローテーションする手段であり、
上記U3,U4を置換処理結果z1′,z2′,…,z8′として出力することを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行う置換処理装置において、
上記非線形変換と上記線形変換の合成処理が
のように表現することが可能であり、
ただし、Sj(・)(j=1,2,…,8)はxi(i=1,2,…,8)により32ビットテーブルを参照してSj(xi)を出力すること、<<<yはy>0の場合、上yバイトローテーション、y<0の場合は下|y|バイトローテーションを表わす。
S1(・),S2(・),…,S8(・)の各参照テーブルと、
上記参照テーブルを上記入力データにより参照する手段と、
上記参照テーブルの参照出力に対し排他的論理和演算を行う演算手段と、
排他的論理和演算に対しローテーションを施すローテーション手段と、
を具備し、
であって、
上記テーブル参照手段はx1,x2,x3,x4,x5,x6,x7,x8によりそれぞれS1(x1),S2(x2),S3(x3),S4(x4),S4(x5),S1(x6),S2(x7),S3(x8)を出力する手段であり、
上記排他的論理和演算手段は、上記S1(x1),S2(x2),S3(x3),S4(x4)の排他的論理和演算を行って結果U1を得る手段と、上記S4(x5),S1(x6),S2(x7),S3(x8)の排他的論理和演算を行って結果U2を得る手段と、上記U1とU2の排他的論理和演算を行って結果U3を得る手段と、上記U3と上記ローテーション手段の出力の排他的論理和演算を行って結果U4を得る手段とよりなり、
上記ローテーション手段は上記U2を上に1バイトローテーションする手段であり、
上記U3,U4を置換処理結果z1′,z2′,…,z8′として出力することを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行う置換処理装置において、
上記非線形変換と上記線形変換の合成処理が
のように表現することが可能であり、
ただし、Sj(・)(j=1,2,…,8)はxi(i=1,2,…,8)により32ビットテーブルを参照してSj(xi)を出力すること、<<<yはy>0の場合、上yバイトローテーション、y<0の場合は下|y|バイトローテーションを表わす。
S1(・),S2(・),…,S8(・)の各参照テーブルと、
上記参照テーブルを上記入力データにより参照する手段と、
上記参照テーブルの参照出力に対し排他的論理和演算を行う演算手段と、
排他的論理和演算に対しローテーションを施すローテーション手段と、
を具備し、
であって、
上記テーブル参照手段はx1,x2,x3,x4,x5,x6,x7,x8によりそれぞれS1(x1),S2(x2),S3(x3),S4(x4),S2(x5),S3(x6),S4(x7),S1(x8)を出力する手段であり、
上記排他的論理和演算手段は、上記S1(x1),S2(x2),S3(x3),S4(x4)の排他的論理和演算を行って結果U1を得る手段と、上記S2(x5),S3(x6),S4(x7),S1(x8)の排他的論理和演算を行って結果U2を得る手段と、上記U1とU2の排他的論理和演算を行って結果U3を得る手段と、上記U3と上記ローテーション手段の出力の排他的論理和演算を行って結果U4を得る手段とよりなり、
上記ローテーション手段は上記U2を下に1バイトローテーションする手段であり、
上記U3,U4を置換処理結果z1′,z2′,…,z8′として出力することを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行って出力データz1′,z2′,…,z8′を得る置換処理装置において、
構成ベクトルが
であり、xにより参照されてS5(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS6(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS7(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS8(x)を出力する32ビットテーブルと、
x1,x2,x3,x4,x5,x6,x7,x8により上記テーブルを参照してS6(x1),S7(x2),S8(x3),S5(x4),S5(x5),S6(x6),S7(x7),S8(x8)を出力するテーブル参照手段と、
上記S6(x1),S7(x2),S8(x3),S5(x4)の排他的論理和演算を行って結果Aを得る手段と、
上記S5(x5),S6(x6),S7(x7),S8(x8)の排他的論理和演算を行って結果Bを得る手段と、
AとBの排他的論理和演算を行ってCを得る手段と、
Aを下に1バイトローテーションする手段と、
そのローテーションの結果とCとの排他的論理和演算を行って結果Dを得る手段と、
Cを上に1バイトローテーションする手段と、
そのローテーションの結果とDとの排他的論理和演算を行って結果Eを得る手段と、
Dを上に2バイトローテーションする手段と、
そのローテーションの結果とEとの排他的論理和演算を行って結果Fを得る手段と、
Eを下に1バイトローテーションを行って結果Gを得る手段と、
を具備し、上記FとGを出力z1′,z2′,…,z8′とすることを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行って出力データz1′,z2′,…,z8′を得る置換処理装置において、
構成ベクトルが
であり、xにより参照されてS5(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS6(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS7(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS8(x)を出力する32ビットテーブルと、
x1,x2,x3,x4,x5,x6,x7,x8により上記テーブルを参照してS8(x1),S5(x2),S6(x3),S7(x4),S5(x5),S6(x6),S7(x7),S8(x8)を出力するテーブル参照手段と、
上記S8(x1),S5(x2),S6(x3),S7(x4)の排他的論理和演算を行なって結果Aを得る手段と、
上記S5(x5),S6(x6),S7(x7),S8(x8)の排他的論理和演算を行って結果Bを得る手段と、
AとBの排他的論理和演算を行ってCを得る手段と、
Aを上に1バイトローテーションする手段と、
そのローテーションの結果とCとの排他的論理和演算を行って結果Dを得る手段と、
Cを下に1バイトローテーションする手段と、
そのローテーションの結果とDとの排他的論理和演算を行って結果Eを得る手段と、
Dを上に2バイトローテーションする手段と、
そのローテーションの結果とEとの排他的論理和演算を行って結果Fを得る手段と、
Eを上に1バイトローテーションを行って結果Gを得る手段と、
を具備し、上記FとGを出力z1′,z2′,…,z8′とすることを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行って出力データz1′,z2′,…,z8′を得る置換処理装置において、
構成ベクトルが
であり、xにより参照されてS5(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS6(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS7(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS8(x)を出力する32ビットテーブルと、
x1,x2,x3,x4,x5,x6,x7,x8により上記テーブルを参照してS5(x1),S6(x2),S7(x3),S8(x4),S5(x5),S6(x6),S7(x7),S8(x8)を出力するテーブル参照手段と、
上記S5(x1),S6(x2),S7(x3),S8(x4)の排他的論理和演算を行って結果Aを得る手段と、
上記S5(x5),S6(x6),S7(x7),S8(x8)の排他的論理和演算を行って結果Bを得る手段と、
AとBの排他的論理和演算を行ってCを得る手段と、
Aを上に1バイトローテーションする手段と、
そのローテーションの結果とCとの排他的論理和演算を行って結果Dを得る手段と、
Cを下に1バイトローテーションする手段と、
そのローテーションの結果とDとの排他的論理和演算を行って結果Eを得る手段と、
Dを上に1バイトローテーションする手段と、
そのローテーションの結果とEとの排他的論理和演算を行って結果Fを得る手段と、
Eを上に1バイトローテーションを行って結果Gを得る手段と、
Fを下に2バイトローテーションしてHを得る手段と、
を具備し、上記HとGを出力z1′,z2′,…,z8′とすることを特徴とする置換処理装置。 - 入力データx1,x2,…,x8に対し、非線形変換と線形変換とを行って出力データz1′,z2′,…,z8′を得る置換処理装置において、
構成ベクトルが
であり、xにより参照されてS5(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS6(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS7(x)を出力する32ビットテーブルと、
構成ベクトルが
であり、xにより参照されてS8(x)を出力する32ビットテーブルと、
x1,x2,x3,x4,x5,x6,x7,x8により上記テーブルを参照してS5(x1),S6(x2),S7(x3),S8(x4),S5(x5),S6(x6),S7(x7),S8(x8)を出力するテーブル参照手段と、
上記S5(x1),S6(x2),S7(x3),S8(x4)の排他的論理和演算を行なって結果Aを得る手段と、
上記S5(x5),S6(x6),S7(x7),S8(x8)の排他的論理和演算を行って結果Bを得る手段と、
AとBの排他的論理和演算を行ってCを得る手段と、
Aを下に1バイトローテーションする手段と、
そのローテーションの結果とCとの排他的論理和演算を行って結果Dを得る手段と、
Cを上に1バイトローテーションする手段と、
そのローテーションの結果とDとの排他的論理和演算を行って結果Eを得る手段と、
Dを下に1バイトローテーションする手段と、
そのローテーションの結果とEとの排他的論理和演算を行って結果Fを得る手段と、
Eを下に1バイトローテーションを行って結果Gを得る手段と、
Fを上に2バイトローテーションして結果Hを得る手段と、
を具備し、上記HとGを出力z1′,z2′,…,z8′とすることを特徴とする置換処理装置。 - 請求項4から7の何れかに記載の置換処理装置おいて、
S5(x)からS8(x)で表されている32ビットテーブルが、xにより参照され、s(x)を出力する8ビットテーブルと、s(x)を1要素とする4要素縦行列を論理シフトするシフト手段との組み合わせにより実現されていることを特徴とする置換処理装置。 - 請求項1から8の何れかに記載の置換処理装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能なプログラム記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000044529A JP3736731B2 (ja) | 2000-02-22 | 2000-02-22 | 置換処理装置およびそのプログラム記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000044529A JP3736731B2 (ja) | 2000-02-22 | 2000-02-22 | 置換処理装置およびそのプログラム記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001236017A JP2001236017A (ja) | 2001-08-31 |
| JP3736731B2 true JP3736731B2 (ja) | 2006-01-18 |
Family
ID=18567268
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000044529A Expired - Lifetime JP3736731B2 (ja) | 2000-02-22 | 2000-02-22 | 置換処理装置およびそのプログラム記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3736731B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4527960B2 (ja) * | 2003-10-22 | 2010-08-18 | 日本電信電話株式会社 | 換字置換装置、換字置換方法、換字置換プログラム及び換字置換記録媒体 |
| WO2007148665A1 (ja) * | 2006-06-23 | 2007-12-27 | Panasonic Corporation | 暗号処理装置、データ変換方法、データ変換プログラム、記録媒体及び集積回路 |
-
2000
- 2000-02-22 JP JP2000044529A patent/JP3736731B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001236017A (ja) | 2001-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| USRE44594E1 (en) | Method and circuit for data encryption/decryption | |
| US20060093136A1 (en) | Implementation of a switch-box using a subfield method | |
| JP2000162965A (ja) | 暗復号装置及び記憶媒体 | |
| US7606368B2 (en) | Method and apparatus for data encryption | |
| JPH06236148A (ja) | Ansi x3.92データ暗号化アルゴリズム標準のパフォーマンスを強化したデータ暗号化アルゴリズムを実行するデータ処理システム | |
| JPH1055135A (ja) | プログラマブルな論理素子/装置を用いた暗号化/復号化装置および方法 | |
| TW200830327A (en) | System and method for encrypting data | |
| WO2021129470A1 (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
| CN116647328B (zh) | 一种新型psp结构的轻量级分组密码实现方法及系统 | |
| JP2000305453A (ja) | 暗号化装置,復号装置,および暗号化・復号装置 | |
| CN108063760B (zh) | 一种分组加密的方法及其系统、分组解密的方法 | |
| US20070064933A1 (en) | Method of symmetric key data encryption | |
| CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
| JP3736731B2 (ja) | 置換処理装置およびそのプログラム記録媒体 | |
| CN112564890B (zh) | 一种加速sm4算法的方法、装置、处理器及电子设备 | |
| JP4479703B2 (ja) | 通信システムと管理装置 | |
| JP4395527B2 (ja) | 情報処理装置 | |
| JP4857230B2 (ja) | 疑似乱数生成装置及びそれを用いた暗号化処理装置 | |
| JP2008205753A (ja) | 信号処理装置 | |
| ES2293665T3 (es) | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. | |
| JP4912797B2 (ja) | 暗号装置及び復号装置及び暗号方法及び復号方法及びプログラム | |
| JP2021047371A (ja) | 情報処理装置、情報処理方法及びプログラム | |
| JP4094758B2 (ja) | デ―タ置換・分割方法および装置 | |
| JP4644053B2 (ja) | 暗号化装置及び方法、復号化装置及び方法 | |
| Farmani et al. | A high performance hardware implementation image encryption with AES algorithm |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A132 Effective date: 20041116 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050114 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050419 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050511 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051004 |
|
| RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20051020 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051020 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 3736731 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091104 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111104 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111104 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121104 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121104 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131104 Year of fee payment: 8 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| EXPY | Cancellation because of completion of term |