PowerShellの暗号化サポートのイントロダクション
PowerShellは、スクリプトで暗号化を使用するためのcmdletやモジュールを提供しています。このチュートリアルでは、PowerShellの暗号化サポートの基本的なことを学び、データを暗号化・復号化する方法を示します。
前提
このチュートリアルに進む前に、以下を確認してください。
- PowerShell 7以降: 暗号化cmdletは、PowerShell 7以降でしか使用できません。
System.Security.Cryptographyモジュール: このモジュールは、PowerShell 7と共にインストールされています。Earlier version of PowerShellを使用している場合は、手動でインストールする必要があります。
モジュールのインストール
System.Security.Cryptography モジュールがインストールされていない場合は、以下のコマンドを実行してください。
Install-Module -Name System.Security.Cryptography
PowerShellでの暗号化
PowerShellは、以下のようなcmdletを提供しています。
Get-EncryptedHash:文字列やファイルに対する暗号化ハッシュを生成します。Get-SignedHash:文字列やファイルに対するデジタルサインatureを生成します。New-SymmetricKey、Set-SymmetricKey、ConvertTo-SecureString:シンボリック暗号化キーを作成・設定・暗号化を行うcmdletです。
Power Shellでの暗号化
まず、あるサンプルデータを暗号化してみます。ConvertTo-SecureString cmdletを使用して、平文文字列を暗号化した文字列に変換します。
$plaintext = "Hello, World!"
$encrypted = ConvertTo-SecureString -String $plaintext -Key (New-SymmetricKey).Key
この例では:
- 平文文字列
Hello, World!を定義します。 - 新しいシンボリック暗号化キーを作成し、
New-SymmetricKeycmdletを使用します。 - 平文文字列と暗号化キーを
ConvertTo-SecureStringcmdletに渡して、データを暗号化します。
Power Shellでの復号化
現在、暗号化されたデータを復号化してみます。
$decrypted = ConvertFrom-SecureString -SecureString $encrypted -Key (New-SymmetricKey).Key
この例では:
- 暗号化された文字列を
ConvertFrom-SecureStringcmdletに渡します。 - 元の暗号化キーを使用して、データを復号化します。
証明書を使用した署名と検証
PowerShellは、デジタル証明書に関するcmdletも提供しています。
New-SignedHash:文字列やファイルに対するデジタルサインatureを生成します。Verify-SignedHash:署名された文字列やファイルの署名を検証します。
以下では、新しい証明書を作成し、その証明書を使用してデータを署名してみます。
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -Path "path\to\your\certificate.pfx" -Password (ConvertTo-SecureString -String "mypassword" -AsPlainText)
$sigHash = New-SignedHash -String "Hello, World!" -Certificate $cert
この例では:
- 新しい
X509Certificate2オブジェクトを作成し、証明書ファイルから読み込みます。 New-SignedHashcmdletを使用して、文字列"Hello, World!"を署名します。
署名されたハッシュの検証
現在、署名されたハッシュを検証してみます。
$verified = Verify-SignedHash -SignedHash $sigHash -Certificate $cert
この例では:
- 署名されたハッシュと証明書を
Verify-SignedHashcmdletに渡します。 - cmdletが署名の検証を行い、署名が有効かどうかを boolean 値で返します。
結論
PowerShellは、暗号化に関するcmdletやモジュールを提供しています。このチュートリアルでは、PowerShellの暗号化サポートの基本的なことを学び、暗号化と復号化、署名と検証の方法を示しました。スクリプトで暗号化を使用することができます。
追加リソース
PowerShellの暗号化サポートに関する情報は、以下のリソースで確認できます。
- Microsoft documentation: PowerShell Cryptography Cmdlets
- PowerShell Gallery: System.Security.Cryptography module
このチュートリアルは、PowerShellの暗号化サポートを学ぶための良好なスタート地点です。