I understand the premise of weak keys in DES and cryptography. From searching online, I understand that keys that are comprised of all zeroes / all ones / alternating ones and zeroes / alternating zeroes and ones are considered weak and should not be used. If I was to use the following key: 0110 0110 0001 0001, would this be considered weak; and if so, how come?
-
3$\begingroup$ Please fix the question. The key $\mathtt{0110011000010001_h}$ is not a DES key because it comprises two bytes at $\mathtt{00_h}$, and these do not have the required odd parity. Changing these two bytes to $\mathtt{01_h}$ (by adjusting the low-order bit for odd parity, as customary), the key becomes $K=\mathtt{0110011001010101_h}$ and is not one of the four DES weak keys. Correspondingly, it does not hold that for any 8-byte block $X$ we have $\text{DES}_K(\text{DES}_K(X))=X$, which is a common characterization of a weak key $K$. Is the key you consider $\mathtt{0101010101010101_h}$ ? $\endgroup$– fgrieu ♦Jun 11, 2021 at 16:15
-
1$\begingroup$ DES takes 56-bit keys. 3DES takes 112-bit keys. Anything less than 100 bits or so is weak in practice, though not as weak as a true "weak key". What you posted isn't even a valid DES key. $\endgroup$– SAI PeregrinusJun 11, 2021 at 16:18
-
$\begingroup$ Notice that It does not make sense to consider a single key as weak or strong. It's more relevant to consider a procedure to generate the key as strong or weak (and as a first trivial condition, this procedure should have enough entropy to avoid brute-force attack). $\endgroup$– IevgeniJun 11, 2021 at 16:47
1 Answer
DES keys are considered to be weak for two reasons depending on the context for what "weak" means.
First, DES keys are considered to be weak because they are only 56 bit keys giving only $2^{56}$ possible keys. That small of a key space is searchable by brute force by even fairly low-capability attackers.
Second, DES keys can be considered to be weak because of how the algorithm use the specific key. DES uses the key to generate a subkeys for each of the 16 rounds. The algorithm that generates the subkeys is simple, and will generate the same value for multiple subkeys. Key values that result in repeated subkey values are considered to be weak. Keys values that result in distinct subkey values are considered to be strong. (Though still weak against brute force.)