[Java] Java Applet & Web Start - Code Signing

原文はこちら。
http://www.oracle.com/technetwork/java/javase/tech/java-code-signing-1915323.html

概要

2013年2月19日のJava Critical Patch Update (CPU)で、Oracleは次のJava CPUリリースであるOracle Java SE 7 Update 21 (Java SE 7u21)を2013年4月16日に提供する予定と発表しました。
Updated February 2013 Critical Patch Update for Java SE Released
https://blogs.oracle.com/security/entry/updated_february_2013_critical_patch
2013年4月16日、セキュリティ修正と共に、Java SE 7u21では重要なセキュリティ機能も提供します。最も重要なのは、最高のユーザー体験のために、ブラウザ内で実行するためJavaプラグインを利用するJavaアプレットとWeb Startアプリケーションは信頼された証明書で署名されなければならない、という要件です。Javaはコードの署名をサポートしていますが、Java Se 7u21まではオプションの機能でした。アプリケーションコードの署名により、多数のセキュリティ上のメリットをユーザーに提供します。
Overview—What Is Java Plug-in? What Does It Support?
http://docs.oracle.com/javase/7/docs/technotes/guides/plugin/developer_guide/overview.html
Java SE 7u21ではJavaコントロール・パネルのセキュリティスライダーのセキュリティレベルを変更します。JavaアプレットやJava Web Startテクノロジーを使用するアプリケーション(ネットワークやWebブラウザで実行時にエンドユーザーに配信するアプリケーション)の作者ならびにベンダーは、最高のユーザー体験のため、コードを信頼された証明書で署名する必要があります。具体的には、クライアントのWebブラウザで実行される全てのJavaコードはユーザーにプロンプトを表示します。画面に表示されるメッセージの種類はリスク(コードの署名、未署名とか、コードが権限昇格を要求しているとか、JREのセキュリティレベルがセキュリティベースラインよりも上だったり下だったり)によって変わります。低リスクのシナリオでは非常に小さなダイアログが現れ、そのダイアログには、今後同じベンダーによる類似のダイアログを表示しないためのチェックボックスが含まれています。高リスクのシナリオ、例えば未署名のjarを実行する場合、リスクが増えるためにユーザーのインタラクションが必要になるでしょう。
ユーザー体験の最小の変更でさえ、面倒なことが時々あります。この変更によりどれほどユーザー体験に影響するかを考慮してきました。現在のWebブラウザのJavaセキュリティの状況を考慮すると、コード署名がJavaユーザーを守るための重要なセキュリティコントロールです。

FAQ

どんな変更が導入されるのでしょうか。

Java SE 7u21ではJavaブラウザプラグインの挙動が変わり、アプリケーション作者やベンダーに信頼された認証局から発行された証明書でコードを署名することが推奨されます。開発者の方には、今すぐこのリリースおよび将来のリリースのためにコードを署名することを推奨します。
これらの手順は大幅にデスクトップユーザーのリスクを低減するでしょう。Javaコントロールパネルの[LOW]セキュリティ設定(例えばlowやカスタム)を除去し、Javaに組み込んでいるセキュリティ修正をユーザーが何かの事情で完全に停止することができないようにしています。最新のJREと、(自己署名や未署名ではなく)信頼済みの認証局によって署名された必要なコードと組み合わせることで、ユーザーを保護します。

なぜこの変更が重要なのでしょうか。

Webブラウザで実行するJavaは攻撃者にとって人気のあるターゲットです。2012年下旬の7u10で、Oracleは、「信頼された」アプレットのみを実行できるようにしたユーザーが構成可能な設定を導入しました。信頼されたアプレットは信頼された認証局が発行した証明書によって署名されたものであり、最終的にはエンドユーザーが承認したものです。コード署名によってユーザーがアプレット提供者のIDでユーザーの信頼が向上し、アプレットの安全のためにアプレット提供者の説明責任を強化することに役立ちます。

こうした変更によってアプリケーションが壊れませんか?

7u21の変更により、アプリケーションが壊れることはないはずですが、開発者が各アップデートリリースにて、全てのアプリケーションが適切に動作することを確認するべきです。プラットフォームはJavaアプリケーションの実行を否定しませんが、高リスクのシナリオでは、ユーザーは必要であれば、実行を停止することができるようになります。将来のアップデートリリースでは、安全でない挙動(未署名や自己署名アプリケーション)を制限する追加の変更が入る可能性があります。

コード署名はデスクトップユーザーにとってどういう意味がありますか?

