Mittwoch, 20. August 2014

Old attacks on new TLS implementations - or how a tiny side channel can break your crypto

This week at USENIX Security my colleague Chris Meyer will present our latest research paper on TLS attacks: "Revisiting SSL/TLS Implementations: New Bleichenbacher Side Channels and Attacks" (written by him, Eugen Weiss, Jörg Schwenk, Sebastian Schinzel, Erik Tews and me) [paper].
This blog post is intended for people who do not like boring long research papers and would like to get a comprehensive summary what's going on. As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 title suggests we developed some attacks on TLS implementations. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following, I will try to give you an intuition behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se attacks and explain why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y worked.


Some prerequisites

For understanding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks, you need to have some background on adaptive chosen-ciphertext attacks and RSA PKCS#1 usage in TLS.

Adaptive chosen-ciphertext attacks

In general we apply a specific adaptive chosen-ciphertext attack.
In an adaptive chosen-ciphertext attack scenario, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's goal is to decrypt a ciphertext without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext is not relevant, let's say cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker eavesdropped it). Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original ciphertext, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker iteratively generates new ciphertexts, which are somehow related to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original one. He sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertexts to a receiver - oracle - and observes its responses which leak specific information about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 validity of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decrypted message. With each response cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker learns some plaintext information. He repeats cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se steps until he achieves his goal and decrypts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole message. See cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following figure for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack illustration.

Many of you are probably familiar with padding oracle attacks, which also belong to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 family of adaptive chosen-ciphertext attacks. In padding oracle attacks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker exploits an information about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#5 message validity while using Cipher Block Chaining (CBC) mode of operation. In fact, we are also going to adapt a specific padding oracle attack called Bleichenbacher's attack...but this attack is based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA PKCS#1 padding.

RSA PKCS#1 v1.5

RSA PKCS#1 v1.5 (in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following referenced as PKCS#1) padding is intended for messages going to be encrypted with RSA. In order to encrypt a message k, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message is first prepended with 0x00, some random bytes and 0x00 0x02. The number of random bytes is chosen in a way so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padded message achieves specific block length (1024, 2048 or 4096 bits). See cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next figure depicting a 16 byte long message padded to achieve 256 bytes (2048 bits).


We write m=00 02 ...padding... 00 k.
The message decryptor processes an encrypted message as follows. It decrypts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message, checks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message structure, searches for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first 0x00 byte after 0x02, and unpads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret message.

PKCS#1 in TLS Handshake

PKCS#1 is used in many applications and standards. In case of SSL/TLS, it is applied in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handshake protocol to transfer a PremasterSecret:
In order to get a basic idea behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks, it is not necessary to understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole handshake message flow. You just need to know that a TLS handshake protocol is used to establish a TLS session key. The session key is established using several public values (like client/server random) and PremasterSecret. PremasterSecret is a 48 byte long value generated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client and sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server in a ClientKeyExchange message, encoded using PKCS#1:

PremasterSecret consists of two protocol version bytes (in this case 0x03 0x01) and 46 random bytes. If an attacker gets in possession of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se 46 random bytes, he can decrypt a TLS session key and thus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complete TLS session (since all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r values are public).

Bleichenbacher's "million message" attack

It was a very long time ago (in 1998) as Daniel Bleichenbacher presented his "million message" attack on RSA PKCS#1 [million-message-attack]. The attack works independently of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protocol using PKCS#1. Daniel Bleichenbacher showed how to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack to several protocols like SSL, WTLS or IPSec. Bardou et al. improved cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack performance and showed how to apply it to crypto hardware [crypto-hardware-attacks] (Graham, thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code ;)) In all cases, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is only a need for a validity oracle responding with 1 or 0 based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 validity of a decrypted message.
In case of SSL/TLS, it was possible to construct an oracle based on alert messages returned by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server: In a case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client sent an invalid PKCS#1 message, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server directly responded with an alert message. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise, it proceeded with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handshake flow.

Attack Intuition

I am not going into technical details about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole attack, I just try to give you some intuition behind it. The whole attack works thanks to an RSA property called malleability. Given an RSA ciphertext, this property allows anyone to multiply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying plaintext - without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key.
For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description purposes, let us define a variable B=2^8(N-2), where N is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 byte length of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA key (this just means that, for example, 2B = 0x00 02 00 ... 00). A valid PKCS#1 message always belongs to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interval <2B, 3B).
Now, imagine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is an encrypted PKCS#1 message m lying near cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3B value. Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malleability property, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can multiply m with various s values (s=2, s=3, s=4 ...). 

