You are on a submarine and there is an encrypted message that you want to read. Two people must use their keys at the same time in order to obtain the plain text. What is best cryptographic primitive to use? Are the following two implementations suitable?
plain_text=decrypt(Key1 XOR key2,ciper_text,IV)
plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)
(Assume AES-256-CBC with a CMAC block if it matters to you.)
Bulava is a Submarine Launched Ballistic Missile(SLBM) which can deliver six independently targeted warheads, each equivalent to 150 kilotons of TNT. Each missile is between 50 and 60 times more powerful than the bomb dropped on Hiroshima, which was approximately 15 kilotons.
“A code consisting of eight zeroes has never been used to enable or launch a MM ICBM, as claimed by Dr. Bruce Blair.” This assertion comes from a U.S. Air Force document specially prepared for the U.S. Congress to rebut my claim to the contrary [1].
Statista puts Russia's arsenal at 5,997 nuclear warheads as of January 2022 and the U.S. with 5,428 nuclear warheads. According to the Bulletin of the Atomic Scientists, Russia has a stockpile of around 4,477 weapons in its nuclear arsenal. In comparison, the U.S. has around 3,708 warheads.
Guided by radar and satellite sensors, they're designed to pursue an enemy missile into space. There, they release a “kill vehicle” to intercept and destroy the nuclear warhead above the atmosphere after it separates from the incoming missile.
XORing two randomly generated keys together to obtain the final secret is certainly secure. The general form of this is known as 'secret sharing', and there are secure algorithms that allow you to generate 'm of n' schemes, where you generate n shares, and any m are sufficient to deduce the original key.
The best known scheme is Shamir's Secret Sharing, and involves generating a random m-1 degree polynomial with the key as the constant, then sampling it at n locations, and giving those to the individuals as key shares.
By XORing the keys you're guaranteeing that every single bit in Key1 can potentially be modified by every single bit in Key2 (and vice-versa). It means that the holder of Key1 has no way of calculating either Key2 or the result of XORing Key1/Key2.
Another way of stating this is that the holder of Key1 would have to brute force every single possible combination of bits to exhaust the available keyspace. The fact that he already holds one of the keys doesnt help him at all.
There are other ways of combining two keys together, but a simple XOR is all that is required when the keys are the same length.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With