Format Oracles on OpenPGP F. Maury J.-R. Reinhard O. Levillain H. - - PowerPoint PPT Presentation

format oracles on openpgp
SMART_READER_LITE
LIVE PREVIEW

Format Oracles on OpenPGP F. Maury J.-R. Reinhard O. Levillain H. - - PowerPoint PPT Presentation

Format Oracles on OpenPGP Format Oracles on OpenPGP F. Maury J.-R. Reinhard O. Levillain H. Gilbert ANSSI, France CT-RSA April 22, 2015 Maury et al. | ANSSI | CT-RSA 2015 1 / 19 Format Oracles on OpenPGP | Introduction Contribution We


slide-1
SLIDE 1

Format Oracles on OpenPGP

Format Oracles on OpenPGP

  • F. Maury

J.-R. Reinhard

  • O. Levillain
  • H. Gilbert

ANSSI, France

CT-RSA April 22, 2015

Maury et al. | ANSSI | CT-RSA 2015 1 / 19

slide-2
SLIDE 2

Format Oracles on OpenPGP | Introduction

Contribution

We identify new format oracles on OpenPGP implementations of symmetrically (authenticated and) encrypted data We study the number of oracle requests necessary to recover a plaintext Format oracle Requests per byte Affected implementation Invalid packet tag 2 GnuPG Double literal 26 GnuPG MDC packet header 28 GnuPG, End-to-End

Maury et al. | ANSSI | CT-RSA 2015 2 / 19

slide-3
SLIDE 3

Format Oracles on OpenPGP | Introduction

Padding Oracles

An encryption scheme is modeled by two (inverse processes) E : P, K → C D : C, K → P (or ⊥, in authenticated encryption) Issue:

Before encryption, the plaintext is usually prepared following a specific format, e.g., a padding is applied After decryption, this format has to be removed. This process may raise errors if the format is not followed

M C ˜ C ˜ M format E D unformat P ˜ P error The presence/absence of error leaks information on the result

  • f decryption

Using malleability of D, this leakage can be aggregated to decipher a target ciphertext

Maury et al. | ANSSI | CT-RSA 2015 3 / 19

slide-4
SLIDE 4

Format Oracles on OpenPGP | Introduction

Padding/Format Oracles Attacks

This principle can be used to mount chosen ciphertext attacks enabling to decipher a target ciphertext

C∗ = EK(P∗) adversary purpose: recover P∗ decryption process for DK chosen variants of C∗ derives P∗ computes Pi = DK(Ci) information about Pi is leaked (error message, timing info) Ci OK or KO

Previous results

Bleichenbacher on RSA-PKCS#1v1.5, in SSL/TLS [Bl98] Vaudenay on CBC mode used with specific padding schemes, in SSL or IPsec [Va02] Kl´ ıma and Rosa noted that the format has not to be restricted to cryptographic padding, but may be applicative [KR03]

Maury et al. | ANSSI | CT-RSA 2015 4 / 19

slide-5
SLIDE 5

Format Oracles on OpenPGP | OpenPGP

OpenPGP

Maury et al. | ANSSI | CT-RSA 2015 5 / 19

slide-6
SLIDE 6

Format Oracles on OpenPGP | OpenPGP

OpenPGP

Pretty Good Privacy: published by P. Zimmermann in 1991 Application enabling to protect

Confidentiality e.g. of emails, through hybrid encryption Authenticity, through signature

Standardized by IETF from 1997: OpenPGP message format

RFC 2440, november 1998 Updated by RFC 4880, november 2007

Main free implementation of the standard: GnuPG Renewed interest following the Snowden revelations

Increase in the number of monthly registered public keys Multiple promotional campaigns

Maury et al. | ANSSI | CT-RSA 2015 6 / 19

slide-7
SLIDE 7

Format Oracles on OpenPGP | OpenPGP

OpenPGP

Pretty Good Privacy: published by P. Zimmermann in 1991 Application enabling to protect

Confidentiality e.g. of emails, through hybrid encryption Authenticity, through signature

Standardized by IETF from 1997: OpenPGP message format

RFC 2440, november 1998 Updated by RFC 4880, november 2007

Main free implementation of the standard: GnuPG Renewed interest following the Snowden revelations

Increase in the number of monthly registered public keys Multiple promotional campaigns

