вторник, 7 сентября 2010 г.

ISSP \ Домен 06. Криптография. Часть 3

В этой части рассмотрены следующие вопросы:
  • Типы симметричных систем
  • DES
  • Режимы DES
  • 3DES
  • AES
  • IDEA
  • Blowfish
  • RC4
  • RC5
  • RC6


В настоящее время используется несколько типов симметричных алгоритмов. Они по-разному выполняют функции зашифрования и расшифрования информации, но есть один аспект, который относится ко всем симметричным алгоритмам – отправитель и получатель должны использовать два экземпляра одного и того же ключа.

В этом разделе мы рассмотрим большинство из перечисленных ниже алгоритмов, в том числе их характеристики.

DES (Data Encryption Standard) имеет длинную и богатую историю в компьютерном мире. NIST (Национальный институт стандартов и технологий - National Institute of Standards and Technology) в течении 1960-х годов проводил исследования потребностей по защите критичных, но не классифицированных данных, и в начале 1970-х инициировал криптографическую программу. NIST пригласил производителей для оценки их криптографических алгоритмов с целью выбора наилучшего алгоритма в качестве криптографического стандарта. К тому моменту у IBM уже был разработан алгоритм шифрования, предназначенный для защиты финансовых транзакций. В 1974 году 128-битный алгоритм IBM, названный Lucifer, был представлен и принят. NSA (Агентство национальной безопасности - National Security Agency) модифицировало этот алгоритм для использования 64-битных ключей (при этом восемь бит использовалось для четности, что в итоге давало эффективную длину ключа 56 бит) вместо первоначальных 128-битных, и назвало его DEA (Data Encryption Algorithm). Возникли споры о том, с какой целью NSA ослабило Lucifer, многие склонялись к мнению, что это было сделано, чтобы NSA могло расшифровывать не предназначенные для них сообщения, но в конце концов модифицированный Lucifer стал национальным криптографическим стандартом в 1977 году и стандартом ANSI (Американский национальный институт стандартов - American National Standards Institute) в 1978 году.
ПРИМЕЧАНИЕ. DEA – это алгоритм, который и реализует DES, а DES на самом деле – просто стандарт, но обычно никто не выделяет именно алгоритм DEA, все называют его стандартом DES.
DES был реализован в большинстве коммерческих продуктов, использующих криптографию, а также в приложениях почти всех правительственных агентств. Он был протестирован и признан одним из самых стойких и эффективных среди доступных криптографических алгоритмов. Однако после ошеломительной поддержки алгоритма, его пользователей ждал большой конфуз, когда NSA в 1986 году сообщило, что с января 1988 года агентство больше не будет одобрять DES и разработанные на его основе продукты, и что он больше не соответствует федеральному стандарту 1027. NSA понимало, что поскольку DES был так популярен многие годы, он слишком долго был объектом атак и стал бесполезен в качестве официального стандарта. Многие исследователи были не согласны, но NSA хотело перейти на новый, более безопаный и менее популярный алгоритм в качестве нового стандарта.

Решение NSA прекратить поддержку DES вызвало большие проблемы и негативную реакцию. В то время DES продолжал обеспечивать необходимый уровень защиты – существующим тогда компьютерам требовались тысячи лет на взлом DES. DES уже был встроен в тысячи продуктов. Кроме того, на тот момент не было эквивалентной замены. В связи с этим, NSA пересмотрело свое решение, и NIST продлил сертификацию DES на следующие пять лет.

В 1998 году Electronic Frontier Foundation построила компьютерную систему за $250 000, которая cмогла взломать DES за три дня посредством брутфорс-атаки на все ключевое пространство. Эта система содержала 1536 процессоров, работающих на тактовой частоте 40 МГц, и выполняла 60 миллионов проверок расшифрования в секунду в расчете на один процессор. Хотя большинство людей пока не имело таких систем для выполнения подобной атаки, микропроцессоры увеличивали вычислительную мощность в соответствии с Законом Мура, и такая атака становилась все более реальной для обычного атакующего. Это обусловило появление 3DES, который обеспечивал более стойкую защиту. 3DES будет рассмотрен в следующем разделе.

