Нужно ли менять несколько символов в закрытом ключе? - PullRequest
0 голосов
/ 06 декабря 2018

поэтому у нас есть закрытый ключ, используемый для подписи запросов, которые впоследствии расшифровываются с использованием открытого ключа.Я возился с этим и заменил несколько символов в нем, скажем, изменив «wnoy» на «xxyy»

Я подозревал, что это по существу изменит ключ, и в результате расшифровка не удастся, но это не былодело.Изменения просто слишком малы, чтобы привести к значимому изменению ключа?

Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Любое изменение параметров модуля, экспоненты или CRT, которые используются во время вычисления, приведет к сбою алгоритма для создания правильной сигнатуры или к сбою во время дешифрования (скорее всего, с ошибкой заполнения).

Однако, поскольку закрытый ключ RSA - это не просто одно число, он обычно сохраняется в определенной в кодировке PKCS # 1 структуре ASN.1 / DER.Теперь все зависит от того, что вы измените в этой структуре, если закрытый ключ достаточно поврежден или нет.Кодирование этой структуры (если это закрытый ключ PEM) также может играть роль.

Скорее всего, вы изменили публичную или приватную экспоненту, пока параметры CRT RSA используются в расчете (либодля расчетов используются частные экспоненты или параметры ЭЛТ).В этом случае расчет будет продолжаться в обычном режиме.У вас будет около 256 байт, которые можно изменить, не вызывая проблем с 2048-битным ключом.

Более медленный «простой» расчет RSA использует частную экспоненту, что означает, что любое изменение параметров CRT останется незамеченным(если структура больше не анализирует).Для 2048-битного ключа у вас, скорее всего, будет более 5 х 128 байт, которые можно изменить без проблем!


Из PKCS # 1:

RSAPrivateKey ::= SEQUENCE {
    version           Version,
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
    privateExponent   INTEGER,  -- d
    prime1            INTEGER,  -- p
    prime2            INTEGER,  -- q
    exponent1         INTEGER,  -- d mod (p-1)
    exponent2         INTEGER,  -- d mod (q-1)
    coefficient       INTEGER,  -- (inverse of q) mod p
    otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

здесь CRT(Китайская теорема об остатках) параметрами являются параметры prime1, prime2, экспонента1, экспонента2 и, наконец, коэффициента.

...