デジタル署名と証明書
デジタル署名が真正性を証明する仕組みと、X.509証明書がアイデンティティと鍵を結び付ける方法を理解します。
「デジタル署名と証明書」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
デジタル署名とは
デジタル署名は、ドキュメントやメッセージが特定の秘密鍵の保有者によって作成され、変更されていないことを証明します。手書きの署名とは異なり、内容と数学的に結び付いているため、少しでも変更すると署名は無効になります。
署名の仕組み
署名の手順:
- ドキュメントをハッシュ化します:
H = SHA256(document) - 秘密鍵でハッシュを暗号化します:
sig = RSA_encrypt(H, private_key) - 署名をドキュメントに付加します
検証:sig を公開鍵で復号し、ハッシュを再計算して比較します。
ECDSA と EdDSA
最新の署名アルゴリズム:
- ECDSA(P-256 使用)— TLS 証明書や Bitcoin で使用されます
- Ed25519(EdDSA)— より高速で単純であり、署名ごとの乱数に起因する脆弱性がなく、SSH や Signal で使用されます
新しいアプリケーションでは Ed25519 を推奨します。
証明書とは
デジタル証明書(X.509)は、公開鍵と識別情報を結び付けます。証明書には、サブジェクト名、公開鍵、有効期間、発行者、CA のデジタル署名が含まれます。HTTPS サイトにアクセスすると、サーバーは自身の証明書を提示して身元を証明します。
認証局(CA)
認証局(CA)は、申請者の身元を確認した後に証明書へ署名する、信頼された組織です。ブラウザーと OS の信頼ストアには、ルート CA 証明書が含まれています。信頼チェーンは、ルート CA → 中間 CA → エンドエンティティ証明書という構成になります。
Let's Encrypt と無料証明書
Let's Encrypt は、無料で利用できる自動化された認証局です。ACME プロトコルによる自動更新が可能な、有効期間 90 日間のドメイン認証(DV)証明書を発行します。2015 年以降、HTTPS の普及を大幅に促進してきました。
certbot --nginx -d example.com -d www.example.com
# Auto-renewal via cron or systemd timer証明書の種類
証明書の検証レベル:
- DV(Domain Validated) — ドメインの管理権限のみを証明します
- OV(Organization Validated) — 組織が実在することを確認します
- EV(Extended Validation) — 厳格な身元確認を行います(緑色のアドレスバーは現在、ブラウザーでは非推奨です)
証明書の失効
侵害された証明書は失効させる必要があります:
- CRL(Certificate Revocation List) — 失効したシリアル番号のダウンロード可能な一覧
- OCSP(Online Certificate Status Protocol) — 単一の証明書をリアルタイムで確認する方式
- OCSP Stapling — サーバーが CA 署名済みの OCSP 応答を TLS ハンドシェイクに添付する方式
Certificate Transparency(CT)
Certificate Transparency ログは、発行されたすべての証明書を記録した公開の追記専用記録です。ブラウザーは、証明書に CT の証明が含まれていることを要求します。これにより、誤って発行された証明書を数時間以内に検出できます。検索:crt.sh
curl "https://crt.sh/?q=example.com&output=json" | python3 -m json.toolコード署名
ソフトウェアの発行者は、コード署名証明書を使って実行可能ファイルに署名します。OSは実行前に署名を検証します。これにより、改ざんされたバイナリが気付かれないまま実行されるのを防ぎます。macOS GatekeeperとWindows SmartScreenは、コード署名に関するポリシーを適用します。
証明書ピンニング
Certificate pinningは、アプリケーションに期待する証明書または公開鍵をハードコードします。不正な認証局(CA)が偽造証明書を発行した場合でも、ピン留めされたアプリはそれを拒否します。モバイルアプリや高セキュリティサービスで使用されます。更新が難しいため、慎重に使用してください。
クイックチェック:証明書
特定の証明書が失効しているかどうかを、ブラウザーがリアルタイムで確認できる仕組みはどれですか?
レッスンのまとめ
デジタル署名は、秘密鍵を使って真正性と完全性を証明します。証明書は、認証局によって署名され、公開鍵と身元情報を結び付けます。Let's Encryptは無料のDV証明書を提供します。失効確認にはCRLまたはOCSPを使用します。Certificate Transparencyのログは、不正発行の検出に役立ちます。Ed25519は、現代的な署名アルゴリズムとして最もよく選ばれています。
よくある質問
「デジタル署名と証明書」レッスンは無料ですか?
はい。「デジタル署名と証明書」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「デジタル署名と証明書」で何を学びますか?
デジタル署名が真正性を証明する仕組みと、X.509証明書がアイデンティティと鍵を結び付ける方法を理解します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「デジタル署名と証明書」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。