Bỏ qua tới nội dung
Kiến thức Website· ·12 phút đọc

DKIM là gì, cách ký số email và điểm khác biệt so với SPF

Nguyen Hien
DKIM là gì, cách ký số email và điểm khác biệt so với SPF
Cỡ chữ

Sau khi cài đặt SPF (Sender Policy Framework, khung chính sách người gửi) cho tên miền, nhiều người dừng lại ở đó và nghĩ xong. Thực tế, SPF chỉ xác nhận máy chủ gửi có được ủy quyền không, chứ không bảo vệ được nội dung email khỏi bị thay đổi trên đường đi. DKIM là chuẩn bổ sung giải quyết đúng lỗ hổng đó, bằng cách gắn một chữ ký số vào mỗi email trước khi gửi đi.

DKIM là gì và nó bảo vệ thứ gì trong email

DKIM (DomainKeys Identified Mail, thư có nhận dạng khoá tên miền) là một chuẩn xác thực email được mô tả trong RFC 6376. DKIM hoạt động bằng cơ chế ký số mật mã (cryptographic signature, chữ ký mã hoá): máy chủ gửi email thêm một chữ ký số vào tiêu đề email, và máy chủ nhận có thể xác minh chữ ký đó bằng khoá công khai được công bố trên DNS của tên miền người gửi.

Cụ thể hơn: khoá bí mật (private key) lưu trên máy chủ gửi, dùng để ký email. Khoá công khai (public key) được đăng trong một bản ghi TXT trên DNS của tên miền, ai cũng có thể tra. Khi nhận email, máy chủ đích tra khoá công khai đó về và dùng nó để kiểm tra chữ ký. Nếu chữ ký hợp lệ, nghĩa là email không bị chỉnh sửa trên đường đi và thực sự xuất phát từ tên miền đó.

Khác với SPF kiểm tra địa chỉ IP máy chủ gửi, DKIM kiểm tra tính toàn vẹn của nội dung email. Đây là lý do DKIM vẫn hoạt động được khi email bị chuyển tiếp (forward), chữ ký vẫn còn nguyên trong tiêu đề email dù qua bao nhiêu trung gian, miễn là nội dung không bị sửa.

Cách DKIM ký số và xác minh email diễn ra thế nào

Sơ đồ quy trình DKIM ký số email phía gửi bằng khoá bí mật và xác minh chữ ký phía nhận bằng khoá công khai

Luồng hoạt động của DKIM gồm hai giai đoạn rõ ràng: ký khi gửi đi, và xác minh khi nhận về.

Phía gửi: khi bạn gửi email, máy chủ mail của bạn tạo ra một “băm” (hash, chuỗi đại diện) từ nội dung email và một số tiêu đề quan trọng. Sau đó dùng khoá bí mật để ký chuỗi băm đó và nhúng chữ ký vào tiêu đề email dưới dạng trường DKIM-Signature.

Phía nhận: máy chủ đích đọc tiêu đề DKIM-Signature, tìm selector (tiền tố định danh khoá) trong đó, rồi tra bản ghi DNS của tên miền người gửi để lấy khoá công khai tương ứng. Dùng khoá công khai đó để giải mã chữ ký, so sánh với băm của nội dung email thực tế. Nếu khớp, email pass DKIM; không khớp là fail.

Toàn bộ quá trình này diễn ra trong nền, người gửi và người nhận không thấy gì cả. Nhưng kết quả của nó nằm trong tiêu đề email, bạn có thể thấy trong phần “Xem header gốc” (View raw header) của hầu hết client email.

Bản ghi DKIM trong DNS trông như thế nào

Bản ghi DKIM là một bản ghi TXT trong DNS, được đặt tại địa chỉ có dạng:

[selector]._domainkey.[tenmien.vn]

Ví dụ: nếu tên miền là congty.vn và Google Workspace cấp selector là “google”, bản ghi DKIM sẽ ở địa chỉ:

google._domainkey.congty.vn

Nội dung bản ghi TXT đó trông như thế này (rút gọn):

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...

Giải mã từng thành phần:

  • v=DKIM1: phiên bản DKIM (bắt buộc)
  • k=rsa: thuật toán mã hoá (RSA là phổ biến nhất; ed25519 là lựa chọn hiện đại hơn)
  • p=…: khoá công khai được mã hoá Base64, đây là chuỗi dài mà bạn copy từ trang cài đặt của nhà cung cấp email và dán vào DNS

Selector (tiền tố định danh) là thứ cho phép một tên miền có nhiều bản ghi DKIM cùng lúc. Mỗi dịch vụ email hoặc ứng dụng dùng một selector khác nhau. Ví dụ: Google Workspace dùng selector “google”, Mailchimp dùng “k1”, SendGrid dùng “s1” hoặc “s2”. Điều này có nghĩa bạn có thể gửi email qua nhiều dịch vụ và mỗi cái đều có DKIM riêng, không can thiệp vào nhau.

DKIM khác SPF ở chỗ nào, dùng kết hợp thế nào

Hai chuẩn này bảo vệ hai khía cạnh khác nhau của cùng một email, và hiểu sự khác nhau giúp bạn không bỏ sót cái nào:

