問題タブ [cryptography]

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 投票する
8 に答える
14138 参照

java - SecureRandom: 1 回または必要なたびに初期化しますか?

私たちのチームは、SecureRandom を使用して鍵ペアのリストを生成しています (SecureRandom は KeyPairGenerator に渡されます)。次の 2 つのオプションのどちらを使用するかについては、合意できません。

  1. キーペアを生成する必要があるたびに新しいインスタンスを作成する

  2. 静的インスタンスを初期化し、それをすべてのキー ペアに使用する

一般的にどのアプローチが優れているか、またその理由は?

追加: 私の直感では、2 番目のオプションの方が安全です。しかし、私の唯一の議論は、疑似ランダム性が現在のタイムスタンプから導出されるという仮定に基づく理論的な攻撃です。誰かがキーペアの作成時間を見て、周囲の時間間隔でタイムスタンプを推測し、可能な疑似乱数シーケンスを計算し、キー素材。

追加: タイムスタンプに基づく決定論に関する私の仮定は間違っていました。それが、Random と SecureRandom の違いです。したがって、答えは次のようになります。セキュリティの観点からは、それほど重要ではありません。

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

c++ - EXE での Authenticode 署名の検証 - CAPICOM を使用しない C++

システムに既にインストールされている EXE ファイルの Authenticode 署名を検証するインストーラー DLL の関数を作成しています。

関数は次のことを行う必要があります。

A) 署名が有効であることを確認します。
B) 署名者が当社の組織であることを確認します。

これはインストーラーに含まれており、古い Win2k インストールで実行する必要があるため、CAPICOM.dll に依存したくありません。ターゲット システムにない可能性があるからです

WinVerifyTrust API は (A) を解決するのに最適です。

問題の EXE に署名した証明書と既知の証明書 (またはその中のプロパティ) を比較する方法を見つける必要があります。

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

cryptography - CryptoAPI を使用して秘密鍵を作成し、シードする方法はありますか?

2 つの平文キーからシードされた秘密キーを作成する必要があります。2 つの平文キーは、異なるマネージャーによって維持されます。これは、デュアル コントロール キーの要件を満たすためです。2 つのキーを 1 つのシードに結合できます。ただし、Microsoft CryptoAPI ドキュメントを読むと、すべてのキー生成は完全にランダムであり、シードを提供する方法はありません。これは本当ですか?はいの場合、このキーを作成するための代替ソリューションを提案できますか?

注: キーはキー コンテナーに格納され、エクスポート不可としてマークされます。

0 投票する
11 に答える
9143 参照

cryptography - 明らかに NP で破りにくい公開鍵暗号化アルゴリズムはありますか?

実用的な量子コンピューティングが実現した場合、整数因数分解や離散対数ではなく、NP 完全問題に基づく公開鍵暗号アルゴリズムが存在するかどうか疑問に思っています。

編集:

量子コンピューターに関する wiki 記事の「計算複雑性理論における量子コンピューティング」セクションを確認してください 。 量子コンピューターが解決できる問題のクラス (BQP) は、NP 完全よりも厳密に簡単であると考えられていることを指摘しています。

編集2:

「NP完全に基づく」は、私が興味を持っていることを表現する悪い方法です.

私が求めようとしていたのは、暗号を破るためのあらゆる方法を使用して、根底にある NP 完全問題を破ることができるという特性を持つ公開鍵暗号化アルゴリズムです。これは、暗号を破ると P=NP が証明されることを意味します。

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

java - このプログラムが IllegalStateException をトリガーする理由を理解できますか?

~/Cipher/nsdl/crypto 内のすべてのファイルはここにあり ます gcj でコンパイルされた Java ファイル、compile.sh を参照してください

BlockCrypt.java:

cryptTest.java:

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

java - ブラウザ ベースのドキュメント署名 (デジタル署名付き) に最適なクロスブラウザ ソリューションは何ですか?

XadES 形式のデータにデジタル署名して検証できるようにするブラウザー ベースのコンポーネント (クロスブラウザーである必要があるため、おそらく Java アプレット) を実装する必要があります。利用可能なオプションと最適なソリューションは何ですか?

