Bỏ qua tới nội dung chính

DKIM

DKIM (DomainKeys Identified Mail) là một phương pháp xác thực email thêm chữ ký mật mã vào tiêu đề thông điệp đi, cho phép các máy chủ thư nhận xác minh rằng thông điệp thực sự bắt nguồn từ tên miền được tuyên bố và không bị thay đổi trong quá trình truyền.

Định nghĩa

DKIM (DomainKeys Identified Mail) là một đặc tả xác thực email sử dụng mật mã khóa công khai để ký các thông điệp đi, cho phép các máy chủ thư nhận xác nhận rằng email đến từ tên miền mà nó tuyên bố bắt nguồn và rằng thân thông điệp và các tiêu đề được chọn không bị sửa đổi trong quá trình truyền. Tên miền ký xuất bản khóa công khai của nó trong DNS; các máy chủ nhận lấy khóa đó và sử dụng nó để xác minh chữ ký được nhúng trong tiêu đề email DKIM-Signature.

DKIM được phát triển từ hai đề xuất chồng chéo trước đó — DomainKeys của Yahoo và Identified Internet Mail của Cisco — và được công bố lần đầu là IETF RFC 4871 vào năm 2007. Đặc tả có thẩm quyền hiện tại là RFC 6376, được công bố vào tháng 9 năm 2011 và được cập nhật bởi RFC 8301 (2018) và RFC 8463 (2018) để bắt buộc các thuật toán mật mã mạnh hơn. DKIM được triển khai rộng rãi trên toàn hệ sinh thái email và là một thành phần bắt buộc của chính sách DMARC cung cấp sự bảo vệ có ý nghĩa.

Cách hoạt động

Khi máy chủ thư của một tổ chức gửi một thông điệp, mô-đun ký DKIM (được tích hợp vào MTA như Postfix, Exim và Microsoft Exchange, hoặc được cung cấp như một dịch vụ bởi các nhà cung cấp giao dịch bao gồm SendGrid, Mailgun, Amazon SES và Postmark) thực hiện các thao tác sau.

Người ký chọn một tập hợp con các tiêu đề để bao gồm trong chữ ký — thường là From, To, Subject, DateContent-Type — và chuẩn hóa chúng bằng một trong hai thuật toán được xác định: simple (chuẩn hóa khoảng trắng tối thiểu) hoặc relaxed (cho phép nhiều hơn, chấp nhận các viết lại tiêu đề nhỏ trong quá trình truyền). Thân thông điệp được chuẩn hóa tương tự và được băm bằng SHA-256 (thuật toán bắt buộc kể từ khi RFC 8301 ngừng sử dụng SHA-1 cũ hơn). Người ký sau đó tính toán chữ ký số RSA hoặc Ed25519 trên băm tiêu đề cộng với một chuỗi có cấu trúc của siêu dữ liệu ký, và chèn một tiêu đề DKIM-Signature ở đầu thông điệp.

Tiêu đề DKIM-Signature chứa: v=1 (phiên bản), a=rsa-sha256 (thuật toán), d=example.com (tên miền ký, được biết đến như thẻ d=), s=selector1 (bộ chọn, được sử dụng để tra cứu khóa công khai cụ thể), h=from:to:subject (các tiêu đề được ký), bh=<body hash>b=<base64 signature>.

Chủ sở hữu tên miền xuất bản khóa công khai tương ứng tại <selector>._domainkey.<domain> dưới dạng bản ghi DNS TXT. Khi Gmail, Outlook, Yahoo Mail hoặc bất kỳ MTA tuân thủ RFC 6376 nào nhận được thông điệp, nó truy vấn DNS cho bản ghi đó, lấy khóa công khai và xác minh chữ ký mật mã. Một chữ ký hợp lệ tạo ra kết quả DKIM pass. Một chữ ký bị thiếu hoặc không hợp lệ, hoặc bất kỳ sửa đổi nào đối với các tiêu đề đã ký hoặc thân trong quá trình truyền, tạo ra kết quả fail hoặc neutral, sau đó được chuyển đến công cụ đánh giá DMARC.

Bộ chọn (thẻ s=) cho phép một tên miền xuất bản nhiều khóa DKIM đồng thời — hữu ích để xoay khóa mà không bị gián đoạn dịch vụ, hoặc để cô lập các khóa qua các hệ thống gửi khác nhau (ví dụ: marketing._domainkey.example.com so với transactional._domainkey.example.com).

