# course-HW 4 Solutions
- prev:: [[course-2022-12-09 Session 4 Notes]]
## Exercises
> https://uncloak.org/courses/rust+cryptography+engineering/course-2022-12-09+Session+4+Notes#Exercises
1. Justify or disqualify each of the following schemes, with message $m$, tag $t$, and ciphertext $c$.
- I assume I should write some proofs here...
- OMG... they are just simply E and M, M then E, E then M.
- $t = MAC(m)$ $c = E(m)$, send $(c, t)$
- because $c,t$ both relate to $m$, is too much data leaked? Is there a "linear" relation between $E$ and $MAC$ on $m$?.
- or... is insecure because you have to check the message with $t$ before $E$ so you leak some of $m$ on failed attempts? *** (this seems more general of an answer than above)
- $t = MAC(m)$ $c = E(m||t)$, send $c$
- seems more secure, $t$ is never sent in clear. Encrypted with || m, but not sure if extra data needs to be sent to decrypt?
- Aren't you supposed to concat $0^b$ or random bits instead of $m$?
- $t = MAC(c)$ $c = E(m)$, send $(c,t)$
- seems secure and allows the receiver, with $c,t$, check if $c$ has been tampered with from seeing $t$, so no leaking of data about $m$ from failed attempts?
- Intuition above.... no justification...
2. You're the adversary, watching a TLS handshake. Pick three steps from [TLS Handshake - OSDev Wiki](https://wiki.osdev.org/TLS_Handshake#Handshake_Overview), and describe how the step prevents you from (pick one):
- Reading message content (confidentiality)
- The client sends a Encrypted Handshake Message; first ones to be sent encrypted.
- They contain a hash of the initial handshake messages and are here to ensure these were not tampered with.
- Tampering with message content (integrity)
- The server sends a Server Key Exchange message, initiating the key exchange and signing it with its public key: because server signed with public key.
- Once this step is achieved, the server and client can communicate without the attacker being able trick either party by injecting their own messages: Change Cipher Spec message
- Impersonating either party (authenticity)
- The server sends its certificates. These are used by the client to verify that it is actually talking to the site it thinks it is talking to, as opposed to a malicious site.