コード署名
すべてのEPPlusリリースは、GlobalSignからEPPlus Software ABに発行されたコード署名証明書でデジタル署名されています。これはすべての分散アセンブリおよびNuGetパッケージ自体に適用され、使用しているものが当社によって構築・公開されたことを独立して検証できるようにします。
なぜ私たちがリリースに署名するのか
ソフトウェアサプライチェーン攻撃――攻撃者がパブリッシャーとエンドユーザーの間でパッケージを改ざんする行為――は、ますます大きな脅威となっています。デジタル署名は、あなたがダウンロードしたファイルが私たちが構築し公開したものと同一であることを暗号学的に保証します。また、パブリッシャーの身元も確認します。署名は信頼できる証明書機関によってEPPlus Software ABに発行された証明書の所有者によってのみ作成され得ます。署名後にファイルが改変されたり、当社が署名していなければ、検証は失敗します。
署名されているもの
EPPlusリリースに含まれるすべてのアセンブリは、サポートされているすべてのターゲットフレームワーク間で署名されています。NuGetパッケージはパッケージレベルの署名として別途署名され、パッケージの内容全体をカバーします。
特定のリリースに含まれるアセンブリとターゲットフレームワークの正確なセットは、そのリリースの ソフトウェア材料表 に記載されています。
証明書
署名証明書は、グローバルに信頼されている認証機関であるGlobalSignによって発行されます。証明書はハードウェアでバックアップされた鍵ストアに安全に保存され、自動化されたリリースパイプラインの一部としてのみアクセスされます。秘密鍵は決して安全な環境から離れません。
| 配備先 | EPPlus Software AB |
|---|---|
| 発行元 | GlobalSign GCC R45 CodeSigning CA 2020 |
| ダイジェストアルゴリズム | SHA-256 |
| タイムスタンプの権限 | GlobalSign TSA for Advanced - G4 |
すべての署名にはGlobalSignからの信頼できるタイムスタンプが含まれています。これにより、署名証明書が更新された後も、証明書の有効期間中に署名が作成された場合、署名が検証可能であることが保証されます。上記の証明書詳細は現在の署名証明書を反映しており、発行者やタイムスタンプ認証機関は更新時に変更される場合があります。
NuGetリポジトリのカウンターシグネチャー
NuGet.org 自身の著者署名に加え、パッケージが公開されると自動的にリポジトリのカウンターシグネチャを追加します。このカウンターシグネチャーは NuGet.org によって発行され、EPPlusパッケージの登録所有者によって NuGet.org 年にアップロードされたことを確認できます。パッケージを検証すると、EPPlus Software ABの著者署名と NuGet.org のリポジトリのコピー署名の両方が表示されます。
EPPlusパッケージの登録所有者は独立して確認できます。 nuget.org/packages/EPPlus で。
検証が失敗した場合
検証失敗とは、署名後にファイルが改変されている、署名が欠落している、または証明書チェーンが信用できないことを意味します。検証に失敗するパッケージやアセンブリは使用しないでください。公開されたEPPlusリリースが改ざんされた疑いがある場合は、直ちに報告してください。
お問い合わせ方法については、脆弱性 開示ポリシー をご覧ください。
ご自身でリリースを確認しましょう
標準ツールを使えば、EPPlusリリースの署名を独立して検証でき、私たちに頼る必要はありません。
NuGetパッケージの検証
EPPlusのリリースを最も簡単に検証する方法は、.NET CLIを使ってNuGetパッケージ署名を確認することです。これはWindows、Linux、macOSで動作します。
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
認証されたパッケージは、EPPlus Software ABの著者署名と NuGet.org のリポジトリのカウンターシグネーションの両方を表示します。
X.509 certificate chain validation will use the default trust store selected by .NET for code signing.
X.509 certificate chain validation will use the default trust store selected by .NET for timestamping.
Verifying EPPlus.<version>
Signature Hash Algorithm: SHA256
Signature type: Author
Verifying the author primary signature with certificate:
Subject Name: CN=EPPlus Software AB, O=EPPlus Software AB, L=Stockholm, C=SE
Issued by: CN=GlobalSign GCC R45 CodeSigning CA 2020, O=GlobalSign nv-sa, C=BE
Signature type: Repository
Service index: https://api.nuget.org/v3/index.json
Owners: EPPlusSoftware, jankallman, swmal
Successfully verified package 'EPPlus.<version>'.
アセンブリの検証
Windowsでは、個々のアセンブリもPowerShellを使って直接検証できます。これにより、暗号署名と証明書の信頼チェーンの両方がWindowsの信頼ストアで検証されます。
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
有効な署名にはステータス:有効と、GlobalSignによってEPPlus Software ABに発行された署名証明書が表示されます。
SignerCertificate : [Subject]
CN=EPPlus Software AB, O=EPPlus Software AB, L=Stockholm, C=SE
[Issuer]
CN=GlobalSign GCC R45 CodeSigning CA 2020, O=GlobalSign nv-sa, C=BE
...
Status : Valid
StatusMessage : Signature verified.
SignatureType : Authenticode
PowerShellを使ったアセンブリレベルの検証はWindowsでのみ利用可能です。LinuxおよびmacOSでは、上記のdotnet nuget verifyを使ってNuGetパッケージを検証することを推奨します。これはすべてのプラットフォームで動作します。