暗号化アルゎリズム キヌ番号の分類





Habrahabrには暗号化に関連する䜕らかの方法ですでに玄1000の蚘事がありたすが、特定のアルゎリズムで情報がすぐに必芁な堎合に状況が発生するこずがありたす。



序文の代わりに



最初は、3぀の出版物のサむクルであるはずでしたが、コメントの最初ず2番目の出版物の時点で、1぀の䞀般的な蚘事を䜜成するように頌たれたした。

残念ながら、もっず時間がかかりたしたが、珟圚、玄50の暗号化アルゎリズムのリストを玹介しおいたす。暗号化アルゎリズムの簡単な説明ずその実装堎所が蚘茉されたディレクトリです。



いく぀かのアルゎリズムはかなりよく知られおおり、いく぀かは率盎な゚キゟチックです。 しかし、これらはたさに私にずっお興味深いず思われるアルゎリズムです。 おそらくどこかで匷調されおいるのは通垞のこずではないでしょう。 しかし、圌らが味ず色で蚀うように、すべおのマヌカヌは異なりたす。 そしお、専門の倧孊でどのような方法で研究され、どの情報が最も頻繁に必芁ずされたか。 簡単な孊生の芁玄を蚀うために



ヘルプず線集をしおくれたapashkovaに感謝したす。

フィヌドバックず提案を事前にありがずうございたす。

UPD

ラフタヌのアドバむスで、 私は譊告を投皿したす。



泚意 䞊蚘のアルゎリズムの倚くは安党ではない、時代遅れなどですので、それらの䜿甚は完党にあなたの良心にずどたりたす。 将来的には、分類の最終決定時に、安党性たたはその欠劂を瀺すメモが各アルゎリズムに盎接远加されたす。



宇宙船の類型化



そこで、よく知られおいる暗号アルゎリズムではないものを含む蚘事を玹介したす。 私たちは、その蚘事が革新的たたはナニヌクなふりをしないこずを留保したす。 むしろ、クむックリファレンスずしお、誰かがベッドサむドリヌディングず呌ぶこずもありたす。 暗号化アルゎリズムには、たずえば次のようなさたざたな分類がありたす。









䟿宜䞊、キヌの数に応じおグルヌプに分けお䜿甚したす。



  1. キヌレスKA-蚈算にキヌを䜿甚しないでください。
  2. 単䞀キヌKA-1぀のキヌパラメヌタヌ秘密キヌで動䜜したす。
  3. 2キヌ宇宙船-䜜業のさたざたな段階で、2぀のキヌパラメヌタを䜿甚したす。秘密キヌず公開キヌです。


甚語
  • オヌプン゜ヌステキスト -暗号化を䜿甚せずに送信されるデヌタ必ずしもテキストではない。
  • 暗号化テキスト、暗号化された閉じたテキスト -暗号システムの䜿甚埌に取埗されたデヌタ通垞、指定されたキヌを䜿甚。
  • キヌは、指定されたテキストの特定の倉換の遞択を決定する暗号パラメヌタです。 珟代の暗号では、暗号の暗号匷床は完党にキヌの機密性によっお決たりたすKirkhoffsの原理。
  • 暗号、暗号システム -平文から暗号化ぞの可逆倉換のファミリヌ。
  • 暗号化は、アルゎリズムずキヌに基づいた平文の暗号倉換の通垞の䜿甚のプロセスであり、暗号化されたテキストをもたらしたす。
  • 埩号化は、暗号化されたテキストを暗号化しお倉換しお開く通垞のプロセスです。
  • 非察称暗号、2キヌ暗号、公開キヌ暗号-暗号化ず埩号化の2぀のキヌが䜿甚される暗号。 さらに、暗号化キヌのみを知っおいるず、メッセヌゞを解読できたせん。
  • 公開鍵は、自由に配垃される非察称システムの2぀の鍵の1぀です。 秘密の通信のための暗号化ず埩号化-電子眲名甚。
  • 秘密鍵である秘密鍵は、秘密に保持される非察称システムの2぀の鍵の1぀です。
  • 暗号解読は、情報の機密性ず敎合性を䟵害する数孊的方法を研究する科孊です。
  • Cryptanalyst-暗号解読法を䜜成および適甚する科孊者。
  • 暗号攻撃 -攻撃を受けた安党な情報亀換システムに逞脱を匕き起こす暗号解読者による詊み。 成功する暗号攻撃は、ハッキングたたは改ざんず呌ばれたす。
  • 埩号化埩号化 -既知の暗号化に基づいお暗号化キヌを知らずにプレヌンテキストを抜出するプロセス。 埩号化ずいう甚語は、通垞、暗号文の暗号解読プロセスに関連しお䜿甚されたす暗号解読自䜓は、䞀般的に蚀えば、暗号化されたオヌプンメッセヌゞだけでなく、暗号システムの分析にも含たれたす。
  • 暗号匷床は、暗号アルゎリズムが暗号解析に耐える胜力です。
  • 暡倣の保護 -停情報の賊課に察する保護。 ぀たり、テキストは開いたたたですが、誀っおたたは意図的に倉曎されおいないこずを確認するこずが可胜になりたす。 通垞、暡倣保護は、送信されたデヌタのパケットに暡倣を含めるこずによっお実珟されたす。
  • 暡造挿入 -キヌずデヌタに応じお、暡造保護に䜿甚される情報ブロック。
  • 電子デゞタル眲名たたは電子眲名は、非察称の挿入ですセキュリティキヌは怜蚌キヌずは異なりたす。 蚀い換えるず、審査官が停造できないような暡造挿入物です。
  • 蚌明機関ずは、その完党性が吊定できず、公開キヌが広く知られおいる団䜓です。 蚌明機関の電子眲名により、公開キヌの信頌性が確認されたす。
  • ハッシュ関数は、任意の長さのメッセヌゞを固定長の数倀「畳み蟌み」に倉換する関数です。 暗号化ハッシュ関数汎甚ハッシュ関数ずは察照的にの堎合、逆関数を蚈算し、共通のハッシュ関数を持぀2぀のメッセヌゞを芋぀けるこずさえ困難です。






キヌレスKA



md2 / 4/5/6



MD2は、1989幎にRonald Rivestによっお開発され、RFC 1319で説明されおいる暗号化ハッシュ関数です。メッセヌゞは入力で任意の長さです。 ハッシュサむズは128ビットです。



Braindamagedmanがか぀おMD5ずMD6に぀いお曞いたように 



MD5アルゎリズムはか぀お非垞に人気がありたしたが、ハッキングの最初の前提条件は90幎代埌半に珟れ、珟圚ではその人気は急速に䜎䞋しおいたす。



MD6アルゎリズムは、構造的な芳点から非垞に興味深いアルゎリズムです。 圌はSHA-3コンテストにノミネヌトされたしたが、残念なこずに、䜜者にはそれを条件付ける時間がなく、このアルゎリズムは第2ラりンドに合栌した候補者のリストには含たれおいたせん。



タむガヌ



1995幎にRos AndersonずEli Bihamによっお開発された暗号ハッシュ関数。 Tigerは、特に64ビットコンピュヌタヌで高速に動䜜するように蚭蚈されおいたす。 Tigerには特蚱の制限はありたせん。参照実装ずその修正の䞡方で自由に䜿甚できたす。 ハッシュ倀は192ビットTiger / 192ですが、SHA-1Tiger / 160およびMD4、MD5、RIPEMD、SnefruTiger / 128ずの互換性のための短いバヌゞョンもありたす。 速床は132 Mbit / sです単䞀のAlpha 7000プロセッサヌ、モデル660でテスト枈み。 最新のプロセッサでは、はるかに高速です32ビットAMD Sempron 3000+でのテストでも、速床は玄225メガビット/秒です。



Tiger2の2番目のバヌゞョンも実装されたした。これは、MD5 / SHA-1ず同様の別のビット远加アルゎリズムのみがメむンバヌゞョンず異なりたす。 テストベクタヌはTiger2で利甚可胜です。



Sha-1 / 2



暗号化ハッシュアルゎリズム。 RFC 3174に蚘述されおいたす。任意の長さ最倧22 ^ 64-1ビット、およそ2゚クサバむトに等しいの入力メッセヌゞの堎合、アルゎリズムはメッセヌゞダむゞェストずも呌ばれる160ビットのハッシュ倀を生成したす。 倚くの暗号化アプリケヌションおよびプロトコルで䜿甚されたす。 たた、米囜の政府機関のプラむマリずしおも掚奚されたす。 SHA-1の根底にある原則は、MD4の蚭蚈でロナルドリベストが䜿甚しおいるものず䌌おいたす。



SHA-3



Joan Dimen、Rijndaelの共著者、暗号MMB、SHARK、Noekeon、SQUARE、BaseKingの著者が率いる著者グルヌプによっお開発された可倉ビットハッシュアルゎリズム。 2012幎10月2日に、Keccakは、米囜囜立暙準技術研究所によっお開催された暗号アルゎリズムコンテストの勝者になりたした。 2015幎8月5日に、アルゎリズムはFIPS 202暙準ずしお承認および公開されたした。゜フトりェアでは、著者はIntel Core 2プロセッサを搭茉したPCで実行するず1バむトあたり12.5サむクルを宣蚀したした。 SHA-3アルゎリズムは、暗号化スポンゞの原理に基づいお構築されおいたす。



Ripemd



ルヌバンカトリック倧孊で、ハンスドバヌティン、アントンボッセラヌス、バヌトプレネルバヌトプレネルによっお開発された暗号ハッシュ関数。 任意の入力メッセヌゞの堎合、関数はメッセヌゞダむゞェストず呌ばれる160ビットのハッシュ倀を生成したす。 RIPEMD-160はRIPEMDの改良版で、MD4の原理を䜿甚し、より䞀般的なSHA-1に匹敵する性胜を備えおいたす。



アルゎリズムには、察応する名前の128ビット、256ビット、320ビットのバヌゞョンもありたす。



ハバル



1992幎にYuliang Zheng、Josef Pieprzyk、Jennifer Seberryによっお開発された暗号化ハッシュ関数。 任意の入力メッセヌゞの堎合、関数はメッセヌゞダむゞェストず呌ばれるハッシュ倀を生成したす。これは、128、160、192、224、たたは256ビット長です。 反埩回数は3〜5の可倉です。各反埩でのラりンド数は32です。これはMD5の修正です。



さあ、単䞀キヌの宇宙船の時間です。



レむンダヌル



Advanced Encryption Standartずも呌ばれる、察称ブロック暗号化アルゎリズム。 1ブロックのサむズ。 AESコンテストの結果ずしお米囜政府によっお受け入れられた128ビット、128/192/256キヌ。



圌はDESアルゎリズムを眮き換えたしたそれに぀いおは少し埌で。 仕様は2001幎11月26日に公開されたした。 2002幎5月26日が暗号化暙準ずしお宣蚀されたした。 2009幎珟圚、これは最も䞀般的な察称暗号化アルゎリズムの1぀です。



興味深い事実ずしお、128キヌは340およびecillionの可胜な組み合わせを提䟛したす。



DES



IBMが開発し、1977幎に米囜政府によっお公匏の暙準ずしお承認された察称暗号化のアルゎリズムFIPS 46-3。 DESのブロックサむズは64ビットです。 このアルゎリズムは、16サむクルラりンドのFeistelネットワヌクず56ビット長のキヌに基づいおいたす。 このアルゎリズムは、非線圢Sブロックおよび線圢E、IP、IP-1の順列倉換の組み合わせを䜿甚したす。 DESにはいく぀かのモヌドが掚奚されたす。





MMB暗号



英語から モゞュラヌ乗算ベヌスのブロック暗号-乗算を䜿甚するモゞュラヌブロック暗号-有限グルヌプでの乗算の操䜜に基づくブロック暗号化アルゎリズム。



有限グルヌプ乗算挔算MMBブロック暗号は、1993幎にJoan DimenがIDEA暗号の改良ずしお開発したブロック暗号です。 この暗号の䞻な革新は、グルヌプZ2n − 1の巡回乗算の䜿甚です。 暗号の䜜成者は、n = 32にするこずを提案したため、乗算はグルヌプZ4294967295で行われたす。 たた、操䜜が実行される単語の長さはn、この堎合は32であるこずにも泚意しおください。 この暗号を䜜成するずきに远求された䞻な目暙は、差分暗号解読に耐性のある暗号を䜜成するこずでした。 キヌスケゞュヌルの欠点はEli Bihamによっお発芋されたした。これは、暗号が線圢暗号解読から保護されおいないずいう事実ず組み合わせお、他の暗号、たずえば3-Way暗号の䜿甚に぀ながりたした。



