Ю. В. Романец, П. А. Тимофеев, В. Ф. Шаньгин. Защита информации в компьютерных системах и сетях. М: "Радио и связь", 1999. - 328 с. Тираж 3000 экз.
АрхивПериодически меня спрашивают о книжках "про криптографию". Я отвечаю, поинтересовавшись специальностью спрашивающего: если это математик, рекомендую начать с Коблица и плавно переходить к Шнайеру, а если программист, советую читать Шнайера, а затем обращаться к Коблицу. Имеются в виду книги [ [1] и [2]].
Tertium non datur, коли у вас серьезные намерения. Всех остальных отправляю читать Фана [3] или Кана [4], в зависимости от темперамента.
Когда же речь заходит о литературе на русском, ответить значительно труднее. "Просто интересующимся" можно, конечно, посоветовать увлекательную и легко читающуюся книгу Жельникова [5], тем же, кому хочется заглянуть глубже, поневоле приходится перерывать целую кучу литературы, ведь с печатными продуктами типа "все-в-одном" дело обстоит совсем туго.
Переданная в редакцию зеленоградской компанией "Анкад" книга Романца и др., вышедшая из печати в начале лета, - весьма серьезная заявка на некую "мини-энциклопедию", покрывающую все основные криптографические темы.
Я не оговорился. Несмотря на название книги, весь домен дисциплин и технологий, занятых обеспечением защиты информации (включая защиту от вирусно-троянских атак и исключая защиту от лишь упомянутых утечек через радиоизлучения), кратко обрисован в первой главе. Из следующих девяти глав семь посвящены исключительно криптографии, одна (гл. 8) - защите от удаленных атак по Internet, включая криптографические методы защиты, и одна (гл. 9) - защите информации в электронных платежных системах (фактически, защите расчетной и персональной информации в карточных расчетных системах) - также включая криптометоды, разумеется.
Итак, книга о криптозащите информации. От исторических шифров замены и перестановки через современные симметричные криптосистемы авторы проводят читателя к асимметричным шифрам, криптографической идентификации и цифровой подписи. Тезаурус основных криптографических примитивов и протоколов, таким образом, покрыт полностью. В отдельной главе (гл. 7) обсуждаются архитектуры управления ключами.
Из симметричных криптоалгоритмов (гл. 3) обсуждаются блочные шифры и режимы их использования.
Поточные шифры упоминаются, но особо не обсуждаются, и это, на мой взгляд, один из недостатков книги, особенно если учитывать все возрастающий интерес широкой публики к Internet-телефонии и шифрованию прочих данных ярко выраженной поточной природы.
Также не слишком радует отсутствие информации о преемниках DES в качестве американского стандарта (в "финал" конкурса, проводимого NIST, вышли такие интересные разработки, как MARS, RC6, Rijndael, Serpent и Twofish) и других широко используемых симметричных алгоритмах (например, Blowfish и CAST).
Те же шифры, которые обсуждаются - DES, IDEA и "ГОСТ 28147-89", - расписаны достаточно подробно.
Но, к сожалению, теория в этой главе явно отступила перед прагматикой в слишком уж глубокий тыл. Например, понятие так называемых файстелевых сетей даже не упоминается при обсуждении DES, без чего последовательность перестановок и подстановок, составляющая его суть, выглядит скорее неким магическим ритуалом, нежели логически оправданным алгоритмом.
Авторы отошли от принятого в практике преподавания криптологии (а книга, как я узнал из предисловия, построена на основе курса лекций в МИЭТ) принципа параллельного изложения криптографического и криптаналитического материала. Так, история атак на DES и оттачивания методов дифференциального и линейного криптанализа полностью опущена, а ведь именно устойчивость к таким атакам является на сегодня одним из основных критериев стойкости блочного шифра.
Это упущение оборачивается жестокой методической "подножкой" читателю; на стр. 122 он видит фразу: "Каждый бит шифртекста зависит от значений всех битов соответствующего блока открытого текста..." и надолго, полагаю, застывает в недоумении. Эта фраза непонятна, более того, в буквальном прочтении она просто ложна, так как получается, что
Ekj(M) = Ekj(M Е 2j-1) Е (2n-1),
где n - длина блока для любого ключа kj и для любого j от единицы до n. Это абсурдно, поскольку тогда:
Ekj(M Е2l-1 Е2k-1) = Ekj(M)
для любых j, k от единицы до n, то есть на всем множестве открытых текстов значение такого "шифра" с заданным ключом будет принимать только два значения. Во всяком случае, это никак не вяжется с продолжением той же фразы: "...и никакие два блока открытого текста не могут быть представлены одним блоком шифртекста".
Разумеется, криптограф скорее всего просто не заметит ошибки, бессознательно восстановив контекст и поняв, что речь идет о вероятностной зависимости, которая обнаруживается на анализе массива шифртекстов с известными открытыми текстами, и о так называемом эффекте лавины, который лучше всего описывается именно в ходе изложения метода дифференциального криптанализа.
Шифрование с открытым ключом (гл. 4) обсуждается на примере RSA, Polig-Hellman и ElGamal, однонаправленные хэш-функции (.6.2) - на примере SHA и "ГОСТ Р 34.11-94", цифровая подпись (.6.3) - на примере широко используемых RSA, ElGamal и российского "ГОСТ Р 34.10-94".
Книга снабжена приложением с компактным (18 стр.) изложением элементов теории чисел, используемых в криптографии, и не менее компактной (сотня наименований) библиографией, но, к сожалению, лишена предметного указателя и указателя на онлайновые ресурсы, в том числе на криптографические библиотеки и программы, распространяемые в виде исходных текстов, такие как SSLea, PGP или FreeS/WAN. Последнее существенно, так как книга адресована в том числе и разработчикам компьютерных систем и сетей, которые, безусловно, должны читать и код, а не только о коде.
Несмотря на все замечания, которые возникли у меня по ходу знакомства с книгой, я уверенно рекомендую рецензируемый труд читателю, интересующемуся криптологией и криптографическими технологиями. Расширьте свою эрудицию, дополнив это чтение чтением Зиммерманна [6] и Жельникова. Если захотите узнать больше, учите английский язык и переходите от Коблица к Шнайеру и обратно...
1 (обратно к тексту) - [1] Neal Koblitz. A Course in Number Theory and Cryptography, N.Y.: 1994.
2 (обратно к тексту) - [2] Bruce Schneier. Applied Cryptography, N.Y.: 1996.
3 (обратно к тексту) - [3] RSA's FAQ About Today's Cryptography, 4th ed., см. www.rsa.com/faq.
4 (обратно к тексту) - [4] David Kahn, The Codebreakers, N.Y.: 1996.
5 (обратно к тексту) - [5] Владимир Жельников. Криптография от папируса до компьютера. М.: 1996.
6 (обратно к тексту) - [6] Филип Зиммерманн. PGP: концепция безопасности и уязвимые места. // "Компьютерра", #48 [225], 1997.