web-dev-qa-db-ja.com

アルゴリズムの機密性はどのくらい価値がありますか?

表面的には、セキュリティによる隠蔽の非推奨性は、共有秘密(つまり、「パスワード」)の概念と直接対立します。 。つまり、パスワードに関する機密性が重要である場合、拡張機能によって、パスワードを使用するアルゴリズムも秘密にしておくことは確かに何らかの価値があるはずです。多くの(間違いと誤解されている)組織は、システムがパスワードであるとさえ言うかもしれません。

しかし、アルゴリズムの機密性はどの程度信頼できますか?あるいは、おそらくより適切に、パスワードを取り巻く機密性はそうではないが、アルゴリズムを取り巻く機密性はどのように失敗する運命にあるのか?

一方、アルゴリズムの秘密性が望ましい場合、それはどれほど重要ですか?開発者は自分の暗号を秘密にしておくために合理的にどのくらいの長さにする必要がありますか?

[〜#〜]編集[〜#〜]
明確にするために、これはテストされていない新しいアルゴリズムを作成することではなく、選択したアルゴリズムの詳細を秘密にしておくことです。たとえば、Windowsがパスワードをハッシュするために使用する手法は、公開されていないシーケンスで既知のハッシュアルゴリズムを適用することであり、異なるバージョンのWindows間で変化しているように見えます。

48
tylerl

パスワードとキーに関する作業の多くは、whereの制御に関連しており、それらは保存およびコピーされます。

  • passwordは人間のユーザーの心に保存されます。それはキーボード(または同等のもの)で入力され、処理中にCPUのレジスタとRAM=コンピュータのレジスタを通過します。ひどい誤解が行われない限り、パスワードはハードディスクのような永久的な記憶領域。

  • algorithmは、開発者のマシン、ソースバージョン管理システム、およびバックアップのどこかに、ソースコードとして存在します。設計ドキュメントがあり、さまざまな人々(システムの開発に資金を提供するかどうかを決定する人々など)に示され、典型的なデスクトップのあるクラストの層の匿名の棚に放置されていることがよくあります。さらに重要なのは、アルゴリズムは、展開されたシステム自体に実行可能ファイルとして存在することです。バイナリはソースコードほど読みやすくはありませんが、リバースエンジニアリングworksです。

したがって、アルゴリズムが秘密である、または少なくともパスワード(またはキー)と同じくらい秘密であると合理的に考えることはできません。

本当に、暗号化methodsは1世紀前にalgorithmに分割されました/ keyまさにそのためです。機能しているシステムでは、メソッドの一部が必ずどこにでもトレースをリークします。鍵を握ることは、秘密を残りの半分に集中することを意味します。


「あいまいさによるセキュリティ」は、secrecyではなく、obscurityという用語を使用する式です。暗号化とは、秘密によるセキュリティを達成することです。それが全体の違いです。パスワードはsecretにすることができます。アルゴリズムはせいぜいobscureです。隠喩は、比喩的なランタンを持参することを考えるとすぐに払いのけられます。秘密は鋼の金庫のようなものです。それを突破するには、より強力なツールが必要です。

賢い人 Auguste Kerckhoffs は1世紀以上前にすでに書いています。コンピューターの発明と今日のすべての技術にもかかわらず、彼の発見はまだ適用されます。暗号化の実践者がその教訓を学ぶにはしばらく時間がかかりました。 60年経った今でも、ドイツ人は エニグママシン の設計の「秘密」を大いに重視していた。ドイツ人が4ローターの海軍エニグマを使用したとき、連合国の暗号学者は不便でした(通常のクラッキングは数か月間停止しました)が、前の年にキャプチャされた一部のドキュメントが新しいバージョンの開発をほのめかしていたため、完全に困惑したわけではありません。 4番目の「リフレクター」ローター。アルゴリズムsecrecyは実際には達成できませんでした。


追加のひねりは、アルゴリズムのあいまいさがセキュリティに害を及ぼす可能性があるです。上で私が説明しているのは、セキュリティが信頼性に欠けるということではありません。セキュリティはmight増加しますが、それほどではありません(実際には「どのくらい」かはわかりません)。decreaseセキュリティもできることがわかります。問題は次のとおりです。安全な暗号化アルゴリズムを作成することは非常に困難です。唯一知られている方法は、アルゴリズムを公開し、世界中の暗号技術者の知恵がそれをかじって、「その方法で破れる」または「見かけ上強固」のいずれかとして表現できる結論に達するのを待つことです。アルゴリズムが「良好」であると宣言されるのは、少なくとも3年間または4年間、数十または数百人の有能な暗号技術者の猛攻撃に抵抗した場合のみです。

インターネット、学術的な先延ばし、および人間の傲慢さは、適切なコミュニケーションキャンペーンで、これらの数百人の暗号技術者に無料で難しい評価作業を行わせることができます-providedアルゴリズムを公開する(そして何らかの方法で「魅力的」にする)こと。アルゴリズムを曖昧に維持したい場合、そのような無料のコンサルティングから利益を得ることができません。代わりに、あなたが支払う必要があります。たとえば、2年間の努力で20人の優れた暗号技術者:ここでは数百万ドルについて話しています。誰もそれをしません、それはあまりにも高価です。同様に、あいまいなアルゴリズムは、公開アルゴリズムよりも常にストレステストがはるかに少ないため、less secureです。

(細かい注意書きに注意してください。セキュリティは、破損しないことだけでなく、違反が発生しないという先験的知識を持つことも重要です。私はできることを望んでいます夜寝る。)


概要:

  • /すべきではありませんアルゴリズムを秘密にしてください。
  • あなたわからないアルゴリズムがどれだけ秘密であるか。
  • できませんアルゴリズムを秘密にしてください。
  • ただし、パスワードを秘密にしておく必要があります。また、それが「どれだけ」秘密であるかを知ることができます(これがすべて「エントロピー」ビジネスです)。
74
Thomas Pornin

クリプトシークレットを維持することは現実的ではありません。それが実際に機能するかどうかを人々がテストできるようにするだけの場合は、そこに置く必要があります。暗号を秘密にしておく理由は何もありません。ドアに鍵をかけることができます。誰でも自分の鍵を見ることができます。自分の鍵がどのように機能するか、鍵がないと役に立たないことを誰もが知っています。パスワードはあなたの鍵です。

それ以外にも、「車輪を再発明しないでください」や「独自の暗号を作成しようとしないでください」などのいくつかの黄金律があります。彼らは大規模でそれをテストできるので、私たちは暗号規格を持っています。さらに、 Kerckhoffsの原理 を参照してください

8
Lucas Kauffman

アルゴリズムとパスワード/キーの間には2つの重要な違いがあります。

  1. 暗号化キーは定期的に変更できます(または変更する必要があります)。または、侵害が疑われる場合。これは秘密の喪失を緩和します。同様に、パスワードが危険にさらされていると疑う理由がある場合はいつでも、パスワードを変更する必要があります。対照的に、タイムリーに使用される暗号化アルゴリズムを変更することはめったに実行できないため、アルゴリズムが判明した場合でも(セキュリティを失うことなく)生き残ることができなければなりません。

  2. アルゴリズムのコピーは、暗号化または復号化できるすべてのソフトウェアに含まれています。つまり、ソフトウェアの1人のユーザーがアルゴリズムをリバースエンジニアリングしてインターネット上で公開するだけで済み、アルゴリズムはもはや秘密ではありません。言い換えれば、アルゴリズムを秘密にしておくことを合理的に期待することはできません。対照的に、パスワードまたは暗号化キーは自分のマシンにのみ保存され、数百万の他のユーザーのマシンには保存されません。

これらの理由は、1883年にオーギュストケルコフスによって明言されました-はい、1世紀以上前に。 (それらの人々はダミーではなかったようです!)参照 ケルコフの原理に関するウィキペディア 、特にルール2(「[アルゴリズム]は秘密である必要はなく、手に落ちる必要があります不便なく敵の」)。

例:開発者がセキュリティでセキュリティを提供しないようにするためのセキュリティ要件を定義する方法... および obscurityの有効な役割 および obscurityによるセキュリティが機能しない方法のデモンストレーション および NSA Suite A暗号化:obscurityによるセキュリティ? および バージョンを非表示にする-価値があるか、それとも単なるセキュリティによるセキュリティか 。関連トピックと正当化について説明します。検索バーを使用することを忘れないでください。または、「関連」サイドバーの右側を見てください。

7
D.W.

良いアルゴリズムはほんの一握りですが、おそらく1040 20文字以下の適切なパスワード。したがって、攻撃者がアルゴリズムを推測したり、可能性のあるすべてのアルゴリズムを列挙したりするのは非常に簡単ですが、適切に選択されたパスワードを使用して同じことを行うことは不可能です。ユーザーが10の可能性のリストから自分のパスワードを選択しなければならない状況を想像してみてください。それは誰にとっても同じリストでした。それが基本的にアルゴリズムの位置です。

3
Mike Scott

ここで誰も言及しなかったことの1つは、アルゴリズムのパブリックナレッジによって、セキュリティスキームが本当に安全であることを証明することがはるかに容易になるということです。攻撃者が使用したスキームを知っていると想定することで、スキームが安全でないことを証明するのが簡単になります。したがって、このスキームの使用は避けてください。

アルゴリズムの保護は、他の投稿で述べられているさまざまな理由でキーを保護するよりもはるかに困難です。そのため、誰かがキーを入手できれば、アルゴリズムを取得できる可能性が非常に高くなります。しかし、その逆の可能性ははるかに低くなります。

さらに、スキームがそのセキュリティを維持するために依存する回数が少ないほど、スキームの安全性が高まるというのは、一般的なセキュリティ原則です。結局のところ、これは次のように要約されます。最も安全なスキームでは、秘密にしておく必要があるのはキーだけです。

これは必ずしも、使用するアルゴリズムを公開する必要があるという意味ではありません。あいまいさは防御層として使用できます(ただし、前述のように、公開ではこのスキームをより一般の監視に反対します)。ただし、あいまいさを唯一の防御層として使用しないでください。

2
Lie Ryan