Number of keys registered (by month)

1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 5,000 10,000 15,000 20,000 25,000 30,000 35,000 40,000 45,000 GnuPG Snowden

Maury et al. | ANSSI | CT-RSA 2015 6 / 19

slide-8
SLIDE 8

Format Oracles on OpenPGP | OpenPGP

OpenPGP

Pretty Good Privacy: published by P. Zimmermann in 1991 Application enabling to protect

Confidentiality e.g. of emails, through hybrid encryption Authenticity, through signature

Standardized by IETF from 1997: OpenPGP message format

RFC 2440, november 1998 Updated by RFC 4880, november 2007

Main free implementation of the standard: GnuPG Renewed interest following the Snowden revelations

Increase in the number of monthly registered public keys Multiple promotional campaigns

Maury et al. | ANSSI | CT-RSA 2015 6 / 19

slide-9
SLIDE 9

Format Oracles on OpenPGP | OpenPGP

OpenPGP

Pretty Good Privacy: published by P. Zimmermann in 1991 Application enabling to protect

Confidentiality e.g. of emails, through hybrid encryption Authenticity, through signature

Standardized by IETF from 1997: OpenPGP message format

RFC 2440, november 1998 Updated by RFC 4880, november 2007

Main free implementation of the standard: GnuPG Renewed interest following the Snowden revelations

Increase in the number of monthly registered public keys Multiple promotional campaigns

Promotion of GnuPG by FSF Europe

Maury et al. | ANSSI | CT-RSA 2015 6 / 19

slide-10
SLIDE 10

Format Oracles on OpenPGP | OpenPGP

OpenPGP Encryption Mode

Symmetric encryption is done in OpenPGP with CFB mode CFB is used with an all zero IV, and is made non-deterministic by prepending a random block to the plaintext The first 2 bytes of the initial random block are repeated

This provides a quick consistency check at the beginning of decryption, useful for password based encryption This check has been used by [MZ05] to decipher 2 bytes per block with an oracle attack

No padding, truncation of the keystream Authenticated encryption uses an ad-hoc mode

Security?

Maury et al. | ANSSI | CT-RSA 2015 7 / 19

slide-11
SLIDE 11

Format Oracles on OpenPGP | OpenPGP

OpenPGP Message Format

Packet Structure

T L V

Encrypted Packet (with Integrity Protection)

plaintext packet(s) $ $ MDC packet 0xD3 0x14 Digest Encryption SHA-1 T L encrypted data C K

Maury et al. | ANSSI | CT-RSA 2015 8 / 19

slide-12
SLIDE 12

Format Oracles on OpenPGP | Oracles

Oracles

Maury et al. | ANSSI | CT-RSA 2015 9 / 19

slide-13
SLIDE 13

Format Oracles on OpenPGP | Oracles

Format Oracles in OpenPGP Implementations

We investigated implementations that are (or can be seen) as libraries, to use to develop higher-level applications relying on OpenPGP

Application OpenPGP library

We expect these implementations to act as cryptographic back ends for the front end applications:

Perform all cryptographic operations As a consequence, be the only part where keys are manipulated

Issue: The interaction between application and library often goes beyond the ideal model of encryption schemes

Error messages are output (or logged) The API of the library does not state whether these errors are sensitive There is a risk that the front end may leak them

Result: Identification of 3 types of leakage, potential oracles (over 50 distinct oracles)

Maury et al. | ANSSI | CT-RSA 2015 10 / 19

slide-14
SLIDE 14

Format Oracles on OpenPGP | Oracles

Format Oracles in OpenPGP Implementations

We investigated implementations that are (or can be seen) as libraries, to use to develop higher-level applications relying on OpenPGP

Application OpenPGP library

We expect these implementations to act as cryptographic back ends for the front end applications:

Perform all cryptographic operations As a consequence, be the only part where keys are manipulated

Issue: The interaction between application and library often goes beyond the ideal model of encryption schemes

Error messages are output (or logged) The API of the library does not state whether these errors are sensitive There is a risk that the front end may leak them

Result: Identification of 3 types of leakage, potential oracles (over 50 distinct oracles)

Investigated implementations

GnuPG, originally an application, but can be used as a library through scripting, even produces status messages for the calling application for such cases. End-to-End, Google OpenPGP implementation in JavaScript OpenPGP.js, another library developed in JavaScript

