web-dev-qa-db-ja.com

暗号化アルゴリズムの弱点を破ったり見つけたりするための暗号解読方法?

暗号解読者は、アルゴリズムの弱点を見つけるために、拡散/混乱要因に関連するアルゴリズムでどのように機能しますか?たとえば、暗号解読者はDESの弱点を見つけることができますか?そのための方法やソフトウェアはありますか?

または、対称暗号化を設計する場合、弱点とメインデータに関する情報を取得する確率の観点からどのようにテストできますか?

たとえば、暗号化アルゴリズムを設計した後、彼/彼女はそのアルゴリズムでテキストを暗号化し、今や彼/彼女は暗号文を持っています、それが十分な混乱であることをどのようにテストできますか?

2
Ali

暗号解読には、通常の3点法が適用されます。

  1. 問題を書き留めます。
  2. 真剣に考えなさい。
  3. 答えを書き留めてください。

そして、それは一般的に言うことができるすべてについてです。


暗号解読者の方法論は、他の科学の研究者のそれとほぼ同じです。暗号研究者の日常業務の中核は、すべての論文を読み、読み、読むことです。知識とアイデアを蓄積します。 次に、暗号学者が暗号化アルゴリズムの設計を見ると、彼の潜在意識がパターンを認識し、暗号学者の脳に次のように現れます。「うーん、これはSchrupkovskiがNoWhereCrypt'93で発表された彼の記事で壊していた種類の構造。ただし、これは追加のFFTを備えたビットスライスモードです。結局のところ、研究とは、多くの異なる情報源から生まれたアイデアや概念をまとめることです。

暗号化アルゴリズムのセキュリティは、証明はもちろんのこと、テストすることはできません(ただし、定義上、問題の一部しかカバーしていない、いくつかの優れた削減証明を持つことができます)。実証できるのはinsecurityです。攻撃を見つけた場合、アルゴリズムは壊れています。アルゴリズムがおそらく安全であることを保証するために、一部の暗号学者にそれを破ろうとさせてください。たくさんの暗号学者が長い間。誰もそれを壊すことができなければ、アルゴリズムはうまくいくかもしれません。これは、たとえば AESコンペティション の全体像です。

難しいトリックは、暗号学者を引き付けることです。あなたはいくつかのことをしなければなりません:

  1. あなたは宿題をしなければなりません。アルゴリズムは、読みやすい数学的方法で完全に記述されている必要があります(notは任意の言語のコードとして)。

  2. また、一部の一般的なクラスの攻撃が設計に適用されない理由も説明する必要があります(例: 差分解読法 )。

  3. アルゴリズムは興味深いものでなければなりません。つまり、基本的には、既存の選択肢よりも効率的でなければなりません。対称暗号化の場合、これは、アルゴリズムがAESよりも高速であるか、AESと同じ速度であるが、一定時間の実装であるか、非常にコンパクトな実装に対応できるか、または他の同様の利点が必要であることを意味します。アルゴリズムが遅すぎたり大きすぎたりするため、とにかく使用されないアルゴリズムを破ろうとして時間を費やすことはありません。

  4. 特許。特許を申請しないでください。ほとんどの暗号学者は、特許を取得したアルゴリズムに取り組んだ結果を完全に把握していないため、特許を見ると逃げ出します(彼らは、特許法ではなく暗号学の専門家です)。暗号化アルゴリズムの特許を取得することは、実際には、アルゴリズムが外部からの精査を受けずが使用されないようにするための非常に優れた方法です。

8
Thomas Pornin

私はあなたの質問は次のとおりだと思います:

暗号システムが弱いかどうかを人々はどのように判断しますか?

あなたが指摘したように、これを行う必要があるのは、システムを作った人とシステムを壊したい人の2種類です。

プロセスが対称的である場合、必要なのはプロセスが線形ではないことだけです。そのため、AESが勝ちました。AESは長くて広範囲であり、線形ではありません(線形とは、行列でマッピングできないことを意味します)。

すべてのシステムは何らかの形で壊れている可能性があり、人々はそのプロセスにかかる時間を決定する必要があります。プロセスが対称的である場合、それをクラックする方法を知っています-それはほんの少し時間がかかります。

ただし、コンピューターの速度が速すぎる場合は、新しい暗号システムに切り替える必要があります。だから私たちはDESを残しました-私たちは常に新しいので、高速計算にはかなり弱く、より高速なコンピューターが出てきたとき-切り替える必要がありました。

そこで、解読にはるかに長い時間がかかる暗号システムを見つけようとしました。

暗号システムを作成する人は、可能な限りあらゆる方法で暗号システムを破る方法も知っている必要があります。

RSAやECCのような暗号システムの場合、それを解読する方法を知るのはかなり難しいかもしれません。これらのセキュリティは、いわゆるNP困難な問題に基づいています。

これらは解決するのが本当に難しい問題であり、コンピューターはそれらをクラックするのを助けるためにしゃがむことはありません。

はい、コンピューターは人間よりも速く数値を因数分解できますが、そうするためのアルゴリズムは非常に遅いです。

しかし、そこには多くのNP困難な問題があります。

これらのいずれかを使用して暗号システムを作成でき、安全である可能性があります。それが彼らがECCを作った方法です-彼らはランダムなNP困難な問題を選び、すべての計算が速くて簡単であることがわかりました、そしてそれはそれでした!

0
Michal Koczwara