問題タブ [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.
java - 「良い」SecureRandom を作成する最良の方法は何ですか?
SecureRandom の特定の開始が「良い」かどうかを尋ねる質問がたくさんありますが、経験則を見つけることができませんでした。
「良い」ランダムな SecureRandom を作成する最良の方法は何ですか?
java - Java の BigInteger.isProbablePrime() 関数が負の数に対して true を返すのはなぜですか?
Java で RSA 公開鍵暗号アルゴリズムを実装しています。2 つのランダムな素数を生成する必要があります。私は SecureRandom クラスを使用して 2 つの 1024 ビットの数値を生成し、2048 ビットのキーを作成しました。BigInteger クラスを使用して数値を処理します。isProbablePrime() 関数を使用して、それが素数であるかどうかを 100 の確実性で判断します。ただし、この関数は負の数に対して true を返していることに気付きました。定義上、素数は負の値にはなりません。
java - JVMからエントロピーを取得するには?
Java プログラムで疑似乱数発生器 (PRNG) を初期化するために適切なシードが必要で、ハードウェア乱数発生器にアクセスできないとします。
ユーザーの操作なしで JVM からエントロピーを取得する方法は?
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を作成しようとしています..この段階でシードが何をしなければならないか(私は暗号化について非常に新鮮であるため、私を許してください)同じ質問の答えがある場合は、私に指示するか、答えを得てください. ..双方向に感謝します。
java - Java 暗号化: AES/CBC/PKCS5Padding シナリオで使用するシード
AES/CBC/PKCS5Padding メソッドを使用してデバイス上のユーザーのデータを暗号化するアプリを構築していますが、セキュリティは非常に重要です。誰かがデータベースを手に入れた場合に備えて、総当たり攻撃を防ぎたいです。
テーブルの各行には、タイトルが関連付けられています。シードとして何を使用すればよいかわかりません。次のいずれかを実行できます。
ソースに自分のシードをハードコーディングしますが、誰かが私のアプリを逆コンパイルすると、これを読み取ることができると思います
ユーザーが入力したタイトルをシードとして使用
自分のシードと入力したタイトルを連結して使用する
他の方法がない限り、上記のすべてのシナリオで、誰かが種を見つけている様子を視覚化できます。これは、暗号化されたデータをブルート フォースできるようにするのに役立ちますか? もちろん、上記のすべてのシナリオで、キーの一部としてユーザーのパスワードも含めます。
潜在的なハッカーにとってより困難にするにはどうすればよいですか?
編集(再編集)
以下の返信と私の調査と思考プロセスに基づいています。以下ができると思います。
- ユーザーにパスワードを入力させますが、データベースには保存しません
- 機密データを保存する前に、それを識別するためにラベルを入力する必要があります。これをクリア テキストとしてデータベースに保存し、salt として使用します。
- ユーザーのパスワードと PBKDF2 のラベルを使用してキーを生成しますが、保存はしません
- #3 で生成されたキーを使用して機密データを暗号化します
- 復号化するには、ユーザーのパスワードと行ラベルに基づいてキーを再度生成し、それを使用して機密データを復号化します
これは正しいと思いますか?ハッカーが 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
java - SecureRandom で安全な乱数を生成する
Javaのクラスを使用して6桁の整数を生成するにはどうすればよいですか?SecureRandom
乱数を生成するために次のコードを試しています:
負の数を含む任意の長さの乱数を生成しています。SecureRandom
クラス内に数値の範囲を提供するメソッドが見つかりません。6桁の正の乱数を生成したい