Java Card: можно ли реализовать эти операции?

Я новичок в смарт-карт и Java-карт. Я планирую реализовать вариант алгоритма генерации ключей ElGamal. Найти информацию нелегко, можно ли рассчитать эти шаги на Java-карте?

  1. Найдите наименьшее простое число, большее числа x (около 2048 бит)
  2. Определите, является ли число g примитивным корневым модом p
  3. Модульная экспонента, арифметика на больших числах (около 2048 бит)

Я знаю, что генерация ключа RSA возможна на смарт-карте, но возможны ли отдельные этапы генерации (например, поиск простого числа)? Если нет, есть ли другие виды токенов безопасности, которые могут это сделать? Я планирую использовать карту NXP J3D081.

2 ответа

Решение

Насколько мне известно, сам алгоритм Эль-Гамаля не реализован ни на одной карте. Требуемые криптографические примитивы не доступны в java-карте. Ручная реализация также слишком медленная

Вероятно, все, что у вас есть, это реализация RSA javacard (включая вариант CRT). Таким образом, вы можете сгенерировать несколько больших простых чисел (как компоненты закрытого ключа CRT) и выполнить некоторую модульную арифметику (см. Этот недавний вопрос и RSAPrivateCrtKey учебный класс).

Ваша платформа может иметь некоторые ограничения, которые могут немного усложнить ситуацию.

Ручная реализация чего-либо, вероятно, будет медленной (даже если у вас был поддерживаемый картой 32-битный целочисленный тип со знаком).

Desclaimer: Я никогда не делал такого рода вычисления, поэтому, пожалуйста, проверьте мои мысли.

EDIT>

Проект OV chip 2.0 содержит библиотеку Bignat, которая предлагает арифметику больших чисел (скачать здесь).

EDIT2>

Проект OpenCrypto предоставляет JCMathLib, который реализует математические операции с большими числами и точками эллиптической кривой.

Другие вопросы по тегам