0
$\begingroup$

I am looking for symmetric cryptography algorithms that can be implemented on chips with very few resources (about 256K RAM and 16MHz CPU).

An algorithm that works perfectly in this environment is RC4, however it has multiple vulnerabilities. Are there algorithms that can be implemented in this type of systems that do not have known vulnerabilities?

$\endgroup$
8
  • 1
    $\begingroup$ 256K should be plenty of space for AES. Also for embedded systems "few resources" would be more like 4K ROM and 128 or 256 bytes RAM (Intel MCS-51) $\endgroup$ Oct 20, 2022 at 15:36
  • $\begingroup$ I have implemented AES and it is too slow. It is necessary to mention that the chip performs other functions so I do not have the 256K of RAM available. In fact, I can't store the AES precomputed tables, that's why it works so slow for me. I am looking for something like RC4, which works fine for me, but I need something without vulnerabilities. $\endgroup$ Oct 20, 2022 at 15:41
  • $\begingroup$ Did you see the lightweight cryptography? Simon, Speck, PRESENT, etc should be good for you... $\endgroup$
    – kelalaka
    Oct 20, 2022 at 17:20
  • $\begingroup$ Thanks kelalaka, looks like this is just what I'm looking for. Why don't you put it as an answer? $\endgroup$ Oct 21, 2022 at 5:04
  • 1
    $\begingroup$ Also, when asking, you should include your previous tests and be more specific about your requirements; the bandwidth, the space, power consumption, etc. You may specify what is really important for you and what it is not. In this way, someone with expertise on this field can answer your question much better. Though, the performance part may fall into more Stack Overflow IMHO. $\endgroup$
    – kelalaka
    Oct 21, 2022 at 9:25

1 Answer 1

1
$\begingroup$

Are there algorithms that can be implemented in this type of systems that do not have known vulnerabilities?

Lots; almost any symmetric system can be implemented in 256k of RAM, and as far as a 16MHz CPU goes, well, that is only an issue if the encryption performance you require is sufficiently high.

If you want recommendations, well, that would depend on what problem you're trying to solve (e.g. are you sending and receiving encrypted traffic, or are you doing something else? Do you have a long term symmetric key you have to use, or is that negotiated by something else periodically/on reboot? What sort of crypto library is available to you? What are your performance requirements?).

Without knowing the answer to that, I am hesitant to give any concrete answer.

$\endgroup$
5
  • $\begingroup$ I have to send and receive encrypted traffic and I have to renegotiate the key periodically. I dont have any encryption library so it has to be implemented from zero in C. The algorithm has to be fast enough to be able to work in a real-time communication in a device with the mentioned characteristics. $\endgroup$ Oct 20, 2022 at 15:37
  • 1
    $\begingroup$ "The algorithm has to be fast enough to be able to work in a real-time communication"; does it need to keep up with a 110 baud modem, or a 800Gbps optic link? Or, something in the middle? Also, is the key negotiation done externally, or is it something this needs to solve as well? $\endgroup$
    – poncho
    Oct 20, 2022 at 15:45
  • $\begingroup$ I'm concerned about processing time and memory, not bandwidth. $\endgroup$ Oct 20, 2022 at 15:54
  • 1
    $\begingroup$ @BegoñaGarcia: then, what does 'fast enough' mean? $\endgroup$
    – poncho
    Oct 20, 2022 at 15:59
  • $\begingroup$ Similar performance to RC4. $\endgroup$ Oct 20, 2022 at 16:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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