← RFC Reference

RFC 8463: Ed25519 cho Chữ ký DKIM

Standards Track Email Authentication Published March 2026
ELI5: DKIM ban đầu sử dụng khóa RSA — cùng loại khóa bảo vệ hầu hết web. Nhưng khóa RSA cồng kềnh: một khóa công khai 2048-bit chiếm hơn 400 ký tự trong bản ghi DNS TXT. Ed25519 là một khóa mới hơn, gọn gàng hơn và mạnh ngang nhau với một khóa vừa vặn trong 44 ký tự. Khóa nhỏ hơn, xác minh nhanh hơn, tin tưởng như nhau — đó là điều RFC 8463 mang lại cho DKIM.

Tại Sao Điều Này Tồn Tại

DKIM (RFC 6376) ban đầu chỉ quy định RSA cho các chữ ký. RSA đã phục vụ tốt, nhưng nó đi kèm với chi phí:

Ed25519 (Thuật toán Chữ ký Kỹ thuật số Đường cong Edwards sử dụng Curve25519) giải quyết cả ba vấn đề. Các khóa 256-bit của nó cung cấp bảo mật tương đương khoảng 3072-bit RSA, khóa công khai chỉ 32 byte (44 ký tự Base64), và xác minh nhanh hơn đáng kể.

Cách Nó Hoạt Động

Ký Với Ed25519

Quá trình ký tương giống với DKIM tiêu chuẩn, với hai thay đổi: thẻ a= sử dụng ed25519-sha256 thay vì rsa-sha256, và khóa riêng là khóa Ed25519 thay vì RSA.

  1. Chuẩn hóa tiêu đề và nội dung theo quy tắc RFC 6376.
  2. Tính toán hàm băm SHA-256 của nội dung được chuẩn hóa (thẻ bh=).
  3. Tính toán hàm băm SHA-256 của các tiêu đề được ký cộng với hàm băm nội dung.
  4. Ký hàm băm tiêu đề bằng khóa riêng Ed25519.
  5. Phát hành tiêu đề DKIM-Signature với a=ed25519-sha256.

Ví Dụ: DKIM-Signature Ed25519

DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=example.com; s=ed202601; h=from:to:subject:date:message-id:mime-version:content-type; bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; b=Tg2ByC4LSy9F1F6xAQchD8JFh6kYH7aKQjO6Sn7XIkfJVOzv8RBVOzv8QjO6S n7XIkfJV==

Bản Ghi Khóa Công Khai DNS

Bản ghi khóa sử dụng k=ed25519 và khóa công khai nhỏ gọn hơn RSA đáng kể:

; Khóa DKIM Ed25519 — lưu ý giá trị p= compact như thế nào ed202601._domainkey.example.com. IN TXT "v=DKIM1; k=ed25519; p=11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo=" ; So sánh với khóa RSA 2048-bit — lớn hơn nhiều rsa202601._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2UMfREvlgajdSp3jv1oI...truncated (392 characters)..."

Ký Kép: Phương Pháp Được Khuyến Nghị

Không phải tất cả những người nhận đều hỗ trợ Ed25519 nhưng. RFC 8463 khuyến nghị ký kép: áp dụng cả chữ ký RSA và chữ ký Ed25519 cho mỗi tin nhắn. Những người nhận hiểu Ed25519 có thể xác minh chữ ký mạnh hơn; những người không hiểu sẽ quay lại chữ ký RSA.

; Một tin nhắn có hai tiêu đề DKIM-Signature: DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=example.com; s=ed202601; h=from:to:subject:date:message-id; bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; b=Tg2ByC4LSy9F1F6xAQchD8JFh6kYH7aK... DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=rsa202601; h=from:to:subject:date:message-id; bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; b=LjIEJLNOTAREALh8gAiGVQOr3K7qO6Sn7XIkfJV...

Cả hai chữ ký dùng chung bh= (hàm băm nội dung) và h= (tiêu đề được ký) nhưng sử dụng các bộ chọn khác nhau chỉ đến các loại khóa khác nhau trong DNS.

Chi Tiết Kỹ Thuật Chính

So Sánh Kích Thước Khóa

Thuộc Tính RSA-2048 Ed25519
Mức bảo mật (bit) ~112 ~128
Kích thước khóa công khai (Base64) ~392 ký tự 44 ký tự
Kích thước chữ ký (Base64) ~344 ký tự 88 ký tự
Tốc độ ký Vừa phải Nhanh
Tốc độ xác minh Nhanh Rất nhanh
Kích thước bản ghi DNS TXT Khít khao, có thể cần chia nhỏ Dễ dàng vừa trong một chuỗi

Tạo Khóa

# Tạo cặp khóa Ed25519 bằng OpenSSL 1.1.1+ openssl genpkey -algorithm Ed25519 -out ed25519_private.pem # Trích xuất khóa công khai openssl pkey -in ed25519_private.pem -pubout -out ed25519_public.pem # Lấy khóa công khai Base64 thô cho DNS (loại bỏ tiêu đề PEM) openssl pkey -in ed25519_private.pem -pubout -outform DER | tail -c 32 | base64 11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo= # Công bố trong DNS như: # ed202601._domainkey.example.com. IN TXT "v=DKIM1; k=ed25519; p=11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo="

Định Dạng Bản Ghi DNS

Thay đổi duy nhất từ bản ghi khóa DKIM tiêu chuẩn là k=ed25519. Tất cả các thẻ khác (v=, p=, t=, v.v.) hoạt động như trước với bản ghi khóa RSA:

; Thẻ bắt buộc v=DKIM1 ; phiên bản (luôn là DKIM1) k=ed25519 ; loại khóa (trước đó là "rsa" theo mặc định) p=<base64> ; khóa công khai 44 ký tự ; Thẻ tùy chọn (giống RSA) t=s ; chế độ nghiêm ngặt: d= phải khớp chính xác với miền From t=y ; chế độ thử nghiệm: những người nhận không nên coi sự cố là quyết định

Hành Động Của Người Nhận

Khi người nhận gặp a=ed25519-sha256 trong DKIM-Signature:

  1. Tra cứu bản ghi khóa DNS cho bộ chọn.
  2. Xác nhận k=ed25519 trong bản ghi khóa.
  3. Giải mã khóa công khai 32 byte từ thẻ p=.
  4. Xác minh chữ ký Ed25519 so với hàm băm SHA-256 của các tiêu đề được chuẩn hóa.

Nếu người nhận không hỗ trợ Ed25519, họ coi chữ ký là không thể xác minh (không phải lỗi nghiêm trọng) và chuyển sang bất kỳ tiêu đề DKIM-Signature nào khác trên tin nhắn.

Những Lỗi Phổ Biến

Tác Động Đến Khả Năng Gửi

Related RFCs