KDF и PRF в GlobaPlatform SCP 03

Я хочу реализовать протокол Globalplatform SCP 03 в javacard. Основная проблема - реализация KDF и PRF в карточке. У меня три вопроса:

  1. Есть ли в Javacard реализация KDF и PRF с открытым исходным кодом?
  2. Я нашел "RandomData.getInstance(RandomData.ALG_PSEUDO_RANDOM);". в NIST sp 800-108 есть 3 и 4 вход для функции PRF, но я могу установить только один параметр для RandomData в javacard (только начальное число). это реализация PRF?
  3. Есть ли у PRF с одинаковыми входами одинаковый результат в разном исполнении? если ответ "нет", то почему карта и хост могут генерировать одинаковые сеансовые ключи, используя его?

Большое спасибо.

Мохсен

1 ответ

Я хочу реализовать протокол Globalplatform SCP 03 в javacard

Это хорошо, но вы знаете, что уже можете использовать безопасный канал обмена сообщениями через API Global Platform, верно? Таким образом, вы будете делать это только в том случае, если вам нужен идентичный канал после персонализации карты. Конечно, может случиться так, что ваша конкретная карта поддерживает только старые протоколы на основе 3DES.

Есть ли в Javacard реализация KDF и PRF с открытым исходным кодом?

Ну, не KDF, но построить KDF из PRF не так уж и сложно. А из PRF есть несколько уже включенных: любой MAC является PRF, включая HMAC-SHA1. Однако GP SCP 03 использует AES CMAC с конкретными входными параметрами в качестве KDF.

По сути, хеш-функция или MAC - это KDF с плохим кодом без явно заданных входных параметров. Но для этого вы читаете спецификации Глобальной платформы.

Я нашел "RandomData.getInstance(RandomData.ALG_PSEUDO_RANDOM);". в NIST sp 800-108 есть 3 и 4 вход для функции PRF, но я могу установить только один параметр для RandomData в javacard (только начальное число). это реализация PRF?

Нет, засеянный PRNG не является PRF, и вы можете только добавить начальную информацию в большинство реализаций, но не перезапускать PRNG полностью. Но опять же, вам нужен конкретный KDF: AES-CMAC, а не какой-либо KDF для SCP 03.

Есть ли у PRF с одинаковыми входами одинаковый результат в разном исполнении? если ответ "нет", то почему карта и хост могут генерировать одинаковые сеансовые ключи, используя его?

Да, конечно, до тех пор, пока он не имеет случайного состояния, как, например, генераторы случайных чисел. Недетерминированная PRF была бы довольно бесполезной.

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