0はじめに
二つの大きな素数を乗算することは非常に簡単ですが、ファクタリングは彼らの製品は非常に困難であるとしますRSAアルゴリズムは非常に単純な算術事実に基づいています。
この記事では、素数についての関連知識について説明します。
1つの素数判定テスト
質問1:どのように大きな整数が素数であるかどうかを判断します
1.1トライアル部門
試験区分は:それは、nが素数であるか否かを判断する、サイクルは、それが素数Nできない場合は、nは2からSQRT(n)が決定される分裂する能力を書き込みます。
nが小さい場合には、非常に効率的かつ迅速なコースのトライアル部門を使用。しかし、時に大きなn個の時、このアルゴリズムは動作しない場合があります
RSA1024たとえば、公開鍵で
0x890e23101a542913da8a4350672c9ef8e7b34c2687ce8cd8db3fb34244a791d60c9dc0a53172a56dcc8a66f553c0ae51e9e2e2ce9486fa6b00a6c556bfed139001133cdfe5921c425eb8823b1bd0a4c00920d24bee2633256328502eadbfac1420f9a5f47139de6f14d8eb7c2b7c0cec42530c0a71dadb80c7214f5cd19a3f2f
、2個の素因数があります
0xe5a111a219c64f841669400f51a54dd4e75184004f0f4d21c6ae182cfb528652a02d6d677a72b564c505b1ed42a0c648dbfe14eb66b04c0d60ba3872826c32e7
と
0x98cb760764484e29245521be08e7f38edeebfca8427149524ba7f4735e1d5f3a45d585cb3722ff4c07c19165be738311dc346a914966f5b311416fed3b425079
これは、10進数に変換されました
12026655772210679470465581609002525329245773732132014742758935511187863487919026457076252932048619706498126046597130520643092209728783224795661331197604583
と
8002511426596424351829267099531651390448054153452321185350746845306277585856673898048740413439442356860630765545600353049345324913056448174487017235828857
これは155で、数字の154桁の数字は、日常に計算されていない2のおよそ511の電力、です!
もちろん、ない決して、数学者はいつも私たちは道を示すようにするためのいくつかの不誠実されています。
1.2フェルマーの小定理
フェルマーの小定理は数論における定理である:整数である場合、pは素数であり、その後、AP-Aがpの倍数であり、それはのように表すことができるp個の Aの複数が、この定理のPでない場合≡a(MOD P)またように書くことができるP -1≡1(MOD P)
いくつかの擬似素数があるので、フェルマーの小定理は、数が素数であるか否かを判定するための必要条件ではなく、十分条件であることに留意されたいフェルマーの小定理が素数例えば2などの番号ではない満足340 ≡1(mod341)が、341 = 11×31
1.3フェルマー素数判定テスト
私たちは、ときにのみ= 3の計算結果、我々は= 3の場合を考えるととき= 2、合成数がテストに合格することができる、= 2の場合を考えてみたが素数の可能性を除外します。したがって、満足pseudoprime番号の定義は前記膨張N- pseudoprime番号呼ば-1modn合成数N = 1における塩基として(pseudoprimeがA基に)。擬似プライムフロントこの数の四半期よりもただ小さいだけで1272の終了と同時に10億の自然数2及び3、。これは、両方の場合は0.000025までエラーの= 2であり、a = 3の両方の場合、確率的アルゴリズムを検証することを教えてくれる。テストするためのより多くの選択肢、より正確なアルゴリズム、と考えるのは簡単。我々のアプローチは、典型的にはランダムであれば、一つのテストを通過しないように、この数は合成数で決定することができる、等の塩基におけるいくつかの小規模な試験を数回で試験正の整数から選択されます。这就是Fermat素性测试。
1.4ミラー - ラビン素数判定法
Nが素数であるかどうかをテストするために、N-1は、第2に分解されるS D. 各試験、ランダムに選択された第1の範囲の開始[1、N-1]における整数の、結局r∈〔0、S-1]の場合 、 場合D MODN≠1及び2RD MODN≠ -1、Nは合成数です。それ以外の場合は、素数のN 3/4確率。
フェルマー素数判定テストと同様に、ミラー-ラビン素数判定法は、まだ数が決定することができ可能
素数であるが、この方法は、その、高速で効率的かつ広く使用のために持っています。
私たちは、型の素数をテストすることにしました
大きな整数の決定論的決意をプライムプライム試験方法である-AKS
AKSは、プライムテストアルゴリズム、技術カーンプルのコンピュータ科学者のインド工科大学、マニンドラ・アグラワル、ニラジュ・カヤルとニティン・サクセナから3意思決定型である(Agrawalさん-Kayal-Saxenaテストをプライムし、円分AKSテストとしても知られる)のテストをプライミング2002年8月6日は、素数と題した記事を掲載紙(素数がPに属する)Pです。著者は、したがって、2006ゲーデル賞と2006年にファルカーソン賞を含め、多くの賞を受賞しました。このアルゴリズムは、多項式時間内であってもよいし、我々は、与えられた整数が素数か合成数であるかどうかを決定します。
2 生成大素数
最も簡単な方法は、ランダムにそうを生成し、素数でない場合、我々は最初の数字のランダムシーケンスを生成して、それができるテストするためにミラー-ラビン素数判定法を使用し、100個の大きな素数を生成するために、無作為例えば、検索することですサイクルが続きます。
もちろん、我々は(完全に異なることが乱数を生成するたびに)ランダム探索法を使用することができ、ランダム探索アルゴリズムは、(それぞれが2を延びる、乱数を発生した後に)インクリメントされ使用されてもよい
nビット小数大きな素数を生成するステップを次のように:
- 生成
n
乱数ビットをp
最上位ビットができず0
、 - 最下位ビットが偶数の場合、それを追加
1
番号が奇数の時間を節約するためにあることを保証するために - テストの数をすることができ
10000
素数(以下総1228
割り切れる数を)ので、あなたはすぐに時間を節約するために、多くの合成数を排除することができます - で、これはに、乱数を生成するために底部pは例示のために結合されている場合、ミラー-ラビン素数判定法です。P上のテストで再選択する場合。選択して処理速度を向上させるためには、小さなプライムタイムとして選択する必要があります。約5倍ミラー-ラビン素数判定法の後、精度は比較的高いです
2
p-1
a
p
a
- 場合は
p
、各テストパス、そのpが素数です。それ以外の場合はp←p+2
、pは再びテスト
大きな素数生成処理が素数判定テストで、別の乱数が生成され、二つの重要な点を有します。前者は、後者が真の乱数を生成するために、すなわち、セキュリティを確保しなければならない精度と効率を確保するために
ほとんどのプログラムと乱数実際には擬似ランダム言語(CやMATLABなどがあります)。生成された擬似乱数は、(例えば、時計など)、種子によって決定することができる(例えば、線形合同のような)関数です。しかし、理論的には真のランダムに生成することができ、UNIXカーネル乱数ジェネレータ(は/ dev /ランダム)、。すなわち、乱数生成、独立に生成機能、または非決定論的ジェネレータ。だから、理論的には、コンピュータは真の乱数の統計的有意性を生成することができます。
参考:オープンソースのJavaScriptの暗号化ライブラリ
フォロー
Prismプログラム
ディスプレイのスノーデンNSA元特派により提供機密文書によると、RSAとNSAは、自分のために「バックドアを残して、$ 10百万契約、暗号化ソフトウェアの式の欠陥の後者の注入によって元に達し、 。 " RSAのソフトウェアの欠陥がBSAFEと呼ばれる式、およびデュアル楕円曲線の欠陥式の名前は、それのうちNSAが開発した、と報告されています。ファイルの内容は、2004年以来彼らのソフトウェアで、この式の欠陥を使用していた、RSAを指摘しました。
2006年にEMC社が$ 2.1億ドルで買収するために、その後、発明者のRon Rivest氏RSAアルゴリズムによって設立された1982年のRSAセキュリティ市、アディ・シャミアおよびレンエーデルマン、。アルゴリズムは欠陥DUAL_EC_DRBGいるの最も有名で、暗号学者数年前に問題を発見しました。暗号化アルゴリズムは、乱数発生器として見ることができますが、いくつかの数字が固定されており、暗号学者は、組み込みのアルゴリズムの数を突破するためにマスターキーとして行うことができます。
RSAアルゴリズム自体は、限り、あなたの鍵が生成され、真にランダムであるように、キーは、干し草の山の、一般的に同じように難しい針だと思い、既存のコンピュータは確かに、パスワードの交換サイクルであなたの暗号化されたファイルを壊すことができない、問題ありません。しかし、このランダムアルゴリズムが偽である場合は?それはちょうど、キーは、それの小さなコレクションで生成されている場合は?あなたの暗号化されたファイルを即座にこれを行うにはNSAで、見します。