EC на Android 5 - PullRequest
       87

EC на Android 5

1 голос
/ 21 сентября 2019

Я читал в этой статье: Создание эллиптической кривой KeyPair через KeyStore на уровне API <23 </a>, что есть возможность использовать эллиптические кривые на Android 5. В соответствии с этим:

До API уровня 23 ключи EC могут быть сгенерированы с использованием KeyPairGenerator алгоритма «RSA», инициализированного KeyPairGeneratorSpec, тип ключа которого установлен на «EC», с помощью setKeyType (String).С помощью этого метода нельзя задать имя кривой EC - автоматически выбирается P-кривая NIST на основе требуемого размера ключа.

Я могу использовать RSA, а затем установить тип ключа как EC,Есть ли различия между этими двумя подходами?Будет ли это точно так же, когда я использую RSA с EC в качестве типа ключа и EC?

1 Ответ

1 голос
/ 22 сентября 2019

Пары ключей EC полностью несовместимы с RSA.

Для этих конкретных кривых существует только один тип ключа EC (хотя при кодировании существуют разные представления одной и той же точки).Единицы для ECDH (ключевое соглашение) / ECIES и ECDSA также совпадают.

То есть , если генерируется ключ EC для генератора пар ключей "RSA", вы можете быть уверены, что он идентичен тому, который сгенерирован для ключа "EC".Просто протестируйте, выполнив генерацию / проверку подписи EC или - чуть более сложное - соглашение о ключе.


Вы можете протестировать, создав собственную детерминированную SecureRandom реализацию и требуя ECреализация, чтобы использовать это.Это также связано с тем, что при генерации пары ключей EC не так много вариантов, как при генерации пары ключей RSA, поэтому реализации алгоритма, вероятно, будут такими же.Поэтому, если вы начнете с одинаковых значений, вполне вероятно, что он генерирует идентичные пары ключей.Затем вы можете сравнить значения открытых ключей или использовать один открытый ключ для проверки подписи из другого закрытого ключа.

Возможно, базовая реализация игнорирует SecureRandom, как указано, если хранилище ключей Android не может с этим справиться.

Хотя у меня нет этих версий Android здесь.


Обратите внимание, что данный метод генерации ключа EC может рассматриваться как взлом.А поскольку Android 5 / API 22 существует 5 лет назад, вы можете спросить себя, хотите ли вы по-прежнему поддерживать эти версии.

В качестве альтернативы вы можете полностью сгенерировать пары ключей EC в программном обеспечении с использованием Bouncy Castle, но AndroidВ этом случае хранилище ключей не используется для защиты ключей.

...