JP3864798B2 - Decoding apparatus of the common key encryption - Google Patents

Decoding apparatus of the common key encryption Download PDF

Info

Publication number
JP3864798B2
JP3864798B2 JP2002034787A JP2002034787A JP3864798B2 JP 3864798 B2 JP3864798 B2 JP 3864798B2 JP 2002034787 A JP2002034787 A JP 2002034787A JP 2002034787 A JP2002034787 A JP 2002034787A JP 3864798 B2 JP3864798 B2 JP 3864798B2
Authority
JP
Grant status
Grant
Patent type
Prior art keywords
step
random number
processing
ciphertext
decoding
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 - Fee Related
Application number
JP2002034787A
Other languages
Japanese (ja)
Other versions
JP2002305517A (en )
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
Grant date

Links

Images

Description

【0001】 [0001]
【発明の属する技術分野】 BACKGROUND OF THE INVENTION
本発明は,秘密情報のセキュリティを確保する技術に関する。 The present invention relates to a technique to ensure the security of confidential information.
【0002】 [0002]
【従来の技術】 BACKGROUND OF THE INVENTION
従来の暗号処理装置は,データを秘匿する目的のブロック暗号やストリーム暗号が提案されていた。 Conventional cryptographic processing apparatus, a block cipher or stream cipher the purpose of concealing the data have been proposed. ブロック暗号にはDES,IDEAなど非常にいろいろな方式が提案されている。 The block cipher DES, have been proposed very different methods such as IDEA. DES,IDEAについては以下の文献で扱っている。 DES, are dealing in the following literature for IDEA.
文献1:Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.250-259, pp.263-266。 Document 1: Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.250-259, pp.263-266.
【0003】 [0003]
ブロック暗号はECB,CBC,CFB,OFB,カウンタモードなどのブロック暗号操作モードにより全体の暗号処理の安全性や性質を議論するが,これまでに暗号化処理と改ざん検出を同時に行う操作モードは,iaPCBCモードが知られているだけで,残りのモードは改ざんの検出がそれ自身では不可能である。 Block ciphers ECB, CBC, CFB, OFB, but discussed the safety and the nature of the entire encryption processing by the block cipher operating mode, such as counter mode, operation mode to do this until the encryption process and tamper detection at the same time, only iaPCBC mode is known, the rest of the mode is not possible with the detection itself of tampering. ブロック暗号の操作モードについては以下の文献で扱っている。 We are dealing with the following documents for the operation mode of the block cipher.
文献2:Schneier, Applied Cryptography, Second Edition, John Wiley Sons, Inc。 Document 2: Schneier, Applied Cryptography, Second Edition, John Wiley Sons, Inc. , 1996, pp.189-209。 , 1996, pp.189-209.
iaPCBCモードは以下の文献で扱っている。 iaPCBC mode are dealing in the following literature.
文献3:Gligor, Donescu, ”Integrity-Aware PCBC Encryption Schemes,” Preproceedings in Secure Protocol Workshop, Cambridge, 1999, to appear in Lecture Notes in Computer Science series, Springer-Verlag。 Document 3: Gligor, Donescu, "Integrity-Aware PCBC Encryption Schemes," Preproceedings in Secure Protocol Workshop, Cambridge, 1999, to appear in Lecture Notes in Computer Science series, Springer-Verlag.
【0004】 [0004]
iaPCBCモードはブロック暗号を用いた操作モードであり,暗号化処理では並列処理が不可能,事前計算などが不可能,などの点で非常に高速な処理が要求される環境への実装が非常に困難であった。 iaPCBC mode is an operation mode using a block cipher, not parallel processing in the encryption process, precomputed such is not possible, etc. In view very fast processing implementation is very on the environment is required for It was difficult.
これに対して,メッセージ認証子と呼ばれる改ざん検出のための暗号学的チェックサム(以下,MACという)を生成する方式が提案され,ブロック暗号の上記操作モードの暗号処理でも必要に応じてMAC生成処理を同時にかつまったく独立の機構として実装することで,暗号処理と改ざん検出が同時に可能となった。 In contrast, cryptographic checksum for falsification detection, called message authentication code (hereinafter, referred to as MAC) is proposed scheme for generating, MAC generated as needed in the encryption processing of the operation mode of the block cipher processing simultaneously and by implementing a completely independent mechanism, the encryption processing and tampering detection is enabled at the same time. しかし,この場合にはまったく独立な暗号学的鍵を2度,すなわち,暗号化用と改ざん検出用,共有する必要があるという点,それから暗号化されるデータを2度処理,つまり,暗号化処理とMAC生成処理,にかける必要があり,システムが複雑になったり,長いデータの処理に向かないなどの懸念があった。 However, twice a completely independent cryptographic key in this case, i.e., for tamper detection and for encryption, that must be shared, then twice processing data to be encrypted, i.e., encrypted processing and MAC generation process, it is necessary to apply to the system or become more complex, there is a concern, such as not suitable for the long data processing. さらにブロック暗号の処理速度が現在の通信の速度に比べて低速であり,これらブロック暗号とMACの組み合わせ技術は,ギガビットやテラビット処理への応用が困難であった。 Furthermore the processing speed of the block cipher is slower than the speed of current communication, a combination technique of block cipher and MAC are applicable to gigabit and terabit processing is difficult. MACについての記述は以下の文献にある。 Description of the MAC is in the following literature.
文献4:Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.352-368。 Literature 4: Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.352-368.
【0005】 [0005]
これに対してストリーム暗号は,さまざま提案された暗号学的擬似乱数生成器を用いて暗号化を行うメカニズムで,擬似乱数生成器の安全性や性質とは無関係に改ざんの検出はそれ自身では不可能だった。 Stream cipher contrast, a mechanism for performing encrypted using a different proposed cryptographic pseudorandom number generator, in detection itself tampering regardless of the safety and the nature of the pseudo-random number generator is not it was possible. ストリーム暗号,またはストリーム暗号に用いる擬似乱数生成器としてよく知られているものに,SEAL,非線形コンバイナを用いた線形フィードバックシフトレジスタ,非線形フィルタを用いた線形フィードバックシフトレジスタ,クロック制御方式の線形フィードバックシフトレジスタなどがある。 To what is well known as a pseudo random number generator used for the stream cipher or stream cipher,, SEAL, linear feedback shift register using a nonlinear combiner, the linear feedback shift register using a non-linear filter, the linear feedback shift clock control method register, and the like. SEALについては以下の文献で扱っている。 We are dealing in the following literature for SEAL.
文献5:Schneier, Applied Cryptography, Second Edition, John Wiley Sons, Inc。 Document 5: Schneier, Applied Cryptography, Second Edition, John Wiley Sons, Inc. , 1996, pp.398-400。 , 1996, pp.398-400.
【0006】 [0006]
その他のフィードバックシフトレジスタに基づく方式については以下の文献で扱っている。 Covered in the following references for methods based on other feedback shift register.
文献6:Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.203-212。 Document 6: Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.203-212.
【0007】 [0007]
ストリーム暗号とMACを組み合わせた技術により暗号処理と改ざん検出を同時に行えるほか,上記ブロック暗号の処理にくらべて,2倍〜20倍の比率でストリーム暗号がより高速であるが,どのMAC生成方式についても,ブロック暗号とMACの組み合わせ同様,ふたつの異なる鍵の共有が必要であったり,ひとつのメッセージについて2度の処理を行う必要などがあった。 In addition to enabling the technology that combines stream cipher and MAC and encryption processing tamper detection simultaneously, compared to the process in the block cipher, but a stream cipher with a ratio of 2 to 20 times it is faster, for which MAC generation method also, similar combinations of block cipher and MAC, because they involve sharing of two different keys, there is such need to perform two-time processing for one message. より詳しくMAC生成方式を考えると,本来のストリーム暗号に,付帯的に必要となるメカニズムや計算量が非常に大きい。 Given the MAC generation method in detail, the original stream cipher, mechanisms and computation amount required incidental to very large. 例えば,HMAC,UMACなどのMAC生成方式では暗号学的に衝突なしで一方向性を保証している安全なハッシュ関数を必要であり,ストリーム暗号にさらに前述のハッシュ関数を実装する必要がある。 For example, HMAC, requires a secure hash function with a guaranteed one-way without cryptographically collision in MAC generation method such as UMAC, it is necessary to further implement the hash function described above to the stream cipher. HMACは前述の文献4,pp.355のExample 9.67で扱っている。 HMAC the above literature 4, covered in Example 9.67 of Pp.355. またUMACは以下の文献で扱っている。 The UMAC are dealing in the following literature.
文献7:Black, Halevi, Krawczyk, Krovetz, Rogaway, ”UMAC: Fast and Secure Message Authentication,” Advances in Cryptology, - CRYPTO'99, Lecture Notes in Computer Science, Vol. 1666, Springer-Verlag, 1999。 Document 7: Black, Halevi, Krawczyk, Krovetz, Rogaway,. "UMAC: Fast and Secure Message Authentication," Advances in Cryptology, - CRYPTO'99, Lecture Notes in Computer Science, Vol 1666, Springer-Verlag, 1999.
【0008】 [0008]
しかし,一般にSHA-1, MD5などのハッシュ関数は非常に複雑であり,実装も容易でない。 However, in general SHA-1, the hash function such as MD5 is very complicated, it is not easy implementation. これらのハッシュ関数については以下の文献で扱っている。 These hash functions are dealing in the following literature.
文献8:Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.347-349。 Document 8: Menezes, van Oorschot, Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pp.347-349.
【0009】 [0009]
ハッシュ関数の安全性の面についても,ブロック暗号のそれに比べて議論が行われておらず,ユーザによってはハッシュ関数を信頼できず,組み込めないこともある。 For the safety aspects of the hash function, discussed in comparison with that of the block cipher is not performed, unreliable hash function by the user, may not incorporate. またMAC生成方式の中で擬似乱数生成器のみを用いる方式であるMMHのMAC生成では非常に少ない追加の資源,回路やプログラム,で暗号処理に改ざん検出の機能を付け加えることができるが,メッセージの長さに対してその2倍の長さの擬似乱数を必要とし,必要な乱数生成に時間がかかってしまう。 Also is a method of using only the pseudo random number generator in the MAC generation system very little additional resources in the MAC generation of MMH, but can be added a function of tamper detection circuit or a program, in encryption processing, the message require a pseudo-random number of the length of twice the length, it takes time to the required random number generation. MMHは以下の文献で扱っている。 MMH are dealing in the following literature.
文献9:Halevi, Krawczyk, ”MMH: Software Message Authentication in the Gbit/Second Rates,” Fast Software Encryption, 4 th International Workshop, FSE'97, Lecture Notes in Computer Science, Vol。 Document 9: Halevi, Krawczyk, "MMH : Software Message Authentication in the Gbit / Second Rates," Fast Software Encryption, 4 th International Workshop, FSE'97, Lecture Notes in Computer Science, Vol. 1267, Springer-Verlag, 1997。 1267, Springer-Verlag, 1997.
【0010】 [0010]
【発明が解決しようとする課題】 [Problems that the Invention is to Solve
従来の暗号技術のほとんどは,復号化の際,改ざん検出をそれ自身ではすることができなかった。 Most conventional cryptographic techniques, time of decoding, the falsification detection could not be by itself. 改ざん検出を行うとき,異なるふたつの鍵共有の必要性や,独立の処理,別の暗号学的要素関数の追加実装などが必要であった。 When performing tampering detection, needs and different two key sharing, processing of independent and additional implementation of another cryptographic element function was needed.
本発明は改ざん検出も復号化と同時に可能であり,またデータ秘匿,データ改ざんに対する安全性については,証明可能なものを提供することを目的とする。 The present invention can be at the same time as falsification detected decoding and data confidentiality, for security against data tampering, and to provide those provable.
処理速度の面についての課題として,ブロック暗号のこれまで知られた操作モードでは並列度や事前計算等の可能性がなく,高並列処理や高速処理には向いていないという点があった。 As a problem for the surface processing speed, without the possibility of such parallelism and precalculated in operation mode known heretofore block cipher, had that not suitable for highly parallel processing and high-speed processing.
本発明は擬似乱数生成器の高速処理性能を生かしながら,事前計算や並列処理の利点をもつ,高速処理可能な共通鍵暗号の方法を提供することを目的とする。 The present invention while utilizing a high-speed processing performance of the pseudorandom number generator has the advantage of pre-computed and parallel processing, and an object thereof is to provide a method for high-speed processing can be a common key cryptography.
本発明は従来のブロック暗号よりも高速な処理が可能というだけではなく,資源が許される場合にはそれだけより高速な処理が可能であり,高い並列度を達成できるような高速処理に向けたものを提供することを目的とする。 The present invention is not only a possible high-speed processing than the conventional block cipher, if the resource is allowed is capable of much more high speed processing, directed to a high-speed process can achieve a high degree of parallelism an object of the present invention is to provide a.
本発明は非常に短いメッセージについても処理速度が落ちないような方式を提供することを目的とする。 The present invention aims at providing a method such as the processing speed does not fall even for very short messages.
本発明はストリーム暗号に非常に小さな追加の回路,またはプログラムで実装可能な方式を提供することを目的とする。 The present invention aims to provide a possible mounting method with a very small additional circuitry or program, the stream cipher.
【0011】 [0011]
【課題を解決するための手段】 In order to solve the problems]
本発明では,擬似乱数列を鍵ストリームとして用いてブロック毎に処理を行い,かつ,改ざん検出を可能にする共通鍵暗号方法を提供する。 In the present invention performs processing for each block using the pseudo-random number sequence as a key stream, and provides a common key encryption method enabling tampering detection.
本発明の第一の態様は,平文P,鍵ストリームS,冗長性データ(以下,冗長性と略す)R,初期値Vから暗号文Cを得る暗号処理方法であって,鍵ストリームSの長さが暗号文Cより真に長い。 A first aspect of the present invention, the plaintext P, the key stream S, redundancy data (hereinafter, referred to as redundancy) R, a cryptographic processing method for obtaining a ciphertext C from an initial value V, the keystream S length Saga truly longer than the cipher text C.
具体的には,冗長性の長さをbビット,平文の長さを Specifically, b bit length of redundancy, the length of the plaintext
L=n×b+t (tは0以上b未満の整数、nは0以上の整数) ビットとしたとき,平文の最後にビット文字列`0'を ((bt) mod b) 個付加し, L = n × b + t (t is 0 or b below integer, n represents an integer of 0 or more) when the bit, the bit string `0 'to the end of the plaintext ((bt) mod b) number added ,
冗長性Rを付加し,全体で Adding redundancy R, the entire
L+((bt) mod b)+bビットの文字列とする。 L + a ((bt) mod b) + b string of bits. これはbの倍数である。 This is a multiple of b.
これをbビットのブロックに分割し,Pi(1≦i≦m)とする。 This was divided into blocks of b bits, and Pi (1 ≦ i ≦ m). 表記Xi (1≦i≦n)は、変数Xiについて、要素数がnで引数が1からnまで、の列を表すものとする。 Notation Xi (1 ≦ i ≦ n), for the variable Xi, the number of elements is argument n denote the rows of, from 1 to n. このとき必要な鍵ストリームの長さは2mbビットである。 The length of the time required key stream is 2mb bits.
この鍵ストリームは,暗号化装置側と復号化装置側とで,秘密裏に事前に共有しておくか,または,事前に共有した秘密鍵(例えば擬似乱数生成器の入力に相当する)から生成する。 The keystream is a to the encryptor side and the decoding apparatus side, produced from either keep pre-shared secretly, or secret key shared in advance (for example, corresponding to the input of the pseudo-random number generator) to.
上記長さの鍵ストリームを,2つのブロック列,A i ,B i (1≦i≦m,それぞれbビット)に分割する。 The key stream of the length, the two block rows, A i, B i (1 ≦ i ≦ m, b bits, respectively) is divided into.
フィードバック値の初期値F 0 =Vとして,以下により暗号文ブロックC iを得る。 As an initial value F 0 = V feedback value, to obtain a ciphertext block C i below. (この初期値Vも事前に共有しておく。ただし,秘密にしておく必要はない) (The initial value V also keep sharing in advance. However, it is not necessary to keep the secret)
F i =P i ^A i , C i =(F i *B i )^F i-1 (1≦i≦m). F i = P i ^ A i , C i = (F i * B i) ^ F i-1 (1 ≦ i ≦ m).
得られたC iをならべ,一つの文字列としたものを暗号文Cとして出力する。 The resulting C i arrayed, and outputs those as a single string as ciphertext C. ここで,演算子「*」,「^」は,それぞれ有限体F(2 b )上での乗算,加算を示す。 Here, the operator "*", "^", the multiplication of on the finite field F (2 b), respectively, indicating the added.
【0012】 [0012]
対応する復号化は以下のとおりである。 Corresponding decoding is as follows.
暗号文C'の長さがbビットの倍数でない場合,非受理を出力する。 If the length of the ciphertext C 'is not a multiple of b bits, and outputs the non-acceptance. もしbビットの倍数であったなら,bビットのブロックに分割し,C' i (1≦i≦m')とする。 If there was a multiple of b bits, divided into blocks of b bits, and C 'i (1 ≦ i ≦ m').
鍵ストリームブロックA i ,B i (1≦i≦m'),フィードバック値F' 0 =Vをセットして,以下の処理を行う。 Keystream block A i, B i (1 ≦ i ≦ m ') sets the feedback value F' 0 = V, the following processing is performed.
F' i =(C' i ^F' i-1 )/B i , P' i =A i ^F' i (1≦i≦m'). F 'i = (C' i ^ F 'i-1) / B i, P' i = A i ^ F 'i (1 ≦ i ≦ m').
得られたP' iをならべ,一つの文字列としたものを復号化結果P'として保存する。 The resulting P saved as 'side by side i, one decoding those as strings result P'. 演算子「/」は有限体F(2 b )上での除算を示す。 Operator "/" indicates a division on finite F (2 b).
bビット文字列P' mは,改ざんが起こらない場合,冗長性Rが復元されるべきである。 b bit string P 'm, if tampering does not occur, it should redundancy R is restored. また鍵を知らない攻撃者が改ざんを試みて,P' mが改ざん後にも変化しないような攻撃は1/2 b以上で成功しないことが保証されている。 Also trying to attacker tampering do not know the key, P 'm such that does not change after the tampering attack is guaranteed not to succeed in 1/2 b or more. よってこれを根拠に,bが十分に大きい(32以上)場合には,P' mが冗長性Rと同じかどうかを検査することにより改ざんの検出が可能となる。 Therefore this evidence, if b is sufficiently large (32 or more), it is possible to detect tampering by P 'm to check if the same as the redundancy R.
【0013】 [0013]
本態様によれば,暗号文のいずれのブロックに改ざんが施されても,その影響が復号化時に最終ブロックまで伝播するという特徴がある。 According to this aspect, even if tampering with any of the block of ciphertext is performed, a characteristic that the influence is propagated to the last block in decoding. したがって,冗長データが変化しないような改ざんを,攻撃者が試みても防ぐことが可能になるという効果がある。 Thus, the as redundant data is not changed tampering, attacker there is an effect that it is possible to prevent any attempt.
より具体的には,暗号化処理において,次のブロックのためのフィードバック値を生成,保存したのち,前のブロックの演算にて生成されたフィードバック値を用いて演算するものである。 More specifically, in the encryption process, it generates a feedback value for the next block, after saving, is to calculation using the feedback values ​​generated by the operation of the previous block. すなわち,暗号化処理において,t番目ブロックで生成される中間値を,生成される順にX 1 ,X 2 ,…,X nとすると,次のt+1番目ブロックのためのフィードバック値F tとなるX iと,前のブロックからのフィードバック値F t-1が作用する中間値X jとの引数i,jについてi≦jが成り立つ(必要条件)。 That is, in the encryption process, the intermediate value generated by the t th block, X 1, X 2 in the order in which they are produced, ..., when X n, and the feedback value F t for the next t + 1 th block and X i made, arguments i between the feedback value F t-1 is the intermediate value X j acting from the previous block, i ≦ j holds for j (requirements).
本態様によれば,改ざんが改ざん検査をパスする確率が1/2 bであるが,復号化において有限体での除算が生じ,また,平文の2倍の乱数を消費する。 According to this embodiment, although the falsification is the 1/2 b probability of passing the tampered inspection, divide by finite occurs, also consumes twice the random number plaintext in decryption.
【0014】 [0014]
第二の態様では安全性を少しゆるめて,さらに効率的な処理が可能な方法を示す。 In a second embodiment slightly loosen the safety, indicating a more efficient processing is possible way.
第二の態様でも同様にメッセージ,冗長性の操作を同じように行う。 Message Similarly, in the second embodiment performs redundancy operation as well. 冗長性付き平文がmブロックのとき,必要な鍵ストリームの長さはb×(m+1)ビットであり,これをA i (1≦i≦m) ,Bに分割する。 When with redundancy plaintext is m blocks, the required length of the key stream is b × (m + 1) bits, which A i (1 ≦ i ≦ m ), is divided into B.
フィードバック値の初期値F 0 =Vとして,以下により暗号文ブロックC iを得る。 As an initial value F 0 = V feedback value, to obtain a ciphertext block C i below.
F i =P i ^A i , C i =(F i *B)^F i-1 (1≦i≦m). F i = P i ^ A i , C i = (F i * B) ^ F i-1 (1 ≦ i ≦ m).
得られたC iをならべ,一つの文字列としたものを暗号文Cとして出力する。 The resulting C i arrayed, and outputs those as a single string as ciphertext C.
【0015】 [0015]
対応する復号化は以下のとおりである。 Corresponding decoding is as follows. 暗号文C'の長さがbビットの倍数でない場合,非受理を出力する。 If the length of the ciphertext C 'is not a multiple of b bits, and outputs the non-acceptance. もしbビットの倍数であったなら,bビットのブロックに分割し,C' i (1≦i≦m')とする。 If there was a multiple of b bits, divided into blocks of b bits, and C 'i (1 ≦ i ≦ m'). 暗号化と同様に鍵ストリームブロックA i (1≦i≦m') ,B,フィードバック値F' 0 =Vをセットして,以下の処理を行う。 Similarly to encryption keystream block A i (1 ≦ i ≦ m ') is set to, B, the feedback value F' 0 = V, the following processing is performed.
F' i =(C' i ^F' i-1 )/B, P' i =A i ^F' i (1≦i≦m'). F 'i = (C' i ^ F 'i-1) / B, P' i = A i ^ F 'i (1 ≦ i ≦ m').
得られたP' iから冗長性の部分を取り出し,決められた冗長性が得られたかどうかを検査する。 The resulting P 'taken out portion of the redundancy from i, determined with redundancy checks whether obtained. もしそうであるなら,残りのP' iの部分をメッセージとして出力し,そうでないなら,非受理を出力する。 If so, it outputs a portion of the remaining P 'i as a message, if not, outputs a non-acceptance.
ここでbビット文字列P' mは,改ざんが起こらない場合,冗長性が復元されるべきである。 Where b bit string P 'm, if tampering does not occur, it should redundancy is restored.
本態様によれば,i番目ブロックで使う複数の擬似乱数列(鍵ストリーム)のうちいずれかをブロック毎に変化させ,いずれかは共通に用いる。 According to this embodiment, i-th block using a plurality of pseudo-random number sequence of (key stream) is changed one for each block, either the commonly used. より具体的には,i番目のブロックで,暗号処理に与える疑似乱数列を, A i , B iとすると,A iは毎ブロックごとに変化し,B iはすべてのブロックを通して変化しない。 More specifically, the i-th block, the pseudo-random number sequence applied to the encryption processing, when A i, B i, A i is changed to every block, B i is not changed throughout all blocks.
この第二の態様では,鍵を知らない攻撃者が改ざん後に改ざん検出で検出されない確率は(m-1)/2 bとなる。 In this second embodiment, the probability that the attacker does not know the key is not detected by the tamper detection after tampering becomes (m-1) / 2 b . 一般的な改ざん検出確率は1/2 32以下であることが望ましく,mは2 32程度が実際の実装でのデータ長の上限であるので,b=64以上が望ましい。 It is desirable general tamper detection probability of 1/2 32 or less, m is since about 2 32 is a data length of the upper limit of the actual implementation, b = 64 or more. この場合,暗号化,復号化では有限体F(2 64 )上の乗算を行うことにになる。 In this case, encryption, will be performing multiplication on the finite field F (2 64) in the decoding. この演算はハードウェア実装ならば非常に高速かつ低コストで実現可能であるが,ソフトウェア実装の場合,次のような態様による高速化も考えられる。 This operation can be realized at a very high speed and low cost if a hardware implementation, a software implementation is conceivable speed by following embodiments.
【0016】 [0016]
第三の態様では,より長い冗長性についての方法を示す。 In a third aspect, a method for longer redundancy. まず,以降の処理をbビット単位で行うのを前提として,冗長性をb×dビットとする。 First, the premise for performing the subsequent processes in b bits, the redundancy and b × d bits. 第一,第二の態様と同様にメッセージ,冗長性の操作を同じように行い,bビットのメッセージと冗長性によるブロック列,P i (1≦i≦m,m≦d)が生成される。 First, a message similar to the second embodiment performs redundancy operation similarly, the block row by the message and redundancy b bits, P i (1 ≦ i ≦ m, m ≦ d) is generated . そして鍵ストリームの長さをb×(m+d)ビットとし,これをbビットのブロック列A i (1≦i≦m) ,B i (≠0,1≦i≦d)に分割する。 Then the length of the key stream and b × (m + d) bits, divides this block column b bits A i (1 ≦ i ≦ m ), the B i (≠ 0,1 ≦ i ≦ d).
フィードバック値の初期値F (i) 0 =V i (1≦i≦d)として,以下により暗号文ブロックC iを得る。 As an initial value F of the feedback value (i) 0 = V i ( 1 ≦ i ≦ d), obtaining a ciphertext block C i below.
F (1) i =P i ^A i , F (1) i = P i ^ A i,
F (j+1) i =(F (j) i *B j )^F (j) i-1 (1≦j≦d), F (j + 1) i = (F (j) i * B j) ^ F (j) i-1 (1 ≦ j ≦ d),
C i =F (d+1) i (1≦i≦m). C i = F (d + 1 ) i (1 ≦ i ≦ m).
得られたC iをならべ,一つの文字列としたものを暗号文Cとして出力する。 The resulting C i arrayed, and outputs those as a single string as ciphertext C.
【0017】 [0017]
これに対応する復号化は以下のとおりである。 Decoding corresponding thereto is as follows. 暗号文C'の長さがbビットの倍数でない場合,非受理を出力する。 If the length of the ciphertext C 'is not a multiple of b bits, and outputs the non-acceptance. もしbビットの倍数であったなら,bビットのブロックに分割し,C' i (1≦i≦m')とする。 If there was a multiple of b bits, divided into blocks of b bits, and C 'i (1 ≦ i ≦ m'). 暗号化と同様に鍵ストリームブロックA i (1≦i≦m') ,B i (≠0,1≦i≦d),フィードバック値F (i) 0 =V i (1≦i≦d)をセットして,以下の処理を行う。 Similarly to encryption keystream block A i (1 ≦ i ≦ m '), B i (≠ 0,1 ≦ i ≦ d), the feedback value F (i) 0 = V i (1 ≦ i ≦ d) is set, the following process is performed.
F' (d+1) i =C' i , F '(d + 1) i = C' i,
F' (j) i =(F' (j+1) i ^F' (j) i-1 )/B j (1≦j≦d), F '(j) i = ( F' (j + 1) i ^ F '(j) i-1) / B j (1 ≦ j ≦ d),
P' i =A i ^F' (1) i (1≦i≦m). P 'i = A i ^ F ' (1) i (1 ≦ i ≦ m).
得られたP' iから冗長性の部分を取り出し,決められた冗長性が得られたかどうかを検査する。 The resulting P 'taken out portion of the redundancy from i, determined with redundancy checks whether obtained. もしそうであるなら,残りのP' iの部分をメッセージとして出力し,そうでないなら,非受理を出力する。 If so, it outputs a portion of the remaining P 'i as a message, if not, outputs a non-acceptance.
【0018】 [0018]
第三の態様では,冗長性の長さがb×dビットでありながら,暗号化や復号化に必要な処理は有限体F(2 b )上の演算であり,これは有限体F(2 b × d )上の乗算に比べて一般に1/d 2倍となる。 In a third aspect, while the length of the redundancy is b × d bits, the processing necessary for encryption and decryption is a calculation on the finite field F (2 b), which is finite F (2 generally doubled 1 / d compared to b × d) multiplication on. しかし,乗算の回数がd倍になることから,この高速化方式は同じ冗長性の長さについて,乗算の演算速度が約1/dの時間で処理可能となる。 However, since the number of multiplications is d times, the accelerated method for the same length of redundancy, operational speed of multiplication can be performed processing in a time of about 1 / d.
【0019】 [0019]
第四の態様では,これまで挙げた第一から第三の態様の暗号処理で用いられる有限体F(2 b )上の乗算をFeistelの3段構造に組み込んだものである。 In a fourth aspect, those incorporating a finite field F (2 b) multiplication on used from the first mentioned in the cryptographic processing of the third embodiment in three-stage structure of Feistel far. つまりこれまでのA*Bの演算を, That is, the computation of A * B far,
M 1 =A L ^(A R *B L ), M 2 =A R ^(M 1 *B R ), M 3 =M 1 ^(M 2 *B L ), M 1 = A L ^ (A R * B L), M 2 = A R ^ (M 1 * B R), M 3 = M 1 ^ (M 2 * B L),
によりM 3 ||M 2を出力する関数に置き換える(B LとB R ,A LとA R ,M 2とM 3は,それぞれ入れ替わっても可)。 Replace the function of outputting the M 3 || M 2 by (B L and B R, A L and A R, M 2 and M 3 are, also acceptable interchanged, respectively). これらの演算は自己逆演算となっており,復号化の際,同じ演算を用いることができる。 These operations are a self-inverse operation, upon decoding, it is possible to use the same calculation.
【0020】 [0020]
第五の態様では,メッセージの分割処理である。 In a fifth aspect, a division processing of the message. 平文Pを送信者受信者間の決まりに従ってt個の文字列に分割し,それぞれをP i (1≦i≦t)とする。 Divided into t pieces of string plaintext P according determined between sender recipient, the respectively P i (1 ≦ i ≦ t ). これまで述べた態様のひとつによりそれぞれ相異なる冗長性R i (1≦i≦t)を用いて暗号化を行い暗号文C iを得る。 Obtaining a ciphertext C i performs encryption using the heretofore mentioned respective different redundancy by one aspect R i (1 ≦ i ≦ t ). またこれとは別にR iの列のすべて,すなわち, Also that is, all, apart from the columns of R i to this,
(R 1 ||R 2 ||R 3 ||…||R t )を平文としてさらに送信者受信者間で共有された冗長性Rを用いて暗号化し,暗号文C t+1を得る。 (R 1 || R 2 || R 3 || ... || R t) using the by redundancy R shared among more sender recipient as plaintext to encrypt, to obtain a ciphertext C t + 1. これら,暗号文ブロックの列の連結 (C 1 ||C 2 ||C 3 ||…||C t+1 )を最終的な暗号文Cとする。 These connecting columns of ciphertext blocks (C 1 || C 2 || C 3 || ... || C t + 1) as the final ciphertext C.
【0021】 [0021]
対応する復号化は,暗号文を決められた方式に従ってt個の文字列に分割し,それぞれを独立に復号化する。 Corresponding decoding divides the t pieces of strings according to scheme determined ciphertext and decrypts each independently. どの復号化結果も非受理でなく,冗長性R iすべてが,冗長性を平文に見立てた部分の復号化結果に含まれていれば受理として,冗長性の含まれる順番で復号化結果である平文を連結する。 Which decoding result is also not a non-receiving, all the redundancy R i is, as receiving if it contains redundancy in the portion of the decoded result likened to the plaintext is the result of decoding in the order included redundancy linking the plaintext. どれかの復号化で非受理ならば,非受理とする。 If the non-accepted by any of the decoding, and non-acceptance.
【0022】 [0022]
第六の態様では,上記五つの態様について,有限体F(2 b )上の乗算のかわりに,有限体F(p)上の乗算に基づいたものを考える(pはある整数kによって2 k +1と表すことができる素数である)。 In a sixth aspect, the aspect of the five, instead of the multiplication on the finite field F (2 b), consider those based on multiplication on the finite field F (p) (p 2 by some integer k k is a prime number that can be expressed as +1).
具体的にはF(2 b )上の乗算 a*b の代わりとして,F(p)上の演算 a*(b+1)+1 を行う。 Specifically as an alternative to multiplication a * b on F (2 b), performing the calculation a * (b + 1) +1 on F (p). この演算は2 bビットレジスタ上で,乗算1回,加算2回,シフト1回で処理可能なため,汎用的なプロセッサ上で乗算を高速に行うことができる。 This operation on 2 b-bit registers, multiplication once, adding twice, because once the shift can be processed, it is possible to perform multiplication on a general-purpose processor speed.
上記演算は,F(2 b )の乗算が,排他的論理和b回,シフトb回の計算を要し,一般の素数pにおけるF(p)の乗算が,乗算1回と除算1回(除算は,通常,加算やシフトの数十倍の時間がかかる)を要するのと比較して高速な処理が可能である。 The above operation is multiplication of F (2 b) is an exclusive OR b times, required shift b computations, the multiplication of F (p) in the general prime p is multiplied once and division once ( division, normally, which enables high-speed processing as compared with the require consuming) several tens of times of the time of addition and shift.
【0023】 [0023]
本発明では擬似乱数を用いていることから,ユーザが最も信頼する暗号学的要素アルゴリズムは擬似乱数生成器として,ブロック暗号,ハッシュ関数,ストリーム暗号のどれかを用いることができ,安全性をユーザの選んだ暗号要素アルゴリズムに容易に帰着できる。 Since the present invention uses a pseudo-random number, the user as the cryptographic elements algorithm pseudo-random number generator, block cipher, the hash function, one of the stream cipher may be used, the safety for the user to the most reliable It can easily result in the encryption element algorithm chosen by. さらに、擬似乱数生成処理は,平文処理や暗号文処理とは独立に行うことが可能であるため、並列処理や事前計算が可能になり、高速処理が可能になる。 Furthermore, the pseudo-random number generation processing, because the plaintext processing and the ciphertext processing can be performed independently, enables parallel processing or pre-calculated, allowing high-speed processing.
実装コストについては,ハッシュ関数の追加実装といった困難な追加実装を避けることができる。 For the implementation cost, it is possible to avoid a difficult additional implementation, such as additional implementation of the hash function.
【0024】 [0024]
【発明の実施の形態】 DETAILED DESCRIPTION OF THE INVENTION
(実施例1) (Example 1)
図1はネットワーク10001によって接続されたコンピュータA10002,コンピュータB10003を含む,コンピュータA10002からコンピュータB10003への暗号通信を目的としたシステム構成を示すものである。 Figure 1 shows a computer A10002 connected by a network 10001, including computer B10003, the system configuration for the purpose of cryptographic communications to computer B10003 from computer A10002. コンピュータA10002は内部に演算装置(以下CPUという)10004,記憶装置(揮発性,不揮発性を問わない。以下RAMという)10005,ネットワークインターフェース10006を装備しており,外部にはコンピュータA10002をユーザが操作するためのディスプレイ10007とキーボード10008が接続されている。 Computer A10002 arithmetic unit inside (hereinafter CPU) 10004, a storage device (volatile, regardless nonvolatile. Hereinafter referred RAM) 10005, equipped with a network interface 10006, the user operates the computer A10002 to external display 10007 and a keyboard 10008 to is connected. RAM10005には暗号化処理プログラム(以下プログラムをPROGともいう)PROG1_10009,乱数生成処理プログラムPROG2_10010,コンピュータA10002とコンピュータB10003間のみで共有されている秘密情報である秘密鍵K10011,コンピュータA10002とコンピュータB10003間で共有されているデータである冗長性R10012と初期値V10013,それに暗号化してコンピュータB10003に送信したいデータ10014が保存されている。 The RAM10005 encryption processing program (hereinafter the program referred to as PROG) PROG1_10009, random number generation processing program PROG2_10010, computer A10002 and the private key is a secret information that is shared only between the computer B10003 K10011, between computers A10002 and computer B10003 shared the data has redundancy R10012 initial value V10013, it is data 10014 to be transmitted to the computer B10003 encrypts stored. コンピュータB10003は内部にCPU10015,RAM10016,ネットワークインターフェース10017を装備しており,外部にはコンピュータB10003をユーザが操作するためのディスプレイ10018とキーボード10019が接続されている。 Computer B10003 Inside the CPU10015, RAM10016, equipped with a network interface 10017, a display 10018 and a keyboard 10019 for operating a user computer B10003 in the outside is connected. RAM10016には復号化処理プログラムPROG3_10020,乱数生成処理プログラムPROG2_10021,秘密鍵K10011,冗長性R10012,それに初期値V10013が保存されている。 RAM10016 decoding program PROG3_10020 the random number generation processing program PROG2_10021, secret key K10011, redundancy R10012, it is an initial value V10013 stored.
【0025】 [0025]
コンピュータA10002は,暗号化処理プログラムPROG1_10009を実行し,メッセージM10014の暗号文C10022を作成し,ネットワークインターフェース10006を通してネットワーク10001へ送信する。 Computer A10002 performs encryption processing program PROG1_10009, to create a ciphertext C10022 message M10014, transmits through the network interface 10006 to the network 10001. コンピュータB10003は,ネットワークインターフェース10017を通して受信したあと,復号化処理プログラムPROG3_10020を実行し,もし改ざんが検出されなければ復号化結果をRAM10016に保存する。 Computer B10003, then after received through the network interface 10017, performs decryption processing program PROG3_10020, tampering if saves the decoding results to be detected RAM10016.
【0026】 [0026]
各プログラムは,互いのコンピュータまたは他のコンピュータからネットワーク10001上の伝送媒体である伝送信号により,またはCD,FDなど可搬型記憶媒体を介してRAMに導入することができる。 Each program may be introduced from another computer or other computer by a transmission signal which is a transmission medium on a network 10001, or CD, the RAM via a portable storage medium such as a FD. 各プログラムは,各コンピュータのオペレーティングシステム(図示していない)の元で動作するように構成することも可能である。 Each program can be configured to operate under the operating system of each computer (not shown).
暗号化処理プログラムPROG1_10009は,コンピュータA10002において,RAM10005から読み出されて,CPU10004により実行される。 Encryption processing program PROG1_10009, in computer A10002, are read from RAM10005, executed by CPU10004. 暗号化処理プログラムPROG1_10009は,サブルーチンとして乱数生成処理PROG2_10010を内部で呼び出し,入力秘密鍵K10011,冗長性R10012,初期値V10013,メッセージM10014に対して,暗号文C10022を出力する。 Encryption processing program PROG1_10009 calls the random number generation process PROG2_10010 internally as a subroutine, the input secret key K10011, redundancy R10012, initial value V10013, for the message M10014, and outputs the ciphertext C10022.
復号化処理プログラムPROG3_10020は,コンピュータB10003において,RAM10016から読み出されてCPU10015により実行される。 Decoding program PROG3_10020, in computer B10003, executed by CPU10015 read from RAM10016. 復号化処理プログラムPROG3_10020は,サブルーチンとして乱数生成処理PROG2_10021を内部で呼び出し,入力秘密鍵K10011,冗長性R10012,初期値V10013,暗号文C10022に対して,メッセージ,または改ざん検知警告を出力する。 Decoding program PROG3_10020 calls the random number generation process PROG2_10021 internally as a subroutine, the input secret key K10011, redundancy R10012, initial value V10013, against ciphertext C10022, and outputs a message or alteration detection warning.
【0027】 [0027]
暗号化処理プログラムPROG1_10009の処理の流れを説明する。 Illustrating the flow of processing of the encryption processing program PROG1_10009.
ステップ20002:データセットサブルーチン。 Step 20002: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ20003:平文準備サブルーチン。 Step 20003: plain text preparation subroutine. 平文の入力を待ち,平文が与えられたあと決められたパディングを行い,冗長性を付加して,最後に64ビットごとに区切って平文ブロックの列P i (1≦i≦n)を出力する。 Waits for input of the plaintext, performs padding plaintext has been determined after a given, by adding redundancy, and outputs a column of plaintext blocks P i (1 ≦ i ≦ n ) and finally divided into every 64-bit .
ステップ20004:乱数生成サブルーチン。 Step 20004: random number generation subroutine. 秘密鍵Kから,擬似乱数列A i ,B i (1≦i≦n)を出力する。 From the secret key K, and outputs the pseudo-random number sequence A i, B i and (1 ≦ i ≦ n).
ステップ20005:暗号化サブルーチン。 Step 20005: encryption subroutine. 擬似乱数列A i ,B i ,平文ブロック列P i (1≦i≦n),初期値Vを使って,暗号文ブロック列C i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, B i, the plaintext block sequence P i (1 ≦ i ≦ n ), with the initial value V, and outputs the ciphertext block column C i (1 ≦ i ≦ n ).
ステップ20006:ステップ20005で得られた暗号文ブロック列C i (1≦i≦n)を順にビット連結し,暗号文Cとして出力する。 Step 20006: order bit-linked resulting ciphertext block column C i a (1 ≦ i ≦ n) in step 20005, and outputs the ciphertext C.
【0028】 [0028]
上述のように,主となるデータに付属的なデータを付加することを本明細書ではパディングと呼ぶ。 As described above, referred to as padding herein that adding ancillary data to the data as a main. デジタルデータの場合のパディングでは,主となるデータに付属的なデータを単にビット連結することが多い。 The padding in the case of digital data, often simply bit connecting ancillary data to the data as a main.
【0029】 [0029]
平文準備サブルーチンの処理を図2を用いて説明する。 The process of the plaintext preparation subroutine will be described with reference to FIG.
【0030】 [0030]
ステップ20202:暗号処理に用いるメッセージMの入力を待つ。 Step 20202: wait for the input of the message M to be used in the encryption process. メッセージMは,キーボード10008から入力されたり,RAM内に保存されていたり,他の媒体から導入されたりする。 Message M is or is input from a keyboard 10008, or are stored in the RAM, and or introduced from other media.
ステップ20203:メッセージの長さを示すデータをパディング。 Step 20203: the padding data indicating the length of the message. メッセージMの先頭にメッセージMのビット長を表す64ビット二進数データを付加する。 It adds 64-bit binary data representing the bit length of the message M at the beginning of the message M.
ステップ20204:メッセージ長をそろえるパディング。 Step 20204: padding to align the message length. 後の暗号処理のためパディング後のデータを64ビットの整数倍にする。 To 64-bit integral multiple data after padding for cryptographic processing after. メッセージMの長さをLビットとすると64―L(mod 64)個の0をステップ20203で長さデータを付加されたメッセージの末尾にパディングする。 The length of the message M padding 64-L (mod 64) zeros When L bit to the end of the additional message length data in step 20203.
ステップ20205:冗長性データのパディング。 Step 20205: padding redundancy data. 64ビットデータとして与えられる冗長性Rをさらに末尾にパディングする。 Further padding to the end redundancy R given as 64-bit data.
ステップ20206:メッセージデータの平文ブロックへ分割。 Step 20206: divided into plaintext blocks of message data. ステップ20205の結果得られたデータを64ビットのブロックに区切り順にP 1 ,P 2 ,…,P nとする。 P 1, P 2 the data obtained as a result of step 20205 to separated in order of the 64-bit block, ..., and P n.
【0031】 [0031]
乱数生成サブルーチンの処理を図3を用いて説明する。 The processing of the random number generation subroutine will be described with reference to FIG.
ステップ20302:必要パラメータの入力。 Step 20302: the necessary parameter input. パディング後のメッセージブロック数nと,秘密鍵Kを得る。 And message number of blocks n after padding, the secret key K.
ステップ20303:擬似乱数列Aの生成。 Step 20303: the generation of pseudo-random number sequence A. 乱数生成処理プログラムPROG2を呼び出し,長さ64nビットの擬似乱数列を生成,出力をAとする。 Call the random number generation processing program PROG2, it generates a pseudo-random number sequence of length 64n bits, the output to A.
ステップ20304:乱数列Aをブロックに分割。 Step 20304: dividing the random number sequence A into blocks. 擬似乱数列Aを64ビットごとに区切り順にA 1 ,A 2 ,…,A nとする。 A 1, A 2 a pseudorandom number sequence A to delimit order by 64 bits, ..., and A n.
ステップ20305:カウンタiの初期化。 Step 20305: initialization of the counter i. カウンタi=1とする。 The counter i = 1.
ステップ20306:乱数B iの生成。 Step 20306: generating a random number B i. 秘密鍵Kを使ってPROG2を実行することにより64ビットの乱数B iを生成する。 Generating a 64-bit random number B i by executing the PROG2 using the private key K.
ステップ20307:ステップ20306で生成されたB iが0ならば,ステップ20306に戻る。 Step 20307: If B i generated in step 20306 is 0, the flow returns to step 20306.
ステップ20308:i=nならばステップ20310を実行。 Step 20308: i = n if execute the step 20310.
ステップ20309:カウンタiをインクリメントしステップ20306へ戻る。 Step 20309: increments the counter i to return to step 20306.
【0032】 [0032]
暗号化サブルーチンの処理を図4を用いて説明する。 Will be described with reference to FIG. 4 the encryption processing subroutine.
ステップ20402:初期値セット。 Step 20402: initial value set. F 0 =Vとする。 And F 0 = V.
ステップ20403:カウンタ初期化。 Step 20403: counter initialization. i=1とする。 And i = 1.
ステップ20404:フィードバック値F i計算。 Step 20404: feedback value F i calculated.
F i =P i ^A iとする。 And F i = P i ^ A i .
ステップ20405:暗号文ブロックC i計算。 Step 20405: ciphertext block C i calculation.
C i =(F i *B i )^F i-1とする。 C i = (F i * B i) ^ and F i-1.
ステップ20406:i=nならばステップ20408を実行。 Step 20406: i = n if execute the step 20408.
ステップ20407:カウンタiをインクリメントしステップ20404へ戻る。 Step 20407: increments the counter i to return to step 20404.
【0033】 [0033]
復号化処理プログラムPROG3_10020の処理の流れを図5を用いて説明する。 The processing flow of the decoding processing program PROG3_10020 be described with reference to FIG.
ステップ20502:データセットサブルーチン。 Step 20502: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ20503:暗号文準備サブルーチン。 Step 20503: ciphertext preparation subroutine. 暗号文C'の入力を待ち,暗号文C'が与えられたあと64ビットごとに区切って暗号文ブロックの列C' i (1≦i≦n)を出力する。 'Wait for input ciphertext C' ciphertext C separated every after 64 bits given to a column ciphertext block C 'i (1 ≦ i ≦ n).
ステップ20504:乱数生成サブルーチン。 Step 20504: random number generation subroutine. 秘密鍵Kから,擬似乱数列A i ,B i (1≦i≦n)を出力する。 From the secret key K, and outputs the pseudo-random number sequence A i, B i and (1 ≦ i ≦ n).
ステップ20505:復号化サブルーチン。 Step 20505: decryption subroutine. 擬似乱数列A i ,B i ,暗号文ブロック列C' i (1≦i≦n),初期値Vを使って,平文ブロック列P' i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, B i, ciphertext block column C 'i (1 ≦ i ≦ n), with the initial value V, the plaintext block sequence P' outputs a i (1 ≦ i ≦ n) .
ステップ20506:平文切り出しサブルーチン。 Step 20506: plain text cut out subroutine. 平文ブロックの列P' iを3つのデータ列,L',M',Z'に分割する。 'Three data columns i, L' column P plaintext block, M ', Z' is divided into.
ステップ20507:冗長性切り出しサブルーチン。 Step 20507: redundancy cut subroutine. Z'をR'とT'に分割する。 'The R' Z is divided into a T '.
ステップ20508:T=0かつR'=Rならばステップ20510に進む。 Step 20508: the process proceeds to T = 0 and R '= R if step 20510.
ステップ20509:拒否(非受理)を出力。 Step 20509: outputs a rejection (non-acceptance). ステップ20511に進む。 The process proceeds to step 20511.
ステップ20510:M'をRAMへ格納する。 Step 20510: to store the M 'to RAM.
ステップ20509,20510では,復号化処理プログラムは,結果(受理/非受理あるいは復号結果)をディスプレイ10018に出力して,ユーザに結果を通知する。 In step 20509,20510, decryption processing program, the result (acceptance / non-acceptance or decoding result) to output to a display 10018, and notifies the result to the user.
【0034】 [0034]
暗号文準備サブルーチンの処理を図6を用いて説明する。 Will be described with reference to FIG. 6 the processing of ciphertext preparation subroutine.
ステップ20602:暗号文C'の入力を待つ。 Step 20602: wait for the input of the ciphertext C '.
ステップ20603:暗号文C'を64ビットごとに区切り,順にC' 1 ,C' 2 ,…,C' nとする。 Step 20603: the ciphertext C 'delimiters for each 64-bit, sequentially C' 1, C '2, ..., C' and n.
【0035】 [0035]
復号化サブルーチンの処理を図7を用いて説明する。 The process of decoding the subroutine will be described with reference to FIG.
【0036】 [0036]
ステップ20702:初期値セット。 Step 20702: initial value set. F' 0 =Vとする。 F 'and 0 = V.
ステップ20703:カウンタ初期化。 Step 20703: counter initialization. i=1とする。 And i = 1.
ステップ20704:フィードバック値F' i計算。 Step 20704: feedback value F 'i calculated.
F' i =(C' i ^F' i-1 )/B iとする。 And F 'i = (C' i ^ F 'i-1) / B i.
ステップ20705:平文ブロックP'i計算。 Step 20705: plaintext blocks P'i calculation. P' i =F' i ^A iとする。 And P 'i = F' i ^ A i.
ステップ20706:i=nならばステップ20708を実行。 Step 20706: i = n if execute the step 20708.
ステップ20707:カウンタiをインクリメントしステップ20704へ戻る。 Step 20707: increments the counter i to return to step 20704.
【0037】 [0037]
平文切り出しサブルーチンの処理を図8を用いて説明する。 The process of the plaintext clipping subroutine will be described with reference to FIG.
ステップ20802:L'を最初の64ビットの平文ブロックとする。 Step 20802: the L 'and the first 64 bits of the plaintext block.
ステップ20803:復号文ブロックのうちP' 2最上位ビットからL'ビットのデータをM'とする。 Step 20803: the data P '2 from the most significant bit L' of bits of the decrypted text block and M '.
ステップ20804:M'を切り取った残りのデータをZ'とする。 Step 20804: 'the rest of the data cut Z' M and.
【0038】 [0038]
冗長性切出しサブルーチンの処理を図9を用いて説明する。 It will be described with reference to FIG processing redundancy cut subroutine.
ステップ20902:R'をZ'の下位64ビットのデータとする。 Step 20902: 'a Z' R and the lower 64 bits of data.
ステップ20903:R'を切り取った後の残りのデータをT'とする。 Step 20903: 'the remaining data after the cut T' R a.
【0039】 [0039]
図10は,暗号化処理の説明図である。 Figure 10 is an illustration of the encryption process. ○印の中に+が入った記号は64ビット幅の二つのデータによる排他的論理和演算を表し,○印の中に×が入った記号は64ビット幅の二つのデータによる有限体F(2 64 )上での乗算を示す。 ○ symbols + gets into dot represents the exclusive OR operation by two data width of 64 bits, symbols containing the × in ○ mark finite by two data width of 64 bits F ( It shows the multiplication of 2 64) on.
メッセージM20931に長さ20930,適当なパディング20932,冗長性R20933をそれぞれ付加し,平文P20934を生成する。 Message M20931 in length 20930, a suitable padding 20932, redundancy R20933 added respectively, to generate the plaintext P20934.
これを64ビットに分割したものをそれぞれP 1 _20935,P 2 _20936,P 3 _20937,P n _20938とする。 This 64-bit to the divided ones, respectively P 1 _20935, P 2 _20936, P 3 _20937, and P n _20938.
P 1 _20935はA 1 _20940と排他論理和を取り,フィードバック値F 1 _20941とし,B 1 _20942と有限体上の乗算を行い,その結果と初期値F 0 _20939の排他論理和により暗号文ブロックC 1 _20943を得る。 P 1 _20935 takes the exclusive logical OR between A 1 _20940, the feedback value F 1 _20941, B 1 performs multiplication on _20942 and finite, so that the initial value F 0 _20939 ciphertext block C by the exclusive logical sum of get one _20943.
P 2 _20936はA 2 _20946と排他論理和を取り,フィードバック値F 2 _20945とし,B 2 _20946と有限体上の乗算を行い,その結果とフィードバック値F 1 _20941の排他論理和により暗号文ブロックC 2 _20947を得る。 P 2 _20936 takes the exclusive logical sum and A 2 _20946, the feedback value F 2 _20945, B 2 performs multiplication on _20946 and finite, so that the feedback value F 1 _20941 ciphertext block C by the exclusive logical sum of obtain a two-_20947.
同様にしてP n _20938まで処理を行い,暗号文ブロックC 1 _20943,C 2 _20947,C 3 _20951,…,C n _20955を得たあと,これらをこの順で連結し,暗号文C_20956を得る。 Performs processing to P n _20938 Similarly, ciphertext block C 1 _20943, C 2 _20947, C 3 _20951, ..., after obtaining the C n _20955, connecting them in this order to obtain a ciphertext C_20956.
【0040】 [0040]
図11は,復号化処理の説明図である。 Figure 11 is an explanatory diagram of a decoding process. ○印の中に/が入った記号は64ビット幅の二つのデータによる有限体F(2 64 )上での除算を示す。 ○ symbols / gets into mark shows the division on the finite field by two data width of 64 bits F (2 64). 該記号の上から入るデータが割られる数,該記号の左から入るデータが割る数である。 Number data entering from the top of No. 該記 is divided is a number data is divided to enter from the left of No. 該記.
暗号文C'_20960を64ビットのブロックに分割し,C' 1 _20962,C' 2 _20963,C' 3 _20964, …,C' n _20965とする。 The ciphertext C'_20960 divided into blocks of 64 bits, C '1 _20962, C' 2 _20963, C '3 _20964, ..., C' and n _20965.
C' 1は初期値F' 0 _20961と排他的論理和をとり,その結果をB 1 _20966で割る。 C '1 the initial value F' an exclusive OR operation between 0 _20961, dividing the result by B 1 _20966. この結果をフィードバック値F' 1 _20967とする。 The results and feedback value F '1 _20967. 平文ブロックP' 1 _20969はフィードバック値F' 1 _20967とA 1 _20968との排他論理和により得られる。 Plaintext blocks P '1 _20969 feedback value F' obtained by the exclusive logical sum of the 1 _20967 and A 1 _20968.
C' 2 _20963,C' 3 _20964, …,C' n _20965も同様に処理を行い,得られた平文ブロックP' 1 _20969,P' 2 _20972,P' 3 _20977, …,P' n _20981を連結し平文P'_20982とする。 C '2 _20963, C' 3 _20964, ..., C 'n _20965 also perform the same procedure, the resulting plaintext block P' 1 _20969, P '2 _20972, P' 3 _20977, ..., a P 'n _20981 linked to the plaintext P'_20982. これをL'_20983,M'_20984,Z'_209985に分割後,さらにZ'_209985をT'_20988とR'_20989に分割し,冗長性のチェックを行う。 This L'_20983, M'_20984, after division into Z'_209985, divides further the Z'_209985 to T'_20988 and R'_20989, a check is made redundant.
【0041】 [0041]
実施例1では,メッセージの長さの約2倍の長さだけの擬似乱数を暗号処理に使った。 In Example 1, using a pseudo-random number by about 2 times the length of the message to the cryptographic processing. 擬似乱数はブロック暗号に比較して高速ではあるものの,この暗号処理で最も計算量のかかる処理であり,消費する乱数の数を減らすことが望ましい。 Although the pseudo-random number is in a high speed as compared to the block cipher, the most compute-consuming process in the encryption process, it is desirable to reduce the number of random numbers to be consumed.
(実施例2) (Example 2)
以下に示す実施例2では,別の関数を使うことにより,より少ない擬似乱数の消費で行え,また復号化の際の割る数も変化せず,逆数の事前計算によりほぼ乗算と同じ速度で達成できるため,極めて効率的な処理が可能となる。 In Example 2 below, by using a different function, performed by the consumption of less pseudorandom, also without changing split Ru number of time of decoding, achieved at the same rate as approximately multiplied by pre-calculation of the inverse since it makes it possible extremely efficient process.
実施例2では,暗号化処理PROG1,復号化処理PROG3の代わりに暗号化処理PROG1A,復号化処理PROG3Aをそれぞれ使う。 In Example 2, the encryption process PROG1, using encryption PROG1A instead of the decoding process PROG3, a decoding process PROG3A respectively.
暗号化処理PROG1Aを示す。 It shows the encryption process PROG1A. PROG1Aは,図1のPROG1_10009において,乱数生成サブルーチン20004と暗号化サブルーチン20005をそれぞれ乱数生成2サブルーチン21004と暗号化2サブルーチン21005に置き換えたものである。 PROG1A, in PROG1_10009 in FIG. 1, is obtained by replacing the random number generation subroutine 20004 and encryption subroutine 20005 each random number generation 2 subroutine 21004 and encryption 2 subroutine 21005.
【0042】 [0042]
乱数生成2サブルーチン21004の処理を図12を用いて説明する。 The processing of the random number generator 2 subroutine 21004 will be described with reference to FIG. 12.
【0043】 [0043]
ステップ21102:必要パラメータの入力。 Step 21102: the necessary parameter input. パディング後のメッセージブロック数nと,秘密鍵Kを得る。 And message number of blocks n after padding, the secret key K.
ステップ21103:擬似乱数列Aの生成。 Step 21103: the generation of pseudo-random number sequence A. 乱数生成処理プログラムPROG2を呼び出し,長さ64nビットの擬似乱数列を生成,出力をAとする。 Call the random number generation processing program PROG2, it generates a pseudo-random number sequence of length 64n bits, the output to A.
ステップ21104:乱数列Aをブロックに分割。 Step 21104: dividing the random number sequence A into blocks. 擬似乱数列Aを64ビットごとに区切り順にA 1 ,A 2 , …,A nとする。 A 1, A 2 a pseudorandom number sequence A to delimit order by 64 bits, ..., and A n.
ステップ21105:乱数Bの生成。 Step 21105: the random number B generated. 秘密鍵Kを使ってPROG2を実行することにより64ビットの乱数Bを生成する。 Generating a 64-bit random number B by executing the PROG2 using the private key K.
ステップ21106:ステップ21105で生成されたBが0ならば,ステップ21105に戻る。 Step 21106: If B generated in step 21105 is 0, the flow returns to step 21105.
【0044】 [0044]
暗号化2サブルーチン21005の処理を図13を用いて説明する。 It will be described with reference to FIG. 13 to process the encryption 2 subroutine 21005.
ステップ21202:初期値セット。 Step 21202: initial value set. F 0 =Vとする。 And F 0 = V.
ステップ21203:カウンタ初期化。 Step 21203: counter initialization. i=1とする。 And i = 1.
ステップ21204:フィードバック値F i計算。 Step 21204: feedback value F i calculated.
F i =P i ^A iとする。 And F i = P i ^ A i .
ステップ21205:暗号文ブロックC i計算。 Step 21205: ciphertext block C i calculation.
C i =(F i *B)^F i-1とする。 C i = (F i * B ) ^ and F i-1.
ステップ21206:もし,i=nならばステップ21208を実行。 Step 21206: if, i = n if execute the step 21208.
ステップ21207:カウンタiをインクリメントしステップ21204へ戻る。 Step 21207: increments the counter i to return to step 21204.
【0045】 [0045]
PROG1Aと対となる,復号化処理PROG3Aの処理の流れを図14を用いて説明する。 The PROG1A pair will be described with reference to FIG. 14 the flow of processing of the decoding process PROG3A. PROG3Aは,PROG3_10020において,乱数生成サブルーチン20504と復号化サブルーチン20505をそれぞれ乱数生成2サブルーチン21304と復号化2サブルーチン21305に置き換えたものである。 PROG3A, in PROG3_10020, is replaced with the random number generation subroutine 20504 the decoding subroutine 20505 each random number generation 2 subroutine 21304 and the decryption 2 subroutine 21305.
【0046】 [0046]
ステップ21302:データセットサブルーチン。 Step 21302: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ21303:暗号文準備サブルーチン。 Step 21303: ciphertext preparation subroutine. 暗号文C'の入力を待ち,暗号文C'が与えられたあと64ビットごとに区切って暗号文ブロックの列C' i (1≦i≦n)を出力する。 'Wait for input ciphertext C' ciphertext C separated every after 64 bits given to a column ciphertext block C 'i (1 ≦ i ≦ n).
ステップ21304:乱数生成サブルーチン。 Step 21304: random number generation subroutine. 秘密鍵Kから,擬似乱数列A i (1≦i≦n), Bを出力する。 From the secret key K, the pseudo random number sequence A i (1 ≦ i ≦ n ), and outputs the B.
ステップ21305: 復号化サブルーチン。 Step 21305: decryption subroutine. 擬似乱数列A i ,B,暗号文ブロック列C' i (1≦i≦n),初期値Vを使って,平文ブロック列P' i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, B, ciphertext block column C 'i (1 ≦ i ≦ n), with the initial value V, the plaintext block sequence P' outputs a i (1 ≦ i ≦ n) .
ステップ21306:平文切り出しサブルーチン。 Step 21306: plain text cut out subroutine. 平文ブロックの列P' iを3つのデータ列,L',M',Z'に分割する。 'Three data columns i, L' column P plaintext block, M ', Z' is divided into.
ステップ21307:冗長性切り出しサブルーチン。 Step 21307: redundancy cut subroutine. Z'をR'とT'に分割する。 'The R' Z is divided into a T '.
ステップ21308:T=0かつR'=Rならばステップ21310に進む。 Step 21308: the process proceeds to T = 0 and R '= R if step 21310.
ステップ21309:拒否を出力。 Step 21309: outputs a rejection. ステップ21311に進む。 The process proceeds to step 21311.
ステップ21310:M'をRAMへ格納する。 Step 21310: to store the M 'to RAM.
【0047】 [0047]
図14の復号化2サブルーチン21305の処理を図15を用いて説明する。 It will be described with reference to FIG. 15 the decoding processing 2 subroutine 21305 in FIG.
ステップ21402:初期値セット。 Step 21402: initial value set. F' 0 =Vとする。 F 'and 0 = V.
ステップ21403:1/Bを事前計算しておく。 Step 21403: 1 / keep pre-calculate the B.
ステップ21404:カウンタ初期化。 Step 21404: counter initialization. i=1とする。 And i = 1.
ステップ21405:フィードバック値F' i計算。 Step 21405: feedback value F 'i calculated. F' i =(C' i ^F' i-1 )*(1/B)とする。 F 'i = (C' i ^ F 'i-1) * and (1 / B).
ステップ21406:平文ブロックP' i計算。 Step 21406: plaintext blocks P 'i calculation. P' i =F' i ^A iとする。 And P 'i = F' i ^ A i.
ステップ21407:i=nならばステップ21409を実行。 Step 21407: i = n if execute the step 21409.
ステップ21408:カウンタiをインクリメントしステップ21405へ戻る。 Step 21408: increments the counter i to return to step 21405.
【0048】 [0048]
図16は,上述の高速化手法で用いた暗号化処理の説明図である。 Figure 16 is an illustration of the encryption process used in the speed-up method described above.
メッセージM21421に長さ21420,適当なパディング21422,冗長性R21423をそれぞれ付加し,平文P21424を生成する。 Message M21421 in length 21420, a suitable padding 21422, redundancy R21423 added respectively, to generate the plaintext P21424.
これを64ビットに分割したものをそれぞれP 1 _21425,P 2 _21426,P 3 _21427,P n _21428とする。 This 64-bit to the divided ones, respectively P 1 _21425, P 2 _21426, P 3 _21427, and P n _21428.
P 1 _21425はA 1 _21431と排他論理和を取り,フィードバック値F 1 _21432とし,B_21429と有限体上の乗算を行い,その結果と初期値F 0 _21430の排他論理和により暗号文ブロックC 1 _21433を得る。 P 1 _21425 takes the exclusive logical OR between A 1 _21431, the feedback value F 1 _21432, B_21429 and performs multiplication on the finite field, the result and the initial value F 0 _21430 ciphertext block C 1 by the exclusive logical sum of _21433 obtained.
P 2 _21426はA 2 _21434と排他論理和を取り,フィードバック値F 2 _21435とし,B_21429と有限体上の乗算を行い,その結果とフィードバック値F 1 _21432の排他論理和により暗号文ブロックC 2 _21436を得る。 P 2 _21426 takes the exclusive logical sum and A 2 _21434, the feedback value F 2 _21435, B_21429 and performs multiplication on the finite field, the result and the feedback value F 1 ciphertext block C 2 by the exclusive logical sum of _21432 _21436 obtained.
同様にしてP n _21428まで処理を行い,暗号文ブロックC 1 _21433,C 2 _21436,C 3 _21439, …,C n _21442を得たあと,これらをこの順で連結し Performs processing to P n _21428 Similarly, ciphertext block C 1 _21433, C 2 _21436, C 3 _21439, ..., after obtaining the C n _21442, connecting them in this order
,暗号文C_21443を得る。 , You get the ciphertext C_21443.
【0049】 [0049]
図17は,対応する復号化処理の説明図である。 Figure 17 is an illustration of a corresponding decoding process.
暗号文C'_21450は64ビットのブロックに分割し,C' 1 _21453,C' 2 _21454,C' 3 _21455, …,C' n _212456とする。 Ciphertext C'_21450 is divided into blocks of 64 bits, C '1 _21453, C' 2 _21454, C '3 _21455, ..., C' and n _212456.
C'1は初期値F' 0 _21451と排他的論理和をとり,その結果と1/B_21452の乗算を計算する。 C'1 takes an initial value F '0 _21451 an exclusive OR, computes the multiplication of the result and 1 / B_21452. この結果をフィードバック値F' 1 _21457とする。 The results and feedback value F '1 _21457. 平文ブロックP' 1 _21459はフィードバック値F' 1 _21457とA 1 _21458との排他論理和により得られる。 Plaintext blocks P '1 _21459 feedback value F' obtained by the exclusive logical sum of the 1 _21457 and A 1 _21458.
C' 2 _21454,C' 3 _21455, …,C' n _21456も同様に処理を行い,得られた平文ブロックP' 1 _21459,P' 2 _21462,P' 3 _21465, …,P' n _21468を連結し平文P'_21476とする。 C '2 _21454, C' 3 _21455, ..., C 'n _21456 also perform the same procedure, the resulting plaintext block P' 1 _21459, P '2 _21462, P' 3 _21465, ..., a P 'n _21468 linked to the plaintext P'_21476. これをL'_21469,M'_21470,Z'_21471に分割後,さらにZ'_21471をT'_21474とR'_21475に分割し,冗長性のチェックを行う。 This L'_21469, M'_21470, after division into Z'_21471, divides further the Z'_21471 to T'_21474 and R'_21475, a check is made redundant.
実施例2では,64ビットの冗長性を用いるために有限体F(2 64 )上の加算,乗算を用いている。 In Example 2, the finite field F (2 64) added on in order to use the 64-bit redundancy, is used multiply.
この実施例に示した効率化を施すことにより,高速な暗号処理が実現可能となる。 By subjecting the efficiency shown in this embodiment, high-speed cryptographic processing can be realized. C言語による実装の例では,600メガヘルツのクロック周波数の64ビットプロセッサ上で,暗号処理で202メガビット/秒の処理速度を達成することを確認した。 In the example of implementation in C, on a 64-bit processor 600 megahertz clock frequency, it was confirmed that achieving a processing speed of 202 Mbit / sec in the encryption processing. 復号化処理では207メガビット/秒の処理速度で動作することも確認した。 It was also confirmed that operate at the speed of 207 Mbit / sec in the decoding process.
上記実装で用いられている演算は擬似乱数生成,排他的論理和及び有限体F(2 64 )上の乗算であり,特にハードウェア実装した場合に効率的である。 Operation that is used in the implementation pseudo-random number generator, a multiplication on exclusive and finite field F (2 64), is particularly efficient when hardware implementation. その例として0.35μmプロセスのゲートアレイによる実装では,擬似乱数生成器に3キロゲートの付加回路で実現可能である見積もりが得られている。 The implementation by the gate array 0.35μm process as an example, estimated in a pseudo-random number generator can be implemented by additional circuits 3 Kirogeto is obtained. また,擬似乱数生成器は並列処理が可能であるので,要求される処理速度を達成するだけの並列計算装置の実現も容易である。 Also, since the pseudo-random number generator is capable of parallel processing, implementation of the parallel computing device that only achieve a processing rate required is easy. この場合,並列擬似乱数生成器に36キロゲート程度の回路を付加することで,最大9.6ギガビット/秒の処理速度を実現することができる。 In this case, by adding a circuit of about 36 Kirogeto in parallel pseudo-random number generator, it is possible to realize the processing speeds of up to 9.6 Gbit / sec.
(実施例3) (Example 3)
以下に示す実施例3では,別の高速な関数を使うことにより同じ安全性かつより高速な処理が可能となる。 In Example 3 below, it is possible to faster processing than the same safety and by the use of an alternative high-speed functions. 観点を変え,これまでと同じF(2 64 )上の演算を使った場合には(F(2 128 )の演算相当の)より高い安全性を提供することができる。 Changing the aspect, in the case of using the same F (2 64) operation on the far it is possible to provide a high degree of safety than the (F calculation equivalent (2128)).
高速化の観点では,一般にF(2 64 )上の乗算はF(2 32 )上のそれに比べ4倍の計算量がかかるが,実施例3では In terms of speed, typically F (2 64) on the multiplication F (2 32) on it four times the amount of calculation according comparison, in Example 3
1/4の計算量の演算を2回繰り返すので事実上2倍の高速処理が可能となる。 In fact 2 times faster processing because repeated operation 1/4 calculated amount 2 times becomes possible.
安全性の補強という観点では,F(2 64 )上の演算と64ビットのフィードバック値を2度用いることで,改ざんの成功確率を,上記手法の2 -64から2 -128へより小さくすることができる。 From the viewpoint of reinforcement of the safety, the use F (2 64) on the operation and 64-bit feedback value twice, the probability of successful tampering, be from 2-64 2 -128 Heyori smaller of the technique can.
この高速化手法として暗号化処理PROG1の代わりに同じく暗号化処理PROG1B,復号化処理PROG3の代わりに同じく復号化処理PROG3Bをそれぞれ使う装置を考える。 The Fast Method same encryption process PROG1B instead of encryption PROG1 as, consider a device using the respective same decoding processing PROG3B instead of the decoding process PROG3.
【0050】 [0050]
暗号化処理PROG1Bは,図1に示すPROG1_1009において,乱数生成サブルーチン(ステップ20004)と暗号化サブルーチン(ステップ20005)をそれぞれ乱数生成3サブルーチン21504と暗号化3サブルーチン21505に置き換えたものである。 Encryption process PROG1B, in PROG1_1009 shown in FIG. 1 is replaced by a random number generation subroutine (step 20004) and encryption subroutine (step 20005), respectively random number generation 3 subroutine 21504 and encryption 3 subroutine 21505. 暗号化処理PROG1Bの処理の流れを図18を用いて説明する。 It will be described with reference to FIG. 18 a flow of processing of the encryption processing PROG1B.
ステップ21502:データセットサブルーチン。 Step 21502: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ21503:平文準備サブルーチン。 Step 21503: plain text preparation subroutine. 平文の入力を待ち,平文が与えられたあと決められたパディングを行い,冗長性を付加して,最後に32ビットごとに区切って平文ブロックの列P i (1≦i≦n)を出力する。 Waits for input of the plaintext, performs padding plaintext has been determined after a given, by adding redundancy, and outputs a column of plaintext blocks P i (1 ≦ i ≦ n ) and finally divided into every 32-bit .
ステップ21504:乱数生成3サブルーチン。 Step 21504: random number generation 3 subroutine. 秘密鍵Kから,擬似乱数列A i (1≦i≦n),Ba,Bbを出力する。 From the secret key K, the pseudo random number sequence A i (1 ≦ i ≦ n ), Ba, and outputs the Bb.
ステップ21505:暗号化3サブルーチン。 Step 21505: encryption 3 subroutine. 擬似乱数列A i ,Ba,Bb,平文ブロック列P i (1≦i≦n),初期値Vを使って,暗号文ブロック列C i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, Ba, Bb, plaintext block sequence P i (1 ≦ i ≦ n ), with the initial value V, and outputs the ciphertext block column C i (1 ≦ i ≦ n ).
ステップ21506:ステップ21505で得られた暗号文ブロックC i (1≦i≦n)を順にビット連結し,暗号文Cとして出力する。 Step 21506: order bit-linked resulting ciphertext block C i a (1 ≦ i ≦ n) in step 21505, and outputs the ciphertext C.
【0051】 [0051]
乱数生成3サブルーチン21504の処理を図19を用いて説明する。 The processing of the random number generator 3 subroutine 21504 will be described with reference to FIG. 19.
ステップ21602:必要パラメータの入力。 Step 21602: the necessary parameter input. パディング後のメッセージブロック数nと,秘密鍵Kを得る。 And message number of blocks n after padding, the secret key K.
ステップ21603:擬似乱数列Aの生成。 Step 21603: the generation of pseudo-random number sequence A. 乱数生成処理プログラムPROG2を呼び出し,長さ32nビットの擬似乱数列を生成,出力をAとする。 Call the random number generation processing program PROG2, it generates a pseudo-random number sequence of length 32n bits, the output to A.
ステップ21604:乱数列Aをブロックに分割。 Step 21604: dividing the random number sequence A into blocks. 擬似乱数列Aを32ビットごとに区切り順にA 1 ,A 2 , …,A nとする。 A 1, A 2 a pseudorandom number sequence A to delimit order by 32 bits, ..., and A n.
ステップ21605:乱数Baの生成。 Step 21605: the random number Ba generation. 秘密鍵Kを使ってPROG2を実行することにより32ビットの乱数Baを生成する。 Generating a 32-bit random number Ba by executing PROG2 using the private key K.
ステップ21606:ステップ21605で生成されたBaが0ならば,ステップ21605に戻る。 Step 21606: If the Ba which has been generated in step 21605 is 0, the process returns to step 21605.
ステップ21607:乱数Bbの生成。 Step 21607: the random number generation Bb. 秘密鍵Kを使ってPROG2を実行することにより32ビットの乱数Bbを生成する。 Generating a 32-bit random number Bb by executing PROG2 using the private key K.
ステップ21608:ステップ21607で生成されたBbが0ならば,ステップ21607に戻る。 Step 21608: If the Bb which has been generated in step 21607 is 0, the process returns to step 21607.
【0052】 [0052]
暗号化3サブルーチン21505の処理を図20を用いて説明する。 It will be described with reference to FIG. 20 the process of encryption 3 subroutine 21505. 記号「*」,「^」はそれぞれ有限体F(2 32 )上での乗算,加算を表す。 Symbol "*", "^" is each multiplication on the finite field F (2 32), representing an addition.
ステップ21702:初期値セット。 Step 21702: initial value set. FA 0 =FB 0 =Vとする。 FA 0 = FB 0 = and V.
ステップ21703:カウンタ初期化。 Step 21703: counter initialization. i=1とする。 And i = 1.
ステップ21704:フィードバック値FA i計算。 Step 21704: feedback value FA i calculation.
FA i =P i ^A iとする。 And FA i = P i ^ A i .
ステップ21705:フィードバック値FB i計算。 Step 21705: feedback value FB i calculation.
FB i =(FA i *Ba)^FA i-1とする。 FB i = (FA i * Ba ) ^ and FA i-1.
ステップ21706:暗号文ブロックC i計算。 Step 21706: ciphertext block C i calculation.
C i =(FB i *Bb)^FB i-1とする。 C i = (FB i * Bb ) ^ and FB i-1.
ステップ21707:i=nならばステップ21709を実行。 Step 21707: i = n if execute the step 21709.
ステップ21708:カウンタiをインクリメントしステップ21704へ戻る。 Step 21708: increments the counter i to return to step 21704.
【0053】 [0053]
復号化処理PROG3Bの処理の流れを図21を用いて説明する。 The processing flow of the decoding process PROG3B be described with reference to FIG. 21. PROG3Bは,PROG3_10020において,乱数生成サブルーチン20504と復号化サブルーチン20505をそれぞれ乱数生成3サブルーチン21804と復号化3サブルーチン21805に置き換えたものである。 PROG3B, in PROG3_10020, is replaced with the random number generation subroutine 20504 the decoding subroutine 20505, each random number generation 3 subroutine 21804 and the decoding 3 subroutine 21805.
ステップ21802:データセットサブルーチン。 Step 21802: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ21803: 暗号文準備サブルーチン。 Step 21803: ciphertext preparation subroutine. 暗号文C'の入力を待ち,暗号文C'が与えられたあと32ビットごとに区切って暗号文ブロックの列C' i (1≦i≦n)を出力する。 'Wait for input ciphertext C' ciphertext C separated every after 32 bits given to a column ciphertext block C 'i (1 ≦ i ≦ n).
ステップ21804:乱数生成サブルーチン。 Step 21804: random number generation subroutine. 秘密鍵Kから,擬似乱数列A i (1≦i≦n), Ba,Bbを出力する。 From the secret key K, the pseudo random number sequence A i (1 ≦ i ≦ n ), Ba, and outputs the Bb.
ステップ21805:復号化サブルーチン。 Step 21805: decryption subroutine. 擬似乱数列A i ,Ba,Bb,暗号文ブロック列C' i (1≦i≦n),初期値Vを使って,平文ブロック列P' i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, Ba, Bb, ciphertext block column C 'i (1 ≦ i ≦ n), with the initial value V, the plaintext block sequence P' outputs a i (1 ≦ i ≦ n) .
ステップ21806:平文切り出しサブルーチン。 Step 21806: plain text cut out subroutine. 平文ブロックの列P' iを3つのデータ列,L',M',Z'に分割する。 'Three data columns i, L' column P plaintext block, M ', Z' is divided into.
ステップ21807:冗長性切り出しサブルーチン。 Step 21807: redundancy cut subroutine. Z'をR'とT'に分割する。 'The R' Z is divided into a T '.
ステップ21808:T=0かつR'=Rならばステップ21810に進む。 Step 21808: the process proceeds to T = 0 and R '= R if step 21810.
ステップ21809:拒否を出力。 Step 21809: outputs a rejection. ステップ21811に進む。 The process proceeds to step 21811.
ステップ21810:M'をRAMへ格納する。 Step 21810: to store the M 'to RAM.
【0054】 [0054]
図21の復号化3サブルーチン21805の処理を図22を用いて説明する。 It will be described with reference to FIG. 22 the decoding processing 3 subroutine 21805 in FIG. 記号「/」は有限体F(2 32 )上での除算を表す。 The symbol "/" denotes division in over finite field F (2 32).
ステップ21902:初期値セット。 Step 21902: initial value set. FA' 0 =FB' 0 =Vとする。 FA '0 = FB' and 0 = V.
ステップ21903:1/Ba,1/Bbを事前計算しておく。 Step 21903: keep pre-calculate the 1 / Ba, 1 / Bb.
ステップ21904:カウンタ初期化。 Step 21904: counter initialization. i=1とする。 And i = 1.
ステップ21905:フィードバック値FB' i計算。 Step 21905: feedback value FB 'i calculation.
FB' i =(C' i ^FB' i-1 )*(1/Bb)とする。 FB 'i = (C' i ^ FB 'i-1) * and (1 / Bb).
ステップ21906:フィードバック値FA' i計算。 Step 21906: feedback value FA 'i calculation.
FA' i =(FB' i ^FA' i-1 )*(1/Ba)とする。 FA 'i = (FB' i ^ FA 'i-1) * and (1 / Ba).
ステップ21907:平文ブロックP' i計算。 Step 21907: plaintext blocks P 'i calculation. P' i =FA' i ^A iとする。 And P 'i = FA' i ^ A i.
ステップ21908:i=nならばステップ21910を実行。 Step 21908: i = n if execute the step 21910.
ステップ21909:カウンタiをインクリメントしステップ21905へ戻る。 Step 21909: increments the counter i to return to step 21905.
【0055】 [0055]
図23は,上述の高速化手法で用いた暗号化処理の説明図である。 Figure 23 is an illustration of the encryption process used in the speed-up method described above.
メッセージM21921に長さL21920,適当なパディング21922,冗長性R21923をそれぞれ付加し,平文P21924を生成する。 Message M21921 in length L21920, suitable padding 21922, redundancy R21923 added respectively, to generate the plaintext P21924.
これを32ビットに分割したものをそれぞれP 1 _21925,P 2 _21926,P 3 _21927,P n _21928とする。 This 32-bit to the divided ones, respectively P 1 _21925, P 2 _21926, P 3 _21927, and P n _21928.
P 1 _21925はA 1 _21933と排他論理和を取り,フィードバック値FA 1 _21934とし,Ba_21929と有限体上の乗算を行い,その結果と初期値FA 0 _21930の排他論理和により,フィードバック値FB 1 _21939を得る。 P 1 _21925 takes the exclusive logical OR between A 1 _21933, the feedback value FA 1 _21934, performs multiplication on Ba_21929 and finite, the exclusive OR of the result and the initial value FA 0 _21930, feedback value FB 1 _21939 obtained. これをBb_21931と有限体上の乗算を行い,その結果と初期値FB 0 _21932の排他論理和により暗号文ブロックC 1 _21936を得る。 This performs multiplication on Bb_21931 and finite, to obtain a ciphertext block C 1 _21936 by exclusive-OR of the result and the initial value FB 0 _21932. P 2 _21926はA 2 _21937と排他論理和を取り,フィードバック値FA 2 _21942とし,Ba_21929と有限体上の乗算を行い,その結果とフィードバック値FA 1 _21934の排他論理和により,フィードバック値FB 2 _21943を得る。 P 2 _21926 takes the exclusive logical sum and A 2 _21937, the feedback value FA 2 _21942, performs multiplication on Ba_21929 and finite, the exclusive OR of the result and the feedback value FA 1 _21934, feedback value FB 2 _21943 obtained. これをBb_21931と有限体上の乗算を行い,その結果とフィードバック値FB 1 _21939の排他論理和により暗号文ブロックC 2 _21940を得る。 This performs multiplication on Bb_21931 and finite, to obtain a ciphertext block C 2 _21940 by exclusive logical sum of the result and the feedback value FB 1 _21939.
同様にしてP n _21928まで処理を行い,暗号文ブロックC 1 _21936,C 2 _21940,C 3 _21944, …,C n _21950を得たあと,これらをこの順で連結し Performs processing to P n _21928 Similarly, ciphertext block C 1 _21936, C 2 _21940, C 3 _21944, ..., after obtaining the C n _21950, connecting them in this order
,暗号文C_21951を得る。 , You get the ciphertext C_21951.
【0056】 [0056]
図24は,対応する復号化処理の説明図である。 Figure 24 is an illustration of a corresponding decoding process.
暗号文C'_21960は32ビットのブロックに分割し,C' 1 _21961,C' 2 _21962,C' 3 _21963, …,C' n _21964とする。 Ciphertext C'_21960 is divided into 32-bit blocks, C '1 _21961, C' 2 _21962, C '3 _21963, ..., C' and n _21964.
C' 1は初期値FB' 0 _21965と排他的論理和をとり,その結果と1/Bb_21966の乗算を計算する。 C '1 the initial value FB' an exclusive OR operation between 0 _21965, computes the multiplication of the result and 1 / Bb_21966. この結果をフィードバック値FB' 1 _21969とする。 The results and feedback value FB '1 _21969. さらに,初期値FA' 0 _21967と排他的論理和をとり,その結果と1/Ba_21968の乗算を計算する。 Furthermore, the initial value FA '0 _21967 and exclusive-ORed, to calculate the multiplication of the result and 1 / Ba_21968. 平文ブロックP' 1 _21972はフィードバック値FA' 1 _21970とA 1 _21971との排他論理和により得られる。 Plaintext blocks P '1 _21972 feedback value FA' obtained by the exclusive logical sum of the 1 _21970 and A 1 _21971.
C' 2 _21962,C' 3 _21976, …,C' n _21964も同様に処理を行い,得られた平文ブロックP' 1 _21972,P' 2 _21976,P' 3 _21980, …,P' n _21985を連結し平文P'_21986とする。 C '2 _21962, C' 3 _21976, ..., C 'n _21964 also perform the same procedure, the resulting plaintext block P' 1 _21972, P '2 _21976, P' 3 _21980, ..., a P 'n _21985 linked to the plaintext P'_21986. これをL'_21987,M'_21988,Z'_21989に分割後,さらにZ'_21989をT'_21992とR'_21993に分割し,冗長性のチェックを行う。 This L'_21987, M'_21988, after division into Z'_21989, divides further the Z'_21989 to T'_21992 and R'_21993, a check is made redundant.
【0057】 [0057]
(実施例4) 以下に示す実施例4では,上述の平文準備において, 平文にパディングする情報として,メッセージの長さ情報を使うことなく,暗号処理の開始を可能にする方法である In Example 4 shown in Example 4 below, in the above plaintext preparation, as information to be padded to the plaintext, without using the length information of the message, which is a method that allows the start of the encryption processing. 実施例 4 では,実施例2における暗号化処理PROG1A中の乱数生成2サブルーチン,平文準備サブルーチン,および復号化処理プログラムPROG3Aのかわりに,それぞれ乱数生成サブルーチン4,平文準備サブルーチン2,復号化処理プログラムPROG6を使う。 In Example 4, the random number generation 2 subroutine in the encryption process PROG1A in Example 2, the plaintext preparation subroutines, and instead of the decoding processing program PROG3A, respectively the random number generation subroutine 4, plaintext preparation subroutine 2, the decoding processing program PROG6 use.
【0058】 [0058]
乱数生成4サブルーチンの処理を図29を用いて説明する。 The random number generation 4 subroutine process will be described with reference to FIG. 29.
ステップ40212:必要パラメータの入力。 Step 40212: the necessary parameter input. パディング後のメッセージブロック数nと,秘密鍵Kを得る。 And message number of blocks n after padding, the secret key K.
ステップ40213:擬似乱数列Aの生成。 Step 40213: the generation of pseudo-random number sequence A. 乱数生成処理プログラムPROG2を呼び出し,長さ64nビットの擬似乱数列を生成,出力をAとする。 Call the random number generation processing program PROG2, it generates a pseudo-random number sequence of length 64n bits, the output to A.
ステップ40214:乱数列Aをブロックに分割。 Step 40214: dividing the random number sequence A into blocks. 擬似乱数列Aを64ビットごとに区切り順にA 1 ,A 2 , …,A nとする。 A 1, A 2 a pseudorandom number sequence A to delimit order by 64 bits, ..., and A n.
ステップ40215:乱数Bの生成。 Step 40215: the random number B generated. 秘密鍵Kを使ってPROG2を実行することにより64ビットの乱数Bを生成する。 Generating a 64-bit random number B by executing the PROG2 using the private key K.
ステップ40216:ステップ40105で生成されたBが0ならば,ステップ40105に戻る。 Step 40216: If B generated in step 40105 is 0, the flow returns to step 40105.
ステップ40217:乱数Qの生成。 Step 40217: the random number Q generation. 秘密鍵Kを使ってPROG2を実行することにより64ビットの乱数Qを生成する。 To generate a 64-bit random number Q by executing a PROG2 using the private key K.
【0059】 [0059]
次に、平文準備2サブルーチンの処理を図30,図31を用いて説明する。 Next, FIG 30 the process of the plaintext preparation 2 subroutine will be explained with reference to FIG. 31.
ステップ40202:暗号化処理対象となるメッセージM40300の入力を待つ。 Step 40202: wait for the input of the message M40300 to be the encryption processing target. メッセージM40300は,キーボード10008から入力されたり,RAM内に保存されていたり,他の媒体から導入されたりする。 Message M40300 is or is input from a keyboard 10008, or are stored in the RAM, and or introduced from other media.
ステップ40203:メッセージ長をそろえるパディング。 Step 40203: padding to align the message length. のちの暗号処理のため、パディング後のデータを64ビットの整数倍にする。 For cryptographic processing later, the data after padding to an integral multiple of 64 bits. メッセージM40300の長さをLビットとすると64―L(mod 64)個の0をメッセージの末尾にパディングする。 When the length of the message M40300 and L bits to pad the 64-L (mod 64) zeros to the end of the message.
ステップ40204:秘密データのパディング。 Step 40204: padding of secret data. 64ビット秘密データとして与えられる秘密データQ40302をさらに末尾にパディングする。 Further padding to the end of the secret data Q40302 given as a 64-bit secret data. この秘密データQ40302は鍵を知るものだけが知る情報であり、例えば秘密鍵Kから生成される乱数などが考えられる。 The secret data Q40302 is information only those knowing the key know, for example, random numbers generated from the secret key K is considered. 上記ステップ40217はこのための処理である。 Step 40217 is the process for this.
ステップ40205:冗長性データのパディング。 Step 40205: padding redundancy data. 64ビットデータとして与えられる冗長性R40303をさらに末尾にパディングする。 Further padding to the end redundancy R40303 given as 64-bit data.
ステップ40206:メッセージデータの平文ブロックへ分割。 Step 40206: divided into plaintext blocks of message data. ステップ40205の結果得られたデータP40304を64ビットのブロックに区切り順にP 1 ,P 2 , …,P nとする。 P 1, P 2 resulting data P40304 step 40205 to 64 bit block delimiter order ..., and P n.
【0060】 [0060]
復号化処理PROG6の処理の流れを図32,図34を用いて説明する。 The processing flow of the decoding process PROG6 32 will be described with reference to FIG. 34.
ステップ40402:データセットサブルーチン。 Step 40402: The data set subroutine. 初期値V,冗長性R,秘密鍵Kの入力を待つ。 Initial value V, redundancy R, wait for the input of the secret key K.
ステップ40403:暗号文準備サブルーチン。 Step 40403: ciphertext preparation subroutine. 暗号文C'の入力を待ち,暗号文C'が与えられたあと32ビットごとに区切って暗号文ブロックの列C' i (1≦i≦n)を出力する。 'Wait for input ciphertext C' ciphertext C separated every after 32 bits given to a column ciphertext block C 'i (1 ≦ i ≦ n).
ステップ40404:乱数生成4サブルーチン。 Step 40404: random number generation 4 subroutine. 秘密鍵Kから,擬似乱数列A i (1≦i≦n),Bを出力する。 From the secret key K, the pseudo random number sequence A i (1 ≦ i ≦ n ), and outputs the B.
ステップ40405:復号化3サブルーチン。 Step 40405: decryption 3 subroutine. 擬似乱数列A i ,B,Q,暗号文ブロック列C' i (1≦i≦n),初期値Vを使って,平文ブロック列P' i (1≦i≦n)を出力する。 Pseudorandom number sequence A i, B, Q, ciphertext block column C 'i (1 ≦ i ≦ n), with the initial value V, the plaintext block sequence P' outputs a i (1 ≦ i ≦ n) .
ステップ40406:平文切り出し2サブルーチン。 Step 40406: plain text cut out 2 subroutine. 平文ブロックの列P' i 40601を3つのデータ列,M'40602,Q'40603,R'40604に分割する。 Column P 'i 40 601 plaintext block three data strings, M'40602, Q'40603, divided into R'40604.
ステップ40407:Q'40603=Q40302 かつR'40604=R40303ならばステップ40409に進む。 Step 40407: proceed to Q'40603 = Q40302 and R'40604 = R40303 if step 40409.
ステップ40408:拒否を出力。 Step 40408: outputs a rejection. ステップ40410に進む。 The process proceeds to step 449.00.
ステップ40409:M'をRAMへ格納する。 Step 40409: to store the M 'to RAM.
ステップ40410:終了。 Step 449.00: end.
【0061】 [0061]
次に平文切り出し2サブルーチンの処理を図33を用いて説明する。 Will now be described with reference to FIG. 33 the processing of the plaintext cutout 2 subroutine.
ステップ40502:復号文のうち、最後の128ビットを除く全データを、平文ブロックM'とする。 Step 40502: Of decrypted text, all data except for the last 128 bits and plaintext blocks M '.
ステップ40503:処理40502の残りの128ビットのうち、上位64ビットをQ'とする。 Step 40503: Of the remaining 128 bits of the process 40502, the upper 64 bits and Q '.
ステップ20804:さらに残りのデータ(64ビット)をR'とする。 Step 20804: In addition the remaining data (64 bits) and R '.
【0062】 [0062]
(実施例5) (Example 5)
上記実施例1から4は並列計算を考えない単一プロセッサによる処理の実施形態であった。 4 from the Example 1 was embodiment of a processing by a single processor without considering the parallel computation. 実施例5において,本発明が並列処理への応用も簡単であることを示す。 In Example 5, it shows that the present invention is easy application to parallel processing.
実施例5のシステム構成(図示していない)が,図1の構成と異なるのは,コンピュータA10002については,CPU10004の代わりにCPU1_30004,CPU2_30005を装備しており,RAM10005には,図1の構成に加えて並列暗号処理プログラムPROG4_30016が保存されている点である。 System Configuration Example 5 (not shown) is different from the configuration of FIG. 1, for computers A10002 is CPU1_30004 instead of CPU10004, equipped with a CPU2_30005, the RAM10005, the configuration of FIG. 1 in addition the parallel encryption processing program PROG4_30016 and is a point that is stored. コンピュータB10003については, For computer B10003 is,
CPU10015の代わりにCPU1_30017,CPU2_30018を装備しており,RAM10016には,図1の構成に加えて並列復号処理プログラムPROG5_30025が保存されている点が異なる。 Instead of CPU10015 CPU1_30017, equipped with a CPU2_30018, the RAM10016, that parallel decoding processing program PROG5_30025 in addition to the configuration of FIG. 1 are stored are different.
コンピュータA10002は,並列暗号化処理プログラムPROG4_30016を実行し,メッセージM10014の暗号文C10022を作成し,送信する。 Computer A10002 is to perform parallel cryptographic processing program PROG4_30016, to create a ciphertext C10022 message M10014, transmits. コンピュータB10003は,暗号文C10022を受信したあと,並列復号化処理プログラムPROG5_30025を実行し,もし改ざんが検出されなければ復号化結果をRAM10016に保存する。 Computer B10003, then after receiving the ciphertext C10022, perform the parallel decoding processing program PROG5_30025, tampering if saves the decoding results to be detected RAM10016.
並列暗号化処理プログラムPROG4_30016は,コンピュータA10002において,RAM10005から読み出されて,CPU1_30004とCPU2_30005により実行されることで実現される。 Parallel encryption processing program PROG4_30016, in computer A10002, are read from RAM10005, it is realized by being executed by CPU1_30004 and CPU2_30005. 並列暗号化処理プログラムPROG4_30016は,サブルーチンとして暗号化処理プログラムPROG1_10009,乱数生成処理PROG2_10010を内部で呼び出し,実行する。 Parallel encryption processing program PROG4_30016 an encryption processing program PROG1_10009, a random number generation process PROG2_10010 call internally as a subroutine is executed.
並列復号化処理プログラムPROG5_30025は,コンピュータB10003において,RAM10016から読み出されてCPU1_30017とCPU2_30018により実行される。 Parallel decoding program PROG5_30025, in computer B10003, executed by CPU1_30017 and CPU2_30018 read from RAM10016. 並列復号化処理プログラムPROG5_30025は,サブルーチンとして復号化処理プログラムPROG3_10020,乱数生成処理PROG2_10021を内部で呼び出し,実行する。 Parallel decoding program PROG5_30025 the decoded program PROG3_10020, a random number generation process PROG2_10021 call internally as a subroutine is executed.
その他の構成,動作は図1と同じである。 Other configurations, operation is the same as FIG.
【0063】 [0063]
並列暗号化処理プログラムPROG4_30016の処理の流れを図25を用いて説明する。 The flow of processing of the parallel encryption processing program PROG4_30016 be described with reference to FIG. 25. 記号「A||B」はビット列AとBの連結を示す。 The symbol "A || B" indicates concatenation of bit strings A and B.
ステップ40002:CPU1の実行するメッセージ処理によりメッセージMをM 1 ,M 2に2分割する。 Step 40002: 2 split the message M to M 1, M 2 by the message processing executed by the CPU 1.
ステップ40003:CPU1が実行するPROG1_10009による暗号化処理により,初期値V+1,冗長性R+1,秘密鍵K,平文M 1 ,を使って,暗号文C 1を出力する。 Step 40003: the encryption processing by PROG1_10009 the CPU1 executes the initial value V + 1, redundancy R + 1, using the secret key K, the plaintext M 1, and outputs the ciphertext C 1.
ステップ40004:CPU2が実行するPROG1_10009による暗号化処理により,初期値V+2,冗長性R+2,秘密鍵K,平文M 2 ,を使って,暗号文C 2を出力する。 Step 40004: CPU 2 by the encryption process by PROG1_10009 that executes the initial value V + 2, the redundancy R + 2, with the secret key K, the plaintext M 2, and outputs the ciphertext C 2.
ステップ40005:CPU1が実行するPROG1_10009による暗号化処理により,初期値V,冗長性R,秘密鍵K,平文(R 1 ||R 2 ),を使って,暗号文C 3を出力する。 Step 40005: the encryption processing by PROG1_10009 the CPU1 executes the initial value V, the redundancy R, the secret key K, the plaintext (R 1 || R 2), using, and outputs the ciphertext C 3.
ステップ40006:暗号文Cの生成。 Step 40006: generation of the ciphertext C. C=C 1 ||C 2 ||C 3とする。 And C = C 1 || C 2 || C 3.
ステップ40007:暗号文Cをメモリへ保存並列復号化処理プログラムPROG5_30025の処理の流れを図26を用いて説明する。 Step 40007: is described with reference to FIG. 26 the flow of processing of the ciphertext C Save parallel decoding processing program into the memory PROG5_30025.
ステップ40102:CPU1の実行する暗号文処理により暗号文C'をC' 1 ,C' 2 ,C' 3に3分割する。 Step 40102: 'a C' ciphertext C 1, C '2, C' 3 3 divides the ciphertext processing executed by the CPU 1. C' 3は192ビットであり,C' 1 ,C' 2は同じ長さ,かつC'=C' 1 ||C' 2 ||C' 3である。 C '3 is 192 bits, C' 1, C '2 are the same length, and C' = C '1 || C ' is 2 || C '3.
ステップ40103:CPU1が実行するPROG3_10020による復号化処理により,初期値V+1,冗長性R+1,秘密鍵K,暗号文ブロックC' 1 ,を使って,復号化を行い結果を保存する。 Step 40103: the decoding process by PROG3_10020 the CPU1 executes the initial value V + 1, redundancy R + 1, using the secret key K, ciphertext block C '1, and stores the results performs decoding.
ステップ40104:CPU2が実行するPROG3_10020による復号化処理により,初期値V+2,冗長性R+2,秘密鍵K,暗号文ブロックC' 2を使って,復号化を行い,結果を保存する。 Step 40104: the decoding process by PROG3_10020 that CPU2 is executed, the initial value V + 2, the redundancy R + 2, the secret key K, by using the ciphertext block C '2, performs decoding, and save the results.
ステップ40105:ステップ40103の復号化結果,ステップ40104の復号化結果のうち少なくともひとつが非受理ならばステップ40111を実行する。 Step 40105: the decoding result of step 40103, at least one of the decoding result of step 40104 executes the step 40111, if the non-acceptance.
ステップ40106: CPU1が実行するPROG3_10020による復号化処理により,初期値V,冗長性R,秘密鍵K,暗号文ブロックC' 3を使って,復号化を行い,結果を保存する。 Step 40106: the decoding process by PROG3_10020 the CPU1 executes the initial value V, the redundancy R, the secret key K, by using the ciphertext block C '3, performs decoding, and save the results.
ステップ40107:ステップ40106の復号化結果が非受理ならばステップ40111を実行する。 Step 40107: the decoding result of step 40106 executes the step 40111, if the non-acceptance.
ステップ40108:ステップ40106の復号化結果が(R+1)||(R+2)でないなら,ステップ40111を実行する。 Step 40108: If the decoding result of step 40106 is (R + 1) is not a || (R + 2), it executes Step 40111.
ステップ40109:復号化結果M'=M' 1 ||M' 2とする。 Step 40109: the decoded result M '= M' 1 || M '2.
ステップ40110:M'をメモリへ格納し,ステップ40112を実行する。 Step 40110: Stores M 'to the memory, executes Step 40112.
ステップ40111:非受理を出力する。 Step 40111: to output the non-acceptance.
【0064】 [0064]
実施例5により独立な二つのプロセッサを使った並列暗号処理が可能となる。 Parallel cryptographic processing using two processors independent by Example 5 is made possible.
図27は,上述の並列化手法で用いた暗号化処理の説明図である。 Figure 27 is an illustration of the encryption process using a parallel technique described above.
メッセージM401402を分割して生成したM 1 _40141,M 2 _40142にそれぞれ冗長性,R+1,R+2を付加した,40143,40144を暗号化処理40146,40147により暗号化,暗号文ブロックC 1 _40149,C 2 _40150を得る。 M 1 _40141 generated by dividing the message M401402, respectively redundancy M 2 _40142, was added to R + 1, R + 2, encrypted by the encryption processing 40146,40147 the 40143,40144, ciphertext block C 1 _40149, obtain C 2 _40150.
さらに冗長性R+1,R+2をメッセージとして冗長性をR使って暗号化し,暗号文ブロックC 3 _40151を得る。 Further encrypted with R redundancy redundancy R + 1, R + 2 as a message, to obtain a ciphertext block C 3 _40151.
暗号文ブロックC 1 _40149,C 2 _40150,C 3 _40151を連結し暗号文C40152として出力する。 Ciphertext block C 1 _40149, C 2 _40150, connecting the C 3 _40151 output as ciphertext C40152.
【0065】 [0065]
図28は,対応する並列復号化処理の説明図である。 Figure 28 is an illustration of a corresponding parallel decoding processing.
暗号文C'40160を3分割し,C' 1 _40161,C' 2 _40162,C' 3 _40163を生成する。 Ciphertext C'40160 3 divided, C '1 _40161, C' 2 _40162, generates the C '3 _40163.
それぞれを復号化処理40164,40165,40166により復号化,平文ブロック40167,40168,40169を得る。 Decoding by the decoding process 40164,40165,40166 respectively, obtaining a plaintext block 40167,40168,40169.
【0066】 [0066]
これらすべてが受理であって,平文ブロック40167,40168の冗長性が,平文ブロック40169のメッセージ部と同じであり,さらに平文ブロック40169が予め共有されている冗長性であれば,平文ブロック40167,40168からそれぞれメッセージ部M' 1 _40170,M' 2 _40171を取り出し,これらを連結してメッセージM'40172を得る。 A all of which received redundancy plaintext block 40167,40168 is the same as the message portion of the plaintext block 40169, In ​​addition, if redundancy plaintext block 40169 is shared in advance, plaintext block 40167,40168 each message unit M from '1 _40170, M' 2 Remove _40171, get messages M'40172 consolidate them.
【0067】 [0067]
以上の各実施例におけるCPUはプログラムを実行するものであれば,汎用,専用を問わず用いることができる。 If CPU intended to execute the program in each embodiment described above, it is possible to use both general purpose and dedicated. また,各実施例は,CPUがプログラムを実行することにより実現される例であったが,各処理を専用のハードウェアを用いても,高速にかつ,低価格で実現することも可能である。 Each embodiment has CPU was an example which is realized by executing a program, even using dedicated hardware each process, and a high speed, it is also possible to realize low-cost .
【0068】 [0068]
以上の各実施例での擬似乱数生成器として,これまで知られている擬似乱数生成器はどれも適用可能である。 More as a pseudo random number generator in each of the embodiments, a pseudo-random number generator known heretofore which is also applicable. 線形フィードバックレジスタ(LFSR)に基づく非線形フィルタによる擬似乱数生成器、非線形フィードバックシフトレジスタ、結合生成器、縮小生成器、クロック制御式擬似乱数生成器、Geffe生成器、相互ステップ生成器、RC4、SEAL、PANAMA、ブロック暗号のOFBモード、ブロック暗号のカウンタモード、その他ハッシュ関数を使った擬似乱数生成器などを用いることができる。 Pseudo-random number generator by a nonlinear filter based on linear feedback register (LFSR), a non-linear feedback shift register, coupled generator, reduced generator, clock controlled pseudo-random number generator, Geffe generator, cross step generator, RC4, SEAL, PANAMA, OFB mode of the block cipher, the block cipher counter mode, or the like can be used pseudorandom number generator with other hash functions.
【0069】 [0069]
(実施例6) (Example 6)
上記実施例1から実施例5は暗号処理を目的とした実施形態であった。 Example From the above Example 1 5 was embodiments for the purpose of cryptographic processing. 実施例6以降において,本発明がさまざまな情報システムへの応用も可能であることを示す。 In Example 6 and later, indicating that the invention can be also applied to various information systems.
図35はネットワーク50009によって接続されたコンピュータA50016,コンピュータB50017を含む,コンピュータA50009からコンピュータB50016への暗号通信を目的としたシステム構成を示すものである。 Figure 35 is illustrates a computer A50016 connected by a network 50009, including computer B50017, the system configuration for the purpose of cryptographic communications to computer B50016 from computer A50009. コンピュータA50009は内部にCPU50007, RAM50001,ネットワークインターフェース装置50008を装備している。 Computer A50009 Inside the CPU50007, RAM50001, equipped with a network interface device 50008. RAM50001には鍵交換プロトコルを行うための鍵交換プロトコルソフトウェア_50002,センターの公開鍵50004、秘密鍵生成プログラム50003、暗号プログラム50006、そして暗号通信を行いたい通信データ50005(上記各実施例におけるメッセージMに相当)が保存されている。 RAM50001 key exchange protocol software _50002 for performing a key exchange protocol, the public key 50004 of the center, the secret key generation program 50003, an encryption program 50006, and a message in the communication data 50005 (above-described embodiments to be performed encryption communication M equivalent) is stored in. コンピュータB50017は内部にCPU50014,RAM50010,ネットワークインターフェース装置50015を装備している。 Computer B50017 Inside the CPU50014, RAM50010, equipped with a network interface device 50015. RAM50010には鍵交換プロトコルソフトウェア_50011,復号化プログラム50013が保存されている。 Key exchange protocol software _50011 in RAM50010, decryption program 50013 is stored.
【0070】 [0070]
コンピュータAは秘密鍵生成プログラム50003を実行することにより、コンピュータB50017との暗号通信に用いる秘密鍵を生成する。 Computer A by executing a secret key generation program 50003 to generate a secret key used for encrypted communication with the computer B50017. 次に、コンピュータA50016とコンピュータB50017は、それぞれ各々の鍵交換プロトコルソフトウェア50002、50011を実行することで、コンピュータAが生成した秘密鍵を共有する。 The computer A50016 and computer B50017, by executing each of the key exchange protocol software 50002,50011 respectively, share a secret key that computer A is generated.
【0071】 [0071]
秘密鍵を共有した後,コンピュータA50016は本発明に基づく暗号プログラム50006を実行することで、通信データ50005を高速に暗号処理する。 After sharing a secret key, the computer A50016 is by executing the encryption program 50006 according to the present invention, the cryptographic processing communication data 50005 to the high speed. コンピュータA50016は結果得られた暗号処理結果をネットワークインターフェース装置50008を用いて、ネットワーク50009を通じてコンピュータB50017に送信する。 Computer A50016 is a cryptographic processing result obtained as a result using the network interface device 50008 transmits to the computer B50017 through a network 50009.
【0072】 [0072]
コンピュータB50017は本発明による復号プログラム50013を実行することで、受信した暗号文を高速に復号処理し、通信データを復号化する。 Computer B50017 is by executing the decryption program 50013 according to the present invention, and decoding the received ciphertext faster to decrypt the communication data.
【0073】 [0073]
本実施例では本発明を使うことにより、ハードウェア資源が限られた場合であっても、高速かつ安全な暗号通信が可能となる例を示している。 By using the present invention in this embodiment, even if the hardware resources are limited, an example in which fast and secure cryptographic communication can be. つまり、従来の暗号方式よりも高速であり、かつ、秘匿のみならず数学的に証明された改竄検知の機能を備える高い安全性を備えた暗号通信システムを実現可能である。 That is faster than conventional cryptography, and it is possible to realize a cryptographic communication system having a high safety having a function of becoming not mathematically proven falsification detecting concealed only.
【0074】 [0074]
(実施例7) (Example 7)
上記実施例6は暗号処理をソフトウェアによる実装の実施形態であった。 Example 6 above was an embodiment of the implement encryption processing by software. 実施例7において,本発明がハードウェア実装も可能であることを示す。 In Example 7, indicating that the invention can be also hardware implementation.
図36はネットワークを用いた暗号通信システムにおける暗号化処理装置の構成図を示している。 Figure 36 shows a block diagram of the encryption processing apparatus in the encryption communication system using the network. コンピュータ50110は内部に、RAM50101、CPU50104、ネットワークインターフェース装置50105を装備し、ネットワーク50106に接続されている。 Computer 50110 inside, RAM50101, CPU50104, equipped with a network interface device 50105 is connected to a network 50106. RAM50101には暗号化するための通信データ50103(上記各実施例におけるメッセージMに相当)、通信プログラム50102が保存されており、CPU50104は通信プログラム50102を実行することで通信データ50103をネットワークインターフェース装置50105に出力する。 RAM50101 communication data for encrypting the 50103 (which corresponds to the message M in the above example), a communication program 50102 are stored, CPU50104 the network interface device to communicate data 50103 by executing a communication program 50102 50105 and outputs it to. ネットワークインターフェース装置50105は秘密鍵生成回路50107、暗号処理回路50109、鍵交換プロトコル回路50108を装備しており、センターの公開鍵50110が記憶領域に書き込まれている。 Network interface device 50105 private key generation circuit 50107, the encryption processing circuit 50109, equipped with a key exchange protocol circuit 50108, the public key 50110 of the center is written in the storage area. ネットワークインターフェース装置50105は、通信プログラム50102の実行に応じて、秘密鍵生成回路50107により秘密鍵を生成し、鍵交換プロトコル回路50108により、ネットワーク上の別の機器との鍵交換を行い、上記生成された秘密鍵を通信相手機器と共有する。 Network interface device 50105 is in accordance with the execution of the communication program 50102 to generate a private key with the secret key generation circuit 50107, a key exchange protocol circuit 50108 performs key exchange with another device on the network, generated as above to share a communication partner equipment private key. ネットワークインターフェース装置50105は、暗号処理回路50109により、入力された通信データ50103に対して、生成、共有された秘密鍵を用いて高速に暗号処理を行い暗号文を生成し,ネットワーク50106へ送信する。 Network interface device 50105 includes a cryptographic processing circuit 50109, the communication data 50103 input, generates, generates a ciphertext perform the encryption processing at high speed by using a secret key shared, and transmits to the network 50106.
【0075】 [0075]
本実施例では本発明を使うことにより、限られたハードウェア資源を使って、高速かつ安全な暗号通信が可能となる例を示している。 By using the present invention in this embodiment, an example in which using the limited hardware resources, it is possible to fast and secure cryptographic communication. 特に暗号処理として実施例2の方式を使えばより効率的かつ安全な暗号通信が可能となる。 In particular it is possible to more efficiently and secure encrypted communication With the method of Example 2 as the encryption process. これは、実施例2に示した,有限体F2 64上の加算や乗算が、ハードウェア実装に向いているからである。 This was shown in Example 2, because the addition and multiplication on the finite field F2 64 has suitable for hardware implementation. 復号処理についても同様にハードウェア実装が可能である。 It is possible hardware implementation Similarly, the decoding process.
本実施例が示すように、本発明は少ないゲート数でのハードウェア実装や、非常に高速な処理が可能なハードウェア実装を実現可能とする。 As shown in this embodiment, the present invention is less and hardware implementations of the number of gates, and can be realized very fast processing possible hardware implementation.
【0076】 [0076]
(実施例8) (Example 8)
上記実施例6および7に示した暗号処理可能なコンピュータを使うことで、暗号により保護されるコンテンツ配送などを簡単に実現することができる。 By using the encryption processing can be the computer shown in the Examples 6 and 7, can be realized easily and content delivery that is protected by encryption. 実施例8ではコンテンツ配送の実施例を示す。 Example 8 shows an embodiment of a content delivery.
【0077】 [0077]
図37に示すように,デジタル情報としてのコンテンツ50201を保存した記憶装置(半導体記憶装置、ハードディスク,テープなど磁気記録装置、DVD、MOなど光記録装置などメディアは限定されない)は、本発明による暗号処理可能なコンピュータ50202へ接続されている。 As shown in FIG. 37, saved storage content 50201 as digital information (semiconductor memory device, a hard disk, a tape such as a magnetic recording apparatus, DVD, media and optical recording apparatus such as a MO is not limited) is encrypted according to the invention It is connected to the processable computer 50202. 当該また,コンテンツを再生したい、物理的に離れた場所にあるかもしれない情報再生装置50205(MPEG再生装置やデジタルテレビ、パソコンなど)は本発明による復号処理可能な外部符号化装置50204へ接続されている。 The also want to play the content, the information reproducing apparatus 50205 that may be physically distant (MPEG reproducing apparatus or a digital television, a personal computer, etc.) is connected to the decoding process can be external coding apparatus 50204 according to the present invention ing. コンピュータ50202と外部符号化装置とはネットワーク50203を介して接続されている。 Computer 50202 and an external coding device is connected via a network 50203.
【0078】 [0078]
コンテンツ50201は暗号処理可能なコンピュータ50202により暗号化されてネットワーク50203へ送信される。 Content 50201 is sent encrypted by the encryption processing computer capable 50202 to a network 50203. 復号処理可能な外部符号化装置50204は暗号化されたコンテンツを復号化したあと、復号化結果を情報再生装置50205へ出力する。 After the decoding process can be external coding apparatus 50204 is decoding the encrypted content, and outputs the decoded result to the information reproducing apparatus 50205. 情報再生装置50205は入力情報を保存、再生する。 Information reproducing apparatus 50205 save the input information, to play.
【0079】 [0079]
情報再生装置50205が扱うコンテンツ50201には,電子ファイルのみならず、電子計算機用ソフトウェア、音声や画像といったマルチメディアデータも含まれる。 The information reproducing apparatus 50205 handled content 50201, not electronic files only, software for electronic computer, is also included multimedia data such as voice and images. 音声や画像など、リアルタイム性が要求されるようなコンテンツの場合には、本発明を用いることにより高速な暗号処理や復号処理が可能となり、安全でスムーズなリアルタイム画像伝送が可能となる。 Such as voice or image, in the case of content such as real-time is required, by using the present invention enables high-speed cryptographic processing and decryption processing, it is possible to secure a smooth real-time image transmission. また、伝送路中の改竄や雑音によるデータの破壊に対しても受信装置はこれを検知することができるため、伝送エラーのないことが保証された通信が実現できる。 Further, it is possible to detect this receiving device against data corruption due to tampering or noise in the transmission path can be realized guaranteed communication that no transmission errors.
【0080】 [0080]
(実施例9) (Example 9)
実施例8ではコンテンツを、ネットワークを介して送信していた。 Content In Example 8, was sent over the network. しかし、非常に大容量の情報の場合、DVDなどによる暗号文の事前配送のあと、復号化用の鍵を復号許可時に送信する手法が効率的である。 However, a very large case of the capacity of information, after the pre-delivery of ciphertext due to DVD, technique is efficient to be sent at the time of decoding allow the key for decryption. このようなシステムを実施例9に示す。 Such a system is shown in Example 9.
【0081】 [0081]
図38に示すように,コンテンツは暗号文として、予め消費者へDVD-ROM50307などのメディアを用いて配信されている。 As shown in FIG. 38, the content is as ciphertext, has been distributed using the media, such as DVD-ROM50307 to advance consumer. 消費者はコンテンツの代金支払いに関する情報(振り込み情報という)50306を、消費者のパソコン50304で実行されるコンテンツ鍵入手プログラム50305に入力し、コンテンツ鍵入手プログラム50305はネットワーク50303を介して鍵サーバ50302のコンテンツ鍵テーブル中の鍵を得る。 Consumers are the payment information on (referred to as transfer information) 50306 of the content, consumer PC input to the content key obtaining program 50305 to be executed in the 50304, the content key obtaining program 50305 is of key server 50302 via the network 50303 get the key in the content key table. 復号化プログラム50308は得られた鍵を用いてDVD-ROM50307に記録されたコンテンツ暗号文を復号する。 Decryption program 50308 decodes the recorded content ciphertext DVD-ROM50307 using the obtained key. 復号結果は情報再生装置50309へ出力され、コンテンツが再生される。 Decoding result is output to the information reproducing apparatus 50309, the content is played.
【0082】 [0082]
本実施例ではコンテンツを情報再生装置50309への出力せず、パソコン50304自身で再生を行うことも可能である。 Not output to the information reproducing apparatus 50309 content in this embodiment, it is possible to reproduce a PC 50304 itself. この典型の例として、コンテンツがパソコンで実行されるプログラムの場合に,このような再生方法が有効である。 Examples of typical, when the program content is executed on a computer, such reproducing method is effective. また、DVD-ROMに記録されている暗号コンテンツがいくつかの部分に分割可能で、それぞれの部分が異なる鍵で暗号化されている場合、コンテンツ鍵入手プログラム50305へ配送される鍵を制御することにより消費者が復号化できるコンテンツを制限することも可能である。 Moreover, can be divided into recording has been encrypted content is some are part DVD-ROM, if each part is encrypted with different keys, controlling the keys to be delivered to a content key to obtain program 50305 it is also possible to consumers to limit the content that can be decrypted by.
【0083】 [0083]
実施例9では、DVD-ROM50307に記録されたデータの読み出しを想定しているが、一般にDVD-ROM503070へ書き込まれるデータの大きさは非常に大きく(数10メガバイト〜数100メガバイト)処理の速い暗号方式が必須である。 In Example 9, it is assumed reading of data recorded on the DVD-ROM50307, ​​generally DVD-ROM503070 size of data to be written to is very large (several ten megabytes to hundreds megabytes) processing fast encryption system is essential. 本発明は、高速な復号処理を実現可能とするため、DVDメディアを使った有料コンテンツ配信への応用に適している。 The present invention, in order to enable high-speed decoding processing, is suitable for application to paid content delivery using the DVD media.
【0084】 [0084]
(実施例10) (Example 10)
実施例10はネットワークのパケット配送を制御する、ルータに適用した例を示している。 Example 10 illustrates the control packet delivery network was applied to the router example. このルータはネットワーク送信時、行き先のルータに応じてパケットに異なる暗号処理を行う。 This router during network transmission, perform different encryption processing to the packet according to the destination router.
【0085】 [0085]
図39は暗号ルータの構造を示した図である。 Figure 39 is a diagram showing the structure of a cryptographic router. ネットワークルータ50401は、内部にルーティングテーブル50402とパケット切り替え器50403、ネットワークインターフェースA50404, 同じくB50405、同じくC50406、及び内蔵並列暗号処理装置50410を装備している。 Network router 50401, the routing table 50402 and the packet switch 50403 to the internal network interface A50404, also B50405, equipped similarly C50406, and built-in parallel cryptographic processing apparatus 50410. ネットワークインターフェースA50404, B50405、C50406は、それぞれ外部のネットワークA50407、B50408、C50409に接続している。 Network interface A50404, B50405, C50406 are respectively connected to an external network A50407, B50408, C50409.
【0086】 [0086]
内部並列暗号処理装置50410は、内部に秘密鍵テーブル50411、ルータ鍵保存領域50412、並列暗号処理回路50413を装備している。 Internal parallel cryptographic processing apparatus 50410 has a secret key table 50411 inside, the router key storing area 50412 is equipped with a parallel encryption processing circuit 50413.
【0087】 [0087]
ネットワークA50407より送られてきたパケットはネットワークインターフェースA50404を通じて内部並列暗号処理装置50410へと送信される。 Packet sent from the network A50407 is transmitted to the internal parallel cryptographic processing apparatus 50410 through the network interface A50404. 内部並列暗号処理装置50410では、送られてきたパケットがネットワークA50407からであることを認識した後に、秘密鍵テーブル50411を参照しネットワークA50407に対応する秘密鍵を得て、ルータ鍵保存領域50412に保存して並列暗号処理回路50413で復号処理を行う。 Internal parallel cryptographic processing apparatus 50410, after packet transmitted recognizes that this is from the network A50407, to obtain a secret key that corresponds to the network A50407 reference to secret key table 50411, stored in the router key storing area 50412 It performs a decoding process in parallel cryptographic processing circuit 50413 and. 復号化の結果をパケット切り替え器50403へ送信する。 Transmitting a result of decoding to the packet switch 50403.
【0088】 [0088]
このパケットがネットワークBに送信されるべきものであると仮定すると、パケット切り替え器50403は内部並列暗号処理装置50410へパケットを渡す。 When the packet is assumed to be intended to be transmitted to the network B, the packet switch 50403 passes the packet to the internal parallel cryptographic processing apparatus 50410. 内部並列暗号処理装置50410は秘密鍵テーブル50411を参照し,ネットワークB50408に対応する秘密鍵を得て、ルータ鍵保存領域50412に保存して並列暗号処理回路50413で暗号処理を行う。 Internal parallel cryptographic processing apparatus 50410 refers to the secret key table 50411, with the private key corresponding to the network B50408, it performs encryption processing in parallel cryptographic processing circuit 50413 and stored in the router key storing area 50412. 暗号化の結果をネットワークインターフェースB50405へ送信し、ネットワークインターフェースB50405はネットワークB50408へ暗号パケットを送信する。 Transmits the result of the encryption to the network interface B50405, network interface B50405 transmits the encrypted packet to the network B50408.
【0089】 [0089]
本実施例は、非常に豊かなハードウェア資源の使用が許され、非常に高速な暗号通信が要求される環境での応用例である。 This embodiment, the use of very rich hardware resources are allowed, an application example of a very environment fast encryption communication is required. ブロック暗号のCBCモードでは、並列処理が困難であるため、仮にハードウェア資源が豊富な場合にも処理速度をあげることが難しい。 In CBC mode of the block cipher, because parallel processing is difficult, if it is difficult to increase the even processing speed if the hardware resources are abundant. これに対して、本発明では、擬似乱数生成処理が平文や暗号文処理と独立であるため、並列処理性が非常に高い。 In contrast, in the present invention, since the pseudo-random number generation process is independent of the plaintext and ciphertext processing, parallel processing property is very high. すなわち並列処理に向いたハードウェア資源が豊富に使用できる環境では、より一層高速な通信速度を達成することができる。 That is, in an environment where hardware resources facing parallel processing can be abundantly used, it is possible to achieve higher speed communication speed.
【0090】 [0090]
【発明の効果】 【Effect of the invention】
より安全で高速な共通鍵暗号技術を提供することが可能となる。 It is possible to provide a more secure, high-speed common key encryption technology.
【図面の簡単な説明】 BRIEF DESCRIPTION OF THE DRAWINGS
【図1】各実施例のシステム構成図を示す。 1 shows a system configuration of each embodiment.
【図2】平文準備サブルーチンのフロー図を示す。 FIG. 2 shows a flow diagram of the plaintext preparation subroutine.
【図3】乱数生成サブルーチンのフロー図を示す。 3 shows a flow diagram of a random number generation subroutine.
【図4】暗号化サブルーチンのフロー図を示す。 4 shows a flow diagram of the encryption subroutine.
【図5】図1の復号化処理プログラムのフロー図を示す。 Figure 5 shows a flow diagram of a decoding program of Fig.
【図6】図7の暗号文準備サブルーチンのフロー図を示す。 Figure 6 shows a flow diagram of the ciphertext preparation subroutine of FIG. 7.
【図7】図7の復号化サブルーチンのフロー図を示す。 7 shows a flow diagram of a decoding sub-routine of FIG.
【図8】図7の平文切出しサブルーチンのフロー図を示す。 Figure 8 shows a flow diagram of the plain text cut out subroutine of FIG. 7.
【図9】図7の冗長性切出しサブルーチンのフロー図を示す。 9 shows a flow diagram of a redundancy cut subroutine of FIG.
【図10】暗号化処理の,データブロックによる図を示す。 [10] the encryption process, shows a view according to the data block.
【図11】図7で示した復号化処理の,データブロックによる図を示す。 [11] The decoding process shown in FIG. 7 shows a view according to the data block.
【図12】実施例2の乱数生成2サブルーチンのフロー図を示す。 12 shows a flow diagram of a random number generation 2 subroutine of Example 2.
【図13】実施例2の暗号化2サブルーチンのフロー図を示す。 13 shows a flow diagram of the encryption 2 subroutine in Example 2.
【図14】実施例2の復号化処理プログラムのフロー図を示す。 14 shows a flow diagram of a decoding program according to the second embodiment.
【図15】実施例2の復号化2サブルーチンのフロー図を示す。 15 shows a flow diagram of a decoding 2 subroutine in Example 2.
【図16】実施例2の暗号化処理の,データブロックによる図を示す。 [16] The encryption process of Example 2, shows a view according to the data block.
【図17】実施例2の復号化処理の,データブロックによる図を示す。 [Figure 17] of the decoding process of Example 2, shows a view according to the data block.
【図18】実施例3の暗号化処理プログラムのフロー図を示す。 18 shows a flow diagram of the encryption processing program of the third embodiment.
【図19】実施例3の乱数生成3サブルーチンのフロー図を示す。 Figure 19 shows a flow diagram of a random number generation 3 subroutine of the third embodiment.
【図20】実施例3の暗号化3サブルーチンのフロー図を示す。 Figure 20 shows a flow diagram of encrypting 3 subroutine of Example 3.
【図21】実施例3の復号化処理プログラムのフロー図を示す。 21 shows a flow diagram of a decoding program according to the third embodiment.
【図22】実施例3の復号化3サブルーチンのフロー図を示す。 22 shows a flow diagram of a decoding 3 subroutine of Example 3.
【図23】実施例3の暗号化処理の,データブロックによる図を示す。 [Figure 23] the encryption process of Example 3, shows a view according to the data block.
【図24】実施例3の復号化処理の,データブロックによる図を示す。 [Figure 24] of the decoding process of Example 3, shows a view according to the data block.
【図25】実施例5の並列暗号化処理プログラムのフロー図を示す。 25 shows a flow diagram of a parallel encryption processing program of Example 5.
【図26】実施例5の並列復号化処理プログラムのフロー図を示す。 Figure 26 shows a flow diagram of a parallel decoding processing program of Example 5.
【図27】実施例5の暗号化処理の,データブロックによる図を示す。 [27] the encryption process of Example 5 shows a view according to the data block.
【図28】実施例5の復号化処理の,データブロックによる図を示す。 [Figure 28] of the decoding process of Example 5 shows a view according to the data block.
【図29】実施例4の乱数生成4サブルーチンのフロー図を示す。 Figure 29 shows a flow diagram of a random number generation 4 subroutine in Example 4.
【図30】実施例4の平文準備2サブルーチンのフロー図を示す。 30 shows a flow diagram of the plaintext preparation 2 subroutine in Example 4.
【図31】実施例4のメッセージに対するパディング処理の説明図を示す。 Figure 31 shows an illustration of a padding for the message of the fourth embodiment.
【図32】実施例4の復号化処理プログラムのフロー図を示す。 Figure 32 shows a flow diagram of a decoding program according to the fourth embodiment.
【図33】図32の平文切り出し2サブルーチンのフロー図を示す。 Figure 33 shows a flow diagram of plaintext cutout 2 subroutine of FIG 32.
【図34】実施例4の復号文に対する切り出し処理の説明図を示す。 FIG. 34 shows an illustration of a cut-out processing for the decoded text of Example 4.
【図35】実施例6の暗号通信を目的としたシステム構成図を示す。 Figure 35 shows a system configuration diagram for the purpose of cryptographic communication Example 6.
【図36】実施例7の暗号通信システムにおける暗号化処理装置の構成図を示す。 Figure 36 shows the structure of the encryption processing apparatus in the cryptographic communication system of the seventh embodiment.
【図37】実施例8のコンテンツ配送システム構成図を示す。 Figure 37 illustrates a content delivery system configuration diagram of an embodiment 8.
【図38】実施例9のシステム構成図を示す。 Figure 38 shows a system configuration diagram of a ninth embodiment.
【図39】実施例10の暗号ルータの構成図を示す。 Figure 39 shows a block diagram of a cryptographic router of Example 10.
【符号の説明】 DESCRIPTION OF SYMBOLS
10001,30001:ネットワーク 10001,30001: network
10002,10003,30002,30003:コンピュータ 10002,10003,30002,30003: Computer
10004,10015,30004,40005,30017,30018:CPU 10004,10015,30004,40005,30017,30018: CPU
10005,10016,30006,30019:メモリ 10005,10016,30006,30019: Memory
10006,10017,30007,30020:ネットワークインターフェース 10006,10017,30007,30020: Network interface
10007,10018,30008,30021:ディスプレイ 10007,10018,30008,30021: Display
10008,10019,30009,30022:キーボード 10008,10019,30009,30022: Keyboard

