暗号化Cryptography

この記事では、ユニバーサル Windows プラットフォーム (UWP) アプリで利用できる暗号化の機能の概要を説明します。The article provides an overview of the cryptography features available to Universal Windows Platform (UWP) apps. 特定のタスクについて詳しくは、この記事の最後にある表をご覧ください。For detailed information on particular tasks, see the table at the end of this article.

用語Terminology

暗号化と公開キー基盤 (PKI) でよく使われる用語を以下に示します。The following terminology is commonly used in cryptography and public key infrastructure (PKI).

用語Term 説明Description
暗号化Encryption 暗号化アルゴリズムとキーを使ってデータを変換するプロセス。The process of transforming data by using a cryptographic algorithm and key. 変換されたデータは、同じアルゴリズムと、同じ (対称) または関連する (公開) キーを使った場合のみ回復できます。The transformed data can be recovered only by using the same algorithm and the same (symmetric) or related (public) key.
暗号化解除Decryption 暗号化されたデータを元の形式に戻すプロセス。The process of returning encrypted data to its original form.
プレーンテキストPlaintext 当初は暗号化されていないテキスト メッセージを表しました。Originally referred to an unencrypted text message. 現在は、すべての暗号化されていないデータを表します。Currently refers to any unencrypted data.
暗号化テキストCiphertext 当初は暗号化された読み取り不可能なテキスト メッセージを表しました。Originally referred to an encrypted, and therefore unreadable, text message. 現在はすべての暗号化データを表します。Currently refers to any encrypted data.
ハッシュHashing 可変長データを、通常それより小さい値の固定長データに変換するプロセス。The process of converting variable length data into a fixed length, typically smaller, value. ハッシュを比較して、2 つ以上のデータが同じものであることを合理的に保証できます。By comparing hashes, you can obtain reasonable assurance that two or more data are the same.
署名Signature データの送信者を認証するために、または、送信中にデータが改ざんされていないことを確認するために使われるデジタル データの暗号化されたハッシュ。Encrypted hash of digital data typically used to authenticate the sender of the data or verify that the data was not tampered with during transmission.
アルゴリズムAlgorithm データを暗号化するための詳しい手順。A step-by-step procedure for encrypting data.
KeyKey データを暗号化および暗号化解除するために、暗号化アルゴリズムへの入力に使われる乱数または疑似乱数。A random or pseudorandom number used as input to a cryptographic algorithm to encrypt and decrypt data.
対称キーの暗号化Symmetric Key Cryptography 暗号化と暗号化解除に同じキーを使う暗号化。Cryptography in which encryption and decryption use the same key. これは、秘密鍵の暗号化とも呼ばれます。This is also known as secret key cryptography.
非対称キーの暗号化Asymmetric Key Cryptography 暗号化と暗号化解除に異なる、数学的に関連性のあるキーを使う暗号化。Cryptography in which encryption and decryption use a different but mathematically related key. これは、公開キーの暗号化とも呼ばれます。This is also called public key cryptography.
[エンコード]Encoding 証明書などのデジタル メッセージをネットワーク経由で送るためにエンコードするプロセス。The process of encoding digital messages, including certificates, for transport across a network.
アルゴリズム プロバイダーAlgorithm Provider 暗号化アルゴリズムを実装する DLL。A DLL that implements a cryptographic algorithm.
キー ストレージ プロバイダーKey Storage Provider キー マテリアルを格納するコンテナー。A container for storing key material. 現在、キーはソフトウェア、スマート カード、またはトラステッド プラットフォーム モジュール (TPM) に格納できます。Currently, keys can be stored in software, smart cards, or the trusted platform module (TPM).
X.509 証明書X.509 Certificate 個人、システム、またはエンティティをその他の関係者に識別させるために、通常、証明機関によって発行されるデジタル ドキュメント。A digital document, typically issued by a certification authority, to verify the identity of an individual, system, or entity to other interested parties.

 

名前空間Namespaces

アプリでは、以下の名前空間を使うことができます。The following namespaces are available for use in apps.

Windows.Security.CryptographyWindows.Security.Cryptography

