Bạn chưa có tài khoản?
DomainKeys Identified Mail (DKIM) là gì

 

1. DKIM là gì 

DKIM (DomainKeys Identified Mail) là một phương pháp xác thực e-mail bằng chữ ký số của tên miền gửi thư, trong đó khóa công khai thường được công bố trên DNS dưới dạng một TXT record. 

Khi gửi thư, bộ ký thư sẽ chèn lên đầu thư một trường DKIM-Signature [1] có nội dung đại khái như sau: 

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mycompany.com; s=sitec; t=1250425543; 

 bh=qQxSOEYYHCCISqVJ6pi/vUuNCr0EqMNkRSnD0B0TNFQ=;

 h=Message-ID:From:To:Subject: Date:MIME-Version:Content-Type;

 b=aiL+F+rqOdVxmR1V0bdfwsVOvMpwv1eMcCrX5I2C6U9CX+mkyepL3t0PwkW8pLSFc

 CpJ5NvsBGqgOK4f2h89IubyYMFU0BkqZmtlBFlL+wyximVXLtHxO95WOxJX380tCet

 XwofYIOK7tx45K41hG4T7+5ylNSuO1HHMpM/WfOM=

Trong đó có mọi thông tin cần thiết như phiên bản DKIM (v), thuật toán ký (a), thuật toán chuẩn hóa xâu ký tự đưa đi ký ( c ), tên miền ký (d), tên cặp khóa, hay còn gọi là selector (s), dấu ấn thời gian (t), thời hạn hiệu lực của chữ ký (x), phương thức truy vấn để lấy khóa công khai (q), danh sách các trường của phần đầu thư được ký (h), độ dài phần thân thư được ký (l), giá trị hash của nội dung được ký (bh), và chữ ký (b). 

Khi nhận thư, bộ kiểm thư sẽ xác định khóa công khai theo phương pháp q (trong ví dụ trên, vốn dĩ không chỉ rõ q, phương pháp mặc định là truy vấn DNS tìm TXT record có tên là sitec._domainkey.mycompany.com.), dựa vào đó kiểm tra chữ ký rồi chèn kết quả kiểm tra vào trường Authentication-Results [2] của thư. Chẳng hạn, kết quả tốt được viết như sau: 

Authentication-Results: ... dkim=pass header.i=@mycompany.com

Kết quả này xác thực các trường của phần đầu thư đã kể trong mục h (tức Message-ID, From, To, Subject, Date, MIME-Version và Content-Type trong ví dụ trên) cùng với phần thân thư có độ dài kể trong mục l(tức toàn bộ phần thân thư trong ví dụ trên, vốn dĩ với mục l mặc định). 

Trong dây chuyền nộp – chuyển – phát thư, bộ ký thư thường đặt tại sending MTA và bộ kiểm thư thường đặt tại receiving MTA. Khi đó DKIM thực chất chỉ xác nhận thư được bảo toàn trên suốt chặng đườngchuyển thư. Việc đảm bảo một lá thư From:alice@mycompany.com chắc chắn thuộc về Alice nằm ngoài trách nhiệm của DKIM. 

Ngoài ra, tùy theo chính sách kiểm tra chữ ký DKIM của mình, bộ kiểm thư có thể tìm hiểu chính sách ký DKIM (tức ADSP, Author Domain Signing Practices [3]) của mycompany.com bằng cách truy vấn DNS tìm TXT record tên là _adsp._domainkey.mycompany.com., căn cứ vào đó (và tùy theo kết quả kiểm tra chữ ký) để quyết định có chấp nhận lá thư hay không. 

2. Vì sao, khi nào dùng DKIM
Nói một cách vắn tắt, nên dùng DKIM bởi vì một lá thư không có chữ ký DKIM dễ bị hiểu là spam. 

DKIM là một phương pháp xác thực chứ không phải là một phương pháp chống spam. Nhưng nó hỗ trợ việc chống spam bởi vì nó đảm bảo thư là thật (địa chỉ người gửi, hay ít nhất tên miền gửi thư là thật) trong khi thực tế đa số spam đều là thư giả mạo (mạo tên người khác, tên miền khác). Với DKIM, ai muốn spam thì cứ thoải mái, nhưng phải spam một cách quang minh chính đại; bạn không thể gửi thư từ một tên miền không thuộc sở hữu của mình được. 

Phát triển từ phương pháp DK của Yahoo và phương pháp IM của Cisco, với việc được cơ quan IETF cấp tư cách Standards Track, DKIM đã từ một phương pháp xác thực email trẻ nhất trở thành phương pháp có tiềm năng nhất. 

Với việc xác thực nội dung hơn là xác thực phong bì, trong các tình huống mà phong bì thay đổi, chẳng hạn, thư được forward qua một đường chuyển thư phức tạp, DKIM cho những lá thư cơ hội sống sót cao hơn so với các phương pháp xác thực địa chỉ server như là SPF hay SIDF. (Nhưng tất nhiên, trong những tình huống nội dung thay đổi, chẳng hạn qua bộ quét virus, các phương pháp kia có thể cho cơ hội sống sót cao hơn.) 

Với việc triển khai trên server hơn là trên client, và không đòi hỏi một hạ tầng khóa công khai phức tạp, DKIM gọn nhẹ hơn so với các phương pháp xác thực từ đầu đến cuối như là S/MIME hay PGP. (Nhưng tất nhiên, ý nghĩa xác thực cũng nhẹ hơn, DKIM không thể thay thế hoàn toàn cho các phương pháp kia.) 

C
ả hai DomainKeys và DKIM tuy khác nhau nhưng hầu như lại như nhau về khả năng. Hiện DomainKeys đã không còn phát triển và DKIM đã dần được thay thế.

Vì thế, chính sách dùng DKIM tốt nhất hiện nay là ký(signed) triệt để mọi lá thư gửi đi từ tên miền  và chỉ từ chối những lá thư không hợp lệ đến từ những miền khác có chính sách ký thư triệt để

Cơ chế an ninh nào cũng có giá của nó. Việc tạo ra một chữ ký hay kiểm tra một chữ ký tiêu tốn hàng triệu clock cycle. Với DKIM, một server có xung nhịp cỡ GHz sẽ tiêu tốn thêm chừng 1 ms cho mỗi lá thư đến hay đi.

(Sưu tầm và bổ sung)


Một ví dụ về thiết lập thành công DKIM và DomainKeys khi gửi mail cho Yahoo: