Since a few weeks I have set up my google apps domain to use DKIM for all outgoing mail. Does this mean that everyone that is in possession of a copy of the message can verify that it really originated from my domain, and that the contents were not altered? I am specifically considering the cases of forwarded messages (possibly without knowledge/approval of the original sender) and messages leaked from the receiver's mailbox e.g. during hacking attacks.

If this is the case, how should I communicate this change to my users? Does any of you have any experience in explaining this technical, subtle, but important change to users?

This question was prompted by the following quote in this article about the Stratfor hack: "Some of the emails may be forged or altered to include inaccuracies; some may be authentic. We will not validate either"


1 Answer 1


DKIM does not provide non-repudiation or confidentiality such as PGP/GPG or S/MIME. It is primarily a means of authentication of the originator of the message (most likely at the domain/company level and not individual), and (to my knowledge) the most practical use is chiefly for spam/phishing prevention.

The scope of the DKIM signature would not necessarily cover the whole message body, but primarily the headers and parts of the body.

"Only plain text messages written in us-ascii, provided that MIME header fields are not signed,[13] enjoy the robustness that end-to-end integrity requires." source

In most typical setups, DKIM is on a per-domain basis, and all users share the same public key for signing messages. The identity of the signer is not necessarily linked to that of the message originator. This means anybody with access to send emails on the domain can generate DKIM signed messages. So for example, if a malware resides on a user's computer and is able to send email from their mailbox, and if the mail is then DKIM-signed at the mail server (which is quite common), the email will have a valid DKIM signature.

When it comes to non-repudiation however, the expectation is in most cases that the actual (human) person is the only one in possession of the private key used to sign the message, and in such cases it can be linked back to this person. Non-repudiation is very tricky because of the so many factors surrounding the 'ownership' of the private key and the ability of the someone to argue that this possession was somehow compromised (that is a little digression however)

Forwarding is another possibility which DKIM doesn't fully protect against (see the same wikipedia entry)

You can read more about limitations and potential misuse of DKIM on the security section, as well as on the FAQ : What does DKIM not do

So to more specifically try to address your questions (even though some clarification might be required, because I'm not entirely sure what you ask very specifically):

  • Checking that it originated from your domain - with some degree of certainty, yes. DKIM is primarily meant to provide that. There's still a possibility that someone hacked your DNS and injected their own DKIM keys and forged a message of course...

  • How to communicate this to your user? I'm not sure what is this... Hope that my answer gives you some more clarity about DKIM to be able to answer that by yourself now.

  • In relation to the article - hard to know what your primary concern might be. If emails are stolen by hacking into a server, then it's more a question of who you trust - the hackers who did this or the people who got hacked? Who has a higher motivation to lie or deceive you about this?? The emails might be legitimate, unaltered version, or they might be altered. In the latter case, it's fair to assume that hackers who got the emails in the first place might be able to forge the signature too. The signing key will likely be stored on the mail server itself, giving the hackers the ability to sign any message they want...

  • Thanks, this is quite a bit more than I was expecting ;)
    – drxzcl
    Mar 30, 2012 at 12:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .