web-dev-qa-db-ja.com

対称暗号とダイジェストアルゴリズムのセキュリティ主張の背後にある数学モデルは何ですか?

SHA-1が安全なハッシュ関数と見なされるのはなぜですか?それは私がまだ疑問に思っていることです。

現代の非対称アルゴリズムが安全であると見なされる理由の概念を理解しています。それらは、解決するのがおそらく「難しい」と思われる健全な数学的問題に基づいています。有限体または整数因数分解における離散対数。数学的概念を知っていれば、セキュリティの主張と証明の概念は比較的簡単に理解できます。

しかし、対称暗号化と安全なハッシュ関数に関しては、状況ははるかにはっきりしなくなります。ブロック暗号とダイジェストアルゴリズムの結果と分析はたくさんあると思いますが、これらの結果は何に基づいていますか?

例えば。暗号をブロックすることになると、暗号アルゴリズムXが特定の数の既知の攻撃に対して耐性があるという多くの証拠を見つけることができます。または、彼らはいくつかの特性が保持していることを証明します。入力のすべてのビットが出力に影響します。これは、これが必要であると考えられるためです。

外部から見ると、暗号化アルゴリズムとダイジェストアルゴリズムの構築は、ビットシフトやXORなどを適用することで、「入力をいじくり回して、できるだけ混乱させる」ように見えます。

私が今知りたいこと(どちらかについての深い洞察に感謝します):

a)作成時に考慮しなければならない設計およびセキュリティの考慮事項を説明するリソース(推奨書籍)へのポインタを提供していただけませんか

a1)暗号アルゴリズム

a2)ダイジェストアルゴリズム

これは、なぜS-boxが他の方法ではなく正確に表示する必要があるのか​​、そしておそらく私と私の理解にとってさらに重要である理由などを説明しますwhy異なる方法で構築された場合、それは悪いでしょうか?

b)これらの「ビット操作」を数学的にモデル化する試みは存在しますか(または、そのようなモデルに基づく「代数的攻撃」など)?

c)SHA-1などのダイジェストアルゴリズムの品質をどのように「測定」しますか?つまりここでは、3またはXORではなく2ビットのシフトを行う方が良いと言えるのですが、なぜこれらの演算が最初からSHA-1の基礎になっているのですか?当時はそれが入力を「最大限に混乱させる」唯一の既知のもののように思われたためですか?ほとんどのSHA-3候補が暗号アルゴリズムに基づいている(より理論的な結果があるため)か、 スポンジ関数 などの新しい概念。私にとって、SHAアルゴリズム(MD5も)のいずれかの定義はまだ「これで混乱しませんか?」のようになります。彼らがやった?

これらのトピックのいずれかについて洞察をいただければ幸いです。

19
emboss

そのような答えはないので、完全に満足させるような答えを与えることはできません。アルゴリズムが安全であることをどのようにして知るのですか?厳密には言えません。 SHA256、AES、またはRSAが安全であるという証拠はありません-それらが安全であると広く信じられていますが、その事実を数学的に証明することはできませんでした。違う。

これらのアルゴリズムのセキュリティに対する私たちの信念は、非常に賢く知識豊富な人々の多くが、まったく凹みを作らずにこれらのアルゴリズムを破ろうと一生懸命に努力したという事実から来ています。もちろん、これは巧妙な攻撃が存在しないことを保証するものではありません-誰かが見つけるのに十分なほど巧妙ではない、信じられないほど卑劣な数学的ショートカット攻撃が常に存在する可能性がありますが、それを見つけようとして失敗する人が増えるほど、見える可能性は低くなります。実際の目的では、園芸品種の攻撃者が、何十人もの本当に賢い人々が見つけて失敗した攻撃を発見することはなさそうです。

