デジタル署名 - 暗号化全般

暗号化全般 | IT用語集

デジタル署名とは

デジタル署名(Digital Signature)は、電子文書の送信者の身元確認(認証)と、内容の改ざん検知(完全性)を提供する暗号技術です。手書きの署名と同様に法的効力を持ち、電子契約、ソフトウェア配布、電子メールなどで使用されます。

デジタル署名の仕組み:

  1. 署名生成:送信者がデータのハッシュを秘密鍵で暗号化
  2. 送信:データと署名を送信
  3. 検証:受信者が公開鍵で署名を復号し、データのハッシュと比較

代表的なアルゴリズム

  • RSA署名:広く普及、長い歴史
  • ECDSA:楕円曲線ベース、短い署名
  • Ed25519:高速、現代的な推奨アルゴリズム
  • DSA:古い、現在は非推奨

AIエンジニアとしての実体験

機械学習モデルの配布時に、デジタル署名でモデルの正当性を保証しています:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding

# RSA署名の生成
signature = private_key.sign(
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)

# 署名の検証
try:
    public_key.verify(
        signature,
        message,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )
    print("署名が有効です")
except:
    print("署名が無効です")

デジタル署名の用途

  • コード署名:ソフトウェアの正当性を証明
  • 電子メール署名:S/MIME、PGP
  • PDF署名:契約書の電子署名
  • TLS証明書:サーバー認証
  • Gitコミット署名:開発者の認証

トラブル事例と対策

⚠️ 署名証明書の期限切れ

影響:署名されたソフトウェアが警告を出す

対策:タイムスタンプ署名を併用し、署名時点での有効性を証明。

関連用語

📝 関連ブログ記事

【2026年最新】OpenSSLの深刻な問題とは?

電子署名導入のご相談