pgpfan:legends
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
pgpfan:legends [2024/02/09 20:23] – I found the Perrin downgrade ref. b.walzer | pgpfan:legends [2024/06/02 14:33] (current) – Signature stuff relevant to sec 5.2. b.walzer | ||
---|---|---|---|
Line 1: | Line 1: | ||
======Misleading Legends Caused by EFAIL====== | ======Misleading Legends Caused by EFAIL====== | ||
- | |||
- | //This article has been recently corrected. See the "Old revistions" | ||
I discuss the security of the OpenPGP standard and implementations more than most. As a result I run across certain unhelpful ideas more than most. I am reasonably certain at this point that these ideas originally came from a hard to follow section of the paper describing a vulnerability called EFAIL(([[https:// | I discuss the security of the OpenPGP standard and implementations more than most. As a result I run across certain unhelpful ideas more than most. I am reasonably certain at this point that these ideas originally came from a hard to follow section of the paper describing a vulnerability called EFAIL(([[https:// | ||
Line 42: | Line 40: | ||
The packet type specifies how the message is to be decrypted. How would you decrypt the message to get the encrypted packet type without knowing how? | The packet type specifies how the message is to be decrypted. How would you decrypt the message to get the encrypted packet type without knowing how? | ||
- | >This downgrade attack has been known since 2002 [20](([[https:// | + | >This downgrade attack has been known since 2002 [20](([[https:// |
- | The actual description of a downgrade | + | The actual description of a transmogrification |
Likely because of the attention drawn by the EFAIL paper, I suspect that this reference became, by itself, the cause of a legend. That's the contention that the OpenPGP block cipher mode has only 16 bits of security. Since there was no weakness found for that particular issue (it was a problem with the specification), | Likely because of the attention drawn by the EFAIL paper, I suspect that this reference became, by itself, the cause of a legend. That's the contention that the OpenPGP block cipher mode has only 16 bits of security. Since there was no weakness found for that particular issue (it was a problem with the specification), | ||
Line 55: | Line 53: | ||
>While the SE type resynchronizes the block boundaries after encrypting these two additional bytes, the SEIP does not perform this resynchronization. To repair the decryption after changing the SEIP to an SE packet, two bytes must be inserted at the start of the first block to compensate for the missing bytes. This was also described by Perrin and Magazinius [20, 21](([[https:// | >While the SE type resynchronizes the block boundaries after encrypting these two additional bytes, the SEIP does not perform this resynchronization. To repair the decryption after changing the SEIP to an SE packet, two bytes must be inserted at the start of the first block to compensate for the missing bytes. This was also described by Perrin and Magazinius [20, 21](([[https:// | ||
- | The [20, 21] references are to email list messages describing | + | The [20, 21] references are to email list messages describing |
> | > | ||
>Since an attack was published against this integrity protection mechanism [22](([[https:// | >Since an attack was published against this integrity protection mechanism [22](([[https:// | ||
- | Reference [18] is to the OpenPGP standard. I don't read the appropriate section as discouraging the use of the "quick check" bytes. I only see a discussion of the issues. There is no security implication for such use in any sort of normal OpenPGP environment and it is an important usability improvement. The popular GnuPG checks the 2 bytes under discussion so there is wide usage of the feature. | + | Reference [18] is to the OpenPGP standard. I don't read the appropriate section as discouraging the use of the "quick check" bytes. I only see a discussion of the issues. There is no security implication for such use in any sort of normal OpenPGP environment and it is an important usability improvement. The popular GnuPG (and likely others) |
- | I was puzzled about why the EFAIL paper was spending so much time talking about the two quick check bytes in a section about a downgrade | + | I was puzzled about why the EFAIL paper was spending so much time talking about the two quick check bytes in a section about a transmogrification |
gpg: decryption failed: Bad session key | gpg: decryption failed: Bad session key | ||
- | ... which is due to a failed quick check. The message actually could be decrypted with the key provided. The quick check bytes were wrong. I have since concluded that this problem is inherent to the exploit. After guessing the 16 bits you have to clobber the quick check bytes. There is nothing special about the quick check bytes, something has to be clobbered and the quick check bytes just happen to be there. | + | ... which is due to a failed quick check. The message actually could be decrypted with the key provided |
+ | |||
+ | So we have a transmogrification attack with a very low probability of success in an environment where that is important. The attack damages the encrypted message in a way that will cause most implementations to produce a bogus fatal error. It is easily arguable that this doesn' | ||
+ | |||
+ | There is an aspect of this that could be inherently misleading to those familiar with downgrade attacks. Most often the reason for doing a downgrade attack in the first place is to force the use of some method with a vulnerability known to the attacker. That method at one time was considered secure but that security degraded in some way over time. That is not what is happening for the OpenPGP case. The OpenPGP block cipher mode without modification detection is not defective in some way. It just doesn' | ||
+ | |||
+ | In practice, this is mostly about allowing decryption of messages/ | ||
+ | |||
+ | So if you want to, say, prevent EFAIL, then if you want to support messages without modification detection you will have to take an approach that does not depend on such detection. For example, you could take into account the modification detection provided by a signature. It makes no difference to the implementation if the format was originally modification detecting and someone changed it along the way. The implications are the same. So in a very real sense, the fact that it might be possible to transmogrify a message with modification detection to one without is irrelevant to the discussion of security in the OpenPGP case. | ||
+ | |||
+ | Amazon might send you a toaster instead of a replacement lock. That doesn' | ||
+ | |||
+ | =====A Legend From the EFAIL Publicity Page===== | ||
+ | |||
+ | In line with what seems to be the current practice, EFAIL came with a website intended to increase general interest in the vulnerability(([[https:// | ||
+ | |||
+ | >//Will signatures prevent these attacks?// | ||
+ | > | ||
+ | >No. PGP and S/MIME emails are displayed in the email program independently of whether or not they are signed or whether an existing signature is valid or not. | ||
+ | |||
+ | The part after the " | ||
+ | |||
+ | >Even if signatures did matter: an attacker can copy the altered ciphertext into a separate email and create a valid signature under his own name. | ||
+ | |||
+ | This part is only relevant to S/MIME. From the relevant reference(([[https:// | ||
+ | |||
+ | >From this we understand that message takeover attacks are not possible against OpenPGP, since the attacker is not able to sign the encrypted messages. Accordingly, | ||
+ | |||
+ | Someone who did not dig through the actual EFAIL paper for the reference would end up with the impression that OpenPGP signatures were not effective against EFAIL class attacks and were generally weak. That is simply wrong. | ||
+ | |||
+ | This possible misapprehension is very relevant here. If you accept that OpenPGP signatures are ineffective against EFAIL then you would think that the modification detection provided by the block cipher mode was the last chance to resolve EFAIL. As a result the discussion in section 5.2 would seen to be very important and relevant. Otherwise, if you knew that signatures were effective against EFAIL, things would be more nuanced. You would realize that all EFAIL attack messages would show up as unsigned (anonymous) and encrypted. Unsigned but encrypted messages are troublesome in more ways than just EFAIL. So you might consider solving the larger, more general, issue instead, possibly basing your solution completely on the protection provided by signatures. At that point the discussion in section 5.2 would become irrelevant. | ||
+ | |||
+ | In fairness, it should be mentioned that the question of S/MIME signatures vs EFAIL is also somewhat nuanced. S/MIME provides two types of signatures. One " | ||
- | So we have a downgrade attack with a very low probability of success in an environment where that is important. The attack damages the encrypted message in a way that will cause most implementations to produce a bogus fatal error. It is easily arguable that this doesn' | + | ---- |
- | The only reason to support decryption using the PGP encryption method without modification detection is for backwards compatibility. It is to allow decryption of messages/ | + | [[pgpfan: |
+ | [[em: | ||
+ | [[:|Home]] | ||
pgpfan/legends.1707510213.txt.gz · Last modified: 2024/02/09 20:23 by b.walzer