Java Card: можно ли реализовать эти операции?
Я новичок в смарт-карт и Java-карт. Я планирую реализовать вариант алгоритма генерации ключей ElGamal. Найти информацию нелегко, можно ли рассчитать эти шаги на Java-карте?
- Найдите наименьшее простое число, большее числа x (около 2048 бит)
- Определите, является ли число g примитивным корневым модом p
- Модульная экспонента, арифметика на больших числах (около 2048 бит)
Я знаю, что генерация ключа RSA возможна на смарт-карте, но возможны ли отдельные этапы генерации (например, поиск простого числа)? Если нет, есть ли другие виды токенов безопасности, которые могут это сделать? Я планирую использовать карту NXP J3D081.
2 ответа
Насколько мне известно, сам алгоритм Эль-Гамаля не реализован ни на одной карте. Требуемые криптографические примитивы не доступны в java-карте. Ручная реализация также слишком медленная
Вероятно, все, что у вас есть, это реализация RSA javacard (включая вариант CRT). Таким образом, вы можете сгенерировать несколько больших простых чисел (как компоненты закрытого ключа CRT) и выполнить некоторую модульную арифметику (см. Этот недавний вопрос и RSAPrivateCrtKey
учебный класс).
Ваша платформа может иметь некоторые ограничения, которые могут немного усложнить ситуацию.
Ручная реализация чего-либо, вероятно, будет медленной (даже если у вас был поддерживаемый картой 32-битный целочисленный тип со знаком).
Desclaimer: Я никогда не делал такого рода вычисления, поэтому, пожалуйста, проверьте мои мысли.
EDIT>
Проект OV chip 2.0 содержит библиотеку Bignat, которая предлагает арифметику больших чисел (скачать здесь).
EDIT2>
Проект OpenCrypto предоставляет JCMathLib, который реализует математические операции с большими числами и точками эллиптической кривой.