# Lost Modulus Again
## Challenge Summary
We are given $e$, $d$, $p^{-1}\ \text{mod}\ q$ and $q^{-1}\ \text{mod}\ p$ for a particular RSA setting. We are also given a ciphertext $c$ that is encrypted by the aforementioned RSA key.
The objective is to find the corresponding message, $m$, for the ciphertext.
## Solution
### Part I: Forgive my bad eyesight
The most of the time spent on the challenge is to figure out $d$ is _actually_ the private key.
What was given in the output file was:
```
Key([e = 1048583, n = 20899..., x = 22886..., y = 13835...])
```
...and guess what, the $n$ was actually $d$ in disguise! I bet I better notice the challenge title and the source code next time.
### Part II: How to find the lost modulus?
#### From $e$ to $\phi(n)$
The first problem is to find $\phi(n)$. Remind that $ed\equiv 1\ (\text{mod}\ \phi(n))$, implying that there exists integers $k$ such that $ed-1=k\cdot\phi(n)$.
Since $d < \phi(n)$ in this challenge, we have $k\cdot\phi(n) = ed-1 < e\cdot \phi(n)$, therefore $k < e$.
Therefore, we can obtain a list of candidates for $\phi(n) = \frac{ed-1}{k}$ by exhausting $1 \leq k < e$.
#### From $\phi(n)$ to a _large_ multiple of $n$
Assume that we have found the correct $\phi(n)$ for the challenge. A bit of math would immediately lead us to the lost modulus: $$\phi(n)\cdot x \equiv (p-1)(q-1)\cdot x\equiv(-1)(q-1)(q^{-1})\equiv q^{-1} - 1\equiv x-1\ (\text{mod}\ p)$$
From the above, we know that there is some integer $m$ with $\phi(n)\cdot x-x+1=m\cdot p$. Similarly, there is some integer $m'$ with $\phi(n)\cdot y-y+1=m'\cdot q$.
Multiplying the two equations, we have $$Mn=mm'pq=\left(\phi(n)\cdot x-x+1\right)\left(\phi(n)\cdot y-y+1\right),$$ where $M = mm'$. This means that if we know $\phi(n)$, we can then deduce a _large_ multiple of $n$.
#### Polishing the multiple of $n$
At this moment, we are having a multiple of $n$. This is not ideal as it sounds like we need to factorize $n$ from its multiple.
However, it is not. Since we know $e$ and $d$, we can try arbitrary message $m_i$ (coprime with $n$). Since ${m_i}^{ed}\equiv m_i\ (\text{mod}\ n)$, ${m_i}^{ed} - m_i$ should be a multiple of $n$. What we can do is to compute $\text{gcd}\left({m_1}^{ed} - m_1, {m_2}^{ed} - m_2, ...\right)$.
This should be equal to $r\cdot n$ for a relatively smaller $r$. Since $n\approx \phi(n)$, $r \approx \frac{n}{\phi(n)}$. We guess $r=\left[\frac{n}{\phi(n)}\right]$ (should be right as it is quite small). Hence we can finally find the modulus $n$.
And we have the flag: `hitcon{1t_is_50_easy_t0_find_th3_modulus_back@@!!@!@!@@!}`!
###### tags: `HITCON CTF 2019 Quals` `Cryptography` `RSA`