CryptographicBuffer クラスと静的メソッドが含まれています。これらによって以下のことが可能になります。Contains the CryptographicBuffer class and static methods that enable you to:

  • データから文字列への変換と文字列からデータへの変換Convert data to and from strings
  • データからバイト配列への変換とバイト配列からデータへの変換Convert data to and from byte arrays
  • ネットワーク転送のためのメッセージのエンコードEncode messages for network transport
  • 転送後のメッセージのデコードDecode messages after transport

Windows.Security.Cryptography.CertificatesWindows.Security.Cryptography.Certificates

クラス、インターフェイス、列挙型が含まれています。これらによって以下のことが可能になります。Contains classes, interfaces, and enumeration types that enable you to:

  • 証明書要求の作成Create a certificate request
  • 証明書応答のインストールInstall a certificate response
  • PFX ファイルでの証明書のインポートImport a certificate in a PFX file
  • 証明書要求プロパティの指定と取得Specify and retrieve certificate request properties

Windows.Security.Cryptography.CoreWindows.Security.Cryptography.Core

クラスと列挙型が含まれています、これらによって以下のことが可能になります。Contains classes and enumeration types that enable you to:

  • データの暗号化と暗号化解除Encrypt and decrypt data
  • データのハッシュHash data
  • データへの署名と署名の確認Sign data and verify signatures
  • キーの作成、インポート、エクスポートCreate, import, and export keys
  • 非対称キー アルゴリズム プロバイダーとの連携Work with asymmetric key algorithm providers
  • 対称キー アルゴリズム プロバイダーとの連携Work with symmetric key algorithm providers
  • ハッシュ アルゴリズム プロバイダーとの連携Work with hash algorithm providers
  • マシン認証コード (MAC) アルゴリズム プロバイダーとの連携Work with machine authentication code (MAC) algorithm providers
  • キー派性アルゴリズム プロバイダーとの連携Work with key derivation algorithm providers

Windows.Security.Cryptography.DataProtectionWindows.Security.Cryptography.DataProtection

クラスが含まれています。これにより、以下のことが可能になります。Contains classes that enable you to:

  • 静的データの非同期の暗号化と暗号化解除Asynchronously encrypt and decrypt static data
  • データ ストリームの非同期の暗号化と暗号化解除Asynchronously encrypt and decrypt data streams

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

アプリで利用可能な簡素化されたアプリケーション プログラミング インターフェイスにより、次の暗号化機能と公開キー基盤 (PKI) 機能が有効になります。The simplified application programming interface available for apps enables the following cryptographic and public key infrastructure (PKI) capabilities.

暗号化のサポートCryptography support

次の暗号化タスクを実行できます。You can perform the following cryptographic tasks. 詳しくは、「Windows.Security.Cryptography.Core 名前空間」をご覧ください。For more information, see the Windows.Security.Cryptography.Core namespace.

  • 対称キーの作成Create symmetric keys
  • 対称暗号化の実行Perform symmetric encryption
  • 非対称キーの作成Create asymmetric keys
  • 非対称暗号化の実行Perform asymmetric encryption
  • パスワード ベースのキー派性Derive password based keys
  • メッセージ認証コード (MAC) の作成Create message authentication codes (MACs)
  • コンテンツのハッシュHash content
  • コンテンツへのデジタル署名Digitally sign content

SDK では、パスワードベースのデータ保護を行うのための簡素化されたインターフェイスも提供されます。The SDK also provides a simplified interface for password-based data protection. これを使って、次のタスクを実行できます。You can use this to perform the following tasks. 詳しくは、「Windows.Security.Cryptography.DataProtection 名前空間」をご覧ください。For more information, see the Windows.Security.Cryptography.DataProtection namespace.

  • 静的データの非同期保護Asynchronous protection of static data
  • データ ストリームの非同期保護Asynchronous protection of a data stream

暗号化のサポートEncoding support

アプリでは、暗号化されたデータをネットワーク経由で送るためにエンコードし、ネットワーク ソースから受け取ったデータをデコードすることができます。An app can encode cryptographic data for transmission across a network and decode data received from a network source. 詳しくは、「Windows.Security.Cryptography 名前空間」をご覧ください。For more information, see the static methods available in the Windows.Security.Cryptography namespace.

PKI サポートPKI support