Maury et al. | ANSSI | CT-RSA 2015 10 / 19

slide-15
SLIDE 15

Format Oracles on OpenPGP | Oracles

Format Oracles in OpenPGP Implementations

We investigated implementations that are (or can be seen) as libraries, to use to develop higher-level applications relying on OpenPGP

Application OpenPGP library

We expect these implementations to act as cryptographic back ends for the front end applications:

Perform all cryptographic operations As a consequence, be the only part where keys are manipulated

Issue: The interaction between application and library often goes beyond the ideal model of encryption schemes

Error messages are output (or logged) The API of the library does not state whether these errors are sensitive There is a risk that the front end may leak them

Result: Identification of 3 types of leakage, potential oracles (over 50 distinct oracles)

Maury et al. | ANSSI | CT-RSA 2015 10 / 19

slide-16
SLIDE 16

Format Oracles on OpenPGP | Oracles

MDC Packet Header Oracle

For integrity-protected encrypted packets, the last 22 bytes of the decrypted ciphertext form a Modification Detection Code packet

0xD3 0x14 20-byte SHA-1 Digest

GnuPG and End-to-End enforced this format by specifically checking for the two byte values 0xD314 at position 22 and 21 from the end of the decrypted ciphertext, and returning specific error messages in case

  • f mismatch

Using this leakage and CFB malleability, it is possible to recover any two bytes of plaintext by performing 216 oracle queries

Maury et al. | ANSSI | CT-RSA 2015 11 / 19

slide-17
SLIDE 17

Format Oracles on OpenPGP | Oracles

MDC Packet Header Oracle Attack

P∗

i = C∗ i ⊕ EK(C∗ i−1), recover P∗ i ⇔ recover EK(C∗ i−1)

Recovering the last 2 bytes of EK(C∗

i−1) C∗

i−1

0x00 · · · 0x00 a b n − 2 1 1 0x00 · · · 0x00 20 EK EK . . . ⊕ ⊕ ⊕ ∗ * α ⊕ a β ⊕ b ∗ ∗||α||β

decryption

= 0xD314? MDC packet

For all possible byte pairs (a, b), build and submit ciphertext Ca,b, with a and b located at the position of the MDC packet header From the only value that does not raise a MDC format error, deduce 2 bytes of EK(C ∗

i )

Complexity: at most 216 requests

Maury et al. | ANSSI | CT-RSA 2015 12 / 19

slide-18
SLIDE 18

Format Oracles on OpenPGP | Oracles

MDC Packet Header Oracle Attack

Additional bytes of EK(C∗

i−1) can be recovered for 28 requests per

byte Idea: tweak the ciphertexts to ensure one of the 2 byte conditions

C∗

i−1

0x00 · · · 0x00 a β ⊕ 0x14 0x00 · · · 0x00 u − 1 1 1 20 0x00 · · · 0x00 EK EK . . . ⊕ ⊕ ⊕ ∗ * α ⊕ a 0x14 * ∗

decryption

= 0xD3? MDC packet

It is possible to avoid the 216 initial search by using more advanced techniques Final complexity: for messages over 4kB, 28 requests per byte

detail Maury et al. | ANSSI | CT-RSA 2015 13 / 19

slide-19
SLIDE 19

Format Oracles on OpenPGP | Oracles

Invalid Identifier Oracles and Double Literal Oracle

After decryption, the plaintext is an OpenPGP message, and is parsed by the OpenPGP implementation During this parsing, errors may be encountered, for example:

An identifier value (tag, algorithm identifier, ...) is invalid There are two literal packets

All the libraries raise some sort of error in one case or another

For example, GnuPG emits a status message when confronted with two consecutive literal packets.

Using a tag oracle, it is possible to recover an arbitrary byte for 28 requests Idea: submit ciphertexts that decrypt into 2 consecutive packets, with the tag of the second packet located at the target byte position

Maury et al. | ANSSI | CT-RSA 2015 14 / 19

slide-20
SLIDE 20

Format Oracles on OpenPGP | Oracles

Impact

Downgrade attacks

CFB mode is used in all the encryption contexts A same key can be reused independently of the context It is possible to decrypt any type of OpenPGP encrypted data with any OpenPGP format oracle

