問題タブ [password-hash]
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.
objective-c - Objective-C で SHA256 ハッシュを生成する
そのため、Objective-C で Sha256 パスワードを生成する必要がありますが、その方法が一生わからないのです! 私が見逃している簡単なものはありますか?
次のメソッドを実装してみました (これは iPhone 用に作成されたものですが、一部の Objective-C コードと同様に、クロスプラットフォームで動作する可能性があると考えました)。
しかし、それは CC_SHA256_DIGEST_LENGTH が宣言されていない識別子であるというエラーを吐き出すだけです。
security - ベスト プラクティス: パスワードのソルト & ペッパー?
私が行っていたのは、実際にはパスワードをソルトするのではなく、パスワードをペッパー化することであることがわかったという議論に出くわしました。
選択したハッシュ アルゴリズムを無視する (特定のアルゴリズムではなく、塩とコショウについての議論にしたいのですが、安全なアルゴリズムを使用しています)、これは安全なオプションですか、それとも別のことをする必要がありますか? 用語に慣れていない人のために:
ソルトはランダムに生成された値で、通常はハッシュ テーブルを使用してパスワードをクラックできないように設計されたデータベースに文字列と共に格納されます。各パスワードには独自のソルトがあるため、解読するには、すべてのパスワードを個別に総当たり攻撃する必要があります。ただし、salt はパスワード ハッシュと共にデータベースに保存されるため、データベースの侵害は両方を失うことを意味します。
ペッパーは、データベース (通常はアプリケーションのソース コードにハードコードされている) とは別に保存されるサイト全体の静的な値であり、秘密にすることを目的としています。これは、データベースが侵害されても、アプリケーションのパスワード テーブル全体がブルート フォース可能にならないようにするために使用されます。
不足しているものはありますか? ユーザーのセキュリティを保護するための最良のオプションは、パスワードのソルティング & ペッパーですか? このようにすることで潜在的なセキュリティ上の欠陥はありますか?
注: アプリケーションとデータベースは別々のマシンに保存され、パスワードなどを共有しないことを前提として説明します。したがって、データベース サーバーの侵害が自動的にアプリケーション サーバーの侵害を意味するわけではありません。
php - 最高の暗号化技術
私はPHPを使用しています。安全で高速なパスワード暗号化システムが必要です。パスワードを 100 万回ハッシュする方が安全かもしれませんが、速度も遅くなります。速度と安全性のバランスをどのように達成するか? PHPでの最適な暗号化方式とその適用方法を知りたいです。
database - パスワードソルトの保存場所と入手方法
私は .Net MVC 4 Web アプリケーションでの認証を担当していますが、パスワードのハッシュ、保存、および認証に関して問題が発生しました。
現在、2 つのソルト、1 つの動的 (ユーザーごと)、1 つの静的 (Web アプリ定数)、および強力なハッシュ関数を使用する予定です。
ユーザー名とパスワードを含む単純な User テーブルがあるとします。
- ユーザーごとのソルトをユーザー テーブルの列に保存しますか?
私の心配は、そうすることで、ユーザー名のみを使用して、Web アプリケーションのメモリ内のデータベースからユーザーを取得する必要があることです。それが問題になる可能性のあるある種の攻撃はありますか? 理想的には、これをワンステップ/ワン SQL リクエスト認証にしたいと思います。
心配しすぎですか?ワンステップ認証を行うことができる「ユーザーごと」のソルトに代わるものはありますか?
java - Spring 3 セキュリティにハッシュとソルトを実装する
dtb に新しいエントリを作成するときのハッシュ + ソルトの考え方を理解しています。ソルトに固定文字列がある場合、それを実装するのは難しくないかもしれませんが、たとえばユーザーの誕生日をソルトとして使用したい場合はどうすればよいですか? そのパスワードをデータベースに保存するのは簡単ですが、ログイン中にこれをハッシュする方法は? applicationContext-security.xml
ファイルのこのコードをグーグルで検索しました。ここではusername
、ソルトの値を使用しています。
つまり、ユーザーの誕生日をソルトとして使用したい場合は、それを dtb に保存し、dtb から引き出してからソルトとして使用する必要があります。users
テーブル列username
にpassword
, , がある場合、パスワードをハッシュできるため、意味がありませんが、攻撃者にとっては、値がソルトとして使用されることbirthday
は明らかです。birthday
私が欠けているものはありますか、それとも本当にうまくいきますか?
php - PHP でソルトされたパスワードの検証
crackstation.net では、次のように述べられています。
パスワードを検証するには
- データベースからユーザーのソルトとハッシュを取得します。
- 指定されたパスワードの前にソルトを追加し、同じハッシュ関数を使用してハッシュします。
- 指定されたパスワードのハッシュをデータベースのハッシュと比較します。一致する場合、パスワードは正しいです。そうでない場合、
パスワードが正しくありません。
ただし、ページの下部にリストされているソースコードvalidate_password
では、関数がソルトをどのように考慮しているかわかりません。つまり、指定されたパスワードの前にソルトが追加されているのはどこですか?
問題の関数は次のとおりです。
php - データベースまたはphpコードでbcryptを使用してパスワードをハッシュしますか?
PHPアプリのどこでもパスワードハッシュにbcryptを使用しています。ただし、データベースで bcrypt を使用するか、php コードで bcrypt を使用するかを選択できます。bcrypt を使用することは他のほとんどのハッシュ オプションよりも優れていると思いますが、データベース内の関数または php 内の関数を介して bcrypt を使用する方が安全ですか?
security - パフォーマンスのトレードオフとして、パスワードの安全性の低いハッシュをメモリに保存しますか?
現在、パスワードの保存と検証を含むプロジェクトに取り組んでいます。パスワードは 100,000 回の繰り返しでハッシュされ、データベースに永続化されます。これは、後でユーザーがログインしたときに取得および検証されます。負荷が低い場合、ハッシュの生成に約 1 秒かかり、ほとんどのユーザーが遅延を感じるため、これはうまく機能します。許容できる。
問題は、システムがますます多くのユーザー (最大 100 同時) を取得するにつれて、ハッシュが CPU を使い果たし、生成に 6 秒以上かかることです。これにより、ログオン時間が非常に遅くなり、残念ながらシステムのステートレスすべての呼び出しでパスワードの検証を必要とする api。
私が理解しているように、総当たり攻撃を回避するためにハッシングの計算コストを高くしたいと考えていますが、攻撃者がメモリダンプにアクセスしてデータベースにアクセスできる可能性ははるかに低いため、妥協案を実装することを考えています。ログオンに成功したら、反復回数を減らして (たとえば 5000 回) パスワードをハッシュし、それを短時間メモリに保存します。同じユーザー ID を検証する要求が来た場合は、メモリ内の安全性の低いバージョンを使用して検証します。それ以外の場合は、データベース内のより安全なバージョンを使用します。これにより、データベース bruce へのアクセスによる攻撃が防止され、高負荷のシナリオでは、メモリ内の安価なハッシュによってほとんどの要求を満たすことができます。
これは安全性が低いことは承知していますが、妥当なトレードオフですか? 気をつけるべき落とし穴はありますか?
エイドリアン
ldap - OpenLDAPへのエクスポート中のLiferayとユーザーパスワード
ライフレイについて質問です。
Liferay + Jasig CAS 認証と OpenLDAP を使用してシステムを構成しました。ユーザーを正しく認証でき、LDAP からユーザー アカウントをインポートできます (Ldap インポート)。
また、OpenLDAP へのユーザー エクスポートを構成しました。これで、作成時にアカウントをエクスポートできるようになりました。実際、OpenLDAP サーバーでこの新しいアカウントを確認できます。
Liferay が新しいアカウントを作成すると、この新しいアカウントのランダムなパスワード (4hdsdsh など) が生成され、ユーザーは登録後に電子メールを受け取ります。
問題は、OpenLDAP サーバーのこのパスワードが、Liferay によって生成されたばかりのパスワードと一致しないように見えることです。そのため、新しいユーザーは Liferay で認証できません (CAS + LDAP を使用しているため)。
また、面白い/奇妙なことも発見しました: Liferay でこの新しいパスワードを (管理者アカウントを使用して) 変更すると、このパスワードが OpenLDAP サーバーに正しく表示されるため、ユーザーは最終的に Liferay にログインできます..