次の方法で共有


暗号技術

この記事では、WinUI アプリで使用できる暗号化機能の概要について説明します。 特定のタスクの詳細については、この記事の最後にある表を参照してください。

用語

次の用語は、暗号化と公開キー基盤 (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

次の操作を可能にするクラスが含まれています。

  • 静的データを非同期で暗号化および復号化する
  • データ ストリームを非同期で暗号化および復号化する

暗号化と 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 機能セット)

さらに、マニフェストを使用して、次のアクションを実行できます。

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

詳細な記事

次の記事では、セキュリティ シナリオの詳細について説明します。

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