鍵と暗号文を持っている人にとって、どの暗号化アルゴリズムが使用されたかを知ることは可能ですか?
使用された暗号化方法を見つけるために、最初にできることは、可能な候補の可能性を制限してランク付けするために、鍵と暗号文の長さを調べることです。
次に、単純に候補を1つずつ試して、ランダムな意味不明のプレーンテキストが得られなくなるまで続けます。認証された暗号化スキームが使用されている場合、アルゴリズムが正しいことを通知するので、平文を見る必要すらありません。
もちろん、「ランダムな意味不明」を適切な平文から何らかの方法で区別する必要があります。一般的に使用される一般的な暗号化スキームの数は非常に限られているため、復号化の結果をテキストファイルに出力して、人間に見せるだけで十分です。自動化された方法で有効な平文をチェックしたい場合は、暗号化された素材に関する知識(例えば、UTF-8エンコードされたテキストが含まれている、またはJPEG画像である)を利用するか、簡単な方法を実行する必要があります。統計的検定。プレーンテキストが実際にはランダムに生成されたバイトのシーケンスであり、ユーザーが知らない場合は、おそらくまったく成功しないことに注意してください。
いくつかの問題は、このプロセスをより複雑にする可能性があります。ほとんどすべての暗号化スキームには、暗号文の復号化に不可欠なIVまたはノンスが必要です。このIV /ノンスはおそらく暗号文の先頭または末尾に追加されますが、そうでない場合は暗号プロトコルのコンテキストに依存する可能性があります。 IV/nonceが本当にわからない場合は、常にいくつかの小さな数値を試して、そのシーケンス番号付けがIVの決定に使用されることを期待できます。
また、暗号文であると考えるデータには、実際には暗号化されたデータよりも多くのデータが含まれている可能性があることに注意してください。上記のIVまたはnonceの他に、MAC(メッセージ認証コード)または認証タグが付加または付加されている場合があります。追加された場合、おそらく問題はありません。しかし、暗号文がそれで始まっている場合、誤って暗号文を復号化し始めて、残りの平文を難読化する可能性があります。
最後に重要なことですが、カスケード暗号もあります。データを連続して暗号化する複数の暗号化アルゴリズムです。それらすべてをチェックしたい場合(使用される暗号の特定の最大数まで)は、検索スペースを大幅に増やす可能性があります。ただし、実際には限られた数のカスケードされた暗号化スキームのみが使用されるため、これはおそらくそれほど問題にはなりません。
これらすべてが失敗する場合は、ユーザーが知らないあいまいな暗号が使用されている可能性があります。この場合、あなたはそれがくだらないDIY暗号化であることを望み、それに実際の暗号解読を試み始めることができます。
「可能」は、手術の言葉です。暗号解読のパズルを解くには、時間、コンピュータリソース、専門知識が必要です。あなたの質問は費用対効果にも関係しています。 NSAが答えを緊急に必要とする場合、述べられた問題を解決できますか?彼らは言っていませんが、彼らは平方マイルのコンピューティングリソースと多くの高度な資格を持つ専門家を持っています。問題を解決できますか?あなたは暗号に不慣れだと言っています。おそらく1台または2台のパーソナルコンピューターを使用していて、問題を楽しく解決していると思います(解決しても利益はありません)。あなたはこれにどれだけの時間を費やす用意がありますか?時間は限られていると思います。
これらのパラメーター内で、このまたはその暗号化ソフトウェアと、このまたはそのアルゴリズムを使用して暗号文を復号化しようと試みることができ、おそらく幸運になる可能性があります。おそらくない。多分、暗号文はあいまいなアルゴリズムを使用して、または複数回暗号化されました。それは誰かの推測です。
問題に関連する情報は他にありますか?たとえば、テキストがいとこのボブによって暗号化されていること、ボブがPGPを使用していること、ボブがBlowfishの優れたアルゴリズムについて常に通知していることがわかります。この種の情報は、当面のタスクを簡素化するかもしれません。
StackExchangeには暗号化フォーラムもあります。
@AardvarkSoupは、キーと暗号化されたテキストを指定して暗号化アルゴリズムを診断する方法を示すのに優れています。
学生が求めていることを考えると、実際には一般的に謎はないことも指摘しておきます。異なるプロトコルと標準はこれを異なる方法で処理しますが、ほとんどの場合、特定の暗号化メカニズムを使用することに同意するためのフォーマットがあります。たとえば、SSLにはハンドシェイクがあります。暗号化された電子メールには平文のヘッダーがあります。プリミティブシステムでは、暗号化スキーマは両端でハードコード化されている場合があります。
一般的な哲学は、秘密にしておかなければならない唯一のことは鍵であるということです。暗号化の方法に秘密はありません。暗号化を開示しても問題ないため、情報を難読化したり、情報伝達に関与するシステムでそれを簡単にしたりする理由はありません。
それは言った-暗号文の目標はランダムであることです。キーからいくつかの情報を取得する場合がありますが、目的は、暗号テキストを無意味な値のランダムな文字列のようにして、内容を示さないようにすることです。したがって、暗号文を精査して「これはX暗号化スキームのように見える」と簡単に言うことができる場合、この暗号化が適切にランダムではないことを心配するのは現実的です...
一般的に、暗号化または復号化を実行できるバイナリなどの追加情報なしではありません。
実際には、おそらくかなり頻繁に。最も簡単な方法は、暗号文、キー、および使用する可能性があると思われる復号化関数のリストを取得し、(a)実際に復号化するものが得られるまで暗号文に適用し続けることです(多くの暗号文とキーの組み合わせは復号化可能)、および(b)意味のある平文に復号化します。キーの長さなどを使用できます。
ただし、基本的な暗号プリミティブが少ししかない場合でも、考えられる暗号化方式は無数にあります。 AES-128は1つの暗号化関数だけから始めても、無限の数のバリエーションを作成できます。次に、AES-128-CBCを使用してメッセージを暗号化し、同じ鍵を使用して再度暗号化できます。または、一度暗号化し、ビットごとにキーを逆にして、もう一度暗号化することもできます。または、2番目の暗号化でアルゴリズムに組み込まれた特定のランダムな文字列でxorを実行してキーを変更することもできます。または、キーの前半を反転させ、後半は反転させないか、何らかの方法でキーをインターリーブします。 ブロック暗号モード をCBCからOFB、CTR、CFB、GCM、CCMなどに変更できます。また、暗号文をAESのアプリケーションがいくつあっても(これらの選択肢はあらかじめ決められた方法で変化する可能性があります)、無限の数の潜在的な暗号化アルゴリズムが得られます。 AESの固定パラメーターを調整して、sayの数を10から13に変更したり、Rjindael S-boxやミックスカラムのステップを変更したりすることができます(もちろん、実行中は十分に注意する必要があります。変更はアルゴリズムのセキュリティを劇的に弱めます;例えば、S-boxは差分暗号解読に耐性があるように特別に構築されました)。そして、これは、1つのタイプの暗号化関数から始まったばかりですが、実際には、多くの場合、まったく異なる原理に基づいたものが多くあります。それが単なるおもちゃのプロジェクトであり、あなたがそれがどれほど安全でない可能性があるかを完全に認識していない限り、私はあなた自身の暗号を構築することを決して勧めません。
確かに、Kerckhoffsの原則の全体的な考え方は、攻撃者が暗号化/復号化機能を知っているかどうかに関係なく、データのセキュリティはキーを秘密に保つことにのみ基づいているべきだということです。新しいキーに切り替えるのは簡単ですが、特に使用されて広く展開されている場合は、欠陥がある場合に既存のアルゴリズムへの変更を実装するのがはるかに困難です。たとえば、欠陥が広く公開されてから数年後、既知の欠陥のあるSSL/TLSのプロトコルとモード およびモードをまだ使用しているWebサーバーとWebブラウザーの数を考えてください ))。