【文献】
Zheng, Y., et al.,On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses,Lecture Notes in Computer Science,ドイツ,Springer-Verlag,1990年,Vol.435,p.461-480
【文献】
宇根正志,太田和夫,共通鍵暗号を取り巻く現状と課題,日本銀行金融研究所ディスカッション・ペーパー・シリーズ(1998年収録分) [online],日本銀行,1998年12月24日,[平成28年1月29日検索],インターネット<URL:http://www.imes.boj.or.jp/jdps98/98-J-27.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
はじめに、本発明の概要について図面を参照して説明する。以下、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0018】
本発明は、
図1に示すように、n×kビット(kは6以上の偶数)のブロックデータを分割して得られたk個のnビット系列データB
1〜B
kについて、第i系列B
iと第i+1系列B
i+1のデータがお互いに作用するような変換処理を行いk個のデータW
1,W
2,...,W
kを出力する非線形変換手段11と、データW
1,W
2,...,W
kを、予め定めた規則に基づいて転置する転置処理手段12とを1ラウンドとして構成したk系列データ攪拌手段13を備える構成にて実現できる。
【0019】
具体的には、k個のnビット系列データB
1〜B
kについて、第i系列B
iと第i+1系列B
i+1のデータがお互いに作用するような変換処理を行いk個のデータW
1,W
2,...,W
kを出力するステップと、データW
1,W
2,...,W
kを、予め定めた規則に基づいて転置するステップとを1ラウンドとするk系列データ攪拌処理が所定回数実行される(但し、最終ラウンドの転置処理は省略される。)。
【0020】
図2は、
図1の非線形変換手段11の詳細構成を示す図である。
図2の例では、B
iと第i+1系列B
i+1のデータの一方B
iを、所定の鍵データ(図示省略)と攪拌を行う非線形関数Fに入力して得たデータと他方のデータB
i+1との排他的論理和をデータW
iとし、データW
iと前記一方のデータB
iとの排他的論理和をデータW
i+1とする変換処理が行われている。k系列の場合、
図2の構造がk/2個並列に並んだ構造となる。
【0021】
なお、
図1の非線形変換手段11は、
図3に示すように、非線形関数Fからの出力と系列データB
i+1との排他的論理和したデータW
iをB
iへ作用させるときにも非線形関数Fによる攪拌を行う構成とすることもできる。具体的には、
図3の例では、データW
iと系列データB
iとの排他的論理和を取る前に、データW
iを、所定の鍵データ(図示省略)と攪拌を行う非線形関数Fに入力し、非線形関数Fからの出力と一方のデータB
iとの排他的論理和をデータW
i+1としている。
【0022】
さらに、
図1の非線形変換手段11は、
図4に示すように、Lai−Massey構造(Lai−Massey Scheme)を採用した構成とすることもできる。
図4の例では、第i系列と第i+1系列のデータB
i、B
i+1の排他的論理和を非線形関数Fに入力して得たデータと一方のデータB
iとの排他的論理和をデータW
i+1とし、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記他方のデータとの排他的論理和をデータW
iとしている。
【0023】
上記のような双方向に作用する非線形変換処理に加えて、巡回シフトでなく、系列数に応じて予め定められた転置処理を組み合わせることで、拡散性をさらに向上させることができる。
【0024】
図5は、系列数k=8として、非線形変換処理に上記
図4のLai−Massey構造を適用し、データW
1,W
2,...,W
8を、W
6,W
1,W
8,W
3,W
4,W
2,W
7,W
5となる転置処理を行った場合のデータ波及の様子を表した図である。
図5の太い破線で表わされたように、系列8のデータは、3ラウンドで全系列に波及していることがわかる。なお、
図5の例では、
図4のLai−Massey構造を用いているが、
図2〜
図4を対比すれば明らかなとおり、
図2、
図3の非線形変換手段11を用いた場合も同様の結果を得ることができる。
【0025】
図6は、8系列一般化Feistel構造の拡散の様子を表した図である。系列1のデータが全系列に波及するまでのラウンド数は7ラウンドである。従って、本発明は、必要ラウンド数を1/2以下に削減できている。
【0026】
なお、本発明によれば、上記のような転置処理はビットデータの入れ替えだけなのでハードウェア実装/ソフトウェア実装のいずれの方式であっても転置パターンが変わることによる実装コストの増加はないという利点も得られている。
【0027】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。
図7は、本発明の第1の実施形態の通信装置の構成を示す図である。
図7を参照すると、データの圧縮を行うデータ圧縮手段100と、圧縮されたデータを暗号化する暗号化手段71と、符号化処理を行う符号化手段102と、符号化手段102から出力されたデータを復号する復号化手段72と、データの伸長処理を行うデータ復元手段104とを備えた通信装置10が示されている。
【0028】
このような通信装置10は、データを送信する場合、データ圧縮手段100にてデータの圧縮を行った後、暗号化手段71にて暗号化し、符号化手段102にてエラー訂正用の符号化を行ってから、暗号化送信データを送信する。
【0029】
また、データを受信する場合、上記通信装置10は、符号化手段102にてエラー訂正を行った後、復号化手段72にて復号し、データ復元手段104にて圧縮を解き復元データを得る。
【0030】
上記のような通信装置10の具体例としては、音声通信端末やデータ通信装置などの通信データを秘匿する必要のある種々の機器を挙げることができる。また、
図7の例では、暗号化手段71と復号化手段72の双方を備える構成を示しているが、送信、受信のいずれか一方だけを行うのであれば、暗号化手段71と復号化手段72とのを少なくとも一方を備えていれば良い。
【0031】
図8は、上記した暗号化手段および復号化手段の詳細構成を示す図である。拡大鍵生成手段70は、鍵データKから複数の拡大鍵K
1、K
2、…、K
Rを生成し、該拡大鍵K
1、K
2、…、K
Rを暗号化手段71と復号化手段72とに供給する。
【0032】
暗号化手段71は、所定ラウンド数R個分のk系列データ攪拌手段710(kは6以上の偶数)によって構成され、1ブロック分の平文データPと該拡大鍵K
1、K
2、…、K
Rの入力に対し、1ブロック分の暗号文データCを出力する。より具体的には、暗号化手段71は、まずknビットの平文データPをk個のnビットデータに分割し、鍵データK
1と共にk系列データ攪拌手段710に入力しデータの攪拌を行う。以降、r(2≦r≦R)ラウンド目は(r−1)ラウンドのk系列データ攪拌手段710からの出力と鍵データK
rを入力としてデータと拡大鍵との攪拌が繰り返される。そして、Rラウンド目のk系列データ攪拌手段710からのk個の出力を連結したknビットのデータが暗号文データCとして出力される。
【0033】
復号化手段72は、所定ラウンド数分のk系列データ攪拌手段720によって構成され、1ブロック分の暗号文データCと該拡大鍵K
1、K
2、…、K
Rの入力に対し、1ブロック分の平文データPを出力する。復号化手段72も同様に、まずknビットの暗号文データPをk個のnビットデータに分割し、鍵データK
1と共にk系列データ攪拌手段710に入力しデータの攪拌を行う。以降、r(2≦r≦R)ラウンド目は(r−1)ラウンドのk系列データ攪拌手段720からの出力と鍵データK
rを入力としてデータと拡大鍵との攪拌が繰り返される。そして、Rラウンド目のk系列データ攪拌手段720からのk個の出力を連結したknビットのデータが平文データPとして出力される。なお、復号化手段72では、拡大鍵の使用順序は暗号化手段71の逆順になる(
図8の鍵データの添え字参照)。
【0034】
図9は、暗号化手段71のk系列データ攪拌手段710の詳細構成を示す図である。
図9を参照すると、k系列データ攪拌手段710は、非線形変換手段711と転置処理手段712とで構成される。但し、第Rラウンド目のk系列データ攪拌手段710は、非線形変換手段711のみで構成される。
【0035】
非線形変換手段711は、
図2〜
図4に示したような双方向へデータが作用する構造をk/2個並べた構成となっている。また、
図9の例では、拡大鍵データK
iはk/2個に均等に分割され、各々がF関数へ入力される構成となっている。但し、
図3の構造の場合、F関数が2つ必要となるため、拡大鍵データK
iはk/4個に均等分割される。
【0036】
転置処理手段712は、系列数kに応じて、k個の中間データを決められた転置パターンに従って転置を行う。
【0037】
ここで、転置パターンについて詳細に説明する。データW
iをW
j[i]に転置するとき、この転置を{j[1],j[2],...,j[k]}と表現する。転置パターンとしては、系列数k毎に、以下のような転置パターンを採用することができる。
【0038】
6系列のとき(k=6)
{4,1,2,5,6,3}
8系列のとき(k=8)
{6,1,8,3,4,7,2,5}
{4,1,8,5,6,7,2,3}
10系列のとき(k=10)
{4,1,8,3,10,5,6,9,2,7}
{4,1,6,3,10,7,2,9,8,5}
{4,1,6,3,10,7,8,9,2,5}
{6,1,8,3,4,7,2,9,10,5}
{6,1,8,3,10,7,2,9,4,5}
{6,1,8,3,10,7,4,9,2,5}
{4,1,8,5,2,3,6,9,10,7}
{4,1,8,5,2,7,6,9,10,3}
{4,1,8,5,10,7,6,9,2,3}
12系列のとき(k=12)
{8,1,10,3,12,5,4,9,6,11,2,7}
{6,1,10,3,12,7,2,5,8,11,4,9}
{6,1,10,3,12,7,4,5,8,11,2,9}
{6,1,8,3,4,7,12,9,10,11,2,5}
{6,1,10,3,4,7,12,9,2,11,8,5}
{6,1,10,3,12,7,2,9,8,11,4,5}
{6,1,10,3,12,7,4,9,8,11,2,5}
{4,1,8,5,2,3,12,9,6,11,10,7}
{4,1,8,5,2,3,12,9,10,11,6,7}
{4,1,12,5,10,7,6,9,8,11,2,3}
{6,3,10,1,4,7,12,5,8,11,2,9}
{6,3,10,1,12,7,4,5,8,11,2,9}
{6,3,10,1,12,7,2,9,8,11,4,5}
{6,3,10,1,12,7,4,9,8,11,2,5}
{6,3,2,5,8,1,12,9,4,11,10,7}
14系列のとき(k=14)
{4,1,10,5,14,7,6,3,2,11,12,13,8,9}
{4,1,10,5,6,7,2,9,14,11,8,13,12,3}
16系列のとき(k=16)
{10,1,14,3,12,7,16,5,8,11,4,13,6,15,2,9}
{6,1,8,3,12,7,16,9,2,5,4,13,10,15,14,11}
{6,1,12,3,16,7,4,9,2,5,10,13,8,15,14,11}
{6,1,12,3,16,7,14,9,2,5,10,13,8,15,4,11}
{6,1,8,3,12,7,16,9,14,11,4,13,10,15,2,5}
{6,1,10,3,14,7,4,9,16,11,8,13,12,15,2,5}
{6,1,10,3,14,7,12,9,16,11,8,13,4,15,2,5}
{8,1,10,5,14,3,6,9,16,11,12,13,4,15,2,7}
{8,1,10,5,16,3,6,9,14,11,12,13,4,15,2,7}
{8,1,10,5,16,3,14,9,6,11,12,13,4,15,2,7}
{4,1,10,5,16,7,6,3,14,11,12,13,8,15,2,9}
{10,1,2,5,12,7,6,3,8,11,16,13,14,15,4,9}
{4,1,10,5,16,7,6,9,14,11,12,13,8,15,2,3}
【0039】
図10は、復号化手段72のk系列データ攪拌手段720の詳細構成を示す図である。
図10を参照すると、k系列データ攪拌手段720は、非線形変換手段711と逆転置処理手段713とで構成される。但し、第Rラウンド目のk系列データ攪拌手段710は、非線形変換手段711のみで構成される。
【0040】
非線形変換手段711は、暗号化手段71と同様に
図2〜
図4に示したような双方向へデータが作用する構造をk/2個並べた構成となっている。
【0041】
逆転置処理手段713は、暗号化手段71の転置処理手段712の逆転置を行う。例えば、暗号化手段71の転置処理手段712が系列iのデータを系列jに転置するならば、逆転置処理手段713は、系列jのデータを系列iに転置する。
【0042】
なお、
図8〜10に示した拡大鍵生成手段70、暗号化手段71、復号化手段72、およびその内部の処理手段は、通信装置10を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することができる。もちろん、通信装置10に搭載されたLSI(Large Scale Integration)などのハードウェアなどで実現することも可能である。
【0043】
以上のように、第i系列と第i+1系列のデータがお互いに作用するような変換処理を行った後、データW
1,W
2,...,W
kを置換することにより、
図5に示したように、短ラウンドで優れた拡散性を発揮する暗復号手段を得ることが可能となる。
【0044】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による暗号化方法参照)
[第2の形態]
第1の形態において、
前記変換処理は、第i系列と第i+1系列のデータの一方を非線形関数に入力して得たデータと他方のデータとの排他的論理和をデータW
iとし、前記データW
iと前記一方のデータとの排他的論理和をデータW
i+1とする変換処理である暗号化方法。
[第3の形態]
第2の形態において、
前記データW
iと前記一方のデータとの排他的論理和を取る前に、前記データW
iを非線形関数に入力し、前記非線形関数からの出力と前記一方のデータとの排他的論理和をデータW
i+1とする暗号化方法。
[第4の形態]
第1の形態において、
前記変換処理は、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記一方のデータとの排他的論理和をデータW
i+1とし、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記他方のデータとの排他的論理和をデータW
iとする変換処理である暗号化方法。
[第5の形態]
第1から第4いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=6のとき{4,1,2,5,6,3}で表わされる転置を行う暗号化方法。
[第6の形態]
第1から第5いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=8のとき{6,1,8,3,4,7,2,5}または{4,1,8,5,6,7,2,3}で表わされる転置を行う暗号化方法。
[第7の形態]
第1から第6いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=10のとき次式(1)のいずれかで表わされる転置を行う暗号化方法。
{4,1,8,3,10,5,6,9,2,7}
{4,1,6,3,10,7,2,9,8,5}
{4,1,6,3,10,7,8,9,2,5}
{6,1,8,3,4,7,2,9,10,5}
{6,1,8,3,10,7,2,9,4,5}
{6,1,8,3,10,7,4,9,2,5}
{4,1,8,5,2,3,6,9,10,7}
{4,1,8,5,2,7,6,9,10,3}
{4,1,8,5,10,7,6,9,2,3}・・・(1)
[第8の形態]
第1から第7いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=12のとき次式(2)のいずれかで表わされる転置を行う暗号化方法。
{8,1,10,3,12,5,4,9,6,11,2,7}
{6,1,10,3,12,7,2,5,8,11,4,9}
{6,1,10,3,12,7,4,5,8,11,2,9}
{6,1,8,3,4,7,12,9,10,11,2,5}
{6,1,10,3,4,7,12,9,2,11,8,5}
{6,1,10,3,12,7,2,9,8,11,4,5}
{6,1,10,3,12,7,4,9,8,11,2,5}
{4,1,8,5,2,3,12,9,6,11,10,7}
{4,1,8,5,2,3,12,9,10,11,6,7}
{4,1,12,5,10,7,6,9,8,11,2,3}
{6,3,10,1,4,7,12,5,8,11,2,9}
{6,3,10,1,12,7,4,5,8,11,2,9}
{6,3,10,1,12,7,2,9,8,11,4,5}
{6,3,10,1,12,7,4,9,8,11,2,5}
{6,3,2,5,8,1,12,9,4,11,10,7}・・・(2)
[第9の形態]
第1から第8いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=14のとき{4,1,10,5,14,7,6,3,2,11,12,13,8,9}または{4,1,10,5,6,7,2,9,14,11,8,13,12,3}のいずれかで表わされる転置を行う暗号化方法。
[第10の形態]
第1から第9いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=16のとき次式(3)のいずれかで表わされる転置を行う暗号化方法。
{10,1,14,3,12,7,16,5,8,11,4,13,6,15,2,9}
{6,1,8,3,12,7,16,9,2,5,4,13,10,15,14,11}
{6,1,12,3,16,7,4,9,2,5,10,13,8,15,14,11}
{6,1,12,3,16,7,14,9,2,5,10,13,8,15,4,11}
{6,1,8,3,12,7,16,9,14,11,4,13,10,15,2,5}
{6,1,10,3,14,7,4,9,16,11,8,13,12,15,2,5}
{6,1,10,3,14,7,12,9,16,11,8,13,4,15,2,5}
{8,1,10,5,14,3,6,9,16,11,12,13,4,15,2,7}
{8,1,10,5,16,3,6,9,14,11,12,13,4,15,2,7}
{8,1,10,5,16,3,14,9,6,11,12,13,4,15,2,7}
{4,1,10,5,16,7,6,3,14,11,12,13,8,15,2,9}
{10,1,2,5,12,7,6,3,8,11,16,13,14,15,4,9}
{4,1,10,5,16,7,6,9,14,11,12,13,8,15,2,3}・・・(3)
[第11の形態]
第1から第10いずれか一の形態において、
前記データW
1,W
2,...,W
k(但し、k≦16)を、データW
j[1],W
j[2],...,W
j[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、系列数kの値に応じて次式(4)で表わされる転置を行う暗号化方法。
k=6のとき
{4,1,2,5,6,3}
k=8のとき
{6,1,8,3,4,7,2,5}
{4,1,8,5,6,7,2,3}
k=10のとき
{4,1,8,3,10,5,6,9,2,7}
{4,1,6,3,10,7,2,9,8,5}
{4,1,6,3,10,7,8,9,2,5}
{6,1,8,3,4,7,2,9,10,5}
{6,1,8,3,10,7,2,9,4,5}
{6,1,8,3,10,7,4,9,2,5}
{4,1,8,5,2,3,6,9,10,7}
{4,1,8,5,2,7,6,9,10,3}
{4,1,8,5,10,7,6,9,2,3}
k=12のとき
{8,1,10,3,12,5,4,9,6,11,2,7}
{6,1,10,3,12,7,2,5,8,11,4,9}
{6,1,10,3,12,7,4,5,8,11,2,9}
{6,1,8,3,4,7,12,9,10,11,2,5}
{6,1,10,3,4,7,12,9,2,11,8,5}
{6,1,10,3,12,7,2,9,8,11,4,5}
{6,1,10,3,12,7,4,9,8,11,2,5}
{4,1,8,5,2,3,12,9,6,11,10,7}
{4,1,8,5,2,3,12,9,10,11,6,7}
{4,1,12,5,10,7,6,9,8,11,2,3}
{6,3,10,1,4,7,12,5,8,11,2,9}
{6,3,10,1,12,7,4,5,8,11,2,9}
{6,3,10,1,12,7,2,9,8,11,4,5}
{6,3,10,1,12,7,4,9,8,11,2,5}
{6,3,2,5,8,1,12,9,4,11,10,7}
k=14のとき
{4,1,10,5,14,7,6,3,2,11,12,13,8,9}
{4,1,10,5,6,7,2,9,14,11,8,13,12,3}
k=16のとき
{10,1,14,3,12,7,16,5,8,11,4,13,6,15,2,9}
{6,1,8,3,12,7,16,9,2,5,4,13,10,15,14,11}
{6,1,12,3,16,7,4,9,2,5,10,13,8,15,14,11}
{6,1,12,3,16,7,14,9,2,5,10,13,8,15,4,11}
{6,1,8,3,12,7,16,9,14,11,4,13,10,15,2,5}
{6,1,10,3,14,7,4,9,16,11,8,13,12,15,2,5}
{6,1,10,3,14,7,12,9,16,11,8,13,4,15,2,5}
{8,1,10,5,14,3,6,9,16,11,12,13,4,15,2,7}
{8,1,10,5,16,3,6,9,14,11,12,13,4,15,2,7}
{8,1,10,5,16,3,14,9,6,11,12,13,4,15,2,7}
{4,1,10,5,16,7,6,3,14,11,12,13,8,15,2,9}
{10,1,2,5,12,7,6,3,8,11,16,13,14,15,4,9}
{4,1,10,5,16,7,6,9,14,11,12,13,8,15,2,3}
・・・(4)
[第12の形態]
(上記第2の視点による暗号化装置参照)
[第13の形態]
(上記第3の視点によるプログラム参照)
なお、上記した第12、第13の形態は、上記した第1の形態と同様に、第2〜第11の形態に展開することができる。
【0045】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態では、
図5を示して系列数k=8である場合のデータ波及の様子を説明したが、上記例示した転置パターンを用いることにより、系列数k=6〜16の範囲で最適な拡散性を得ることが可能となっている。
【0046】
また、実行するラウンド数、データの分割数、関数F、非線形変換の方式等は、本発明を適用する機器の性能、暗号に求められるセキュリティ強度等の種々の要素に基づいて変更することが可能である。
【0047】
なお、前述の非特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲および図面を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲および図面の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。