Javaセキュリティ入門

1.はじめに

キーJavaプラットフォームの設計はセキュリティです。その中核に、Java言語自体は、タイプセーフであり、それは、アプリケーション・コードの堅牢性を増加させる作り、自動ガベージコレクションを提供します。安全クラスローダと検証メカニズムは、唯一の有効なコードが実行できることを確認します。
初期のJavaプラットフォームは、パブリックネットワークのJavaアプレットからダウンロードするなどの独立した信頼できないコードの安全運転のための安全な環境を作成することができます。プラットフォームの拡大の成長と展開の範囲では、Javaのセキュリティアーキテクチャは、サービスの成長のセットをサポートするために、それに応じて進化します。今日は、このアーキテクチャは、API、一連のツールが含まれており、一般的なセキュリティ・アルゴリズム、メカニズムとプロトコルを実現します。これは、セキュリティ管理アプリケーションのユーザや管理者のためのツールのセットを提供し、アプリケーションを開発する開発者にセキュリティフレームワークの多くを提供します。
JavaセキュリティAPIの範囲は、非常に広い暗号と公開鍵基盤(PKI ) のインターフェイスは、セキュアなアプリケーションを開発するための基盤を提供します。資源を確保するため、不正な位置を整理する能力、そのアプリケーションを確保するために、セキュリティ認証とアクセス制御インタフェースを実行します。
APIは、アルゴリズムや他のセキュリティ・サービスより実用的な実装が可能になります。実現によって、サービスプロバイダー、アプリケーションがその実現について何も知らなくてもセキュリティ・サービスが含まれています標準的なインターフェースを通じて組み込みJavaプラットフォーム。これにより、開発者は関係なく、どのように洗練されたセキュリティ・メカニズムのサービスにセキュリティメカニズムを統合する方法に焦点を当てることができます。
Javaプラットフォームは、セキュリティサービスのコアのほとんどにアクセスするためのプロバイダの数を提供します。同じページには、追加のカスタムプロバイダをインストールさせることができます。これにより、開発者はプラットフォームを拡張する新しいセキュリティ・メカニズムを使用できるようになります。

2.Java言語のバイトコードの検証とセキュリティ

設計から始まるJava言語は、タイプセーフで使いやすいです。これは、自動メモリ管理、ガベージコレクション、およびデータクロスボーダー検査機構を提供します。これは、開発者のプログラミングの圧力を減少させ、より少ないプログラミングエラー、より安全かつ堅牢なコードがあります。
Javaは、フィールド上の現像剤が適切に自分のクラスへのアクセスを制限することができるように、クラス、メソッドで標識することができるさまざまな修飾子を定義します。プライベート、保護、公共、パッケージ:言語は、4つの異なるアクセスレベルを定義 ( 言葉の特別な注意を)。国民が最も制限アクセス修飾子で、誰でもアクセスすることができます。プライベートはプライベートメンバーへの外部アクセスを許可していない最も制限修飾子です。サブクラスprotected修飾子は、同じ訪問時にアクセスまたはパッケージの他の種類のことができます。パッケージ・レベルのアクセスは同じパッケージ内のクラスにアクセスすることができます。
Javaコンパイラは、マシンに依存しないバイトコード表現にJavaプログラムを変換します。バイトコード検証は、実行時にJavaバイトコードの正当な利用の実施を確実にするためです。Java言語仕様に準拠してバイトコードを確認し、罪悪感は、Java言語という名前の制約に違反していません。また、検査車をチェックして、スタックオーバーフロー、不正なデータ型変換するかどうか、メモリ管理の問題です。、そのJavaランタイムを実行する準備ができて調べることによって、バイトコードに一度。

3.基本的なセキュリティアーキテクチャ

Javaプラットフォームは、暗号化、公開鍵インフラストラクチャー、認証、安全な通信、およびアクセス制御など、セキュリティの主な範囲の多くをカバーするためにAPIのセットを定義します。APIは、簡単にアプリケーションにセキュリティを統合する開発者を容易にすることができます。あなたは、達成するために設計された次のルールを使用することができます。

  • 達成独立
    アプリケーションは、セキュリティを実現する必要はありませんが、セキュリティサービスは、Javaプラットフォームから呼び出すことができます。標準インタフェースを介してJavaプラットフォームに組み込まれているセキュリティ・サービス・プロバイダー(下記参照)に実装され、。アプリケーションは、セキュリティ機能を実装するために複数の独立したプロバイダに依存してもよいです。
  • 相互運用性の
    アプリケーション間のプロバイダは、相互運用が可能です。アプリケーションは、指定されたプロバイダにバインドされることはありません、プロバイダがアプリケーションにバインドされることはありません。
  • アルゴリズムの拡張
    Javaプラットフォームは、共通の基本的なセキュリティ・サービス・プロバイダーのシリーズを達成するためにビルトインの数を含んでいます。ただし、一部のプログラムはまだ新興の特許またはサービスを実施していない標準規格に依拠することができます。Javaプラットフォームは、サービスプロバイダのカスタム実装のインストールをサポートしています。

    セキュリティプロバイダ

    Javaのjava.security.Providerプロバイダクラスは、Javaプラットフォームのセキュリティの概念をカプセル化します。プロバイダーの名前を指定し、彼が実現したセキュリティサービスを示します。プロバイダ同時に複数の優先順位リストとして安全かつ円滑に、使用することができます。セキュリティサービスが呼び出されると、Prividerの最高権威は、サービスが選択されます。
    基になるプロバイダーからのセキュリティサービスを得るために、関連するgetInstanceメソッドに依存するアプリケーション。例えば、サービスプロバイダに代わって情報の要約を作成するには、このタイプを提供しています。アプリケーションは、SHA-256のような指定されたダイジェストアルゴリズムを実装する情報を取得するgetInstanceメソッドjava.security.MessageDigestのクラスを呼び出します。
