I. Общая часть.
Q: Что такое криптография, криптология, криптоанализ?
A: Криптология - это наука о шифрах и всем, что с ними связано.
Криптологию принято подразделять на криптографию и криптоанализ.
Если криптограф занимается вопросами защиты информации при помощи
криптографических методов, то криптоаналитик, напротив, старается
эту защиту преодолеть. Чья работа сложнее - вопрос сложный, но
существует устоявшееся мнение, что только хороший криптоаналитик,
имеющий большой опыт в "раскалывании" шифров может разработать
хороший (устойчивый) новый шифр.
Q: А что такое стеганогpафия?
A: Это еще один способ сокрытия информации. Иногда бывает пpоще скpыть сам
факт наличия секpетной инфоpмации, чем надеяться на стойкость
кpиптоалгоpитма. Используемые методы зависят от технических возможностей и
фантазии автора. Пpимеpом стеганогpафии могут служить "случайные" точки на
изобpажении, "шум" в звуковой инфоpмации и т.д. в котоpые вкpапляется важная
и секpетная инфоpмация. Можно комбиниpовать стеганогpафию и шифpование.
Q: Что такое шифр?
A: Шифром принято называть обратимый способ преобразования информации с целью
защиты ее от просмотра, в котором используется некий секретный элемент.
Исходная информация в этом случае будет называться открытым текстом, а
результат применения к ней шифра - закрытым текстом или шифртекстом.
Если давать строгое определение, то шифр есть совокупность всех возможных
криптографических преобразований (их число равно числу всех возможных ключей),
отображающих множество всех открытых текстов в множество всех шифртекстов и
обратно.
* Алгоритм шифрования - формальное описание шифра.
* Зашифрование - процесс преобразования открытого текста в шифртекст с
использованием ключа.
* Расшифрование - процесс восстановления открытого текста из шифртекста
с использованием ключа.
* Дешифрование - процесс восстановления открытого текста из шифртекста
без знания ключа.
* Ключ - сменный элемент шифра, позволяющий сделать сам алгоритм
шифрования открытым и использовать его многократно, меняя лишь ключ.
Q: Что такое "криптование"?
A: Словечко, используемое дилетантами вместо стандартного термина шифрование,
что выдает в них полных ламеров. Hастоящие специалисты-криптографы никогда
не пользуются этим словом, а также его производными "закриптование",
"закриптованные данные", "раскриптование", и т.д
Q: Что такое криптографический протокол?
A: Кpиптогpафический пpотокол - есть алгоpитм обмена инфоpмацией (не
обязательно секpетной!) между участниками, котоpые могут быть как
сопеpниками, так и соpатниками. В основе криптографических протоколов могут
лежать как симметричные криптоалгоритмы, так и алгоритмы с открытым ключом.
Криптографический протокол считается стойким, если в процессе его использования
легитимные участники процесса достигают своей цели, а злоумышленник - нет.
Q: Что такое "другие криптографические параметры"?
A: В это понятие входят узлы замены, синхропосылки и другие
сменные параметры, не являющиеся ключами.
Q: Зачем использовать DES, ГОСТ, Rijndael, другие опубликованные
алгоритмы? Раз их разрешили опубликовать, значит, в них есть
дыры. Я вчера придумал свой супер-алгоритм, его-то точно никто
сломать не сможет. Почему бы не использовать его?
A: Придумать алгоритм - это 5% работы. Остальные 95% - убедиться
(и убедить других), что его никто не сможет сломать (в обозримое
время). Это сложно. Это не под силу одному человеку.
Те алгоритмы, которые у всех на слуху, анализировали сотни
(тысячи) квалифицированных людей, в том числе и те, кто не
находится на государственной службе. Если _все_ они говорят,
что дыр нет - с вероятностью 0.9999 они правы.
С другой стороны, если хочешь изобрести свой собственный
алгоритм, сначала сломай пару-тройку чужих.
Q: А зачем pазбиpаться в алгоpитме. Разве не за тем, чтобы его потом сделать?
A: Прежде всего разбираться - затем, чтобы ПОHЯТЬ, какие алгоритмы следует
применить и как их правильно состыковать между собой. А найти (при
необходимости) в И-нете исходник, если точно знаешь, что искать - не проблема.
Ну, или здесь попросить 8-))
Q: Hу вот я изобрел алгоритм, помогите мне проверить, что он надежен.
Я зашифровал им файл, зашифрованный файл поместил в письмо.
Расшифруйте его! Сам алгоритм я не покажу - секрет фирмы.
A1: Спешу разочаровать: никому из присутствующих в эхе людей
неинтересно заниматься фигней. А именно ломать алгоритм
только по зашифрованному тексту. Если кому-то очень надо
будет посмотреть зашифрованные данные - он раздобудет
алгоритм (купит экземпляр программы для себя, украдет и т.п.).
Так что нет никаких оснований скрывать сами алгоритм: если
он - твоя интеллектуальная собственность, запатентуй его.
По этим же причинам нет оснований доверять алгоритмам,
разработчики которых держат их в секрете.
A2: Криптограф всегда должен следовать правилу Керкхоффа: весь механизм
шифрования кроме значения секретного ключа, известен криптоаналитику
противника (часто это правило формулируется так: стойкость шифра должна
определяться только секретностью ключа).
Q: Я хочу защитить свою информацию, зашифровав ее...
A: Огромное количество людей HЕ ПОHИМАЕТ, что шифрование не есть единственный и
универсальный способ скрыть свои секреты, а всего лишь способ уменьшить свои
проблемы, заменив один (большой) секрет на другой (маленький).
Q: Существует ли абсолютно стойкий шифр?
A: Клод Шеннон в своих трудах ввел понятие стойкости шифра и показал, что
существует шифр, обеспечивающий абсолютную секретность. Иными словами, знание
шифртекста не позволяет противнику улучшить оценку соответствующего открытого
текста. Им может быть, например, шифр Виженера при условии использования
бесконечно длинного ключевого слова и абсолютно случайному распределению
символов в этом слове. Очевидно, что практическая реализация такого шифра
(бесконечная случайная лента) невозможна (точнее, в большинстве случаев -
экономически невыгодна), поэтому обычно рассматривают практическую стойкость
шифра, численно измеряемую временем (либо числом элементарных операций),
необходимым на его взлом (с учетом текущего уровня развития техники). Кстати,
первым предложил использовать такой шифр Вернам, но обоснование дал именно
Шеннон.
Абсолютно стойкий шифр - это абстрактно-математическое понятие, с практикой не
имеющее почти ничего общего. Абсолютно стойкий шифр может оказаться абсолютно
_не_стойким против таких атак, как physical attack или social engineering
attack (см. ниже) - все зависит от реализации.
Q: Вот говорят иногда "симметричные шифры", "криптография с открытым ключем".
Поясните, что это за разделение?
A1: Симметричные шифры (криптосистемы) - это такие шифры, в которых для
зашифрования и расшифрования информации используется один и тот же ключ. В
несимметричных системах (системах с открытым ключом) для зашифрования
используется открытый (публичный) ключ, известный всем и каждому, а для
расшифрования - секретный (личный, закрытый) ключ, известный только
получателю.
A2: Симметричные шифры (криптосистемы) - это такие шифры, в которых
алгоритмы зашифрования и расшифрования могут быть _эффективно_ построены по
одному и тому же ключу.
II. Симметричные шифры.
Q: А что значит блочное/потоковое шифрование?
A: Блочная криптосистема (блочный шифр) разбивает открытый текст M на
последовательные блоки M1, M2, ..., Mn и применяет криптографическое
преобразование к каждому блоку. Поточная криптосистема (поточный шифр)
разбивает открытый текст M на буквы или биты m1, m2,..., mn и применяет
криптографическое преобразование к каждому знаку mi в соответствии со знаком
ключевого потока ki. Потоковое шифрование часто называют гаммированием.
Потоковый шифр может быть легко получен из блочного путем применения
специального режима (см. ниже).
Q: Что такое ECB, CBC, OFB, CFB?
A: Это режимы работы блочных шифров. ANSI X3.106 (1983)
ECB
Electronic Code Book Mode (режим электронной кодовой книги, режим простой
замены). В этом режиме все блоки текста шифруются независимо, на одном и том же
ключе, в соответствии с алгоритмом.
SM
Stream Mode (поточный режим, режим гаммирования). В этом режиме открытый текст
складывается по модулю 2 с гаммой шифра. Гамма получается следующим образом:
при помощи генератора формируется предварительная гамма (начальное заполнение
этого генератора - так называемая синхропосылка - не является секретом и
передается по каналу в открытом виде). Предварительная гамма подвергается
зашифрованию в режиме ECB, в результате чего и получается основная гамма, с
которой складывается открытый текст. Если последний блок неполный (его длина
меньше стандартного для данного алгоритма размера блока), берется только
необходимое количество бит гаммы.
CFB
Cipher Feedback Mode (гаммирование с обратной связью). В этом режиме открытый
текст также складывается по модулю 2 с гаммой шифра. Гамма получается следующим
образом: сначала шифруется (в режиме ECB) синхропосылка (она также передается
по каналу в открытом виде). Результат шифрования складывается по модулю 2 с
первым блоком открытого текста (получается первый блок шифртекста) и снова
подвергается зашифрованию. Полученный результат складывается со вторым блоком
открытого текста и т.д. Обработка последнего блока - аналогично предыдущему
режиму.
OFB
Output Feedback Mode (гаммирование с обратной связью по выходу). Как и в
предыдущем режиме, сначала зашифрованию подвергается синхропосылка. Результат
складывается по модулю 2 с первым блоком открытого текста - получается первый