# Implementing Digital Signatures With Ed25519

> Ed25519 是一种使用 Edwards 曲线 Curve25519 的高性能数字签名算法。它以 64 字节签名和 32 字节密钥提供 128 位安全性，相比 RSA 和 ECDSA 具有显著优势，包括确定性签名（无需随机 nonce）、抗侧信道攻击以及快速验证。

- Skill: `killvxk/implementing-digital-signatures-with-ed25519` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/implementing-digital-signatures-with-ed25519`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/implementing-digital-signatures-with-ed25519/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/implementing-digital-signatures-with-ed25519

---

# 使用 Ed25519 实现数字签名

## 概述

Ed25519 是一种使用 Edwards 曲线 Curve25519 的高性能数字签名（digital signature）算法。它以 64 字节签名和 32 字节密钥提供 128 位安全性，相比 RSA 和 ECDSA 具有显著优势，包括确定性签名（无需随机 nonce）、抗侧信道攻击以及快速验证。本技能涵盖为文档签名、代码签名和 API 认证实现 Ed25519。

## 目标

- 生成用于签名的 Ed25519 密钥对
- 使用 Ed25519 对消息和文件签名
- 对照公钥验证签名
- 实现多签名验证
- 构建简单的代码签名系统
- 比较 Ed25519 与 RSA 和 ECDSA 的性能

## 核心概念

### Ed25519 vs RSA vs ECDSA

| 属性 | Ed25519 | RSA-3072 | ECDSA P-256 |
|------|---------|----------|-------------|
| 安全性 | 128 位 | 128 位 | 128 位 |
| 公钥大小 | 32 字节 | 384 字节 | 64 字节 |
| 签名大小 | 64 字节 | 384 字节 | 64 字节 |
| 密钥生成 | ~50 us | ~100 ms | ~1 ms |
| 签名 | ~70 us | ~5 ms | ~200 us |
| 验证 | ~200 us | ~200 us | ~500 us |
| 确定性 | 是 | 否 (PSS) | 否（除非 RFC 6979）|

### 关键特性

- **确定性（Deterministic）**：相同消息 + 密钥始终产生相同签名
- **抗碰撞（Collision-resistant）**：无需单独的哈希函数
- **抗侧信道（Side-channel resistant）**：恒定时间实现
- **小密钥**：公钥和私钥各 32 字节

## 安全注意事项

- Ed25519 不支持从签名中恢复密钥
- 验证完整消息，而非哈希值（Ed25519 内部进行哈希）
- 使用前必须验证公钥（检查低阶点）
- 私钥在静止状态下应加密存储
- Ed25519 尚未获批用于所有 NIST 用例（联邦场景首选 Ed448）

## 验证标准

- [ ] 密钥对生成产生有效的 Ed25519 密钥
- [ ] 对有效消息的签名验证成功
- [ ] 对篡改消息的签名验证失败
- [ ] 对错误公钥的签名验证失败
- [ ] 确定性：相同输入产生相同签名
- [ ] 文件签名和验证工作正常
- [ ] 性能达到或超过 RSA-3072

