問題タブ [bcrypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
396 参照

cryptography - bcryptパスワードハッシュでランダムなアイテムレベルのソルトに加えてグローバルシークレットキーを使用することには全体的な利点がありますか?

PHP5.3以降のパスワードハッシュにbcryptを使用しています

bcryptは、アイテムごとに結果のハッシュに組み込まれるランダムなソルトを使用することを理解しています。これにより、各ハッシュのクラッキングが困難になり、クラッキングが防止されます

私が知らないのは、追加のアプリケーションレベルのグローバルシークレットキーを使用する正当な理由がまだ存在するかどうかです。

たとえば、パスワード文字列をハッシュするだけでなく、たとえば「password1」をbcrypt生成システムに組み込まれているランダムソルトを使用してbcryptハッシュにハッシュします(ここではhttps://gist.github.com/1053158):$ 2a $ 08 $ mjQAZ5cZi5B9u6zpUU4mGuRcvtxr1K.9ncYpxCdG.YhlD8yFG2mXK

定数を作成することもできます。例: "@#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%"、その定数をアプリケーションに(アプリケーションのソースコードまたはアプリケーションの構成ファイルに)入れます。 、そしてそれをハッシュする任意の文字列に追加します。したがって、「password1」+「@#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%」->は、「password1」のみとは異なるハッシュにハッシュされます。$ 2a $ 08 $ xFgULsrpoIYlbxp1IG3H8.kdVggyhm4aTQXrP2Ptu25nMBUjBdrrK

明らかに、アプリケーション自体のコンテキストでは、これはあまり役に立ちません。誰かが実行中のシステムでパスワード「password1」を試してみると、乗車のためにグローバル秘密鍵を自動的に取得するため、成功します。しかし、データベースを持っているか、データベースにしかアクセスできない場合は、グローバル秘密鍵が追加の障害になる可能性がありますか?なぜなら、グローバル秘密鍵を知らないので、単に「password1」を解読するのではなく、「password1 @#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%」を解読する必要があるからです。

私が想像できるいくつかの潜在的な利点が存在する可能性があります。

  • これは、侵害されたデータベースだけを使用してハッシュを解読するのを本当に妨げる可能性がありますか?

そして、存在する可能性のあるいくつかの漠然とした欠点:

  • これにより、ハッシュされるすべての文字列に共通のスレッドが導入され、既知の場合はハッシュを解読しやすくなる可能性があります。
  • データの脆弱性が高まります。サーバーの移行中などにグローバルシークレットキーが失われた場合、データはゴミ箱になります。

だから私は、グローバルシークレットキーも持っているのが良い考えなのか、それともアイテムごとのランダムソルトで十分なのか、そしてあなたが望むすべてのものなのかを理解しようとしています。グローバルシークレットキーを使用する実装、またはそれを使用することを提案する研究を知っている人はいますか?

0 投票する
1 に答える
1006 参照

php - OAuth 2 所有するモバイル クライアント用

REST API を公開する LAMP スタック Web アプリケーションがあります。目標は、データベース、サービス (REST)、および複数のフロントエンド クライアント (Web サイト、Android、iPhone) の 3 つの層を持つことです。現在、これらの層はすべて同じボックスにあります。Web サイトは API を使用して、CRUD 操作のサービス ロジックを呼び出します。モバイル クライアントはまだ構築されていません。

ユーザー資格情報を保存するために、PHP bcrypt 実装を使用しています。これは設計上、遅く、CPU を集中的に使用します。すべての API 呼び出しは、API パラメーターとともにユーザー名とパスワードのペアを受け取ります。これは、すべての API 呼び出しでハッシュが計算されるため、大規模なスケーリングを妨げます。

だから、私は代替案を探してきました。OAuth 2.0 は、使用するのに費用がかからない取り消し可能なトークンを使用しますが、私が読んだ記事では、このプロトコルの主な使用例は、サードパーティが API にアクセスできるようにすることであると示唆しているようです。たとえば、モバイルクライアントは私が所有しているため、これは私のモデルには完全には適合しません。

  1. OAuth はサードパーティでのみ使用することを意図したものですか? それとも、企業が独自の API の OAuth コンシューマとしてモバイル クライアントを追加するのが一般的ですか?

  2. アプリ マーケットに公開する Android/iPhone アプリに共有シークレットをバンドルして、すぐに API に関連付けることができますか?

0 投票する
1 に答える
526 参照

grails - Bcrypt パスワードエンコーダー - grails

ここでパスワードエンコーダーに関する投稿を読み、次の構文を見ました。

これは、bcrypt パスワード暗号化プラグインを備えた grails プロジェクトで既に使用しており、うまく機能します。null値を持つ 3 番目のパラメーターは何ですか? 共有してくれてありがとう。

0 投票する
1 に答える
341 参照

php - このコードは Bcrypt を使用していますか、それとも単純なフグですか?

私はオンラインでphpセキュリティを学んでおり(php 5.4を使用)、学びたい/使用したい次のコードに出くわしました。次のコードは bcrypt を使用しており、bcrypt の適切な実装ですか? 問題が存在する場合は、修正またはリソースを提案してください。ありがとう。

ユーザー登録時の使用方法は次のとおりです。

ユーザーログインプロセス中の使用法は次のとおりです。

0 投票する
2 に答える
1251 参照

php - データベース内の BCRYPT とランダム SALTS の組み合わせ

サイトのセキュリティ レベルをアップグレード中です。

パスワードを保存する最良の方法を調査しているときに、PHP 5.3 で BCRYPT オプションを見つけました。静的 SALT を使用するためにこの関数を実装しましたが、パスワードごとに異なる SALT を使用するか、目的を無効にする必要があることを読みました。

SALT をユーザー レコードと共にプレーン テキストでデータベースに保存する必要がありますか? これも目的に反しますか?または、md5 を使用してソルトをハッシュし、データベースに保存する必要がありますか?

これを実装して SALT を保存するときの最良の方法は何ですか?

0 投票する
1 に答える
5367 参照

javascript - Nodejs bcrypt ライブラリ

パスワード保護を強化するために、nodejs bcryptライブラリを使用しています。

使用方法を正確に理解しているかどうかはわかりませんが、これまでのところ次のようになりました。

コードを読みやすくするために、この例ではすべてのエラー処理を削除しました。

1.これは機能し、ログインしてセッションを設定できます。しかし、これですべてでしょうか?何か不足していますか?

2.ハッシュを生成するときに、ソルトがパスワードの前に追加されているようです。ソルトをデータベースに保存する必要はありませんか?

どんな助けでも大歓迎

0 投票する
1 に答える
1973 参照

java - Coldfusion8でjavaloaderを使用してJavaライブラリをセットアップする方法は?

私はjavaLoaderをColdfusion8アプリケーションで実行しようとしていますが、フィニッシュラインを通過するためにいくつかの助けが必要です。

これは私がこれまでに持っているものです:

application.cfcの内部:

これは、ここここからの指示に従って行われました。

私のhandler.cfcでは、次のようにjavaloaderとBCryptクラスにアクセスしようとしています。

cryptonite変数を正常にダンプできますが、BCryptのインスタンスを作成しようとすると、スクリプトが失敗します。

質問
ここまで到達できてうれしいですが、何が間違っているのかわからないまま、数時間これに座っています。うまくいけば、より洞察力のある誰かが私を方向に向けることができますか?

手伝ってくれてありがとう!

0 投票する
1 に答える
415 参照

asp.net-mvc-3 - ASP.NETMVC-zeteticセキュリティとNHibernateメンバーシッププロバイダーの統合

zeteticには、bcrypt2のサポートを含む非常に優れた暗号化ライブラリがあります。ASP.NETメンバーシッププロバイダーに組み込むのは簡単なようです(実際、デフォルトプロバイダーの手順はここにあります)。EncodePassword関数にSHA1ハッシュ形式をハードコーディングしているように見えるNHibernateメンバーシッププロバイダー(ここにあります)を使用しています。私の質問は、これをBCrypt2(特にZeteticのラッパー)で動作するようにどのように適合させるべきかということです。これは私が間違っていることを非常に恐れていることであり、それが「機能する」はずではないが、私が見つける資格がないいくつかの隠れた欠陥があるので、自分でそれを突き刺すことには消極的です。

0 投票する
1 に答える
631 参照

security - SHA1 と + salt bcrypt でパスワードを暗号化しますか?

SHA1 でパスワードを暗号化し、salt を追加してから bcrypt で暗号化するとします。暗号化されていないパスワードにソルトソルトを追加してから bcrypt で暗号化するよりもはるかに安全ですか?

ありがとうございました。

0 投票する
2 に答える
769 参照

sha256 - sha256のbcryptまたはプログレッシブパス?

Web 上にパスワードを保存するための現在のベスト プラクティスは、sha256 やその他のハッシュ アルゴリズムではなく、bcrypt を使用することです。Bcrypt は素晴らしいように思えますが、私が見るところ 1 つの欠点があります: 作業係数 10 を使用するパスワードで満たされたデータベースがあり、計算能力が向上したために作業係数を 12 に増やしたい場合、これを行う方法がありません。ユーザーのパスワードを知らなくても、ユーザーが再度ログインするまで待機します。これは、アカウントを放棄したユーザーに問題を引き起こします。

代わりの解決策は、sha256 を使用して 2^(work factor) に等しい数のパスを実行することだと私には思えます。これを行うと、作業係数を増やしたいときに、保存されているすべてのパスワードのパス数の違いを実行できます。

まさにそれを行うためのコードを少し書きました。これが良いアイデアかどうかについて、皆さんからのフィードバックを得たいと思います。

https://github.com/rbrcurtis/pcrypt