3

セキュリティの基本やデジタル署名などについての理解は限られています。たとえば、デジタル署名が公開鍵暗号でどのように役立つかを理解しています。しかし、なぜ JNLP に署名する必要があるのか​​、それによってどのような悪意が防止されるのかがわかりません。また、この情報をすぐに入手することもできません。

署名されていない JNLP の展開は許可されていますが、ディスクやネットワーク アクセスなどが制限されていることがわかりました。しかし、私があなたのディスクの内容に悪意のあることをする Java アプリケーションを作成する悪意のある人物であると仮定しましょう (そして、私はそれを別のものに偽装します)。私は簡単にこれに署名して展開できます。あなたは疑いを持たずに私の Web サイトにアクセスし、アプリを起動して、ディスクを攻撃することができます。このような場合...署名は何を達成しましたか?

もっと要点を言えば... 誰かがほとんど労力を必要とせずに簡単にアプリケーションに署名できるとしたら... では、何の意味があるのでしょうか?

私は痛々しいほど明らかな何かを見逃していると確信しています...私に教えてください。

4

2 に答える 2

4

何かに署名することはできません-ブラウザに制限なしで実行させたい場合はそうではありませんソフトウェアの署名に使用する証明書は、ブラウザにインストールされているルート証明書に到達するまで、別の証明書などを使用して署名する必要があります。

時折、慎重ではない認証局がいくつかありますが、通常、(ネットワーク) ID の証明を提供しない限り、そのような証明書を取得することはできません。つまり、悪意のある人は、たとえそれがわずかであっても、何らかの ID を提供する必要があります。さらに重要なことに、CA は、悪意のある活動に使用された、または侵害された証明書を取り消すことが期待されているため、露出の範囲が制限されます。

要するに、サイトで CA 署名付き証明書を使用していて、その証明書が悪意のあるソフトウェアの配布に使用されている場合、CA は遅かれ早かれ証明書を取り消します。一方、自己署名証明書を使用する場合、ブラウザはユーザーにその使用を確認するよう求めます。ユーザーが警告にもかかわらずそれを実行した場合、それはユーザー自身の責任ですね。結局のところ、愚かさや無知に対する一般的な対策はありません...

于 2013-03-15T23:15:23.250 に答える
1

この質問はいくつかの有効な点を提起しており、thkala は信頼できる機関から発行された CA の価値について適切な防御を提供しました。

しかし、通常の実行可能 JAR ファイルではなく、JNLP の CA が必要なのはなぜでしょうか? その理由は、JNLP がブラウザーから起動されることを意図しているためだと思います。JNLP ファイルは、サンドボックス内のブラウザーで実行されるアプレットに代わるものです。理論的には、コンピューターに害を及ぼさないように保護されています。ユーザーは、ページにアクセスするだけで、アプレットで実行されている jar ファイルを起動できます。同様に、ボタンをクリックするだけで JNLP を起動できます。Chrome では、最初に JNLP を保存するよう求められます。しかし、IE や Firefox では、起動ボタンや通常の Web リンク (Web ページの他のボタンやリンクのように見えます) が表示され、クリックするだけでプログラムが実行されます。これは、実行可能ファイルをダウンロードして実行するよりも少し簡単です。

一方、実行可能な JAR ファイルをインストールするか、さまざまな方法で実行することができます。たとえば、一部の MRI 表示ソフトウェアは JVM で実行され、患者または医師はカスタム ソフトウェアを起動して MRI を表示する必要があるため、MRI と一緒に CD にパッケージ化されることがよくあります。しかし、このソフトウェアは「インストール」されません。CDから実行するだけです。

一方、JNLP は、スタンドアロン プログラムというよりもインストーラーのように機能します。デスクトップ ショートカットを作成し、ファイルの関連付けを行うことができました。ユーザーの観点からは、私の JNLP アプリは独自のアイコンとファイル タイプを備えたネイティブ プログラムのように感じられます。ブラウザから非常にシームレスに実行され、クライアント PC に自由にアクセスできるため、「署名され、信頼されている」と、ユーザーはこれを実行する際により安全に感じることができます。

歴史的に、これが JNLP とアプレットが署名される理由であると私は信じています。私は、この署名の実用的価値は失効したと考えています。

まず第一に、CA からアプリに署名するには数百ドルかかるため、多くの企業はこれをスキップします。自己署名コードを実行する協力アプリがいくつかあり、ユーザーはブラウザーが警告を表示した後、[同意する] ボタンをクリックすることを知っています。

さらに重要なことに、Java の最近のセキュリティ更新は、署名されていないコードがサンドボックスから出て、署名されたアプレットまたは JNLP が実行できるすべてのことを実行できるようにするパッチのバックドアを中心にしています。オラクルがサンドボックスから抜け出す方法にパッチを当てるたびに、誰かが別の抜け道を見つけているようです。最善の解決策は、ランタイムに常にプロンプ​​トを表示させることですJava アプレットまたは JNLP ファイルを実行する権限を持つユーザー。自己署名された JNLP ファイルがローカル ファイル システムと LAN にアクセスできるだけでなく、署名されていない JNLP ファイルも同様にアクセスできます。ユーザーが Oracle からの最新のセキュリティ更新プログラムを持っていて (もちろんほとんどの場合そうではありません)、サンドボックスから抜け出す次の巧妙な方法が発見される前であれば、サンドボックス モデルは意図したとおりに実際に機能しています。しかし、ほとんどのユーザーにとって、ほとんどの場合、sanbox モデルは意図したとおりに機能していません。すべての JNLP ファイルが実行許可を求め、通常の JAR ファイルと同じアクセス権を与える時が来たと思います。

そうすれば、6 か月ごとにセキュリティ証明書を再作成する必要がなくなります。

于 2013-03-19T17:25:19.760 に答える