特許第6052166号(P6052166)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許6052166暗号化方法、暗号化装置および暗号化プログラム
<>
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000002
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000003
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000004
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000005
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000006
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000007
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000008
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000009
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000010
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000011
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000012
  • 特許6052166-暗号化方法、暗号化装置および暗号化プログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6052166
(24)【登録日】2016年12月9日
(45)【発行日】2016年12月27日
(54)【発明の名称】暗号化方法、暗号化装置および暗号化プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20161219BHJP
   H04L 9/06 20060101ALI20161219BHJP
【FI】
   G09C1/00 610A
   H04L9/00 611Z
【請求項の数】9
【全頁数】21
(21)【出願番号】特願2013-509934(P2013-509934)
(86)(22)【出願日】2012年4月11日
(86)【国際出願番号】JP2012059853
(87)【国際公開番号】WO2012141189
(87)【国際公開日】20121018
【審査請求日】2015年3月5日
(31)【優先権主張番号】特願2011-87088(P2011-87088)
(32)【優先日】2011年4月11日
(33)【優先権主張国】JP
【前置審査】
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(72)【発明者】
【氏名】洲崎 智保
(72)【発明者】
【氏名】角尾 幸保
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2003−241656(JP,A)
【文献】 特表2004−511812(JP,A)
【文献】 国際公開第2009/075337(WO,A1)
【文献】 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名)
G09C 1/00
H04L 9/06
(57)【特許請求の範囲】
【請求項1】
n×ビットのブロックデータを分割して得られた個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,)のデータがお互いに作用するような変換処理を行い個のデータW,W,...,を出力する変換手段と、
前記データW,W,...,を、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,Wを、データWj[1],Wj[2],...,Wj[6]に置き換える転置を、{j[1],j[2],...,j[6]}と表わした場合に、{4,1,2,5,6,3}で表わされる転置を行う暗号化装置。
【請求項2】
n×8ビットのブロックデータを分割して得られた8個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,7)のデータがお互いに作用するような変換処理を行い8個のデータW,W,...,Wを出力する変換手段と、
前記データW,W,...,Wを、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した8系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,、データWj[1],Wj[2],...,Wj[に置き換える転置を、{j[1],j[2],...,j[]}と表わした場合に、{6,1,8,3,4,7,2,5}または{4,1,8,5,6,7,2,3}で表わされる転置を行う暗号化装置。
【請求項3】
n×10ビットのブロックデータを分割して得られた10個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,9)のデータがお互いに作用するような変換処理を行い10個のデータW,W,...,W10を出力する変換手段と、
前記データW,W,...,W10を、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した10系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,10、データWj[1],Wj[2],...,Wj[10に置き換える転置を、{j[1],j[2],...,j[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)
【請求項4】
n×12ビットのブロックデータを分割して得られた12個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,11)のデータがお互いに作用するような変換処理を行い12個のデータW,W,...,W12を出力する変換手段と、
前記データW,W,...,W10を、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した12系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,12、データWj[1],Wj[2],...,Wj[12に置き換える転置を、{j[1],j[2],...,j[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)
【請求項5】
n×14ビットのブロックデータを分割して得られた14個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,13)のデータがお互いに作用するような変換処理を行い14個のデータW,W,...,W14を出力する変換手段と、
前記データW,W,...,W14を、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した14系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,14、データWj[1],Wj[2],...,Wj[14に置き換える転置を、{j[1],j[2],...,j[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}のいずれかで表わされる転置を行う暗号化装置。
【請求項6】
n×16ビットのブロックデータを分割して得られた16個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,15)のデータがお互いに作用するような変換処理を行い16個のデータW,W,...,W16を出力する変換手段と、
前記データW,W,...,W16を、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成した16系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,W16を、データWj[1],Wj[2],...,Wj[16]に置き換える転置を、{j[1],j[2],...,j[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)
【請求項7】
n×kビット(kは6以上16以下の偶数)のブロックデータを分割して得られたk個のnビットのデータについて、
第i系列と第i+1系列(i=1,3,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力する変換手段と、
前記データW,W,...,Wを、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成したk系列データ攪拌手段を、所定ラウンド数分有する暗号化装置であって、
前記転置手段は、
前記データW,W,...,W、データWj[1],Wj[2],...,Wj[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)
【請求項8】
コンピュータが、n×kビット(kは6以上16以下の偶数)のブロックデータを分割して得られたk個のnビット系列データについて、第i系列と第i+1系列(i=1,3,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力するステップと、
前記コンピュータが、前記データW,W,...,Wを、予め定めた規則に基づいて転置するステップと、を1ラウンドとするk系列データ攪拌処理を所定回数実行し、前記n×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)
【請求項9】
n×kビット(kは6以上16以下の偶数)のブロックデータを分割して得られたk個のnビットのデータが入力されるコンピュータに、
前記コンピュータのプロセッサを用いて、前記コンピュータのメモリ上で、
第i系列と第i+1系列(i=1,3,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力する処理と、
前記データW,W,...,Wを、予め定めた規則に基づいて転置する処理と、を1ラウンドとして構成したk系列データ攪拌処理を、所定ラウンド数分実行し、前記n×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)
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願についての記載]
本発明は、日本国特許出願:特願2011−087088号(2011年 4月11日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、暗号化方法、暗号化装置および暗号化プログラムに関し、特に、共通鍵(秘密鍵)を用いてブロック単位の暗号化を行う暗号化方法、暗号化装置および暗号化プログラムに関する。
【背景技術】
【0002】
通信データや蓄積データを秘匿する技術として共通鍵ブロック暗号(以下、単に“ブロック暗号”と称する。)がある。ブロック暗号の基本構造の一つに“Feistel構造”がある。図11は、ブロック長2nビットのFeistel構造の1ラウンド分の構成を表した図である。入力データをnビットデータBとBの2つに分割し、Bと鍵データKとを関数Fで攪拌し、その出力データをデータBに排他的論理和したものがB’となる。また、BはそのままB’となる。このようにして得られたB’とB’が次のラウンドの入力となる。
【0003】
更にFeistel構造の分割数を2以上に拡張した一般化Feistel構造(非特許文献1の中では“Feistel Type Transformation”と呼ばれている。)がある(非特許文献1)。
【0004】
非特許文献1では、Type−1からType−3までの3種類の構造が提案されているが、ここではType−2に限定して説明を行う(以下、特に断りがない限り“一般化Feistel構造”という表記はType−2を指すものとする。)。
【0005】
図12は、入力データをk(2以上の偶数)個に分割(以下、分割した各々を“系列”と呼ぶ。)して処理を行う一般化Feistel構造(以下、“k系列一般化Feistel構造”と記述する。)の1ラウンド分の構成を表した図である。
【0006】
一般化Feistel構造1ラウンド分の処理を非線形変換部20と転置処理部21に分けて考える。非線形変換部20は入力されるk系列のデータのうち、データX(iはk以下の奇数)をそのまま出力すると共に、関数Fで鍵データK(j=(i+1)/2)と攪拌し、データXi+1に排他的論理和して出力する。転置処理部21は系列データを1系列分左巡回シフトする転置処理である。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Y. Zheng, T. Matsumoto, H. Imai, “On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses,” CRYPTO 1989,LNCS vol. 435, pp.461−480, Springer−Verlag, 1998.
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記の非特許文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明によって与えられたものである。ブロック暗号では、入力データ(平文)の各ビットデータが出力データ(暗号文)の全ビットへ影響していることが必要であり、暗号アルゴリズムはビットデータを効率よく拡散させることが望ましい。
【0009】
しかしながら、図12に示したように、一般化Feistel構造は分割された系列データのうち奇数番目の系列データは関数Fを介して偶数系列データに波及するが、偶数系列データは拡散することなく奇数系列へ移動するだけである。このように、ある1ラウンドに注目すると奇数系列と偶数系列で拡散に差が生じている。
【0010】
また、一般化Feistel構造を持つブロック暗号において、分割数kを大きくすると、F関数を小型化できるメリットがある一方で、不能差分攻撃や飽和攻撃の適用可能ラウンド数が大きくなる。このため、対策としてラウンド数を増やさねばならず、結果として処理速度の低下を招くという問題点がある。
【0011】
本発明の目的とするところは、優れた拡散性を持ち、ラウンド数を少なくすることのできる暗号化方法、暗号化装置および暗号化プログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明の第1の視点によれば、コンピュータが、n×kビット(kは6以上の偶数)のブロックデータを分割して得られたk個のnビット系列データについて、第i系列と第i+1系列(i=1,,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力するステップと、前記コンピュータが、前記データW,W,...,Wを、予め定めた規則に基づいて転置するステップと、を1ラウンドとするk系列データ攪拌処理を所定回数実行し、前記n×kビットのデータの暗号文を出力するステップとを含む暗号化方法が提供される。本方法は、データの通信や蓄積の際にデータを秘匿するための暗号化処理を行う暗号化装置という、特定の機械に結びつけられている。
【0013】
本発明の第2の視点によれば、n×kビット(kは6以上の偶数)のブロックデータを分割して得られたk個のnビットのデータについて、第i系列と第i+1系列(i=1,2,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力する変換手段と、前記データW,W,...,Wを、予め定めた規則に基づいて転置する転置手段と、を1ラウンドとして構成したk系列データ攪拌手段を、所定ラウンド数分有する暗号化装置が提供される。
【0014】
本発明の第3の視点によれば、n×kビット(kは6以上の偶数)のブロックデータを分割して得られたk個のnビットのデータが入力されるコンピュータに、前記コンピュータのプロセッサを用いて、前記コンピュータのメモリ上で、第i系列と第i+1系列(i=1,,...,k−1)のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力する処理と、前記データW,W,...,Wを、予め定めた規則に基づいて転置する処理と、を1ラウンドとして構成したk系列データ攪拌処理を、所定ラウンド数分実行し、前記n×kビットのデータの暗号文を出力させる暗号化プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジエントな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0015】
本発明によれば、より少ないラウンド数で、不能差分攻撃や飽和攻撃に対する耐性を確保する構成を得ることが可能となる。
【図面の簡単な説明】
【0016】
図1】本発明の概要を説明するための図である。
図2図1の非線形変換部の詳細構成を示す図である。
図3図1の非線形変換部の別の一例を示す図である。
図4図1の非線形変換部の別の一例を示す図である。
図5】8系列の場合の本発明のデータの拡散の様子を示す図である。
図6】8系列一般化Feistel構造のデータの拡散の様子を示す図である。
図7】本発明の第1の実施形態の通信装置の構成を示す図である。
図8】本発明の第1の実施形態の通信装置の暗号化手段、復号化手段の詳細構成を示す図である。
図9】本発明の第1の実施形態の通信装置の暗号化手段のk系列データ攪拌手段の詳細構成を示す図である。
図10】本発明の第1の実施形態の通信装置の復号化手段のk系列データ攪拌手段の詳細構成を示す図である。
図11】Feistel構造の構成を示す図である。
図12】一般化Feistel構造の構成を示す図である。
【発明を実施するための形態】
【0017】
はじめに、本発明の概要について図面を参照して説明する。以下、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0018】
本発明は、図1に示すように、n×kビット(kは6以上の偶数)のブロックデータを分割して得られたk個のnビット系列データB〜Bについて、第i系列Bと第i+1系列Bi+1のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力する非線形変換手段11と、データW,W,...,Wを、予め定めた規則に基づいて転置する転置処理手段12とを1ラウンドとして構成したk系列データ攪拌手段13を備える構成にて実現できる。
【0019】
具体的には、k個のnビット系列データB〜Bについて、第i系列Bと第i+1系列Bi+1のデータがお互いに作用するような変換処理を行いk個のデータW,W,...,Wを出力するステップと、データW,W,...,Wを、予め定めた規則に基づいて転置するステップとを1ラウンドとするk系列データ攪拌処理が所定回数実行される(但し、最終ラウンドの転置処理は省略される。)。
【0020】
図2は、図1の非線形変換手段11の詳細構成を示す図である。図2の例では、Bと第i+1系列Bi+1のデータの一方Bを、所定の鍵データ(図示省略)と攪拌を行う非線形関数Fに入力して得たデータと他方のデータBi+1との排他的論理和をデータWとし、データWと前記一方のデータBとの排他的論理和をデータWi+1とする変換処理が行われている。k系列の場合、図2の構造がk/2個並列に並んだ構造となる。
【0021】
なお、図1の非線形変換手段11は、図3に示すように、非線形関数Fからの出力と系列データBi+1との排他的論理和したデータWをBへ作用させるときにも非線形関数Fによる攪拌を行う構成とすることもできる。具体的には、図3の例では、データWと系列データBとの排他的論理和を取る前に、データWを、所定の鍵データ(図示省略)と攪拌を行う非線形関数Fに入力し、非線形関数Fからの出力と一方のデータBとの排他的論理和をデータWi+1としている。
【0022】
さらに、図1の非線形変換手段11は、図4に示すように、Lai−Massey構造(Lai−Massey Scheme)を採用した構成とすることもできる。図4の例では、第i系列と第i+1系列のデータB、Bi+1の排他的論理和を非線形関数Fに入力して得たデータと一方のデータBとの排他的論理和をデータWi+1とし、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記他方のデータとの排他的論理和をデータWとしている。
【0023】
上記のような双方向に作用する非線形変換処理に加えて、巡回シフトでなく、系列数に応じて予め定められた転置処理を組み合わせることで、拡散性をさらに向上させることができる。
【0024】
図5は、系列数k=8として、非線形変換処理に上記図4のLai−Massey構造を適用し、データW,W,...,Wを、W,W,W,W,W,W,W,Wとなる転置処理を行った場合のデータ波及の様子を表した図である。図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、K、…、Kを生成し、該拡大鍵K、K、…、Kを暗号化手段71と復号化手段72とに供給する。
【0032】
暗号化手段71は、所定ラウンド数R個分のk系列データ攪拌手段710(kは6以上の偶数)によって構成され、1ブロック分の平文データPと該拡大鍵K、K、…、Kの入力に対し、1ブロック分の暗号文データCを出力する。より具体的には、暗号化手段71は、まずknビットの平文データPをk個のnビットデータに分割し、鍵データKと共にk系列データ攪拌手段710に入力しデータの攪拌を行う。以降、r(2≦r≦R)ラウンド目は(r−1)ラウンドのk系列データ攪拌手段710からの出力と鍵データKを入力としてデータと拡大鍵との攪拌が繰り返される。そして、Rラウンド目のk系列データ攪拌手段710からのk個の出力を連結したknビットのデータが暗号文データCとして出力される。
【0033】
復号化手段72は、所定ラウンド数分のk系列データ攪拌手段720によって構成され、1ブロック分の暗号文データCと該拡大鍵K、K、…、Kの入力に対し、1ブロック分の平文データPを出力する。復号化手段72も同様に、まずknビットの暗号文データPをk個のnビットデータに分割し、鍵データKと共にk系列データ攪拌手段710に入力しデータの攪拌を行う。以降、r(2≦r≦R)ラウンド目は(r−1)ラウンドのk系列データ攪拌手段720からの出力と鍵データKを入力としてデータと拡大鍵との攪拌が繰り返される。そして、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はk/2個に均等に分割され、各々がF関数へ入力される構成となっている。但し、図3の構造の場合、F関数が2つ必要となるため、拡大鍵データKはk/4個に均等分割される。
【0036】
転置処理手段712は、系列数kに応じて、k個の中間データを決められた転置パターンに従って転置を行う。
【0037】
ここで、転置パターンについて詳細に説明する。データWをWj[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,W,...,Wを置換することにより、図5に示したように、短ラウンドで優れた拡散性を発揮する暗復号手段を得ることが可能となる。
【0044】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による暗号化方法参照)
[第2の形態]
第1の形態において、
前記変換処理は、第i系列と第i+1系列のデータの一方を非線形関数に入力して得たデータと他方のデータとの排他的論理和をデータWとし、前記データWと前記一方のデータとの排他的論理和をデータWi+1とする変換処理である暗号化方法。
[第3の形態]
第2の形態において、
前記データWと前記一方のデータとの排他的論理和を取る前に、前記データWを非線形関数に入力し、前記非線形関数からの出力と前記一方のデータとの排他的論理和をデータWi+1とする暗号化方法。
[第4の形態]
第1の形態において、
前記変換処理は、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記一方のデータとの排他的論理和をデータWi+1とし、第i系列と第i+1系列のデータの排他的論理和を非線形関数に入力して得たデータと前記他方のデータとの排他的論理和をデータWとする変換処理である暗号化方法。
[第5の形態]
第1から第4いずれか一の形態において、
前記データW,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[k]に置き換える転置を、{j[1],j[2],...,j[k]}と表わした場合に、k=6のとき{4,1,2,5,6,3}で表わされる転置を行う暗号化方法。
[第6の形態]
第1から第5いずれか一の形態において、
前記データW,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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,W,...,W(但し、k≦16)を、データWj[1],Wj[2],...,Wj[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】
なお、前述の非特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲および図面を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲および図面の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0048】
10 通信装置
11 非線形変換手段
12 転置処理手段
13 k系列データ攪拌手段
20 非線形変換部
21 転置処理部
70 拡大鍵生成手段
71 暗号化手段
72 復号化手段
100 データ圧縮手段
102 符号化手段
104 データ復元手段
710、720 k系列データ攪拌手段
711 非線形変換手段
712 転置処理手段
713 逆転置処理手段
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12