スキル一覧に戻る
igbuend

digital-signature

by igbuend

A repository of security related skills - like secure code review and pentesting - for Claude and other AI.

2🍴 1📅 2026年1月24日
GitHubで見るManusで実行

SKILL.md


name: digital-signature description: Security pattern for implementing digital signatures. Use when implementing document signing, code signing, certificate signing, non-repudiation, or verifying authenticity and integrity of messages using asymmetric cryptography (RSA, ECDSA, Ed25519).

Digital Signature Security Pattern

Create and verify digital signatures to ensure data integrity, authenticity, and non-repudiation using asymmetric cryptography.

Properties Provided

  1. Data Integrity: Message not modified since signing
  2. Authentication: Message originated from key holder
  3. Non-repudiation: Signer cannot deny having signed

Core Components

RoleTypeResponsibility
EntityAEntityCreates digital signatures
EntityBEntityVerifies digital signatures
Signature GeneratorCryptographic PrimitiveCreates signatures
Signature VerifierCryptographic PrimitiveVerifies signatures

Data Elements

  • message: Data to be signed
  • signature: Digital signature of message
  • private_key: Signing key (secret)
  • public_key: Verification key (can be distributed)

Signature Flow

Signing

EntityA → [sign(message, private_key)] → Signature Generator
Signature Generator → [signature] → EntityA
EntityA → [message + signature] → EntityB

Verification

EntityB → [verify(message, signature, public_key)] → Signature Verifier
Signature Verifier → [valid/invalid] → EntityB

Comparison with MAC

AspectDigital SignatureMAC
Key typeAsymmetric (public/private)Symmetric (shared)
Non-repudiationYesNo
Verification keyPublic (distributable)Secret (shared)
PerformanceSlowerFaster
Use caseExternal parties, legalInternal, performance

Use digital signatures when non-repudiation required or verifiers shouldn't be able to create signatures.

Algorithm Recommendations

RSA Signatures

VariantStatusNotes
RSA-PSSRecommendedProbabilistic padding
RSA-PKCS#1 v1.5AcceptableDeterministic, widely supported

Key sizes:

  • 3072 bits: Recommended for long-term
  • 2048 bits: Minimum acceptable
  • 4096 bits: High security requirements
  • 15360 bits: 30+ year protection (if needed)

Elliptic Curve Signatures

AlgorithmCurveStatus
Ed25519Curve25519Recommended (modern)
ECDSAP-256Recommended
ECDSAP-384High security
ECDSAP-521Highest security

Key sizes:

  • 256 bits: Standard security (≈RSA 3072)
  • 384 bits: High security
  • 512 bits: Long-term protection

Hash Functions for Signing

  • SHA-256: Standard
  • SHA-384/SHA-512: Higher security
  • SHA-3: Alternative

Never: MD5, SHA-1

Security Considerations

Private Key Protection

Critical: Private key security = signature trustworthiness

  • Store in HSM for high-value keys
  • Use secure key storage APIs
  • Never expose in logs or errors
  • Implement access controls
  • Consider key ceremonies for critical keys

Public Key Authenticity

Verifier must trust public key belongs to signer:

  • Certificate from trusted CA
  • Out-of-band verification
  • Web of trust
  • Key pinning

Algorithm Selection

  • Use current recommendations
  • Plan for algorithm transitions
  • Avoid deprecated algorithms

Timestamp Considerations

  • Include timestamp in signed data
  • Consider timestamping service
  • Prevents backdating

Message Hashing

Typically, signature is over hash of message:

  1. Hash the message (SHA-256)
  2. Sign the hash

Library usually handles this—verify behavior.

Signature Malleability

Some signature schemes are malleable (valid signature can be modified to create another valid signature). Use signature schemes that prevent malleability or handle at application layer.

Common Use Cases

Code Signing

  • Sign software/updates
  • Verify before installation
  • Protect against tampering

Document Signing

  • Legal documents
  • Contracts
  • Non-repudiation

Certificate Signing

  • X.509 certificates
  • CA hierarchy
  • TLS/HTTPS

JWT Signing

  • Token integrity
  • RS256 (RSA), ES256 (ECDSA)
  • Verify before trusting claims

API Request Signing

  • Request authenticity
  • Webhook verification
  • Prevents tampering

Implementation Checklist

  • Using RSA-PSS, Ed25519, or ECDSA
  • Key size ≥ 3072 bits (RSA) or ≥ 256 bits (ECC)
  • Private key stored securely
  • Public key authenticity established
  • SHA-256+ for hashing
  • No MD5 or SHA-1
  • Verification before trusting signed data
  • Algorithm agility for future changes

Common Mistakes

MistakeImpactFix
Weak key sizeForgery possibleUse recommended sizes
MD5/SHA-1Collision attacksUse SHA-256+
Private key exposureFull compromiseSecure storage (HSM)
Skipping verificationAccept forged dataAlways verify
Trusting unverified public keyAccept attacker's signatureEstablish key authenticity
  • Cryptographic action (parent pattern)
  • Message authentication code (symmetric alternative)
  • Cryptographic key management (key handling)
  • Verifiable token-based authentication (JWT use case)

References

スコア

総合スコア

70/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です