Позднее DES был заменен NIST’ом на алгоритм Rijndael в качестве стандарта AES. Rijndael стал новым принятым методом шифрования критичной, но не классифицированной информации для правительства США, этот алгоритм широко используется в наше время.

Как работает DES?

DES – это симметричный блочный алгоритм шифрования. В него поступают 64-битные блоки открытого текста, которые преобразуются в 64-битные блоки шифротекста. Поскольку это симметричный алгоритм, в нем используется один и тот же ключ для зашифрования и расшифрования данных. Он использует 64-битные ключи: из 56 бит состоит реальный ключ, а 8 бит используются для контроля четности.

Алгоритм DES при работе с данными разделяет сообщение на блоки и работает с ними по отдельности. Блоки проходят 16 циклов применения функций перестановки и подстановки. Порядок и вид применяемых функций перестановки и подстановки зависит от значения ключа, переданного алгоритму. В результате получается 64-битный блок шифротекста.

Что значит "алгоритм взломан"?

Как уже было сказано в предыдущем разделе, DES в конце концов был взломан с помощью компьютера, названного DES Cracker. Но что в действительности означает «взломан»?

В большинстве случаев взлом алгоритма означает, что атакующий может вскрыть ключ, использованный в процессе шифрования. Предположим, что Кевин зашифровал сообщение и отправил Валери. Марк перехватил это зашифрованное сообщение и провел брутфорс-атаку на него, пытаясь расшифровать сообщение с использованием различных ключей до тех пор, пока не нашел подходящий ключ. Если такой ключ найден, алгоритм считается взломанным. Но значит ли это, что алгоритм стал бесполезен? Это зависит от того, кто ваш враг.

При взломе алгоритма с помощью брутфорс-атаки, атакующий просто пытается найти ключ, который использовался при зашифровании. Но при правильной реализации шифрования нам следует использовать сеансовый ключ, который действителен только в рамках одной сессии. В таком случае, даже если атакующий вскроет один сеансовый ключ, это может быть бесполезно для него, т.к. ему придется проделать ту же работу, чтобы вскрыть новый сеансовый ключ.

Если ваша информация имеет достаточную ценность для того, чтобы враг или вор был готов потратить много ресурсов, чтобы взломать шифр (например, в случае финансовых транзакций или военных секретов), вам не следует больше использовать взломанный алгоритм. Если вы шифруете сообщение подруге с приглашением на ужин, вы можете не волноваться о том, что алгоритм был взломан.

Для взлома алгоритма может использоваться брутфорс-атака, либо применяться анализ слабостей самого алгоритма. Эффективность брутфорс-атак повышается, т.к. растет производительность современных компьютеров. Алгоритм, использующий ключи длиной всего 40 бит, позволяет в качестве ключа использовать около триллиона различных значений. Если применяется ключ длиной 56 бит, возможных значений ключа становится уже около 72 квадриллионов. Может показаться, что это очень много, однако в связи с мощностью современных компьютеров, ключи такого размера вообще не обеспечивают какой-либо надежной защиты.

Алгоритмы строятся на основе современного понимания математики. Когда люди существенно продвинутся в математике, уровень защиты современных алгоритмов может быть сведен к нулю.

Режимы DES 

Блочные шифры имеют несколько режимов работы. Каждый режим определяет способ обработки блоков. Один режим может лучше работать в одном типе среды для выполнения определенных функций, тогда как другой будет лучше работать в другой среде с абсолютно другими требованиями. Очень важно, чтобы производители, применяющие DES (или любой другой блочный шифр), понимали различные режимы его работы и знали, как правильно использовать эти режимы для разрабатываемого программного обеспечения.

DES и другие симметричные блочные шифры имеют несколько различных режимов работы, которые могут использоваться в различных ситуациях для достижения различных результатов. Вам нужно понимать следующие пять из них:
Электронная кодовая книга 

Режим электронной кодовой книги (ECB – Electronic Code Book) работает аналогично кодовой книге. 64-битные блоки данных вместе с ключом передаются в алгоритм, на выходе которого получается результирующий блок шифротекста. Для одного и того же блока открытого текста и ключа всегда производится один и тот же блок шифротекста. Длина сообщения не всегда кратна 64 битам, но ECB учитывает эту проблему. ECB – это простейший и самый быстрый режим работы, однако он имеет свои слабости.

Обычно ключ является инструкциями по использованию кодовой книги, которые обычно указывают, как именно блок текста должен зашифровываться и расшифровываться. Кодовая книга обеспечивает набор команд подстановки и перестановки, которые должны быть выполнены над блоком открытого текста. Проблемой безопасности режима ЕСВ является то, что каждый блок шифруется в точности тем же ключом, т.е. той же кодовой книгой. Это может привести к двум плохим вещам: атакующий может взломать ключ и получить возможность расшифровать все блоки данных, либо атакующий может собрать шифротекст и открытый текст для каждого блока и на основании этого создать кодовую книгу, использование которой не требует наличия ключа.

Основная проблема заключается в том, что процесс шифрования независимых блоков недостаточно случаен, поэтому этот режим проще взломать, чем другие. Тогда возникает вопрос, а зачем вообще использовать этот режим? Дело в том, что это самый быстрый и самый простой режим, его применяют для шифрования небольших объемов данных, таких как PIN-коды, ключи, значения запрос/ответ в процессах аутентификации.

Поскольку этот режим работает с блоками данных независимо, данные в файле не обязательно должны шифроваться строго в определенном порядке. Это очень полезно при шифровании баз данных. В базе данных много различных частей данных (таблиц, записей и т.п.), доступ к которым осуществляется в случайном порядке. Если база данных зашифрована в режиме ЕСВ, любые записи или таблицы могут быть добавлены, зашифрованы, удалены или расшифрованы независимо от любых других таблиц и записей. В других режимах DES существует зависимость от текста, зашифрованного ранее. Такая зависимость создает лишние сложности при шифровании небольших объемов текста, т.к. расшифрование должно производиться в том же порядке, что и шифрование.

Поскольку ЕСВ не использует сцепление (chaining) с предыдущим блоком, не следует использовать его для шифрования больших объемов данных, т.к. в шифротексте появится периодический шаблон.

Сцепление блоков шифротекста

В режиме ЕСВ один и тот же блок открытого текста при шифровании на одинаковом ключе всегда будет давать в результате один и тот же шифротекст. Это позволяет атакующему выявить шаблон и приблизиться на шаг к компрометации процесса шифрования.

При использовании режима сцепления блоков шифротекста (CBC – Cipher Block Chaining) шаблоны не создаются, т.к. алгоритмом при шифровании каждого блока текста используется не только ключ, но и значение, полученное при шифровании предыдущего блока, как это показано на Рисунке 6-15. В результате получается более случайный шифротекст. Это подразумевает наличие зависимости между блоками, их «сцепление», что и обуславливает название данного режима. Эффект «сцепления» каждого следующего блока с предыдущим скрывает любые шаблоны.

Рисунок 6-15. В режиме СВС шифротекст предыдущего блока данных используется при шифровании следующего блока данных

Результирующее значение, полученное при шифровании одного блока, объединяется с помощью операции XOR со следующим блоком перед его шифрованием, т.е. каждый предыдущий блок используется для изменения следующего блока. Таким образом, эффект «сцепления» обуславливает зависимость каждого отдельного блока шифротекста от всех блоков, обработанных перед ним, а не только от предыдущего блока.

