I'm pretty new to all of this and I apologize in advance if (as, I'm sure it has) this question has been asked and answered a million times previous, but I couldn't find anything through searching (which might speak to my less than ideal google-fu).

I understand intuitively that the Vigenere cipher is insecure because the fact that the keyword is shorter than the plaintext will inevitably lead to repeated patterns and that probabilistically you can then crack the whole thing. Then, using Shannon's theorem, we know that the KEY must be at least just as long as the PLAINTEXT and therefore key-sharing gains us nothing.

But, what would be the problem with sharing some resource as our keyword. Like for instance, what if we agreed that our keyword would be Moby Dick? Then, we only need to share the TITLE of the book and then we have access to something that could be longer than the plaintext? Or, even more secure, what if we pick a de dicto key - something that picks out a changing element. For instance, if we choose "The Leftmost Column of the NY Times" - that changes on a day-to-day basis, but is always going to be secure?

I'm just a bystander curious about what he's missing and/or misunderstanding. Thanks.

  • $\begingroup$ Using natural language as key is enough to break it, no key-reuse necessary. $\endgroup$ – CodesInChaos Dec 18 '17 at 19:53

Since your key is non repeating, you're essentially talking about one-time-pad, not a vigenere cipher.

There are two problems with what you propose:

  1. The key is natural language. This means that the key acts like a second use of the pad. This is enough to recover the plaintext with few mistakes.

    The one-time-pad doesn't just require a long enough key, the key must also be perfectly random.

  2. The shared text is public knowledge, and thus presumably known to the attacker. So the attacker could simply test every text in their library against your ciphertext. This is quite feasible using computers, even for huge libraries.

Not the answer you're looking for? Browse other questions tagged or ask your own question.