On 12/14/2012 05:16 PM, Niels Möller wrote:
The first item is a personal one. From January 7, I'll start working for Southpole Consulting AB, a small Sockholm-based consulting company mainly doing embedded (GNU/)Linux development.
Second item is more directly related to Nettle. I will get funding from Internetfonden, for "Adapting GNU Nettle for embedded systems". This will mean two things: Support for elliptic curve signatures (and possibly some other ECC-related things), and optimizations for the ARM architecture. The funding is for 420 hours of work, most of which will be spent during the spring, and the project will be carried out under the umbrella of Southpole Consulting.
Congratulations! About the ECC part, if you plan to base it on what I submitted last year, some clarifications. What I submitted was about curves mod p (I think the patch was about arbitrary curves, but had been tested only with curves that had a=-3 - the nist curves). This code has been further improved by Ilya in the last google summer of code by adding wmNAF multiplication and other optimizations in the code base. The current code is on gnutls' lib/nettle/ directory. Contrary to the previous patch the current code in gnutls is more coupled with gnutls due to the precalculations needed in wmNAF (wmNAF gave a 10% improvement in ECDH).
What is missing is support for curves over F(2^p).
A question for the list: Which variants of the ARM family are most important for Nettle applications? I'm not yet very familiar with the ARM world, but the following are some alternatives for testing and benchmarking:
The current most high-end processor, Cortex-A15, where an affordable development system seems to be a recent "chromebook". Not sure exactly which model, but I guess it's this one: http://www.amazon.co.uk/Samsung-Chromebook-Wifi-Latest-Model/dp/B009RF0AQ8/r...
The previous "most high-end" processor, Cortex-A9. An affordable development system is the PandaBoard. http://www.omappedia.com/wiki/PandaBoard_FAQ
The Raspberry Pi computer, featuring an older (obsolete?) ARM1176JFZ, "ARMv6" architecture. http://www.raspberrypi.org/faqs
I wouldn't say that ARMv6 is obsolete. It exists in many embedded devices.
regards, Nikos