信頼された証明書を用いるコードの署名により、よりよいユーザー体験を提供し、攻撃者から攻撃を防ぐために役立つより多くの情報を提供します。

コード署名はアプリケーションの作者やベンダーにとってどういう意味がありますか?

最高のユーザー体験を提供するため、JavaアプレットやJava Web Startテクノロジーを使って展開しているJavaアプリケーションの作者やベンダーは、4月のJava SE 7u21のCPUリリース前にコードの署名をしておくことをお薦めします。さらに、全てのソフトウェアコードを最新バージョンのJavaに対応させておくべきです。Javaはセキュリティベースラインの下に動作しているため、ユーザーがJavaの最新リリースにアップグレードしたがらなくなると、ユーザー体験が変わります。すべてのユーザはシステムのセキュリティを確保するため、最新のJavaバージョンにアップグレードすることを強くお勧めします。

アプリケーションの作者やベンダーはどんな準備をすればいいでしょうか?

一般に、全てのJavaアプレットやWeb Startアプリケーションの推奨されるデプロイ手順は以下のようです。
  1. アプレット、Web Startアプリケーションとも、JNLPを使ってデプロイする
  2. 権限を昇格する必要がある場合は、デプロイメント・ディスクリプタの"all permissions"を指定する
  3. 信頼された認証局から発行された証明書でアプリケーションを署名する
  4. 常に最新のJavaバージョンでアプリケーションをテストする
  5. ユーザー体験の変更に関して利用者とコミュニケーションする

コード署名の方法は?

コード署名の証明書は数多くの商用認証局から入手したり自己署名ツールを使って入手することができます。"Certificate Authorities"(認証局)や"self signed certificate tools"(自己署名証明ツール)で検索すると、要件にあったソリューションを見つけることができるかと思います。ほとんどの認証局はアプリケーションの署名方法をステップバイステップで説明してくれていますし、自己署名の方法もたくさんサンプルが出回っています。

ブラウザでJavaアプリケーションを実行するシステムのセキュリティを確保するため、どんな追加の手順をとることができますか?

Javaユーザー、システム管理者、開発者に対し、システムで利用するJavaのバージョンを最新にすることを強く推奨します。Javaの自動アップデートメカニズムはJavaユーザーが最新のセキュリティ修正に対応したJavaを使えるように設計されています。以前自動アップデートを無効にされたのであれば、自動アップデートを有効に戻し、最新かつ最もセキュアなJavaがシステムに配置されるようにしておくことをお薦めします。
その他の詳細情報は、以下の自動更新に関するFAQをご覧下さい。
Java 6 Auto-Update to Java 7 - General Information and FAQ
http://www.oracle.com/technetwork/java/javase/documentation/autoupdate-1667051.html
企業の場合、デスクトップを企業ポリシーに従いアップデートすべきです。企業はプラグインアプリケーションのインベントリを作成し、それらのアプリケーションを信頼された証明書を使って署名すべきです。

Java Security - 参考資料

開発者向け Java SE Security
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html
Secure Coding Guidelines for the Java Programming Language, Version 4.0
http://www.oracle.com/technetwork/java/seccodeguide-139067.html
Java SE 7 Security Documentation
http://docs.oracle.com/javase/7/docs/technotes/guides/security/
企業向け Oracle Java SE Support
http://www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html
ミッションクリティカルなアプリケーションを24時間×7日、メールや電話でサポートしています。
Oracle Java SE Advanced and Oracle Java SE Suite
http://www.oracle.com/us/technologies/java/standard-edition/advanced-suite/overview/index.html
Oracle Java SE AdvancedとOracle Java SE Suiteは、JavaベースのIT環境を展開、監視、メンテナンスするコストを最小化する企業向け機能を提供しています。
システム管理者向け Deployment Best Practices
http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/bestPractices.html
Java Plug-in Guide for System Administrators
http://docs.oracle.com/javase/7/docs/technotes/guides/plugin/developer_guide/faq/developer.html
Tutorial: Security Features in Java SE
http://docs.oracle.com/javase/tutorial/security/
エンドユーザー向け Javaヘルプ・センター
http://www.java.com/ja/download/help/
Java Help Center(英語)
http://www.java.com/en/download/help/
信頼できないアプレットやアプリケーションがWebブラウザでいつ実行されるかを制御するにはどうすればよいですか。
http://www.java.com/ja/download/help/jcp_security.xml
How do I control when an untrusted applet or application runs in my web browser?
http://www.java.com/en/download/help/jcp_security.xml

0 件のコメント:

コメントを投稿