WO2011052587A1 - ブロック暗号装置、ブロック暗号化方法およびプログラム - Google Patents

ブロック暗号装置、ブロック暗号化方法およびプログラム Download PDF

Info

Publication number
WO2011052587A1
WO2011052587A1 PCT/JP2010/068965 JP2010068965W WO2011052587A1 WO 2011052587 A1 WO2011052587 A1 WO 2011052587A1 JP 2010068965 W JP2010068965 W JP 2010068965W WO 2011052587 A1 WO2011052587 A1 WO 2011052587A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
node
mod
replacement
color
Prior art date
Application number
PCT/JP2010/068965
Other languages
English (en)
French (fr)
Inventor
一彦 峯松
Original Assignee
日本電気株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US13/504,389 priority Critical patent/US8891758B2/en
Priority to JP2011538431A priority patent/JP5488608B2/ja
Priority to CN201080048501.7A priority patent/CN102598574B/zh
Publication of WO2011052587A1 publication Critical patent/WO2011052587A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI

Definitions

  • the present invention is based on the priority claim of Japanese Patent Application No. 2009-246307 (filed on Oct. 27, 2009), the entire contents of which are incorporated herein by reference. Shall.
  • the present invention relates to a block encryption device, a block encryption method, and a program, and more particularly, to a block encryption device, a block encryption method, and a program using Feistel substitution.
  • Block cipher is a kind of common key cipher, and is a technology that encrypts plain text of a certain block size using a key.
  • a typical configuration method of the block cipher there is a method using Feistel substitution.
  • Feistel permutation one block is divided into two unit blocks A and B, one unit block A is input to a non-linear function with a key called a round function, and the output is exclusive ORed to the other unit block B. After that, the unit block is swapped and output. Specifically, (B, B + F (A)) is output for the round function F and the input (A, B). This process is repeated for a predetermined number of rounds to generate a ciphertext.
  • a method is also known in which the above-described Feistel substitution is generalized, and one block is divided into two or more, and the Feistel substitution is applied to every two unit blocks. This is also called a generalized Feistel network (GFN). It is.
  • GPN generalized Feistel network
  • one block is divided into k unit blocks for an even number k. This k is called the number of divisions.
  • k unit blocks obtained by dividing one block are (m [0], m [1],..., M [k ⁇ 1])
  • one round of GFN is performed using BlockPerm (m [0], F (m [0]) + m [1], m [2], F (m [2]) + m [3],..., F (m [k ⁇ 2]), F (m [K-2]) + m [k-1]).
  • F is a round function
  • BlockPerm is a replacement for replacing the positions of k unit blocks.
  • the target block cipher is an R round GFN with k divisions and n bits per unit block
  • the whole block cipher is kn bits when all Rk / 2 round functions are regarded as independent pseudo-random functions.
  • the pseudo-random substitution and the strong pseudo-random substitution are evaluated.
  • the pseudo-random function F is a function that outputs a pseudo-random number F (x) (a sequence that is difficult to discriminate from a true random number) from an arbitrary input x
  • the pseudo-random replacement E is duplicated from an arbitrary plain text x
  • strong pseudorandom substitution E which outputs pseudorandom number E (x) without a ciphertext, E satisfies the conditions of pseudorandom substitution, and reverse substitution D of E can also be obtained from any ciphertext y
  • a pseudo-random number D (y) having no overlap is output as plain text.
  • Strong pseudo-random replacement means a block cipher having the strongest security that can be actually expected.
  • BlockPerm is a cyclic substitution
  • k + 1 round GFN is pseudo-random substitution
  • 2k round GFN is strong pseudo-random substitution.
  • round functions used in actual block ciphers are generally weaker than pseudo-random functions, the number of rounds is set to some extent than the minimum number of rounds required for pseudo-randomness, and a margin for security is secured. .
  • the pseudo-randomness and the strong pseudo-randomness are satisfied with a small number of rounds, the number of rounds necessary to secure a certain level of safety margin can be reduced, and the overall calculation amount can be reduced.
  • Substitution-Permutation network type (SPN type) block ciphers instead of Feistel type, for kn-bit block inputs (m [0], m [1],..., M [k ⁇ 1])
  • SPN type Substitution-Permutation network type
  • S (m [0]), S (m [1]),..., S (m [k ⁇ 1]) is performed in one round using the keyed nonlinear permutation S.
  • Mix is a kn-bit linear transformation, but since there is no influence between different blocks when Mix is replaced by replacement in units of n-bit blocks, it is not safe in any case.
  • Mix must be a permutation involving linear operations between blocks.
  • Non-Patent Documents 1 to 3 The entire disclosure of Non-Patent Documents 1 to 3 is incorporated herein by reference. The following is an analysis of the related art according to the present invention.
  • SAFER of Non-Patent Document 3
  • the Armenian Shuffle is found in an exploratory manner based on the graph as follows.
  • the result of replacing (m [0], m [1],..., M [k ⁇ 1]) with the replacement BlockPerm is expressed as (c [0], c [1],..., C [k ⁇ 1]).
  • BlockPerm has an input / output order of 2, that is, the number of branches entering any node is two, and the number of branches exiting from any node is also two. It can be uniquely expressed by a directed graph that is a book and four colors on the branches of the graph.
  • “SAFER” Armenian Shuffle of Non-Patent Document 3 is obtained by making a graph obtained by slightly modifying the binary de Bruijn graph B (3) of order 3 into a skeleton, and performing appropriate Type-2 branch coloring on this graph. Is a substitution.
  • the de Bruijn graph B (d) is defined.
  • 2 (d) is a directed graph node number 2 d, incoming outdegree is the number of symbols and also 2.
  • the lower d-1 bit value of a certain d bit value x is LS (x) and the connection between the bit sequences is represented by
  • the two branches coming out from the node x in the graph B (d) are represented by the node LS.
  • 1 are entered.
  • the present invention has been made under the above analysis, and is a block cipher apparatus configured to reduce the number of rounds required for pseudo-randomness and strong pseudo-randomness in a block cipher based on a generalized Feistel network.
  • An object of the present invention is to provide a block encryption method and program.
  • the two blocks are combined into a Feistel replacement.
  • a node u (u 1 , u) represented by a t-bit sequence of a deBruijn graph having a Feistel permutation part for R rounds to be applied and 2 t (where t> 2) half of the division number k.
  • the two blocks are paired to perform Feistel substitution.
  • Feistel substitution is performed on a set of two blocks using a process of dividing input data into k blocks and an encryption key generated for each round.
  • a process for performing Feistel permutation for R rounds, and a node u (u 1 , u 1 , represented by a t-bit sequence of a deBruijn graph having 2 t (where t> 2) half of the division number k.
  • a block cipher using a generalized Feistel network that can achieve pseudo-randomness and strong pseudo-randomness with a smaller number of rounds can be obtained.
  • the reason is that, as is clear from the binary deBruijn graph, the sufficient distance (sufficient distance; SD) when the block replacement of the present invention is expressed by a graph colored in two colors is much larger than that of the cyclic replacement. May be smaller.
  • FIG. 8 is a diagram illustrating a list representation corresponding to a diagram [CdB0] representing block replacement (when the number of divisions is 8) according to the first embodiment of the present invention (thick line is blue (second color), thin line is Corresponds to red (first color).) It is a flowchart [Flow1] which shows operation
  • FIG. 8 is a graph [CdB1] representing block replacement (when the number of divisions is 16) according to the first embodiment of the present invention (the thick line corresponds to blue (second color) and the thin line corresponds to red (first color)).
  • FIG. 9 is a graph [CdB2] representing block replacement (in the case of the number of divisions of 32) according to the first embodiment of the present invention (the thick line corresponds to blue (second color) and the thin line corresponds to red (first color)).
  • FIG. 5 is a diagram [Perm1] representing block replacement (in the case of 16 divisions) corresponding to the graph of FIG. 4 [CdB1].
  • FIG. 9 is a graph [SS1] representing block replacement (in the case of the number of divisions of 16) according to the second embodiment of the present invention (the thick line corresponds to blue (second color) and the thin line corresponds to red (first color)).
  • the block cipher apparatus uses the input unit that divides input data into k blocks and the encryption key generated for each round, and performs Feistel substitution with the two blocks as a set.
  • a node u (u 1 , u 2 , represented by a t-bit sequence of a deBruijn graph having a Feistel permutation part for rounds and a half of the division number k and 2 t (where t> 2) nodes.
  • Y (y [0], y [1],... Output by Feistel replacement. , Y [k ⁇ 1])
  • y [i] z [2i + 1 mod k]
  • i mod 4 3
  • y [i] z [2i-2 mod k]
  • y [i] z [2i + 3 mod k]
  • FIG. 1 is a diagram showing a configuration of the first exemplary embodiment of the present invention.
  • FIG. 2 [Block 1] is a diagram representing the configuration of the first exemplary embodiment of the present invention by processing blocks.
  • FIG. 2 a block including an input unit 100, a key expansion unit 101, a Feistel replacement unit 102 for R rounds, a block replacement unit 103 for R ⁇ 1, and an output unit 104.
  • a cryptographic device 10 is shown.
  • the block encryption device 10 can be realized by various information processing devices including a CPU, a memory, a disk, and the like.
  • the above-described units of the block cipher apparatus 10 can be realized by storing a program on a disk and operating the program on the CPU.
  • the block cipher division number k is assumed to be 2 t + 1 (where t is a positive number of 2 or more).
  • the round number is R.
  • the input unit 100 is a means for inputting the target plaintext M and the secret key SK.
  • the input unit 100 can be realized by a device for inputting data from the outside or a character input device such as a keyboard.
  • the key expansion unit 101 is a means for deriving a key from the secret key SK to the round function for R rounds. Any function that has a sufficient output width as a function with the secret key SK as an input may be used.
  • F is an n-bit input / output round function
  • the key is derived by the key expansion unit 101.
  • the key of each round function may be different depending on the index (0, 2,..., K-2) of the even-numbered block to be processed, or may be the same.
  • each node t bit sequence (00..0,00..1, ..., 11..1) shall be represented by.
  • the colors are red (thin line; first color) and blue (thick line; second color), and when expressed in binary, they correspond to 0 and 1, respectively.
  • 0 with 0 added from the right to the n ⁇ 1 bit sequence LS (u) from the top of u is assigned the branch color.
  • the branch color is colored blue (thick line, 1 in binary expression).
  • coloring is performed by inverting the coloring rule.
  • This coloring method is a type two-branch coloring with respect to the binary deBruijn graph B (t) and has symmetry.
  • a red branch (thin line) from a certain node m to a certain node n is replaced from an even block y [2m] to an odd block z [2n + 1].
  • the blue block from the node m ′ to the node n ′ is associated with the replacement from the odd block y [2m ′ + 1] to the even block z [2n ′], so that the replacement BlockPerm is uniquely determined.
  • the block replacement in [CdB0] in FIG. 3 corresponds to the block replacement in the block replacement unit 103 in FIG. 1 and can be represented by a list ⁇ 1, 2, 7, 4, 3, 0, 5, 6 ⁇ .
  • y [i] z [2i + 1 mod k]
  • i mod 4 2
  • y [i] z [2i + 3 mod k]
  • i mod 4 3
  • y [i] z [2i-2 mod k]
  • y [i] z [2i + 3 mod k]
  • i mod 4 2, y [
  • Each process in the block cipher apparatus described above can be realized by a program executed by a computer constituting the block cipher apparatus.
  • FIG. 4 is a flowchart showing the operation of the first exemplary embodiment of the present invention.
  • step A1 in FIG. 4 when plaintext M and a secret key SK are input to the input unit 100 (step A1 in FIG. 4), the key expansion unit 101 uses the secret key SK for R rounds. An expanded key is generated (step A2 in FIG. 4).
  • an intermediate sentence Y (y [0], y [1],..., Y [k ⁇ 1]) (step A4 in FIG. 4).
  • Step A5 J is further incremented (increased by 1), and then the round input sentence X is updated to Z (Step A6 in FIG. 4).
  • the output unit 104 outputs the obtained intermediate text Y as a cipher text (step A7 in FIG. 4).
  • the initial value of the round input sentence X is set to the plaintext M
  • the Feistel replacement unit 102 generates the intermediate sentence Y from the round input sentence X
  • the block replacement unit 103 generates the intermediate sentence Y.
  • This process is repeated R rounds to obtain a ciphertext.
  • the block replacement unit 103 in the last R round is omitted because it does not contribute to safety. Therefore, the Feistel replacement unit 102 executes the processing a total of R times, and the block replacement unit 103 executes the processing a total of R ⁇ 1 times.
  • block replacement corresponding to the graphs of FIGS. 5 and 6 can be expressed as a list as follows.
  • FIG. 7 [Perm1] is a diagram showing block replacement (when the number of divisions is 16) corresponding to the graph of FIG. 5 [CdB1].
  • the Feistel replacement unit 102 and the block replacement unit 103 in FIG. 1 are those shown in FIG. 7 [Perm1], respectively.
  • the calculation amount of one round is substantially unchanged, and the pseudo-randomness is obtained. It is possible to reduce the minimum number of rounds required for strong pseudorandomness.
  • the sufficient distance (sufficient distance, SD) when the block replacement is expressed in a graph with branches colored in blue (thick line) and red (thin line) is much larger than the sufficient distance (SD) in the case of cyclic replacement. Derived from becoming smaller.
  • the sufficient distance (SD) is N.
  • the red branch is not used continuously, that is, the movement is performed by the red branch.
  • a blue branch is always used, it means that a path of length N exists between any two nodes.
  • the sufficient distance (SD) is proportional to the number of rounds required for pseudo-randomness. Specifically, when the sufficient distance is N, the number of rounds is N + 2 and the pseudo-randomness is guaranteed. Further, when the sufficient distance of the reverse permutation used on the decoding side is N, 2N + 2 ensures strong pseudorandomness.
  • the sufficient distance is equal to twice the number of nodes, that is, the number of divisions k.
  • k 32 block replacement based on the binary de Bruijn graph B (4) shown in FIG. 6 achieves a sufficient distance 8
  • non-patent document 3 also shows a replacement using a binary de Bruijn graph
  • the graph disclosed in the same document is not a replacement in which even-odd changes “always change” (for example, FIG. 9 of FIG. 9 of the same document). (See the leftmost graph).
  • the present invention is general in that it can handle other than the division number 16 except for the essential difference of using GFN as compared with Non-Patent Document 3.
  • the block size of the target block cipher and the input / output width of the round function can be set flexibly.
  • the replacement by the symmetric type 2-branch-colored binary de Bruijn graph of the present invention is symmetrical, so that the circuit scale or program size of the mounting can be reduced.
  • FIG. 9 is a diagram [Struc2] illustrating a configuration for one round (in the case of the number of divisions of 16) according to the second exemplary embodiment of the present invention.
  • SS stepping stone graph
  • FIG. 10 is a diagram [SS1] in which block replacement (when the number of divisions is 16) according to the second embodiment of the present invention is represented by a stepping stone graph (SS) (thick line is blue (second color), thin line is Corresponds to red (first color).)
  • SS stepping stone graph
  • the stepping stone graph (SS) is a graph in which the number of nodes is half of the division number k, that is, 4w, and is type 2 branch-colored with degree 2.
  • Node 4j has a red (first color) branch to node 4j + 1, a blue (second color) branch to node 4j + 2, Node 4j + 1 has a red (first color) branch to node 4j + 2, a blue (second color) branch to node 4j + 1, Node 4j + 2 has a red (first color) branch to node 4 (j + 1), a blue (second color) branch to node 4j + 3, Node 4j + 3 has a red (first color) branch to node 4j + 3, a blue (second color) branch to node 4 (j + 1), Is a directed graph that can be created by adding colored arrows.
  • node 4w is regarded as node 0.
  • the replacement by the graph of FIG. 10 [SS1] corresponds to the block replacement unit 103a of FIG. 9, and after performing cyclic replacement every four blocks (the cyclic direction is alternated between right and left), This is equivalent to performing the right two-block cyclic replacement.
  • the calculation amount of one round is substantially unchanged and the pseudo-randomness is maintained. It is possible to reduce the minimum number of rounds required for strong pseudorandomness.
  • SD sufficient distance
  • this embodiment can implement replacement by combining 1 block cyclic replacement for every 4 blocks and 2 block cyclic replacement for the entire k block. it can.
  • the present invention is not limited to the above-described embodiments, and further modifications, replacements, and replacements may be made without departing from the basic technical idea of the present invention. Adjustments can be made.
  • the block cipher apparatus of the above embodiment can operate as a decryption apparatus with the same configuration.
  • the embodiments and examples can be changed and adjusted based on the basic technical concept.
  • various combinations or selections of various disclosed elements are possible within the scope of the entire disclosure of the present invention. That is, the present invention of course includes various variations and modifications that could be made by those skilled in the art according to the entire disclosure including the claims and the technical idea.

Abstract

 一般化Feistelネットワークに基づくブロック暗号において、疑似ランダム性と強疑似ランダム性を効率よく達成する。knビットブロックの平文を暗号化するときに、2nビットごとにFeistel置換を適用した後、対称にType2枝彩色した2値deBruijnグラフに基づくブロック単位の置換を適用する。Feistel置換とブロック単位の置換をまとめて1ラウンドとし、上記のラウンドを所定の回数繰り返した後、暗号文を出力する。

Description

ブロック暗号装置、ブロック暗号化方法およびプログラム
[関連出願についての記載]
 本発明は、日本国特許出願:特願2009-246307号(2009年10月27日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
 本発明は、ブロック暗号装置、ブロック暗号化方法およびプログラムに関し、特に、特に、Feistel置換を用いたブロック暗号装置、ブロック暗号化方法およびプログラムに関する。
 ブロック暗号とは、共通鍵暗号の一種であり、ある定められたブロックサイズの平文を鍵を用いて暗号化する技術である。ブロック暗号の代表的な構成方法として、Feistel置換を用いる方式がある。Feistel置換は、1ブロックを二つの単位ブロックA、Bに分割し、ラウンド関数と呼ばれる鍵付きの非線形関数に片方の単位ブロックAを入力し、その出力を他方の単位ブロックBへ排他的論理和したのち、単位ブロックをスワップして出力するものである。具体的には、ラウンド関数Fと入力(A,B)に対して(B,B+F(A))を出力する。この処理を所定のラウンド数分繰り返して、暗号文を生成する。
 上記のFeistel置換を一般化し、1ブロックを二つ以上に分割して、単位ブロック二つごとにFeistel置換を適用する方法も知られており、一般化Feistelネットワーク(Generalized Feistel Network;GFN)とも呼ばれている。
 GFNにおいては、1ブロックをある偶数kについてk単位ブロックに分割する。このkは分割数と呼ばれる。単位ブロックがnビットの場合、1平文はknビットとなる。1ブロックを分割して得られたk個の単位ブロックを(m[0],m[1],・・・,m[k-1])とした場合、GFNの1ラウンドは、BlockPerm(m[0],F(m[0])+m[1],m[2],F(m[2])+m[3],・・・,F(m[k-2]),F(m[k-2])+m[k-1])となる。Fはラウンド関数であり、BlockPermはk単位ブロックのポジションを入れ替える置換である。
 ここで、BlockPermとしては巡回置換を使うものが標準的である。すなわち、
[数1]BlockPerm
 BlockPerm(v[0],v[1],・・・,v[k-1])=(v[1], v[2],・・・,v[k-1],v[0])
 となる。なお0番目の入力ブロックからk-1番目の入力ブロックまでそれぞれに対応する出力ブロックの番号を並べたリスト表現では、このBlockPermは、{1,2,...,k-1,0}と表現される。
 分割数k=4として巡回置換を用いたGFNの例としては、非特許文献1の“CLEFIA”が挙げられる。分割数k=4の巡回置換を用いたGFNの例を図10に示す。
 一方、GFNを含めた、ブロック暗号の構造的な安全性を評価する手法として、疑似ランダム性と強疑似ランダム性がある。
 これはターゲットのブロック暗号が分割数k、単位ブロックnビットのRラウンドGFNの場合、全部でRk/2個あるラウンド関数をすべて独立な疑似ランダム関数と見なしたとき、ブロック暗号全体がknビットの疑似ランダム置換および強疑似ランダム置換となるかを評価するものである。
 ここで、疑似ランダム関数Fは任意の入力xから疑似乱数F(x)(真の乱数と計算量的に判別が困難な系列)を出力する関数、疑似ランダム置換Eは任意の平文xから重複のない疑似乱数E(x)を暗号文として出力する置換、強疑似ランダム置換Eは、Eが疑似ランダム置換の条件を満たしたうえに、Eの逆置換Dについても、任意の暗号文yから重複のない疑似乱数D(y)を平文として出力するものである。強疑似ランダム置換は、現実に望みうる最も強い安全性を持つブロック暗号を意味する。
 例えばBlockPermを巡回置換とした場合、非特許文献2により、k+1ラウンドのGFNが疑似ランダム置換、2kラウンドのGFNが強疑似ランダム置換となることが知られている。これらの評価は、実際のブロック暗号を構築するに当たって最小限必要なラウンド数を与えるものである。安全性と計算量の観点から、疑似ランダム性と強疑似ランダム性がより少ないラウンド数で満たされるブロック暗号が望ましいため、疑似ランダム性と強疑似ランダム性が満たされるラウンド数は、実際のブロック暗号の構造的な善し悪しを評価する指標としてよく使われている。
 実際のブロック暗号において使われるラウンド関数は疑似ランダム関数よりも一般的に弱いため、疑似ランダム性のために必要な最小ラウンド数よりもある程度ラウンド数を多くとり、安全性におけるマージンを確保している。もちろん、小さいラウンド数で疑似ランダム性と強疑似ランダム性が満たされる方が、あるレベルの安全性マージンを確保するのに必要なラウンド数を削減でき、全体の計算量削減が可能となる。
 なお、Feistel型ではなくSubstitution-Permutation network型(SPN型)のブロック暗号においては、knビットブロック入力(m[0],m[1],・・・,m[k-1])に対して鍵付き非線形置換Sを用いてMix(S(m[0]),S(m[1]),・・・,S(m[k-1]))という処理を1ラウンドとしている。ここでMixはknビットの線形変換であるが、Mixがnビットブロック単位の入れ替えによる置換では異なるブロック間の影響がないため、いかなる場合でも安全ではない。Mixはブロック間の線形演算を含んだ置換であることが必要である。
 例えば、非特許文献3の“SAFER”に記載の128ビットブロック暗号SAFER+では、k=16、n=8として、Pseudo-Hadamard Transform(PHT)と呼ばれる2ブロック単位の行列演算と、ブロック単位の入れ替えによる置換Armenian Shuffleとを組み合わせることでMixを実現している。
Taizo Shirai,Kyoji Shibutani,Toru Akishita,Shiho Moriai,Tetsu Iwata:The 128-Bit Blockcipher CLEFIA.Alex Biryukov(Ed.):Fast Software Encryption,14th International Workshop,FSE 2007,Luxembourg,Luxembourg,March 26-28,2007,Revised Selected Papers.Lecture Notes in Computer Science 4593 Springer 2007,pp.181-195. Shiho Moriai,Serge Vaudenay:On the Pseudorandomness of Top-Level Schemes of Block Ciphers.Tatsuaki Okamoto (Ed.): Advances in Cryptology - ASIACRYPT 2000, 6th International Conference on the Theory and Application of Cryptology and Information Security, Kyoto, Japan, December 3-7, 2000, Proceedings. Lecture Notes in Computer Science 1976 Springer 2000, pp. 289-302. James L. Massey: On the Optimality of SAFER+ Diffusion. Proceedings of the Second AES Candidate Conference, National Institute of Standards and Technology, 1999. (http://csrc.nist.gov/archive/aes/round1/conf2/papers/massey.pdf)
 上記非特許文献1から3の全開示内容はその引用をもって本書に繰込み記載する。
 以下に本発明による関連技術の分析を与える。
 非特許文献3の“SAFER”では、Armenian Shuffleについて、グラフに基づき以下のように探索的に発見したとしている。まず(m[0],m[1],・・・,m[k-1])を置換BlockPermにより置換した結果を(c[0],c[1],・・・,c[k-1])とする。この置換BlockPermをk/2個のノードのグラフで表現することを考える。s=(k/2)-1として、グラフ中のノードにnode=0,...,sというラベルを付ける。ノードiがm[2i]とm[2i+1]を表すものとする。非特許文献3の“SAFER”に記載されるように、一般にはBlockPermは、入出次数2、すなわち、どのノードに入る枝の数も2本で、どのノードから出て行く枝の数もまた2本である有向グラフと、そのグラフ上の枝への4色の彩色により一意に表現可能である。
 さらに、BlockPermについて、全ての偶数番目の入力ブロックは奇数番目の出力ブロックに置換され、全ての奇数番目の入力ブロックは偶数番目の出力ブロックへ置換されることを要請する。すなわち、ある偶数i,i’と奇数j,j’についてc[i]=m[j]かつc[j’]=m[i’]である。
 上記制約を満たす任意のBlockPermを一意に表現するには、上述の有向グラフの枝への彩色パターンは2色で十分となる。具体的には、k/2個のノードへラベル0,1,・・・,s(s=(k/2)-1)をつけて、各ノードから出る2本の枝の色が赤(第1の色;便宜的に細線で表す)と青(第2の色;便宜的に太線で表す)がそれぞれ一本ずつ、かつ、各ノードへ入る2本の枝も赤と青がそれぞれ一本ずつであるように彩色する。以降、このような枝の彩色ルールのことを「Type-2枝彩色」と呼ぶ。
 これらの条件を満たす、枝が2色に彩色された有向グラフが与えられると、ノードiからノードjへの赤い枝を、ブロックm[2i]のブロックc[2j+1]への置換と対応させて、ノードi’からノードj’への青い枝を、ブロックm[2i’+1]のブロックc[2j’]への置換と対応させることで、置換BlockPermが一意に定まる。逆にBlockPermが与えられたときに、対応する有向グラフも一意に定まる。なお、非特許文献3の“SAFER”では枝彩色の行われていない入出次数2の有向グラフをスケルトンと呼んでいる。
 非特許文献3の“SAFER”のArmenian Shuffleは、オーダー3の2値de BruijnグラフB(3)をわずかに変形させたグラフをスケルトンとし、これに適当なType-2枝彩色を行って得られる置換である。
 ここでde BruijnグラフB(d)について定義する。シンボル数が2でオーダーdの2値de BruijnグラフB(d)は、ノード数2の有向グラフであり、入出次数は、シンボル数と同じく2である。このとき、各ノードはdビット値(d=3なら000,001,・・・,111)で表現される。あるdビット値xの下位d-1ビット値をLS(x)とし、ビット系列同士の連結を||で表すとすると、グラフB(d)においてノードxから出る2本の枝は、ノードLS(x)||0とLS(x)||1へ入ることになる。
 2値de BruijnグラフB(d)のユニークな特徴として、グラフの直径、すなわち任意の2ノード間の遷移に必要な枝の数の最大値がdであることが知られている。これは、ノード数2、次数2の有向グラフとしては理論最小値である。
 非特許文献3の“SAFER”では、Armenian Shuffleのスケルトンの直径が、オーダー3の2値de BruijnグラフB(3)の直径と同じ理論最小値である3を達成することから、SPN型ブロック暗号で、線形変換MixをPHTとArmenian Shuffleを組み合わせて実現することにより、ある種の安全性評価が最適化されることを示している。
 冒頭に述べたように、一般化Feistelネットワークに基づく分割数kのブロック暗号において、単位ブロックの置換として一般的な巡回置換を用いると、疑似ランダム性と強疑似ランダム性を達成するのにそれぞれk+1と2kラウンドを必要とし、ラウンド数を少なくしたいという要請がある。
 本発明は、上記した分析の下、なされたものであって、一般化Feistelネットワークに基づくブロック暗号において、疑似ランダム性と強疑似ランダム性に必要なラウンド数を低減できるよう構成されたブロック暗号装置、ブロック暗号化方法およびプログラムを提供することを目的とする。
 本発明の第1の視点によれば、入力されたデータを、k個のブロックに分割する入力部と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換部と、前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する下記関数
 colorfunc(u,v)=v if u=u
 colorfunc(u,v)=v+1 if u≠uを用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行うブロック置換部と、前記置換後のk個のブロックを結合して出力する出力部と、を備えるブロック暗号装置が提供される。
 本発明の第2の視点によれば、入力されたデータを、k個のブロックに分割するステップと、ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換を行うステップと、前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する上記関数colorfunc(u,v)を用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行うステップと、前記置換後のk個のブロックを結合して出力するステップと、を含むブロック暗号化方法が提供される。本方法は、入力されたデータを暗復号するコンピュータという、特定の機械に結びつけられている。
 本発明の第3の視点によれば、入力されたデータを、k個のブロックに分割する処理と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換を行う処理と、前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する上記関数colorfunc(u,v)を用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行う処理と、前記置換後のk個のブロックを結合して出力する処理と、をコンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明によれば、より少ないラウンド数で疑似ランダム性と強疑似ランダム性を達成できる一般化Feistelネットワークを用いたブロック暗号が得られることになる。その理由は、2値deBruijnグラフからも明らかなとおり、本発明のブロック置換が、2色に彩色されたグラフで表現した場合の十分距離(sufficient distance;SD)が巡回置換の場合よりも大幅に小さくなることある。
本発明の第1の実施形態の構成を示す図[Struc1]である。 本発明の第1の実施形態の構成を処理ブロックで表した図[Block1]である。 本発明の第1の実施形態のブロック置換(分割数8の場合)をグラフで表した図[CdB0]と対応するリスト表現を表した図である(太線が青(第2色)、細線が赤(第1色)に対応する。)。 本発明の第1の実施形態の動作を示すフローチャート[Flow1]である。 本発明の第1の実施形態のブロック置換(分割数16の場合)をグラフで表した図[CdB1]である(太線が青(第2色)、細線が赤(第1色)に対応する。)。 本発明の第1の実施形態のブロック置換(分割数32の場合)をグラフで表した図[CdB2]である(太線が青(第2色)、細線が赤(第1色)に対応する。)。 図4[CdB1]のグラフに対応するブロック置換(分割数16の場合)を表した図[Perm1]である。 分割数8の左巡回置換をグラフで表した図[Cyclicgph]である(太線が青(第2色)、細線が赤(第1色)に対応する。)。 本発明の第2の実施形態の1ラウンド分の構成(分割数16の場合)を示す図[Struc2]である。 本発明の第2の実施形態のブロック置換(分割数16の場合)をグラフで表した図[SS1]である(太線が青(第2色)、細線が赤(第1色)に対応する。)。 分割数k=4の巡回置換を用いたGFNの例を示す図[CyclicGFN]である。
 はじめに本発明の概要を説明する。本発明に係るブロック暗号装置は、入力されたデータを、k個のブロックに分割する入力部と、ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換部と、前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する下記関数
 colorfunc(u,v)=v if u=u
 colorfunc(u,v)=v+1 if u≠u
 を用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当する置換を行うブロック置換部と、前記置換後のk個のブロックを結合して出力する出力部と、を備える。
 前記ブロック置換部における対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換処理は、Feistel置換にて出力された中間文Y=(y[0],y[1],・・・,y[k-1])を、
 ブロック番号i(i=0~k-1)がk/2未満で、かつ
・i mod 4が0の場合、y[i]=z[2i+1 mod k]
・i mod 4が1の場合、y[i]=z[2i mod k]
・i mod 4が2の場合、y[i]=z[2i+3 mod k]
・i mod 4が3の場合、y[i]=z[2i-2 mod k]
 前記ブロック番号iがk/2以上で、かつ
・i mod 4が0の場合、y[i]=z[2i+3 mod k]
・i mod 4が1の場合、y[i]=z[2i-2 mod k]
・i mod 4が2の場合、y[i]=z[2i+1 mod k]
・i mod 4が3の場合、y[i]=z[2i mod k]
 という置換にて実現できる。このとき、ラウンド出力文Zとして(z[0],z[1],・・・,z[k-1])が出力される。このようなFeistel置換とブロック置換とを必要繰り返し、最後にFeistel置換を適用して暗号文が出力される。
[第1の実施形態]
 続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図1[Struc1]は、本発明の第1の実施形態の構成を示す図である。図2[Block1]は、本発明の第1の実施形態の構成を処理ブロックで表した図である。
 図2を参照すると、入力部100と、鍵拡大部101と、ラウンド数R個分のFeistel置換部102と、R-1個分のブロック置換部103と、出力部104と、を備えたブロック暗号装置10が示されている。
 ブロック暗号装置10は、CPU、メモリ、ディスク等を備えた各種の情報処理装置により実現可能である。また、ブロック暗号装置10の上記各部は、プログラムをディスクに格納しておき、このプログラムをCPU上で動作させることにより実現することができる。
 次に、ブロック暗号装置10の上記各部について説明する。なお、以下の説明では、ブロック暗号の分割数kを、ある2t+1(但し、tは2以上の正数)とする。また、ラウンド数をRとする。
 入力部100は、対象となる平文Mと秘密鍵SKを入力する手段である。例えば、外部からデータを入力する装置やキーボードなどの文字入力装置等により入力部100を実現することができる。
 鍵拡大部101は、秘密鍵SKからRラウンド分のラウンド関数への鍵を導出する手段である。秘密鍵SKを入力とした関数で十分な出力幅があればどのような関数でもよい。
 Feistel置換部102は、ラウンドへの入力文X(n×kビット)をnビットごとに分割してk個の単位ブロックx[0],x[1],・・・,x[k-1]について、2ブロックごとにFeistel置換を適用して中間文Y=(y[0],y[1],・・・,y[k-1])を出力する。
 なお、最初のラウンド入力文Xは平文Mに初期化される。また、各Feistel置換は、(y[0],y[1],・・・,y[k-1])=(x[0],F(x[0])+x[1],x[2],F(x[2])+x[3],・・・,x[k-2],F(x[k-2])+x[k-1])で表される。ここで、Fはnビット入出力のラウンド関数であり、その鍵は鍵拡大部101により導出される。各ラウンド関数の鍵は処理する偶数番目ブロックのインデックス(0,2,・・・,k-2)によって異なっていてもよいし、同一でもよい。
 ブロック置換部103は、中間文Y=(y[0],y[1],・・・,y[k-1])をnビットブロック単位で並び替えてラウンド出力文Z=(z[0],z[1],・・・,z[k-1])を得る置換であり、2値de BruijnグラフB(s)について、以下のルールでtype2枝彩色することで定義される。
 2個のノードを持つ2値deBruijnグラフB(t)を考え、各ノードをtビット系列(00..0,00..1,・・・,11..1)で表すものとする。
 2色に枝彩色するにあたり、色を赤(細線;第1色)と青(太線;第2色)とし、またバイナリで表現する場合はそれぞれ0と1に対応させるものとする。
 ノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への枝があるとき、その色のバイナリ表現を決定するために下記関数colorfuncを用いる。
[colorfunc]
 colorfunc(u,v)=v if u=u
 colorfunc(u,v)=v+1 if u≠u
 ここでv+1はvのビット反転である。具体的に、例えばu=uの場合、uの最上位からのn-1ビット系列LS(u)に、0を右から付けたノードLS(u)||0については枝の色を赤に(細線、バイナリ表現では0に)し、1を右から付けたノードLS(u)||1については枝の色を青に(太線、バイナリ表現では1に)彩色する。
 同様に、u≠uの場合は、彩色のルールを反転して彩色が行われる。この彩色方法は2値deBruijnグラフB(t)に対してtype2枝彩色であり、かつ対称性を持つものである。
 図3[CdB0]は、分割数k=8として彩色した対称なType2枝彩色を施した2値deBruijnグラフである。図の右に示したとおり、分割数k=8のとき置換BlockPermは、k/2個、つまり4つ(2(3-1))のノードを持つグラフで表現できる。そして、s=(k/2)-1として、グラフ中のノードにnode=0,1,2,3というラベルを付ける。上記関数colorfuncにより枝が2色に彩色された有向グラフが与えられると、あるノードmからあるノードnへの赤い枝(細線)を、偶数ブロックy[2m]から奇数ブロックz[2n+1]への置換と対応させ、ノードm’からノードn’への青い枝を、奇数ブロックy[2m’+1]から偶数ブロックz[2n’]への置換と対応させることで、置換BlockPermは一意に定まる。例えば、図3[CdB0]のブロック置換は、図1のブロック置換部103におけるブロック置換に対応し、{1,2,7,4,3,0,5,6}というリストで表現できる。
 この彩色方法による置換は、ラウンド入力文Y=(y[0],y[1],・・・,y[k-1])と、ラウンド出力文Z=(z[0],z[1],・・・,z[k-1])で表現すると、
 上記ブロック番号iがk/2未満で、かつ
・i mod 4が0の場合、y[i]=z[2i+1 mod k]
・i mod 4が1の場合、y[i]=z[2i mod k]
・i mod 4が2の場合、y[i]=z[2i+3 mod k]
・i mod 4が3の場合、y[i]=z[2i-2 mod k]
 前記ブロック番号iがk/2以上で、かつ
・i mod 4が0の場合、y[i]=z[2i+3 mod k]
・i mod 4が1の場合、y[i]=z[2i-2 mod k]
・i mod 4が2の場合、y[i]=z[2i+1 mod k]
・i mod 4が3の場合、y[i]=z[2i mod k]
 となる。
 なお、図3のグラフの矢印を逆向きにした置換も実現可能である。これは、図1におけるブロックの番号の順序を逆順に変えればよい。
 出力部104は、最終段のFeistel置換部102から出力されたY=(y[0],y[1],・・・,y[k-1])を結合して暗号文を出力する手段である。具体的には、コンピュータディスプレイ、プリンターまたは各種のデータ出力装置により実現することができる。
 なお、上記したブロック暗号装置における各処理は、ブロック暗号装置を構成するコンピュータに実行させるプログラムにより実現することができる。
 続いて、上記本発明の第1の実施形態に係るブロック暗号装置の動作について図面を参照して詳細に説明する。図4[Flow1]は、本発明の第1の実施形態の動作を示すフローチャートである。
 図4を参照すると、まず、入力部100に、平文Mと秘密鍵SKを入力されると(図4のステップA1)、鍵拡大部101にて、秘密鍵SKを用いて、Rラウンド分の拡大鍵が生成される(図4のステップA2)。
 次にラウンド数のカウンターをJ=1とし、ラウンド入力文X=(x[0],x[1],・・・,x[k-1])の初期値を平文Mに設定し(図4のステップA3)、偶数(i=0,2,4,・・・,k-2)のブロックと奇数ブロックとの組(x[i],x[i+1])にJラウンド目の拡大鍵を用いたFeistel置換を適用して中間文Y=(y[0],y[1],・・・,y[k-1])を得る(図4のステップA4)。
 カウンターJがR未満の場合、中間文Yをブロック毎に置換してラウンド出力文Z=(z[0],z[1],・・・,z[k-1])を得る(図4のステップA5)、さらにJをインクリメント(1つ増加)したのちラウンド入力文XをZに更新する(図4のステップA6)。
 一方、カウンターJがRと一致する場合、出力部104が、得られた中間文Yを暗号文として出力する(図4のステップA7)。
 以上のように、暗号文を生成するには、ラウンド入力文Xの初期値を平文Mとして、Feistel置換部102でラウンド入力文Xから中間文Yを生成し、ブロック置換部103により中間文Yを置換してラウンド出力文Zを得て、ラウンド入力文Xの内容をZに更新する。この処理をRラウンド繰り返して暗号文を得る。なお本実施形態では、最後のRラウンド目のブロック置換部103は、安全性に寄与しないため、省略している。従ってFeistel置換部102は合計R回、ブロック置換部103は合計R-1回、それぞれ処理を実行することになる。
 上記図1、図3に示したブロック置換は、分割数が8のときのものであるが、分割数が増えた場合も同様に方法によりグラフを作成し、一意にブロック置換を定めることができる。図5[CdB1]、図6[CdB2]は、それぞれ分割数が16(t=3(k=16に相当))、32(t=4(k=32に相当))である場合における、対称なType2枝彩色を施した2値deBruijnグラフを示す。
 また、図5、図6のグラフに対応するブロック置換は、次のとおり、リスト表現することができる。
 t=3、分割数k=16のときを示す図5のグラフは、{1,2,7,4,9,10,15,12,3,0,5,6,11,8,13,14}というリスト表現に変換できる。
 同様にt=4、分割数k=32のときを示す図6のグラフは、{1,2,7,4,9,10,15,12,17,18,23,20,25,26,31,28,3,0,5,6,11,8,13,14,19,16,21,22,27,24,29,30}というリスト表現に変換できる。
 図7[Perm1]は、図5[CdB1]のグラフに対応するブロック置換(分割数16の場合)を表した図である。分割数16の場合、図1のFeistel置換部102およびブロック置換部103がそれぞれ図7[Perm1]に示したものとなる。
 以上のようなブロック置換部103を持つ本実施形態では、従来の巡回置換を用いた一般化Feistelネットワークのブロック暗号と比べて、実質的に1ラウンドの計算量は変えないまま、疑似ランダム性と強疑似ランダム性のために必要な最小ラウンド数を少なくすることが可能となる。
 これは、枝が青(太線)と赤(細線)に彩色されたグラフでブロック置換を表現した場合の十分距離(sufficient distance,SD)が、巡回置換の場合の十分距離(SD)よりも大幅に小さくなることから導かれる。ここで、十分距離(SD)がNであるとは、ノード間の移動において、最初の2回と最後の移動が青で、かつ赤の枝を連続して用いない、つまり赤の枝で移動した次は必ず青の枝を使う、というルールに従うときに、任意の2ノード間で長さNのパスが存在することをいう。
 十分距離(SD)と疑似ランダム性に必要なラウンド数は比例し、具体的には十分距離がNのとき、ラウンド数がN+2で疑似ランダム性が保証される。さらに復号側で用いられる逆置換の十分距離もNの場合は、2N+2で強疑似ランダム性も保証される。
 図8に示す巡回置換のグラフ(図Cyclicgphに分割数8の場合の図を示す)では十分距離がノード数の2倍、つまり分割数kに一致するが、本実施形態で用いるブロック置換は、ある程度kを大きくとったとき、2Log kの十分距離を、置換と逆置換の双方で達成している。具体的には、図6に示した2値de BruijnグラフB(4)に基づくk=32のブロック置換は、十分距離8を達成するが、一方k=32の巡回置換では十分距離32となる。これにより、疑似ランダム性と強疑似ランダム性に必要なラウンド数をそれぞれ約65%削減することが可能である。
 なお、非特許文献3にも2値de Bruijnグラフを利用する置換が示されているが、同文献に開示されたグラフは偶奇が“常に変わる”置換ではない(同文献のFig.9の例えば一番左のグラフ参照)。また、同文献2には、どのようにすれば対称なtype2枝彩色を施した2値de Bruijnグラフが一般的に得られるかは記載されておらず、8ノードの2値de BruijnグラフB(3)をわずかに変形させて適当な彩色を行い、分割数k=16の置換であるArmenian Shuffleを提案したに過ぎない。
 本実施形態からも明らかなとおり、本発明は、非特許文献3と比較してGFNを用いるという本質的な相違を別としても、分割数16以外に対応できる点で汎用的である。本発明によれば、ターゲットとするブロック暗号のブロックサイズ及びラウンド関数の入出力幅を柔軟に設定することができるようになる。
 さらに本発明の対称なtype2枝彩色された2値de Bruijnグラフによる置換はArmenian Shuffleと異なり、左右対称であるため、実装の回路規模もしくはプログラムサイズを小さくすることが可能である。
[第2の実施形態]
 続いて、ブロック置換にグラフに、第2の発明の実施形態について説明する。本実施形態の構成は、図2に示した第1の実施形態のブロック暗号装置と基本的構成を同一にし、そのブロック置換に変更を加えたものであるので、以下のその相違点を中心に説明する。
 図9は、本発明の第2の実施形態の1ラウンド分の構成(分割数16の場合)を示す図[Struc2]である。
 本実施形態では、分割数kは8の倍数であり、ここでは、w=2の16とする。
 ブロック置換部103は、中間文Y=(y[0],y[1],・・・,y[k-1])をnビットブロック単位で並び替えてラウンド出力文Z=(z[0],z[1],・・・,z[k-1])を得る置換であり、以下で定義されるグラフ(以下、「ステッピングストーングラフ(SS)」と称する。)により定義される。
 図10は、本発明の第2の実施形態のブロック置換(分割数16の場合)をステッピングストーングラフ(SS)で表した図[SS1]である(太線が青(第2色)、細線が赤(第1色)に対応する。)。
 ステッピングストーングラフ(SS)は、第1の実施形態と同様、ノード数を分割数kの半数、すなわち4wとし、次数2でtype2枝彩色されたグラフである。
 各ノード(j=0,1,...,w-1)について、
 ノード4jは赤(第1色)の枝をノード4j+1へ、青(第2色)の枝をノード4j+2へ、
 ノード4j+1は赤(第1色)の枝をノード4j+2へ、青(第2色)の枝をノード4j+1へ、
 ノード4j+2は赤(第1色)の枝をノード4(j+1)へ、青(第2色)の枝をノード4j+3へ、
 ノード4j+3は赤(第1色)の枝をノード4j+3へ、青(第2色)の枝をノード4(j+1)へ、
 と彩色した矢線を追加することによって作成できる有向グラフである。ただしノード4wはノード0と見なす。
 図10[SS1]のグラフによる置換は、図9のブロック置換部103aに対応し、まず、4ブロックごとの巡回置換(巡回の方向は右と左で交互)を行ったのち、kブロック全体の右2ブロック巡回置換を行うことに相当する。
 以上のようなブロック置換部103を持つ本実施形態においても、従来の巡回置換を用いた一般化Feistelネットワークのブロック暗号と比べて、実質的に1ラウンドの計算量は変えないまま、疑似ランダム性と強疑似ランダム性のために必要な最小ラウンド数を少なくすることが可能となる。これは、先の述べた十分距離(SD)を約k/4+8とすることができることから導かれる。具体的には、ステッピングストーングラフ(SS)に基づくk=32の置換は、十分距離16を達成するが、一方k=32の巡回置換では十分距離32となる。
 また、本実施形態は、図9に示すように、4ブロックごとの1ブロック巡回置換とkブロック全体での2ブロック巡回置換を組み合わせて置換が実現できるため、非常にシンプルな実装とすることができる。
 以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記の実施形態のブロック暗号装置は、同一の構成にて復号装置として動作することができる。
 本発明の全開示(請求の範囲及び図面を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
10 ブロック暗号化装置
100 入力部
101 鍵拡大部
102 Feistel置換部
103、103a ブロック置換部
104 出力部

Claims (12)

  1.  入力されたデータを、k個のブロックに分割する入力部と、
     ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換部と、
     前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する下記関数
     colorfunc(u,v)=v if u=u
     colorfunc(u,v)=v+1 if u≠uを用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行うブロック置換部と、
     前記置換後のk個のブロックを結合して出力する出力部と、
     を備えるブロック暗号装置。
  2.  前記ブロック置換部は、
     前記Feistel置換部から出力された中間文Y=(y[0],...,y[k-1])を入力とし、
     0~k-1のブロック番号iがk/2未満で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が1の場合、y[i]=z[2i mod k]
    ・i mod 4が2の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が3の場合、y[i]=z[2i-2 mod k]
     前記ブロック番号iがk/2以上で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が1の場合、y[i]=z[2i-2 mod k]
    ・i mod 4が2の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が3の場合、y[i]=z[2i mod k]
     という置換を適用してラウンド出力文Z=(z[0],...,z[k-1])を出力する請求項1のブロック暗号装置。
  3.  前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     該中間文Yに対し、4ブロック毎に、右巡回置換と、左巡回置換を交互に行う第1のブロック置換と、
     第1のブロック置換の結果に対してk個のブロック全体の右また左2ブロック巡回置換を行うことでラウンド出力文Z=(z[0],...,z[k-1])を出力する第2のブロック置換とを行う請求項1のブロック暗号装置。
  4.  前記ブロックの分割数kは、8の倍数であり、
     前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     前記ブロック置換部は、
     前記分割数kの半数の4w個(但し、w>1)のノードを持つ次数2のグラフの
     各ノード(j=0,1,...,w-1)について、
     ノード4jから、第1の色の矢線をノード4j+1へ、第2の色の矢線をノード4j+2へ、
     ノード4j+1から、第1の色の矢線をノード4j+2へ、第2の色の矢線をノード4j+1へ、
     ノード4j+2から、第1の色の矢線をノード4(j+1)へ、第2の色の矢線をノード4j+3へ、
     ノード4j+3から、第1の色の矢線をノード4j+3へ、第2の色の矢線をノード4(j+1)へ
     それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した有向グラフ(但し、ノード4wはノード0と見なす。)に相当するブロック置換を行う請求項1のブロック暗号装置。
  5.  入力されたデータを、k個のブロックに分割するステップと、
     ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換を行うステップと、
     前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する下記関数
     colorfunc(u,v)=v if u=u
     colorfunc(u,v)=v+1 if u≠uを用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行うステップと、
     前記置換後のk個のブロックを結合して出力するステップと、
     を含むブロック暗号化方法。
  6.  前記ブロックの置換を行うステップは、
     前記Feistel置換後の中間文Y=(y[0],...,y[k-1])を入力とし、
     0~k-1のブロック番号iがk/2未満で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が1の場合、y[i]=z[2i mod k]
    ・i mod 4が2の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が3の場合、y[i]=z[2i-2 mod k]
     前記ブロック番号iがk/2以上で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が1の場合、y[i]=z[2i-2 mod k]
    ・i mod 4が2の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が3の場合、y[i]=z[2i mod k]
     という置換を適用してラウンド出力文Z=(z[0],...,z[k-1])を出力する請求項5のブロック暗号化方法。
  7.  前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     該中間文Yに対し、4ブロック毎に、右巡回置換と、左巡回置換を交互に行う第1のブロック置換と、
     第1のブロック置換の結果に対してk個のブロック全体の右また左2ブロック巡回置換を行うことでラウンド出力文Z=(z[0],...,z[k-1])を出力する第2のブロック置換とを行う請求項5のブロック暗号化方法。
  8.  前記ブロックの分割数kは、8の倍数であり、
     前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     前記分割数kの半数の4w個(但し、w>1)のノードを持つ次数2のグラフの
     各ノード(j=0,1,...,w-1)について、
     ノード4jから、第1の色の矢線をノード4j+1へ、第2の色の矢線をノード4j+2へ、
     ノード4j+1から、第1の色の矢線をノード4j+2へ、第2の色の矢線をノード4j+1へ、
     ノード4j+2から、第1の色の矢線をノード4(j+1)へ、第2の色の矢線をノード4j+3へ、
     ノード4j+3から、第1の色の矢線をノード4j+3へ、第2の色の矢線をノード4(j+1)へ
     それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した有向グラフ(但し、ノード4wはノード0と見なす。)に相当するブロック置換を行う請求項5のブロック暗号化方法。
  9.  入力されたデータを、k個のブロックに分割する処理と、
     ラウンド毎に生成された暗号鍵を用いて、前記ブロック2つを組としてFeistel置換を施すRラウンド分のFeistel置換を行う処理と、
     前記分割数kの半数の2個(但し、t>2)のノードを持つdeBruijnグラフのtビットの系列で表されたノードu=(u,u,・・・,u)からノードv=(v,v,・・・,v)への矢線の色を決定する下記関数
     colorfunc(u,v)=v if u=u
     colorfunc(u,v)=v+1 if u≠uを用いて、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換を行う処理と、
     前記置換後のk個のブロックを結合して出力する処理と、
     をコンピュータに実行させるプログラム。
  10.  前記ブロックの置換を行う処理は、
     前記Feistel置換後の中間文Y=(y[0],...,y[k-1])を入力とし、
     0~k-1のブロック番号iがk/2未満で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が1の場合、y[i]=z[2i mod k]
    ・i mod 4が2の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が3の場合、y[i]=z[2i-2 mod k]
     前記ブロック番号iがk/2以上で、かつ
    ・i mod 4が0の場合、y[i]=z[2i+3 mod k]
    ・i mod 4が1の場合、y[i]=z[2i-2 mod k]
    ・i mod 4が2の場合、y[i]=z[2i+1 mod k]
    ・i mod 4が3の場合、y[i]=z[2i mod k]
     という置換を適用してラウンド出力文Z=(z[0],...,z[k-1])を出力するものである請求項9のプログラム。
  11.  前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     該中間文Yに対し、4ブロック毎に、右巡回置換と、左巡回置換を交互に行う第1のブロック置換処理と、
     第1のブロック置換の結果に対してk個のブロック全体の右また左2ブロック巡回置換を行うことでラウンド出力文Z=(z[0],...,z[k-1])を出力する第2のブロック置換処理とを前記コンピュータに実行させる請求項9のプログラム。
  12.  前記ブロックの分割数kは、8の倍数であり、
     前記対称なType2枝彩色を施した2値deBruijnグラフに相当するブロック置換に代えて、
     前記分割数kの半数の4w個(但し、w>1)のノードを持つ次数2のグラフの
     各ノード(j=0,1,...,w-1)について、
     ノード4jから、第1の色の矢線をノード4j+1へ、第2の色の矢線をノード4j+2へ、
     ノード4j+1から、第1の色の矢線をノード4j+2へ、第2の色の矢線をノード4j+1へ、
     ノード4j+2から、第1の色の矢線をノード4(j+1)へ、第2の色の矢線をノード4j+3へ、
     ノード4j+3から、第1の色の矢線をノード4j+3へ、第2の色の矢線をノード4(j+1)へ
     それぞれ遷移させる、偶数ブロックから奇数ブロックへの遷移を第1の色の矢線で、奇数ブロックから偶数ブロックへの遷移を第2の色の矢線で表した、対称なType2枝彩色を施した有向グラフ(但し、ノード4wはノード0と見なす。)に相当するブロック置換を前記コンピュータに実行させる請求項9のプログラム。
PCT/JP2010/068965 2009-10-27 2010-10-26 ブロック暗号装置、ブロック暗号化方法およびプログラム WO2011052587A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/504,389 US8891758B2 (en) 2009-10-27 2010-10-26 Block encryption device and method and computer program
JP2011538431A JP5488608B2 (ja) 2009-10-27 2010-10-26 ブロック暗号装置、ブロック暗号化方法およびプログラム
CN201080048501.7A CN102598574B (zh) 2009-10-27 2010-10-26 块加密装置、块加密方法以及程序

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009246307 2009-10-27
JP2009-246307 2009-10-27

Publications (1)

Publication Number Publication Date
WO2011052587A1 true WO2011052587A1 (ja) 2011-05-05

Family

ID=43922012

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/068965 WO2011052587A1 (ja) 2009-10-27 2010-10-26 ブロック暗号装置、ブロック暗号化方法およびプログラム

Country Status (4)

Country Link
US (1) US8891758B2 (ja)
JP (1) JP5488608B2 (ja)
CN (1) CN102598574B (ja)
WO (1) WO2011052587A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012141189A1 (ja) * 2011-04-11 2012-10-18 日本電気株式会社 暗号化方法、暗号化装置および暗号化プログラム

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4275265A (en) * 1978-10-02 1981-06-23 Wisconsin Alumni Research Foundation Complete substitution permutation enciphering and deciphering circuit
JPH06342258A (ja) * 1993-06-02 1994-12-13 Matsushita Electric Ind Co Ltd ブロック暗号作成装置
JPH11242433A (ja) * 1995-09-05 1999-09-07 Mitsubishi Electric Corp デ―タ変換装置及びデ―タ変換方法
JP2000214769A (ja) * 1999-01-25 2000-08-04 Nippon Telegr & Teleph Corp <Ntt> デ―タ置換・分割方法および装置とデ―タ置換・分割プログラムを記録した記録媒体
US20060236102A1 (en) * 2003-09-05 2006-10-19 Jovan Golic Secret-key-controlled reversible circuit and corresponding method of data processing
WO2008026623A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
WO2008026621A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
WO2009034929A1 (ja) * 2007-09-12 2009-03-19 Nec Corporation 暗号化方法、暗号装置及び暗号処理プログラム
WO2009087972A1 (ja) * 2008-01-09 2009-07-16 Nec Corporation データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06118872A (ja) 1992-10-09 1994-04-28 Matsushita Electric Ind Co Ltd データ撹乱装置
US6201869B1 (en) 1995-09-05 2001-03-13 Mitsubishi Denki Kabushiki Kaisha Data transformation apparatus and data transformation method
JPH1152850A (ja) 1997-08-07 1999-02-26 Hitachi Ltd 暗号変換方法および装置
EP0935861A2 (en) 1997-08-13 1999-08-18 Koninklijke Philips Electronics N.V. Method and system for requesting a dial up connection via a packet switched network
JPH11105853A (ja) 1997-10-02 1999-04-20 Chuo Kogyo:Kk 組立式パッケージと容器
US6578061B1 (en) 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
CN101583489A (zh) 2007-01-16 2009-11-18 住友电木株式会社 绝缘树脂片层叠体、层叠该绝缘树脂片层叠体而成的多层印刷布线板

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4275265A (en) * 1978-10-02 1981-06-23 Wisconsin Alumni Research Foundation Complete substitution permutation enciphering and deciphering circuit
JPH06342258A (ja) * 1993-06-02 1994-12-13 Matsushita Electric Ind Co Ltd ブロック暗号作成装置
JPH11242433A (ja) * 1995-09-05 1999-09-07 Mitsubishi Electric Corp デ―タ変換装置及びデ―タ変換方法
JP2000214769A (ja) * 1999-01-25 2000-08-04 Nippon Telegr & Teleph Corp <Ntt> デ―タ置換・分割方法および装置とデ―タ置換・分割プログラムを記録した記録媒体
US20060236102A1 (en) * 2003-09-05 2006-10-19 Jovan Golic Secret-key-controlled reversible circuit and corresponding method of data processing
WO2008026623A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
WO2008026621A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
WO2009034929A1 (ja) * 2007-09-12 2009-03-19 Nec Corporation 暗号化方法、暗号装置及び暗号処理プログラム
WO2009087972A1 (ja) * 2008-01-09 2009-07-16 Nec Corporation データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"2009 Nen Symposium on Cryptography and Information Security (SCIS2009) Yokoshu, 20 January 2009 (20.01.2009)", vol. 2C2-3, article TORU OWADA ET AL.: "Lesamnta no Hardware Jisso Oyobi Hyoka" *
TOMOYASU SUZAKI ET AL.: "Improving the Generalized Feistel, Lecture Notes", COMPUTER SCIENCE(LNCS) 6147, vol. 6147, February 2010 (2010-02-01), pages 19 - 39 *

Also Published As

Publication number Publication date
US8891758B2 (en) 2014-11-18
US20120269342A1 (en) 2012-10-25
CN102598574A (zh) 2012-07-18
JP5488608B2 (ja) 2014-05-14
CN102598574B (zh) 2014-12-17
JPWO2011052587A1 (ja) 2013-03-21

Similar Documents

Publication Publication Date Title
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP6519473B2 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
WO2012132623A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JPWO2008018303A1 (ja) 調整機能付きブロック暗号装置と方法とプログラム
JP2012215813A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN107438065A (zh) 数据加密装置及方法、数据解密装置及方法
WO2012105352A1 (ja) ブロック暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
JP6052166B2 (ja) 暗号化方法、暗号化装置および暗号化プログラム
JP5528281B2 (ja) ハッシュ値演算装置
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP2010044251A (ja) ハッシュ値生成装置、プログラム及びハッシュ値生成方法
JP5488608B2 (ja) ブロック暗号装置、ブロック暗号化方法およびプログラム
JP5268001B2 (ja) ストリーム暗号向け擬似乱数生成装置とプログラムと方法
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
Islam et al. Data encryption standard
Deb et al. Study of NLFSR and reasonable security improvement on trivium cipher
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP2014119512A (ja) 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP3748184B2 (ja) 秘話通信装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080048501.7

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10826719

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011538431

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13504389

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10826719

Country of ref document: EP

Kind code of ref document: A1