He does this until he finds a new value m'=m*sx, which also belongs to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interval <2B,3B). In that case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle responds with 1 and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker knows he created a valid plaintext.
The same scenario can be observed also when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original message m lies near cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2B value:
However, in that case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of steps (multiplications) is larger. 
In general, it holds that:
  • Large s value indicates m is in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near of 2B
  • Small s value indicates m is in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near of 3B
The attacker can proceed with searching for furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r s values producing furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r valid PKCS#1 messages. This helps him to reduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interval, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original message m lies in.

Attack performance

Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is called "million message" attack, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of oracle requests varies and can be much more smaller than one million. The number of requests depends on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle strength. In general, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle strength can be measured using a probability that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle responds with 1 when a given decrypted message starts with 0x00 02.
If a message starts with 0x00 02 and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle responds with 0, this is a false negative. False negatives lead to a worse attack performance.

Countermeasure

RFC-5246 (and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r standards using PKCS#1) proposes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following countermeasure: 
In any case, a TLS server MUST NOT generate an alert if processing an
   RSA-encrypted premaster secret message fails, or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 version number
   is not as expected.  Instead, it MUST continue cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handshake with a
   randomly generated premaster secret.
This should prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information leakage so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker learns nothing about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 message validity.

Our challenges

The only prerequisite for executing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is an oracle, which allows to distinguish valid from invalid PKCS#1 messages. If such an oracle is given, it is possible to execute Bleichenbacher's attack. Thus our challenge was to analyze current TLS implementations and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility for turning a server into a PKCS#1 validity oracle. In addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 direct messages, we focused on timing side channels. Once a side channel was found, we needed to analyze cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle strength and execute a complete attack.

Attacks and side channels

Ok, so now we are ready to describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interesting part with our practical attacks.

Side channel 1: Error messages in JSSE

We were extremely surprised as we analyzed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JSSE library. JSSE (Java Secure Socket Extension) is a default library for providing SSL functionality in Java. After sending differently formatted PKCS#1 messages, we found out JSSE responded with different errors: INTERNAL_ERROR and HANDSHAKE_FAILURE. The INTERNAL_ERROR message was caused by an internal ArrayIndexOutOfBoundsException, which was not handled by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JSSE library. Depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key length, this exception was thrown in specific cases, see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next figure:
As can be seen, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 INTERNAL_ERROR was produced in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message started with 0x00 02 and a 0x00 byte appeared at a specific position. Thus, when an INTERNAL_ERROR was returned, we knew cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message definitely started with 0x00 02, and we were able to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 direct Bleichenbacher attack...surprising since it should have been fixed 15 years ago.
We applied a real attack using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 different error messages. We needed about 177,000 queries to a JSSE server applying 2048 bit keys and about 74,000 queries to a JSSE server applying 4096 bit keys. We needed lesser queries to a server using 4096 bit keys because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 constructed oracle was less restrictive: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 probability of getting a valid server response for messages starting with 0x00 02 was higher. The attack on a server using 1024 bit keys showed up not to be practical, since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 probability of getting an INTERNAL_ERROR message was very low.

Side channel 2: Additional random number generation

After finding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first side channel, we decided to analyze cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code of typical TLS implementations. We found out that GnuTLS, OpenSSL and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r implementations do not apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack countermeasure properly and produce some timing leakage with an additional random number generation:

decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext: m := dec(c)
if ( (m ≠ 00||02||PS||00||k) OR
     (|k| ≠ 48) ) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n
   generate a random PMSR
   proceed with PMS := PMSR
else
   proceed with PMS := k


As can be seen, a random PremasterSecret is generated only in a case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message has a valid structure. However, furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r analysis showed that it is not possible to execute a practical attack. First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timing difference between valid and invalid messages was very small. Second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 probability of getting a valid message was very very low, thus executing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack would last too long.

Side channel 3: Additional internal exception in JSSE

This attack was again applied on JSSE and it is actually my favourite one. The side channel comes from an additional exception, which was generated inside of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 Java method. In short, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 unpadding method worked as follows:
private byte [] unpadV15 (byte[] padded) throws BadPaddingException {
   if (not PKCS compliant) {
       throw new BadPaddingException();
   } else {
       return unpadded text;
   }
}
As can be seen, an additional BadPaddingException was generated in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 structure was invalid. This exception was caught on different layers so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client could not observe any different message. However, exception processing in Java (and in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r object oriented languages as well) is pretty  expensive (think of generating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole stack trace etc.). We evaluated that an additional exception generation lasts about 20 microseconds. And we could really exploit this behaviour.
Based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timing observations, we could differentiate valid from invalid messages. Longer response times mean an exception was thrown (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message is invalid). Shorter response times indicated no exception was thrown and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message had a valid PKCS#1 structure:

We were able to construct an oracle using this behaviour and execute a whole Bleichenbacher attack in a LAN environment. We needed about 20 hours and 20,000 oracle requests to decrypt a PremasterSecret. To determine a message validity, for each oracle request we needed to send about 750 server requests. Thus, a few millions of messages in total were sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.

Side channel 4: Unexpected behaviour by some hardware appliances

In our lab we had a possibility to test cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TLS implementation of IBM Datapower (a specific XML Security hardware appliance) which had a very specific timing leakage resulting from an improper PKCS#1 structure verification. The TLS framework checked only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second 0x02 byte in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PKCS#1 message. In case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second byte was equal to 0x02, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processing lasted a few microseconds longer than in by processing different ClientKeyExchange messages: 


We knew from our previous timing attacks on JSSE that such a timing leakage can be practically exploited. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 constructed oracle was not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 oracle used by Bleichenbacher. The longer response times were produced not only by messages starting with 0x00 0x02, but also with messages starting with 0x01 0x02, 0x02 0x02, etc. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end, this showed up to be a real benefit since we could adapt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original attack and make it much more performant with such an oracle. Our new attack needed only about 4700 oracle queries to decrypt a PremasterSecret. The whole attack took about 40 hours and we issued about 4 million queries in total.
During our research, we found out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem was not caused by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IBM Datapower appliance, but by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying Cavium accelerator chip. Thus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same attack was very likely applicable to different appliances from F5 (confirmed by F5), Cisco, Citrix or Juniper Networks as well.

What did we learn?

The results showed how important it is to implement crypto libraries with constant timing functions. We showed that even a tiny side channel from an additional exception could lead to catastrophic results and could be used to execute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole Bleichenbacher attack over LAN. Constant timing becomes even more relevant since crypto is moved to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser (see Web Crypto API), where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker could execute "localhost-like" attacks.
In addition, we motivate for implementation of pentesting tools for TLS and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r crypto libraries.

FAQ:

Heartbleed, CCS, Tripple Handshake...why do you not have a cool name for this attack?

These attacks are not new attacks on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TLS protocol. We just show how Bleichenbacher attacks (from 1998) can still be applied to several PKCS#1 implementations using new practical side channels. 
We hope that our research will be accepted by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 community also without having a new attack name :)