Claims (5)

  1. 共通鍵暗号の復号装置であって, A decoding apparatus of a common key cipher,
    冗長データとメッセージとからなる平文を暗号化した暗号文を入力とし,特定の長さで区切った複数の暗号文ブロックを生成する回路と, Plaintext consisting of redundant data and messages as input ciphertext encrypted, a circuit for generating a plurality of ciphertext blocks, separated by a specific length,
    秘密鍵を入力し, 少なくとも二つの前記暗号文ブロックの各々に対して,第一と第二の乱数ブロックを生成する乱数ブロック生成回路と, An input a secret key, for each of at least two of the ciphertext block, a random number block generation circuit for generating a first and second random number block,
    前記複数の暗号文ブロックに対応する複数の平文ブロックを生成する復号演算回路とからなり, Consists of a decoding operation circuit for generating a plurality of plaintext blocks that correspond to the plurality of ciphertext blocks,
    前記復号演算回路は, Said decoding operation circuit
    一つの前記暗号文ブロックを用いた第一の演算を行う第一の回路と, A first circuit for performing a first operation using one of the ciphertext block,
    前記第一の回路による前記第一の演算の結果と,前記乱数ブロック生成回路が生成する第一の前記乱数ブロックと,を用いた第二の演算を行う第二の回路と, Result of the first operation by said first circuit, a first of said random block the random number block generating circuit generates a second second circuit for performing an operation of using,
    前記第二の回路による前記第二の演算の結果と,前記乱数ブロック生成回路が生成する第二の前記乱数ブロックと,を用いた第三の演算を行い,前記第三の演算の結果を,一つの前記暗号文ブロックに対応する一つの前記平文ブロックとして出力する第三の回路と,を備え, Result of the second calculation by said second circuit, and a second of said random block the random number block generating circuit generates performs a third operation using this, the results of the third calculation, It includes a third circuit for outputting as one of the plaintext block corresponding to one of the ciphertext block, and
    前記第一の回路は,前記第二の回路が他の前記暗号文ブロックに基づいて行う前記第二の演算の結果と,一つの前記暗号文ブロックと,を用いて前記第一の演算を行い, Wherein the first circuit performs the first operation using the the second circuit the result of said second operation performed based on other of said ciphertext block, and one of the ciphertext block, the ,
    前記乱数ブロック生成回路が生成する第一と第二の前記乱数ブロックは,前記暗号文ブロックのいずれにも依存せず,前記第一の回路による前記第一の演算の結果にも依存しない First and second said random block the random number block generating circuit generates, the not also depend on any of the ciphertext block, does not depend on the result of the first operation by said first circuit
    ことを特徴とする共通鍵暗号の復号装置。 Decoding device common key cryptography, characterized in that.
  2. 請求項1記載の共通鍵暗号の復号装置であって, A decoding device common key cryptography according to claim 1,
    前記乱数ブロック生成回路は,前記暗号文より長い乱数列を区切って,前記暗号文ブロックのいずれにも依存しない前記乱数ブロックを生成することを特徴とする共通鍵暗号の復号装置。 The random number block generating circuit is separated longer random number sequence from said ciphertext decryption apparatus of the common key cryptosystem and generates the random number block that does not depend on any of the ciphertext block.
  3. 請求項1または2記載の共通鍵暗号の復号装置であって, A decoding device common key cryptography according to claim 1 or 2, wherein,
    前記平文ブロックを複数連結して平文を生成する回路と, A circuit for generating a plaintext plurality connecting the plaintext block,
    前記平文に含まれる前記冗長データを抽出する回路と, A circuit for extracting the redundant data included in the plaintext,
    前記冗長データを検査して前記暗号文への改ざんの有無を検出する回路とを備えることを特徴とする共通鍵暗号の復号装置。 Decoding device common key cryptography, characterized in that it comprises a circuit for detecting the presence or absence of falsification of the said ciphertext inspecting the redundant data.
  4. 請求項3記載の共通鍵暗号の復号装置であって, A decoding device common key encryption according to claim 3,
    さらに,前記平文に含まれる, 前記冗長データと,前記メッセージとは異なる,前記秘密鍵に基づき生成した秘密データを抽出する回路を備え, Furthermore, the included in the plaintext, and the redundant data, different from the message, comprising a circuit for extracting the secret data generated based on the secret key,
    前記暗号文への改ざんの有無を検出する回路は,前記秘密データと前記冗長データとを検査して,前記暗号文への改ざんの有無を検出することを特徴とする共通鍵暗号の復号装置。 It said circuit for detecting the presence or absence of falsification of the ciphertext, the examines the secret data and the redundant data, the decoding apparatus of the common key cryptography, characterized by detecting the presence or absence of falsification to the ciphertext.
  5. 請求項2記載の共通鍵復号装置であって, A common key decryption apparatus according to claim 2,
    前記乱数ブロック生成回路は,前記秘密鍵から前記乱数列を生成する擬似乱数生成器と, The random number block generating circuit includes a pseudo-random number generator for generating the random number sequence from said private key,
    前記乱数列から前記乱数ブロックを生成する回路と,を備えることを特徴とする共通鍵復号装置。 Common key decryption apparatus characterized by comprising, a circuit for generating the random number blocks from said random number sequence.
