Cách DKIM tìm khóa
Chữ ký DKIM trong thư chỉ định một tên miền (d=) và một selector (s=). Máy chủ nhận ghép chúng thành selector._domainkey.domain, đọc bản ghi TXT tại đó và dùng khóa công khai trong thẻ p= để xác minh chữ ký. Một tên miền có thể công bố số lượng selector bất kỳ, vì vậy mỗi dịch vụ gửi có thể có khóa riêng và có thể luân phiên khóa mà không gây gián đoạn.
Công cụ kiểm tra cần selector vì DNS không cung cấp cách liệt kê các selector của một tên miền. Không có gì để quét, selector phải được lấy từ chữ ký của một thư thực tế.
Điều gì khiến khóa yếu hoặc bị lỗi
RFC 8301 quy định khóa RSA phải có ít nhất 1024 bit và nên là 2048 bit. Trình xác minh có thể bỏ qua khóa ngắn hơn, và công cụ của chúng tôi cũng vậy, nên khóa 512 bit được coi như hoàn toàn không có chữ ký. Khóa Ed25519 (RFC 8463) được thiết kế ngắn gọn nhưng vẫn mạnh, tuy nhiên chưa phải mọi bên nhận đều xác minh loại khóa này. Vì vậy, khóa Ed25519 thường được công bố cùng với khóa RSA thay vì thay thế khóa RSA.
Công cụ kiểm tra giải mã toàn bộ khóa, vì bản ghi bị chia sai giữa các chuỗi TXT hoặc base64 không giải mã được sẽ tạo ra khóa mà không bên nhận nào có thể sử dụng. p= trống có nghĩa là khóa đã bị thu hồi có chủ đích. t=y đánh dấu một tên miền vẫn đang thử nghiệm, và RFC 6376 §3.6.1 yêu cầu trình xác minh xử lý thư của tên miền đó giống hệt thư không có chữ ký.
Câu hỏi
Làm cách nào để tìm selector DKIM và biết DKIM có được bật hay không?
Gửi email cho chính bạn và mở phần header của bản sao đã nhận. Nếu có header DKIM-Signature, email đã được ký: selector là giá trị s= và domain là d=. Nếu không có header này, dịch vụ bạn dùng để gửi không ký email. Mỗi dịch vụ gửi dùng selector riêng, vì vậy bản tin và email gửi từ hộp thư của bạn có thể dùng các selector khác nhau.
Khóa không có vấn đề, nhưng DKIM thất bại với lỗi "body hash did not verify". Tại sao?
Thông thường, thư đã bị thay đổi sau khi được ký, chẳng hạn danh sách gửi thư thêm chân trang hoặc cổng bảo mật viết lại liên kết. Khóa chỉ có thể xác nhận nội dung đã được ký. Bài kiểm tra đầy đủ hiển thị kết quả xác minh thực tế cho thư của bạn.
Hướng dẫn đầy đủ: DKIM fail
Độ dài khóa DKIM: 1024 hay 2048 bit?
Khóa 1024 bit được xác minh ở mọi nơi và RFC 8301 cho phép sử dụng. Tuy nhiên, đây vẫn là mức tối thiểu, vì vậy hãy chuyển sang 2048 bit trong lần xoay vòng khóa tiếp theo.
Một domain có thể có nhiều bản ghi DKIM không?
Có, mỗi selector có một bản ghi và nhiều domain có vài bản ghi: một cho nhà cung cấp hộp thư và một cho từng dịch vụ bản tin hoặc thanh toán. Hãy kiểm tra từng bản ghi. Nếu một khóa đã bị xóa khỏi DNS, mọi email vẫn được ký bằng khóa đó đều thất bại.
Tôi nên xoay vòng khóa DKIM bao lâu một lần?
M3AAWG khuyến nghị xoay vòng ít nhất sáu tháng một lần và thực hiện ngay nếu khóa riêng có thể đã bị rò rỉ. Đăng khóa mới dưới một selector mới, chuyển sang ký bằng khóa đó và chỉ xóa bản ghi cũ sau khi email được ký bằng khóa cũ không còn đến nữa. Bên gửi thử lại trong bốn đến năm ngày, vì vậy hãy chờ khoảng một tuần.