問題タブ [kdf]
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.
java - PBEKeySpec iterationCount および keyLength パラメータは何に影響しますか?
Java の暗号化とハッシュの世界を掘り下げると、およびパラメーターPBEKeySpec
にさまざまな値を持つクラスのコンストラクターの例が表示されます。これらのパラメーターが何に影響を与えるか、または意味するかを説明するものはないようです。iterationCount
keyLength
keyLength
キーの長さは32ビット暗号化がキーの長さとして32の値を取ると仮定していますが、その仮定は間違っているように感じます。私の推測でiterationCount
は、各文字が暗号化された回数ですが、その仮定にも愛情を感じていません。
情報または説明へのリンクを歓迎します。
c - OpenSSLコマンドと互換性のあるキー機能へのパスワード?
たとえば、次のコマンドを実行します。
次のようなものを出力します。
そのキーはどのように生成されますか?(答えとしてのCコードはあまりにも素晴らしくて尋ねることができません:))また、ivはどのように生成されますか?
私にはある種のヘックスのように見えます。
php - PHP の RFC 2246 PRF 関数
私は RFC 2246 の PRF 機能の実装を探していました。3 つ見つかりました。ここに 1つ、openSSL ライブラリから 1 つ、wpa_supplicant から 1 つです。それらはすべて異なる結果を返します。だから私の最初の質問は: サンプル PRF 入力とサンプル PRF 出力はどこかにありますか?
この関数は、PHP から (WS-Security で保護された) .NET Web サービスへの接続の一部です。
私がこれまでに見つけたのはこれです。私のクライアントは、最初にユーザー名/パスワードと nonce を含むトークンのリクエストを送信します。これが RST です。サーバーは、その RSTR で、別のナンスとセキュリティ トークンで応答します。クライアントからの次のリクエストには、2 つのナンスと「マスター シークレット」からキーが派生した署名が含まれている必要があります。その派生キーは、RFC 2246 に従って計算されます。そのため、信頼できる実装が必要です。
信頼できる実装があったとしても、WS-Security のコンテキストでその関数のパラメーターを構成するものは何ですか? PRF 関数は、次の 3 つのパラメータを取る必要があります。
シークレット、ラベル、シード。
Microsoft が使用するラベルは "WS-SecureConversationWS-SecureConversation" であるとここで読んだことがありますが、その記事は 2006 年に書かれたものです...さて、秘密は何でしょうか? 元のパスワードですか?セキュリティトークン?それらの組み合わせ?最後に、種は何でしょうか?ナンスが 2 つある -- それらを連結するか、OR するか、XOR するか?
私は真剣に立ち往生しています。どんな助けでも大歓迎です。
function - パスワードベースの派生キーを繰り返す可能性はありますか?
A few months ago I entered to cryptography, and I have a doubt. Technically, a PBKDF, converts any password (with any keylength), to a one key with a specific keylength. I understand this is for can use any user entered password with cipher algorithms, resulting no errors of keylength.
For example, if AES 128 accepts 128 bit key size, I have 2^128 possibilities to found the correct key (X) when I decrypt with brute force. But user password possibilities are infinites (in theory, in practice a far away keylength value delimits possibilities). So, a infinite number of user passwords when program applies a PBKDF, becomes to the same 128 bit derivated key (X). Anyway, minimum a 128 bit user password, applying PBKDF, results the correct derivated key (X). This is true? I'm only intented apply logic to concept.
Anyway, I remember 128 bit keylength brute force implies very much time.
encryption - 暗号化 (cryptojs) - 復号化 (erlang)
cryptoJS (AES) で暗号化された値があり、Erlang 暗号ライブラリを使用して復号化する必要があります。私にとっての問題は、Erlang で復号化できるようにするにaes_cbc_128_decrypt(Key, IVec, Cipher)
は、使用された IVec とは何か、キーをどのように作成する必要があるかを知る必要があるという事実にあります。
security - パスワード スクリプトを使用した暗号化はどの程度安全ですか? (Golang、AES256、pbkdf2、hmac)
まず、これは単なる学習演習であり、本番環境で使用するつもりはありません。
Golang で次の 2 つの機能を持つ小さなアプリケーションを作成しましたencrypt(plaintext string, password string)
。decrypt(encrypted string, password string)
暗号化の手順は次のとおりです。
- ソルトとして使用するランダムな 256 ビットを生成します
- 初期化ベクトルとして使用する 128 ビットを生成します
- PDKDF2 を使用して、パスワードとソルトから 32 ビット キーを生成します。
- キーと平文を使用して 32 ビット HMAC を生成し、それを平文の先頭に追加します。
- CFB モードで AES を使用して hmac+plaintext を暗号化する
返されるバイト配列は次のようになります。
復号化時:
- ソルトを抽出し、提供されたパスワードで使用してキーを計算します
- IV を抽出し、暗号文の暗号化された部分を復号化します
- 復号化された値から mac を抽出します
- プレーンテキストで mac を検証する
私は本番プロジェクトで独自の暗号化スクリプトを使用するほどクレイジーではないので、これを行うライブラリを教えてください(比較的安全な単純なパスワード/メッセージ暗号化)
2 つの関数のソース コードは次のとおりです。