Home assignment 1, Cryptography course [PDF]

Oct 21, 2010 - Home assignment 1, Cryptography course. The assignment consists of two largely independent parts. In the

17 downloads 24 Views 186KB Size

Recommend Stories


Home Assignment
If you want to become full, let yourself be empty. Lao Tzu

Assignment 1 - Studentportalen [PDF]
you offer an account of its postmodern characteristics: John Barth, “Lost in the Funhouse” ... postmodernism and other significant literary movements, it focuses on key issues in this period: the narration of history and the body, the impact of p

blog why missionaries home assignment
Be who you needed when you were younger. Anonymous

Assignment 1
I cannot do all the good that the world needs, but the world needs all the good that I can do. Jana

Assignment 1
Don't fear change. The surprise is the only way to new discoveries. Be playful! Gordana Biernat

Assignment 1
If you are irritated by every rub, how will your mirror be polished? Rumi

Assignment 1
I cannot do all the good that the world needs, but the world needs all the good that I can do. Jana

Assignment #1
You often feel tired, not because you've done too much, but because you've done too little of what sparks

Assignment #1
Goodbyes are only for those who love with their eyes. Because for those who love with heart and soul

Assignment 1
Don't watch the clock, do what it does. Keep Going. Sam Levenson

Idea Transcript


CHALMERS UNIVERSITY OF TECHNOLOGY Dept of Computing Sciences

Home assignment 1, Cryptography course The assignment consists of two largely independent parts. In the first (and main) part you will study a well-known attack on an SSL channel and answer some questions. In the second part, you will encrypt your solution using gpg before submitting it.

Part A. An attack against SSL.

0. Introduction In this part we will explore a relatively recent (2003) attack on widely used cryptographic software, discovered by Serge Vaudenay and co-workers at EPFL in Switzerland and reported in [1]. The attack is against an SSL/TLS channel; one example instantiation could be to find the password used by an email client to get email from an IMAP mail server. In reported experiments, the attack could recover the password of a user in less than an hour. The attack is trivial to prevent by a simple change in the SSL implementation and the OpenSSL software implements this change from version 0.9.7a, February 2003 (see [2]). This fix was implemented before [1] was announced (thanks to communication between the discoverers and the OpenSSL developers), so the attack was never significant in practice, but it is anyhow interesting. In this document we will describe the attack in some detail; at some points you will find questions that you are supposed to answer in your submission. The questions are generally simple when you have understood the explanations up to that point. Thus they serve mainly to check your understanding of what is presented. Note added October 21, 2010: Variants of this attack has been subject to a lot of publicity in the last few months, under the catchy name of Padding Oracle Attacks. This is due to the discovery by Rizzo and Duong that many web frameworks (ASP.NET, JavaServer Faces, Ruby on Rails, OWASP ESAPI) are vulnerable to the attack. We describe this in more detail in the Appendix to this assignment. The appendix is independent of the assignment as such, but we hope that it provides an interesting case study.

1. Overview of SSL SSL (Secure Socket Layer) is a security protocol that runs below application-layer protocols like HTTP or IMAP, but on top of transport-layer protocols such as TCP. It provides both confidentiality and data integrity, thus providing a secure channel to the communicating applications. An overview of how the protocol operates is given in the course textbook. For the purposes of this assignment it is only necessary to know that when a connection is established, secret keys are exchanged between the parties using public-key techniques. The parties also agree on which algorithms to use for secret-key encryption and Message Authentication Code (MAC) computations. A Message Authentication Code (MAC) is a short piece of information used to authenticate a message; in other words, to confirm that the message came from the stated sender (its authenticity) and has not been changed in transit (its integrity). When the connection

1

has been established, subsequent communication during the session is encrypted using the agreed methods and keys. When a message MES is to be sent, first its MAC is computed, using the agreed method. Then the MAC is appended to MES and padding PAD added so that the full message MES || MAC || PAD makes up a whole number of blocks. The padded message is then encrypted using a block cipher in CBC mode. The IV for encryption is not sent as part of the ciphertext but is agreed on in other ways, not detailed here. The protocol is typically used in a client/server setting. On the server side we will find e.g. a web server or a mail server. The attack will be performed against the server by an active adversary, who intercepts client messages, modifies them and sends the modified message to the server. It is thus a chosen ciphertext attack. The server, on receipt of a ciphertext, performs the following steps: 1. The message is decrypted, using the CBC decryption algorithm. 2. The padding is checked to be correct and removed. 3. The MAC is checked to be correct and removed. 4. The remaining message MES is handed over to the application. If either of the checks in steps 2 or 3 fails, an error message is sent (over the secure channel, i.e. MACed, PADded and encrypted) and the session is aborted. This behaviour is typical for cryptographic protocols: any failed check is an indication of an attack and the protocol should be immediately aborted.

2. Padding In this assignment, for concreteness we make the assumption that the block size is 64 bits = 8 bytes (as is the case e.g. for 3DES). We will need to be specific about how padding is done. Let the length in bytes of MES || MAC be n. The padding then consists of 8 − (n mod 8) bytes, each with the value 7 − (n mod 8) (as an eight-bit integer). So if n is a multiple of 8, padding consists of eight bytes, each with value 7 (= 000001112 ). We now introduce some notation: With capital letter variables (S,C,. . .) we will always refer to blocks. We will need to describe blocks also as sequences of eight bytes, for which we will use the notation < b1 , b2 , b3 , b4 , b5 , b6 , b7 , b8 >. The last block of a full message, i.e. the one that contains the padding, we will call the pad block. The pad block thus has one of the following eight forms, where the ?:s represent the last bytes of the unpadded message:

Smile Life

When life gives you a hundred reasons to cry, show life that you have a thousand reasons to smile

Get in touch

© Copyright 2015 - 2024 PDFFOX.COM - All rights reserved.