0 投票する
7 に答える
11992 参照

java - Java を使用して整数を暗号化する

java.security と javax.crypto を使用して、Java でいくつかの整数を暗号化しようとしています。

問題は、Cipher クラスがバイト配列のみを暗号化することです。整数をバイト文字列に直接変換することはできません (できますか?)。これを行う最善の方法は何ですか?

整数を文字列に、文字列を byte[] に変換する必要がありますか? これは非効率的すぎるようです。

誰もそれを行うための迅速/簡単または効率的な方法を知っていますか?

私にお知らせください。

前もって感謝します。

jbu

0 投票する
8 に答える
15171 参照

python - Python crypt モジュール -- ソルトの正しい使い方は?

まず、コンテキスト: ログインが必要なコマンドライン ベースのツール (Linux) を作成しようとしています。このツールのアカウントは、システム レベルのアカウントとは何の関係もありません。これは /etc/passwd を調べません。

/etc/passwd と (ほぼ) 同じ形式を使用して、ユーザー アカウントをテキスト ファイルに保存することを計画しています。

システム レベルのパスワード ファイルを使用していないにもかかわらず、パスワードをクリアテキストで保存するのではなく、crypt を使用することをお勧めします。(crypt は確かにパスワードを平文で保存するよりも優れていますが、私はこれを行う他の方法にもオープンです。)

私の暗号の知識はこれに基づいています: https://docs.python.org/2/library/crypt.html

ドキュメントは、不可能なことを要求しているようです:「パスワードをチェックするときは、暗号化された完全なパスワードをソルトとして使用することをお勧めします。」

は?暗号化されたパスワードを作成している場合 (ユーザー レコードを作成する場合など)、暗号化されたパスワードをソルトとして使用するにはどうすればよいですか? まだ存在しません。(パスワードの作成と確認には同じソルトを使用する必要があると想定しています。)

プレーンテキストのパスワードをソルトとして使用してみました。これは機能しますが、2 つの問題があります。1つは簡単に克服でき、もう1つは深刻です。

1) 暗号化されたパスワードには、平文パスワードの最初の 2 文字が含まれています。最初の 2 文字をファイルに書き込まないことで、これを修正できます。

2) 平文のパスワードをソルトとして使用することで、システム内のエントロピーの量を減らしているように見えます。おそらく私は塩の目的を誤解しています。

私が導き出したベスト プラクティスは、ユーザー名の最初の 2 文字をソルトとして使用することです。これは適切でしょうか、それとも私が見逃したことが悪い動きになるのでしょうか?

ソルトについての私の理解は、辞書からのパスワードハッシュの事前計算を防ぐということです。すべてのパスワードに標準のソルト (私のイニシャル「JS」など) を使用できますが、攻撃者にとっては、各ユーザーのユーザー名から 2 文字を使用するよりも負担が少ないようです。

0 投票する
16 に答える
38057 参照

hash - MD5 ハッシュ値が元に戻せないのはなぜですか?

私が常に疑問に思っている概念の 1 つは、暗号化ハッシュ関数と値の使用です。これらの関数が、一意で事実上元に戻すことが不可能なハッシュ値を生成できることは理解していますが、私がいつも疑問に思っていることは次のとおりです。

私のサーバーの場合、PHPで次を生成します。

MD5 関数を介して同じ文字列を実行すると、PHP インストールで同じ結果が得られます。プロセスは、開始値から何らかの値を生成するために使用されています。

これは、何が起こっているかを分解してハッシュ値を逆にする方法があるということではないでしょうか?

これらの関数について、結果の文字列をたどることができないのはなぜですか?

0 投票する
3 に答える
362 参照

c++ - C++ で Mac 上のスマートカードを使用してデータに署名する

スマートカードを使用してデータに署名するための Mac OS X でのサポートはありますか? システム ヘッダーを調べたところ、(SecKeychain.h で) スマート カード サポートへのあいまいな参照しか見つかりませんでした。

組み込みのサポートがない場合、私のオプションはどれですか (つまり、私を助けることができるフリー/フリーでないライブラリは何ですか)