暗号化

この記事では、ユニバーサル Windows プラットフォーム (UWP) アプリで利用できる暗号化の機能の概要を説明します。 特定のタスクについて詳しくは、この記事の最後にある表をご覧ください。

用語

暗号化と公開キー基盤 (PKI) でよく使われる用語を以下に示します。

項目 説明
暗号化 暗号化アルゴリズムとキーを使ってデータを変換するプロセス。 変換されたデータは、同じアルゴリズムと、同じ (対称) または関連する (公開) キーを使った場合のみ回復できます。
暗号化の解除 暗号化されたデータを元の形式に戻すプロセス。
プレーンテキスト 当初は暗号化されていないテキスト メッセージを表しました。 現在は、すべての暗号化されていないデータを表します。
暗号化テキスト 当初は暗号化された読み取り不可能なテキスト メッセージを表しました。 現在はすべての暗号化データを表します。
ハッシュ 可変長データを、通常それより小さい値の固定長データに変換するプロセス。 ハッシュを比較して、2 つ以上のデータが同じものであることを合理的に保証できます。
署名 データの送信者を認証するために、または、送信中にデータが改ざんされていないことを確認するために使われるデジタル データの暗号化されたハッシュ。
アルゴリズム データを暗号化するための詳しい手順。
キー データを暗号化および暗号化解除するために、暗号化アルゴリズムへの入力に使われる乱数または疑似乱数。
対称キーの暗号化 暗号化と暗号化解除に同じキーを使う暗号化。 これは、秘密鍵の暗号化とも呼ばれます。
非対称キーの暗号化 暗号化と暗号化解除に異なる、数学的に関連性のあるキーを使う暗号化。 これは、公開キーの暗号化とも呼ばれます。
Encoding 証明書などのデジタル メッセージをネットワーク経由で送るためにエンコードするプロセス。
アルゴリズム プロバイダー 暗号化アルゴリズムを実装する DLL。
キー格納プロバイダー キー マテリアルを格納するコンテナー。 現在、キーはソフトウェア、スマート カード、またはトラステッド プラットフォーム モジュール (TPM) に格納できます。
X.509 証明書 個人、システム、またはエンティティをその他の関係者に識別させるために、通常、証明機関によって発行されるデジタル ドキュメント。

 

名前空間

アプリでは、以下の名前空間を使うことができます。

Windows.Security.Cryptography

CryptographicBuffer クラスと静的メソッドが含まれています。これらによって以下のことが可能になります。

  • データから文字列への変換と文字列からデータへの変換
  • データからバイト配列への変換とバイト配列からデータへの変換
  • ネットワーク転送のためのメッセージのエンコード
  • 転送後のメッセージのデコード

Windows.Security.Cryptography.Certificates

クラス、インターフェイス、列挙型が含まれています。これらによって以下のことが可能になります。

  • 証明書要求の作成
  • 証明書応答のインストール
  • PFX ファイルでの証明書のインポート
  • 証明書要求プロパティの指定と取得

Windows.Security.Cryptography.Core

クラスと列挙型が含まれています、これらによって以下のことが可能になります。

  • データの暗号化と暗号化解除
  • データのハッシュ
  • データへの署名と署名の確認
  • キーの作成、インポート、エクスポート
  • 非対称キー アルゴリズム プロバイダーとの連携
  • 対称キー アルゴリズム プロバイダーとの連携
  • ハッシュ アルゴリズム プロバイダーとの連携
  • マシン認証コード (MAC) アルゴリズム プロバイダーとの連携
  • キー派性アルゴリズム プロバイダーとの連携

Windows.Security.Cryptography.DataProtection

クラスが含まれています。これにより、以下のことが可能になります。

  • 静的データの非同期の暗号化と暗号化解除
  • データ ストリームの非同期の暗号化と暗号化解除

Crypto と PKI アプリケーションの機能

アプリで利用可能な簡素化されたアプリケーション プログラミング インターフェイスにより、次の暗号化機能と公開キー基盤 (PKI) 機能が有効になります。

暗号化のサポート

次の暗号化タスクを実行できます。 詳しくは、「Windows.Security.Cryptography.Core 名前空間」をご覧ください。

  • 対称キーの作成
  • 対称暗号化の実行
  • 非対称キーの作成
  • 非対称暗号化の実行
  • パスワード ベースのキー派性
  • メッセージ認証コード (MAC) の作成
  • コンテンツのハッシュ
  • コンテンツへのデジタル署名

SDK では、パスワードベースのデータ保護を行うのための簡素化されたインターフェイスも提供されます。 これを使って、次のタスクを実行できます。 詳しくは、「Windows.Security.Cryptography.DataProtection 名前空間」をご覧ください。

  • 静的データの非同期保護
  • データ ストリームの非同期保護

暗号化のサポート

アプリでは、暗号化されたデータをネットワーク経由で送るためにエンコードし、ネットワーク ソースから受け取ったデータをデコードすることができます。 詳しくは、「Windows.Security.Cryptography 名前空間」をご覧ください。

PKI サポート

アプリは次の PKI タスクを実行できます。 詳しくは、「Windows.Security.Cryptography.Certificates 名前空間」をご覧ください。

  • 証明書を作成する
  • 自己署名証明書の作成
  • 証明書応答のインストール
  • 証明書を PFX 形式でインポートする
  • スマート カード証明書とキーを使う (sharedUserCertificates 機能設定)
  • ユーザーの MY ストアから証明書を使う (sharedUserCertificates 機能設定)

さらに、マニフェストを使って次の操作を実行できます。

  • アプリケーションごとに信頼されたルート証明書を指定する
  • アプリケーションごとにピア信頼証明書を指定する
  • システムの信頼からの継承を明示的に無効にする
  • 証明書の選択条件を指定する
    • ハードウェアの証明書のみ
    • 指定した一連の発行元の証明書
    • 証明書をアプリケーション ストアから自動的に選ぶ

詳細記事

次の記事では、セキュリティのシナリオについての詳細が示されています。

トピック 説明
証明書 この記事では、UWP アプリでの証明書の利用について説明します。 デジタル証明書は、公開キーを個人、コンピューター、組織にバインドするために、公開キーの暗号化で使われます。 バインドされた識別情報は、あるエンティティを別のエンティティに対して認証する際に最も頻繁に使われます。 たとえば、証明書は、Web サーバーをユーザーに対して、また、ユーザーを Web サーバーに対して認証するためによく使われます。 証明書要求を作成し、発行された証明書をインストールまたはインポートすることができます。 また、証明書階層で証明書を登録することもできます。
暗号化キー この記事では、標準のキー派生関数を使ってキーを派生させる方法、および対称キーと非対称キーを使ってコンテンツを暗号化する方法について説明します。
データ保護 この記事では、Windows.Security.Cryptography.DataProtection 名前空間の DataProtectionProvider クラスを使って、UWP アプリでデジタル データの暗号化と暗号化解除を行う方法について説明します。
MAC、ハッシュ、および署名 この記事では、メッセージ認証コード (MAC)、ハッシュ、署名を UWP アプリで使って、メッセージの改ざんを検出する方法について説明します。
暗号化に関する輸出制限の順守 アプリでの暗号化が、Microsoft Store に登録されない可能性がある方法で使われていないかどうかを判断する場合に、この情報を利用してください。
一般的な暗号化タスク これらの記事では、乱数の生成、バッファーの比較、文字列とバイナリ データの間の変換、バイト配列間のコピー、データのエンコードとデコードなど、一般的な UWP 暗号化タスクのコード例が示されています。