Во-первых, определить конструкцию. AES-GCM при использовании предложенным способом эквивалентен $$\operatorname{KDF}(K,S,I)=\operatorname{AES}_K(S\|0^{32})\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(Я)$$
куда $\operatorname{GHASH}_H(M)\приблизительно \sum_i H^iM_i$ для блоков сообщений $M_i$ размером 128 бит, а умножения и сложения выполняются в 128-битном конечном поле с полиномиальным представлением. Это приближение GHASH, которое будет работать для нашего обсуждения ниже.
Надежна ли эта конструкция?
Я назову эту конструкцию KDF безопасной, если она ведет себя как PRF на обоих входах, с учетом именованных ограничений, т. е. уникальные входы дают независимые псевдослучайные выходы.
[Предположим, что соль/одноразовый номер глобально уникален среди всего жизненного цикла ключа и всех идентификаторов устройств?
Как видно из приведенного выше выражения, при условии, что ваши соли уникальны, операция AES будет маскировать любой результат GHASH, и результат будет выглядеть случайным и непредсказуемым. Однако, учитывая ответ на следующую часть, сомнительно, приносят ли связанные данные какую-либо полезную пользу, кроме того, что они могут немного скрыть событие столкновения с солью.
[Предполагая, что соль / «одноразовый номер» уникальна только для определенного идентификатора, и может быть несколько устройств, которые случайно используют одну и ту же соль (из-за столкновения случайных значений)?
К сожалению нет. Если два производных используют одно и то же $(К,С)$ пара с двумя разными $я,я'$ запросы, и злоумышленник узнает соответствующие выходные ключи $к,к'$, то противник может узнать $k\oplus k' = \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) \oplus\operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(I')\приблизительно \sum_i H^i(I'_i\oplus I_i)$ это выражение, из которого противник может восстановить $H=\имя_оператора{AES}_K(0^{128})$ позволяя им восстановиться $k\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) = \operatorname{AES}_K(S\|0^{32})$ и оттуда предсказать производный ключ для любого $I$ за это исправлено $(К,С)$ пара.