問題タブ [java-security]
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 - 難読化以外の Jar 保護
クライアントマシンで利用可能なjarファイルを保護したいというトリッキーな状況があります。
Java プロジェクトがあり、build.xml を使用して、インストール後のクライアント マシンで使用できる jar ファイルを生成しています。
ここで、jar ファイルで使用可能なコードを保護する必要があります。これは、すべてのクライアントが逆コンパイルを試みてから、コード ベースを確認します。
クライアントが UI を使用してプロジェクトをトリガーしようとするときのような依存関係があります。サーバーで Java ファイルを生成し、この Java ファイルをクライアント マシンにダウンロードしてから、Java ファイルをコンパイルして .class を取得します。クライアント マシンにダウンロードされた Java ファイルは、jar ファイルとその内部の関数を参照します。
proguard やその他のツールを使用してコードの難読化を行うと、jar 内のすべての関数名が変更され、ダウンロードされた Java ファイルがクライアント マシンでコンパイルされないのではないかと心配しています。 .
Java ファイルを生成し、実行時にクライアント マシンにダウンロードするサーバー側のロジックを変更できません。
コンパイルを中断することなく、クライアント マシンで jar ファイルを保護するためのロジックが必要でした。主に、クライアントが自分のマシンで利用可能な jar を使用して私のコードを表示したくありません。
どんな助けでも大歓迎です、事前に感謝します
java - Java での AES のパフォーマンス: どのように (もし?) 改善するか
Java のセキュリティに問題があります。大量のバイトがあり、それらを N バイトのチャンクに分割し、暗号化し、別々の (独立した) メッセージで送信したいと考えています。
ここに私の基本的な暗号があります:
次のようなメッセージを作成します (最初のハンドシェイクで AES-128 セッション キーが生成されます)。
それから私はメッセージに書きます:
反対側では、私は:
これはすべてうまく機能しますが、ハンマーで叩き始めると、本当に、本当に、遅くなる傾向があります。私のホットスポットは次のとおりです。
私はここで素朴なのか疑問に思っていましたか?明らかな何かが欠けていますか?毎回新しい Cipher インスタンスを取得するべきではないのではないかと思っていました...しかし、多くの同時実行性が得られました。インスタンスをスレッドセーフに共有しようとすることもおそらく理想的ではないと推測しています...
コードの残りの部分には改善の余地がたくさんあるので、暗号化の部分がさらに悪くなります。
誰が考えているのですか?それとも、20 mb/s の合計スループットは (最新の頑丈なラップトップで) 十分に優れているのでしょうか?
java - Java ポリシー ファイルを使用して、信頼されていないアプリを sudo で安全に実行できますか
ある程度信頼されている (Minecraft) J2SE アプリケーションを実行していますが、完全に信頼されていない (そしておそらくいくつかの敵対的な) プラグインが含まれている可能性があります。
Raspberry PI の GPIO ピンにアクセスできるプラグインを作成したいと考えています。
私が見たすべてのソリューションでは、そのようなアプリに sudo-superpowers を与える必要があります。これは、gpio が直接メモリ アクセスを介してアクセスされるためです。
正しい解決策は、次のようなコマンドライン オプションを指定することです。
これは、デフォルトで許可なし (ファイルやハイポートへのアクセスであっても) に設定されているようで、アプリが必要とするものをポリシー ファイルに追加します。
実際には、Java の「sudo」権限を付与し、Java のセキュリティ モデルを信頼して、さまざまなクラスに適切な権限のみを付与しているようです。これにより、アプリを sudo で安全に実行できるようになると思いますが、これは正しいですか?
面白いことに、私は Java を 1.0 からほぼ毎日使用しており、これまではこれを必要としたことがありませんでした...毎日新しいことを学びます。
java - Java SignedObject が正しくシリアライズされていない
java.security.SignedObject
正しくシリアライズされていないようです。
単一のプロセスで次のことを行うと、正常に動作します。
しかし、2 つのプロセスがあり、署名されたオブジェクトをネットワーク経由で渡そうとすると、問題が発生します。
送信者
レシーバー
myObject
を実装し、などのプリミティブSerializable
に変更しても、同じ問題が発生することに注意してください。興味深いことに、署名されたオブジェクトをソケット経由で同じプロセスで実行されている別のスレッドに送信すると、成功します。myObject
byte[]
verify
Signature
インスタンスで何かあるのかと思ったのですがverify
、異なるインスタンスで署名・検証を行っても1回の処理で成功しますSignature
。
1つのプロセスと送信者/受信者の両方のケースで、まったく同じ方法でファイルからそれらをロードしているため、キーに問題があるとは思えません。
java - JavaでKeyStoreファイルのパスワードを変更するには?
私はJavaKeyStore
を使用してユーザーの安全な情報を保存し、キーストアをパスワードでロック(暗号化)し、必要に応じてパスワードで情報を取得していますが、これは正常に機能しています。
しかし、同じkeyStoreファイルのパスワードを変更する方法がわかりません
KeyStore.load(InputStream,Password)
ユーザーパスワードでキーストアにアクセスしkeyStore.store(Keystore,password)
、値をキーストアに書き込む方法を使用しています。
keyStore ファイルのパスワードを変更する方法はありますか。ここにある API ドキュメントを確認しました: http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html
java - そのようなアルゴリズムはありません - bcrypt
パスワードセキュリティのためにSpring Securityとbcryptを使用しています。
これは実際には Grails アプリケーションにあります。アプリケーションが起動すると、次のようになります。
「そのようなアルゴリズムはありません [bcrypt]」
エラーをSpringセキュリティのコードまで追跡しました:
bcrypt を Java セキュリティにインストールするにはどうすればよいですか?
CentOS 7 で Oracle JDK 1.8.0_73-b02 を実行しています。