KDF и PRF в GlobaPlatform SCP 03
Я хочу реализовать протокол Globalplatform SCP 03 в javacard. Основная проблема - реализация KDF и PRF в карточке. У меня три вопроса:
- Есть ли в Javacard реализация KDF и PRF с открытым исходным кодом?
- Я нашел "RandomData.getInstance(RandomData.ALG_PSEUDO_RANDOM);". в NIST sp 800-108 есть 3 и 4 вход для функции PRF, но я могу установить только один параметр для RandomData в javacard (только начальное число). это реализация PRF?
- Есть ли у 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 была бы довольно бесполезной.