JP2002034787A 2000-03-09 2002-02-13 Decoding apparatus of the common key encryption Expired - Fee Related JP3864798B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000-70994 2000-03-09
JP2000070994 2000-03-09
JP2002034787A JP3864798B2 (en) 2000-03-09 2002-02-13 Decoding apparatus of the common key encryption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002034787A JP3864798B2 (en) 2000-03-09 2002-02-13 Decoding apparatus of the common key encryption

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2000210690 Division 2000-07-06

Publications (2)

Publication Number Publication Date
JP2002305517A true JP2002305517A (en) 2002-10-18
JP3864798B2 true JP3864798B2 (en) 2007-01-10

Family

ID=26587472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002034787A Expired - Fee Related JP3864798B2 (en) 2000-03-09 2002-02-13 Decoding apparatus of the common key encryption

Country Status (1)

Country Link
JP (1) JP3864798B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4490192B2 (en) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ Multi-task execution system

Also Published As

Publication number Publication date Type
JP2002305517A (en) 2002-10-18 application

Similar Documents

Publication Publication Date Title
Bernstein Introduction to post-quantum cryptography
US6055316A (en) System and method for deriving an appropriate initialization vector for secure communications
Bernstein The Salsa20 family of stream ciphers
US6396926B1 (en) Scheme for fast realization of encrytion, decryption and authentication
US7055039B2 (en) Protection of digital content using block cipher crytography
Aumann et al. Everlasting security in the bounded storage model
US5796836A (en) Scalable key agile cryptography
US5703952A (en) Method and apparatus for generating a cipher stream
Karri et al. Parity-based concurrent error detection of substitution-permutation network block ciphers
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
US5870470A (en) Method and apparatus for encrypting long blocks using a short-block encryption procedure
US5511123A (en) Symmetric cryptographic system for data encryption
US6963976B1 (en) Symmetric key authenticated encryption schemes
US20110255689A1 (en) Multiple-mode cryptographic module usable with memory controllers
US20020071552A1 (en) Method and apparatus for facilitating efficient authenticated encryption
US6081598A (en) Cryptographic system and method with fast decryption
US20020051534A1 (en) Cryptographic system with enhanced encryption function and cipher key for data encryption standard
US20010010722A1 (en) Encryption and decryption method and apparatus using a work key which is generated by executing a decryption algorithm
US6154541A (en) Method and apparatus for a robust high-speed cryptosystem
US6351539B1 (en) Cipher mixer with random number generator
US5768390A (en) Cryptographic system with masking
McGrew et al. The Galois/counter mode of operation (GCM)
US20100299538A1 (en) Systems and Methods for Low-Latency Encrypted Storage
US6832316B1 (en) Systems and methods for protecting data secrecy and integrity
US7177424B1 (en) Cryptographic apparatus and method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050404

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050721

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050901

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050912

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060427

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: 20060912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060925

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091013

Year of fee payment: 3

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101013

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131013

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees