Как определить силу вашего алгоритма шифрования в битах? - PullRequest
3 голосов
/ 18 марта 2011

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

Как вы измеряете силу алгоритмов в битах? Является ли длина ключа силой алгоритма?

РЕДАКТИРОВАТЬ:

Урок 1 : Не разрабатывайте алгоритм шифрования, AES и другие разработан и стандартизирован академиками по причине

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

Ответы [ 6 ]

14 голосов
/ 18 марта 2011

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

AES и RSA служат двум совершенно различным целям.Разница не только в подписи.RSA - это алгоритм с открытым ключом.Мы используем его для шифрования, обмена ключами, цифровых подписей.AES - это симметричный блочный шифр.Мы используем его для массового шифрования.RSA очень медленный.AES очень быстро.Большинство современных криптосистем используют гибридный подход с использованием RSA для обмена ключами, а затем AES для массового шифрования.

Обычно, когда мы говорим «128-битная сила», мы имеем в виду размер ключа.Это невероятно обманчиво, поскольку сила алгоритма гораздо больше, чем размер его ключа.Другими словами, просто потому что у вас есть ключ в миллион бит, это ничего не значит.

Сила алгоритма определяется как с точки зрения его размера ключа, так и его устойчивости к криптоаналитическим атакам.Мы говорим, что алгоритм нарушается, если существует атака лучше, чем грубая сила.

Таким образом, с AES и 128-битным ключом AES считается «безопасным», если нет атаки, которая работает менее 2 ^ 128.Если есть, мы считаем его «сломанным» (в академическом смысле).Некоторые из этих атак (для вашего поиска) включают дифференциальный криптоанализ, линейный криптоанализ и связанные с ними ключевые атаки.

То, как мы применяем алгоритм, зависит также от его типа.Симметричный блочный шифр, такой как AES, подвергается грубому принуждению, пробуя все возможные ключи.Для RSA размер ключа равен размеру модуля.Мы не ломаем это, пробуя каждый возможный ключ, а скорее факторинг.Таким образом, сила RSA зависит от текущего состояния теории чисел.Таким образом, размер ключа не всегда говорит вам, что это фактическая сила.RSA-128 ужасно небезопасен.Обычно размеры ключа RSA составляют 1024 бита +.

DES с 56-битным ключом прочнее, чем почти любой любительский шифр, когда-либо созданный.

Если вы заинтересованы в разработке алгоритмов, вам следует начать с разрушения других людей.У Брюса Шенье есть курс самостоятельного изучения криптоанализа, который поможет вам начать: http://www.schneier.com/paper-self-study.html

FEAL - один из самых сломанных шифров всех времен.Это отличная отправная точка для изучения криптоанализа блочного шифра.Исходный код доступен, и на нем есть бесчисленное множество опубликованных статей, так что вы всегда можете «найти ответ», если застряли.

5 голосов
/ 18 марта 2011

Вы можете сравнить длины ключей для того же алгоритма.Между алгоритмами это не имеет большого смысла.

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

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

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

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

2 голосов
/ 18 марта 2011

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

Я могу думать только о двух показателях надежности алгоритма шифрования:

  • Покажите свой алгоритм профессиональному криптоаналитику. Надежность алгоритма будет пропорциональна времени, которое криптоаналитик потратил на взлом вашего шифрования.
  • Сильные алгоритмы шифрования делают зашифрованные данные в значительной степени случайными. Итак - измеряет случайность ваших зашифрованных данных. Надежность алгоритма должна быть пропорциональна степени случайности зашифрованных данных.
    Warning - this criteria is just for playing arround, doesn't shows real encryption scheme strength !

Итак, реальная мера - это первое, но со вторым вы можете поиграть в свое удовольствие.

1 голос
/ 05 сентября 2013

«Биты безопасности» определены NIST (Национальный институт стандартов и технологий) в: NIST SP 800-57, часть 1, раздел 5.6.1 «Сопоставимые преимущества алгоритма».

Различные редакцииSP 800-57 Часть 1 из NIST: http://csrc.nist.gov/publications/PubsSPs.html#800-57-part1

Текущая версия: http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf

«Сила» определяется как «объем работы, необходимый для« взлома алгоритмов »»и 5.6.1 далее достаточно подробно описывает этот критерий.В таблице 2 в том же разделе изложены «биты безопасности», достигаемые с помощью ключей разных размеров, включая AES, RSA и ECC.

Для строгого определения относительной силы нового алгоритма потребуетсясерьезная работа.

1 голос
/ 18 марта 2011

Предполагая, что алгоритм исправен и использует весь диапазон клавиш ...

Увеличьте число уникальных байтовых значений для каждого байта ключа до степени количества байтов.* Таким образом, если вы используете только символы ASCII AZ, az, 0-9, это 62 уникальных значения - 10-байтовый ключ, использующий эти значения, равен 62 ^ 10.Если вы используете все 256 значений, 0x00 - 0xFF, 10-байтовый ключ равен 256 ^ 10 (или 10 * 8 бит на байт = 2 ^ 80).

0 голосов
/ 19 марта 2011

Мое быстрое и грязное определение - это «количество бит, которое AES потребует, чтобы среднее время взлома было одинаковым». Вы можете использовать любую меру времени, которая вам нравится, например, операции, время на стене, что угодно. Если для взлома требуется столько времени, сколько теоретическое 40-битное сообщение AES (на 2 ^ 88 меньше времени, чем 128-битное AES), тогда оно будет 40-битным независимо от того, использовали ли вы 64 000-битные ключи.

Это честно, и честно, трудно найти в мире крипто, конечно. Вместо веселья сравните его с простыми ключами RSA.

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

...