Когда мы зашифровываем самый первый блок открытого текста в режиме СВС, у нас нет предыдущего блока шифротекста, позволяющего добавить случайность в процесс шифрования. Но если мы не добавляем случайный элемент при шифровании первого блока, плохие парни могут найти шаблон, пройти в обратном порядке и вскрыть ключ. Поэтому нам нужно использовать вектор инициализации. 64-битный вектор инициализации объединяется с помощью операции XOR с первым блоком открытого текста, а затем все это передается в процесс шифрования. Полученный результат (шифротекст) объединяется со следующим блоком открытого текста, затем зашифровывается следующий блок. Это продолжается, пока все сообщение не будет зашифровано. Это и называется сцеплением блоков шифра, обеспечивающим необходимую случайность процесса шифрования, что позволяет использовать СВС для шифрования больших файлов. В результате ни отдельный блок шифротекста, ни все зашифрованное сообщение целиком не будут содержать шаблонов, что не позволит атакующему провести обратный инжиниринг и вскрыть ключ.

Если каждый раз при зашифровании сообщения мы будем выбирать различные (неповторяющиеся) векторы инициализации, то даже при зашифровании одного и того же сообщения, получаемый в результате шифротекст будет всегда уникальным. Например, вы можете передать одно сообщение 50 людям, зашифровав его для каждого из них с использованием различных векторов инициализации. В результате передаваемый каждому из этих людей шифротекст будет различным, несмотря на то, что им передается одинаковое сообщение.

Обратная связь по шифротексту

Иногда блочный шифр может эмулировать поточный шифр. Но зачем это нужно? Например, если вы собираетесь отправить зашифрованное сообщение по электронной почте своему начальнику, ваш почтовый клиент будет использовать симметричный блочный шифр, работающий в режиме СВС. Почтовый клиент не будет использовать режим ЕСВ, поскольку большинство сообщений являются достаточно длинными, чтобы в них в таком режиме зашифрования появился шаблон, который может использоваться для обратного инжиниринга процесса и вскрытия ключа шифрования. Режим СВС целесообразно использовать, когда вам нужно за раз отправить большой объем данных. Но что делать, если вам нужно отправить устойчивый поток данных получателю? К примеру, если вы работаете на терминале, взаимодействующем с терминальным сервером, при каждом нажатии клавиши и движении мыши на терминальный сервер отправляется всего несколько байт для обработки этого действия. Это необходимо, чтобы происходящее вяглядело так, как будто ваш компьютер (терминал) выполняет команды и обработку данных по вашим запросам, хотя в действительности все это происходит на терминальном сервере. Если вам нужно шифровать данные, передаваемые от терминала на терминальный сервер, вам не следует использовать режим СВС, т.к. он шифрует только блоки данных длиной в 64 бита. А ваши блоки данных имеют длину всего 8 бит. Именно для такой ситуации и предназначен режим обратной связи по шифротексту (CFB – Cipher Feedback).

Рисунок 6-16 показывает работу режима CFB, который в действительности является комбинацией блочного и поточного шифра. Для зашифрования первого восьмибитного блока мы делаем то же самое, что и в режиме СВС, использующем вектор инициализации. Вспомним, как работает поточный шифр: ключ и вектор инициализации используются алгоритмом для создания ключевого потока, который является просто множеством случайных битов. Это множество битов объединяется с помощью операции XOR с блоком открытого текста, и создает в результате блок шифротекста такого же размера. Итак, первый восьмибитовый блок объединен с набором битов, созданных генератором ключевого потока. После этого одна копия этого восьмибитового результирующего блока шифротекста отправляется получателю (в нашем примере – терминальному серверу), а другая копия используется для шифрования следующего восьмибитового блока открытого текста. Использование этой второй копии шифротекста в процесс зашифрования следующего блока, обеспечивает большую случайность процесса шифрования.

Рисунок 6-16. Блочный шифр, работающий в режиме СFВ