アプリは次の PKI タスクを実行できます。Apps can perform the following PKI tasks. 詳しくは、「Windows.Security.Cryptography.Certificates 名前空間」をご覧ください。For more information, see the Windows.Security.Cryptography.Certificates namespace.

  • 証明書を作成するCreate a certificate
  • 自己署名証明書を作成するCreate a self-signed certificate
  • 証明書応答のインストールInstall a certificate response
  • 証明書を PFX 形式でインポートするImport a certificate in PFX format
  • スマート カード証明書とキーを使う (sharedUserCertificates 機能設定)Use smart card certificates and keys (sharedUserCertificates capabilities set)
  • ユーザーの MY ストアから証明書を使う (sharedUserCertificates 機能設定)Use certificates from the user MY store (sharedUserCertificates capabilities set)

さらに、マニフェストを使って次の操作を実行できます。Additionally, you can use the manifest to perform the following actions:

  • アプリケーションごとに信頼されたルート証明書を指定するSpecify per application trusted root certificates
  • アプリケーションごとにピア信頼証明書を指定するSpecify per application peer trusted certificates
  • システムの信頼からの継承を明示的に無効にするExplicitly disable inheritance from system trust
  • 証明書の選択条件を指定するSpecify the certificate selection criteria
    • ハードウェアの証明書のみHardware certificates only
    • 指定した一連の発行元の証明書Certificates that chain through a specified set of issuers
    • 証明書をアプリケーション ストアから自動的に選ぶAutomatically select a certificate from the application store

詳細記事Detailed articles

次の記事では、セキュリティのシナリオについての詳細が示されています。The following articles provide more detail on security scenarios:

トピックTopic 説明Description
証明書Certificates この記事では、UWP アプリでの証明書の利用について説明します。This article discusses the use of certificates in UWP apps. デジタル証明書は、公開キーを個人、コンピューター、組織にバインドするために、公開キーの暗号化で使われます。Digital certificates are used in public key cryptography to bind a public key to a person, computer, or organization. バインドされた識別情報は、あるエンティティを別のエンティティに対して認証する際に最も頻繁に使われます。The bound identities are most often used to authenticate one entity to another. たとえば、証明書は、Web サーバーをユーザーに対して、また、ユーザーを Web サーバーに対して認証するためによく使われます。For example, certificates are often used to authenticate a web server to a user and a user to a web server. 証明書要求を作成し、発行された証明書をインストールまたはインポートすることができます。You can create certificate requests and install or import issued certificates. また、証明書階層で証明書を登録することもできます。You can also enroll a certificate in a certificate hierarchy.
暗号化キーCryptographic keys この記事では、標準のキー派生関数を使ってキーを派生させる方法、および対称キーと非対称キーを使ってコンテンツを暗号化する方法について説明します。This article shows how to use standard key derivation functions to derive keys and how to encrypt content using symmetric and asymmetric keys.
データ保護Data protection この記事では、Windows.Security.Cryptography.DataProtection 名前空間の DataProtectionProvider クラスを使って、UWP アプリでデジタル データの暗号化と暗号化解除を行う方法について説明します。This article explains how to use the DataProtectionProvider class in the Windows.Security.Cryptography.DataProtection namespace to encrypt and decrypt digital data in a UWP app.
MAC、ハッシュ、および署名MACs, hashes, and signatures この記事では、メッセージ認証コード (MAC)、ハッシュ、署名を UWP アプリで使って、メッセージの改ざんを検出する方法について説明します。This article discusses how message authentication codes (MACs), hashes, and signatures can be used in UWP apps to detect message tampering.
暗号化に関する輸出制限の順守Export restrictions on cryptography アプリでの暗号化が、Microsoft Store に登録されない可能性がある方法で使われていないかどうかを判断する場合に、この情報を利用してください。Use this info to determine if your app uses cryptography in a way that might prevent it from being listed in the Microsoft Store.
一般的な暗号化タスクCommon cryptography tasks これらの記事では、乱数の生成、バッファーの比較、文字列とバイナリ データの間の変換、バイト配列間のコピー、データのエンコードとデコードなど、一般的な UWP 暗号化タスクのコード例が示されています。These articles provide example code for common UWP cryptography tasks, such as creating random numbers, comparing buffers, converting between strings and binary data, copying to and from byte arrays, and encoding and decoding data.