I have been wondering what approach to take in order to figure out what key was used to encrypt a message using the hill cipher. I know it is possible to obtain it even if it were just a known-plaintext attack, so it should be fairly possible for a chosen-plaintext one. I'm trying to figure it out with just intuition, but since I know freq. analysis won't be of help, I don't know what else to try. I want to get my head around this, but could someone point me in the right direction?
2 Answers
Sure. Assuming that you're using the encoding $A = 0$, $B = 1$, etc., just choose your plaintext messages to be the one-block strings:
$$ BA \dots A \\ AB \dots A \\ \vdots \\ AA \dots B $$
The encryptions of these strings will then directly give you the columns of your key matrix.
-
$\begingroup$ Sorry, it seems like I misunderstood your answer. I thought I could just encrypt each letter in the plaintext at a time, but it doesn't work since the key matrix is at least 2x2, right? Could you elaborate a bit more on what you mean by one-block strings? $\endgroup$– EmyrCommented Sep 27, 2012 at 2:04
-
1$\begingroup$ @Emyr: See this description of the Hill cipher: for an n.n matrix, plaintext letters are grouped by vectors of n letters. Ilmari Karonen suggest to encipher the n distinct vectors of n letters with n-1 A and 1 B; the resulting ciphertext is n vectors of n letters, which form the n.n key matrix. $\endgroup$– fgrieu ♦Commented Sep 27, 2012 at 9:39
An easier way to say what Ilmari Karonen said is: Choose the plaintext to be the identity matrix. Thus, when it is multiplied by the key, the resultant ciphertext will be the key it self.
-
1