Обмен данными в RSA - PullRequest
       17

Обмен данными в RSA

2 голосов
/ 28 октября 2011

До сих пор я думал, что если у меня есть данные, зашифрованные RSA, эти данные будут легко обмениваться между большинством платформ (.net, java, pc, unix ..) из-за обычно используемого алгоритма.

Из-за расследования еще одного вопросов У меня возникла путаница. Я обнаружил даже различия между реализациями MS (некоторые провайдеры обращают результирующий байтовый массив). Более того, кажется, что отступы не соответствуют стандартизации.

Может ли кто-то с опытом работы в кроссплатформенной криптографии сделать заявление, если данные в RSA-коде относительно просто обмениваются (с некоторыми очевидными ошибками) или это головная боль?

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Обратите внимание, что шифрование RSA обычно не используется само по себе, а в сочетании с алгоритмом симметричного шифрования .Таким образом, для обеспечения совместимости вам необходимо убедиться, что:

  • Обе стороны используют одну и ту же схему заполнения для RSA (например, ту, которая первоначально была определена в PKCS # 1 v1.5 или OAEP ).(Это не означает, что заполнение должно быть детерминированным, просто расшифровщик знает, какие биты расшифрованного текста были заполнением, а какие были исходным сообщением).
  • Обе стороны используют один и тот же формат для своих сообщений (например, один в PKCS # 7 или его преемниках ).
  • Обе стороны используют один и тот же симметричный алгоритм (например, AES-128), режим работы (например, CBC) и схему заполнения блочного шифра(например, PKCS # 5-padding).
  • Зашифровывающая сторона должна использовать открытый ключ, соответствующий закрытому ключу, используемому расшифровывающей стороной.
2 голосов
/ 29 октября 2011

Простой ответ на ваш вопрос - нет, сам криптографический алгоритм не определяет, как хранить или передавать байты между реализациями для обеспечения взаимодействия. Для этого вы должны использовать стандартный формат или протокол, который дает эти инструкции вплоть до уровня битов. Например, в ответе Пауло он говорит о PKCS # 7 и PKCS # 1. Они, в свою очередь, полагаются на правила кодирования DER в ASN.1, которые точно определяют, как именно преобразовывать большие целочисленные части RSA в однозначную последовательность байтов и обратно.

...