Я работаю над проектом, в котором я использую криптографию ECDSA. Для генерации подписи и ключа я использую аппаратный модуль и проверяю с помощью openssl.
Моя проблема в том, что одна проверка занимает 12 миллисекунд. Это устройство ARM (i.MX6 Quad, 4x1Ghz, 2Gb ram), но, тем не менее, оно выглядит очень медленно.
Я компилирую, используя «arm-poky-linux-gnueabi-g ++», предоставленный поставщиком оборудования. Использование -O3 против -O0 не меняет радикально время, необходимое для проверки.
std::vector<unsigned char> digest = sha256(content);
ECDSA_SIG* sig = ...
EC_KEY* ec_key = ...
auto tref = getTimeInMillis();
int result = ECDSA_do_verify(&(digest[0]),digest.size(), sig , ec_key);
auto duration = getTimeInMillis() - tref;
LOG("call to ECDSA_do_verify " + std::to_string(duration)+ "ms");
Эта строка ECDSA_do_verify занимает 12 мс (тест проводится в пакете, это стабильно). Как вы думаете, это разумное время?
Задача ещё не решена.
Других решений пока нет …