HOME

TheInfoList



OR:

In cryptography, a padding oracle attack is an attack which uses the padding validation of a cryptographic message to decrypt the ciphertext. In cryptography, variable-length plaintext messages often have to be padded (expanded) to be compatible with the underlying
cryptographic primitive Cryptographic primitives are well-established, low-level cryptography, cryptographic algorithms that are frequently used to build cryptographic protocols for computer security systems. These routines include, but are not limited to, one-way hash fun ...
. The attack relies on having a "padding
oracle An oracle is a person or thing considered to provide insight, wise counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. If done through occultic means, it is a form of divination. Descript ...
" who freely responds to queries about whether a message is correctly padded or not. The information could be directly given, or leaked through a side-channel. The earliest well-known attack that uses a padding oracle is Bleichenbacher's attack of 1998, which attacks RSA with PKCS #1 v1.5 padding. The term "padding oracle" appeared in literature in 2002, after Serge Vaudenay's attack on the CBC mode decryption used within symmetric
block cipher In cryptography, a block cipher is a deterministic algorithm that operates on fixed-length groups of bits, called ''blocks''. Block ciphers are the elementary building blocks of many cryptographic protocols. They are ubiquitous in the storage a ...
s. Variants of both attacks continue to find success more than one decade after their original publication.


Asymmetric cryptography

In 1998,
Daniel Bleichenbacher Daniel Bleichenbacher (born 1964) is a Swiss cryptographer, previously a researcher at Bell Labs and Google, and currently employed at Cure53. He received his Ph.D. from ETH Zurich in 1996 for contributions to computational number theory, particul ...
published a seminal paper on what became known as Bleichenbacher's attack (also known as "million message attack"). The attack uses a padding oracle against RSA with PKCS #1 v1.5 padding, but it does not include the term. Later authors have classified his attack as a padding oracle attack. Manger (2001) reports an attack on the replacement for PKCS #1 v1.5 padding, PKCS #1 v2.0 "OAEP".


Symmetric cryptography

In symmetric cryptography, the padding oracle attack can be applied to the CBC mode of operation. Leaked data on padding validity can allow attackers to decrypt (and sometimes encrypt) messages through the oracle using the oracle's key, without knowing the encryption key. Compared to Bleichenbacher's attack on RSA with PKCS #1 v1.5, Vaudenay's attack on CBC is much more efficient. Both attacks target crypto systems commonly used for the time: CBC is the original mode used in
Secure Sockets Layer Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network, such as the Internet. The protocol is widely used in applications such as email, instant messaging, and voice over IP, ...
(SSL) and had continued to be supported in TLS. A number of mitigations have been performed to prevent the decryption software from acting as an oracle, but newer attacks based on timing have repeatedly revived this oracle. TLS 1.2 introduces a number of authenticated encryption with additional data modes that do not rely on CBC.


Padding oracle attack on CBC encryption

The standard implementation of CBC decryption in block ciphers is to decrypt all ciphertext blocks, validate the padding, remove the PKCS7 padding, and return the message's plaintext. If the server returns an "invalid padding" error instead of a generic "decryption failed" error, the attacker can use the server as a padding oracle to decrypt (and sometimes encrypt) messages. The mathematical formula for CBC decryption is :P_i = D_K(C_i) \oplus C_, \text i \in \ :P_0 = IV \oplus D_K(C_0). As depicted above, CBC decryption XORs each plaintext block with the previous block. As a result, a single-byte modification in block C_1 will make a corresponding change to a single byte in P_2. Suppose the attacker has two ciphertext blocks C_1, C_2 and wants to decrypt the second block to get plaintext P_2. The attacker changes the last byte of C_1 (creating C_1') and sends (IV,C_1',C_2) to the server. The server then returns whether or not the padding of the last decrypted block (P_2') is correct (a valid PKCS#7 padding). If the padding is correct, the attacker now knows that the last byte of D_K(C_2) \oplus C_1' is \mathrm, the last two bytes are 0x02, the last three bytes are 0x03, …, or the last eight bytes are 0x08. The attacker can modify the second-last byte (flip any bit) to ensure that the last byte is 0x01. (Alternatively, the attacker can flip earlier bytes and
binary search In computer science, binary search, also known as half-interval search, logarithmic search, or binary chop, is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the m ...
for the position to identify the padding. For example, if modifying the third-last byte is correct, but modifying the second-last byte is incorrect, then the last two bytes are known to be 0x02, allowing both of them to be decrypted.) Therefore, the last byte of D_K(C_2) equals C_1' \oplus \mathrm. If the padding is incorrect, the attacker can change the last byte of C_1' to the next possible value. At most, the attacker will need to make 256 attempts to find the last byte of P_2, 255 attempts for every possible byte (256 possible, minus one by
pigeonhole principle In mathematics, the pigeonhole principle states that if items are put into containers, with , then at least one container must contain more than one item. For example, of three gloves, at least two must be right-handed or at least two must be l ...
), plus one additional attempt to eliminate an ambiguous padding. After determining the last byte of P_2, the attacker can use the same technique to obtain the second-to-last byte of P_2. The attacker sets the last byte of P_2 to \mathrm by setting the last byte of C_1 to D_K(C_2) \oplus \mathrm. The attacker then uses the same approach described above, this time modifying the second-to-last byte until the padding is correct (0x02, 0x02). If a block consists of 128 bits ( AES, for example), which is 16 bytes, the attacker will obtain plaintext P_2 in no more than 256⋅16 = 4096 attempts. This is significantly faster than the 2^ attempts required to bruteforce a 128-bit key.


