6

現在、非常に高いセキュリティを備えたログイン システムを構築しようとしています。

だから私は bcrypt を使いたいのですが、サードパーティのライブラリ py-bcryptも見つけました。

しかし、著者は、これは純粋な python 実装であると述べています。

今、Python で bcrypt を使用することは推奨されていないことをどこかで読みました。これは、遅すぎてセキュリティ リークが発生するためです。bcrypt は C で実装する必要があります。

誰でもこれを確認できますか?今、私は何をすべきですか?

私は使用する必要があります:

  • bcrypt (パイソン)
  • SHA512 (hashlib から)
  • 何か違います

Google App Engine を使用しています

編集: http://packages.python.org/passlib/lib/passlib.hash.bcrypt.html#bcrypt-backends

純粋な Python 実装 (#4) は、現在セキュリティに必要なラウンド数を考えると、遅すぎて使用できないことに注意してください。このため、環境変数 PASSLIB_BUILTIN_BCRYPT="enabled" が設定されていない限り、デフォルトで無効になっています。

4

2 に答える 2

6

両者を比較してみてはどうでしょうか。8000 のランダム ビットと対応する時間のパスワードをハッシュするコードを次に示します。

ハッシュライブラリ:

#!/usr/bin/env python
import hashlib
import random

password = str(random.getrandbits(8000))
print hashlib.sha512(password).hexdigest()

ソルトを含むハッシュライブラリ:

#!/usr/bin/env python
import hashlib
import random

password = str(random.getrandbits(8000))
salt = str(random.getrandbits(256))
print hashlib.sha512(password + salt).hexdigest()

暗号化:

#!/usr/bin/env python
import bcrypt
import random

password = str(random.getrandbits(8000))
print bcrypt.hashpw(password,bcrypt.gensalt())

タイミング bcrypt:

$ time ./bcrypt_test.py 
$2a$12$Om3a3zKsCNAM/SLB3hq5w.HYukFwn4CJ73rjXYNUPgqckUx2uLEmG

real    0m0.401s
user    0m0.313s
sys 0m0.013s

タイミング ハッシュライブラリ:

$ time ./hashlib_test.py 
9e37eb4f164bbb1808833297d0244327e4faac109cd92729228f6e36d75d23044ac13a7a1907515cd6db44474b244678779e3ae4e97d8355c2069332aae52d61

real    0m0.032s
user    0m0.021s
sys 0m0.010s
$ 
于 2012-07-09T11:26:31.083 に答える
5

passlibを試してください。bcryptの C 実装があります。

于 2012-07-09T12:49:25.703 に答える