книги / Практическая криптография
..pdfГлава 25
Привлечение экспертов
Криптографии присуще одно странное свойство: каждый думает, что зна ет о ней достаточно для того, чтобы разрабатывать собственные системы. Мы никогда не попросим второкурсника физического факультета спроектировать атомную электростанцию. Мы бы никогда не легли под нож медсестры-ста жерки, объявившей, что она придумала революционный метод операций на сердце. Тем не менее, прочитав одну-две книги по криптографии, многие по чему-то начинают думать, что могут разработать собственную криптографи ческую систему. Что еще хуже, иногда им удается убедить руководство ком пании, предпринимателей, готовых идти на риск, и даже некоторых клиентов в том, что их система будет представлять собой самое удачное воплощение человеческой мысли со времен изобретения бутерброда.
Первая книга Брюса, Applied Cryptography [86, 87], является как самой популярной, так и самой печально известной среди криптографов. Она снис кала популярность за привлечение к криптографии внимания десятков тысяч людей. Печальную же известность ей принесли системы, которые эти люди пытались разработать и реализовать, прочитав ее.
В качестве одного из недавних примеров можно привести стандарт беспро водных сетей 802.11. Первоначальный стандарт включал в себя безопасный канал общения, который называется WEP (wired equivalent privacy — экви валент конфиденциальности проводных сетей) и применяется для шифро вания и аутентификации беспроводного обмена данными. Этот стандарт был разработан комитетом, в составе которого не было криптографов. Результат оказался ужасным. Решение использовать алгоритм шифрования RC4, воз можно, было и не самым удачным, но не таким уж роковым. Тем не менее RC4 — это поточный шифр, для работы которого требуется уникальная ока зия. Алгоритм WEP не выделял достаточного количества битов для оказии, в результате чего одно и то же значение оказии приходилось использовать несколько раз. Это, в свою очередь, привело к тому, что многие пакеты были
Глава 25. Привлечение экспертов |
405 |
зашифрованы с помощью одного и того же ключевого потока. Безопасность поточного шифра RC4 была нарушена, и сообразительный злоумышленник мог без труда взломать шифр. Еще один, более тонкий момент состоял в сле дующем: система не проводила хэширования комбинации секретного ключа и оказии прежде, чем использовать ее в качестве ключа RC4, что в конце кон цов привело к осуществлению атак с восстановлением ключа [35]. Для аутен тификации применялась контрольная сумма CRC (cyclic redundancy check — контроль с помощью циклического избыточного кода), но, поскольку при ее подсчете используются линейные вычисления, подделать пакет и контроль ную сумму (с помощью аппарата линейной алгебры) не составляло труда, а обнаружить такую подделку было невозможно. Все пользователи сети при меняли один и тот же общий ключ, что значительно усложняло его обнов ление. Сетевой пароль непосредственно применялся для шифрования всех сообщений без использования какого-либо протокола согласования ключей. И наконец, по умолчанию шифрование было отключено. Это означало, что в большинстве реализаций никто не утруждался его включить. Алгоритм WEP не просто был взломан; он был взломан окончательно и бесповоротно.
Разработать замену WEP было нелегко, поскольку ее требовалось адап тировать к существующему аппаратному обеспечению. Но выбора не было: безопасность исходного стандарта оказалась отвратительной. Замена полу чила название WPA (wireless protected access — защищенный беспроводной доступ) и на момент выхода этой книги уже должна быть доступной.
История WEP — не исключение. Она привлекла к себе более присталь ное внимание прессы, чем остальные плохие криптографические алгоритмы, только из-за популярности стандарта 802.11, однако подобные ситуации мож но повсеместно наблюдать и в других системах. Как сказал однажды коллега Брюса: “В мире полно плохих систем безопасности, разработанных людьми, которые прочитали Applied Cryptography”.
Появление книги Практическая криптография, скорее всего, приведет к аналогичным результатам.
Все это делает нашу книгу крайне опасной. Всегда найдутся люди, кото рые, прочитав ее, попытаются разработать криптографический алгоритм или протокол. Готовый результат может выглядеть довольно неплохим и даже работоспособным, однако о безопасности этой системы лучше не говорить. Возможно, полученное решение окажется правильным на 70%. Возможно, разработчикам повезет, и оно окажется правильным даже на 90%. Но крип тография не терпит понятия “почти правильный”. Система безопасности на дежна настолько, насколько надежно ее самое слабое звено. Чтобы система была безопасной, правильным должно быть все. А этому нельзя научиться, просто читая книги.
406 |
Глава 25. Привлечение экспертов |
Так для чего же мы написали эту книгу, если она приводит к появлению плохих систем? Мы написали ее потому, что люди, которые хотят научиться разрабатывать криптографические системы, должны где-то этому учиться, а других подходящих книг мы не знаем. Рассматривайте данную книгу как введение в разработку криптографических систем, хотя она и не является руководством или учебником. Мы также написали ее для других специали стов, участвующих в разработке системы. Каждая часть системы безопас ности играет критически важную роль, и все, кто работает над проектом, должны обладать базовым пониманием проблем безопасности и методов ее обеспечения. К числу этих людей относятся программисты, тестировщики, составители документации, руководство и даже персонал из отдела продаж. Каждый сотрудник должен иметь достаточное понимание проблем безопас ности, чтобы правильно выполнять свою работу. Мы надеемся, что данная книга снабдит вас адекватной информацией о практической стороне крипто графии.
Если вы не против получить хоть какой-нибудь дельный совет, вот он: по мере возможности всегда привлекайте к сотрудничеству экспертов в области криптографии. Если в проекте каким-либо образом задействован криптогра фический аппарат, вам не обойтись без опытного разработчика криптогра фических систем. Подключите его к работе в самом начале проекта. Чем раньше вы проконсультируетесь с экспертом в области криптографии, тем легче и дешевле обойдется разработка проекта. Довольно часто нас звали взглянуть на проект только затем, чтобы заткнуть “дыры” в частях систе мы, которые уже давно были спроектированы или реализованы. Конечный результат всегда обходился слишком дорого — либо в терминах затраченных усилий, срока сдачи проекта и денежных средств, либо в терминах безопас ности пользователя конечного продукта.
Создать правильную криптографическую систему невероятно сложно. Да же системы, разработанные экспертами, время от времени дают сбой. Неваж но, насколько вы умны или какой опыт работы имеете в других областях. Проектирование и реализация криптографических систем требуют наличия специальных знаний и опыта, а единственный способ набраться опыта — раз рабатывать системы снова и снова. Однако этот процесс никогда не обходится без ошибок. Так для чего же нужен эксперт, если он тоже делает ошибки? По той же причине, по которой мы отдаем свою жизнь в руки квалифициро ванного хирурга. Нельзя сказать, что хирурги вообще не допускают ошибок; просто они их делают намного реже, да и сами ошибки гораздо менее серьез ны. Кроме того, хирурги придерживаются консервативных правил, поэтому небольшие ошибки не приводят к катастрофическим последствиям; хирурги знают достаточно для того, чтобы ошибка оказалась безобидной.
Глава 25. Привлечение экспертов |
407 |
Реализация криптографических систем — это практически такой же спе циализированный вид деятельности, как и их проектирование. Найти проек тировщиков криптографических систем не так уж сложно. Найти программи стов, занимающихся реализацией криптографических систем, намного труд нее, отчасти потому, что их требуется гораздо больше. Один проектиров щик может создать работу для 10-20 программистов. Большинство людей не рассматривают реализацию криптографических систем как специализиро ванный вид деятельности. Один и тот же программист может перейти от на писания баз данных к написанию графического интерфейса, а затем заняться реализацией криптографических систем. Разумеется, написание баз данных и графического интерфейса — тоже специализированные виды деятельности, однако опытный программист, немного подучившись, может вполне успешно заниматься и тем и другим. Это не касается реализации криптографических систем, где все должно быть сделано правильно.
Лучший из известных нам способов реализации криптографических си стем — нанять компетентных программистов и натренировать их для выпол нения данной задачи. Одной из составляющих тренинга может стать и на ша книга, однако в большинстве своем написание криптографических систем требует опыта и правильного отношения к проблеме. Кроме того, на овла дение написанием криптографических систем, как и любым другим специ альным навыком, уходят годы. Учитывая, сколько времени требуется для приобретения данного опыта, вы должны уметь удержать подготовленных вами специалистов. Это еще одна проблема, решение которой мы с радостью перекладываем на других членов нашего общества.
Вероятно, даже более важную роль, чем эта или любая другая книга, иг рает культура ведения проекта. Фраза “безопасность в первую очередь” не должна оставаться просто девизом; она должна быть вплетена в саму мате рию проекта и его разработчиков. Каждый участник проекта должен посто янно жить с безопасностью, дышать безопасностью, говорить и думать о без опасности. Достичь этого невероятно трудно, но все-таки возможно. Подоб ная команда сотрудников была у компании DigiCash в 1990-х годах. Анало гичная культура всеобъемлющей безопасности характерна для авиационной промышленности. Разумеется, культуры безопасности нельзя достичь в ко роткий срок, однако к этому нужно стремиться. Наша книга — это всего лишь начальное пособие по наиболее важным проблемам безопасности, предназна ченное для технических специалистов команды разработчиков.
В книге Secrets and. Lies [88] Брюс написал следующее: “Безопасность — это процесс, а не продукт”. Помимо культуры безопасности, нам нужен еще и процесс безопасности. Авиационная промышленность обладает всесторон ним, строго отлаженным процессом контроля безопасности. Большинство производителей программных продуктов не имеют даже устоявшегося про
408 |
Глава 25. Привлечение экспертов |
цесса выпуска программного обеспечения, не говоря уже о процессе выпуска высококачественного программного обеспечения и тем более систем безопас ности. Написание хороших систем безопасности, вероятно, выходит за рамки текущих качеств нашей компьютерной индустрии. Это, однако, не означа ет, что мы должны сдаться. Поскольку информационные технологии играют все более и более критическую роль в нашей инфраструктуре, нашей свободе и нашей безопасности, мы должны улучшать безопасность своих систем. Мы просто обязаны делать все, что только в наших силах.
Надеемся, что эта книга внесет свою лепту в улучшение систем безопас ности, обучая их разработчиков основам практической криптографии.
Благодарности
Данная книга основана на совместном опыте, приобретенном нами за дол гие годы работы в области криптографии. Мы глубоко признательны всем, кто сотрудничал с нами. Именно они сделали нашу работу интересной и по могли нам достичь того понимания, без которого было бы невозможно на писать эту книгу. Мы также хотим поблагодарить своих клиентов, которые предоставили нам не только средства, позволившие продолжить наши крип тографические исследования, но и возможность приобрести практический опыт, необходимый для написания книги.
Особого упоминания заслуживают Бет Фридман (Beth Friedman), кото рая оказалась неоценимым выпускающим редактором, и Дениз Дик (Denise Dick), значительно улучшившая наше творение, тщательно вычитав его. Сле дует отметить Джона Келси, снабдившего нас ценными советами по поводу криптографического содержимого. А состоялось наше сотрудничество бла годаря Internet. Особую признательность мы хотим выразить Кэрол Лонг (Carol Long) и другим сотрудникам издательства Wiley за претворение на ших идей в реальность.
И наконец, мы благодарим всех программистов мира, которые самоот верженно продолжают писать криптографический код и предоставлять его широкой общественности на бесплатных началах.
Список основных источников информации
1.Anderson R.J. Security Engineering: A Guide to Building Dependable Dis tributed Systems. — John Wiley & Sons, Inc., 2001 (ISBN 0-471-38922-6).
2.Anderson R., Biham E. and Knudsen L. Serpent: A proposal for the Ad vanced Encryption Standard. — In: National Institute of Standards and Technology, August 1998 (CM . http: //www. c l . cam.a c.uk/~rj a l4/serpen t. html или http://www .nist.gov/aes).
3.Bellare M., Canetti R. and Krawczyk H. Keying Hash Functions for Mes sage Authentication. — In: Koblitz N. (ed.). Advances in Cryptology — CRYPTO ’96. Lecture Notes in Computer Science. Springer-Verlag, 1996, vol. 1109, p. 1-15.
4.Bellare M., Killian J. and Rogaway P. The Security of Cipher Block Chain ing. — In: Desmedt Y.G. (ed). Advances in Cryptology — CRYPTO ’94Lecture Notes in Computer Science. Springer-Verlag, 1994, vol. 839, p. 341— 358.
5.Bennett C.H. and Brassard G. An update on quantum cryptography. — In: Blackley G.R. and Chaum D. (ed). Advances in Cryptology, Proceedings of CRYPTO 84Lecture Notes in Computer Science. Springer-Verlag, 1984, vol. 196, p. 475-480.
6.Biham E., Dunkelman O. and Keller N. The Rectangle Attack — Rectangling the Serpent. — In: Pfitzmann B. (ed). Advances in Cryptology — EURO CRYPT 2001. Lecture Notes in Computer Science. Springer-Verlag, 2001, vol. 2045, p. 340-357.
7.Biham E. New Types of Cryptoanalytic Attacks Using Related Keys. — In: Helleseth T. (ed). Advances in Cryptology — EUROCRYPT ’93. Lecture Notes in Computer Science. Springer-Verlag, 1993, vol. 765, p. 398-409.
8.Black J., Halevi S., Krawczyk H., Krovetz T. and Rogaway P. UMAC: Fast and Secure Message Authentication. — In: Michael Wiener (ed). Advances in Cryptology — CRYPTO ’99. Lecture Notes in Computer Science. SpringerVerlag, 1999, vol. 1666, p. 216-233.
Список основных источников информации |
411 |
9.Bos J. Booting problems with the JEC computer. — Personal Communica tions, 1983.
10.Bos J. Practical Privacy. — PhD thesis : Eindhoven University of Technol ogy, 1992 (CM . http://www.macfergus.com/niels/lib/bosphd.html).
11.Brassard G. and Crepeau C. Quantum Bit Commitment and Coin-Tossing Protocols. — In: Menezes A.J. and Vanstone S.A. (ed). Advances in Crypto logy — CRYPTO *90. Lecture Notes in Computer Science. Springer-Verlag, 1990, vol. 537 p. 49-61.
12.Brincat K. and Mitchell C.J. New CBC-MAC forgery attacks. — In: Varadharajan V. and Mu Y. (ed). Information Security and Privacy, ACISP 2001. Lecture Notes in Computer Science. Springer-Verlag, 2001, vol. 2119,
p.3-14.
13.Burwick C., Coppersmith D., D’Avignon E., Gennaro R., Halevi S., Jutla C., Matyas S.M. Jr., O’Connor L., Peyravian M., Safford D., Zunic N. MARS —
acandidate cipher for AES. — In: National Institute of Standards and Tech nology, August 1998 (CM . http://www.research.ibm.com/security/mars. html или http://w w w .nist.gov/aes).
14.Cachin C. Entropy Measures and Unconditional Security in Cryptography. —
PhD thesis, ETH : Swiss Federal Institute of Technology (Zurich, 1997) (CM . ft p : / / f t p . in f . ethz. ch/pub/publications/dissertations/thl2187. ps.gz).
15.Carroll L. The Hunting of the Snark: an Agony, in Eight Fits. — London : Macmillan and Co., 1876.
16.Chabaud F. and Joux A. Differential Collisions in SHA-0. — In: Krawczyk H. (ed). Advances in Cryptology — CRYPTO ’98. Lecture Notes in Computer Science. Springer-Verlag, 1998, vol. 1462, p. 56-71.
17.Courtois N. and Pieprzyk J. Cryptanalysis of Block Ciphers with Overdefined
Systems of Equations. — Cryptology ePrint Archive, Report 2002/044, 2002 (CM . h ttp: //e p r in t . ia cr .org/).
18.Daemen J. and Rijmen V. AES Proposal: Rijndael. — In: National Insti tute of Standards and Technology, August 1998 (CM. http://www.esat. kuleuven.ac.be/~rijm en/rijndael или http://www .nist.gov/aes).
19.Davis D., Ihaka R. and Fenstermacher P. Cryptographic Randomness from Air Turbulence in Disk Drives. — In: Desmedt Y.G. (ed). Advances in Cryp tology — CRYPTO Щ. Lecture Notes in Computer Science. Springer-Verlag, 1994, vol. 839, p. 114-120.
20.Den Boer B. and Bosselaers A. Collisions for the compression function of MD5. - In: Helleseth T. (ed). Advances in Cryptology - EUROCRYPT ’93.
412 |
Список основных источников информации |
Lecture Notes in Computer Science. Springer-Verlag, 1993, vol. 765, p. 293304.
21.Diffie W. and Heilman M.E. New Directions in Cryptography // IEEE Transactions on Information Theory. — 1976. — IT-22(6). — P. 644-654.
22.Dijkstra E.W. The Humble Programmer J/ Comm, of the ACM. — 1972. — 15(10). —P. 859-866. (Также издана как EWD340, h ttp : //www. c s .utexas. edu/users/EWD/ewd03xx/EWD340.PDF.)
23.Di Crescenzo G., Ferguson N., Impagliazzo R. and Jakobsson M. How To Forget a Secret. — In: Meinel C. and Tison S. (ed). STACS 99. Lecture Notes in Computer Science. Springer-Verlag, 1999, vol. 1563, p. 500-509.
24.Dobbertin H. Cryptanalysis of MD4 / / J. Cryptology. — 1998. — 11(4). — P. 253-271.
25.Dusse S.R. and Kaliski B.S. Jr. A Cryptographic Library for the Motorola DSP56000. — In: Damgerd I.B. (ed). Advances in Cryptology — EURO CRYPT *90. Lecture Notes in Computer Science. Springer-Verlag, 1990, vol. 473, p. 230-244.
26.Dworkin M. Recommendation for Block Cipher Modes of Operation — Me
thods and Techniques. — National Institute of Standards and Technology, December 2001 (CM . h ttp ://csrc.n ist.g ov /p u b lica tion s/n istp u b s/
800-38a/sp800-38a.pdf).
27.Ellison C. Improvements on Conventional PKI Wisdom. — In: Smith S. (ed). 1st Annual PKI Research Workshop — Proceedings. 2002, p. 165-175
(CM . h ttp://www. c s .dartmouth. edu/~pki02/E llison/).
28.Evertse J.-H. and Van Heyst E. Which New RSA-Signatwres Can Be Com puted from Certain Given RSA-Signatwres? / / J. Cryptology. — 1992. — 5(1). - P. 41-52.
29.Feistel H., Notz W.A. and Smith J.L. Some Cryptographic Techniques for machine-to-Machine Data Communications / / Proc. of the IEEE. —1975. — 63(11). - P. 1545-1554.
30.Ferguson N., Kelsey J., Lucks S., Schneier B., Stay M., Wagner D., Whiting D. Improved Cryptanalysis of Rijndael. — In: Schneier B. (ed). Fast Soft ware Encryption, 7th International Workshop, FSE 2000. Lecture Notes in Computer Science. Springer-Verlag, 2000, vol. 1978, p. 213-230.
31.Ferguson N., Kelsey J., Schneier B. and Whiting D. A Twofish Retreat: Re lated-Key Attacks Against Reduced-Round Twofish. — Twofish Technical Re port 6, Counterpane Systems, February 2000 (CM . h ttp: //www. counterpane. com/twofish .html).
Список основных источников информации |
413 |
32.Ferguson N. and Schneier В. A Cryptographic Evaluation of IPsec, 1999 (см. h ttp : //www. counterpane. com /ipsec.html).
33.Ferguson N., Schroeppel R. and Whiting D. A simple algebraic representa tion of Rijndael. — In: Vaudenay S. And Youssef A.M. (ed). Selected Areas in Cryptography, 8th Annual International Workshop, SAC 2001. Lecture Notes in Computer Science. Springer-Verlag, 2001, vol. 2259.
34.Ferguson N. Collision attacks on OCB. — Comments to NIST, February 11, 2002 (CM . h ttp : // c s r c .n is t .gov/CryptoToolkit/modes/ и http://c s r c . n is t .gov/CryptoToolkit/modes/comment s/Ferguson.pdf).
35.Fluhrer S., Mantin I. and Shamir A. Weaknesses in the Key Schedule Al gorithm of RC4- — In: Vaudenay S. and Youssef A.M. (ed). Selected Areas in Cryptography, 8th Annual International Workshop, SAC 2001. Lecture Notes in Computer Science. Springer-Verlag, 2001, vol. 2259.
36.Freier A.O., Karlton P. and Kocher P.C. The SSL Protocol, Version 3.0. — Internet draft, Transport Layer Security Working Group, November 18,1996 (CM . h ttp : //hom e.netscape. com/eng/ssl3/).
37. Goldberg I. and Wagner D. Randomness and the Netscape Browser / / Dr. Dobb’s Journal. — January 1996. — P. 66-70 (CM. www.cs.berkeley. edu/“ daw/papers/ddj -netscape.html).
38.Gutmann P. Secure Deletion of Data from Magnetic and Solid-State Me mory. — In: USENIX Security Symposium Proceedings, 1996 (CM. http:
//www.auckland.a c.nz/~pgut00l).
39.Gutmann P. X .509 Style Guide, October 2000 (CM. http: / / www.cs .auckland. ac.nz/~pgut001/pubs/x509guide.txt).
40.Harkins D. and Carrel D. The Internet Key Exchange (IKE). — RFC 2409, November 1998.
41.Intel. Intel 82802 Firmware Hub: Random Number Generator, Programmers Reference Manual, December 1999 (см. на Web-узле Intel http://www. intel.com ).
42.International Telecommunication Union. X.680-X.683: Abstract Syntax No tation One (ASN.l). — X.690-X.693: ASN.l encoding rules, 2002 (см. www. itu . int/ITU-T/studygroups/coml7/languages/x680-x693_0702 .pdf).
43.Jonsson J. On the Security of CTR+CBC-MAC. — In: Selected Areas in
Cryptography, 9th Annual International Workshop, SAC 2002, 2002 (см. h ttp: // c s r c .n is t . gov/encrypt ion/modes/proposedmodes/ccm/ccmad. pdf).
44.Jueneman R.R. Analysis of Certain Aspects of Output Feedback Mode. — In: Chaum D., Rivest R.L., and Sherman A.T. (ed). Advances in Cryptology, Proceedings of Crypto 82. Plenum Press, 1982, p. 99-128.