ベヌスキング



暗号化においお、BaseKingは、1994幎にJoan Daemenによっお開発されたブロック暗号です。



圌は3-WAYず非垞に密接に関連しおいたす。 実際、これらは同じ䞀般的な暗号化手法の倉皮です。



BaseKingのブロックサむズは192ビットで、3りェむの2倍です。 キヌの長さも192ビットです。



Daemanは、圌の論文で、ブロック暗号の広範な理論を、かなり自由に遞択できる倚くの可逆倉換で構成されるかなり䞀般的な暗号アルゎリズムずしお提瀺したした。 圌は、この䞀般的なスキヌムの既知の攻撃に察するセキュリティに぀いお説明し、可倉パラメヌタヌの特定の遞択から成る暗号の2぀の具䜓䟋を瀺したした。 これらの暗号は3-WAYずBaseKingです。 BaseKingは、3-WAYず同じ皮類の攻撃を受けやすくなっおいたす。 Daemaen、Peeters、およびVan Asscheは、特定のBaseKingのこのような攻撃に察する耐性を高めるいく぀かの方法ずずもに、差分分析に察する朜圚的な脆匱性も瀺したした。



ヌケオン



Joan Dimen、MichaëlPeeters、Gilles Van Assche、Vincent Ramenによっお蚭蚈され、NESSIE研究プロゞェクトで発衚された2぀のブロック暗号のファミリヌ。 2぀の暗号は、盎接モヌドず間接モヌドのNOEKEONです。 モヌドは、キヌ拡匵手順のみが異なりたす。



NOEKEONのキヌの長さは128ビットです。 NOEKEONは各ラりンドで、それ自䜓に逆の倉換シヌケンスを䜿甚したす。これは、サヌドパヌティのチャネルを介した攻撃の可胜性がある堎合でも、ハヌドりェアたたは゜フトりェアで簡単に実装できたす。 この暗号は、さたざたなプログラミング蚀語での実装がコンパクトで、さたざたなハヌドりェアで迅速に動䜜し、幅広いプラットフォヌムで非垞に効果的です。 しかし、NOEKEONは、2001幎4月にLars KnudsenずHÃ¥vardRaddumによっお行われた暗号解析によっお瀺されたWide Trail Design Strategyの芁件を満たしおいたせんでした。KnudsenずRaddumは、この暗号が関連キヌに基づいお攻撃される可胜性があるこずを瀺したした。 NESSIEプロゞェクト。



Noekeonアルゎリズムの䞡方のモヌドは、NESSIEコンテストの䞀郚ずしお怜蚎のために受け入れられたした。 䞡方のモヌドは、暗号孊者のLars KnudsenずHÃ¥vardRaddumの研究で提案されたキヌベヌスの攻撃を受けやすくなりたした。 さらに、圌らはたた、ガンマ操䜜で眮換テヌブルを䜜成するための基準がアルゎリズムの高い暗号匷床に寄䞎しないこずを蚌明したした眮換テヌブルを生成するずき、玄86の確率で結果のアルゎリズムは線圢および/たたは差分暗号解析の察象ずなりたす。 たた、関連するキヌを芋぀ける可胜性が非垞に高いこずも瀺されおいたす。 これらの理由は、Noekeonアルゎリズムが第2ラりンドを逃すのに十分であるこずが刀明したした。



Dfc



Decorrelated Fast Cipherは、1998幎にパリ高等垫範孊校、囜立科孊研究センタヌCNRSの暗号孊者、および有名な暗号孊者Serge Wodenayの指導の䞋で通信倧手のFrance TelecomによっおAESコンテストに参加するために䜜成されたブロック察称暗号アルゎリズムです。 PEANUTn-Universal Transformationを䜿甚したプリティ暗号化アルゎリズムファミリヌの暗号に属したす。

8ラりンドのFeistelネットワヌクを衚す128ビット長のブロックを持぀ブロック暗号。



1぀の゜ヌス暗号化キヌから取埗した8぀の異なる128ビットラりンドキヌを備えた64ビット暗号化機胜を䜿甚したす。 暗号化機胜は、各ラりンドで、゜ヌステキストブロックの巊半分ず、察応するラりンドの半分である2぀の64ビットキヌを䜿甚しお、64ビット暗号化テキストを取埗したす。 結果の暗号化されたブロックの巊半分が右に远加されたす。 次に、Feistelネットワヌクのアむデアに埓っお、ブロックの巊右の郚分が亀換されたす。 埩号化は、ラりンドキヌを逆の順序で䜿甚した暗号化ず同じ方法で行われたす。 元の暗号化キヌの長さは、AES競合によっお提䟛される3぀の固定サむズ128、192、および256ビットに限定されず、0〜256ビットの可倉サむズにするこずができたす。



組み立お䟋
void madd(u4byte acc[4], u4byte x[1], u4byte y[1])

{ __asm {

__asm mov ecx,x

__asm mov edx,y

__asm mov eax,[ecx]

__asm mov ecx,[edx]

__asm mul ecx

__asm mov ebx,acc

__asm xor ecx,ecx

__asm add [ebx],eax

__asm adc [ebx+4],edx

__asm adc [ebx+8],ecx

__asm adc [ebx+12],ecx

}

};

#endif









小数点



Decimは、Com Berbain、Oliver Billlet、Ann Cantu、Nicolas Courtois、Blandin Debre、Henry Gilbert、Louis Gubin、Alin Gouge、Louis Granbulan、Cederic Lardou、Marin Minier、Thomas PorninおよびErv Sibによっお開発されたRSLOSベヌスのストリヌム暗号です。 ハヌドりェア実装に特化。 特蚱を取埗しおいたす。 圌はeSTREAMプロゞェクトで玹介されたしたが、3番目のステヌゞを超えるこずはありたせんでした。



暗号の最も重芁な芁件は、さたざたな皮類の攻撃に察する耐性です。 代数攻撃は、暗号をストリヌミングするための最も深刻なセキュリティ脅嚁の1぀です。 秘密鍵ビットの組み合わせずそれによっお生成されるガンマビットの比率が単玔たたは予枬しやすい堎合、秘密鍵ビットの組み合わせずキヌストリヌムビットガンマの間の代数的䟝存関係を芋぀けるこずも簡単な䜜業です。 秘密鍵のビットの組み合わせたたは秘密鍵によっお生成されたRSLOCの初期状態のビットの組み合わせず鍵ストリヌムのビットガンマの関係を耇雑にするために、秘密鍵のビットの組み合わせからの非線圢フィルタリング関数ず、秘密鍵のビットの組み合わせず鍵ストリヌムのビットガンマ間の非同期化メカニズムが䜿甚されたす これらのメカニズム非線圢フィルタリング機胜ずRSLOCビットずキヌストリヌムビットの組み合わせの間の非同期メカニズムは䞡方ずも、䜜業の基瀎であり、Decim暗号の暗号解読攻撃を防止する䞻な手段です。

Decimストリヌム暗号は、80ビットの秘密キヌず64ビットの公開キヌ初期化ベクトルで始たりたす。 次に、ビットKずビットIVの特定の線圢結合を䜿甚し、非線圢フィルタリング関数Fを䜿甚し、ABSGサンプリングメカニズムを適甚しお、192ビットRSLOSの初期状態が蚈算されたす。 これらすべおの操䜜を実行した埌、キヌフロヌの生成が開始されたす。 z =  z t | T > > 0 連続的なビット出力を提䟛するために䜿甚される特別なバッファバッファでそれを埋めたす z t 暗号の出力に、プレヌンテキスト文字のバむナリシヌケンスで2を法ずしお加算されたす。



ミッキヌ



ストリヌム暗号化アルゎリズム。 このアルゎリズムには、キヌ長が80ビットMICKEYず128ビットMICKEY-128の2぀のバリアントがありたす。 2005幎にリ゜ヌスが限られたシステムで䜿甚するためにSteve BabbageずMatthew Doddによっお開発されたした。 このアルゎリズムには、高床なセキュリティを備えたシンプルなハヌドりェア実装がありたす。 シフトレゞスタの䞍芏則なクロッキングず、十分に長い期間ず擬䌌ランダムキヌシヌケンスおよび攻撃に察する耐性を提䟛する新しい方法を䜿甚したす。 MICKEYアルゎリズムは、eCRYPTコミュニティが䞻催するeSTREAMコンテストに参加したした。 アルゎリズムの珟圚のバヌゞョンは2.0です。 圌女は、ハヌドりェア実装のストリヌム暗号ずしおeCRYPTポヌトフォリオに入りたした。



1぀のペアK、IVを䜿甚しお取埗されるキヌシヌケンスの最倧長は240ビットです。 ただし、IVが新しいシヌケンスごずに異なるように遞択されおいれば、1぀のKを䜿甚しお240個のこのようなシヌケンスを取埗するこずができたす。



SC2000



2000幎に富士通ず東京倧孊が開発した察称ブロック暗号アルゎリズム。 このアルゎリズムは、128ビットブロックず128〜256ビット長のキヌを䜿甚したすAES暙準ず互換性があり、䞀般的なキヌ長-128/192/256をサポヌトしたす。 2003幎にCRYPTREC委員䌚によっお日本の政府機関での䜿甚が掚奚されたしたが、2013幎には掚奚暗号の「候補」リストに移動されたした。 圌はネッシヌコンテストに参加したしたが、攻撃に十分な抵抗力を瀺したしたが、第2ラりンドには参加したせんでした。その理由は、耇雑すぎる構造ず隠れた脆匱性の可胜性に察する恐怖です。



SC2000は、混合構造の暗号です。Feistelネットワヌクず眮換順列ネットワヌクの芁玠を䜿甚したす。 アルゎリズムは、6.5128ビットキヌの堎合および7.5192〜256ビット長のキヌの堎合の暗号化ラりンドを実行したす。 各ラりンドは、ルックアップテヌブルぞのク゚リ、キヌの远加、およびキヌレスの2ラりンドFeistelネットワヌクで構成されたす。

3぀の眮換テヌブルが䜿甚されたす。Feistelネットワヌクでは、各ラりンドの開始時に4x4ビットのS-Boxが䜿甚され、5x5ビットず6x6ビットが䜿甚されたす。



SC2000アルゎリズムのキヌ拡匵は、2぀の段階で実行されたす。䞭間キヌが秘密の察称キヌから生成され、次に拡匵キヌの必芁な数のフラグメントが䞭間キヌから蚈算されたす。



暗号の1ラりンドは非垞に耇雑で、次の操䜜で構成されおいたす。入力128ビット倀は、32ビットの4぀のサブブロックに分割され、それぞれXOR操䜜で拡匵キヌの32ビットフラグメントを重ね合わせたす。 操䜜Tが実行され、デヌタブロックがそれぞれ4ビットの32個のサブブロックに分割されたす。



各4ビットサブブロックは、次のようなS4ルックアップテヌブルを通過したす。2,5,10,12,7,15,1,11,13,6,0,9,4,8​​,3,14



次に、デヌタブロックは、操䜜Tの逆の操䜜T 'を䜿甚しお32ビットのサブブロックに分割されたす。XOR操䜜は、拡匵キヌの他の4぀のフラグメントを重ね合わせたす。 サブブロックの最初のペアの倀は、関数Fの入力に転送されたす。この関数の結果ずしお、2぀の32ビット倀が取埗され、XOR挔算によっお最初の2぀のサブブロックに重ねられたす。 サブブロックの最初のペアはサブブロックの2番目のペアず亀換され、最埌の倉換ステップが繰り返されたす。



RC4



ARC4たたはARCFOURRC4ず呌ばれたすずしおも知られおいるのは、コンピュヌタヌネットワヌクのさたざたな情報セキュリティシステムSSLおよびTLSプロトコル、WEPおよびWPAワむダレスセキュリティアルゎリズムなどで広く䜿甚されおいるストリヌム暗号です。



この暗号はRSA Securityによっお開発されたものであり、䜿甚するにはラむセンスが必芁です。

RC4アルゎリズムは、ストリヌム暗号ず同様に、擬䌌ランダムビットゞェネレヌタヌに基づいおいたす。 キヌはゞェネレヌタヌの入力に曞き蟌たれ、擬䌌ランダムビットは出力で読み取られたす。 キヌの長さは40〜2048ビットです。 生成されたビットの分垃は均䞀です。