Bảng so sánh SPF và DKIM về điểm khác nhau, dữ liệu kiểm tra, hành vi khi email bị forward và khả năng dùng nhiều bản ghi cùng lúc
Tiêu chí so sánhSPFDKIM
Kiểm tra cái gìIP máy chủ gửi có được ủy quyền khôngNội dung email có bị thay đổi không
Dữ liệu kiểm traĐịa chỉ IP của máy chủ gửiChữ ký số trong tiêu đề email
Khi email bị forwardFail (Return-Path thay đổi, IP thay đổi)Pass (chữ ký vẫn còn nếu nội dung không bị sửa)
Triển khaiThêm bản ghi TXT vào DNSThêm bản ghi TXT vào DNS + kích hoạt ký số ở phía máy chủ gửi
Cần thay đổi gì ở phía gửiKhôngCó, máy chủ gửi phải hỗ trợ DKIM signing
Bảo vệ địa chỉ From hiển thịKhôngMột phần, bảo vệ tên miền trong chữ ký

Dùng SPF mà không có DKIM giống như niêm phong phong bì (bảo vệ phong bì) nhưng không ký tên bên trong thư. Máy chủ nhận biết phong bì từ đúng địa điểm, nhưng không thể xác nhận nội dung thư có bị thay hay không. DKIM thêm chữ ký vào bên trong thư để đảm bảo nội dung không bị can thiệp.

Trong thực tế, các nhà cung cấp email lớn như Google Workspace và Microsoft 365 đều bật DKIM sẵn cho bạn sau khi xác minh tên miền. Bạn chỉ cần làm theo hướng dẫn của họ để thêm bản ghi DNS, phần phức tạp (ký số, quản lý khoá) nhà cung cấp lo. (Xem thêm bài SPF là gì nếu bạn chưa cài xong lớp đầu tiên.)

Sau khi có cả SPF lẫn DKIM, bước tiếp theo là DMARC để điều phối hai chuẩn này và nhận báo cáo về những email fail xác thực từ tên miền của bạn.

Lấy khoá DKIM ở đâu và cài đặt thế nào

Cách lấy khoá DKIM phụ thuộc vào dịch vụ email bạn dùng. Nhìn chung theo 4 bước:

  1. Đăng nhập vào bảng quản lý của nhà cung cấp email (Google Workspace Admin, Microsoft 365 Admin…)
  2. Tìm phần “Authenticate email” hoặc “DKIM” trong phần cài đặt email/bảo mật
  3. Tạo cặp khoá DKIM mới (thường chọn độ dài 2048-bit, dài hơn thì bảo mật hơn)
  4. Copy bản ghi TXT (gồm hostname như google._domainkey và giá trị khoá công khai) rồi thêm vào DNS của tên miền tại nhà cung cấp DNS của bạn

Lưu ý với Google Workspace: cần đợi ít nhất 24-72 giờ sau khi kích hoạt Gmail trước khi có thể tạo khoá DKIM. Một số người vào trang cài đặt quá sớm thì nút “Generate” chưa xuất hiện, bình thường, cứ đợi.

Sau khi thêm bản ghi DNS, cần đợi DNS propagation (lan truyền DNS, thời gian để thay đổi DNS phổ biến ra toàn cầu) mất từ vài phút đến 48 giờ tùy nhà cung cấp DNS. Bạn có thể kiểm tra bằng công cụ MXToolbox DKIM Lookup tại mxtoolbox.com/dkim.aspx: nhập tên miền và selector để xem bản ghi đã xuất hiện chưa.

Câu hỏi thường gặp về DKIM

DKIM có bảo vệ toàn bộ nội dung email không?

DKIM ký một số tiêu đề và thường là nội dung (body) của email. Nhưng nó ký theo cơ chế “canonicalization” (chuẩn hoá) cho phép một số thay đổi nhỏ không phá vỡ chữ ký (như thêm khoảng trắng). Trên thực tế, bất kỳ thay đổi thực chất nào vào nội dung hoặc tiêu đề đã ký sẽ làm chữ ký không hợp lệ.

Một tên miền có thể có nhiều bản ghi DKIM không?

Có, và đây là điểm mạnh của DKIM so với SPF. Mỗi bản ghi DKIM dùng một selector khác nhau, nên bạn có thể có bản ghi DKIM riêng cho Google Workspace, một bản khác cho Mailchimp, một bản khác nữa cho hệ thống gửi email từ website. Chúng không xung đột nhau.

Cần bao lâu để DKIM có hiệu lực sau khi thêm bản ghi DNS?

Bản ghi DNS cần thời gian lan truyền, thường từ vài giờ đến hai ngày tuỳ nhà cung cấp DNS. Bạn có thể kiểm tra bằng MXToolbox DKIM Lookup để biết bản ghi đã hiển thị từ bên ngoài chưa trước khi kích hoạt.

Nếu khoá DKIM bị lộ phải làm gì?

Tạo cặp khoá mới với một selector khác, thêm bản ghi DNS mới, kích hoạt dùng selector mới, rồi xoá bản ghi DNS cũ sau khi đã chắc selector mới hoạt động. Đây gọi là “xoay vòng khoá” (key rotation) và nên làm định kỳ, khoảng 6-12 tháng một lần với các hệ thống gửi email lớn.

DKIM hoàn thành lớp thứ hai trong bộ ba xác thực email. Khi đã có SPF xác nhận nguồn gửi và DKIM ký số nội dung, bước cuối cùng là DMARC để điều phối kết quả của cả hai và thiết lập chính sách xử lý email fail. Đọc thêm bài email marketing là gì nếu bạn đang dùng email cho chiến dịch marketing và cần hiểu tại sao xác thực email ảnh hưởng trực tiếp đến deliverability (tỷ lệ email vào hộp thư chính).

Đọc tiếp

Bài viết
cùng chủ đề.

Tất cả bài viết