MessageDigest md = MessageDigest.getInstance("SHA-256");

指定されたプロバイダ名として、次のようにプログラムが選択的に、達成するために指定されたプロバイダを呼び出すことができます。

MessageDigest md = MessageDigest.getInstance("SHA-256", "ProviderC");

プロバイダ名を指定せずにSHA-256 algorithemを要求するアプリケーションを示す図
图1つのプロバイダ查找
特定のプロバイダからSHA-256 algorithemを要求するアプリケーションを示す図

図2指定されたプロバイダの
図要求手順は、SHA-256メッセージダイジェストアルゴリズムを実装について説明しました。2枚の画像は3つのプロバイダがメッセージダイジェストアルゴリズムを実装しています。プロバイダは、参照することにより、左から右へ順番に配置されています。図1では、アプリケーションは、指定されたプロバイダ名なしSHA-256アルゴリズムを要求します。
プロバイダは、アルゴリズムの最初privider・プロバイダBの実装が返されます見つけるために、見つけるための参照のためになります。図2において、アプリケーションは、SHA-256アルゴリズムを要求し、対応privider-ProviderCパラメータを有します。この場合には、指定されたプロバイダが返す
優先度の高いプロバイダBはまた、SHA-256の実装を提供する場合であっても。

ファイルの場所(ファイルの場所)

プロバイダの設定を含めて、この資料に記載Javaセキュリティの特定の態様は、セキュリティプロパティを設定することでカスタマイズすることができます。あなたはまだ、デフォルトでは、このファイルはでJava™ランタイム環境(JRE)のjava.securityファイルのlib / securityディレクトリのディレクトリをインストールされているセキュリティプロパティファイルでセキュリティプロパティを設定することができます。動的なセキュリティ属性は、セキュリティクラスの呼び出し(java.securityパッケージ内)は、適切な方法で提供することができます。
それはここのツールであり、インストール〜JRE JREを表し〜JRE / binディレクトリを、コマンドに言及しました。に〜のjre / libに/セキュリティ位置セクション5で述べたcacertsファイル。

4.暗号化(暗号化)

Java暗号化アーキテクチャーは、暗号化フレームワークを開発したカバアクセスプラットフォームです。それは含めて暗号化サービスの広い範囲を、含まれています。

  • メッセージダイジェストアルゴリズム
  • デジタル署名アルゴリズム
  • 対称バルク暗号化
  • 対称ストリーム暗号化
  • 非対称暗号化
  • パスワードベースの暗号化(PBE)
  • 楕円曲線暗号(ECC)
  • 鍵合意アルゴリズム
  • 鍵ジェネレータ
  • メッセージ認証コード(MAC)
  • (擬似)乱数発生器

歴史的な理由により、内部に二つの異なるパッケージでの暗号化APIへ。制御口を含むjava.securityパッケージ(署名とするMessageDigestなど)を限定されるものではありません。管理限界をエクスポートの対象持つjavax.crypto袋口クラス(暗号とするKeyAgreement)。
暗号化は、プロバイダベースのインターフェース、相互運用可能な実装を可能にする暗号化の複数です。いくつかのプロバイダは、本当に別のハードウェアトークンに基づいて動作を実行することができる、ソフトウェアで暗号化操作を行うことができます。輸出管理プロバイダサービスを提供することは、デジタル署名されなければなりません。
Javaのような内蔵プロバイダ共通暗号アルゴリズム、多くの提供:等RSA、DSA、ECDSA署名アルゴリズムを、DES、AES、ARCFOURおよび他の暗号化アルゴリズム、MD5、SHA-1、SHA -256 メッセージは、アルゴリズム、等、並びにのDiffie-ダイジェストHellman鍵合意アルゴリズムなどとECDH。

ブログのロック解除コードを取得するには、リンクをクリックして

おすすめ

転載: www.cnblogs.com/lixiaobao/p/11693689.html