Bạn gặp DKIM ở đâu

DKIM là một yêu cầu khả năng phân phối nền tảng cho bất kỳ dịch vụ nào phụ thuộc vào email. Các nhà cung cấp email giao dịch như Amazon SES, SendGrid (một phần của Twilio), Mailgun (một phần của Sinch), Postmark và SparkPost bao gồm việc ký DKIM như một bước cấu hình bắt buộc trong quá trình xác minh tên miền. Nhà cung cấp tạo một cặp khóa RSA-2048 hoặc Ed25519, hiển thị khóa công khai dưới dạng bản ghi DNS TXT và nhắc chủ sở hữu tên miền xuất bản nó trước khi cho phép gửi từ tên miền đó.

Đối với các nền tảng cuộc thi gửi email xác nhận phiếu bầu, việc ký DKIM đặc biệt quan trọng vì các email xác nhận phải vượt qua các kiểm tra xác thực được áp dụng bởi các nhà cung cấp hộp thư lớn — Google Workspace / Gmail, Microsoft Outlook và Exchange Online Protection, Yahoo Mail, Apple iCloud Mail và ProtonMail. Các thông điệp không được ký hoặc các thông điệp có chữ ký không thành công có khả năng cao hơn nhiều bị chuyển đến thư rác hoặc bị chặn hoàn toàn, ngăn người bỏ phiếu xác nhận các lần gửi của họ.

Các công cụ kiểm tra email như Mail-Tester, GlockApps và MXToolbox DKIM Lookup cho phép người gửi kiểm tra và xác thực cấu hình DKIM của họ trước khi gửi sản xuất. Google Postmaster Tools và Microsoft SNDS cung cấp dữ liệu khả năng phân phối ở cấp tổng hợp phản ánh tỷ lệ vượt qua DKIM theo thời gian.

Ví dụ thực tế

Một nền tảng cuộc thi được cấu hình với bộ chọn DKIM s=contest cho tên miền votes.example.com xuất bản khóa công khai tại contest._domainkey.votes.example.com. Mỗi email xác nhận đi đều mang một tiêu đề DKIM-Signature được ký bằng khóa riêng tương ứng. Khi tài khoản Gmail của người bỏ phiếu nhận được thông điệp, bộ lọc đầu vào của Gmail truy vấn DNS, xác minh chữ ký, ghi nhận một lần vượt qua và chuyển kết quả đến bộ phân loại thư rác của nó. Vượt qua DKIM được xác nhận, kết hợp với sự liên kết SPF, đáp ứng các điều kiện cho việc tuân thủ DMARC.

Một quản trị viên cuộc thi xoay từ khóa RSA 1024-bit (không còn được coi là đủ mật mã) sang khóa RSA 2048-bit sau khi đọc RFC 8301. Bộ chọn cũ được giữ hoạt động trong bảy ngày để bao quát bất kỳ thông điệp nào đang truyền, sau đó bị xóa khỏi DNS. Tất cả các thông điệp mới sử dụng bộ chọn và khóa được cập nhật.

Khái niệm liên quan

DKIM hoạt động cùng với SPF Record — xác thực địa chỉ IP của máy chủ gửi — và DMARC — xác định một hành động chính sách và cơ chế báo cáo dựa trên kết quả SPF và DKIM. Cả hai tín hiệu phải được hiểu cùng nhau; chỉ vượt qua DKIM không làm cho thông điệp tuân thủ DMARC nếu tên miền d= không liên kết với tên miền RFC5322.From. Đối với bối cảnh hoạt động cuộc thi, các hậu quả thực tế của các lỗi DKIM được giải thích trong Email Confirmation Vote, nơi việc đặt hộp thư đến của thông điệp xác nhận quyết định trực tiếp liệu một phiếu bầu đã bỏ có được tính hay không.

Từ blog — hướng dẫn & trường hợp

Hướng dẫn thực tiễn, tìm hiểu sâu kỹ thuật, và trường hợp ẩn danh.60+ bài viết. Lựa chọn xoay.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
Online · thường trả lời trong 5 phút

Chào 👋 — gửi URL cuộc thi đi, trong 1 giờ tôi sẽ báo giá. Chưa cần thẻ.