Encrypting messages with Padding oracle attack (CBC-R)

CBC-R turns a decryption oracle into an encryption oracle, and is primarily demonstrated against padding oracles. Using padding oracle attack CBC-R can craft an initialization vector and ciphertext block for any plaintext: * decrypt any ciphertext , * select previous cipherblock freely, * produce valid ciphertext/plaintext pair . To generate a ciphertext that is blocks long, attacker must perform numbers of padding oracle attacks. These attacks are chained together so that proper plaintext is constructed in reverse order, from end of message () to beginning message (''C''0, IV). In each step, padding oracle attack is used to construct the IV to the previous chosen ciphertext. The CBC-R attack will not work against an encryption scheme that authenticates ciphertext (using a
message authentication code In cryptography, a message authentication code (MAC), sometimes known as an authentication tag, is a short piece of information used for authentication, authenticating and Data integrity, integrity-checking a message. In other words, it is used t ...
or similar) before decrypting.


Attacks using padding oracles

The original attack against CBC was published in 2002 by Serge Vaudenay. Concrete instantiations of the attack were later realised against SSL and IPSec. It was also applied to several
web framework A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build a ...
s, including
JavaServer Faces Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the ...
,
Ruby on Rails Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pa ...
and
ASP.NET ASP.NET is a server-side web-application framework designed for web development to produce dynamic web pages. It was developed by Microsoft to allow programmers to build dynamic web sites, applications and services. The name stands for Ac ...
as well as other software, such as the
Steam Steam is water vapor, often mixed with air or an aerosol of liquid water droplets. This may occur due to evaporation or due to boiling, where heat is applied until water reaches the enthalpy of vaporization. Saturated or superheated steam is inv ...
gaming client. In 2012 it was shown to be effective against PKCS 11 cryptographic tokens. While these earlier attacks were fixed by most TLS implementors following its public announcement, a new variant, the Lucky Thirteen attack, published in 2013, used a timing side-channel to re-open the vulnerability even in implementations that had previously been fixed. As of early 2014, the attack is no longer considered a threat in real-life operation, though it is still workable in theory (see
signal-to-noise ratio Signal-to-noise ratio (SNR or S/N) is a measure used in science and engineering that compares the level of a desired signal to the level of background noise. SNR is defined as the ratio of signal power to noise power, often expressed in deci ...
) against a certain class of machines. , the most active area of development for attacks upon cryptographic protocols used to secure Internet traffic are downgrade attack, such as Logjam and Export RSA/FREAK attacks, which trick clients into using less-secure cryptographic operations provided for compatibility with legacy clients when more secure ones are available. An attack called
POODLE The Poodle, called the in German () and the in French, is a breed of water dog. The breed is divided into four varieties based on size, the Standard Poodle, Medium Poodle, Miniature Poodle and Toy Poodle, although the Medium Poodle is no ...
(late 2014) combines both a downgrade attack (to SSL 3.0) with a padding oracle attack on the older, insecure protocol to enable compromise of the transmitted data. In May 2016 it has been revealed in that the fix against Lucky Thirteen in OpenSSL introduced another timing-based padding oracle.


References

{{SSL/TLS Cryptographic attacks Transport Layer Security Computation oracles