あなたの即時の反応は、一体何なのでしょうか?なぜそれらの暗号学者はそんなに足りないのですか?安全なアルゴリズムを証明できないのはなぜですか?彼らは麻痺していますか?答えは、暗号化アルゴリズムまたはハッシュ関数が安全であることを証明することを非常に困難にする根本的な理由があります(特別な場合を除く)。大まかに言えば、AES、RSA、またはSHA256のようなアルゴリズムが安全であることを証明することは、証明すること(== --- ==)を証明することと同じくらい難しいようです[〜#〜] p [〜#〜]!=[〜#〜] np [〜#〜](コンピュータサイエンスで悪名高い難しい問題)。アルゴリズムのタスクを効率的に完了できないできないことを証明するためのツールはほとんどありません。基本的に、これは [〜#〜] sat [〜#〜] が多項式時間で解決できないことを証明することを困難にします(つまり、それを証明することは困難です[〜#〜] p [〜#〜]!=[〜#〜] np [〜#〜])、AESへのショートカット攻撃がないこと(つまり、AESを破壊できないこと)を証明することを困難にします。だから、暗号学者が足りないだけでなく、進歩する方法を誰も知らない非常に難しい問題に直面しているということです。

上記で述べたことは、ハッシュ関数や対称鍵暗号に固有のものではないことに注意してください。これは、対称鍵暗号化、公開鍵暗号化、デジタル署名、ハッシュ関数、および私たちが当たり前と見なしている他の多くの標準プリミティブを含む、計算上安全なすべての暗号化に適用されます。

あなたの最後の質問は:対称鍵アルゴリズムがどのように分析され暗号解読されるかの理論を誰かに教えてもらえますか?暗号学者はそれらをどのように分析しますか?攻撃はどのように機能しますか?いいえ、ここでは時間とスペースの制限内でこれを教えることはできません。これらの質問を中心に構築された研究分野全体があり、対称鍵アルゴリズムの分析手法に関する知的で深い文献があります。 (たとえば、[〜#〜] fse [〜#〜][〜#〜]を参照してください。 crypto [〜#〜]、および[〜#〜] eurocrypt [〜#〜]会議。)それこの資料を学ぶには何年も熱心に勉強します。残念ながら、私はここで利用可能なスペースであなたにそれらすべてを教えることはできません。非常に短いバージョンは次のとおりです。暗号学者は一連の攻撃手法を開発しました。最初に、新しいプリミティブを最初に分析して、これらの攻撃が機能するかどうかを確認します。プリミティブが既知の攻撃手法のすべてに抵抗する場合、暗号技術者はプリミティブに対するアドホックまたはカスタム攻撃の設計に時間を費やします。暗号学者はまた、プリミティブの人工的に弱められたバージョン(ラウンドが少ないなど)を研究して、弱められたバージョンへの最良の攻撃について学び、完全なものを推定します。何年にもわたる努力を重ねた後、誰もその計画を攻撃することに成功しなかった場合、人々はより多くの自信を得始めます。最近では、証明可能なセキュリティコミュニティからのアイデアを使用して、高レベルの構造が適切である、または特定のクラスのすべての攻撃が失敗することが保証されているという確信を得るための調査も行われています。

しかし結局のところ、それは科学であると同時に芸術でもあります。新しいプリミティブを検証することは非常に高価です:非常に才能のある専門家から何十年もの努力が必要です。このため、暗号法の賢いユーザーは一般に、独自の発明ではなく、既存の吟味されたプリミティブを使用しようとします。独自のスキームを考案した場合、標準スキームがすでに受け取っているのと同じくらい多くの独自のスキームの分析と審査を手配できる可能性は非常に低いので、そうしないでください。 「自分でロール」しないでください。代わりに、AES、SHA256、RSAなどの既存の標準の承認済みプリミティブを基に構築します。

13
D.W.

@ D.W。よく言う;短い言葉で言えば、暗号アルゴリズムを考える唯一の既知の方法は、何百人もの暗号技術者に数年間それをじっと見せることです。これは、最終的には満足できるものではなく、知的に言えば、それでも機能します(たとえば、医学全体は、さらに不安定な根拠に基づいて構築されていますが、それでも非常に有用な芸術です)。

詳細(つまり、Sボックスの選択方法、 "雪崩効果"とは何か、代数を使用した学習方法...)については、(いつものように) 応用暗号のハンドブック を参照してください。少し古くなっていますが、それでも非常に優れたリファレンスであり、無料でダウンロードできます。別の良い本は、Antoine Jouxによる Algorithmic Cryptanalysis です。

6
Thomas Pornin

私の質問の1つは未解決のままです。そもそもなぜXORやビットシフトなどがハッシュや暗号に使用されているのかはまだわかりません。これの背後に数学的な理由があるとしたら、それはまさにこれらの演算であり、他には何もないのでしょうか。

正確にXORが使用される理由の1つは、XORに重要な特性:可逆性があるためです。XORキー付きの数値とXOR同じキーを使用した結果の場合、元の数値が返されます。

1
Alibek