Мы рассмотрели пример, в котором шифруются восьмибитные блоки, но в действительности режим CFB может использоваться для шифрования блоков любого размера, даже однобитовых. Однако в большинстве случаев этот режим применяется именно для шифрования восьмибитовых блоков, поскольку восемь бит представляют собой один символ.
ПРИМЕЧАНИЕ. При использовании режима СВС, хорошей идеей является использование уникального для каждого сообщения значения вектора инициализации, но это не является необходимым при шифровании очень больших сообщений. При использовании режима СFB, мы шифруем небольшие объемы данных, поэтому следует использовать новое значение вектора инициализации для зашифрования каждого нового потока данных.
Обратная связь по выводу

Как было сказано выше, вы можете использовать режим ЕСВ для шифрования маленьких объемов данных, таких как ключи или значения PIN-кодов. Режим СВС вы можете использовать для шифрования больших объемов данных блоками по 64 бита. В случаях, когда вам нужно последовательно шифровать небольшие объемы данных, вам нужен для работы шифр, похожий на поточный шифр, шифрующий отдельные биты блоков, такой как режим CFB. Однако возникают ситуации, когда вам по-прежнему нужно шифровать небольшие объемы данных за раз (от одного до восьми бит), но вам нужно обеспечить, чтобы возможные ошибки не оказывали влияния на процесс зашифрования и расшифрования данных.

Если вы снова взгляните на Рисунок 6-16, вы увидите, что шифротекст из предыдущего блока используется для зашифрования следующего блока открытого текста. Что произойдет, если бит в первом блоке шифротекста будет поврежден? Тогда мы получим неверное значение при зашифровании следующего блока открытого текста, и эта проблема распространится на все последующие блоки, поскольку используется режим сцепления. Теперь посмотрите на Рисунок 6-17. Он очень похож на рисунок 6-16, однако в нем значение, используемое при зашифровании следующего блока открытого текста, берется напрямую из ключевого потока, а не из предыдущего блока шифротекста. В этом и заключается разница между этими двумя режимами.

Рисунок 6-17. Блочный шифр, работающий в режиме OFВ

Если вам нужно шифровать что-то очень чувствительное к ошибокам такого типа, например, цифровое видео или звук, вам не следует использовать режим CFB. Вместо него вам следует использовать режим обратной связи по выводу (OFB – Output Feedback), который уменьшает влияние повреждений отдельных битов.

Таким образом, OFB – это режим работы блочного шифра, применяемый при необходимости эмуляции потока (т.к. шифруются небольшие объемы данных за раз), и обеспечивающий низкую вероятность создания ошибок и их распространения на весь последующий процесс шифрования.

Для обеспечения максимально возможной защиты в режимах OFB и CFB, размер шифротекста (в CFB) или значения ключевого потока (в OFB) должны быть того же размера, что и размер блока зашифровываемого блока открытого текста. Таким образом, если вы используете CFB и зашифровываете по восемь бит за раз, созданный перед этим блок шифротекста должен также иметь длину 8 бит. Иначе начнут появляться повторяющиеся значения, создавая шаблон (по этой же самой причине одноразовый шифровальный блокнот следует использовать только один раз и хранить его ровно столько времени, сколько и само сообщение).

Режим счетчика

Режим счетчика (CTR – Counter Mode) очень похож на режим OFB, но вместо использования случайных уникальных значений вектора инициализации для генерации значений ключевого потока, этот режим использует счетчик, значение которого добавляется к кадому блоку открытого текста, который нужно зашифровать. Уникальное значение счетчика гарантирует, что каждый блок объединяется с уникальным значением ключевого потока.

Другое отличие заключается в том, что не применяется сцепление, т.е. при шифровании следующего блока не используется шифротекст предыдущего блока. Поскольку нет сцепления, шифрование отдельных блоков может происходить параллельно, что повышает производительность. Основной причиной использования режима CTR вместо других режимов является производительность.

Этот режим существует уже довольно долго и применяется при шифровании ячеек АТМ для виртуальных соединений, а также в IPSec. В настоящее время он также интегрирован в новый беспроводной стандарт 802.11i. Разработчики выбирают этот режим в указанных ситуациях, поскольку отдельные ячейки АТМ или пакеты, проходящие через туннель IPSec или через радиоканал, могут прийти к получателю в ином порядке. Поскольку в этом режиме не используется сцепление, получатель может расшифровать и начать обрабатывать отдельные пакеты, не ожидая получения всего сообщения.