暗号の䞻な利点





RC4は次の堎合に非垞に脆匱です。





これらの芁因ずその䜿甚方法により、暗号システムが安党でなくなる可胜性がありたすWEPなど。



Illivionのさらなる実装。



C実装
 using System; using System.Linq; namespace RC4_Testing { public class RC4 { byte[] S = new byte[256]; int x = 0; int y = 0; public RC4(byte[] key) { init(key); } // Key-Scheduling Algorithm //    private void init(byte[] key) { int keyLength = key.Length; for (int i = 0; i < 256; i++) { S[i] = (byte)i; } int j = 0; for (int i = 0; i < 256; i++) { j = (j + S[i] + key[i % keyLength]) % 256; S.Swap(i, j); } } public byte[] Encode(byte[] dataB, int size) { byte[] data = dataB.Take(size).ToArray(); byte[] cipher = new byte[data.Length]; for (int m = 0; m < data.Length; m++) { cipher[m] = (byte)(data[m] ^ keyItem()); } return cipher; } public byte[] Decode(byte[] dataB, int size) { return Encode(dataB, size); } // Pseudo-Random Generation Algorithm //    private byte keyItem() { x = (x + 1) % 256; y = (y + S[x]) % 256; S.Swap(x, y); return S[(S[x] + S[y]) % 256]; } } static class SwapExt { public static void Swap<T>(this T[] array, int index1, int index2) { T temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; } } }
      
      







RC5



RSA Security Inc.のRon Rivestが蚭蚈したブロック暗号 可倉数のラりンド、ブロック長、キヌ長で。 これにより、範囲が拡匵され、アルゎリズムのより匷力なバヌゞョンぞの移行が簡玠化されたす。



クラシックRC5の「ハヌフラりンド」の倉換がわずかに倉曎されるアルゎリズムには、いく぀かの異なるバヌゞョンがありたす。 叀兞的なアルゎリズムは、3぀の基本挔算ずその反転を䜿甚したす。



  1. モゞュロ加算
  2. ビットごずの排他的ORXOR
  3. 可倉ビット数による埪環シフト挔算。


䞻なむノベヌションは、以前の暗号化アルゎリズムでは䜿甚されおいなかった可倉ビット数でのシフト操䜜の䜿甚です。 これらの操䜜はほずんどのプロセッサで同様に迅速に実行されたすが、同時にアルゎリズムの差分および線圢暗号解析を倧幅に耇雑にしたす。



RC5暗号化は2぀のステップで構成されたす。 キヌ拡匵手順ず暗号化を盎接。 埩号化の堎合、キヌ拡匵手順が最初に実行され、次に暗号化手順ず反察の操䜜が実行されたす。



うさぎ



2003幎2月に第10回FSEシンポゞりムで初めお導入された高速ストリヌム暗号。 2005幎5月に、圌はむンラむン暗号化システムのペヌロッパ暙準を䜜成するこずを目的ずしたeStreamコンテストに送られたした。



りサギの開発者は、Martin Boesgaard、Mette Vesterager、Thomas Pedersen、Jesper Christiansen、Ove Scaveniusです。



Rabbitは128ビットキヌず64ビット初期化ベクトルを䜿甚したす。 この暗号は、暗号化速床が速いため、゜フトりェアで䜿甚するために蚭蚈されたした。 同時に、暗号化速床は、Pentium 3プロセッサでは1バむトあたり3.7サむクルCPB、ARM7では1バむトあたり10.5サむクルに達する可胜性がありたす。 ただし、暗号はハヌドりェアで実装された堎合、高速でコンパクトであるこずが蚌明されたした。



暗号の䞻芁なコンポヌネントは、反埩ごずに128メッセヌゞビットを暗号化するビットストリヌムゞェネレヌタヌです。 暗号の利点は、2぀の連続する反埩間で内郚状態を完党に混合するこずです。 ミキシング機胜は、最新のプロセッサで䜿甚可胜な算術挔算に完党に基づいおいたす。぀たり、暗号を実装するためにS眮換ブロックずルックアップテヌブルは必芁ありたせん。



暗号の䜜成者は、Crypticoホヌムペヌゞで技術的な説明の完党なセットを提䟛したした。 暗号はRFC 4503にも蚘茉されおいたす。Crypticoは暗号特蚱を保持しおおり、長幎にわたっお商甚目的で暗号を䜿甚するにはラむセンスが必芁でした。 ただし、2008幎10月6日には、コヌドをあらゆる目的で無料で䜿甚するこずが蚱可されたした。



ニュヌデス



暗号化においお、ロバヌト・スコットが1985幎にDES暙準の代替ずしお開発した察称ブロック暗号化アルゎリズム。120ビットの安党なキヌサむズでより信頌性の高い暗号を実装したす。



NewDESは掟生名がありたすが、完党に異なる構造を持ち、DESよりもはるかに単玔で、プログラムで簡単に実装でき、ビット単䜍の順列は含たれたせん。すべおの操䜜はバむトで実行されたす。 このアルゎリズムは256芁玠の眮換テヌブルを䜿甚し、1回のラりンドで8の加算挔算がモゞュロ2で実行され、関数Fを䜿甚した眮換-眮換テヌブルを䜿甚した眮換が実行されたす。



初版の䞻芁なスケゞュヌルはかなり匱く、NewDES-96版で修正されたした。 刀明したように、NewDESアルゎリズムはDESアルゎリズムよりも暗号解読に察する耐性が䜎くなりたすが、NewDES-96に察するブルヌトフォヌス攻撃はほずんど䞍可胜であり、この゚ディションのアルゎリズムははるかに安党です。



サルサ20



Daniel Bernshteinが開発したむンラむン暗号化システム このアルゎリズムは、eSTREAMコンテストで発衚されたした。その目的は、メヌルシステムによっお送信されるデヌタの暗号化に関する欧州暙準を䜜成するこずでした。 このアルゎリズムは、最初のプロファむル高垯域幅の゜フトりェアアプリケヌションのストリヌム暗号で競争に勝ちたした。



Salsa20暗号は次の操䜜を䜿甚したす。



  1. 32ビット数の远加。
  2. 2を法ずするビット加算xor;
  3. ビットシフト。


このアルゎリズムは、20ルヌプのハッシュ関数を䜿甚したす。 その䞻な倉換は、AESアルゎリズムに䌌おいたす。



゜セマヌク



Sosemanukは、プロファむル1の「ストリヌム暗号プリミティブのECRYPTコヌル」によるず、新しい察称゜フトりェア-指向ストリヌム暗号です。 キヌの長さは128〜256ビットです。 初期倀は128ビットに蚭定されおいたす。 䌝えられるずころでは、キヌの長さは128ビット保護に達したす。 Sosemanuk暗号は、SNOW 2.0ストリヌム暗号の基本原則ず、ブロック暗号SERPENTから掟生したいく぀かの倉換の䞡方を䜿甚したす。 Sosemanukは、セキュリティず有効性の䞡方の点でSNOW 2.0を改善するこずを目指しおいたす。 特に、簡単なIVセットアップ手順を䜿甚したす。 たた、いく぀かのアヌキテクチャプラットフォヌムのパフォヌマンスを向䞊させるために、静的デヌタの数を枛らす必芁がありたす。



Sosemanuk暗号は、SNOW 2.0ストリヌム暗号の基本原則「雪」-英語の「雪」ず、ブロック暗号SERPENT「SERPENT」-英語の「蛇」から掟生したいく぀かの倉換の䞡方を䜿甚したす。 このため、その名前はヘビず雪の䞡方に関連付ける必芁がありたす。 しかし、雪蛇は冬には眠りに぀くか暖かい気候に移動するため、雪蛇は存圚しないこずはよく知られおいたす。 さらに、゜セマヌクは、カナダ東郚の郚族に分垃する人気のあるスポヌツです。 ゲヌムのアむデアは、雪の倚い海岞に朚補の棒をできる限り投げ蟌むこずです。 名前は人々の方蚀に由来し、雪の䞭の棒ず蛇ずの比范が含たれおいたす。 「Kwakweco-cime win」はこのゲヌムの名前の1぀ですが、暗号の名前にはふさわしくありたせん。



トリビりム



察称同期ストリヌミング暗号化アルゎリズム。䞻に、䜜業速床ず芁玠数のバランスが柔軟なハヌドりェア実装に焊点を圓おおおり、かなり効果的な゜フトりェア実装の可胜性もありたす。



この暗号は、欧州プロゞェクトeSTREAMのポヌトフォリオの䞀郚ずしお、2008幎12月に導入されたした。プロファむル2ハヌドりェア指向の暗号。 暗号の䜜成者はクリストフ・デ・カニ゚ずバヌト・プレネルです。



このストリヌム暗号は、最倧で 2 64 キヌの80ビットずIV初期化ベクトルの80ビットの出力ストリヌムのビット。 これはeSTREAMプロゞェクトの最も単玔な暗号であり、暗号の安定性に優れた結果を瀺しおいたす。



Triviumは、軜量ストリヌム暗号ずしおISO / IEC 29192-3暙準に含たれおいたす。

Triviumの初期状態は、合蚈288ビットの3぀のシフトレゞスタです。 各サむクルで、シフトレゞスタのビットは、ダむレクトずフィヌドバックの非線圢の組み合わせによっお倉曎されたす。 暗号を初期化するには、キヌKず初期化ベクトルIVが2 of 3レゞスタに曞き蟌たれ、アルゎリズムが4x288 = 1152回実行されたす。これにより、キヌの各ビットず初期化ベクトルの各ビットに察する初期状態の各ビットの䟝存性が保蚌されたす。



初期化ステヌゞを通過した埌、各クロックサむクルでキヌストリヌムZの新しいメンバヌが生成され、次のテキストメンバヌずXORプロシヌゞャを実行したす。 埩号化手順は逆の順序で行われたす。暗号文の各メンバヌは、キヌストリヌムZの各メンバヌずXORプロシヌゞャを枡したす。



VMPC



これは、コンピュヌタヌネットワヌクの䞀郚の情報保護システムで䜿甚されるストリヌム暗号です。 暗号は、暗号䜜成者Bartoszultakポヌランド語。BartoszŻółtak、英語。BartoszZoltakによっお、人気の暗号RC4の拡匵バヌゞョンずしお開発されたした。 VMPCアルゎリズムは、ストリヌム暗号ず同様に、キヌによっおパラメヌタヌ化された擬䌌ランダムビットゞェネレヌタヌに基づいお構築されたす。 RC4などの暗号の䞻な利点は、高速、可倉キヌサむズ、初期化ベクトル128〜512ビットを含む、実装の容易さ文字通り数十行のコヌドです。



暗号の基瀎は擬䌌乱数ゞェネレヌタであり、そのベヌスは䞀方向の䞍可逆関数VMPCEng。Variably Modified Permutation Compositionです。



カ゚ル



コスタリカの䌚瀟TecApro Internacionalによっお開発された、非正統的な構造の察称ブロック暗号化アルゎリズム。アメリカAESコンテストの参加者の1人。



FROGアルゎリズムは、1998幎に、ラテンアメリカの小さなコスタリカ州以前は暗号技術の開発では䞍明でしたのTecnologia ApropriadaTesArgoの3人の専門家によっお䜜成されたしたDianelos Georgoudis、Damian Lerouv JillpyDamian LerouxBiess and Besサむモン・チャベス。



競争のために発衚された暗号バヌゞョンは、AES芁件に準拠しおおり、128ビットに等しいブロックず、128、192、たたは256ビット長のキヌを持っおいたす。 アルゎリズム自䜓は、理論的には、40〜1000ビットの長さのキヌを蚱可したす。



コヌドFROGは、コスタリカで登録された囜際䌁業TecApro Internacionalによっお競争に備えられたした。 アルゎリズムの開発者は、暗号化の䞖界ではあたり知られおいないD. Georgoudis、D。Leroux、およびB. Chavesです。 著者によるず、FROGは「非正統的な構造を持぀新しい暗号」です。 暗号の匷床の基瀎は耇雑な蚭蚈の秘密の内郚キヌであり、暗号化/埩号化操䜜自䜓は非垞に簡単です。

8月に、TWOFISHチヌムWagner、Ferguson、およびSchneierは、FROG暗号キヌを玄257の人件費で開くこずができるこずを瀺したした。



暗号の匷床に関しおは、この指暙を怜蚌するのははるかに困難です。 NIST Webサむトでの最初のラりンドの予備評䟡段階で、AES2䌚議で盎接、ほずんどすべおの候補暗号の評刀を䜕らかの圢で「傷぀けた」かなりの数の暗号解析結果が提瀺されたした。 ただし、明瀺的な郚倖者LOKI、FROG、MAGENTA、およびHPCに぀いお話さない堎合、アルゎリズムの明らかな匱点は芋぀かりたせんでした。



ナッシュ



ロシアの䌚瀟LAN CryptoのためにAnatoly LebedevずAlexei Volchkovによっお開発されたブロック察称暗号化アルゎリズム。



NUSHには、異なるブロックサむズ64、128、256ビット、異なるラりンド数ブロックサむズに応じお36、128、たたは132ラりンドのいく぀かの異なるオプションがあり、128、192、たたは256ビットのキヌ長を䜿甚したす。 アルゎリズムはSブロックを䜿甚せず、AND、OR、XOR、モゞュロ加算、巡回シフトなどの挔算のみを䜿甚したす。 最初のラりンドの前ず最埌のラりンドの埌、キヌは「癜く」されたす。



このアルゎリズムはNESSIEプロゞェクトで提案されたしたが、遞択されたせんでした。これは、線圢暗号解読がブルヌトフォヌス攻撃よりも効果的であるこずが瀺されたためです。

暗号化アルゎリズムに基づいお、他のアルゎリズムを構築できたす。 これらのいく぀かはこの蚘事で抂説されおいたす。



REDOC



1990幎にMichael WoodによっおCryptech甚に開発され、REDOC IIずいう名前の察称ブロック暗号アルゎリズム。すべおの操䜜-眮換、眮換、XORはバむトで実行されるため、プログラムで効果的に実装できたす。アルゎリズムは、テヌブル関数の倉曎を䜿甚しお、キヌず゜ヌスのプレヌンテキスト䟝存テヌブルのセットSブロックを䜿甚したす。アルゎリズムは、マスクの䜿甚を区別したす。キヌテヌブルから取埗した番号。マスクは、特定のラりンドの特定の関数のテヌブルを遞択するために䜿甚されたす。この堎合、マスク倀ずデヌタ倀の䞡方が䜿甚されたす。

キヌを開く最も効果的な方法はブルヌトフォヌスです;目暙を達成するには2160回の操䜜が必芁です。ほが唯䞀の効果的な暗号解析は、Thomas Kuzikによるアルゎリズムのラりンドの1぀を開くこずでしたが、それ以䞊のラりンドに拡匵するこずはできたせんでした。 2300のオヌプンテキストの助けを借りお、4ラりンド3のマスク倀が取埗された埌、ShamirずBihamによるラりンドの1぀の暗号解析が実行されたしたが、これは成功しなかったため、珟時点ではアルゎリズムは暗号ず芋なされたす。



たた、Michael Woodが䜜成したアルゎリズムの倧幅に簡玠化されたバヌゞョンであるREDOC IIIもありたす。 80ビットブロックが䜿甚され、キヌの長さは可倉であり、20,480ビットに達する可胜性がありたす。順列ず眮換は陀倖され、ブロックずキヌに察するすべおの操䜜はXORの䜿甚のみに基づいおいたす。そのため、暗号化速床が倧幅に向䞊し、差分暗号解読に察する耐性が損なわれたす。このアルゎリズムは、プラむベヌトキヌに基づいお生成された256個の10バむトキヌず、XOR 128 10バむトキヌに基づいお取埗された2぀の10バむトマスクブロックに基づいおいたす。 REDOC IIIアルゎリズムの䞡方のマスクを正垞に回埩するには、223の平文が必芁です。このアルゎリズムはシンプルで高速です。 33メガヘルツプロセッサ80386では、2.75 Mbpsの速床でデヌタを暗号化したす。 REDOC II暗号化システムは、20 MHzのクロック呚波数で800 kbpsを暗号化できたす。



REDOC IIアルゎリズムずその簡易バヌゞョンは、米囜で特蚱を取埗しおいたす。



䞉方



これは、RijndaelアルゎリズムAESず呌ばれるこずもあるの䜜成者の1人であるJoan Daemanによっお開発された、秘密鍵を䜿甚した察称ブロック暗号です。



3-Wayアルゎリズムは11ステップのSPネットワヌクです。96ビットのブロックずキヌが䜿甚されたす。暗号化スキヌムは、SPネットワヌクなどのアルゎリズムに䞀般的であるように、効果的なハヌドりェア実装を䌎いたす。



公開埌たもなく、3りェむアルゎリズムの暗号解析が成功し、関連キヌに基づく攻撃に察する脆匱性が瀺されたした。アルゎリズムは特蚱を取埗しおいたせん。



フグ



可倉キヌ長のブロック察称暗号化を実装する暗号化アルゎリズム。1993幎にブルヌスシュナむアヌによっお蚭蚈されたした。これはFeistelネットワヌクです。XOR、眮換、加算などの簡単で高速な操䜜で実行されたす。特蚱がなく自由に配垃されたす。



Blowfishが登堎する前は、既存のアルゎリズムは特蚱を取埗しおいるか、信頌性が䜎く、䞀郚は秘密にされおいたしたたずえば、Skipjack。このアルゎリズムは、旧匏のDESおよび特蚱取埗枈みのIDEAに代わる迅速か぀無料の代替手段ずしお、1993幎にBruce Schneierによっお開発されたした。著者によるず、Blowfishの蚭蚈基準は次のずおりです。



  1. 速床32ビットプロセッサでの暗号化は26サむクルで発生したす;
  2. 単玔性アルゎリズムの実装における゚ラヌの可胜性を枛らす単玔な操䜜の䜿甚による;
  3. コンパクト5 KB未満のメモリで動䜜する胜力;
  4. カスタムセキュリティ可倉キヌ長。


アルゎリズムは、キヌ拡匵ずデヌタ暗号化の2぀の郚分で構成されおいたす。キヌ拡匵の段階で、元のキヌ最倧448ビット長は、18個の32ビットサブキヌず256個の芁玠を含む4個の32ビットSブロックに倉換されたす。受信したキヌの合蚈量は18 + 256 ∗ 4 ∗ 32 = 33344 b およびt18 + 256 ∗ 4 ∗ 32 = 33344ビットたたは4168バむト。



キャスト



倚くの暗号保護補品、特にPGPずGPGの䞀郚のバヌゞョンで䜿甚されおいるFeistelネットワヌクブロック察称暗号化アルゎリズムは、カナダ政府による䜿甚も承認されおいたす。



このアルゎリズムは、1996幎に他のCAST-256アルゎリズムAES候補アルゎリズムでも䜿甚されおいるCAST暗号構築方法を䜿甚しお、Carlisle AdamsずStafford Tavaresによっお䜜成されたした。



CAST-128は、12ビットたたは16ラりンドのFeistelネットワヌクで構成され、ブロックサむズは64ビット、キヌの長さは40〜128ビットですただし、増分は8ビットのみです。キヌサむズが80ビットを超える堎合、16ラりンドが䜿甚されたす。このアルゎリズムは、ベント関数、XOR挔算、モゞュラヌ挔算モゞュラヌ加算および枛算に基づいた8x16 Sブロックを䜿甚したす。ラりンド関数には3぀の異なるタむプがありたすが、構造は䌌おおり、異なる堎所で実行する操䜜加算、枛算、たたはXORの遞択のみが異なりたす。



CAST-128はEntrustの特蚱によっお保護されおいたすが、商甚たたは非商甚目的で䞖界䞭で無料で䜿甚できたす。



CASTは、差分および線圢暗号解読に耐性がありたす。 CASTアルゎリズムの匷みは、Sブロックにありたす。 CASTには固定Sブロックがなく、アプリケヌションごずに再構築されたす。 CASTの特定の実装甚に䜜成されたSブロックは二床ず倉曎されたせん。぀たり、Sブロックは実装に䟝存し、キヌに䟝存したせん。 Northern Telecomは、Macintoshコンピュヌタヌ、PC、およびUNIXワヌクステヌション甚のEntrust゜フトりェアパッケヌゞでCASTを䜿甚しおいたす。圌らが遞択したSブロックは公開されおいたせんが、驚くこずではありたせん。

CAST-128はEntrust Technologiesが所有しおいたすが、商甚および非商甚の䞡方で無料で䜿甚できたす。CAST-256は無料でアクセス可胜なCAST-128拡匵機胜で、最倧256ビットのキヌサむズを受け入れ、128ビットのブロックサむズを持ちたす。CAST-256は、AESの最初の候補の1぀でした。



CAST-256は、Cボックスを含むCAST-128ず同じ芁玠から構築されたすが、ブロックサむズは2倍になり、128ビットに等しくなりたす。これは、拡散特性ず暗号保護に圱響したす。

RFC 2612は、CAST-256を商業目的および非商業目的で䞖界䞭で自由に䜿甚できるず述べおいたす。



e2



暗号化においお、E2は1998幎にNTTが䜜成し、AESコンテストに提出した察称ブロック暗号です。



他のAES候補ず同様に、E2は128、192、たたは256ビットキヌを䜿甚しお128ビットブロックで実行されたす。12ラりンドのFeistelネットワヌクを䜿甚したす。E2には、モゞュラヌ乗算を䜿甚するような入力ず出力の倉換倉換がありたすが、ラりンド関数自䜓はXOR挔算ずSボックス怜玢のみで構成されおいたす。単䞀の8×8ビットSボックスは、有限䜓GF28䞊でX127のべき乗に離散的に䞊昇するアフィン倉換で構成されおいたす。NTTは、E2の倚くの特別な機胜をCamelliaで採甚しおおり、本質的にE2に眮き換えられおいたす。



Twofish



ブロックサむズ128ビット、キヌ長256ビットたでの察称ブロック暗号化アルゎリズム。ラりンド数16。ブルヌス・シュナむアヌ率いる専門家チヌムによっお開発されたした。圌は、AESコンペティションの第2ステヌゞの5぀のファむナリストの1人でした。このアルゎリズムは、Blowfish、SAFER、およびSquareアルゎリズムに基づいお開発されおいたす。



アルゎリズムの特城は、事前に蚈算されたキヌ䟝存の眮換ノヌドの䜿甚ず、暗号化サブキヌを展開するための耇雑なスキヌムです。nビット暗号化キヌの半分は暗号化キヌ自䜓ずしお䜿甚され、もう1぀はアルゎリズムを倉曎するために䜿甚されたす亀換ノヌドはそれに䟝存したす。



Twofishは、AESのNISTの芁件ず掚奚事項を満たすように特別に蚭蚈されたした。



  1. 128ビットブロック察称暗号
  2. キヌの長さ128、192、および256ビット
  3. 匱いキヌの欠劂
  4. ( 32- )
  5. ( , , - . .).
  6. — .


しかし、アルゎリズムの構造の耇雑さ、したがっお、匱いキヌたたは隠されたリンクの分析の耇雑さ、およびほずんどのプラットフォヌムのRijndaelず比范しおかなり遅い実行時間は、圌の奜意を発揮したせんでした。



Twofishアルゎリズムは、128ビット入力ブロックのBlowfishアルゎリズムを倉曎しようずした結果生じたした。新しいアルゎリズムは、ハヌドりェアで簡単に実装されより小さいテヌブルの䜿甚を含む、より高床なキヌスケゞュヌル拡匵システムを持ち、独自の機胜Fを



持぀こずになりたした。その結果、アルゎリズムは4぀のブランチを持぀混合Feistelネットワヌクずしお実装されたした。アダマヌル暗号倉換Pseudo-Hadamar Transform、PHTを䜿甚しお盞互に倉曎したす。



最新の圓時32ビットプロセッサおよびスマヌトカヌドや同様のデバむスで効果的に実装できる可胜性は、Twofish開発者を導く重芁な原則の1぀です。



たずえば、関数Fでは、PHTを蚈算しおキヌKの䞀郚を远加する堎合、埓来のxorの代わりに意図的に远加が䜿甚されたす。これにより、Pentiumプロセッサフ​​ァミリのLEAチヌムを䜿甚できるようになり、1サむクルでアダマヌル倉換の蚈算が可胜になりたすT 0 + 2 T 1 + K 2 r + 9 m o d 2 32 ∗ T 0 + 2 T 1 + K 2 r + 9 m o d 2 32    ïŒˆã“の堎合、コヌドは特定の倀にコンパむルする必芁がありたすキヌ。

Twofishアルゎリズムは特蚱を取埗しおいないため、請求や控陀なしで誰でも䜿甚できたす。倚くの暗号化プログラムで䜿甚されおいたすが、Blowfishほど広く䜿甚されおいたせん。



Xtea



TEAアルゎリズムの重倧な゚ラヌを排陀するために蚭蚈されたブロック暗号アルゎリズム。暗号開発者は、David WheelerずRoger Needhamケンブリッゞ倧孊コンピュヌタヌ科孊郚です。このアルゎリズムは、1997幎にリリヌスされおいない技術レポヌトで発衚されたした。暗号は特蚱を取埗しおいたせん。メモリ芁件が非垞に䜎く、実装が容易であるため、倚くの暗号化アプリケヌションず幅広いハヌドりェアで広く䜿甚されおいたす。



TEAず同様に、暗号は64ビットブロックでの操䜜に基づいおおり、32の完党なサむクルを持ち、各ラりンドには2ラりンドのFeistelネットワヌクがありたす。぀たり、64ラりンドのFeistelネットワヌクになりたす。ただし、より良い拡散を達成するためのラりンドの数は、パフォヌマンスを損なうほど増やすこずができたす。さらに、XTEAでは、TEAず同様に、4぀の32ビットワヌドK [0]、K [1]、K [2]およびK [3]で構成される128ビットキヌが䜿甚されたす。 XTEAには、通垞の意味での䞻芁な蚈画アルゎリズムはありたせん。各ラりンドで4぀のキヌワヌドのどれを䜿甚するかを決定するために、定数Ύ= 9E3779B916がアルゎリズムで䜿甚されたす。 TEAでは、そのような配垃はありたせん。 TEAずのもう1぀の違いは、暗号で䜿甚されるビット操䜜の順列です。これらの改善のおかげで、XTEAはTEAず比范しお倧きな問題を抱えおいたせん。しかし同時に、TEAアルゎリズムの2぀の䞻な欠陥を排陀したした。

TEAの各キヌは他の3぀ず同等です。぀たり、開発者が意図したように、有効なキヌの長さは128ビットではなく126ビットです。

TEAは、関連するキヌに察する攻撃を受けやすくなっおいたす。このような攻撃では、遞択されたプレヌンテキストが223個だけで、時間の耇雑さは232になりたす。



りェむク



1993幎にDavid J Wheelerによっお䜜成された自動キヌストリヌム暗号化アルゎリズム。これは、䞭速ブロック暗号化を䜿甚した暗号化システムです。䜜業時には、繰り返しテヌブルの䜿甚ず倧きな状態空間の存圚が必芁です。暗号の範囲は32ビットワヌドを䜿甚し、CFBモヌドで動䜜したす-暗号化されたシヌケンスの前のワヌドは、次の生成の基瀎ずしお機胜したす。たた、アルゎリズムは256個の32ビットワヌドで構成されるS眮換ブロックを䜿甚し、安定性を高めたす。



アルゎリズムは、遞択された゜ヌステキストに察する攻撃および遞択された暗号テキストに察する攻撃に察しお䞍安定です。



カツオ



Capstoneプロゞェクトの䞀環ずしお米囜囜家安党保障局によっお開発されたブロック暗号。開発埌、暗号に関する情報は分類されたした。元々は、クリッパヌチップでの䜿甚を目的ずしおおり、政府の電話ネットワヌクやモバむルおよびワむダレスネットワヌクを介しお送信される音声情報を保護しおいたした。アルゎリズムは埌に機密解陀されたした。



Skipjackは、Capstoneプロゞェクトによっお提案されたむニシアチブの1぀でした。このプロゞェクトは、米囜政府が資金提䟛した囜家安党保障局NSAず米囜囜立暙準技術研究所NISTが䞻導したした。このむニシアチブの正匏な開始日は1993です。暗号化アルゎリズムは1980幎に開発され、その最初の実装は1987幎に取埗されたした。この暗号は、保護された機噚に組み蟌たれおいるClipperチップで䜿甚するためのものでした。同時に、Skipjackはメッセヌゞの暗号化にのみ䜿甚され、認蚌機関によるその埌の䜿甚の可胜性のためのキヌの保管-暗号の䜿甚で最も議論されおいる偎面-は、法執行機関アクセスフィヌルドず呌ばれる別のメカニズムによっお達成されたした。



圓初、プロゞェクトは分類され、そのために倧きな批刀を受けたした。いく぀かの孊術研究者は、囜民の信頌を高め、アルゎリズムを評䟡するよう求められたした。独立した培底的な研究の時間が䞍足しおいるため、専門家は、NSAによっお提瀺されたアルゎリズム開発ず評䟡プロセスの蚘述の研究に集䞭したした。これに加えお、圌らは1ヶ月の間に䞀連の小さなテストを実斜したした。圌らの仕事に関する予備報告最終報告はありたせんでしたは、3぀の結論を瀺したした。



  1. 18か月ごずに蚈算胜力のコストが半枛するこずを考えるず、36幎埌にのみ、培底的な怜玢によっおSkipjackをハッキングするコストは、DESをハッキングするコストに匹敵したす。
  2. 差分暗号解読を含むより高速な方法を䜿甚しお暗号を砎るリスクは無芖できたす。アルゎリズムには匱いキヌず盞補性のプロパティはありたせん。
  3. 暗号解読に察するSkipjackの抵抗は、アルゎリズム自䜓の機密性に䟝存したせん。


このコヌドは1998幎6月24日に公開されたした。2016幎8月、NISTは暗号化暙準の䜿甚に関する新しい原則を採甚し、政府の目的でSkipjackアルゎリズムの認蚌を無効にしたした。



Skipjackは、80ビットキヌを䜿甚しお64ビットデヌタブロックを暗号化/埩号化したす。これは、32ラりンドの䞍均衡なFeistelネットワヌクです。



サメ



SHARKアルゎリズムは、ベルギヌのルヌベンカトリック倧孊を代衚する他の3人の専門家ず共同で、AES暙準の将来の著者であるVincent RidgemanずJoan Damenによっお開発されたした。これはSquareアルゎリズムよりも少し早い開発です。SHARKは1995幎に開発されたした



。アルゎリズムは128ビットキヌず64ビットブロックを䜿甚したす。 SHARKアルゎリズムには控えめなパラメヌタヌがあり、既存の暗号をIDEAやDESなどの64ビットブロックに眮き換えるように蚭蚈されおいたす。



SHARK暗号には、SHARK-A英語アフィン倉換ずSHARK-E英語exorの2぀のバリアントがありたす。

攻撃は、5ラりンドの倉曎されたバヌゞョンの暗号に察しおのみ行われたす。アルゎリズム自䜓は珟時点では安党ず芋なすこずができたす。



このアルゎリズムは開発され、より安党な新しいKHAZAD暗号の基瀎になりたした。Rijndaelアルゎリズムは、SHARK暗号ずその子孫のアむデアに基づいお怜蚎するこずもできたす。



蛇



ロス・アンダヌ゜ン、むヌラむ・ビハム、ラヌス・クヌヌセンによっお蚭蚈されたした。以前の著者の開発の䞀郚は、動物にちなんで名付けられたした。たずえば、タむガヌ、ベアなどです。

このアルゎリズムは、AESコンテストの第2ステヌゞの最終候補の1぀でした。AESコンテストに参加した他のアルゎリズムず同様に、Serpentのブロックサむズは128ビットで、可胜なキヌ長は128、192、たたは256ビットです。このアルゎリズムは、4぀の32ビットワヌドのブロックで動䜜する32ラりンドSPネットワヌクです。Serpentは、32個の1ビット「ストリヌム」を䜿甚しおすべおの操䜜を䞊行しお実行できるように蚭蚈されたした。



Serpentは他のAESファむナリストよりも保守的なアプロヌチを採甚しおおり、暗号蚭蚈者は既知のタむプの暗号解読に察抗するには16ラりンドで十分であるず考えおいたしたが、アルゎリズムがただ未知の暗号解読方法に耐えられるようにラりンドの数を32に増やしたした。



AESコンテストのファむナリストになったSerpentアルゎリズムは、投祚の結果、2䜍になりたした。

蛇は特蚱を取埗しおおらず、パブリックドメむンです。



このアルゎリズムは、AESコンテストに参加するために、「21䞖玀の暗号アルゎリズム」ずいうスロヌガンの䞋で䜜成されたした。新しい、未怜蚌、未怜蚌のテクノロゞヌは暗号の䜜成に䜿甚されたせんでしたが、採甚された堎合、膚倧な量の金融取匕ず政府情報を保護するために䜿甚されたす。AES競技者の䞻な芁件は、候補アルゎリズムが3DESよりも速く、少なくずも同じレベルのセキュリティを提䟛するこずでした。128ビットのデヌタブロックず256ビットのキヌが必芁です。16ラりンドのサヌペントは3DESず同じくらい信頌できたすが、2倍高速です。しかし、著者は、信頌性を高めるために、ラりンド数を32に増やす䟡倀があるず考えたした。これにより、暗号はDESず同じくらい速く、3DESよりもはるかに信頌性が高くなりたした。



シヌル



゜フトりェア実装甚に最適化された察称むンラむンデヌタ暗号化アルゎリズム。



1993幎にIBMによっおPhil RogawayずDon Coppersmithによっお蚭蚈されたした。このアルゎリズムは最適化されおおり、32ビットプロセッサ向けに掚奚されおいたす。動䜜するには、数キロバむトのキャッシュず8぀の32ビットレゞスタが必芁です。暗号化速床は、テキストのバむトあたり玄4マシンサむクルです。 160ビットキヌは、゚ンコヌドずデコヌドに䜿甚されたす。遅いキヌ凊理操䜜による䞍芁な速床損倱を避けるために、SEALは最初にいく぀かの倉換を実行しお、特定のサむズの3぀のテヌブルを䜜成したす。

これらのテヌブルは、キヌ自䜓ではなく、テキストの暗号化ず埩号化に盎接䜿甚されたす。



このアルゎリズムは、非垞に信頌性が高く、非垞に高速であるず考えられおおり、1993幎12月以来、米囜特蚱第5454039号によっお保護されおいたす。



1991幎、Ralph C. Merkleは、゜フトりェア指向の暗号の費甚察効果を説明したした。圌の意芋では、最も効果的なのはクフ、FEAL、RC4でした。ただし、信頌性の高い暗号化に察する顧客のニヌズは増え続けおおり、新しい゜リュヌションず叀い゜リュヌションの改良を探す必芁がありたした。



1992幎の倏に、新しい゜フトりェア最適化アルゎリズムSEAL 1.0の最初のバヌゞョンの開発が始たりたした。開発者は、ブロック暗号のラルフマヌクル英語のラルフC.マヌクルクフから䞻芁なアむデアず䜜業の原則を取り入れたした。圌らは、その実装が可胜な機噚の範囲を狭めるこずにより、プロゞェクトの最高の特性䞻に速床を達成するこずに決めたした。少なくずも8぀の汎甚レゞスタず少なくずも8 KBのキャッシュを備えた32ビットマシンを遞択したした。 1993幎3月にブロック暗号を䜜成するこずが決定されたしたが、その幎の10月たでに開発された擬䌌ランダム関数ファミリヌの構造がより速く機胜し、開発者が暗号化をストリヌミングするようになりたした。この構造は4぀のレゞスタで構成され、各レゞスタはテヌブルに応じお「隣接」を倉曎し、キヌから取埗。このような倉曎を倚数行った埌、レゞスタ倀がキヌシヌケンスに远加されたす。キヌシヌケンスは、特定の長さに達するたで反埩ごずに増加したす。開発䞭、アルゎリズムの内郚サむクルにほずんどすべおの泚意が払われたした。これは、レゞスタの初期化手順ずキヌからテヌブルを生成する方法がセキュリティにわずかな圱響を䞎えたためです。最終圢態では、SEAL 1.0プロゞェクトは1993幎12月にのみ登堎したした。これは、レゞスタの初期化の手順ずキヌからテヌブルを生成する方法がそのセキュリティにわずかな圱響を䞎えたためです。最終圢態では、SEAL 1.0プロゞェクトは1993幎12月にのみ登堎したした。これは、レゞスタの初期化の手順ずキヌからテヌブルを生成する方法がそのセキュリティにわずかな圱響を䞎えたためです。最終圢態では、SEAL 1.0プロゞェクトは1993幎12月にのみ登堎したした。



1996幎、Helena HandschuhEng。およびHenri GilbertEng。は、SEAL 1.0の簡易バヌゞョンおよびSEAL 1.0自䜓に察する攻撃に぀いお説明したした。圌らは必芁ずしおいた2 4぀の32ビットワヌドの長さを持぀ 30のテキスト。キヌに察する擬䌌ランダム関数の䟝存関係を芋぀けたす。その結果、SEAL 3.0およびSEAL 2.0アルゎリズムの次のバヌゞョンでいく぀かの改善ず倉曎が行われたした。たずえば、バヌゞョン1.0では、キヌシヌケンスの各反埩は2぀のレゞスタのみの倉曎で終了し、バヌゞョン3.0では4぀すべおが倉曎されたした。SEAL 3.0およびSEAL 2.0は、元のSHAの代わりにSHA-1アルゎリズム英語のSecure Hash Algorithm-1を䜿甚しおテヌブルを生成し、暗号解析に察する耐性を高めたした。



より安党



順列-順列ネットワヌクに基づく察称ブロック暗号化アルゎリズムのファミリヌ。アルゎリズムの開発ぞの䞻な貢献は、ゞェヌムズマッセむによっお行われたした。暗号の最初のバヌゞョンは、1993幎に䜜成および公開されたした。



暗号化キヌの長さず゜ヌステキストのブロックのサむズによっお互いに異なるいく぀かの暗号オプションがありたす。



アルゎリズムの最初のバヌゞョン-SAFER K-64は、1993幎にカリフォルニアの法人「Cylinc」のためにJames Masseyによっお開発されたした。同じ幎に公開されたアルゎリズムには、ブロックず64ビットの暗号化キヌがありたした。 6ラりンドの暗号化を䜿甚するこずをお勧めしたした。ただし、キヌの長さを128ビットに増やす必芁があるためアルゎリズムの元のバヌゞョンで脆匱性が発芋されたため、MasseyはSAFER K-128暗号の新しいバヌゞョンを開発したした。これはSAFER K-64の翌幎に公開されたした。新しいアルゎリズムには、シンガポヌル内務省によっお開発された䞻芁なスケゞュヌルが含たれ、その埌さたざたな目的で䜿甚されたした。たた、このアルゎリズムには10ラりンド最倧12ラりンドの暗号化を䜿甚するこずをお勧めしたした。



しばらくしお、アルゎリズムの最初のバヌゞョンでは、ラヌスクヌヌセンずショヌンマヌフィヌによっお発芋されたいく぀かの匱点が明らかになりたした。これには、SANU SK-64およびSAFER SK-128ず呌ばれるアルゎリズムの新しいバヌゞョンの䜜成が必芁であり、Knudsenによっお提案されたスキヌムに埓っおキヌスケゞュヌルが倉曎されたした。キヌの長さを40ビットに短瞮したオプションも開発されたした-SAFER SK-40。アルゎリズム名の略語「SK」は、「匷化されたキヌスケゞュヌル」の略です。暗号の新しいバヌゞョンでは、6回ではなく、少なくずも8回最倧10回の暗号化を䜿甚するこずが提案されたした。



SAFER +アルゎリズムは、1998幎にカリフォルニアに拠点を眮くCylinc Corporationがアルメニア科孊アカデミヌず共同で、最初の予遞ラりンドのみを開催したAESコンテストに参加するために開発したした。この暗号には、128ビットの入力ブロックず、128、192、たたは256ビットのキヌサむズがありたす。



SAFERアルゎリズムの最埌に䜜成された品皮は、2000幎にMasseyによっお開発されたSAFER ++であり、SAFER +アルゎリズムのさらなる開発になりたした。このアルゎリズムは、ペヌロッパのNESSIEアルゎリズムの競争に参加し、64ビットブロックの暗号ず128ビットブロックの2぀のバヌゞョンで提瀺されたした。競争の第2段階に入りたしたが、NESSIEが掚奚する暗号プリミティブのセットでは遞択されたせんでした。専門家は、8ビットのマシンスマヌトカヌドなどを陀くすべおのマシンで暗号が遅すぎ、暗号のセキュリティマヌゞンが小さすぎるず考えたした。



SAFERアルゎリズムは私有財産ではなく、著䜜暩によっお保護されおいたせん。぀たり、制限なしで䜿甚できたす。これらは完党に単玔なバむト操䜜で構成されおいるためキヌ生成時のバむトロヌテヌションを陀く、これらのアルゎリズムは䜎ビットプロセッサで実装できたす。



MISTY1



1995幎にFeistelの「ネストされた」ネットワヌクに基づいお䜜成されたブロック暗号化アルゎリズム。 MISTYはMitsubishi Enhanced Security Technologyの略であり、アルゎリズムの䜜成者の頭文字です垂川哲也、反町淳、時田俊倫、山岞tsu博もアルゎリズムの開発に参加したした。このアルゎリズムは1995幎に開発されたしたが、ラむセンスされ、1996幎に公開されたした。



MISTY1は、可倉ラりンド数のFeistelネットワヌクです8を掚奚したすが、4の倍数にするこずもできたす。このアルゎリズムは64ビットブロックで機胜し、128ビットキヌを䜿甚したす。この暗号は、NESSIE欧州倧䌚で64ビットブロックを暗号化するアルゎリズムの䞭で勝者ずなりたした。このコンテストのフレヌムワヌク内で実斜されたアルゎリズムの分析の結果、その前に、専門家は、このアルゎリズムには深刻な脆匱性はないず結論付けたした圌らは、暗号分析をはるかに困難にするネストされたFeistelネットワヌクを持぀アルゎリズムの構造であるず匷調したした。同様の研究が、日本の電子政府向けの暗号アルゎリズムの遞択に関するCRYPTRECプロゞェクトの䞀環ずしお実斜されたした。プロゞェクトの専門家は、MISTY1アルゎリズムを非垞に肯定的に評䟡し、高い暗号匷床マヌゞンを持っおいるず結論付けたした。アルゎリズムの暗号化速床は高く、ハヌドりェアの実装に非垞に効果的です。



MISTY1は、特蚱取埗枈みのアルゎリズムです。ただし、元の特蚱暩者である䞉菱電機は、無料で䜿甚するラむセンスを発行するず発衚したした。

MISTY1は、差分および線圢暗号解読に察する「実蚌枈みのセキュリティ」の理論に基づいお開発されたした。このアルゎリズムは、䜜成時に知られおいるさたざたな暗号攻撃に耐えるように蚭蚈されたした。



Mistyの出版以来、圌のセキュリティレベルを評䟡するために倚くの研究が行われおきたした。少ないラりンドでのMistyの調査の結果を以䞋に瀺したす。



高次差分暗号解析は、皋床の䜎い暗号を効果的にブロックするために適甚されたす。 Mistyには2぀のルックアップテヌブルS7ずS9が含たれおおり、䞡方ずもそれぞれ3ず2の小さな広告がありたす。したがっお、倚くの蚘事が差分mysti暗号解析に専念しおいたす。 FL関数を䜿甚しない5レベルのアルゎリズムで最良の結果が埗られたした。ただし、FL関数ずその䞭のワむドビットAND / OR挔算の存圚が、高階差分暗号解析の䜿甚を倧幅に耇雑にしたす。



䞍可胜な埮分分析は、各ラりンドたたはn番目のラりンドごずで同じサブキヌ倀を持぀ブロックフォントにも適甚できたす。たた、MISTY1にはかなり単玔なキヌ拡匵システムがあるため、このアルゎリズムぞのこの攻撃の適甚可胜性を考慮するこずは非垞に自然です。このような攻撃の最良の結果は、FL関数のないアルゎリズムを怜蚎したずきにも埗られたした。



この暗号は、NESSIE European Competition2000-2003で64ビットブロックを暗号化するアルゎリズムの䞭で勝者ずなりたした。この競合のフレヌムワヌク内で行われたアルゎリズムの分析の結果、その前に、専門家は、このアルゎリズムには深刻な脆匱性はないず結論付けたした圌らは、暗号解析をはるかに難しくするネストされたFeistelネットワヌクを持぀アルゎリズムの構造であるず匷調したした。



同様の研究が、日本の電子政府向けの暗号アルゎリズムの遞択に関するCRYPTRECプロゞェクトの䞀環ずしお実斜されたした。プロゞェクトの専門家は、MISTY1アルゎリズムを非垞に肯定的に評䟡し、高い暗号匷床マヌゞンを持ち、アルゎリズムは高い暗号化速床を持ち、ハヌドりェア実装に非垞に効果的であるず結論付けたした。



このアルゎリズムの倉曎がありたす-MISTY2。ただし、暗号匷床が䜎いため、広く知られおいたせんでした。



たた、MISTY1の修正であるアルゎリズムが普及したした。2000幎には、モバむル通信を暗号化するためのW-CDMA暙準になりたした。



KA日本語fromひらがなかすみ、ロヌマ字ka-霧、霧は、3GPPセルラヌネットワヌクで䜿甚されるブロック暗号です。 GSMで䜿甚され、GPRSでGEA3で䜿甚される堎合、A5 / 3ずも呌ばれたす。



SUMは、欧州電気通信暙準化機構ETSIの䞀郚であるSAGEセキュリティアルゎリズム専門家グルヌプによっお開発されたした。既存のMISTY1アルゎリズムは基瀎ずしお採甚され、セルラヌ通信での䜿甚に最適化されおいたす。

2010幎に暗号解読者が瀺したように、倉曎の過皋でMISTY1アルゎリズムの信頌性が䜎䞋したした。には特定の皮類の攻撃に察する脆匱性がありたすが、MISTY1はそれらに耐性がありたす。



SUMは、8ラりンドFeistelスキヌムで64ビットブロックサむズず128ビットキヌを䜿甚したす。各ラりンドでは、128ビットのラりンドキヌが䜿甚されたす。これは、サブキヌを生成するための固定手順によっお元のキヌから取埗された8぀の16ビットサブキヌで構成されたす。



火星



IBMによっお開発され、か぀おDESを䜜成したAESの候補コヌド。 IBMによるず、同瀟の25幎にわたる暗号解析の経隓はMARSアルゎリズムに組み蟌たれおおり、暗号は高い暗号匷床ずずもに、スマヌトカヌドに兞型的なような限られたフレヌムでも効果的に実装できたす。



暗号に関する倚くの蚘事で知られるLuciferDES暗号の著者の1人であるDon Coppersmithは、暗号の開発に参加したした差分暗号解析、高速行列乗算Coppersmith-Vinohradアルゎリズム、RSA暗号解析に察するSブロックの構造の改善。それに加えお、アルゎリズムの開発には、キャロリン・バルビック、゚ドワヌド・デビニョン、ロザリオ・れナロ、シェむ・ハレビ、チャランゞット・ゞュトラ、スティヌブン・M・マティアス・ミラ、ルヌク・オコナヌ、モハメド・パヌベノィアン、デビッド・サフォヌド、ネノェンコ・ズニッチが参加したした。



AESコンテストのルヌルによるず、参加者はアルゎリズムにわずかな倉曎を加えるこずができたす。このルヌルを䜿甚しお、MARSaの䜜成者はキヌ拡匵手順を倉曎し、䞍揮発性およびランダムアクセスメモリの芁件を削枛したした。アルゎリズムの修正バヌゞョンを以䞋に瀺したす。



AESコンテストの結果によるず、MARSは決勝に達したしたが、ラむンダヌルに敗れたした。結果の発衚2000幎5月19日埌、開発チヌムはAESコンテストに぀いお独自の意芋を述べ、子孫ぞの䞻匵に぀いおコメントしたした。



珟圚、MARSはロむダリティフリヌラむセンスの䞋で䞖界䞭に配垃されおいたす。このアルゎリズムは、暗号化アルゎリズムで䜿甚されるほずんどすべおの既存の技術を䜿甚しおいるずいう点でナニヌクです





ダブルミキシングの䜿甚は、暗号解析では困難です。これは、アルゎリズムの欠点の䞀郚です。同時に、珟時点ではアルゎリズムに察する効果的な攻撃はありたせんが、䞀郚のキヌは匱いサブキヌを生成できたす。



ロキ



暗号化では、LOKI89ずLOKI91はブロック暗号の察称キヌであり、DESデヌタ暗号化暙準の代替ずしお考えられたす。暗号は、DESを分析する䜜業の本䜓に基づいお開発され、構造がDESに非垞に䌌おいたす。ロキのアルゎリズムは、スカンゞナビアの神話の悪神ロキにちなんで呜名されたした。



LOKI89は、1990幎に最初に公開され、その埌オヌストラリアの暗号䜜成者Lori Brown、Joseph Pieprzyk、およびJennifer Seberryによっお単に「LOKI」ず呌ばれたした。 LOKI89は評䟡のために欧州RIPEプロゞェクトに提出されたしたが、遞択されたせんでした。



暗号は64ビットブロックず64ビットキヌを䜿甚したす。 DESず同様に、これは16ラりンドのFeistelネットワヌクであり、党䜓的な構造は䌌おいたすが、特定のSボックス、「P順列」、「拡匵順列」の遞択ずは異なりたす。 Sボックスは、Josef Pieprzykが開発した非線圢性基準を䜿甚しお、可胜な限り「耇雑」か぀「予枬䞍可胜」なものにしたす。それらの有効性は、DES Sボックスのよく知られた蚭蚈基準ず比范されたした。順列は、Sボックスの出力を可胜な限り迅速に「ミックス」するように蚭蚈されおおり、良奜なFeistel暗号に必芁な特性の雪厩ず完党性に寄䞎しおいたす。ただし、DESの同等のものずは異なり、それらは蚭蚈分析を支揎するために、可胜な限りクリヌンでシンプルなものになりたす振り返っおみるず、倚分少しシンプルすぎたす。



LOKI89の公開埌、新しい差分暗号解析に関する情報が利甚可胜になり、Knudsen 1993aによる初期解析の結果もいく぀か利甚可胜になりたした。これにより、LOKI91になるように蚭蚈が倉曎されたした。



LOKI 91は、LOKI89ぞの攻撃に察応しお開発されたしたBrown et al。、1991。倉曎には、開始キヌず終了キヌのホワむトニング、新しいSボックスの削陀、およびキヌスケゞュヌルのマむナヌな倉曎が含たれたす。より具䜓的には、Sブロックは修正され、異なる出力が同じ出力差分暗号化を䜿甚するフックに぀ながる可胜性を最小限に抑えるこずにより、攻撃の䜜者によっお詳现に説明されおいるように、この攻撃に察するLOKI91の耐性が向䞊したしたBihamおよびShamira 1991。キヌスケゞュヌルの倉曎は、「同等の」たたは「関連付けられた」キヌの数を枛らすように蚭蚈されおおり、暗号化スペヌスが削枛されおいたす。



結果の暗号はLOKI89よりも明らかに匷力で安党ですが、クヌヌセンずビハムによっお詳现に説明されおいるように、倚くの朜圚的な攻撃がありたす。したがっお、これらの暗号は、䜿甚するアルゎリズムではなく、ブロック暗号の開発における科孊的進歩の努力ず芋なされる必芁がありたす。匕甚数ず公開された批刀は、この目暙が達成されたこずを蚌明しおいたす。



アむデア



スむスの䌁業Ascomが特蚱を取埗した察称ブロックデヌタ暗号化アルゎリズム。PGP暗号化゜フトりェアパッケヌゞで䜿甚されるこずで知られおいたす。2000幎11月、IDEAは、欧州委員䌚のIST情報瀟䌚技術、情報瀟䌚技術プログラムの枠内でNESSIEプロゞェクトの候補ずしお玹介されたした。

このアルゎリズムの最初のバヌゞョンは、DESデヌタ暗号化の代わりずしお、1990幎にスむス研究所ETHチュヌリッヒのXuejia LaiずJames Massey埌にAscom-Tech AGに加入したHasler Foundationずの契玄の䞋によっお開発されたした。暙準、デヌタ暗号化の暙準およびPESProposed Encryption Standard、提案された暗号化暙準ず呌ばれたす。次に、PESの差分暗号解析に関するBehamずShamirの䜜品の出版埌、暗号の安定性を匷化するためにアルゎリズムが改良され、IPES英語の改良提案暗号化暙準、改良された暗号化暙準ず呌ばれたした。 1幎埌、それはIDEAEnglish International Data Encryption Algorythmに改名されたした。



IDEAは128ビットキヌず64ビットブロックサむズを䜿甚するため、プレヌンテキストは64ビットブロックに分割されたす。そのようなパヌティションが䞍可胜な堎合、最埌のブロックはビットの特定のシヌケンスによっおさたざたな方法で補完されたす。個々のブロックに関する情報の挏掩を防ぐために、さたざたな暗号化モヌドが䜿甚されたす。暗号化プロセスで䜿甚されるすべおの代数挔算は16ビット数で実行されるため、元の暗号化されおいない64ビットブロックはそれぞれ16ビットの4぀のサブブロックに分割されたす。IDEAは、暗号化ず埩号化に同じアルゎリズムを䜿甚したす。

アルゎリズムの基本的な革新は、異なる代数矀の操䜜の䜿甚です。





これらの3぀の操䜜は、次の意味で互換性がありたせん。





これらの3぀の操䜜を䜿甚するず、排他的OR操䜜のみに基づくDESよりもIDEA暗号解析が難しくなり、Sボックスず眮換テヌブルの䜿甚も䞍芁になりたす。IDEAはFeistelネットワヌクの修正版です。



フェリックス



ワンタむムメッセヌゞ認蚌コヌドを䜿甚した高速ストリヌム暗号。コヌドは2004幎のeSTREAMコンテストで発衚されたした。著者はブルヌス・シュナむアヌ、ダグ・りィッティング、ステファン・ラックス、フレデリック・ミュラヌです。このアルゎリズムは、232を法ずする加算挔算、2を法ずする加算挔算、および埪環シフトを備えおいたす。 Phelixは256ビットのキヌず128ビットのタむムスタンプを䜿甚したす。䞀郚の暗号孊者は、暗号が誀っお䜿甚された堎合に秘密鍵を取埗する可胜性に぀いお懞念を衚明しおいたす。

Phelixの前身はHelix暗号であり、最も単玔な操䜜で構築されおいたしたが、ハッキングされたこずが刀明したした。高床なHelixの名前はPhelixでしたが、eCryptコンテストで拒吊されたした。拒吊の理由は議論の䜙地がありたす-攻撃は他の暗号の匱点であるタむムスタンプの遞択に基づいおいたしたが、開発者は暗号がこの皮の攻撃に耐性があるず蚀いたした。他の条件で暗号の匷床を脅かすこずはありたせんが、暗号は埮分線圢暗号解読によっおハッキングされるこずが刀明したした。その結果、著者の掚定ず䞍泚意のために、Phelixは競争の第3ラりンドに認められたせんでした。これらすべおに加えお、いく぀かの理論的研究が登堎し、add-xor-shift操䜜の混合は必芁な非線圢性を提䟛しないず䞻匵されたしたが、実際にはハッキングはありたせんでした。珟圚、Phelix蚭蚈は、SkeinおよびThreefishで䜿甚するために著者によっお提案されおいたす。



著者は、远加の暗号解析を受け取るたでPhelixを䜿甚すべきではないず報告しおいたす。



差分攻撃の著者であるHongjun WuずBart Prenilは、十分な混乱ず拡散レむダヌを迂回しお、各平文の単語がキヌストリヌムに圱響を䞎えるずいう懞念を衚明したす。圌らは、これがHelixずPhelixの構造に固有の欠陥だず䞻匵しおいたす。著者は、Phelixは安党ではないず結論付けおいたす。



al



枅氎明宏枅氎明宏および宮口正治NTO埓業員が蚭蚈したブロック暗号。



64ビットブロックず64ビットキヌを䜿甚したす。圌のアむデアは、DESに䌌たアルゎリズムを䜜成するこずですが、より匷力なステヌゞ機胜を備えおいたす。より少ないステップを䜿甚しお、このアルゎリズムはより高速に動䜜したす。さらに、DESずは異なり、FEALのステヌゞ関数はSブロックを䜿甚しないため、アルゎリズムの実装では、眮換テヌブルを栌玍するための远加のメモリは必芁ありたせん。



1987幎に枅氎昭宏ず宮口正治によっお公開されたFEALブロック暗号は、DESず比范しお暗号の信頌性を損なうこずなく暗号化速床を䞊げるように蚭蚈されたした。最初は、アルゎリズムは64ビットブロック、64ビットキヌ、および4ラりンドの暗号化を䜿甚しおいたした。しかし、すでに1988幎にバヌトデンボヌアの研究が発衚され、10,000の暗号文で十分であり、遞択された平文に基づいお攻撃を成功させるこずが蚌明されたした。 FEAL暗号を最初に䜿甚したものの1぀は、線圢暗号解読でした。 1992幎を含め、束井満ず山岞A宏は、攻撃を成功させるには5぀の暗号文を孊習するだけで十分であるこずを蚌明したした。

発芋された脆匱性に察抗するために、䜜成者はFEAL-8暙準を公開するこずで暗号化のラりンド数を2倍にしたした。ただし、1990幎には、ヘンリヌギルバヌト英語版の脆匱性ず、遞択されたプレヌンテキストに基づく攻撃前のこのコヌド。それから1992幎、束井満ず山岞A匘は平文攻撃に぀いお説明した。



倚数の攻撃が成功したため、開発者は暗号をさらに耇雑化するこずにしたした。぀たり、1990幎にFEAL-Nが導入されたした。Nは任意の偶数の暗号化ラりンドであり、FEAL-NXが導入されたした。ここで、X英語拡匵からは128ビットに拡匵された暗号キヌの䜿甚を瀺したす。ただし、このむノベヌションは郚分的にしか圹立ちたせんでした。 1991幎、Eli BihamずAdi Shamirは、差分暗号解析法を䜿甚しお、培底的な怜玢よりも速く暗号を砎る可胜性を瀺したした。



それにもかかわらず、コミュニティによる暗号化アルゎリズムの研究の匷さのおかげで、線圢および差分暗号解析に察する暗号の脆匱性の境界が蚌明されたした。線圢暗号解読に察するラりンド数が26を超えるアルゎリズムの安定性は、森井志穂、青朚䞀mar、倧田䞀雄森合志保、青朚䞀mar、倪田和倫の䜜品、青朚䞀mar、小林邊男、森井志穂青朚䞀郎の䜜品で瀺されおいたす小林、森井志穂は、32ラりンド以䞊の暗号化を䜿甚するアルゎリズムに差分暗号解析を適甚するこずは䞍可胜であるこずを蚌明したした。



FEAL暗号は非垞に早い時期に開発されたずいう事実により、䞖界䞭の暗号孊者のためのトレヌニングの優れたオブゞェクトずしお機胜したした。



さらに、圌の䟋を䜿甚しお線圢暗号解読が発芋されたした。線圢暗号解読の発明者である束井満は、この䞻題に関する最初の研究でFEALずDESを怜蚎したした。



ツヌキヌ宇宙船



RSA



RSAは、Rivest、Shamir、およびAdlemanずいう名前の略語で、倧敎数因数分解問題の蚈算の耇雑さに基づく公開鍵暗号アルゎリズムです。 1977幎にマサチュヌセッツ工科倧孊のRon Rivest、Adi Shamir、およびLeonard Adlemanによっお説明されたした。



RSA暗号システムは、暗号化ずデゞタル眲名の䞡方に適した最初のシステムです。このアルゎリズムは、PGP、S / MIME、TLS / SSL、IPSEC / IKEなどを含む倚数の暗号化アプリケヌションで䜿甚されたす。 Rivest-Shamir-AdlemanRSAアルゎリズムは、最も䞀般的で安党な公開キヌ暗号化方匏の1぀です。このアルゎリズムは、非垞に倧きな100〜200桁の数字を説明する効果的な方法がないずいう事実に基づいおいたす。



RSAキヌは次のように生成されたす。



  1. p そしお q (, 1024 ).
  2. n=p∗q , .
  3. :

    φ(n)=(p−1)∗(q−1)
  4. e  1<e<φ(n) ), φ(n) φ(n) 。 e , , , 17, 257 65537.



    • 数 e (. public exponent)
    • , , e 。
    • e , 3, RSA.


  5. d , e φ(n) , , : d⋅e≡1(modφ(n)).

    . , .
  6. { e,n } RSA.
  7. { d,n }はRSA秘密鍵の圹割を果たし、秘密にされたす。


RSAセキュリティは、倧きな敎数を因数分解する蚈算の耇雑さに䟝存したす。蚈算胜力が向䞊し、より効果的なファクタリングアルゎリズムが識別されるず、数および倧きな数を増やす胜力も向䞊したす。暗号化はキヌのサむズに盎接関連付けられ、キヌの長さを2倍にするず、パフォヌマンスは䜎䞋したすが、匷床が指数関数的に増加したす。



JavaScriptの動䜜䟋
'use strict';



/**

* RSA hash function reference implementation.

* Uses BigInteger.js https://github.com/peterolson/BigInteger.js

* Code originally based on https://github.com/kubrickology/Bitcoin-explained/blob/master/RSA.js

*

* @namespace

*/

var RSA = {};



/**

* Generates a k-bit RSA public/private key pair

* https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Code

*

* @param {keysize} int, bitlength of desired RSA modulus n (should be even)

* @returns {array} Result of RSA generation (object with three bigInt members: n, e, d)

*/

RSA.generate = function (keysize) {

/**

* Generates a random k-bit prime greater than √2 × 2^(k-1)

*

* @param {bits} int, bitlength of desired prime

* @returns {bigInt} a random generated prime

*/

function random_prime(bits) {

var min = bigInt(6074001000).shiftLeft(bits-33); // min ≈ √2 × 2^(bits - 1)

var max = bigInt.one.shiftLeft(bits).minus(1); // max = 2^(bits) - 1

while (true) {

var p = bigInt.randBetween(min, max); // WARNING: not a cryptographically secure RNG!

if (p.isProbablePrime(256)) return p;

}

}



// set up variables for key generation

var e = bigInt(65537), // use fixed public exponent

p, q, lambda;



// generate p and q such that λ(n) = lcm(p − 1, q − 1) is coprime with e and |pq| >= 2^(keysize/2 - 100)

do {

p = random_prime(keysize / 2);

q = random_prime(keysize / 2);

lambda = bigInt.lcm(p.minus(1), q.minus(1));

} while (bigInt.gcd(e, lambda).notEquals(1) || p.minus(q).abs().shiftRight(keysize/2-100).isZero());



return {

n: p.multiply(q), // public key (part I)

e: e, // public key (part II)

d: e.modInv(lambda) // private key d = e^(-1) mod λ(n)

};

};



/**

* Encrypt

*

* @param {m} int / bigInt: the 'message' to be encoded

* @param {n} int / bigInt: n value returned from RSA.generate() aka public key (part I)

* @param {e} int / bigInt: e value returned from RSA.generate() aka public key (part II)

* @returns {bigInt} encrypted message

*/

RSA.encrypt = function(m, n, e){

return bigInt(m).modPow(e, n);

};



/**

* Decrypt

*

* @param {c} int / bigInt: the 'message' to be decoded (encoded with RSA.encrypt())

* @param {d} int / bigInt: d value returned from RSA.generate() aka private key

* @param {n} int / bigInt: n value returned from RSA.generate() aka public key (part I)

* @returns {bigInt} decrypted message

*/

RSA.decrypt = function(c, d, n){

return bigInt(c).modPow(d, n);

};










DSA



DSAは公開鍵を䜿甚しお電子眲名を䜜成する暗号化アルゎリズムですが、暗号化甚ではありたせんRSAやEl-Gamalスキヌムずは異なりたす。眲名は秘密に䜜成されたすが、公に怜蚌するこずができたす。これは、1぀のサブゞェクトのみがメッセヌゞ眲名を䜜成できるが、誰でもその正圓性を怜蚌できるこずを意味したす。このアルゎリズムは、有限䜓の察数を取る蚈算の耇雑さに基づいおいたす。



このアルゎリズムは、1991幎8月に米囜囜立暙準技術研究所米囜によっお提案され、特蚱を取埗しおいたす; NISTは、この特蚱をロむダリティなしで䜿甚できるようにしたした。 DSAは、1998幎12月15日に最初に公開されたDSSの䞀郚です。暙準は、FIPS-186-4の最新バヌゞョンである数回曎新されおいたす。



DSAには、メッセヌゞ眲名の䜜成Sず怜蚌Vの2぀のアルゎリズムS、Vが含たれおいたす。



䞡方のアルゎリズムは、最初に暗号化ハッシュ関数を䜿甚しおメッセヌゞハッシュを蚈算したす。アルゎリズムSはハッシュず秘密鍵を䜿甚しお眲名を䜜成し、アルゎリズムVはメッセヌゞハッシュ、眲名、および公開鍵を䜿甚しお眲名を怜蚌したす。



実際、眲名されるのは任意の長さのメッセヌゞではなく、そのハッシュ160-256ビットです。



メッセヌゞは、次のアルゎリズムに埓っお眲名されたす。





  1. 乱数の遞択 k∈(0;q)
  2. 蚈算 r=(gkmodp)modq
  3. 蚈算 s=(k−1(H(m)+x⋅r))modq
  4. 別のものを遞ぶ k それが刀明した堎合 r=0 たたは s=0
  5. 眲名は数字のペアです (r,s)


眲名の怜蚌眲名の



怜蚌は、アルゎリズムに埓っお実行されたす。



  1. 蚈算 w=s−1modq
  2. 蚈算 u1=(H(m)⋅w)modq
  3. 蚈算 u2=(r⋅w)modq
  4. 蚈算 v=((gu1⋅yu2)modp)modq
  5. 眲名は次の堎合に真です v=r


DSA眲名を䜜成および怜蚌する
 #include < CkCrypt2 .h> #include < CkDsa .h> void ChilkatSample ( void ) { bool ; //  Chilkat Crypt    . //    crypt  DSA. CryptCrypt2 crypt; success = crypt. UnlockComponent ( «  30-   » ); if (success! = true ) { std :: cout << crypt. lastErrorText () << "\ r \ n";  ; } . put_EncodingMode ( "hex" ); . put_HashAlgorithm ( "sha-1" ); //   SHA-1 .     . //  Chilkat Crypt   ,  //  ,     //  . // 20- SHA-1        . const char * hashStr = crypt. hashFileENC ( "hamlet.xml" ); CkDsa dsa; //    DSA   PEM. Chilkat DSA //          DSA     PEM  DER. //  LoadText    .   //        PEM  // . const char * pemPrivateKey = 0; pemPrivateKey = dsa. loadText ( "dsa_priv.pem" ); success = dsa. FromPem (pemPrivateKey); if (success! = true ) { std :: cout << dsa. lastErrorText () << "\ r \ n";  ; } //     ,  ,     // DSA-. success = dsa. VerifyKey (); if (success! = true ) { std :: cout << dsa. lastErrorText () << "\ r \ n";  ; } //       DSA: success = dsa. SetEncodedHash ( "hex" , hashStr); if (success! = true ) { std :: cout << dsa. lastErrorText () << "\ r \ n";  ; } // ,   DSA    ,   , //     : success = dsa. SignHash (); if (success! = true ) { std :: cout << dsa. lastErrorText () << "\ r \ n";  ; } //  SignHash ,  DSA   //.          base64- . (          //  «».) Const char * hexSig = dsa. getEncodedSignature ( "hex" ); std :: cout << ":" << "\ r \ n"; std :: cout << hexSig << "\ r \ n"; // ------------------------------------------------ ----------- //  2.   DSA // ---------------------------- ------------------------------- CkDsa dsa2; //    DSA  : const char * pemPublicKey = 0; pemPublicKey = dsa2. loadText ( "dsa_pub.pem" ); success = dsa2. FromPublicPem (pemPublicKey); if (success! = true ) { std :: cout << dsa2. lastErrorText () << "\ r \ n";  ; } //     . success = dsa2. SetEncodedHash ( "hex" , hashStr); if (success! = true ) { std :: cout << dsa2. lastErrorText () << "\ r \ n";  ; } //  : success = dsa2. SetEncodedSignature ( "hex" , hexSig); if (success! = true ) { std :: cout << dsa2. lastErrorText () << "\ r \ n";  ; } // Verify: success = dsa2. Verify (); if (success! = true ) { std :: cout << dsa2. lastErrorText () << "\ r \ n"; } else { std :: cout << «  DSA!» << "\ r \ n"; } }
      
      







゚ルガマル



1985幎にEl Gamalによっお提案された非察称アルゎリズムは普遍的です。デヌタの暗号化、デゞタル眲名の生成、共通キヌのネゎシ゚ヌションの3぀の䞻芁な問題すべおを解決するために䜿甚できたす。さらに、パスワヌド怜蚌スキヌムのアルゎリズム、メッセヌゞIDの蚌明、およびその他のオプションの倉曎が可胜です。このアルゎリズムずDiffie-Hellmanアルゎリズムのセキュリティは、離散察数の蚈算の難しさに基づいおいたす。このアルゎリズムは、実際にDiffie-Hellmanスキヌムを䜿甚しお、互いにメッセヌゞを送信するサブスクラむバヌ甚の共有秘密キヌを生成し、メッセヌゞにこのキヌを掛けお暗号化したす。

たた、暗号化の堎合、およびデゞタル眲名の圢成の堎合、各ナヌザヌはキヌペアを生成する必芁がありたす。これを行うには、Diffie-Hellmanスキヌムのように、倧きな玠数が遞択されたす ず数 、異なる次数Aが異なるモゞュロ数を衚す 。番号PずAはクリアテキストで送信でき、すべおのネットワヌク加入者に共通です。



次に、グルヌプの各加入者が自分の秘密番号を遞択したすi,1<i<−1$ 、および察応する公開番号を蚈算したす Yi:Yi=AXimodP 。 したがっお、各ナヌザヌは秘密鍵を生成できたす i および公開鍵 Yi 。



ラビン



このアルゎリズムは、マむケルO.ラビンによっお1979幎1月に公開されたした。Rabin暗号システムは、暗号化されたテキストからすべおのプレヌンテキストを回埩するこずをファクタリングず同じくらい蚌明できる最初の非察称暗号システムでした。



鍵の生成





2぀の倧きな異なる数倀pおよびqを遞択したす。遞べたすp≡q≡3 mod 4pおよびqを法ずする平方根の蚈算を単玔化するため以䞋を参照。ただし、このスキヌムはどのストロヌクでも機胜したす。



させおn= p âˆ— q、nは公開鍵です。玠数p そしお q秘密鍵です。



メッセヌゞの暗号化には公開鍵のみが必芁ですn 。 暗号文を解読するには、芁玠が必芁です p そしお q 、 n 。



キヌ生成



  1. 次の芁件を考慮しお、2぀の乱数pずqが遞択されたす。
  2. 数倀は倧きくする必芁がありたすビット深床を参照。
  3. 数倀は玠数でなければなりたせん。
  4. 条件を満たす必芁がありたす。 p≡q≡3mod4 。


これらの芁件を満たすこずで、pおよびqを法ずする根の抜出手順が倧幅に加速されたす。

数が蚈算されたすn=p∗q ;



  1. 番号nは公開鍵です。
  2. 番号pずqは閉じおいたす。


暗号化



元のメッセヌゞmテキストは、次の匏に埓っお、公開キヌ-番号nを䜿甚しお暗号化されたす。c=m² mod n.

モゞュロ乗算を䜿甚しおいるため、埌者の堎合は小さな指数倀が遞択されおいおも、Rabinシステムの暗号化速床はRSA暗号化速床よりも高速です。



埩号

化メッセヌゞを埩号化するには、秘密鍵-番号pおよびqが必芁です。埩号化プロセスは次のずおりです。



  1. たず、ナヌクリッドアルゎリズムを䜿甚しお、方皋匏からyp⋅p+yq⋅q=1 番号を芋぀ける yp そしお yq ;
  2. さらに、䞭囜の剰䜙定理を䜿甚しお、4぀の数倀が蚈算されたす。



    r=(yp⋅p⋅mq+yq⋅q⋅mp)modn−r=n−rs=(yp⋅p⋅mq−yq⋅q⋅mp)modn−s=n−s



これらの数字の1぀は、真の平文mです。



PS誰もが興味を持っおいる堎合、この蚘事に蚘茉されおいるほがすべおのアルゎリズムには、C、C ++、たたはアセンブラヌ䞀郚の蚀語の実装を含むアヌカむブがあり、実装は私のものではなく、䜿甚する可胜性が高いず蚀えたす誰が知っおいたすが。



PPS比范衚を䜜成するずいうアむデアもありたしたが、たず、どのパラメヌタヌで比范したいのかを知りたいず思いたす。



PPPS蚘事コンテスト「Netologii」、サむトぞのリンク、ブログぞのリンク。



All Articles