Кратко
- RC5 становится интероперабельной идентичностью только вместе с
W,R,b, байтами ключа, режимом, IV и правилом завершения последнего блока. - Код, ASN.1 и векторы подтверждают совпадение для конкретных входов; они не подтверждают безопасность, случайность, уникальность IV, фактическое стирание памяти, интеграцию, развёртывание или актуальную пригодность.
В октябре 1996 года Robert Baldwin и Ronald Rivest опубликовали RFC 2040, подробно описав четыре конструкции: RC5, RC5-CBC, RC5-CBC-Pad и RC5-CTS. Заявленная цель — совместимость независимых реализаций. Карточка RFC Editor относит документ к категории Informational и прямо указывает, что это не стандарт Интернета.
Сам текст называет себя пересказом ранее опубликованных материалов. Его ценность поэтому не в закреплении авторства RC5, а в перечислении условий, при которых одно название действительно приводит две программы к одинаковым байтам.
Идентичность задаёт кортеж параметров
W — размер слова; блок B содержит два слова, а BB выражает его длину в байтах. R обозначает число раундов. b — длина пользовательского ключа, K — реальные байты. Расширение создаёт таблицу S из T = 2(R+1) слов. В CBC добавляется вектор инициализации I длиной в блок.
Две программы могут называться RC5 и исполнять разные преобразования. Достаточно расхождения в W, R, длине или порядке байтов ключа, режиме, IV либо последнем блоке. Даже совпадение W/R/b ничего не говорит о равенстве фактически привязанных ключей.
Расширение ключа делает зависимости видимыми. Байты K укладываются в слова в little-endian порядке, S инициализируется константами, зависящими от W, после чего оба массива смешиваются число раз, равное утроенной длине большего. Пример на C фиксирует 64-битный блок. Его результат относится к этому пути, а не ко всему пространству параметров.
Объект раскрывает скрытое состояние
Документ разделяет объекты ключа и шифра. Объект CBC хранит признак дополнения, число раундов, расширенный ключ, исходный IV, текущий блок цепочки, неполный входной блок и позицию в нём.
Encrypt_Init привязывает и расширяет ключ, затем восстанавливает цепочку из IV. SetIV сохраняет расширенный ключ, но меняет IV и сбрасывает цепочку с буфером. Update принимает последовательные фрагменты, удерживает остаток, выводит лишь полные блоки, выполняет XOR с текущей цепочкой и делает шифртекст следующим состоянием.
Final определяет смысл остатка. В обычном CBC неполные байты означают ошибку. CBC-Pad всегда создаёт завершающий блок и добавляет от одного до BB байтов, значение каждого равно числу добавленных байтов. Уже выровненное сообщение получает полный блок дополнения. Финализация — часть идентичности алгоритма.
Три способа закончить сообщение
CBC требует длину, кратную блоку. CBC-Pad увеличивает результат для иных длин. CTS сохраняет длину, но перестраивает две последние части. Сначала шифруется сцепленный предпоследний полный блок; нужный префикс промежуточного результата становится короткой финальной частью шифртекста. Последний фрагмент открытого текста дополняется нулями, складывается XOR с промежуточным значением и снова шифруется, образуя полный блок перед «украденным» фрагментом.
Поэтому CTS должен удерживать до двух блоков до Final. Раньше неизвестно, какой полный блок окажется предпоследним и сколько байтов понадобится перенести в короткий конец.
Исполнимое прочтение требует учёта проверенных исправлений. Errata 513 ограничивает CTS открытым текстом длиннее одного блока. 514 предписывает использовать IV, когда предыдущего блока шифртекста нет. 587 возвращает пропущенный XOR в расшифровании и то же правило IV. Реализация исходной, неисправленной формулировки способна разойтись именно на границе.
Узкая сила тестового вектора
Раздел 9 ставит скромную цель: помочь подтвердить правильность реализации. Программа использует восьмибайтные блоки и принимает признак дополнения, число раундов, байты ключа, восьмибайтный IV и открытый текст.
Совпавший результат подтверждает, что для этого точного кортежа реализация согласилась с загрузкой и расширением ключа, блочным преобразованием, сцеплением CBC и финализацией. Расхождение доказывает нарушение согласия, но само по себе не локализует причину.
Опубликованные результаты охватывают CBC и CBC-Pad, но не CTS. Они также не наблюдают происхождение ключа и IV, уникальность IV, криптографическую стойкость, правильность вызовов, поведение компилятора, реальное стирание памяти, передачу параметров в протоколе или эксплуатацию. Детерминированный тест не отвечает на вопросы, которых нет в его входах.
ASN.1 переносит неполную идентичность
Раздел 11 назначает CBC и CBC-Pad числовые дуги OID с окончаниями 8 и 9. Последовательность параметров содержит версию, раунды, размер блока и необязательный IV. При его отсутствии историческое правило задаёт нулевой блок нужного размера. Errata 6380 исправляет имена, регистр и синтаксис ограничений ASN.1, не добавляя полей.
В последовательности нет b, байтов ключа и расширенной таблицы; CTS идентификатора не получает. OID закрепляет часть договора интерпретации, а не весь исполняемый контекст. Нулевой IV по умолчанию объясняет кодировку, но не доказывает случайность или уникальность IV в системе.
Намерение исходного кода не равно факту исполнения
Пример функций уничтожения записывает нули перед освобождением структур. Это свидетельство инструкции в исходнике. Оно не доказывает, что компилятор сохранил записи или что все копии секретов исчезли. Высказывания 1996 года о безопасности и патентах тоже фиксируют эпоху, а не дают современную оценку.
При точном чтении RFC 2040 остаётся сильным координационным артефактом. Он называет решения, которым надо совпасть. Граница нарушается, когда байтовое совпадение превращают в доказательство безопасности, правильной эксплуатации или распространённости.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