Application

Usual application: email protection

Disconnected mode: difficult to get error feedback Key unlocking: user interaction may be necessary

However,

OpenPGP is used in a lot of contexts, e.g. chat The use of OpenPGP MUA proxies is considered, which might introduce unattended decryption oracles, with a feedback to the attacker

Maury et al. | ANSSI | CT-RSA 2015 15 / 19

slide-21
SLIDE 21

Format Oracles on OpenPGP | Conclusion

Conclusion

Maury et al. | ANSSI | CT-RSA 2015 16 / 19

slide-22
SLIDE 22

Format Oracles on OpenPGP | Conclusion

Disclosure

We informed the affected libraries developers on our results early on GnuPG and End-to-End patched the MDC packet header oracle Varying stance relatively to the other oracles:

End-to-End and OpenPGP.js propose a high-level API, whose errors are sanitized GnuPG considers it is the responsibility of front end developers not to mishandle the errors. They documented the sensitivity of these messages

Maury et al. | ANSSI | CT-RSA 2015 17 / 19

slide-23
SLIDE 23

Format Oracles on OpenPGP | Conclusion

How To Prevent Format Oracles?

After more than 15 years of format oracles, it is still possible to uncover such “flaws” in major cryptographic implementations Solution: authenticated encryption

Mandating authenticated encryption is a systematic way to avoid format oracles

Warning: implementation robustness

As illustrated by the MDC packet header oracle, use of authenticated encryption is not sufficient Implementations have to perform decryption steps in the right order Counter example: GnuPG implementation

Maury et al. | ANSSI | CT-RSA 2015 18 / 19

slide-24
SLIDE 24

Format Oracles on OpenPGP | Conclusion

How To Prevent Format Oracles?

After more than 15 years of format oracles, it is still possible to uncover such “flaws” in major cryptographic implementations Solution: authenticated encryption

Mandating authenticated encryption is a systematic way to avoid format oracles

Warning: implementation robustness

As illustrated by the MDC packet header oracle, use of authenticated encryption is not sufficient Implementations have to perform decryption steps in the right order Counter example: GnuPG implementation

GnuPG implementation

Decrypt Process Check Format Check Integrity ⊥ Maury et al. | ANSSI | CT-RSA 2015 18 / 19

slide-25
SLIDE 25

Format Oracles on OpenPGP | Conclusion

How To Prevent Format Oracles?

After more than 15 years of format oracles, it is still possible to uncover such “flaws” in major cryptographic implementations Solution: authenticated encryption

Mandating authenticated encryption is a systematic way to avoid format oracles

Warning: implementation robustness

As illustrated by the MDC packet header oracle, use of authenticated encryption is not sufficient Implementations have to perform decryption steps in the right order Counter example: GnuPG implementation

Decrypt-Verify-Then-Release

Decrypt Process Check Format Check Integrity ⊥ Maury et al. | ANSSI | CT-RSA 2015 18 / 19

slide-26
SLIDE 26

Format Oracles on OpenPGP | Conclusion

How To Prevent Format Oracles?

After more than 15 years of format oracles, it is still possible to uncover such “flaws” in major cryptographic implementations Solution: authenticated encryption

Mandating authenticated encryption is a systematic way to avoid format oracles

Warning: implementation robustness

As illustrated by the MDC packet header oracle, use of authenticated encryption is not sufficient Implementations have to perform decryption steps in the right order Counter example: GnuPG implementation Adopt Decrypt-Verify-Then-Release, requires buffered decryption Intermediate integrity tags if buffered decryption is not acceptable

Maury et al. | ANSSI | CT-RSA 2015 18 / 19

slide-27
SLIDE 27

Format Oracles on OpenPGP | Conclusion

Thank you for your attention

Maury et al. | ANSSI | CT-RSA 2015 19 / 19

slide-28
SLIDE 28

Format Oracles on OpenPGP | Conclusion

MDC Packet Header Attack Complexity

5 10 15 20 25 30 2 4 6 8

Length of ciphertext (kB) Number of requests (106)

Number of requests necessary to decipher a ciphertext

For short messages, the advanced strategy does not gain anything For messages of intermediate length, it is useful, but it entails a fixed cost For long messages, it can be applied for free

back Maury et al. | ANSSI | CT-RSA 2015 20 / 19