Lightweight Cryptography
csrc.nist.gov
csrc.nist.gov
* https://techmonitor.ai/techonology/cybersecurity/nsa-ciphers...
* https://en.wikipedia.org/wiki/Simon_(cipher)
* https://en.wikipedia.org/wiki/Speck_(cipher)
The ISO went with PRESENT and CLEFIA for ISO/IEC 29192 ("Information technology - Security techniques - Lightweight cryptography"):
* https://en.wikipedia.org/wiki/PRESENT
* https://en.wikipedia.org/wiki/CLEFIA
A bit of a history of that episode:
* https://link.springer.com/chapter/10.1007/978-3-030-10591-4_...
S&S were eventually accepted for ISO 29167.
But this is bad, the best way to ensure that some cryptanalytic technique works is to publish it so every cryptographer in the world can review it.
The best way to ensure that a design is sound, is to publish it, but that is not true of cryptanalysis techniques. They are generally tied to a mathematical proof, so they can be quite confident of their correctness. A design, on the other hand, has an unknown number of ways in which it can fail.
Also, historically, secret cryptanalyses have proved invaluable in warfare; the most famous examples are the techniques used for Enigma, Lorenz SZ42, and the “Purple” Type B Cipher Machine, which allowed reading various crucial messages from the Nazi and Imperial Japan during WWII; had the techniques been published, the ciphers would have been improved.
There is still a very good reason to not like that situation: first, commercial information is much more sizeable and is arguably much more sensitive nowadays, as warfare is shifting to the weakening of the enemies’ economy (look at Russia turning a blind eye or more on the groups behind the Colonial Pipeline hack). Second, the government’s cryptanalysis effort is financed by the people, so it would be reasonable for them to receive its fruits.
The question comes down to "Is this a repeat of DES or Dual_EC_DRBG?" and the NSA has poisoned the well with their previous attack on cryptography standards.
Many older lightweight algorithms (or AES) for that matter requires adding either an authentication mode, or another primitive (a hash function used in HMAC for example)
I believe that has led to a problematic proliferation of only having confidentiality protection in too many IoT systems deployed.
These candidates makes it easier for developers to add the security properties their system actually needs.
Any comments on the decisions or was it just voting without explaining?
[0] https://csrc.nist.gov/publications/detail/nistir/8369/final
(Obviously it wouldn't make a ton of sense to use Go if you're resource-constrained, but having a library is worthwhile for compatibility reasons regardless.)
It helps that one of the largest factors on choosing crypto algorithms is speed on both general purpose and specialized hardware.
So, count me in the group of people that don't understand why the NIST is doing this. Will they trade any security guarantee for speed? If so, nobody should ever use one of those algorithms. If not, whatever algorithm wins here would also win a new round of general purpose crypto contest.
Edit; by not powerful enough, we mean both: too high latency and too much energy drain.
My impression from learning cryptography in the last 8 years is that cryptographic protocols are either exponentially secure, or any tiny weaknesses can be amplified into a complete break.
The only example of secure "intrapolynomial cryptography" [1] is Proof-of-Work, but it also requires work to be expended continuously. Not exactly a scheme for "underpowered devices".
[1] https://nakamotoinstitute.org/intrapolynomial-cryptography/
Edit: note that we are using RSA and, lately, Ed25519, but it takes 5-6s for the heaviest Ops and that is simply way too long. It is however secure and it works, so if that is it than that is it, it is just overkill mostly for what we need.
How resource constrained are you? Doesn’t most of your networking gear have crypto built into it already?
SPECK is probably fine. It's a pretty ordinary-looking design, if some 25 year old up-and-coming crypto academic proposed this for an application, nobody would freak out about how maybe it's a cunning trick to steal all our data. But because the NSA was involved and wasn't willing to share whatever methods they're currently using to check this was OK that's apparently reason to shoot it down.
And even though RC4 is very broken (unlike SPECK) it'd still actually be a lot of work to attack many practical applications of RC4. One of the strange things the Web gave us is a real application that looks like the outrageously convenient models in a cryptography class. Want one of the participants to repeatedly send a known plaintext using millions of different keys so you can see what that looks like? Javascript! Need to ensure your payload data is right next to the mystery data you need to decrypt? Cookies! Need to convince a participant to connect to your hostile system and decrypt large volumes of data? Embedded images and HTML email! So on the web, you can build a toy demo that breaks RC4, not really in a real time (I guess at a multi-day conference you could do an afternoon session "Preparing to break RC4" and then a morning session the next day "See, it worked") but for most protocols the attack is not practical. Attacks of course, only get better, so, this is not telling anybody to use RC4 but only underscoring how high the bar is here.
Should you use RC4? No. Definitely not. But is the RC4-encryption for the IoT data feed the weakest link in your system today? Almost certainly also no.
Am I going to buy a GPU or a wrench to crack a password? Most definitely a wrench.
I honestly do think if the data only has to be protected for a day, just use RC4 (or something similar).
It’s pretty obvious the data is worth nothing if it’s not even worth an extra battery to properly encrypt.
Most modern lightweight ciphers requires much less state (can be stored in registers even), has good key agility. And are faster. So there are numerous technical reasons to not use RC4.
As long as you don't have legacy requirements, don't use RC4.
Maybe those machines that don't even spin up a fan with 400 npm dependencies, but billions of of low end embedded devices pumped out annually.
Call me a sceptic but I think the lightcrypto contest is actually something that will benefit society far more than the post-quantum simultaneously underway.
For wired devices things changes a bit. Encryption can be dozens of times more expensive than moving your data around for processing. But if that's a problem, you need to accelerate your encryption in hardware², not to weaken the encryption.
1 - If you are, you are better with some protocol that keeps the encryption setup around between transmissions, not with weaker crypto.
2 - Just like you accelerate the "moving data around" part, because it doesn't go from the network into the main memory for free either.
Embedded devices, especially specialised ones arent poweful enough to operate sufficiently while also providing protection via the current "standard" crypto algorithms.
Furthermore for even smaller devices without Wifi, the "Internet" of things (where Internet means communicating directly over the WAN rather than to a more-capable local device) won't be compelling until the software situation has been sorted out. For example the best practices for using current Wifi smart plugs is to stick them on their own VLAN with no Internet access, communicating only with a local Home Assistant or whatever. There's no reason they themselves need to be on the WAN.
Embedded applications, energy limited (battery, power harvesting) devices, IoT, other resource constrained devices?
I also doubt that more processing = more security.
Personally, if I'm ok with the encryption being breakable, I'm also ok with not using any encryption at all. I can't imagine a scenario where I would want weak encryption.
Anyway, the way to solve that problem is to get a CPU with AES instructions.
The answer is noone yet, it's still running. Here's the list of proposals currently in the competition: https://csrc.nist.gov/Projects/post-quantum-cryptography/rou...