Are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 described applications fixed?

Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks have been fixed during our research:
  • The direct attack 1 on Java was fixed in October 2012 (with JDK 6u37). 
  • The timing attack on Java was fixed in January 2014 (with JDK 7u45, 6u65).
  • Cavium Accelerators were fixed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent months, please take a look at your vendor's site about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current status. For example, IBM and F5 track cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se problems in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir security bulletins and under cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se CVE numbers: CVE-2014-4024, CVE-2014-0852.
  • We also proposed a fix for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Bouncy Castle library. However, our messages were ignored. The library (to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best of our knowledge) remains vulnerable to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 timing attacks, C# as well as Java version. Java library was fixed a few weeks ago: http://www.bouncycastle.org/jira/browse/BJA-487. C#???
  • We did not notify developers of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r libraries since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks showed up not to be practical.

My application was vulnerable to this attack. Do I need to change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server's private key and certificate now?

No, this attack was not as dangerous as for example heartbleed. It does not enable an attacker to recover server's RSA private key. 
However, consider that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack could have enabled an attacker to decrypt specific TLS connections transporting secret data.

Should I use RSA PKCS#1 v1.5 in my implementation?

Even though RSA PKCS#1 v1.5 is a very old and in general insecure standard, it is still used in many many applications and standards. For example, in 2012 we showed that even if all countermeasures are correctly implemented, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re still exist ways to execute Bleichenbacher attacks in XML Encryption [xml-enc]. For this reason, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML frameworks restricted usage to RSA PKCS#1 v2.0 (also known as RSA-OAEP). We assume, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are more applications beyond TLS/XML Encryption which remain vulnerable.
If your implementation uses RSA PKCS#1 v1.5, we recommend you switch to RSA-OAEP.

 

My talk at Deepsec: https://vimeo.com/116972878

Beliebte Posts