2010-11-25 14 views
0

私は、認証トークンとして機能する非常に安全なUIDを作成するRAILの方法を探しています。rails - 安全なID /パスワードの作成

私はUUIDを使用していたが、それらが確保されていないと言われました。私は、ルビー/レール3で最近の選択の仕方は何ですか?

+1

何かに対して安全ですか?衝突?それはあなたがそれらを生成する方法とあなたが使用する予定の人の数に依存するはずです。 – Piskvor

+0

私はLOT、100000sを使用して、IDを簡単に推測したり見つけたりすることができないようにする予定です。これをパスワードと考えてください。提案?あなたが推測兆年間を過ごすことを望む場合を除き – AnApprentice

+0

UUIDは – buru

答えて

2

この質問は、Railsの特定のない方法です。

UUIDはそれがユニークの識別子であり、それはそれが簡単に推測することができます与えられたマシン(例えば、それはマシンのMACアドレスを使用する場合があります)、の「定数」の部分が含まれているという単純な事実のために確保されていません。

使用すると、1つは推測することなく、100K +の文字列をしたい場合は、大規模なキー・スペース全体であなたの鍵を配布できるようにする必要があります。私に説明してみましょう:

だけ(してみましょう)1つのキーが必要な場合は、「A」を選ぶかもしれません。 A-Zのキースペースでは、それを推測するチャンスは1:26です。今、キースペースをA-Za-zに拡張すると、1:52の推測のチャンスがあります。

さらにセキュリティが必要ですか?より長いキーを使用してください: 'AA' 1:2704チャンス。

ここで、2000のキーを使用し、キーの長さを2(たとえば、「AA」)にしたい場合は、誰かが推測する可能性のある数字が2000:2704 => 1:1.352です。かなり悪いです。

だから、ここで重要なのは、非常に長いキーサイズを選択することです。 Digest::SHA1では、40文字のキーが得られます(16進数で、文字ごとに16種類の値が使用されます)。それは1.46150164e48の一意の値です。あなたの100k値は十分にランダムでなければなりません。

編集:

40桁HEXのSHA1値で使用すると、1つの推測の1:461501640000000000000000000000000000000000000000000チャンスがあります。それは年を取る。

+1

非常に興味深い!どのようにダイジェスト:: SHA1をレールで使用しますか? – AnApprentice

+0

この質問に追加するには、このHex SHA1アルゴリズムをAPI経由で自分のアプリケーションに接続したいユーザーに配布できる認証トークンとして使用できますか?これは、Google、Twitter、Facebookなどの他の巨人がAPIキーを生成するために使用しているものですか?はいの場合は、これをRailsでどのように実装しますか?このための特定のクラスまたはライブラリありがとう! –

+0

私はこれらのキーの1つを "Digest :: SHA1.hexdigest(" test ")"で生成することができます。あなたは暗号を解除するために何を使用しますか? – AnApprentice

関連する問題