Ссылки по теме:


Мы сразу переходим от DES к 3DES, пропуская Double-DES. Дело в том, что хотя Double-DES использует ключ длиной 112 бит, существует специальная атака против Double-DES, которая снижает фактор трудозатрат на примерно тот же уровень, что и для DES. Таким образом, он не более безопасен, чем DES.

Многие успешные атаки против DES и различных его реализаций применимы и к 3DES. NIST знал, что необходим новый стандарт (которым в итоге стал AES), однако требовалось срочное решение, обеспечивающее более высокую защиту критичных данных. Для этого был разработан 3DES.

3DES в своей работе использует 48 циклов, что существенно повышает его сопротивляемость дифференциальному криптоанализу. Однако это требует выполнения существенно большего объема работ, нанося удар по производительности. Процесс зашифрования и расшифрования данных может занимать до 3 раз больше времени, чем при использовании DES.

Однако несмотря на потери производительности и тот факт, что NIST уже выбрал алгоритм Rijndael для замены DES в качестве AES, и NIST, и многим другим был нужен 3DES в качестве временного решения.

3DES может работать в различных режимах, выбранный режим определяет количество используемых ключей, а также выполняемые функции:
  • DES-EEE3. Использует три различных ключа в процессе шифрования. Данные последовательно зашифровываются на каждом из них (т.е. операция зашифрования выполняется трижды).
  • DES-EDE3. Использует три различных ключа в процессе шифрования. Данные зашифровываются на первом, затем расшифровываются на втором, а потом зашифровываются на третьем.
  • DES-EEE2. Аналогичен DES-EEE3, но использует только два ключа. На первом и третьем этапах шифрования используется один и тот же ключ.
  • DES-EDE2. Аналогичен DES-EDE3, но использует только два ключа. На первом и третьем этапах шифрования используется один и тот же ключ.
Режим EDE на первый взгляд может выглядеть избыточным. Насколько хорошую защиту можно обеспечить путем зашифровывания, расшифровывания на другом ключе и еще одного зашифровывания? Когда данные зашифровываются на одном симметричном ключе и расшифровываются на другом симметричном ключе, это еще больше перемешивает данные. В действительности, данные при этом не расшифровываются на втором этапе.


После 20-летнего использования DES в качестве стандарта шифрования, он был взломан, и в срочном порядке потребовалась новая технология. NIST решил, что нужен новый стандарт – AES (Advanced Encryption Standard), чтобы заменить DES. В январе 1997 года NIST объявил конкурс для кандидатов на AES и описал требования к нему в FIPS PUB 197. В качестве кандидатов на AES рассматривались симметричные блочные шифры, поддерживающие ключи длиной 128, 192 и 256 бит. Финалистами стали следующие пять алгоритмов:
  • MARS. Разработан командой IBM, ранее создавшей Lucifer.
  • RC6. Разработан RSA Laboratories.
  • Serpent. Разработан Россом Андерсоном, Эли Бихэмом и Ларсом Кнудсеном.
  • Twofish. Разработан Counterpane Systems.
  • Rijndael. Разработан Джоанной Деймен и Венсентом Риджменом.
Из них был выбран Rijndael. Rijndael может работать с блоками 128, 192 и 256 бит. Число циклов зависит от размера блока и длины ключа:
  • Если длина ключа и блока составляет 128 бит, используется 10 циклов.
  • Если длина ключа и блока составляет 192 бита, используется 12 циклов.
  • Если длина ключа и блока составляет 256 бит, используется 14 циклов.
