問題タブ [secure-random]

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 に答える
2346 参照

java - 「良い」SecureRandom を作成する最良の方法は何ですか?

SecureRandom の特定の開始が「良い」かどうかを尋ねる質問がたくさんありますが、経験則を見つけることができませんでした。

「良い」ランダムな SecureRandom を作成する最良の方法は何ですか?

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

java - Java の BigInteger.isProbablePrime() 関数が負の数に対して true を返すのはなぜですか?

Java で RSA 公開鍵暗号アルゴリズムを実装しています。2 つのランダムな素数を生成する必要があります。私は SecureRandom クラスを使用して 2 つの 1024 ビットの数値を生成し、2048 ビットのキーを作成しました。BigInteger クラスを使用して数値を処理します。isProbablePrime() 関数を使用して、それが素数であるかどうかを 100 の確実性で判断します。ただし、この関数は負の数に対して true を返していることに気付きました。定義上、素数は負の値にはなりません。

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

java - JVMからエントロピーを取得するには?

Java プログラムで疑似乱数発生器 (PRNG) を初期化するために適切なシードが必要で、ハードウェア乱数発生器にアクセスできないとします。

ユーザーの操作なしで JVM からエントロピーを取得する方法は?

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

encryption - 安全なランダム シードと derby データベースの作成

これは私の暗号化されたDBです:

private static final String EMBEDDEDDRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; "jdbc:derby:./db;create=true;dataEncryption=true;bootPassword=somepassword;encryptionProvider=org.bouncycastle.jce.provider.BouncyCastleProvider;encryptionAlgorithim=AESEngine/CFBBlockCipher/NoPadding;sqlAutorization=true";

JCE jar を jdk セキュリティに拡張し、プロバイダの優先度を次のようにしました。 security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider

データベースを作成しようとすると...次の例外が発生します:

原因: org.bouncycastle.crypto.prng.SP800SecureRandom.setSeed (不明なソース) の java.lang.StackOverflowError org.bouncycastle.jcajce.provider.drbg.DRBG$Default.engineSetSeed (不明なソース) java.security.SecureRandom で.setSeed(SecureRandom.java:427)

私はDBを作成しようとしています..この段階でシードが何をしなければならないか(私は暗号化について非常に新鮮であるため、私を許してください)同じ質問の答えがある場合は、私に指示するか、答えを得てください. ..双方向に感謝します。

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

java - Java 暗号化: AES/CBC/PKCS5Padding シナリオで使用するシード

AES/CBC/PKCS5Padding メソッドを使用してデバイス上のユーザーのデータを暗号化するアプリを構築していますが、セキュリティは非常に重要です。誰かがデータベースを手に入れた場合に備えて、総当たり攻撃を防ぎたいです。

テーブルの各行には、タイトルが関連付けられています。シードとして何を使用すればよいかわかりません。次のいずれかを実行できます。

  1. ソースに自分のシードをハードコーディングしますが、誰かが私のアプリを逆コンパイルすると、これを読み取ることができると思います

  2. ユーザーが入力したタイトルをシードとして使用

  3. 自分のシードと入力したタイトルを連結して使用する

他の方法がない限り、上記のすべてのシナリオで、誰かが種を見つけている様子を視覚化できます。これは、暗号化されたデータをブルート フォースできるようにするのに役立ちますか? もちろん、上記のすべてのシナリオで、キーの一部としてユーザーのパスワードも含めます。

潜在的なハッカーにとってより困難にするにはどうすればよいですか?

編集(再編集)

以下の返信と私の調査と思考プロセスに基づいています。以下ができると思います。

  1. ユーザーにパスワードを入力させますが、データベースには保存しません
  2. 機密データを保存する前に、それを識別するためにラベルを入力する必要があります。これをクリア テキストとしてデータベースに保存し、salt として使用します。
  3. ユーザーのパスワードと PBKDF2 のラベルを使用してキーを生成しますが、保存はしません
  4. #3 で生成されたキーを使用して機密データを暗号化します
  5. 復号化するには、ユーザーのパスワードと行ラベルに基づいてキーを再度生成し、それを使用して機密データを復号化します

これは正しいと思いますか?ハッカーが 2 つの列 (ラベルのクリア テキストと暗号化されたデータ) を含むデータベースを入手した場合、何かを推測できますか?

編集 2

具体的にAndroidアプリを構築することを計画しています.次のリンクは私が必要としていたものでした.

https://nelenkov.blogspot.in/2012/04/using-password-based-encryption-on.html?m=1

https://android-developers.googleblog.com/2013/02/using-cryptography-to-store-credentials.html?m=1

0 投票する
5 に答える
11198 参照

java - SecureRandom で安全な乱数を生成する

Javaのクラスを使用して6桁の整数を生成するにはどうすればよいですか?SecureRandom

乱数を生成するために次のコードを試しています:

負の数を含む任意の長さの乱数を生成しています。SecureRandomクラス内に数値の範囲を提供するメソッドが見つかりません。6桁のの乱数を生成したい