2011-08-22 16 views
0

32ビットの乱数(マイクロチップPIC24Fから)を生成しています。 AndroidデバイスがPIC24FからAndroid USBアクセサリフレームワークを介してランダム32バイトを受け取ると、私はRSAキーを作成したいと思います。ランダムな32バイトの公開鍵&秘密鍵を作成することは可能ですか?Androidデバイスで32個以上の乱数値以上のRSA鍵を生成する

私はRSAの仕組みについていくつかの知識を持っていたので、32バイトは比較的弱いです。大規模なRSAには多くのコンピューティングパワーが必要な場合があります。私はAndroidの携帯電話でのみこれを実行しています。

可能であれば、私は安全なRSA鍵を計算する計算能力の限界を知りたがっています。私は、異なるリソースを持つ異なる電話機メーカーが異なるかもしれないことを知っています。 ネクサスワン(アンドロイド2.3.4)

:使用

ツール(アプリケーションIプログラムが強制終了/対応/ないクラッシュしないことを拡張するために)私は、Android携帯上で、合理的な資源で生成することができ、最大の鍵は何ですか

+1

RSAは大きな素数に基づいていることが分かりますか? – rook

+0

うん!私はRSA(Complex Math Algorithm)の仕組みを知っていますが、Androidがキーを自動生成することは可能ですか? – Ezylryb

+0

私はその質問を理解していません。あなたは256ビットのRSAキーを作成したいですか?あるいは、ペアの両方のキーを256ビットに収める必要がありますか?あなたの目標は何ですか?どのライブラリを見つけましたか、それを使用する予定はありますか? –

答えて

1

私はAndroid APIについてはほとんど知りませんが、これについてどうやってやるか教えてください。私はAPIにこれを直接行う方法があるとは思っていませんが、おそらくこの情報はあなたが何をすべきかをまとめておくのに十分なものです。

RSA鍵を生成するには、2つの比較的大きな素数を生成する必要があります。私は768ビット以上で2つの数値を生成します。

これらの素数を生成する技術は、暗号安全擬似乱数生成器(PRNG)を使用して766ビット値を生成することです。基本的に96バイトを生成し、上位2ビットを捨てます。次に、値を少し上にシフトし、最下位ビットと最上位ビットを設定して、> = 2**767 + 1の奇数を持つようにします(したがって、表現するには768ビットが必要です)。次に、生成された数を確率的素数検定に送ります。最初に、2,3,5,7,11,13、そして17の最初の数奇数の素数で除算をテストします。次に、Miller-Rabinのいくつかの反復を実行します。

これらのテストに合格した場合は、最初からやり直して新しい番号を生成しないと、素数がある可能性が最も高いです。

このような素数を2つ生成すると、RSAキーがあります。

32バイトのランダムデータからこれらの素数を生成するには、このデータをPRNGにシードする必要があります。

個人的には、128バイトのランダムデータを取得することをおすすめします。最初の64バイトでPRNGをシードし、それを呼び出すたびに、あなたのランダムデータのもう1バイトをPRNGのエントロピープールに追加します。暗号的に安全なPRNGには、これを行う方法があります。

関連する問題