Rijndael хорошо работает как при аппаратной, так и при программной реализации во многих различных продуктах и средах. Он использует небольшой объем памяти и спроектирован таким образом, чтобы его было легко защитить от атак по времени (timing attack).
NIST заменил DES на Rijndael. Сейчас этот алгоритм используется американским правительством для защиты критичной, но не классифицированной информации.

ПРИМЕЧАНИЕ. DEA – это алгоритм, использовавшийся в DES, а Rijndael – это алгоритм, который используется в AES. Но мы знаем эти алгоритмы как DES и AES, а не по их действительным названиям.


IDEA (International Data Encryption Algorithm) – это блочный шифр, работающий с 64-битными блоками данных. 64-битный блок данных делится на 16 маленьких блоков, каждый из которых проходит через восемь циклов математических функций. Ключ имеет длину 128 бит. При программной реализации IDEA быстрее DES.

Алгоритм IDEA может работать в различных режимах, похожих на режимы, описанные ранее в разделе DES, однако он более устойчив к взлому, по сравнению с DES, поскольку использует ключи большей длины. IDEA используется в PGP, а также другом криптографическом программном обеспечении. Он вполне мог заменить DES, но он запатентован, что требует определенных лицензионных отчислений при его использовании.

На момент написания этой книги, не известно о фактах успешных атак против этого алгоритма, хотя предпринимались неоднократные попытки.


Blowfish – это блочный шифр, который работает с 64-битными блоками данных. Длина ключа может быть любой от 32 до 448 бит, а блоки данных проходят через 16 циклов криптографических функций. Этот алгоритм разработал Брюс Шнайер. Предполагалось, что именно Blowfish заменит устаревающий DES. Blowfish общедоступен и не запатентован, чем выгодно отличался от других алгоритмов, защищенных различными патентами, либо предназначенных для хранения государственных секретов.


RC4 является одним из самых популярных среди реализованных поточных шифров. RC4 использует ключи различной длины. Он применяется в протоколе SSL, был реализован (неудачно) в протоколе WEP. RC4 был разработан в 1987 году Роном Ривестом и являлся собственностью компании RSA Data Security, Inc., пока кто-то не опубликовал его исходный код. После этого алгоритм несколько раз внедрялся под именем ArcFour или ARC4, т.к. название RC4 является зарегистрированной торговой маркой.

Алгоритм RC4 очень прост, быстр и эффективен, из-за чего он и стал так популярен.


RC5 – это блочный шифр, использующий различные параметры, которые могут определять размер блока, длину ключа, число используемых циклов. Он был разработан Роном Ривестом и исследован RSA Data Security, Inc. В этом алгоритме могут использоваться блоки, размером 32, 64 или 128 бит, а размер ключа может достигать 2048 бит. Число циклов, выполняемое в процессе зашифрования и расшифрования, также может меняться. Оно может доходить до 255.


RC6 – это блочный шифр, созданный на основе RC5. Поэтому он имеет те же атрибуты, что и RC5. Алгоритм RC6 был разработан в качестве претендента на AES, но вместо него был выбран Rijndael. Было реализовано несколько модификаций алгоритма RC5, целью которых было повышения его скорости. Одной из таких модификаций и является RC6.

Условные обозначения в криптографии. В некоторых источниках вы можете встретить обозначения вида rc5-w/r/b (например, RC5-32/12/16). Это условное обозначение, описывающее конфигурацию алгоритма.
  • w – половина длины блока (в битах), может быть равен 16, 32 или 64 бита
  • r – число циклов от 0 до 255
  • b – длина ключа (в байтах)
Таким образом, RC5-32/12/16 означает:
  • Шифруются 64-битные блоки данных
  • Используется 12 циклов
  • Длина ключа составляет 16 байт (128 бит)
Разработчик указывает эти параметры в конкретной реализации алгоритма. Использование этих параметров дает разработчикам больше гибкости.

1 комментарий:

eagle комментирует...

Наглядная демонстрация работы алгоритма Rijndael (он же - AES): http://www.cs.bc.edu/~straubin/cs381-05/blockciphers/rijndael_ingles2004.swf