9. Криптография и защита информации

Самоучитель по защите информации

 

Автор: Борис Анин, "Защита компьютерной информации".

Издательство "BHV-СПб", 2003

Предисловие

Предисловие

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

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

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

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

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

Не менее важно отметить, что вне зависимости от того, насколько ценна ваша информация, российским законодательством она безусловно признается объектом вашей собственности. И вы, как владелец своей информации. имеете право определять правила ее обработки и зашиты. Базовым в этом отношении является Закон Российской Федерации "Об информации, информатизации и защите информации", принятый 25 января 1995 г. В соответствии с ним любой российский гражданин может предпринимать необходимые меры для предотвращения утечки, хищения, утраты, искажения и подделки информации. Вопрос состоит в том, какие действия являются на самом деле необходимыми для адекватной защиты вашей информации.

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

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

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

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

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

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

Глава 1. Угрозы компьютерной безопасности

Глава 1. Угрозы компьютерной безопасности

1. Компьютерная преступность в России

 

Компьютерная преступность в России

В странах, где высок уровень компьютеризации, проблема борьбы с компьютерной преступностью уже довольно давно стала одной из первостепенных. И это не удивительно. Например, в США ущерб от компьютерных преступлений составляет ежегодно около 5 млрд долларов, во Франции эти потери доходят до 1 млрд франков в год, а в Германии при помощи компьютеров преступники каждый год ухитряются похищать около 4 млрд марок. И число подобных преступлений увеличивается ежегодно на 30— 4()°с.

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

Главной вехой в цепочке этих изменений стало введение в действие 1 января 1997г. нового Уголовного кодекса. В нем содержится глава "Преступления в сфере компьютерной информации", где перечислены следующие преступления:

  • неправомерный доступ к компьютерной информации (статья 272):
  • создание, использование и распространение вредоносных компьютерных программ (статья 273);
  • нарушение правил эксплуатации компьютеров, компьютерных систем и сетей (статья 274).

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

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

По данным Главного информационного центра МВД России в 1997 г. доля компьютерных преступлений составила 0,02% от общего числа преступлений в области кредитно-финансовой сферы. В абсолютных цифрах общее количество компьютерных преступлений в этом году превысило сотню, а суммарный размер ущерба —20 млрд рублей.

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

Российским правоохранительным органам становятся известны не более 5— 10% совершенных компьютерных преступлений. Их раскрываемость тоже не превышает 1—5%. Это связано с тем, что хищение информации долгое время может оставаться незамеченным, поскольку зачастую данные просто копируются. Жертвы компьютерной преступности (большинство среди них — частные предприятия) проявляют нежелание контактировать с правоохранительными органами, опасаясь распространения среди вкладчиков и акционеров сведений о собственной халатности и ненадежной работе своей фирмы, что может инициировать отток финансов и последующее банкротство.

Тенденции

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

  • Наиболее распространенными являются компьютерные преступления. совершаемые путем несанкционированного доступа к банковским базам данных посредством телекоммуникационных сетей. В 1998 г. российскими правоохранительными органами были выявлены 15 подобных преступлений, в ходе расследования которых установлены факты незаконного перевода 6,3 млрд рублей.
  • За последнее время не отмечено ни одно компьютерное преступление. которое было совершено одним человеком. Более того, известны случаи. когда преступными группировками нанимались бригады из десятков хакеров, которым предоставлялось отдельное охраняемое помещение, оборудованное по последнему слову техники, для того чтобы они осуществляли хищение крупных денежных средств путем нелегального проникновения в компьютерные сети крупных коммерческих банкой.
  • Большинство компьютерных преступлений в банковской сфере совершается при непосредственном участии самих служащих коммерческих банков. Результаты исследований, проведенных с привлечением банковского персонала, показывают, что доля таких преступлений приближается к 70% от общего количества преступлений в банковской сфере. Например. в 1998 г. работники правоохранительных органов предотвратили хищение на сумму в 2 млрд рублей из филиала одного крупного коммерческою банка. Преступники оформили проводку фиктивного платежа с помощью удаленного доступа к банковскому компьютеру через модем, введя пароль и идентификационные данные, которые им передали сообщники, работающие в этом филиале банка. Затем похищенные деньги были переведены в соседний банк, где преступники попытались снять их со счета с помощью поддельного платежного поручения.
  • Много компьютерных преступлений совершается в России с использованием возможностей, которые предоставляет своим пользователям сен. Internet.

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

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

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

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

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

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

Одна из предпосылок повышенного интереса, который преступники проявляют к сети Internet, заключается в том, что с развитием компьютерных сетей информация становится все более ценным товаром. Особенно это касается информации, имеющей отношение к банковской сфере — данные о вкладах и вкладчиках, финансовом положении банка и клиентов, кредитной и инвестиционной политике банка, а также о направлениях его развития. Поскольку в современных условиях субъекты кредитно-финансовой деятельности не могут существовать без взаимного информационного обмена, а также без общения со своими территориально удаленными филиалами и подразделениями, то часто для этих целей они используют Internet. А это значит, что у преступников появляется реальный шанс получить доступ к сугубо секретной информации о потенциальных объектах своей преступниц деятельности. Уничтожение такой информации преступниками является разновидностью недобросовестной конкуренции со стороны предприятий. которые находятся под "крышей" этих преступников. Даже одна угроза ее уничтожения может сама по себе послужить эффективным средством воздействия на руководство банка с целью вымогательства или шантажа.

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

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

Синдром Робина Гуда

В 1998 г. в Экспертно-криминалистическом центре МВД была проведена классификация компьютерных преступников. Обобщенный портрет отечественного хакера, созданный на основе этого анализа, выглядит примерно так:

  • мужчина в возрасте от 15 до 45 лет, имеющий многолетний опыт работы на компьютере либо почти не обладающий таким опытом;
  • в прошлом к уголовной ответственности не привлекался;
  • яркая мыслящая личность;
  • способен принимать ответственные решения;
  • хороший, добросовестный работник, по характеру нетерпимый к насмешкам и к потере своего социального статуса среди окружающих его людей;
  • любит уединенную работу;
  • приходит на службу первым и уходит последним; часто задерживается на работе после окончания рабочего дня и очень редко использует отпуск и отгулы.

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

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

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

Таким образом, для общественного мнения в России характерен "синдром Робина Гуда" — преступники-хакеры представляются некими благородным;; борцами против толстосумов-банкиров. А посему хакерство в России, по видимому, просто обречено на дальнейшее развитие.

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

История одного компьютерного взлома

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

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

У подъезда дома стоял ничем не примечательный шестисотый "Мерседес", в котором сидели два представителя заказчика— крупной московской бандитской группировки. Один банк "кинул" дружественную группировке коммерческую фирму на очень большую сумму. Этот банк было решено наказать, запустив в его компьютерную сеть зловредный вирус, который должен был минимум на сутки вывести из строя все банковские коммуникации, включая электрическую, газовую, водопроводную и канализационную ее и,. а также мусоропровод.

Главарь банды взломщиков провел инструктаж о бережном обращении с казенным имуществом, раздал компьютеры, бронежилеты, рации и сообщил позывные.

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

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

Главарь приказал по рации всем участникам операции приготовиться к проведению ее заключительной фазы. "Первый готов, второй готов, третий готов" — понеслось в ответ. "Поехали!" — послышалась команда главаря. По этой команде дюжие охранники окружили дом: им было приказано никого не впускать и не выпускать без письменного разрешения с подписью главаря, заверенной нотариусом.

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

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

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

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

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

 

2. Компьютер глазами хакера

Компьютер глазами хакера

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

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

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

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

  • насколько высок уровень профессиональной подготовки злоумышленника;
  • какой информацией об атакуемой компьютерной системе он владеет;
  • как злоумышленник осуществляет доступ к этой системе;
  • каким способом атаки он воспользуется с наибольшей вероятностью.

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

3. Кто такие хакеры

Кто такие хакеры

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

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

  • посторонним лицом, не имеющим никаких легальных привилегий и прав доступа;
  • пользователем компьютерной системы, обладающим ограниченными привилегиями и правами доступа.

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

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

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

4. Методы взлома компьютерных систем

 

В общем случае программное обеспечение любой универсальной компьютерной системы состоит из трех основных компонентов: операционной системы, сетевого программного обеспечения (СПО) и системы управления базами данных (СУБД). Поэтому все попытки взлома защиты компьютерных систем можно разделить на три группы:

  • атаки на уровне операционной системы;
  • атаки на уровне сетевого программного обеспечения;
  • атаки на уровне систем управления базами данных.

Атаки на уровне систем управления базами данных

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

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

Атаки на уровне операционной системы

Защищать операционную систему, в отличие от СУБД, гораздо сложнее. Дело в том, что внутренняя структура современных операционных систем чрезвычайно сложна, и поэтому соблюдение адекватной политики безопасности является значительно более трудной задачей. Среди людей несведующих бытует мнение, что самые эффективные атаки на операционные cистемы могут быть организованы только с помощью сложнейших средств, основанных на самых последних достижениях науки и техники, а хакер должен быть программистом высочайшей квалификации. Это не совсем так.

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

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

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

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

Атаки на уровне сетевого программного обеспечения

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

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

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

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

5. Защита системы от взлома

 

Защита системы от взлома

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

  • Не отставайте от хакеров: будьте всегда в курсе последних разработок из области компьютерной безопасности. Оформите подписку на несколько специализированных журналов, в которых подробно освещаются вопросы зашиты компьютерных систем от взлома. Регулярно просматривал материалы, помещаемые на хакерских серверах Internet (например. astalavista.box.sk).
  • Руководствуйтесь принципом разумной достаточности: не стремитесь построить абсолютно надежную защиту. Ведь чем мощнее зашита, тем больше ресурсов компьютерной системы она потребляет и тем труднее использовать ее.
  • Храните в секрете информацию о принципах действия защитных механизмов компьютерной системы. Чем меньше хакеру известно об этих принципах, тем труднее будет для него организовать успешную атаку.
  •  
  • Постарайтесь максимально ограничить размеры защищаемой компьютерной сети и без крайней необходимости не допускайте ее подключения к Internet.

  • Перед тем как вложить денежные средства в покупку нового программного обеспечения, поищите информацию о нем, имеющуюся на хакерских серверах Internet.
  • Размещайте серверы в охраняемых помещениях. Не подключайте к ним клавиатуру и дисплеи, чтобы доступ к этим серверам осуществлялся только через сеть.
  • Абсолютно все сообщения, передаваемые по незащищенным каналам связи, должны шифроваться и снабжаться цифровой подписью.
  • Если защищаемая компьютерная сеть имеет соединение с незащищенной сетью, то все сообщения, отправляемые в эту сеть или принимаемые из нее, должны проходить через брандмауэр, а также шифроваться и снабжаться цифровой подписью.
  • Не пренебрегайте возможностями, которые предоставляет аудит. Интервал между сеансами просмотра журнала аудита не должен превышать одних суток.
  • Если окажется, что количество событий, помешенных в журнал аудита, необычайно велико, изучите внимательно все новые записи. поскольку не исключено, что компьютерная система подверглась атаке хакера, который пытается замести следы своего нападения, зафиксированные в журнале аудита.
  • Регулярно производите проверку целостности программного обеспечения компьютерной системы. Проверяйте ее на наличие программных закладок.
  • Регистрируйте все изменения политики безопасности в обычном бумажном журнале. Регулярно сверяйте политику безопасности с зарегистрированной в этом журнале. Это поможет обнаружить присутствие программной закладки, если она была внедрена хакером в компьютерную систему.
  • Пользуйтесь защищенными операционными системами.
  • Создайте несколько ловушек для хакеров (например, заведите на диске файл с заманчивым именем, прочитать который невозможно с помощью обычных средств, и если будет зафиксировано успешное обращение к этому файлу, значит в защищаемую компьютерную систему была внедрена программная закладка).
  • Регулярно тестируйте компьютерную систему с помощью специальных программ, предназначенных для определения степени ее защищенности от хакерских атак.
 

Глава 2. Программы-шпионы

Глава 2. Программы-шпионы

1. Программные закладки

 

Программные закладки

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

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

Программные закладки можно классифицировать и по методу их внедрения в компьютерную систему:

  • программно-аппаратные закладки, ассоциированные с аппаратными средствами компьютера (их средой обитания, как правило, является BIOS — набор программ, записанных в виде машинного кода в постоянном запоминающем устройстве — ПЗУ);
  • загрузочные закладки, ассоциированные с программами начальной загрузки, которые располагаются в загрузочных секторах (из этих секторов в процессе выполнения начальной загрузки компьютер считывает программу, берущую на себя управление для последующей загрузки самой операционной системы);
  • драйверные закладки, ассоциированные с драйверами (файлами, и которых содержится информация, необходимая операционной системе для управления подключенными к компьютеру периферийными устройствами);
  • прикладные закладки, ассоциированные с прикладным программным обеспечением общего назначения (текстовые редакторы, утилиты, антивирусные мониторы и программные оболочки);
  • исполняемые закладки, ассоциированные с исполняемыми программными модулями, содержащими код этой закладки (чаше всего эти модули представляют собой пакетные файлы, т. е. файлы, которые состоят из команд операционной системы, выполняемых одна за одной, как если бы их набирали на клавиатуре компьютера);
  • закладки-имитаторы, интерфейс которых совпадает с интерфейсом некоторых служебных программ, требующих ввод конфиденциальной информации (паролей, криптографических ключей, номеров кредитных карточек);
  • замаскированные закладки, которые маскируются под программные средства оптимизации работы компьютера (файловые архиваторы, дисковые дефрагментаторы) или под программы игрового и развлекательного назначения.

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

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

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

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

Существуют три основные группы деструктивных действий, которые могут осуществляться программными закладками:

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

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

 

2. Модели воздействия программных закладок на компьютеры

Модели воздействия программных закладок на компьютеры

Перехват

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

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

Модель типа "перехват" может быть эффективно использована при атаке на защищенную операционную систему Windows NT. После старта Windows NT на экране компьютерной системы появляется приглашение нажать клавиши <Ctrl>+<Alt>+<Del>. После их нажатия загружается динамическая библиотека MSGINA.DLL, осуществляющая прием вводимого пароля и выполнение процедуры его проверки (аутентификации). Описание всех функций этой библиотеки можно найти в файле Winwlx.h. Также существует простой механизм замены исходной библиотеки MSGINA.DLL на пользовательскую (для этого необходимо просто добавить специальную строку в реестр операционной системы Windows NT и указать местоположение пользовательской библиотеки). В результате злоумышленник может модифицировать процедуру контроля за доступом к компьютерной системе, работающей под управлением Windows NT.

Искажение

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

Можно выделить статическое и динамическое искажение. Статическое искажение происходит всего один раз. При этом модифицируются параметры программной среды компьютерной системы, чтобы впоследствии в ней выполнялись нужные злоумышленнику действия. К статическому искажению относится, например, внесение изменений в файл AUTOEXEC.BAT операционной системы Windows 95/98, которые приводят к запуску заданной программы, прежде чем будут запущены все другие, перечисленные в этом файле.

Специалистам российского Федерального агентства правительственной связи и информации (ФАПСИ) удалось выявить при анализе одной из отечественных систем цифровой подписи интересное статистическое искажение Злоумышленник (сотрудник отдела информатизации финансовой организации, в которой была внедрена данная система) исправил в исполняемом ЕХЕ-модуле программы проверки правильности цифровой подписи символьную строку "ПОДПИСЬ НЕКОРРЕКТНА" на символьную строку "ПОДПИСЬ КОРРЕКТНА". В результате вообще перестали фиксироваться документы с неверными цифровыми подписями, и, следовательно, в электронные документы стало можно вносить произвольные изменения уже после их подписания электронной цифровой подписью.

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

Практика применения цифровой подписи в системах автоматизированного документооборота показала, что именно программная реализация цифровой подписи особенно подвержена влиянию программных закладок типа "динамическое искажение", которые позволяют осуществлять проводки фальшивых финансовых документов и вмешиваться в процесс разрешения споров по фактам неправомерного применения цифровой подписи. Например, в одной из программных реализаций широко известной криптосистемы PGP электронный документ, под которым требовалось поставить цифровую подпись, считывался блоками по 512 байт, причем процесс считывания считался завершенным, если в прочитанном блоке данные занимали меньше 512 байт. Работа одной программной закладки, выявленной специалистами ФАПСИ, основывалась на навязывании длины файла. Эта закладка позволяла считывать только первые 512 байт документа, и в результате цифровая подпись определялась на основе только этих 512 байт. Такая же схема действовала и при проверке поставленной под документом цифровой подписи. Следовательно, оставшаяся часть этого документа могла быть произвольным образом искажена, и цифровая подпись под ним продолжала оставаться "корректной".

Существуют 4 основных способа воздействия программных закладок на цифровую подпись:

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

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

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

При инициировании динамической ошибки для некоторой операции генерируется ложная ошибка из числа тех ошибок, которые могут возникать при выполнении данной операции. Например, для блокирования приема или передачи информации в компьютерной системе может постоянно инициироваться ошибочная ситуация "МОДЕМ ЗАНЯТ". Или при прочтении первого блока информации длиной 512 байт может устанавливаться соответствующий флажок для того, чтобы не допустить прочтения второго и последующих блоков и в итоге подделать цифровую подпись под документом.

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

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

Уборка мусора

Как известно, при хранении компьютерных данных на внешних носителях прямого доступа выделяется несколько уровней иерархии: сектора, кластеры и файлы. Сектора являются единицами хранения информации на аппаратном уровне. Кластеры состоят из одного или нескольких подряд идущих секторов. Файл — это множество кластеров, связанных по определенному закону.

Работа с конфиденциальными электронными документами обычно сводится к последовательности следующих манипуляций с файлами:

  • создание;
  • хранение;
  • коррекция;
  • уничтожение.

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

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

Важно помнить и о том, что при записи отредактированной информации меньшего объема в тот же файл, где хранилась исходная информация до начала сеанса ее редактирования, образуются так называемые "хвостовые" кластеры, в которых эта исходная информация полностью сохраняется. И тогда "хвостовые" кластеры не только не подвергаются воздействию программ шифрования, но и остаются незатронутыми даже средствами гарантированного стирания информации. Конечно, рано или поздно информация из "хвостовых" кластеров затирается данными из других файлов, однако по оценкам специалистов ФАПСИ из "хвостовых" кластеров через сутки можно извлечь до 85%, а через десять суток — до 25—40% исходной информации.

Пользователям необходимо иметь в виду и то, что команда удаления файла (DEL) операционной системы DOS2 не изменяет содержания файла, и оно может быть в любой момент восстановлено, если поверх него еще не был записан другой файл. Распространенные средства гарантированного стирания файлов предварительно записывают на его место константы или случайные числа и только после этого удаляют файл стандартными средствами DOS. Однако даже такие мощные средства оказываются бессильными против программных закладок, которые нацелены на то, чтобы увеличить количество остающихся в виде "мусора" фрагментов конфиденциальной информации. Например, программная закладка может инициировать статическую ошибку, пометив один или несколько кластеров из цепочки, входящей в файл, меткой "СБОЙНЫЙ". В результате при удалении файла средствами операционной системы или средствами гарантированного уничтожения та его часть, которая размещена в сбойных кластерах, останется нетронутой и впоследствии может быть восстановлена с помощью стандартных утилит.

Наблюдение и компрометация

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

3. Защита от программных закладок

Защита от программных закладок

Задача защиты от программных закладок может рассматриваться в трех принципиально различных вариантах:

  • не допустить внедрения программной закладки в компьютерную систему;
  • выявить внедренную программную закладку;
  • удалить внедренную программную закладку.

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

  • навязывать конечные результаты контрольных проверок;
  • влиять на процесс считывания информации и запуск программ, за которыми осуществляется контроль;
  • изменять алгоритмы функционирования средств контроля.

При этом чрезвычайно важно, чтобы включение средств контроля выполнялось до начала воздействия программной закладки либо когда контроль осуществлялся только с использованием программ управления, находящихся в ПЗУ компьютерной системы.

Защита от внедрения программных закладок

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

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

Для определения степени изолированности компьютера может использоваться модель ступенчатого контроля. Сначала проверяется, нет ли изменений в BIOS. Затем, если все в порядке, считывается загрузочный сектор диска и драйверы операционной системы, которые, в свою очередь, также анализируются на предмет внесения в них несанкционированных изменений. И наконец, с помощью операционной системы запускается драйвер контроля вызовов программ, который следит за тем, чтобы в компьютере запускались только проверенные программы.

Интересный метод борьбы с внедрением программных закладок может быть использован в информационной банковской системе, в которой циркулируют исключительно файлы-документы. Чтобы не допустить проникновения программной закладки через каналы связи, в этой системе не допускается прием никакого исполняемого кода. Для распознавания событий типа "ПОЛУЧЕН ИСПОЛНЯЕМЫЙ КОД" и "ПОЛУЧЕН ФАЙЛ-ДОКУМЕНТ" применяется контроль за наличием в файле запрещенных символов: файл признается содержащим исполняемый код, если в нем присутствуют символы, которые никогда не встречаются в файлах-документах.

Выявление внедренной программной закладки

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

  • качественные и визуальные;
  • обнаруживаемые средствами тестирования и диагностики.

К качественным и визуальным признакам относятся ощущения и наблюдения пользователя компьютерной системы, который отмечает определенные отклонения в ее работе (изменяется состав и длины файлов, старые файлы куда-то пропадают, а вместо них появляются новые, программы начинают работать медленнее, или заканчивают свою работу слишком быстро, или вообще перестают запускаться). Несмотря на то что суждение о наличии признаков этого класса кажется слишком субъективным, тем не менее, они часто свидетельствуют о наличии неполадок в компьютерной системе и, в частности, о необходимости проведения дополнительных проверок присутствия программных закладок. Например, пользователи пакета шифрования и цифровой подписи "Криптоцентр" с некоторых пор стали замечать, что цифровая подпись под электронными документами ставится слишком быстро. Исследование, проведенное специалистами ФАПСИ, показало присутствие программной закладки, работа которой основывалась на навязывании длины файла. В другом случае тревогу забили пользователи пакета шифрования и цифровой подписи "Криптон", которые с удивлением отметили, что скорость шифрования по криптографическому алгоритму ГОСТ 28147-89 вдруг возросла более, чем в 30 раз. А в третьем случае программная закладка обнаружила свое присутствие в программе клавиатурного ввода тем, что пораженная ею программа перестала нормально работать.

Признаки, выявляемые с помощью средств тестирования и диагностики, характерны как для программных закладок, так и для компьютерных вирусов. Например, загрузочные закладки успешно обнаруживаются антивирусными программами, которые сигнализируют о наличии подозрительного кода в загрузочном секторе диска. С инициированием статической ошибки на дисках хорошо справляется Disk Doctor, входящий в распространенный комплект утилит Norton Utilities. А средства проверки целостности данных на диске типа Adinf позволяют успешно выявлять изменения, вносимые в файлы программными закладками. Кроме того, эффективен поиск фрагментов кода программных закладок по характерным для них последовательностям нулей и единиц (сигнатурам), а также разрешение выполнении только программ с известными сигнатурами.

Удаление внедренной программной закладки

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

4. Троянские программы

Троянские программы

Троянской программой (троянцем, или троянским конем) называется:

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

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

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

Откуда берутся троянские программы

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

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

К последним можно отнести, например, троянскую программу PC CYBORG, которая завлекала ничего не подозревающих пользователей обещаниями предоставить им новейшую информацию о борьбе с вирусом, вызывающим синдром приобретенного иммунодефицита (СПИД). Проникнув в компьютерную систему, PC CYBORG отсчитывала 90 перезагрузок этой системы, а затем прятала все каталоги на ее жестком диске и шифровала находящиеся там файлы.

Другая троянская программа называлась AOLGOLD. Она рассылалась по электронной почте в виде заархивированного файла. В сопроводительном письме, прилагавшемся к этому файлу, говорилось о том, что AOLGOLD предназначена для повышения качества услуг, которые предоставляет своим пользователям крупнейший американский Internet-провайдер America Online (AOL). Архив состоял из двух файлов, один из которых именовался INSTALL.BAT. Пользователь, запустивший INSTALL.BAT, рисковал стереть все файлы из каталогов С:\, C:\DOS, C:\WINDOWS и C:\WINDOWS\SYSTEM на своем жестком диске.

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

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

Случается и так, что троянцы встраиваются в некоторые утилиты программистами, не имеющими никакого отношения к разработке этих утилит. Па-пример, в дистрибутив сканера SATAN, предназначенный для установки на компьютеры с операционной системой Linux, распространявшийся через Internet, попала троянская программа, которая "обосновалась" в утилите fping. При первом же запуске модифицированной утилиты fping в файл /etc/passwd добавлялась запись для пользователя с именем suser, который в результате мог войти в Linux и тайно получить там полномочия администратора. Однако у автора этой троянской программы были явные пробелы в компьютерном образовании. В частности, он не знал некоторых нюансов хранения паролей в операционных системах семейства UNIX. В результате файл /etc/passwd был соответствующим образом изменен всего лишь на двух компьютерах, на которых был установлен этот испорченный дистрибутив сетевого анализатора SATAN для Linux.

Где обитают и как часто встречаются троянские программы

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

Например, в январе 1999 г. было обнаружено, что популярная утилита TCP Wrapper, предназначенная для администрирования UNIX-систем и бесплатно распространяемая через Internet, на многих ftp-сайтах была заменена внешне похожей на нее программой, которая на самом деле являлась троянцем. После инсталляции он отправлял электронное сообщение по определенным внешним адресам, оповещая своего хозяина об успешном внедрении. Потом он ждал, пока будет установлено удаленное соединение с портом 421 зараженного им компьютера, и предоставлял привилегированные права доступа через этот порт.

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

В настоящее время существует целый ряд троянских программ, которые можно совершенно свободно скачать, подключившись к глобальной компьютерной сети Internet. Наибольшую известность среди них получили троянцы Back Orifice, Net Bus и SubSeven. На Web-узле группы разработчиков Back Orifice, которая именует себя Cult of Dead Cow (Культ мертвой коровы), можно даже найти с десяток постеров, которые предназначены для рекламы ее последней разработки — троянца Back Orifice 2000.

Таким образом, троянские программы встречаются довольно часто и, следовательно, представляют серьезную угрозу безопасности компьютерных систем. Даже после того как троянская программа обнаружена, ее вредоносное влияние на компьютерную систему может ощущаться еще в течение очень длительного времени. Ведь зачастую никто не может с уверенностью сказать, насколько сильно пострадала компьютерная система в результате проникновения в нее троянской программы.

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

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

Иногда ущерб, который может нанести троянец, оценить довольно легко. Например, если он предназначен для пересылки по электронной почте содержимого файла /etc/passwd, в котором операционные системы семейства UNIX хранят информацию о пользовательских паролях, достаточно установить "чистую" версию программы взамен той, в которой обосновался этот троянец. Затем пользователи должны будут обновить свои пароли, и на этом борьба с ним успешно завершается.

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

Как распознать троянскую программу

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

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

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

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

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

Итак, в борьбе с троянцами положиться на отметку о времени последней модификации файла и его размер нельзя, поскольку злоумышленник может их довольно легко подделать. Более надежной в этом отношении является так называемая контрольная сумма файла. Для ее подсчета элементы файла суммируются, и получившееся в результате число объявляется его контрольной суммой. Например, в операционной системе SunOS существует специальная утилита sum, которая выводит на устройство стандартного вывода STDOUT контрольную сумму файлов, перечисленных в строке аргументов этой утилиты.

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

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

Исторически сложилось так, что большинство утилит, позволяющих бороться с проникновением в компьютерную систему троянских программ путем однонаправленного хэширования файлов, было создано для операционных систем семейства UNIX. Одной из наиболее удобных в эксплуатации и эффективных является утилита Trip Wire, которую можно найти в Internet по адресу http://www.tripwiresecurity.com/. Она позволяет производить однонаправленное хэширование файлов при помощи нескольких алгоритмов, в том числе — MD43, MD54 и SHA5. Вычисленные хэш-значения файлов хранятся в специальной базе данных, которая, в принципе, является самым уязвимым звеном \ утилиты TripWire. Поэтому пользователям TripWire предлагается в обязательном порядке принимать дополнительные меры защиты, чтобы исключить доступ к этой базе данных со стороны злоумышленника (например, помещать ее на съемном носителе, предназначенном только для чтения).

 

Рис. 2.5. Окно антивирусной программы Norton Antivirus 2000

Средства борьбы с троянцами в операционных системах семейства Windows (95/98/NT) традиционно являются частью их антивирусного программною обеспечения. Поэтому, чтобы отлавливать Back Orifice, Net Bus, SubSeven и другие подобные им троянские программы, необходимо обзавестись самым современным антивирусом (например, программой Norton Anuvirus 2000 компании Symantec (рис. 2.1), которая позволяет обнаруживать присутствие   в компьютерной системе наиболее распространенных троянцев и избавляться от них). Следует регулярно проверять свой компьютер на присутствие в нем вирусов.

Тем, кто хочет иметь в своем распоряжении утилиту, предназначенную именно для обнаружения троянцев в компьютерах, которые работают под управлением операционных систем семейства Windows, можно посоветовать обратить свои взоры на программу The Cleaner компании MooSoft Development (http://www.homestead.com/moosoft/ cleaner.html) Эта утилита может быть с успехом использована для борьбы с более чем четырьмя десятками разновидностей троянских программ.

Обзор средств борьбы с троянскими программами был бы далеко не полным, если обойти вниманием недавно появившиеся на рынке программные пакеты, предназначенные для комплексной зашиты от угроз, с которыми сталкиваются пользователи настольных компьютеров при работе в Internet. Одним из таких пакетов является eSafe Protect компании Aladdin Knowledge Systems (демонстрационную версию eSafe Protect можно найти в Internet no адресу www.esafe.com).

Функционально eSafe Protect делится на три компонента — антивирус, персональный брандмауэр и модуль защиты компьютерных ресурсов. Антивирус избавляет компьютер от вредоносных программ благодаря применению антивирусного модуля VisuSafe, сертифицированного американским Национальным агентством компьютерной безопасности. Персональный брандмауэр контролирует весь входящий и исходящий трафик по протоколу TCP/IP, наделяя используемые IP-адреса определенными правами (например, ограничивая доступ в Internet в определенные часы или запрещая посещение некоторых Web-узлов).

Для защиты ресурсов компьютера, на котором установлен программный пакет eSafe Protect, создается специальная изолированная область — так называемая песочница. Все автоматически загружаемые из Internet Java-аплсты и компоненты ActiveX сначала помещаются в "песочницу", где они находятся под неусыпным наблюдением eSafe Protect. Если попавшая в "песочницу" программа попытается выполнить какое-либо недозволенное действие, то оно будет немедленно блокировано. В течение заданного интервала времени (от 1 до 30 дней) каждое приложение, загруженное в компьютер из Internet. проходит "карантинную" проверку в "песочнице". Полученная в холе такой проверки информация заносится в особый журнал. По истечении "карантина" приложение будет выполняться вне "песочницы", однако ему будут дозволены только те действия, перечень которых определяется на основе имеющихся журнальных записей.

Таким образом, по сравнению с другими подобными программными пакетами eSafe Protect обеспечивает наиболее развитые и эффективные средства комплексной зашиты от троянских программ. Входящий в состав eSafe Protect антивирус помогает быстро выявлять троянцев и расправляться с ними, используя технологии, которые хорошо зарекомендовали себя при борьбе с вирусами. Персональный брандмауэр блокирует любые попытки связаться извне с проникшими в компьютерную систему троянскими программами. И наконец с помощью "песочницы" своевременно предотвращается внедрение троянцев в компьютеры под видом Java-аплетов и компонентов ActiveX.

5. Клавиатурные шпионы

 

 

Одна из наиболее распространенных разновидностей программных закладок — клавиатурные шпионы. Такие программные закладки нацелены на перехват паролей пользователей операционной системы, а также на определение их легальных полномочий и прав доступа к компьютерным ресурсам.

Клавиатурные шпионы — явление отнюдь не новое в мире компьютеров. В свое время они разрабатывались и для OS/370, и для UNIX, и для DOS. Их поведение в общем случае является довольно традиционным: типовой клавиатурный шпион обманным путем завладевает пользовательскими паролями, а затем переписывает эти пароли туда, откуда их может без особого труда извлечь злоумышленник. Различия между клавиатурными шпионами касаются только способа, который применяется ими для перехвата пользовательских паролей. Соответственно все клавиатурные шпионы делятся на три типа — имитаторы, фильтры и заместители.

Имитаторы

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

Обманутый пользователь, видя, что ему предлагается еще раз внести пароль. приходит к выводу о том, что он допустил какую-то ошибку во время предыдущего ввода пароля, и послушно повторяет всю процедуру входи в систему заново. Некоторые имитаторы для убедительности выдают на экран монитора правдоподобное сообщение о якобы совершенной пользователем ошибке. Например, такое: "НЕВЕРНЫЙ ПАРОЛЬ. ПОПРОБУЙТЕ ЕЩЕ РАЗ".

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

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

login:

password:

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

Системный процесс WinLogon, отвечающий в операционной системе Windows NT за аутентификацию пользователей, имеет свой собственный рабочий стол — совокупность окон, одновременно видимых на экране дисплея. Этот рабочий стол называется столом аутентификации. Никакой другой Процесс, в том числе и имитатор, не имеет доступа к рабочему столу аутентификации и не может расположить на нем свое окно.

После запуска Windows NT на экране компьютера возникает так называемое начальное окно рабочего стола аутентификации, содержащее указание нажать на клавиатуре клавиши <Ctrl>+<Alt>+<Del>. Сообщение о нажатии этих клавиш передается только системному процессу WinLogon, а для остальных процессов, в частности, для всех прикладных программ, их нажатие происходит совершенно незаметно. Далее производится переключение на другое, так называемое регистрационное окно рабочего стола аутентификации. В нем-то как раз и размещается приглашение пользователю ввести свое идентификационное имя и пароль, которые будут восприняты и проверены процессом WinLogon.

Для перехвата пользовательского пароля внедренный в Windows NT имитатор обязательно должен уметь обрабатывать нажатие пользователем клавиш <Ctrl>+<Alt>+<Del>. В противном случае произойдет переключение на регистрационное окно рабочего стола аутентификации, имитатор станет неактивным и не сможет ничего перехватить, поскольку все символы пароля, введенные пользователем, минуют имитатор и станут достоянием исключительно системного процесса WinLogon. Как уже говорилось, процедура регистрации в Windows NT устроена таким образом, что нажатие клавиш <Ctrl>+<Alt>+<Del> проходит бесследно для всех процессов, кроме WinLogon, и поэтому пользовательский пароль поступит именно ему.

Конечно, имитатор может попытаться воспроизвести не начальное окно рабочего стола аутентификации (в котором высвечивается указание пользователю одновременно нажать клавиши <Ctrl>+<Alt>+<Del>), а регистрационное (где содержится приглашение ввести идентификационное имя и пароль пользователя). Однако при отсутствии имитаторов в системе регистрационное окно автоматически заменяется на начальное по прошествии короткого промежутка времени (в зависимости от версии Window NT он может продолжаться от 30 с до 1 мин), если в течение этого промежутка пользователь не предпринимает никаких попыток зарегистрироваться в системе. Таким образом, сам факт слишком долгого присутствия на экране регистрационного окна должен насторожить пользователя Windows NT и заставить его тщательно проверить свою компьютерную систему на предмет наличия в ней программных закладок.

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

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

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

Фильтры

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

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

Известны несколько фильтров, созданных специально для различных версий операционной системы DOS. В 1997 г. отмечено появление фильтров для операционных систем Windows 3.11 и Windows 95.

Надо сказать, что изготовить подобного рода программную закладку не составляет большого труда. В операционных системах Windows 3.11 и Windows 95/98 предусмотрен специальный программный механизм, с помощью Которого в них решается ряд задач, связанных с получением доступа к вводу с клавиатуры, в том числе и проблема поддержки национальных раскладок клавиатур. К примеру, любой клавиатурный русификатор для Windows представляет собой самый что ни на есть настоящий фильтр, поскольку призван перехватывать все данные, вводимые пользователем с клавиатуры компьютера. Нетрудно "доработать" его таким образом, чтобы вместе со своей основной функцией (поддержка национальной раскладки клавиатуры) он заодно выполнял бы и действия по перехвату паролей. Тем более, что но . многих учебных пособиях и руководствах пользователя операционных систем Windows имеются исходные тексты программных русификаторов клавиатуры. "Перепрофилировав" этот русификатор так, чтобы он взял на себя выполнение функций клавиатурного шпиона, его можно встроить перед настоящим русификатором или после него, и в результате вся информация. 4 вводимая пользователем с клавиатуры, пойдет и через клавиатурного шпиона. Таким образом задача создания фильтра становится такой простой, что не требует наличия каких-либо специальных знаний у злоумышленника. Ему остается только незаметно внедрить изготовленную им программную  закладку в операционную систему и умело замаскировать ее присутствие.

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

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

Соблюсти первое из этих условий в локализованных для России версиях операционных систем принципиально невозможно. Дело в том, что средства создания учетных пользовательских записей на русском языке являются неотъемлемой частью таких систем. Только в англоязычных версиях систем Windows NT и UNIX предусмотрены возможности, позволяющие поддерживать уровень безопасности, при котором соблюдаются все 3 перечисленные условия.

Заместители

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

Поскольку заместители берут на себя выполнение функций подсистемы аутентификации, перед тем как приступить к перехвату пользовательских паролей они должны выполнить следующие действия:

  • подобно компьютерному вирусу внедриться в один или несколько системных файлов;
  • использовать интерфейсные связи между программными модулями полсистемы аутентификации для встраивания себя в цепочку обработки введенного пользователем пароля.

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

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

Как защитить систему от клавиатурных шпионов

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

Однако необходимо еще раз отметить, что единственной операционной системой, в которой построение такой защиты возможно, является Windows NT.

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

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

  •  конфигурировать цепочки программных модулей, участвующих в процессе аутентификации пользователей;
  • осуществлять доступ к файлам этих программных модулей;
  • конфигурировать саму подсистему аутентификации.

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

 

Глава 3. Парольная защита операционных систем

Глава 3. Парольная защита операционных систем

1. Парольные взломщики

 

Парольные взломщики

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

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

Что такое парольный взломщик

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

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

Как работает парольный взломщик

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

где N — число символов в наборе, L — предельная длина пароля, S — количество проверок в секунду (зависит от операционной системы и быстродействия компьютера, на котором производится взлом ее парольной защиты).

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

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

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

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

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

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

 

2. Взлом парольной защиты операционной системы UNIX

Взлом парольной защиты операционной системы UNIX

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

bill:5fg63fhD3d5g:9406:12:Bill Spencer:/home/fsg/will:/bin/bash

Здесь 5fg63fhD3d5g — это и есть информация о пароле пользователя bill.

При первоначальном задании или изменении пользовательского пароля операционная система UNIX генерирует два случайных байта (в приведенном выше примере 5 и f) к которым добавляются байты пароля. Полученная в результате байтовая строка шифруется при помощи специальной криптографической процедуры Crypt2 (в качестве ключа используется пароль пользователя) и в зашифрованном виде (g63fliD3d5g) вместе с двумя случайными байтами (5f) записывается в файл /etc/passwd после имени пользователя и двоеточия.

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

Самой эффективной и популярной такой программой является Crack. И хотя она предназначена для запуска на компьютерах, работающих только по.: управлением операционных систем семейства UNIX, инициируемый ею процесс поиска паролей может быть без особых усилий распределен междх различными платформами, подключенными к единой компьютерной сет. Среди них могут оказаться и IBM-совместимые персональные компьютеры , с операционной системой Linux, и рабочие станции RS/6000 с AIX. и Macintosh с A/UX.

CrackJack — еще одна известная программа для взлома паролей операционной системы UNIX. К сожалению, работает она только под управлением операционной системы DOS, но зато весьма непритязательна в том, что касается компьютерных ресурсов. К другим недостаткам этого парольною взломщика можно отнести запрет на одновременное использование сразу нескольких словарей и принципиальную невозможность запуска CrackJack под Windows 95/98.

В отличие от CrackJack, парольный взломщик PaceCrack95 работает пол Windows 95/98 в качестве полноценного DOS-приложения. К тому же он достаточно быстр, компактен и эффективен.

Парольные взломщики Q-Crack и John the Ripper примечательны тем, что существуют версии этих взломщиков, предназначенные для работы не только на DOS/Windows-платформах, но и на компьютерах с операционной системой Linux.

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

Существует множество других программ взлома паролей операционной системы UNIX. Они устойчивы к сбоям электропитания компьютеров, на которых работают (XiT), позволяют планировать время своей работы (Star Cracker), при выполнении монополизируют процессор для достижения максимальной производительности (Killer Cracker), не только взламывают пароли операционной системы UNIX, но и помогают преодолеть парольную защиту других программ, которые требуют, чтобы пользователь зарегистрировался путем ввода своего имени и соответствующего пароля (Claymore).

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

3. Взлом парольной защиты операционной системы Windows NT

Взлом парольной защиты операционной системы Windows NT

База данных учетных записей пользователей

Одним из основных компонентов системы безопасности Windows NT является диспетчер учетных записей пользователей. Он обеспечивает взаимодействие других компонентов системы безопасности, приложений и служб Windows NT с базой данных учетных записей пользователей (Security Account Management Database, SAM). Эта база обязательно имеется на каждом компьютере с операционной системой Windows NT. В ней хранится вся информация, используемая для аутентификации пользователей Windows NT при интерактивном входе в систему и при удаленном доступе к ней по компьютерной сети.

База данных SAM представляет собой один из кустов (hive) системного реестра (registry) Windows NT. Этот куст принадлежит ветви (subtree) HKEY_LOCAL_MACHINE и называется SAM. Он располагается в каталоге \wmnt_root\System32\ConfIg (winnt_root — условное обозначение каталога с системными файлами Windows NT) в отдельном файле, который тоже называется SAM.

Информация в базе данных SAM хранится в основном в двоичном виде. Доступ к ней обычно осуществляется через диспетчер учетных записей. Изменять записи, находящиеся в базе данных SAM, при помощи программ, позволяющих напрямую редактировать реестр Windows NT (REGEDT или REGEDT32), не рекомендуется. По умолчанию этого и нельзя делать, т. к. доступ к базе данных SAM запрещен для всех без исключения категорий пользователей операционной системы Windows NT.

Хранение паролей пользователей

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

При использовании первого метода строка символов пользовательского пароля хэшируется с помощью функции MD4. В итоге из символьного пароля, введенного пользователем, получается 16-байтовая последовательность — хэшированный пароль Windows NT. Данная последовательность затем шифруется по DES-алгоритму5, и результат шифрования сохраняется в базе данных SAM. При этом в качестве ключа используется так называемый относительный идентификатор пользователя (Relative Identifier, RID), который представляет собой автоматически увеличивающийся порядковый номер учетной записи данного пользователя в базе данных SAM.

Для совместимости с другим программным обеспечением корпорации Microsoft (Windows for Workgroups, Windows 95/98 и Lan Manager) в базе данных SAM хранится также информация о пароле пользователя в стандарте Lan Manager. Для ее формирования используется второй метод. Все буквенные символы исходной строки пользовательского пароля приводятся к верхнему регистру, и, если пароль содержит меньше 14 символов, то он дополняется нулями. Из каждой 7-байтовой половины преобразованного таким образом пароля пользователя отдельно формируется ключ для шифрования фиксированной 8-байтовой последовательности по DES-алгоритму. Полученные в результате две 8-байтовые половины хэшированного пароля Lan Manager еще раз шифруются по DES-алгоритму (при этом в качестве ключа используется RID пользователя) и помещаются в базу данных SAM.

Использование пароля

Информация о паролях, занесенная в базу данных SAM, служит для аутентификации пользователей Windows NT. При интерактивном или сетевом входе в систему введенный пользователем пароль сначала хэшируется и шифруется, а затем сравнивается с 16-байтовой последовательностью, записанной в базе данных SAM. Если они совпадают, пользователю разрешается вход в систему.

Обычно в базе данных SAM хранятся в зашифрованном виде оба хэшированных пароля. Однако в некоторых случаях операционная система вычисляет только один из них. Например, если пользователь домена Windows NT изменит свой пароль, работая на компьютере с Windows for Workgroups, то в его учетной записи останется только пароль Lan Manager. А если пользовательский пароль содержит более 14 символов или если эти символы не входят в так называемый набор поставщика оборудования (original equipment manufacturer, OEM), то в базу данных SAM будет занесен только пароль Windows NT.

Возможные атаки на базу данных SAM

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

По умолчанию в операционной системе Windows NT доступ к файлу \winnt_root\System32\Config\SAM заблокирован для всех без исключения ее пользователей. Тем не менее, с помощью программы NTBACKUP любой обладатель права на резервное копирование файлов и каталогов Windows NT может перенести этот файл с жесткого диска на магнитную ленту. Резервную копию реестра также можно создать утилитой REG ВАК из Windows NT Resource Kit. Кроме того, несомненный интерес для любого взломщика представляют резервная копия файла SAM (SAM.SAV) в каталоге \winnt_root\System32\Config и сжатая архивная копия SAM (файл SAM._) в каталоге \winnt_root\Repair.

При наличии физической копии файла SAM извлечь хранимую в нем информацию не представляет никакого труда. Загрузив файл SAM в реестр любого другого компьютера с Windows NT (например, с помощью команды Load Hive программы REGEDT32), можно в деталях изучить учетные записи пользователей, чтобы определить значения RID пользователей и шифрованные варианты их хэшированных паролей. Зная RID пользователя и имея зашифрованную версию его хэшированного пароля, компьютерный взломщик может попытаться расшифровать этот пароль, чтобы использовать его, например, для получения сетевого доступа к другому компьютеру. Однако для интерактивного входа в систему одного лишь знания хэшированного пароля недостаточно. Необходимо получить его символьное представление.

Для восстановления пользовательских паролей операционной системы Windows NT в символьном виде существуют специальные парольные взломщики, которые выполняют как прямой подбор паролей, так и поиск по словарю, а также используют комбинированный метод взлома парольной зашиты, когда в качестве словаря задействуется файл с заранее вычисленными хэшированными паролями, соответствующими символьным последовательностям, которые часто применяются в качестве паролей пользователей операционных систем. Одной из самых известных программ взлома паролей операционной системы Windows NT является LOphtCrack (http://www.10pht.com/IOphtcrack/).

Другим распространенным парольным взломщиком Windows NT является Advanced NT Security Explorer (сокращенно — ANTExp). Его можно найти в Internet по адресу http://www.elcomsoft.com/antexp.html. ANTExp имеет удобный пользовательский интерфейс. Пользователь может задать набор символов, из которых будут формироваться последовательности, используемые в качестве вариантов паролей, а также верхнюю и нижнюю границу длины перебираемых паролей. Кроме того, можно выбрать тип атаки на парольную защиту Windows NT и применить либо атаку методом "грубой силы", либо словарную атаку.

Защита системы от парольных взломщиков

Итак, вывод однозначен: одна из главных задач системного администратора Windows NT состоит в защите от несанкционированного доступа той информации, которая хранится в базе данных SAM. С этой целью ему, прежде всего, необходимо ограничить физический доступ к компьютерам сети и прежде всего — к контроллерам доменов. Дополнительно, при наличии соответствующих программно-аппаратных средств, следует установить пароли BIOS на включение компьютеров и на изменение настроек BIOS. Затем, , используя настройки BIOS, рекомендуется отключить загрузку компьютеров с гибких и компакт-дисков. А для обеспечения контроля доступа к файлам и папкам операционной системы Windows NT системный раздел жесткою диска должен иметь формат NTFS.

Каталог \winnt_root\repair нужно средствами операционной системы закрыть для доступа всех пользователей, включая администраторов, и разрешать к ней доступ только во время работы утилиты RDISK, создающей в этом каталоге архивные копии системного реестра Windows NT. Системные администраторы также должны внимательно следить за тем, где и как хранятся дискеты аварийного восстановления (Emergency Repair Disks) и архивные копии на магнитных лентах, если на последних присутствует дубликат системного реестра Windows NT.

Если компьютер с операционной системой Windows NT входит в домен, то по умолчанию имена и хэшированные пароли последних 10-ти пользователей, регистрировавшихся на этом компьютере, сохраняются (кэшируются) в его локальном системном реестре (в разделе SECURITY\Policy\Secrets куста HKEY LOCAL_MACHINE). Чтобы отменить кэширование паролей на компьютерах домена, нужно с помощью утилиты REGEDT32 в раздел Micro-soft\WindowsNT\CurrentVersion\Winlogon куста HKEY_LOCAL MACHINE добавить параметр CashedLogonsCount, установив его значение равным нулю, а тип — REG_SZ.

Для защиты базы данных SAM можно применить утилиту SYSKEY, входящую в состав пакета обновления Windows NT Service Pack 3. Эта утилита позволяет включить режим дополнительного шифрования информации о паролях, которая хранится в базе данных SAM. Уникальный 128-битовый ключ для дополнительного шифрования паролей (так называемый ключ шифрования паролей — Password Encryption Key, РЕК) автоматически сохраняется в системном реестре для дальнейшего использования.

Перед помещением в системный реестр ключ РЕК шифруется при помощи Другого 128-битового ключа, который называется системным ключом (System Key), и может храниться либо в системном реестре, либо в файле с именем STARTUP.KEY в корневом каталоге на отдельной дискете. Можно не сохранять системный ключ на магнитном носителе, и тогда каждый раз при запуске операционной системы он будет вычисляться с помощью алгоритма MD5 на основе пароля, набираемого на клавиатуре в диалоговом окне утилиты SYSKEY. Последние два способа хранения системного ключа обеспечивают максимальную защиту паролей в базе данных SAM, однако приводят к невозможности автоматической перезагрузки операционной системы, поскольку для завершения процесса перезагрузки потребуется либо вставить дискету с системным ключом и подтвердить ее наличие в дисководе путем нажатия кнопки ОК в появившемся диалоговом окне, либо вручную ввести системный ключ с клавиатуры.

Для повышения стойкости паролей пользователей операционной системы Windows NT ко взлому рекомендуется с помощью утилиты Диспетчер пользователей (User Manager) задать минимальную длину пользовательских паролей равной не менее 8 символов и включить режим устаревания паролей, чтобы пользователи периодически их обновляли. При этом чем выше вероятность атак на парольную защиту Windows NT, тем короче должен быть срок такого устаревания. А чтобы пользователи не вводили свои старые пароли повторно, необходимо включить режим хранения некоторого числа ранее использовавшихся паролей.

Утилита PASSPROP из состава Windows NT Resource Kit, запущенная с ключом /COMPLEX, заставляет пользователей вводить более устойчивые пароли, которые или сочетают буквы в разном регистре, или буквы с цифрами, или буквы со специальными символами. Более строгие правила фильтрации нестойких паролей можно задать после установки любого из пакетов обновления Windows NT, начиная с Service Pack 2. Тогда специальная библиотека PASSFJLT.DLL, находящаяся в каталоге \winnt_root\System32, будет следить за тем, чтобы каждый пользовательский   пароль состоял не менее чем из 5 символов, не содержал имени пользователя, включал символы, по крайней мере, трех наборов из четырех возможных, составленных из прописных букв, строчных букв, цифр и специальных символов (знаков препинания и т. д.) соответственно. Чтобы задать такой режим проверки паролей пользователей, необходимо в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControISet\Control\Lsa системного реестра с помощью программы REGEDT32 добавить параметр Noti fi cation Packages типа REG_MULTI_SZ и вписать в него строку PASSFILT Если этот параметр уже имеется, то новую строку следует дописать после уже существующей.

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

4. Как сделать парольную защиту Windows 95/98 более надежной

 

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

Однако, признавая отменные потребительские качества операционных систем корпорации Microsoft, нельзя обойти вниманием имеющиеся в них значительные изъяны. В первую очередь, это касается парольной зашиты Windows 95 и Windows 98. Фактически парольная защита в Windows 98 осталась на прежнем уровне по сравнению с Windows 95. Поэтому все сказанное в ходе дальнейшего изложения в равной степени относится к ним обеим. А следовательно, рассматривая парольную защиту Windows 95 и Windows 98, можно вести речь не о двух отдельных операционных системах, а о единой, обобщенной операционной системе, которую будем условно называть Windows 95/98.

Далеко не все пользователи знают, что для парольной защиты Windows 95/98 характерны существенные недостатки, связанные с тем, что при ее разработке корпорация Microsoft не уделила должного внимания проблемам безопасности компьютеров, для которых предназначалась эта операционная система. Рассмотрим подробнее, что представляет собой парольная защита в Windows 95/98, какие у нее имеются изъяны и как от них избавиться средствами самой операционной системы.

Как установить парольную защиту Windows 95/98

Чтобы установить парольную защиту в Windows 95/98, необходимо выполнить следующую процедуру:

1. Дважды щелкните левой кнопкой мыши на пиктограмме Мой компьютер (My Computer).

2. Теперь дважды щелкните на пиктограмме Панель управления (Control Panel). Если вы не можете отыскать пиктограмму Мой компьютер (My Computer), щелкните на кнопке Пуск (Start), выберите раздел Настройка (Settings), затем Панель управления (Control Panel) и перейдите к пункту 3.

3. Найдите пиктограмму, которая называется Пароли (Passwords), и дважды щелкните на ней. После двойного щелчка на пиктограмме Пароли (Passwords) Windows может отобразить диалоговое окно, в котором ним будет задан вопрос о том, хотите ли вы одновременно с этим изменить пароль экранной заставки Windows 95/98. Это окно появится только в том случае, если вы уже используете опцию экранной заставки. Суть вопроса в том, чтобы предоставить вам возможность использовать одинаковый пароль и для открытия сеанса работы с Windows 95/98, и для экранной заставки.

4. Щелкните на опции Сменить пароль Windows (Change Windows Passwords).

5. Введите новый пароль в поле Новый пароль (New Password) диалогового окна Изменение пароля Windows (Change Windows Passwords) (рис. 3.1). He обращайте внимания на поле Старый пароль (Old Password), оно должно остаться незаполненным. Однако если вы хотите изменить существующий пароль, то сначала введите его, а затем новый пароль. Операционная система Windows 95/98 внесет соответствующие изменения.

6. В поле Подтверждение пароля (Confirm New Password) введите пароль, указанный вами в пункте 5. Затем щелкните на кнопке ОК. Windows 95/98 выведет сообщение о том, что смена пароля прошла успешно.

 

Рис. 3.1. Диалоговое окно Изменение пароля Windows

7. Щелкните на кнопке ОК для закрытия диалогового окна Свойства: Пароли (Passwords Properties).

Почему парольная защита Windows 95/98 ненадежна

После того как была установлена парольная защита, каждый раз, когда включается компьютер, Windows 95/98 станет вежливо осведомляться о том, каковы ваши регистрационное имя и пароль. Продолжение нормальной работы с Windows 95/98 будет возможно только в том случае, если регистрационное имя и соответствующий ему пароль были введены без ошибок. Означает ли это, что система парольной защиты Windows 95/98 гарантирует: злоумышленник не сможет знакомиться с содержимым всех ваших файлов и запускать любые программы на вашем компьютере?

Отнюдь. Почему? Да по той простой причине, что в основе функционирования Windows 95/98 лежат принципы, которые были применены на практике при создании другой, более примитивной операционной системы корпорации Microsoft — DOS. Несмотря на то, что Windows 95/98 старается "упрятать" DOS как можно дальше, она по-прежнему использует эту безнадежно устаревшую операционную систему для обеспечения работоспособности старых программ, которые остались у пользователей, сменивших DOS на Windows 95/98. А ведь хорошо известно, что в DOS напрочь отсутствуют защитные механизмы, которые предотвращают несанкционированный доступ к файлам и программам компьютера, работающего под ее управлением. Ведь в сущности DOS и задумывалась-то именно для выполнения совершенно противоположной задачи — предоставить всем возможность обращаться к любым файлам. Как следствие, существует несколько способов обойти парольную защиту Windows 95/98, загружая на компьютере операционную систему DOS вместо Windows 95/98.

Как предотвратить несанкционированную загрузку системы

В ходе инсталляции операционной системы Windows 95/98 корпорация Microsoft настойчиво рекомендует ее пользователям сразу же создать так называемый загрузочный диск. В этой рекомендации есть свой резон: если возникнут какие-либо проблемы при переходе на Windows 95/98, вы сможете воспользоваться загрузочным диском, чтобы внести необходимые поправки.

Если вы не создали загрузочную дискету во время инсталляции операционной системы, вы можете сделать это в любой момент. Выберите опцию Установка и удаление программ (Add/Remove Programs) на Панели управления (Control Panel) Windows 95/98, а затем щелкните на переключателе Загрузочный диск (Startup Disk). После этого нажмите кнопку Создать диск (Create Disk) и вставьте гибкий диск в дисковод. Чтобы создать загрузочный диск Ж Windows 95/98, вам потребуется всего одна дискета.

Таким образом, для создания загрузочного диска не требуется каких-либо особенных познаний. Зато с его помощью можно без всяких хлопот обойти систему парольной защиты Windows 95/98. Эта система активируется только при загрузке Windows 95/98. При использовании же загрузочного диска происходит запуск не Windows 95/98, а ее подсистемы, функционально эквивалентной операционной системе DOS и не имеющей никаких средств обеспечения безопасной работы с компьютером (наподобие парольной защиты). Затем путем нехитрых манипуляций злоумышленник может не только установить собственный пароль для последующего открытия сеанса работы с Windows 95/98, но и сделать так, чтобы все остальные ее пользователи ничего не заметили и продолжали регистрироваться в Windows 95/98 посредством своих законных паролей.

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

Подобные меры окажутся весьма действенными и в том случае, если злоумышленник захочет использовать возможность загрузки Windows 95/98 в режиме защиты от сбоев, который также называется защищенным режимом (Safe Mode). Этот режим представляет собой специальный способ работы с Windows 95/98, с помощью которого можно запустить эту операционную систему, невзирая на всякие "мелочи" вроде парольной защиты. Для этого после включения питания компьютера достаточно удерживать в нажатом положении клавишу <F5> компьютерной клавиатуры.

Помимо <F5>, на клавиатуре имеются две другие особо "опасные" клавиши — <Ctrl> и <F8>, нажимая которые в ходе первоначальной загрузки Windows 95/98, злоумышленник может вызвать на экран дисплея специальное меню. В нем в качестве одной из опций присутствует возможность вместо Windows 95/98 запустить операционную систему DOS. С помощью этого меню можно заставить Windows 95/98 грузиться в режиме защиты от сбоев. Присутствие обеих этих возможностей одинаково нежелательно с точки зрения обеспечения в Windows 95/98 надежной парольной защиты.

Поэтому использование <F5>, <F8> и <Ctrl> и других подобных им клавиш в ходе первоначальной загрузки следует запретить, заставив Windows 95/98 никак не реагировать на их нажатие. Для этого достаточно отредактировать системный файл MSDOS.SYS, располагающийся, как правило, в разделе жесткого диска, с которого грузится Windows 95/98. Открыв MSDOS.SYS при помощи обычного редактора, вы увидите текст примерно следующего содержания:

[Paths]
WinDir=C:\WINDOWS
WinBootDir=C:\WINDOWS
HostWinBootDrv=C
[Options]
BootGUI=l
;
;The following lines are required for compatibility with other programs.
;Do not remove them (MSDOS.SYS needs to be >1024 bytes).

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x e ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxg ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxh ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi
; ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх j ; ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх k
;
ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх m
;
ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх o
; хххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххр xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq
;
ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх r
;
ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх s

Добавьте в раздел [Options] файла MSDOS.SYS одну из двух команд: BootKeys = 0 или BootDeiay= 0 . Обе эти команды позволяют дезактивировать работу клавиш <F5>, <F8> и <Ctrl> в ходе первоначальной загрузки. А чтобы слишком умный взломщик не смог незаметно убрать команду BootKeys = 0 или BootDeiay= 0 , предусмотрительно помещенную вами в файл MSDOS.SYS, следует защитить его при помощи антивирусного сканера, который своевременно предупредит вас обо всех попытках внести несанкционированные изменения в этот файл.

Как запретить кэширование паролей в Windows 95/98

Пользователи миллионов компьютеров, применяющих парольную защиту Windows 95/98, часто даже не подозревают о еще одной грозящей им опасности. Проблема связана с кэшированием паролей — методом, который был разработан корпорацией Microsoft для их хранения в Windows 95/98. Многие выбирают кэширование паролей, даже не догадываясь об этом, поскольку кэширование в Windows 95/98 разрешено по умолчанию. В этом случае пользовательский пароль помещается операционной системой в отдельный файл на магнитном диске. Например, если ваше имя — Вадим, и оно также является идентификатором для входа в систему, то ваш пароль будет сохранен в файле C:\WINDOWS\BAAHM.PWL.

При кэшировании пароль записывается в PWL-файл в зашифрованном виде. В корпорации Microsoft утверждают, что применяемый метод шифроваия является лучшим среди разрешенных правительством США для экспорта за пределы страны. Суть возражений оппонентов Microsoft состоит в том. if что реализация этого метода в Windows 95/98 далеко не безупречна, и в результате его стойкость совершенно не отвечает современным требованиям. А Программы, предназначенные для дешифрования парольных файлов, можно легко отыскать в глобальной сети Internet (например, по адресу http://www.c2.org/hacksoft/), что свидетельствует об уязвимости метола шифрования паролей в Windows 95/98.

Существует 2 пути решения этой проблемы. Во-первых, можно получить от Microsoft "заплату", которая позволяет использовать в Windows 95/98 более совершенный метод шифрования паролей. Такая "заплата" доступна пользователям глобальных компьютерных сетей, в которых присутствует корпорация Microsoft.

Во-вторых, кэширование паролей можно отключить. Правда, чтобы сделать это, придется немного повозиться. Для начала потребуется установить программу, которая называется Редактор системных правил (System Policy Editor). Эта программа входит в комплект Windows 95/98 Resource Kit (Набор ресурсов Windows 95/98), который включен в поставку Windows 95/98 на компакт-диске. Чтобы ее установить, надо выполнить следующее:

1. Используя пиктограмму Установка и удаление программ (Add/Remove Programs) в Панели управления (Control Panel), выберите вкладку Установка Windows (Windows Settings).

2. Нажмите на кнопку Установить с диска (Have Disk) и в появившемся диалоговом окне укажите каталог E:\ADMIN\APPTOOLS\POLED1T для Windows 95 или E:\TOOLS\RESKIT\NETADMIN\POLEDIT для Windows 98 (если ваш CD-ROM установлен как диск Е).

3. В диалоговом окне, появившемся после нажатия кнопки Установить с диска (Have Disk), выберите программу Редактор системных правил (System Policy Editor), а затем нажмите кнопку Установить (Install).

4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Установка и удаление программ (Add/Remove Programs).

После установки для запуска редактора системных правил следует сначала выбрать пункт Программы (Programs) меню Пуск (Start), затем Стандартные (Accessories), далее Служебные (System Tools) и наконец — Редактор системных правил (System Policy Editor). Немного погодя перед вами появится диалоговое окно этой программы.

Выполнив команду Создать (New File) меню Файл (File), вы увидите пиктограммы Стандартный компьютер (Default Computer) и Стандартный пользователь (Default User). Щелкнув дважды сначала на пиктограмме Стандартный компьютер (Default Computer), а затем — на кнопках Сеть (Network) и Пароли (Passwords), можно пометить галочкой строку Отключить кэширование паролей (Disable Password Cashing).

Затем внесенные изменения следует сохранить на диске в виде файла системных правил с расширением POL, назвав его по своему усмотрению. При следующем запуске Windows 95/98 файл системных правил загрузится автоматически и будет определять работу компьютера.

Соблюдайте осторожность: парольная защита ненадежна

Попробуйте набрать произвольную последовательность символов, когда Windows 95/98 предложит вам ввести свое регистрационное имя и соответствующий пароль. Вы думаете, эта операционная система гневно ответит вам: "Руки прочь от компьютера! Введенное вами имя нельзя использовать, т. к. оно не зарегистрировано"? Ничего подобного! Вместо этого она ласково скажет: "Да вы, батенька, никогда раньше этим именем не пользовались. А не желаете ли зарегистрироваться?"

Злоумышленник, конечно же, с радостью согласится, и Windows 95/98 будет в его полном распоряжении. Примерно то же самое получится, если в ответ на приглашение зарегистрироваться нажать на клавиатуре компьютера клавишу <ESC>.

Эти простые приемы должны убедить вас в полной бесполезности парольной защиты Windows 95/98 в деле обеспечения безопасной работы с компьютером. Если вас такое положение дел не устраивает, загрузите улучшенный вариант библиотеки программ, реализующий парольную защиту в Windows 95/98, с Internet-сервера корпорации Microsoft по адресу http://www.microsoft.com/windows/download/mspwlupd.exe. После запуска программы mspwlupd.exe надо будет ответить Да (Yes) на вопрос о том, желаете ли вы заменить библиотеку, реализующую работу с паролями в Windows 95/98. Соответствующее программное обеспечение установится автоматически и будет работать после перезагрузки операционной системы.

Далее, с использованием редактора системных правил, можно определить полномочия всех пользователей (т. е., что им позволено делать, а что нет). В результате каждый пользователь Windows 95/98 будет иметь свой собственный набор полномочий. При этом настоятельно рекомендуется строго ограничить права пользователей, не имеющих пароля.

Уместен вопрос: а зачем вообще в Windows 95/98 нужна такая ничтожная парольная защита? Тем, кто уже приготовился произнести гневную тираду в адрес корпорации Microsoft, лучше приберечь свой пыл для более подходящего случая, поскольку ею официально заявлено, что основное назначение паролей Windows 95/98 состоит в предоставляемой ими возможности по-разному настраивать один и тот же компьютер для различных пользователей. А посему тем, кому нужна полноценная парольная защита, следует посоветовать обратиться к другой операционной системе семейства Windows (Windows NT) или воспользоваться дополнительными программными средствами, специально предназначенными для безопасной работы с Windows 95/98 (например, пакетом программ Norton Your Eyes Only компании Symatec). Что же касается новейшей операционной системы Windows 2000, то хотя и дополнение ко всему лучшему, что имелось в предыдущих версиях операционных систем семейства Windows, в ней должно было быть реализовано множество совершенно новых возможностей и технологий, способных повысить эффективность работы практически любого пользователя, делать какие-либо определенные выводы относительно подсистемы безопасности Windows 2000 пока еще преждевременно.

Конечно, чисто теоретически использование протокола Kerberos позволяет существенно улучшить механизм аутентификации в Windows 2000 даже по сравнению с Windows NT, не говоря уже о Windows 95/98. Однако вопрос о том, насколько хорошей будет практическая реализация этого протокола, остается открытым вплоть до официального выхода в свет финальной версии Windows 2000. Дело в том, что бета-версии операционных систем, как правило, не обладают функциональной полнотой их финальных версий, а также часто содержат ошибки, большинство которых исправляется к моменту выпуска финальных версий. Поэтому бета-версии программных продуктов могут служить лишь подсобным материалом для сугубо предварительного тестирования. "Сенсационная" информация в прессе о том, что пользователи могут регистрироваться в третьей по счету бета-версии Windows 2000 без ввода пароля, отнюдь не означает, что то же самое можно будет проделывать в ее финальной версии, которая, как планируется, должна поступить в продажу 17 февраля 2000 г. И целенаправленный поиск дыр в подсистеме безопасности операционной системы Windows 2000 лучше всею отложить до момента выхода ее финальной версии.

 

Глава 4. Безопасность компьютерной сети

Глава 4. Безопасность компьютерной сети

1. Сканеры

 

Сканеры

Когда-то давным-давно жесткие диски персональных компьютеров были объемом всего-навсего 10 Мбайт, а их оперативная память не превышала 640 Кбайт. Модемы работали на скоростях от 300 до 1200 бит/с, и мало кто из пользователей "персоналок" слышал о глобальной компьютерной сети Internet. Конечно, эта сеть существовала уже тогда, но использовалась исключительно в военных целях, а работа с ней осуществлялась только при помощи командной строки. Но не это служило основным препятствием для массового доступа к сети Internet. Вычислительные машины, которые могли быть задействованы в качестве серверов, были очень дорогими — их стоимость исчислялась цифрами с пятью-шестью нулями (в долларах). Да и сами персональные компьютеры стоили тогда весьма недешево, и были по карману только обеспеченным людям.

Итак, представим себе пригородный район, в котором проживают люди с достатком. Солидные дома с просторными гаражами и аккуратно подстриженными газонами. Близится полночь. На улицах пустынно, в окнах темно. И только одно окно ярко светится в темноте. Там, за персональным компьютером сидит юноша лет 15—17 и обзванивает при помощи модема телефонные номера, которые ему сообщил приятель. В большинстве случаев на другом конце провода оказывается другой модем, и на экране персонального компьютера появляется приглашение зарегистрироваться, т. е. ввести имя и пароль. Каждый раз, получив такое регистрационное приглашение. юноша начинает лихорадочно перебирать различные пары имен и соответствующих им паролей. Наконец, одна пара подходит, и юный взломщик получает возможность управлять удаленным компьютером, сидя дома.

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

Боевой номеронабиратель представляет собой программу, обзванивающею заданные пользователем телефонные номера в поисках компьютеров, которые в ответ на поступивший звонок выдают регистрационное приглашение Программа аккуратно сохраняет в файле на жестком диске все такие телефонные номера вместе с данными о скорости соединения с ними. Одним и ; самых известных и совершенных боевых номеронабирателей является TONELOC, предназначенный для работы в среде операционной системы DOS (он может быть запущен под управлением Windows 95/98 в режиме командной строки).

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

Ныне сканеры стали весьма грозным оружием как нападения, так и защиты в Internet. Что же представляет собой современный сканер?

 

2. Сканер в вопросах и ответах

Сканер в вопросах и ответах

Что такое сканер?

Сканер — это программа, предназначенная для автоматизации процесса поиска слабостей в защите компьютеров, подключенных к сети в соответствии с протоколом TCP/IP. Наиболее совершенные сканеры обращаются к портам TCP/IP удаленного компьютера и в деталях протоколируют отклик, который они получают от этого компьютера. Запустив сканер на своем компьютере, пользователь, скажем, из подмосковной Малаховки, лаже не выходя из дома, может найти бреши в защитных механизмах сервера, расположенного, например, в Лос-Анджелесе.

Каковы системные требования для работы со сканерами?

Большинство сканеров предназначено для работы в среде операционном системы UNIX, хотя к настоящему времени такие программы имеются практически для любой операционной системы. Возможность запустить сканер на конкретном компьютере зависит от операционной системы, под управлением которой работает этот компьютер, и от параметров подключения к Internet. Есть сканеры, которые функционируют только в среде UNIX, а с остальными операционными системами оказываются несовместимыми. Другие отказываются нормально работать на устаревших компьютерах с Windows 3.11 и с медленным (до 14 400 бит/с) доступом к Internet, осуществляемым по коммутируемым линиям. Такие компьютеры будут надоедать сообщениями о переполнении стека, нарушении прав доступа или станут просто зависать.

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

Трудно ли создать сканер?

Написать сканер не очень трудно. Для этого достаточно хорошо знать протоколы TCP/IP, уметь программировать на С или Perl и на языке сценариев, а также разбираться в программном обеспечении сокетов. Но и в этом случае не следует ожидать, что созданный вами сканер принесет большую прибыль, поскольку в настоящее время предложение на рынке сканеров значительно превышает спрос на них. Поэтому наибольшая отдача от усилий, вложенных в написание сканера, будет скорее моральной (от осознания хорошо выполненной работы), чем материальной.

Что не по силам даже самому совершенному сканеру?

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

Насколько легальны сканеры?

Обычно сканеры создаются и используются специалистами в области сетевой безопасности. Как правило, они распространяются через сеть Internet. чтобы с их помощью системные администраторы могли проверять компьютерные сети на предмет наличия в них изъянов. Поэтому обладание сканерами, равно как и их использование на практике, вполне законно. Однако рядовые пользователи, не являющиеся системными администраторами. должны быть готовы к тому, что, если они будут применять сканеры для обследования чужих сетей, то могут встретить яростное сопротивление со стороны администраторов этих сетей. Более того, некоторые сканеры в процессе поиска брешей в защите компьютерных сетей предпринимают такие действия, которые по закону могут квалифицироваться как несанкционированный доступ к компьютерной информации, или как создание, использование и распространение вредоносных программ, или как нарушение правил эксплуатации компьютеров, компьютерных систем и сетей. И если следствием этих деяний стало уничтожение, блокирование, модификация или копирование информации, хранящейся в электронном виде, то виновные в них лица в соответствии с российским законодательством подлежат уголовному преследованию. А значит, прежде чем начать пользоваться первым попавшимся под руку бесплатным сканером для UNIX-платформ, стоит убедиться, а не копирует ли случайно этот сканер заодно и какие-нибудь файлы с диска тестируемой им хост-машины (например, файл password из каталога /ETC).

В чем различие между сканерами и сетевыми утилитами?

Часто к сканерам ошибочно относят утилиты типа host, rusers, finger. Traceroute, Showmount. Связано это с тем, что, как и сканеры, данные утилиты позволяют собирать полезную статистическую информацию о сетевых службах на удаленном компьютере. Эту информацию можно затем проанализировать на предмет выявления ошибок в их конфигурации.

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

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

Для Windows 95/98 имеются программные пакеты NetScan Tools (http://www.eskimo.com/~nwps/index.html). Network Toolbox (http://www.jriver. com/netbox.html) и TCP/IP Surveyor (http://www.rocketdownload.com/details/

inte/wssrv32nsrc.htm), которые реализуют выполнение сетевых утилит host, rusers, finger, Traceroute, ping, WHOIS. Последний из упомянутых пакетов не только осуществляет сбор информации о сети и подключенных к ней компьютерах, но и представляет собранную таким образом информацию в виде графа, вершинами которого служат найденные в сети маршрутизаторы, серверы и рабочие станции.

Пользователям персональных компьютеров типа Macintosh можно посоветовать обратить внимание на программные пакеты МасТСР Watcher (http://waldo.wi.mit.edu/WWW/tools/util/Mac/MacTCP_Watchei), Querylt! (http://tucows.online.ru/mac/adnload/dlqueryitinac.html) и What Route (http://homepages.ihug.co.nz/~bryanc).

3. Сканер в действии

Сканер в действии

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

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

В конце 1995 г. американская корпорация Silicon Graphics Incorporated (SGI) начала массовое производство мощных компьютеров серии WebForce. Для них имелось специальное программное обеспечение, предназначенное для создания Web-страниц, насыщенных мультимедийными приложениями. Эти компьютеры работали под управлением операционной системы IRIX (разновидность UNIX).

Вскоре в Internet разнесся слух о том, что некоторые версии IRIX имеют дефект, который позволяет удаленному пользователю регистрироваться в ней под именем 1р, при этом пароля вводить не нужно. В результате компьютерный взломщик, беспрепятственно вошедший в IRIX под именем 1р, обладал достаточными привилегиями, чтобы скопировать файл password, содержащий зашифрованные имена и пароли пользователей, с компьютера серии WebForce на свой компьютер. Дальше взломщик мог в спокойной обстановке попытаться дешифровать скопированный им файл, чтобы получить полный список имен и паролей пользователей компьютера SGI.

Итак, дыра в защите компьютеров серии WebForce была обнаружена. Оставалось только отыскать эти компьютеры в Internet. Поскольку их системные администраторы лучше разбирались в компьютерной графике и почти ничего не смыслили в вопросах сетевой безопасности, то некоторые каталоги на дисках вверенных их заботам компьютеров были доступны для всеобщего обозрения через Internet. В одном из этих каталогов содержался стандартный файл password из дистрибутива операционной системы IRIX. Большинство перечисленных в нем регистрационных имен пользователей были характерны для любой другой операционной системы семейства UNIX. Однако имелись среди них и имена, которые являлись уникальными именно для IRIX. Таким образом, пользуясь любой поисковой машиной сети Internet, можно было задать в качестве искомой информации ли имена и получить готовый список компьютеров серии WebForce.

Тем не менее, данный метод оказался не очень надежным, поскольку через несколько месяцев системные администраторы компьютеров серии WebForce спохватились и убрали файл password из общедоступных каталогов. Кроме того, не все версии операционной системы IRIX имели рассмотренный дефект. По этой причине взломщики решили прибегнуть к помощи , сканера. Был написан сканер, который случайным образом или на основе .каких-то дополнительных сведений выбирал некоторые сетевые адреса. Результаты обращения по этим адресам фиксировались в специальном текстовом файле. Его потом можно было проверить на наличие в нем строк типа:

Trying 199.200.0.1

Connecting to 199.200.0.1

Escape character is "]"

IRIX 4.1

Welcome to Graphics Town!

Login:

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

4. SATAN, Jackal и другие сканеры

Среди сканеров наибольшую известность получил SATAN (Security Administrator's Tool for Analyzing Networks). Этот сканер распространяется через 'Internet (его можно найти, например, по адресу http://www.fish.com), начиная с апреля 1995 г.

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

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

Под стать своему необычному детищу были и сами авторы SATAN — американцы Д. Фармер (D. Farmer) и У. Венема (W. Venema) — талантливые программисты, хакеры и авторитетные специалисты в области сетевой безопасности.

SATAN предназначен исключительно для работы в среде UNIX. Для его установки и запуска необходимы права администратора. Основная задача SATAN, как это следует из его названия, состоит в том, чтобы отыскивать изъяны в защитных механизмах компьютерной сети, в которой используется протокол TCP/IP. Следует особо подчеркнуть, что речь идет об уже известных изъянах. Это означает, что SATAN не делает ничего такого, что не по силам совершить опытному компьютерному взломщику, который вручную пытается преодолеть сетевую защиту.

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

Сканер Strobe (Super Optimized TCP Port Surveyor) исследует порты TCP/IP выбранного компьютера и протоколирует все полученные сведения. Основное достоинство Strobe — быстрота сканирования. Если компьютер, на котором запущен Strobe, подключен к Internet через модем, работающий со скоростью 28800 бит/с, то на полное сканирование сервера ему понадобится всего около 30 с. Однако полученная информация будет довольно скудной — лишь общие диагностические сведения о сетевых службах сервера. Кроме того, в хост-машине, подвергшейся сканированию с помощью Strobe, этот факт не останется не замеченным (скорее всего, он будет зафиксирован в файле /var/adm/messages). Сканер Strobe можно скачать из Internet по адресу

Jackal (доступен в Internet по адресу http://www.giga.or.at/pub/hacker/unix) — это сканер-"призрак". Он анализирует сетевые домены, проникая сквозь брандмауэры и не оставляя при этом никаких следов своего проникновения

Сканер NSS (Network Security Scanner) замечателен прежде всего тем, что написан на языке Perl и, следовательно, может быть легко перенесен на любую платформу, для которой имеется интерпретатор этого языка. Другим достоинством NSS является скорость его работы. Желающие познакомиться с NSS поближе также могут обратиться в Internet по адрес\

Более узкая специализация характерна для IdentTCPscan (предназначен для определения регистрационного имени пользователя, работающего с данным портом TCP/IP), FSPScan (осуществляет поиск серверов, которые поддерживают сетевой протокол FSP), XSCAN (анализирует Х-серверы с целью нахождения изъянов в их конфигурации) и CONNECT (ищет серверы, работающие с протоколом TFTP). Все эти сканеры можно найти там же, где и Jackal с NSS.

Исторически сложилось, что подавляющее большинство сканеров было создано для операционной системы UNIX. Поэтому довольно трудно отыскать предназначенные для других платформ сканеры, которые по своей мощи, удобству использования и богатству возможностей могли бы сравниться с SATAN. Кроме того, многие отличные от UNIX платформы, поддерживающие протокол TCP/IP, реализуют его в неполном объеме.

Пользователям Windows 95/98, которые непременно хотят поскорее попробовать свои силы в поиске изъянов сетевой защиты, можно посоветовать применить сканер, который входит в упоминавшийся выше программный пакет Network Toolbox.

Следует отметить, что в средствах защиты сетей от взлома постоянно обнаруживаются новые изъяны. Соответственно претерпевают изменения и сканеры. Внесение в них поправок — дело не особенно трудоемкое: достаточно Дописать исходный код сканера с учетом недавно найденных брешей в сетевых защитных механизмах, и новая, более совершенная, версия сканера готова! Вот почему сканеры продолжают оставаться одним из самых главных средств защиты сетей. Системным администраторам необходимо иметь в распоряжении как можно больше таких средств — хороших и разных.

5. Анализаторы протоколов

 

настоящее время технология построения компьютерных сетей Ethernet стала самым распространенным решением. Сети Ethernet завоевали огромную популярность благодаря хорошей пропускной способности, простоте установки и приемлемой стоимости сетевого оборудования. Участки сетей для которых скорости передачи данных 10 Мбит/с недостаточно, можно довольно легко модернизировать, чтобы повысить эту скорость до 100 Мбит/с (Fast Ethernet) или даже до 1 Гбит/с (Gigabit Ethernet).

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

Локальное широковещание

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

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

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

Существуют два основных способа объединения компьютеров в сеть Ethernet. В первом случае компьютеры соединяются при помощи коаксиального кабеля. Этот кабель черной змейкой вьется от компьютера к компьютеру, соединяясь с сетевыми адаптерами Т-образным разъемом. Такая топология на языке профессионалов называется сетью Ethernet IOBase2. Однако ее еще можно назвать сетью, в которой "все слышат всех". Любой компьютер, подключенный к сети, способен перехватывать данные, посылаемые по этой сети другим компьютером.

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

В последнее время в крупных сетях стали появляться коммутаторы нот но типа, которые не используют широковещание и не замыкают группы порки; между собой. Вместо этого все передаваемые по сети данные буферизуются в памяти и отправляются по мере возможности. Однако подобных сетей пока довольно мало — не более 10% от общего числа сетей типа Ethernet.

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

Анализатор протоколов как он есть

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

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

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

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

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

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

Одна из первых атак, проведенных при помощи анализаторов протоколов, была зафиксирована в 1994 г. в США. Тогда неизвестный злоумышленник разместил анализатор протоколов на различных хостах и магистральных узлах сетей Internet и Milnet, в результате чего ему удалось перехватить более 100 тыс. регистрационных имен и паролей пользователей. Среди пострадавших от атаки оказались Калифорнийский государственный университет и Ракетная лаборатория министерства обороны США.

Наиболее частыми целями атак компьютерных взломщиков, которые те осуществляют, используя анализаторы протоколов, являются университеты. Хотя бы из-за огромного количества различных регистрационных имен и паролей, которые могут быть украдены в ходе такой атаки. Да и сами студенты отнюдь не брезгуют возможностями анализаторов протоколов. Нередким является случай, когда несколько студентов, заняв компьютер, подключенный к локальной сети университетской библиотеки, быстро устанавливают с нескольких дискет анализатор протоколов. Затем они просят ничего не подозревающую жертву, сидящую за соседним компьютером: "Вы не могли бы заглянуть в свой почтовый ящик, а то у нас почему-то электронная почта не работает?" Несколько минут спустя вся эта группа компьютерных взломщиков-любителей, перехватив регистрационное имя и пароль доступа соседа к почтовому серверу, с удовольствием знакомится с содержимым его почтового ящика и посылает письма от его имени.

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

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

На серверах в сети Internet есть множество анализаторов протоколов, которые отличаются лишь набором доступных функций. Например, поиск по запросам protocol analyzer и sniffer на сервере www.softseek.com сразу лает ссылки на добрый десяток программных пакетов.

Для компьютеров, работающих под управлением операционных систем Windows, одними из лучших являются анатизаторы протоколов Lan Explorer компании Intellimax и NetXRay компании Network Associates. NetXRay (в переводе с английского — Сетевой рентген) обладает обширным набором функций, которые позволяют делать моментальный снимок "внутренностей" сети Ethernet, определять, какие ее узлы и сегменты несут наибольшую нагрузку, составлять отчеты и строить диаграммы на основе полученных данных. Бесплатная версия NetXRay доступна в Internet по адресу http://www.nai.com/asp_set/products/tnv/smflerbasic intro.asp. Анализатор протоколов Lan Explorer (в переводе с английского — Анализатор ЛВС) не уступает по своей функциональности NetXRay, имеет очень хороший пользовательский интерфейс, удобен и прост в использовании. Пробная 15-дневная версия Lan Explorer доступна по адресу

Анализатор протоколов Network Monitor входит в состав операционной системы Windows NT 4.0 Server корпорации Microsoft. Для его установки следует в Панели управления (Control Panel) дважды щелкнуть на пиктограмме Сеть (Network), затем перейти на вкладку Службы (Sen ice-, к нажать кнопку Добавить (Add) и в появившемся диалоговом окне выбран, Network Monitor Tools and Agent. После установки Network Monitor можно запустить из папки Network Analysis Tools раздела Администрирование (Administrative Tools) в меню Программы (Programs).

Защита от анализаторов протоколов

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

Посоветовать можно следующее:

  • Обзаведитесь сетевым адаптером, который принципиально не может функционировать в беспорядочном режиме. Такие адаптеры в природе существуют. Одни адаптеры не поддерживают беспорядочный режим на аппаратном уровне (их меньшинство), а остальные просто снабжаются драйвером, не допускающим работу в беспорядочном режиме, хотя режим и реализован в них аппаратно. Чтобы отыскать адаптер, не поддерживающий беспорядочный режим, достаточно связаться со службой технической поддержки любой компании, торгующей анализаторами протоколов, и выяснить, с какими адаптерами их программные пакеты не работают.
  • Учитывая, что спецификация РС99, подготовленная по инициативе корпораций Microsoft и Intel, требует безусловного наличия в сетевой карте беспорядочного режима, приобретите современный сетевой интеллектуальный коммутатор, который буферизует каждое отправляемое по сети сообщение в памяти и отправляет его по мере возможности точно по адресу. В результате надобность в "прослушивании" сетевым адаптером всего трафика для того, чтобы выбирать из него сообщения, адресатом которых является данный компьютер, отпадает.
  • Не допускайте несанкционированной установки анализаторов протоколов на компьютеры сети. Для этого следует применять средства из арсенала, который повсеместно используется для борьбы с программными закладками и, в частности, — с троянскими программами.
  • Шифруйте весь трафик сети. Имеется широкий спектр программных пакетов, которые позволяют делать это достаточно эффективно и надежно.

Возможность шифрования почтовых паролей предоставляется надстройкой над почтовым протоколом POP (Post Office Protocol) — протоколом АРОР (Authentication POP). При работе с АРОР по сети каждый раз передается новая зашифрованная комбинация, которая не позволяет злоумышленнику извлечь какую-либо практическую пользу из информации, перехваченной с помощью анализатора протоколов. Проблема только в том, что не все почтовые серверы и клиенты поддерживают АРОР.

Другой продукт под названием Secure Shell, или сокращенно — SSL, был изначально разработан финской компанией SSH Communications Security (http://www.ssh.fi) и в настоящее время имеет множество реализаций, доступных бесплатно через Internet. SSL представляет собой защищенный протокол для осуществления безопасной передачи сообщений по компьютерной сети с помощью шифрования.

Особую известность среди компьютерных пользователей приобрела серия программных пакетов, предназначенных для защиты передаваемых по сети данных путем шифрования и объединенных присутствием в их названии аббревиатуры PGP, которая означает Pretty Good Privacy. Бесплатно распространяемые версии программ шифрования из этой серии можно отыскать в Internet по адресу http://www.pgpi.org.

 

Глава 5. Основы криптографии

Глава 5. Основы криптографии

1. Зачем нужна криптография

 

Зачем нужна криптография

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

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

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

  За последние 20 лет положение в корне изменилось. Этому способствовали чрезвычайно интенсивные научные исследования в области криптографии, которые привели к тому, что современная компьютерная криптография "обитает" не только в стенах строго охраняемых военных учреждении, но и на страницах общедоступных журналов, монографии и учебников. Теперь при желании кто угодно может зашифровать свои данные таким образом. чтобы защитить их от самого могущественного противника — правительственных ведомств, специализирующихся на краже информации.

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

На практике все обстоит совершенно иначе. Своим Указом № 334 от 3 апреля 1995 г. президент России строго-настрого запретил "деятельность юридических и физических лиц, связанную с разработкой, производством, реализацией и эксплуатацией шифровальных средств, |...| предоставлением услуг в области шифрования информации", без государственных лицензий. А российские спецслужбы обязал "осуществлять выявление юридических и физических лиц, нарушающих требования настоящего Указа". Что с такими лицами будут делать — вырывать им ноздри или просто ставить клеймо на лоб, чтобы другим неповадно было, — в президентском Указе не сказано. Но и без этого у государственных чиновников в России появились все необходимые полномочия, чтобы при необходимости можно было воспрепятствовать внедрению надежных систем криптографической защиты информации. Надо сказать, что аналогично действует и американское правительство, которое путем введения государственного стандарта шифрования с передачей ключей на хранение пытается узаконить для себя право шпионить за своими гражданами.

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

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

В связи с вышесказанным необходимо, чтобы все спецслужбы, которые обладают правом доступа к современным техническим средствам слежки зa гражданами своей страны, действовали в рамках законности и под контролем компетентных органов, подотчетных народу, ибо пересечь обратно границу, один раз перейденную в направлении от демократии к диктатуре, будет уже невозможно. Ведь даже в США — стране с самой развитой, по общему признанию, демократией в мире, никто не имеет достаточных гарантий того, что не разделит судьбу многих честных соотечественников, которые в разное время подвергались преследованию только потому, что по убеждения были неугодны властям.

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

В информационной войне государство пользуется двумя основными видами оружия. Во-первых, в любую сертифицированную государством систему защиты информации встраивается так называемый потайной ход. который иногда еще именуют лазейкой. Еще в 1991 г. в сенат США был внесен законопроект, который требовал, чтобы любое американское криптографическое оборудование содержало потайной ход, известный АН Б. Поэтому совершенно не удивительно, что один из крупнейших разработчиков криптографического оборудования в США — компания AT&T — нисколько не скрывает того факта, что у американского правительства есть "ключики" "потайных ходов", ведущих во все ее системы вне зависимости от тою. насколько сложные пароли придумают неискушенные пользователи.

Второй способ обмана граждан является более изощренным и состоит в применении системы с депонированием ключей. В этом случае прочесть сообщение можно только при наличии всех частей ключа, использованного для засекречивания этого сообщения. Тайна переписки гарантируется до тех пор, пока государству не понадобится с ней ознакомиться. Тогда стоит заручиться согласием, скажем, тех доверенных лиц или организаций, которым были отданы на хранение части ключа, — и тайное станет явным. В США данный подход был подвергнут справедливой критике со стороны большинства специалистов, а корпоративные пользователи с негодованием отвергли саму идею довериться правительству в таком деликатном вопросе, как коммерческая тайна. И это в законопослушной Америке, где ставшие явными попытки спецслужб вторгнуться в частную жизнь своих граждан встречают немедленный и достойный отпор!

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

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

 

2. Терминология

Терминология

Шифрование и расшифрование

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

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

Наука, которая учит, как следует поступать, чтобы сохранить содержание сообщений в тайне, называется криптографией. Людей, занимающихся криптографией, зовут криптографами. Криптоаналитики являются специалистами в области криптоанализа — науки о вскрытии шифров, которая отвечает на вопрос о том, как прочесть открытый текст, скрывающийся пол шифрованным. Раздел науки, объединяющий криптографию и криптоанализ, именуется криптологией.

Обозначим открытый текст буквой Р (от английского слова plaintext). Это может быть текстовый файл, битовое изображение, оцифрованный звук — что угодно. Единственное ограничение связано с тем, что, поскольку, прел метом изложения является компьютерная криптография, под Р понимание;; исключительно двоичные данные.

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

На вход функции шифрования Е подается Р, чтобы на выходе получить С.

В обозначениях, принятых в математике, это записывается как:

Е(Р) = C

При обратном преобразовании шифртекста в открытый текст на вход функции расшифрования D поступает С, а на выходе получается Р:

D(C) = М

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

D(E(P)) = Р

Аутентификация, целостность и неоспоримость

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

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

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

Шифры и ключи

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

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

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

Е к (Р) = С

D к (С) = Р

По-прежнему справедливо следующее тождество:

D k (E k (P)) = P

Некоторые алгоритмы шифрования используют различные ключи для шифрования и расшифрования. Это означает, что ключ шифрования К 1 отличается от ключа расшифрования К 2 . В этом случае справедливы следующие соотношения:

Е к 1 ( P ) = С

D k2 (С) = Р

D k2 (E k1 (Р) ) = Р

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

Под криптосистемой понимается алгоритм шифрования, а также можно всевозможных ключей, открытых и шифрованных текстов.

Симметричные алгоритмы шифрования

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

Шифрование и расшифрование в симметричных криптографических алгоритмах задаются уже знакомыми формулами:

Е к (Р) = С

D к (С) = Р

Симметричные алгоритмы шифрования бывают двух видов. Одни из них обрабатывают открытый текст побитно. Они называются потоковыми алгоритмами, или потоковыми шифрами. Согласно другим, открытый текст разбивается на блоки, состоящие из нескольких бит. Такие алгоритмы называются блочными, или блочными шифрами. В современных компьютерных алгоритмах блочного шифрования обычно длина блока составляет 64 бита.

Алгоритмы шифрования с открытым ключом

Алгоритмы шифрования с открытым ключом, также называемые асимметричными алгоритмами шифрования, устроены так, что ключ, используемый для шифрования сообщений, отличается от ключа, применяемого для их расшифрования. Более того, ключ расшифрования не может быть за обозримое время вычислен , ходя из ключа шифрования. Свое название алгоритмы с открытым ключом получили благодаря тому, что ключ шифрования не требуемся держать в тайне. Любой может им воспользоваться, чтобы зашифровать свое сообщение, но только обладатель соответствующего секретного ключа расшифрования будет в состоянии прочесть это шифрованное сообщение. Ключ шифрования обычно называют открытым ключом, а ключ расшифрования — тайным ключом. Иногда тайный ключ называют также секретным, однако чтобы избежать путаницы с симметричными алгоритмами, это название не будет использоваться при дальнейшем изложении.

Несмотря на юг факт, что сообщения шифруются с помощью открытого ключа, а расшифровываются с помощью тайного ключа, процесс шифрования и расшифрования все равно записывается так:

Е k (Р) - С

D к (С) = Р

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

Е к (Р) = С

D k (C) = Р

Криптоаналитические атаки

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

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

Попытка криптоанализа называется атакой. Успешная криптоаналитическая атака зовется взломом, или вскрытием.

В современной криптологии принято считать, что надежность шифра определяется только секретностью используемого ключа. Правило, впервые сформулированное голландцем А. Керкхоффом (1835—1903), гласит о том, что весь механизм шифрования, за исключением значения ключа, предположительно известен противнику. Это предположение является довольно естественным. Например, хотя ФАПСИ вряд ли знакомит АНБ со своими криптографическими алгоритмами, какое-то представление о них там вес равно имеется. Следовательно, правило Керкхоффа является относительно хорошим допущением при рассмотрении надежности алгоритмов шифрования. Если шифр невозможно взломать, зная абсолютно все детали алгоритма шифрования, значит это тем более нельзя сделать, не обладая подобными знаниями во всей их полноте.

Известны 4 основных типа криптоаналитических атак. При рассмотрении каждой из них подразумевается, что криптоаналитик в курсе всех детален подвергаемого криптоанализу алгоритма шифрования.

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

Дано:

С 1 = E k1 (P 1 ),    С 2 = E k2 (P 2 ),...,      С i = E ki (P i ).

Найти:

P 1 , P 2 , ..., Р i или К 1 , К 2 , ..., K i .

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

Дано:

P 1 , C 1 = E k1 (P 1 ),   P 2 , C 2 = E k2 (P 2 ),...,  P i , C i = E ki (P i ).  

Найти:

K 1 , K 2 , . . , K i .

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

Дано:

P 1 , C 1 = E k 1 (P 1 ),   P 2 , C 2 = E k 2 (P 2 ),...,  P i ,   

где С i  = Е к i ( P i ), где P 1 , P 2 ,. . . , Pi выбраны криптоаналитиком.

Найти: К 1 , К 2 , . . . , K i .

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

Имеются по крайней мере еще 3 разновидности криптоаналитических атак.

1. Атака с выбранным шифртекстом. Криптоаналитику предоставлена возможность выбора шифртекстов, подлежащих расшифрованию получателем. Он также имеет доступ к соответствующим открытым текстам. Требуется найти ключи.

Дано:

С 1 , P 1 = D k1 ( C 1 ) ,    С 2 , P 2 = D k2 ( C 2 ) , ...,  С i , P i = D ki ( C i ).

Найти :

K 1 , K 2, . . . , K i . Этой криптоаналитической атаке, как правило, подвергаются алгоритмы шифрования с открытым ключом. Хотя иногда она эффективна и против симметричных криптосистем. Атаку с выбранным открытым текстом и с выбранным шифртектом называют атакой с выбранным текстом.

2. Атака с выбранным ключом. В ходе этой атаки криптоаналитик обладает некоторыми знаниями относительно правил, по которым отправитель и получатель сообщений выбирают ключи шифрования.

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

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

С этой точки зрения зашифрованная программа на языке С особенно уязвима, поскольку содержит множество зарезервированных слов типа # define, # include, if, then и do.

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

Надежность алгоритма шифрования

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

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

Под вскрытием (взломом) шифра обычно понимается решение одной из перечисленных ниже задач:

  • Полное вскрытие. Криптоаналитик нашел ключ К такой, что D K (C)=P.
  • Глобальная дедукция. Не зная К, криптоаналитик отыскал адьтернативный D k алгоритм А такой, что А(С) = Р.
  • Локальная дедукция. Криптоаналитику удалось определить открытый текст, соответствующий конкретному перехваченному шифртексту.
  • Частичная дедукция. Криптоаналитик получил неполную информацию о ключе или открытом тексте. Это могут быть несколько битов ключа, или. дополнительные данные о структуре открытого текста, или что-то еще в том же духе.

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

Сложность криптоаналитической атаки

Сложность криптоаналитической атаки на алгоритм шифрования может быть охарактеризована с помощью трех величин:

  • Сложность по данным. Количество входных данных, необходимое для успешной криптоаналитической атаки на алгоритм шифрования.
  • Вычислительная сложность.
  • Время, требуемое для успешной криптоаналитической атаки на алгоритм шифрования.

  • Сложность по памяти. Объем памяти, которая нужна для успешной криптоаналитической атаки на алгоритм шифрования.

Часто под сложностью криптоаналитической атаки понимается максимальная среди этих величин. А для некоторых атак приходится искать компромисс между сложностью по данным, вычислительной сложностью и сложностью по памяти. Например, для реализации более быстрой атаки может потребоваться дополнительная память.

Сложность криптоаналитической атаки, как правило, выражается в виде экспоненциальной функции. К примеру, если атака имеет сложность 2 128 , то это значит, что для взлома шифра требуется выполнить 2 128 операций.

При оценке сложности атаки часто приходится оперировать очень большими числами. Чтобы было понятно, насколько они велики, в табл. 5.1 для них приведены некоторые физические аналогии.

Таблица 5.1. Физические аналогии для очень больших чисел


Физическая аналогия

  Число

Время, оставшееся до наступления следующего ледникового  периода

16-10 3 (2 14 ) лет

Время, оставшееся до превращения Солнца в новую звезду

10 9 (2 30 ) лет

Возраст Земли

10 9 (2 30 ) лет

Возраст Вселенной

10 10 (2 32 ) лет

Количество атомов, из которых состоит Земля

10 51 (2 170 )
Количество атомов, из которых состоит Солнце 10 57 (2 190 )
Количество атомов, из которых состоит наша Галактика 10 67 (2 223 )
Количество атомов, из которых состоит Вселенная 10 77 (2 265 )
Объем Вселенной 10 84 (2 280 )см 3

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

3. Шифры замены и перестановки

Шифры замены и перестановки

Шифры появились на свет задолго до изобретения компьютера. Получившие широкое распространение криптографические алгоритмы выполняли либо замену одних букв на другие, либо переставляли буквы друг с другом. Самые стойкие шифры делали одновременно и то, и другое, причем многократно.

Шифры замены

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

В классической криптографии различают 4 разновидности шифров замены:

  • Простая замена, или одноалфавитный шифр. Каждая буква открытого текста заменяется на один и тот же символ шифртекста.
  • Омофонная замена. Аналогична простой замене с единственным отличием: каждой букве открытого текста ставятся в соответствие несколько символов шифртекста. Например, буква "А" заменяется на цифру 5, 13, 25 или 57 , а буква "Б" — на 7, 19, 31 или 43 и так далее.
  • Блочная замена. Шифрование открытого текста производится блоками. Например, блоку "АБА" может соответствовать "РТК", а блоку "АББ" — "СЛЛ".
  • Многоалфавитная замена. Состоит из нескольких шифров простои замены. Например, могут использоваться пять шифров простой замены, а какой из них конкретно применяется для шифрования данной буквы открытого текста, — зависит от ее положения в тексте.

Примером шифра простой замены может служить программа ROT13, которую обычно можно найти в операционной системе UNIX. С ее помощью буква "А" открытого текста на английском языке заменяется на букву "N", "В" — на "О" и так далее. Таким образом, ROT13 циклически сдвигает каждую букву английского алфавита на 13 позиций вправо. Чтобы получить исходный открытый текст надо применить функцию шифрования ROT 13 дважды:

Р = ROT13(ROT13(P))

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

Разновидностью шифра замены можно считать код, который вместо букв осуществляет замену слов, фраз и даже целых предложений. Например, кодовый текст "ЛЕДЕНЕЦ" может соответствовать фразе открытого текста "ПОВЕРНУТЬ ВПРАВО НА 90°". Однако коды применимы только при определенных условиях: если, например, в коде отсутствует соответствующее значение для слова "МУРАВЬЕД", то вы не можете использовать это слово в открытом тексте своего сообщения, предназначенном для кодирования.

Шифры перестановки

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

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

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

Роторные машины

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

Тогда, например, если на клавиатуре 4-роторной машины нажималась клавиша "А", то первый ротор мог превратить ее в "Ф", которая, пройдя через второй ротор, могла стать буквой "Т", которую третий ротор мог заменить на букву "К", которая могла быть преобразована четвертым ротором в букву "F" шифртекста. После этого роторы поворачивались, и в следующий раз заме на была иной. Чтобы сбить с толку криптоаналитиков, роторы вращались с разной скоростью.

Наиболее известной роторной машиной стала немецкая "Энигма", которую Германия использовала для засекречивания своей переписки во время Второй мировой войны.

Операция сложения по модулю 2

Операция сложения по модулю 2, которая в языке программирования С обозначается знаком ^ , а в математике — знаком Å , представляет собой стандартную операцию над битами:

0 Å  0 = 0

0 Å  1 = 1

1 Å  0 = 1

1 Å  1 = 0

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

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

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

1. Сначала следует определить длину ключа. Шифртекст последовательно складывается по модулю 2 со своей копией, сдвинутой на различное число байт, и в полученном векторе подсчитывается число совпадающих компонентов. Когда величина сдвига кратна длине ключа, это число превысит 6% от общей длины исследуемого шифртекста. Если не кратна, то совпадений будет меньше 0,4%. Проанализировав полученные данные, можно сделать обоснованный вывод о длине ключа.

2. Затем надо сложить шифртекст по модулю 2 со своей копией, сдвинутой на величину длины ключа. Эта операция аннулирует ключ и оставит в наличии открытый текст сообщения, сложенный по модулю 2 со своей копией, сдвинутой на величину длины ключа.

4. Одноразовые блокноты

Хотите верьте, хотите нет, но на самом деле все-таки существует алгоритм шифрования, который невозможно вскрыть. Зовется он одноразовым блокнотом. В классическом виде одноразовый блокнот представляет собой очень длинную последовательность случайных букв, записанную на листах бумаги, которые скреплены между собой в блокнот. Отправитель использует каждую букву из блокнота, чтобы зашифровать ровно одну букву открытого текста сообщения. Шифрование состоит в сложении буквы открытого текста и буквы из одноразового блокнота по модулю N, где N — количество букв в алфавите. После зашифрования отправитель уничтожает использованный одноразовый блокнот. Чтобы отправить новое сообщение, ему придется изготовить или найти новый одноразовый блокнот.

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

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

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

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

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

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

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

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

5. Компьютерные алгоритмы шифрования

 

 

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

  • Data Encryption Standard (DES). Симметричный алгоритм шифрования, являющийся в США государственным стандартом.
  • RSA. Алгоритм шифрования с открытым ключом, названный по первым буквам фамилий его создателей (Rivest, Shamir, Adleman).
  • ГОСТ 28147-89. Симметричный алгоритм шифрования, одобренный сначала в СССР, а затем и в России для использования в качестве государственного стандарта.
 

Глава 6. Криптографические ключи

Глава 6. Криптографические ключи

1. Длина секретного ключа

 

Длина секретного ключа

Надежность симметричной криптосистемы зависит от стойкости используемого криптографического алгоритма и от длины секретного ключа. Допустим, что сам алгоритм идеален — вскрыть его можно только путем опробования всех возможных ключей. Этот вид криптоаналитической атаки называется методом тотального перебора. Чтобы применить данный метол, криптоаналитику понадобится немного шифртекста и соответствующий открытый текст. Например, в случае блочного шифра ему достаточно получить в свое распоряжение по одному блоку шифрованного и соответствующего открытого текста. Сделать это не так уж и трудно.

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

Подсчитать сложность атаки методом тотального перебора достаточно просто. Если ключ имеет длину 64 бита, то суперкомпьютер, который может опробовать 1 млн ключей за 1 с, потратит более 5 тыс. лет на проверку всех возможных ключей. При увеличении длины ключа до 12cS бит, этому же суперкомпьютеру понадобится 10 25 лет, чтобы перебрать все ключи. Вселенная существует всего-навсего 10'° лет, поэтому можно сказать, что 10- — это достаточно большой запас надежности для тех, кто пользуется 128-5ишымп ключами.

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

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

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

Сложность и стоимость атаки методом тотального перебора

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

Среди параметров, которые необходимо принимать во внимание при рассмотрении атаки методом тотального перебора, прежде всего, надо упомянуть об общем количестве проверяемых ключей и о времени, затрачиваемом противником на проверку одного ключа. Количество ключей для конкретною алгоритма обычно фиксировано. Например, DES-алгоритм использует 56-битный ключ. Это означает, что его ключевое пространство содержит 2 56 ключей.

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

При решении вопроса о достаточной длине ключа в качестве алгоритма шифрования чаще всего рассматривается DES-алгоритм. В 1977 г. американские криптологи У. Диффи (W.Diffie) и М. Хеллман (M.Hellman) заявили, что при существующем уровне развития компьютерной технологии можно построить специализированный суперкомпьютер для вскрытия ключей DES-алгоритма методом тотального перебора. Имея в своем составе 1 млн микросхем, каждая из которых способна проверять 1 млн ключей в секунду, этот суперкомпьютер перебрал бы все 2 56 ключей за 20 час.

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

В 1993 г. американский криптолог М. Винер (M.Wiener) спроектировал суперкомпьютер для атаки на DES-атгоритм методом тотального перебора. Рассуждения Винера верны не только для DES-алгоритма, но и практически для любого другого алгоритма шифрования. Суперкомпьютер, разработанный Винером, состоит из специализированных микросхем, плат и стоек. По мнению Винера, для того чтобы гарантировать вскрытие 56-битного ключа за 7 час, на изготовление такого суперкомпьютера потребуется не более 1 млн долларов. По закону Мура, вычислительная мощь компьютеров улавливается каждые полтора года. Поэтому к 2001 г. стоимость суперкомпьютера, придуманного Винером, уменьшится в 10 раз и составит всего-навсего 100 тыс. долларов. Это означает, что уже сейчас крупные компании и "крутые" криминальные структуры могут вскрывать 56-битные ключи. Для военных криптоаналитиков в большинстве индустриально развитых стран доступны 64-битные ключи.

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

Таблица 6.1. Стоимость и вычислительная сложность атаки методом тотального перебора


Кто атакует Бюджет Сложность атаки Стойкий ключ
40 бит 56 бит
Хакер 1000 долл. 1 неделя Никогда 45 бит
Малый бизнес 10 тыс. долл. 12 мин. 556 дней 64 бита
Крупная компания 10 млн долл. 0.005 с 6 мин 70 бит
Федеральное агентство 300 млн долл. 0.0002 с 12с 75 бит

К приведенным в табл. 6.1 цифрам следует относиться с осторожностью. Теоретический расчет затрат на проведение атак методом тотального перебора на криптографические ключи разной длины всегда существенно отличается от того, с чем криптоаналитики сталкиваются на практике при покупке или разработке суперкомпьютеров для ведения такого рода атак. Объясняется это тем, что одни сделанные допущения оказываются весьма далеки от реальности, в то время как другие факторы просто не принимаются во внимание. В данном случае Диффи, Винер и другие посчитали, что при создании специализированного суперкомпьютера для атаки методом тотального перебора будут использоваться заказные микросхемы ценой не более 10 долл. По оценкам АНБ, такие микросхемы стоят, как правило, в 100 раз дороже. У АНБ вызвало сомнение и допущение о том, что вне зависимости от алгоритма шифрования, лишь длина ключа определяет сложность криптоаналитической атаки. Кроме того, при составлении таблицы не были учтены затраты на научно-исследовательские и опытно-конструкторские работы, которые для первого экземпляра суперкомпьютера обычно составляют не менее 10 млн долл. Не были также приняты во внимание расходы на приобретение компьютерной памяти.

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

Программная атака

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

В мире имеется огромное количество компьютеров (по оценкам экспертов, в 1996 г. их число достигло 200 млн), которые, чтобы не простаивать, могли бы опробовать ключи. Эксперимент, проведенный в начале 1997 г., показал, что таким способом за две недели можно вскрыть 48-битный ключ. И хотя этот ключ был найден методом тотального перебора после проверки чуть более половины всех возможных ключей, полученный результат впечатляет, поскольку в ходе атаки одновременно использовались не более 5 тысяч компьютеров из существующих 200 миллионов, а в общей сложности в атаке оказались задействованными лишь 7 тысяч компьютеров.

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

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

При более тонком подходе вирус, обнаруживший ключ, выдаст на экран компьютера информацию вида:

В ВАШЕМ КОМПЬЮТЕРЕ ОБНАРУЖЕНА СЕРЬЕЗНАЯ ОШИБКА!

ПОЖАЛУЙСТА, ПОЗВОНИТЕ ПО ТЕЛЕФОНУ (095)123-45-67

И ЗАЧИТАЙТЕ ОПЕРАТОРУ СЛЕДУЮЩЕЕ 48-БИТОВОЕ ЧИСЛО:

хххххххх ххххххх ххххххх ххххххх ххххххх ххххххх

ПЕРВОМУ, КТО СООБЩИТ ОБ ЭТОЙ ОШИБКЕ, ГАРАНТИРОВАНО

ВОЗНАГРАЖДЕНИЕ В РАЗМЕРЕ 100 (СТА) ДОЛЛАРОВ.

Если вирусу удастся заразить 10 млн компьютеров, каждый из которых станет проверять хотя бы 1 тыс. ключей в секунду, то 56-битный ключ будет найден менее чем через 3 месяца. Дополнительно придется раскошелиться на подкуп производителей антивирусных программ, однако к компьютерной криптографии, о которой сейчас идет речь, эта проблема никакого отношения не имеет.

"Китайская лотерея"

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

За найденный ключ полагается значительный приз. Благодаря этому радиоприемники и телевизоры со встроенными микросхемами хорошо раскупаются, а вскрытые ключи своевременно доводятся до сведения китайского правительства. Если учесть, что у каждого из десяти китайцев есть радиоприемник или телевизор, то получится, что на вскрытие 64-битного ключа китайскому правительству потребуется самое большее 43 часа. В табл. 6.2 приведена сложность вскрытия 64-битного ключа с помощью "китайской лотереи" при ее проведении в Китае, а также в США, Ираке и Израиле.

Таблица 6.2. Сложность вскрытия 64-битного ключа с помощью "китайской лотереи"

Страна Численность населения Количество телевизоров и радиоприемников Сложность вскрытия 64-битового ключа с помощью "китайской лотереи"
Китай

 

1 190 431 000  257 000 000 43 часа
США 260 714 000 739 000 000 6,9 часов
Ирак 19 890 000 4 730 000 44 дня
Израиль 5 051 000 3 640 000 58 дней

Биотехнология

Предположим такую ситуацию: с использованием генной инженерии удалось вывести особую породу травоядных динозавров. Их нарекли "криптозаврами", поскольку они состоят из клеток, которые могут проверять криптографические ключи. Шифрованный и соответствующий открытый теки передаются в клетки криптозавра с помощью магнитооптических средин. Найденный ключ выводится специальными клетками, способными перемещаться в пределах тела криптозавра. Поскольку динозавр в среднем состоит из 2 14 клеток, то при условии, что каждая из них успевает проверить 1 миллион ключей в секунду, на поиск 64-битного ключа уйдет не более 1 с.

Для этой же цели можно использовать клетки морских водорослей. Например, на площади в 500 км2 и на глубине в 1 м их можно разместить в количестве 1023. Если каждая из них будет обрабатывать 1 млн ключей в секунду. то 128-битный ключ будет вскрыт менее чем за сотню лет. Шифрованный и открытый тексты передаются водорослям с помощью спутника, а сигналом о нахождении искомого ключа служит изменение окраски водорослей вокруг клетки, отыскавшей этот ключ. За советами по разведению морских водорослей криптоаналитики могут обратиться на биологический факультет ближайшего университета.

Термодинамические ограничения

Из второго закона термодинамики следует, что для записи одного бита информации путем соответствующего изменения состояния среды требуется не менее kT эрг энергии, где k— постоянная Больцмана и Т— температура системы. Учитывая, что температура Вселенной составляет 3,2° по Кельвину, для изменения одного бита информации компьютеру понадобится не менее 4,4 10 -16 эрг энергии. Уменьшение температуры среды ниже уровня температуры Вселенной потребует дополнительных затрат энергии и поэтому не имеет особого смысла.

За год вся энергия, излучаемая Солнцем, составляет 1,21 10- 41 эрг. Ее хватит, чтобы произвести 2,7 1056 записей одного бита информации, что эквивалентно прогону 187-битного счетчика через все возможные состояния. Если наше довольно "прохладное" Солнце заменить сверхновой звездой, то счет-£ чик можно сделать 219-битным.

Сказанное означает, что атака методом тотального перебора против криптосистемы с 256-битным ключом энергетически неосуществима до тех пор, пока компьютеры являются объектами материального мира и их функционирование подчиняется его законам, в частности — второму закону термодинамики.

 

2. Однонаправленные функции

Однонаправленные функции

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

Аналогом однонаправленной функции в быту является разбитая вдребезги стеклянная бутылка. Расколотить ее на мелкие осколки очень легко, однако попробуйте снова собрать целую бутылку из осколков!

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

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

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

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

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

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

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

3. Длина открытого ключа

Длина открытого ключа

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

Конечно, разложение большого числа на множители — задача трудная. Однако сразу возникает резонный вопрос, насколько трудная. К несчастью для криптографов, сложность ее решения уменьшается. И что еще хуже, эта сложность падает значительно более быстрыми темпами, чем ожидалось ранее. Например, в середине 70-х годов считалось, что для разложения на множители числа из 125 цифр потребуются десятки квадрильонов лет. А всего два десятилетия спустя с помощью компьютеров, подключенных к сети Internet удалось разложить на множители число из 129 цифр. Этот прорыв стал возможен благодаря тому, что за прошедшие 20 лет были не только предложены новые, более быстрые, методы разложения на множители больших чисел, но и возросла производительность используемых компьютеров.

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

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

Чтобы оценить длину открытого ключа, будем измерять доступную криптоаналитику вычислительную мощь в так называемых мопс-годах, т. е. количеством операций, которые компьютер, способный работать со скоростью 1 миллион операций в секунду, выполняет за год. Допустим, что хакер имеет доступ к компьютерным ресурсам общей вычислительной мощью 10000 мопс-лет, крупная корпорация — 107 мопс-лет, правительство — 109 мопс-лет. Это вполне реальные цифры, если учесть, что при реализации упомянутого выше проекта разложения числа из 129 цифр его участники задействовали всего 0,03% вычислительной мощи Internet, и чтобы добиться этого, им не потребовалось принимать какие-либо экстраординарные меры или выходить за рамки закона.

Предположим еще, что вычислительная мощь возрастает в 10 раз каждые 5 лет, а метод, который используется для разложения больших чисел на множители, позволяет это делать с трудоемкостью, указанной в табл. 6.3.

Таблица 6.3. Трудоемкость разложения больших чисел на множители


Количество бит в двоичном представлении числа Количество мопс-лет для разложения на множители
768 3-10 5
1024 3-10 7
1280 3-10 9
1536 3-10 11
2048 3-10 14

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

Таблица 6.4. Рекомендуемая длина открытого ключа (в битах)


Год Хакер Крупная корпорация Правительство
2000 1024 1280 1536
2005 1280 1536 2048
2010 1280 1536 2048
2015 1536 2048 2048

С приведенными в табл. 6.4 данными согласны далеко не все авторитетные криптографы. Некоторые из них наотрез отказываются делать какие-либо долгосрочные прогнозы, считая это бесполезным делом. Другие, например, специалисты из АНБ, чересчур оптимистичны, рекомендуя для систем цифровой подписи длину открытого ключа всего 512—1024 бита, что в свете данных из табл. 6.4 является совершенно недостаточным для обеспечения надлежащей долговременной защиты.

Какой длины должен быть ключ

Криптоаналитическая атака против алгоритма шифрования обычно своим острием бывает направлена в самое уязвимое место этого алгоритма. Например, для организации шифрованной связи часто используются криптографические алгоритмы как с секретным, так и с открытым ключом. Такая криптосистема называется гибридной. Стойкость каждого из алгоритмов, входящих в состав гибридной криптосистемы, должна быть достаточной, чтобы успешно противостоять вскрытию. Например, глупо применять симметричный алгоритм с ключом длиной 128 бит совместно с асимметричным алгоритмом, в котором длина ключа составляет всего 386 бит. И наоборот, не имеет смысла задействовать симметричный алгоритм с ключом длиной 56 бит вместе с асимметричным алгоритмом с ключом /шиной 1024 бита.

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

Таблица 6.5. Длины ключей для симметричного и асимметричного алгоритмов шифрования с одинаковой стойкостью против криптоаналитической атаки методом тотального перебора


Длина ключа для симметричного алгоритма Длина ключа для асимметричного алгоритма
56 384
64 512
80 768
112 1792
128 2304

4. Работа с ключами

Работа с ключами

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

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

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

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

Потратить 10 млн долл. на разработку и изготовление специализированного криптоаналитического суперкомпьютера? Ну уж нет! Лучше за 1000 долл. подкупить шифровальщика, который будет регулярно передавать ключи к шифру. А если бюджет позволяет, то за миллион долларов можно накупим, этих ключей на много-много лет вперед. Американский военнослужащий Джон Уокер, к примеру, годами снабжал советскую разведку ключами к шифрам ВМС США, что позволило КГБ прочесть огромное количество американских шифровок. Ну а за несколько миллионов долларов доставим, где-то ключи, чтобы потом с их помощью читать шифрованные сообщения, нет нужды и вовсе. За такие огромные деньги лучше сразу приобрести oi-крытые тексты этих сообщений. Например, всего 2 млн долларов понадобилось советской разведке, чтобы купить высокопоставленного сотрудника американской контрразведки Олдрича Эймса вместе с женой.

Ну а если из бюджета не удается выкроить нужную сумму на подкуй, то можно воспользоваться другими методами. Человек слаб: его можно напоить, усыпить или просто оглушить тяжелым предметом, чтобы выкраси, криптографические ключи. Его можно также соблазнить. Морские пехотинцы, охранявшие американское посольство в Москве, по просьбе своих русских любовниц пропускали в шифровальный отсек посольства сотрудников КГБ — на "экскурсию".

Это значит, что криптографические ключи нуждаются в такой же защите. как и сами данные, которые шифруются с их помощью. К сожалению, во многих коммерческих средствах шифрования часто считается достаточным провозгласить об использовании DES-алгоритма или другого достаточно стойкого шифра, а о генерации и хранении ключей к ним не говорить ни слова. Например, программа DiskLock (версия 2.1) для персонального компьютера Macintosh позволяет шифровать файлы по DES-алгоритму. Однако ключ, использованный этой программой для зашифрования, она сохраняет на носителе информации вместе с файлом. Зная, где лежит ключ, его можно оттуда извлечь и затем без особых хлопот прочесть с помощью этого ключа содержимое зашифрованного файла. В данном случае совершенно неважно. что сам алгоритм шифрования достаточно надежен. Имеет значение только то, что его реализация абсолютно никуда не годится.

5. Генерация случайных и псевдослучайных последовательностей

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

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

Псевдослучайные последовательности

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

Псевдослучайная битовая последовательность должна, по возможности, не отличаться от по-настоящему случайной. Необходимо, чтобы в ней число единиц примерно совпадало с числом нулей, а половина всех "полосок" (подряд идущих идентичных компонентов последовательности) имела длину I. одна четвертая — длину 2, одна восьмая — длину 4 и т. д. Кроме только что перечисленных, существует еще ряд общепринятых тестов, которые позволяют проверить, действительно ли данная последовательность является псевдослучайной.

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

Криптографически надежные псевдослучайные последовательности

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

По-настоящему случайные последовательности

Последовательность называется no-настоящему случайной, если ее нельзя воспроизвести. Это означает, что если запустить генератор по-настоящему случайных последовательностей дважды при одном и том же входе, то на его выходе получатся разные случайные последовательности. Основная трудность состоит в том, чтобы суметь отличить случайную последовательность от неслучайной. Если несколько раз зашифровать строку символов с помощью криптографического алгоритма, соответствующего ГОСТ 28147-89, то получится последовательность, очень напоминающая по-настоящему случайную. Чтобы доказать ее неслучайность, другого способа, кроме аренды   АНБ соответствующих вычислительных мощностей и программы вскрытия. не существует. Однако вряд ли ваше предложение об аренде будет воспринято там всерьез.

6. Генерация ключей

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

Сокращенные ключевые пространства

Длина ключа в DES-алгоритме составляет 56 бит. В принципе, в качестве ключа может быть использован любой 56-битный вектор. На практике это правило часто не соблюдается. Например, широко распространенная программа шифрования файлов Norton Discreet, входящая в пакет Norton Utilities (версии 8.0 или более младшей версии), который предназначен для работы в операционной системе DOS, предлагает пользователю программную реализацию DES-алгоритма. Однако при вводе ключа разрешается подавать на вход программы только те символы, старший бит представления которых в коде ASCII равен нулю. Более того, пятый бит в каждом байте введенного ключа является отрицанием шестого бита, и в нем игнорируется младший бит. Это означает, что мощность ключевого пространства сокращается до каких-то жалких 2 40 ключей. Таким образом из-за плохой процедуры генерации ключей программа Norton Discreet реализует алгоритм шифрования, ослабленный в десятки тысяч раз по сравнению с настоящим DES-алгоритмом.

В табл. 6.6 приведено количество возможных ключей в зависимости от раз-личных ограничений на символы, которые могут входить в ключевую последовательность. Табл. 6.7 содержит сложность атаки методом тотального перебора при условии, что перебор ведется со скоростью 1 млн ключей в секунду.

Таблица 6.6. Количество возможных ключей в зависимости от ограничений на символы ключевой последовательности


Символы ключа 4 байта 5 байт 6 байт 7 байт 8 байт
Строчные буквы (26) 4,7*10 5 1,3*10 7 3,2*10 8 8,1*10 9 2,2*10 11
Строчные буквы и цифры (36) 1,8*10 6 6,1*10 7 2.3*10 9 7,9*10 10 2.9*10 12
Буквы и цифры (62) 1,6*10 7 9,3*10 8 5,8*10 10 3,6*10 11 2,3*10 14
Печатаемые символы (95) 8,2*10 7 7,8*10 9 7,5*10 11 7,1*10 13 6,7*10 15
Все ASCII-символы 4,4*10 9 1,2*10 10 2,9*10 14 7,3*10 16 1,9*10 19

Таблица 6.7. Сложность атаки методом тотального перебора при условии, что перебор ведется со скоростью 1 миллион ключей в секунду


Символы ключа 4 байта 5 байт 6 байт 7 байт 8 байт
Строчные буквы (26) 0,6 сек. 13 сек. 6 мин. 2,3ч. 2,5 дн.
Строчные буквы и цифры (36) 1,8 сек. 2 мин. 37 мин. 23ч. 34 дн.
Буквы и цифры (62) 16 сек. 16 мин. 17ч. 42 дн. 7,0 лет
Печатаемые символы (95) 1,5 мин. 2,2ч. 8,6 дн. 2,3 лет 211 лет
Все ASCII-символы 1,3ч. 14 дн. 9,0 лет 2400 лет 590000 лет

Из табл. 6.6 следует, что возможность опробовать 1 млн ключей в секунду позволяет в разумные сроки вскрывать 8-байтовые ключи из строчных букв и цифр, 7-байтовые буквенно-цифровые ключи, 6-байтовые ключи, составленные из печатаемых ASCII-символов, и 5-байтовые ключи, в которые могут входить любые ASCII-символы. А если учесть, что вычислительная мощь компьютеров увеличивается вдвое каждые полтора года, то для успешного отражения атаки методом тотального перебора в течение ближайшего десятилетия необходимо заблаговременно позаботиться о том. чтобы используемый ключ был достаточно длинным.

Плохие ключи

Когда отправитель сам выбирает ключ, с помощью которого он шифрует свои сообщения, его выбор обычно оставляет желать лучшего. Например, Петр Сергеевич Иванов скорее предпочтет использовать в качестве ключа Ivanov, чем &7)g\*. И вовсе не потому, что он принципиально не желает соблюдать элементарные правила безопасности. Просто свою фамилию Иванов помнит гораздо лучше, чем абракадабру из шести произвольно взятых символов. Однако тогда сохранить свою переписку в тайне ему не поможет и самый стон кий алгоритм шифрования в мире, особенно если используемые Ивановым ключи всегда совпадают с именами его ближайших родственников и записывает он эти ключи на клочках бумаги, которые наклеивает на компьютер. В ходе хорошо организованной атаки методом тотального перебора квалифицированный криптоанатитик не будет опробовать все ключи последовательно, один за другим. Он сначала проверит те из них, которые хоть что-то значат для Иванова. Такая разновидность атаки методом тотального перебора наливается товарной атакой, поскольку в ходе нее противник использует словарь наиболее вероятных ключей. В этот словарь обычно входят:

  • Имя, фамилия, отчество, инициалы, год рождения и другая личная информация, имеющая отношение к данному человеку. Например, при словарной атаке против Петра Сергеевича Иванова в первую очередь следует проверить PSI, PSIPSI, PIVANOV, Pivanov, psivanov, peteri, pete I, IvanovP, peterivanov, Peter-Ivanov и т. д.
  • Словарная база данных, составленная из имен людей, героев мультфильмов и мифических животных, ругательств, чисел (как цифрами, так и прописью), названий художественных фильмов, научно-фантастических романов, астероидов, планет и цветов радуги, общепринятых сокращении и т. д. В общей сложности для одного конкретного человека такая база данных насчитывает более 60 тыс. словарных единиц.
  • Слова, которые получены путем внесения различных изменений в словарную базу данных, составленную на предыдущем этапе. Сюда относятся обратный порядок написания слова, замена в нем латинских буки о, l, z, s на цифры 0 , 1, 2 и 5 соответственно, использование слова во множественном числе и т. д. Это даст дополнительно еще около миллиона словарных единиц для опробования в качестве возможного ключа к шифру.
  • Слова, полученные с помощью замены строчных букв на заглавные. Такой замене в принципе может подвергаться любое число букв. Например. вместе со словом Ivanov будут проверяться слова iVanov, ivAnov, ivaNov, ivanOv, ivanoV, IVanov, IvAnov, IvaNov, IvanOv, IvanoV и т. д. Однако. вычислительная мощь современных компьютеров позволяет проверять только одно-, двух- и трехбуквенные замены строчных букв на заглавные.
  • Слова на различных иностранных языках. Хотя компьютерные пользователи в основном работают с англоязычными операционными системами (DOS, UNIX, Windows и другими), существуют локализованные версии распространенных операционных систем, в которых допускается использование другого языка. Это означает, в качестве ключа на вход программы шифрования может быть подана любая фраза на родном языке ее пользователя. Следует также учитывать, что ключ может быть транслитерирован с любого языка (например, с русского или китайского) на английский и затем в таком виде введен в программу шифрования.
  • Пары слов. Поскольку количество вероятных пар слов, из которых может состоять криптографический ключ, слишком велико, на практике криптоаналитики обычно ограничиваются словами из трех и четырех букв.

Случайные ключи

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

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

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

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

Пользоваться случайными ключами не всегда удобно. Иногда ключ требуется сохранить в памяти, а запомнить 36f9 67аЗ f9cb d931 человеку не так-то просто. В этом случае для генерации можно использовать некое правило, которое будет очевидно для вас, но недоступно для постороннего. Два варианта такого правила:

  • Составьте ключ из нескольких слов, разделенных знаками препинания. Например, очень просто и надолго запоминаются ключи типа Yankee'Go home.
  • Используйте в качестве ключа сочетание букв, которые представляют собой акроним более длинного слова. К примеру, броское название немецкого вина Liebenfraumilch позволяет путем отбрасывания гласных букв и добавления восклицательного знака сгенерировать ключ Lbnfrmlch!.

Пароль

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

Пароль следует выбирать достаточно длинным, чтобы полученный в результате его преобразования ключ был случайным. Из теории информации известно, что в предложении на английском языке каждая буква содержит примерно 1,3 бита информации. Тогда, чтобы получить 64-бтный ключ, пароль должен состоять примерно из 49 букв, что соответствует английской фразе из 10 слов.

Необходимо, чтобы при желании пароль было легко вспомнить, и в то же время требуется, чтобы он был достаточно уникален. Цитата из Козьмы Пруткова, которая у всех на слуху, вряд ли подойдет, поскольку его сочинения имеются в форме, доступной для воспроизведения на компьютере, и следовательно, могут быть использованы в словарной атаке. Лучше воспользоваться творчеством малоизвестного поэта или драматурга, процитировав его с ошибками. Большего эффекта можно добиться, если в цитате, использованной для генерации ключа, будут присутствовать иностранные слова. Идеально подходят для этой цели незатейливые ругательства — их вам не придется записывать, чтобы запомнить. Достаточно шарахнуть себя по пальцу молотком, и пароль автоматически придет вам в голову. Надо только сдержаться и не произнести его вслух, чтобы не подслушали посторонние.

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

Стандарт ANSI X9.17

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

Пусть функция Е K (Р) осуществляет шифрование Р по DES-алгоритму на заранее заготовленном ключе К, который используется только для генерации секретных ключей. Пусть далее V 0 является начальным 64-битным значением, которое держится в тайне от противника, а Т i представляет собой отметку времени, когда был сгенерирован i-й ключ. Тогда очередной случайный ключ R i вычисляется с помощью преобразования:

R i = Е К К i ) Å V i )

Чтобы получить очередное значение V i , надо вычислить

V i = Е К К i ) Å R i )

7. Нелинейные ключевые пространства

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

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

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

Например, блочный алгоритм шифрования с длиной блока 64 бита и длиной ключа 128 бит может использовать "составной" ключ из 192 бит. Тогда вероятность случайно использовать стойкий ключ будет достаточно мала — всего 2 -64 .

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

8. Передача ключей

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

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

Упоминавшийся выше американский стандарт ANSI X9.17 определяет две разновидности ключей. Ключи шифрования данных используются для зашифрования сообщений, отправляемых по каналам связи. Ключи шифрования ключей применяются для зашифрования других ключей, которые предназначены для передачи получателям этих шифрованных сообщении. Ключи шифрования ключей передаются по каналам связи, исключающим подслушивание. Например, с помощью курьеров. Однако, поскольку делать это приходится значительно реже, чем посылать ключи шифрования данных, такой способ передачи ключей абонентам сети связи вполне пригоден для использования на практике.

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

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

С ростом количества абонентов сети связи применять подход, рекомендуемый стандартом ANSI X9.17, становится все трудней и трудней. Если n человек захотят обмениваться шифрованными сообщениями, общее число переданных ими ключей составит п(п-1)/2. При n =1000 потребуется почти 500 тыс. пересылок ключей между абонентами, что может вылиться в серьезную проблему. В этом случае лучше производить рассылку ключей из единого центра (назовем его центром распределения ключей, сокращенно — ЦРК).

9. Проверка подлинности ключей

Как Иванову убедиться в том, что полученные им ключи были действительно переданы Петровым, а не противником, который притворился Петровым? Если Петров отдает ключи Иванову с глазу на глаз, то сделать это довольно легко. Однако если Петров присылает ключи с курьером, то Иванову придется положиться на честность курьера. А если полученные Ивановым ключи зашифрованы с помощью ключа шифрования ключей, ему остается лишь надеяться, что этот ключ имеется только у Петрова. Наконец, если рассылку ключей производит ЦРК, Иванов должен убедиться в надежности процедур рассылки, которые приняты в ЦРК.

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

Подобные рассуждения иногда приводятся, чтобы доказать ненужность криптографических методов, применяемых при передаче ключей Ведь получается, что у Иванова и Петрова нет иного пути удостовериться в подлинности используемых ими ключей на все 100%, кроме личной встречи.

Эти рассуждения наивны. На практике установить тотальный контроль нал чьими бы то ни было линиями связи невозможно. Действительно. Иванов не в силах убедиться наверняка, что переданный ему ключ не был подменен всемогущим противником. Однако, чтобы его контроль был действительно тотальным, такому противнику придется прибегнуть к средствам, которые в реальном мире ему вряд ли будут доступны.

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

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

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

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

10. Контроль за использованием ключей

Контроль за использованием ключей

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

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

К сгенерированному ключу (назовем его основным) добавляется битовый управляющий вектор (УВ), который содержит информацию об ограничениях, накладываемых на использование этого ключа. УВ подвергается хэшированию и затем складывается с основным ключом по модулю 2. Полученный результат служит в качестве ключа для зашифрования сеансового ключа. Зашифрованный сеансовый ключ хранится вместе с УВ. Чтобы получить сеансовый ключ в исходном виде, надо применить хэширование к УВ, сложить его с основным ключом по модулю 2 и использовать результат для расшифрования сеансового ключа. Достоинством этого метода является возможность задействовать УВ произвольной длины и открыто хранить его вместе с зашифрованным основным ключом.

11. Обновление ключей

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

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

12. Хранение ключей

Проще всего хранить ключи для криптосистемы, у которой имеется один-единственный пользователь. Пользователь просто запоминает этот ключ и при необходимости вводит его с клавиатуры компьютера по памяти. Однако поскольку по-настоящему случайный ключ запомнить нелегко, для его хранения можно использовать магнитную карточку, или пластиковый ключ с размещенным на нем ПЗУ (так называемый ПЗУ-ключ), или интеллектуальную карту. Для ввода такого ключа достаточно вставить его физический носитель в специальный считыватель, подключенный к компьютеру. При этом действительное значение вводимого ключа пользователю неизвестно, и, следовательно, он не сможет его разгласить или скомпрометировать. Способ использования ключа определяется управляющим вектором, записанным па физический носитель вместе с этим ключом.

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

С целью дальнейшего уменьшения вероятности компрометации ключа можно разделить его на две части. Первую следует реализовать в виде ПЗУ-ключа, а вторую поместить в память компьютера. Тогда потеря "пэ-зэ-ушной" части ключа или его половинки, хранимой в памяти компьютера, не приведет к разглашению криптографического ключа в целом. А части ключа при необходимости можно заменить отдельно друг от друга.

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

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

13. Запасные ключи

Запасные ключи

Рассмотрим такой возможный случай. Давид Ключкис, президент фирмы "Ключкис и К°", постоянно шифрует всю информацию, связанную с делами своей фирмы. Однако, к несчастью, он переходил улицу в неположенном месте, и его сбил 10-тонный грузовик. При этом больше всего пострадала та часть его организма, которая отвечала за хранение ключей к используемому им алгоритму шифрования. И если у Абрама Ключмана, первого заместителя Ключкиса, нет копии этих ключей, их фирма окажется в незавидном положении. Целью шифрования является защита информации от посторонних. Поэтому при условии, что Ключкис использовал стойкий криптографический алгоритм, зашифрованные им данные, касающиеся дел фирмы, будут потеряны навсегда.

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

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

14. Скомпрометированные ключи

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

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

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

15. Продолжительность использования ключа

Любой ключ должен использоваться в течение ограниченного периода времени. Тому есть несколько причин:

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

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

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

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

Что касается открытых ключей, то продолжительность их использования сильно варьируется в зависимости от области применения. Если открытый ключ применяется для целей аутентификации или для цифровой подписи, он продолжает оставаться актуальным годами, иногда даже десятилетиями. Но даже в этом случае не следует пренебрегать сменой ключа каждые 2—3 года, чтобы в распоряжении криптоаналитика накапливалось меньше шифртекста, необходимого для организации атаки. А старый ключ все равно надо продолжать хранить в секрете — он может понадобиться, чтобы, например, подтвердить подлинность подписи, поставленной в течение периода, пока этот ключ был действующим.

16. Уничтожение ключей

 

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

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

 

Глава 7. Криптографические протоколы

Глава 7. Криптографические протоколы

1. Что такое криптографический протокол

 

Что такое криптографический протокол

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

Протоколы имеют и другие отличительные черты:

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

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

Зачем нужны криптографические протоколы

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

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

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

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

Распределение ролей

Чтобы описание протоколов было более наглядным, имена их участников однозначно определяют роли, им уготованные (табл. 7.1). Пусть Антон и Борис принимают участие во всех двухсторонних протоколах. Как правило, начинает выполнение шагов, предусмотренных протоколом, Антон, а ответные действия предпринимает Борис. Если протокол является грех- или четырехсторонним, исполнение соответствующих ролей берут на себя Владимир и Георгий. Об остальных персонажах подробнее будет рассказано позже.

Таблица 7.1. Роли, которые играют участники протоколов


Участник протокола Роль в протоколе
Антон Первый участник протоколов
Борис Второй участник протоколов
Владимир Участник трех- и четырехсторонних протоколов
Георгий Участник четырехсторонних протоколов
Дмитрий Доверенное лицо, наделенное правами арбитра
Зиновий Злоумышленник
Кирилл Контролер
Олег Охранник
Петр Подслушивает за участниками протоколов
Сергей Свидетель

Протокол с арбитражем

Арбитр — участник протокола, которому остальные участники полностью доверяют, предпринимая соответствующие действия для завершения очередного шага протокола. Это значит, что у арбитра нет личной заинтересованности в достижении тех или иных целей, преследуемых участниками протокола, и он не может выступить на стороне любого из них. Участники протокола также принимают на веру все, что скажет арбитр, и беспрекословно следуют всем его рекомендациям.

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

  • Легко довериться адвокату, про которого известно, что у него незапятнанная репутация, и с которым можно установить личный контакт. Однако если два участника протокола не доверяют друг другу, арбитр, не облаченный в телесную оболочку и существующий где-то в недрах компьютерной сети, вряд ли будет пользоваться у них доверием.
  • Расценки за услуги, оказываемые адвокатом, известны. Кто и каким образом будет оплачивать издержки за аналогичные услуги арбитра в компьютерной сети?
  • Введение арбитра в любой протокол увеличивает время, затрачиваемое на реализацию этого протокола.
  • Поскольку арбитр контролирует каждый шаг протокола, его участие и очень сложных протоколах может стать узким местом при их реализации. Увеличение числа арбитров позволяет избавиться от данного узкого места, однако одновременно возрастут и накладные расходы на реализацию протокола.
  • В силу того, что все участники протокола должны пользоваться услугами одного и того же арбитра, действия злоумышленника, который решит нанести им ущерб, будут направлены, в первую очередь, против этого арбитра. Следовательно, арбитр представляет собой слабое звено любого протокола с арбитражем.

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

Протокол с судейством

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

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

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

Самоутверждающийся протокол

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

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

Разновидности атак на протоколы

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

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

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

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

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

Протокол обмена сообщениями с использованием симметричного шифрования

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

1. Антон и Борис уславливаются о том, какой криптосистемой они будут пользоваться.

2. Антон и Борис генерируют ключи для шифрования и расшифрования своих сообщений и затем обмениваются ими.

3. Антон шифрует сообщение с использованием криптографического алгоритма и ключа, о которых он заранее договорился с Борисом.

4. Антон отправляет зашифрованное сообщение Борису.

5. Борис расшифровывает полученное сообщение, применяя тот же криптографический алгоритм и ключ, которыми пользовался Антон.

Если Петр имеет возможность перехватывать сообщения, которые передают друг другу Антон и Борис, он может попытаться прочесть эти сообщения. Если Антон и Борис используют стойкий алгоритм шифрования. — они в безопасности. Однако Петр может оказаться в состоянии подслушивать за Антоном и Борисом, когда они выполняют шаг 1 и шаг 2 протокола. Поэтому стойкая криптосистема не должна опираться на сохранение в тайне алгоритма шифрования. Необходимо, чтобы ее стойкость определялась одной только длиной секретного ключа. Тогда Антон и Борис могут условиться, каким шифром они будут пользоваться, ничуть не заботясь о том, что их подслушает Петр. Тем не менее, шаг 2 протокола все равно должен выполняться ими в обстановке строжайшей секретности. Требуется, чтобы свои сгенерированные ключи Антон и Борис хранили в секрете до, во время и после процесса выполнения всех шагов протокола. Иначе Петр сможет прочесть всю их шифрованную переписку.

Что касается Зиновия, то в зависимости от преследуемых целей он может действовать по-разному. Если Зиновий прервет связь между Антоном и Борисом, они будут не в состоянии обмениваться сообщениями. Зиновий может заменить шифрованное сообщение, посланное Антоном, на свое собственное. Попытавшись расшифровать поддельное сообщение, Борис вместо осмысленного открытого текста получит абракадабру, и решит, что Антон не слишком серьезно отнесся к шифрованию своего сообщения или что при передаче оно было просто искажено. Хуже, если Зиновий узнает ключ, которым пользуются Антон и Борис. Тогда он сможет зашифровать любое сообщение и отправить его Борису от имени Антона, а у Бориса не будет возможности распознать подделку.

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

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

Протокол обмена сообщениями с использованием шифрования с открытым ключом

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

В 1976 г. американские криптологи У. Диффи и М. Хеллман изобрели криптографию с открытым ключом. Они предложили использовать два вида ключей — открытые и тайные. Вычислить тайный ключ, зная только открытый, очень сложно. Человек, владеющий открытым ключом, может с его помощью зашифровать сообщение. Расшифровать это сообщение в состоянии только тот, кто имеет соответствующий тайный ключ. В отличие от симметричной криптосистемы, для алгоритма шифрования с открытым ключом больше подходит сравнение с почтовым ящиком. Опустить почту и этот ящик очень просто, равно как и зашифровать сообщение с применением открытого ключа. А извлечение из почтового ящика находящейся в нем корреспонденции сродни расшифрованию сообщения. Желающего сделать это без ключа вряд ли ожидает легкая работа. Обладатель же ключа откроет почтовый ящик, т. е. расшифрует сообщение, без особого труда.

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

Протокол обмена сообщениями с использованием шифрования с открытым ключом выглядит следующим образом:

  1. Антон и Борис уславливаются о том, какой криптосистемой они будут пользоваться.
  2. Борис посылает Антону свой открытый ключ.
  3. Антон шифрует открытый текст своего сообщения при помощи открытого ключа, присланного ему Борисом, и шлет полученный в результате шифртекст Борису.
  4. Борис расшифровывает сообщение Антона, используя свой тайный ключ.

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

Чтобы упростить протокол обмена шифрованными сообщениями, открытые ключи всех абонентов единой сети связи часто помещаются в справочную базу данных, находящуюся в общем пользовании этих абонентов. Тогда протокол обмена сообщениями с использованием шифрования с открытым ключом имеет следующий вид:

1. Антон находит открытый ключ Бориса в базе данных.

2. Антон шифрует открытый текст своего сообщения при помощи открытого ключа Бориса.

3. Борис расшифровывает сообщение Антона, используя свой тайный ключ.

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

Гибридные криптосистемы

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

  • Алгоритмы шифрования с открытым ключом в среднем работают в тысячи раз медленнее, чем алгоритмы с симметричным ключом. И хотя темпы роста компьютерной производительности очень высоки, требования к скорости шифрования растут не менее стремительно. Поэтому криптосистемы с открытым ключом вряд ли когда-нибудь смогут удовлетворить современные потребности в скорости шифрования.
  • Алгоритмы шифрования с открытым ключом уязвимы по отношению к криптоаналитическим атакам со знанием открытого текста. Пусть С=Е(Р), где С обозначает шифртекст, Р — открытый текст, Е — функцию шифрования. Тогда, если Р принимает значения из некоторого конечного множества, состоящего из n открытых текстов, криптоаналитику достаточно зашифровать все эти тексты, используя известный ему открытый ключ, и сравнить результаты с С. Ключ таким способом ему вскрыть не удастся, однако открытый текст будет успешно определен.

Чем меньше количество ( n ) возможных открытых текстов, тем эффективнее будет атака на криптосистему с открытым ключом. Например, если криптоаналитику известно, что шифрованию подверглась сумма сделки, не превышающая 1 млн долл., он может перебрать все числа от 1 до 1 000 000.

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

1. Антон генерирует сеансовый ключ К и шифрует его с использованием открытого ключа В, принадлежащего Борису:

Е В (К)

2. Борис расшифровывает сообщение Антона при помощи своего тайного ключа и получает в результате сеансовый ключ К. сгенерированный Антоном:

K=D B (E B (K))

3. Антон и Борис обмениваются сообщениями, зашифрованными одним и тем же сеансовым ключом К.

Данный протокол позволяет не хранить ключи в течение неопределенного периода времени до тех пор, пока они не понадобятся в очередном сеансе связи. Сеансовый ключ можно сгенерировать и отправить по требуемому ; адресу непосредственно перед посылкой сообщения, которое предполагается зашифровать на этом ключе, а потом его сразу уничтожить. Тем самым уменьшается вероятность компрометации сеансового ключа. И хотя тайным ключ также может быть скомпрометирован, риск здесь значительно меньше поскольку тайный ключ используется очень редко — только для однократного зашифрования сеансового ключа.

 "Шарады" Меркля

Оригинальный протокол обмена ключами был предложен американским криптологом Р. Мерклем (R.-Merkle) в 1974 г. Данный протокол основывается на так называемых "шарадах", которые требуется решить для получения ключа. Это гораздо легче сделать отправителю и получателю шифрованных сообщений, чем криптоаналитику, перехватывающему их. В результате Антон может послать шифрованное сообщение Борису, предварительно не передавая ему секретного ключа:

1. Борис генерирует 2 20 (около 1 млн) сообщений вида: "Это шарада под номером х. Это секретный ключ под номером у", где х — случайное число, у— случайный секретный ключ. Пара х, у является уникальной для каждого сообщения. Затем Борис шифрует все эти сообщения при помощи какого-либо симметричного алгоритма на различных 20-битных ключах и отсылает Антону.

2. Антон случайным образом выбирает одно из шифрованных сообщений, присланных Борисом, и методом тотального перебора получает открытый текст этого сообщения.

3. Антон шифрует свое собственное секретное сообщение при помощи другого симметричного алгоритма на ключе у, вскрытом им методом тотального перебора, и посылает это сообщение вместе с соответствующим х.

4. Борис, зная соответствие между х и у, расшифровывает сообщение, пришедшее ему от Антона.

Конечно же, Петр может вскрыть ключ, который был использован Антоном для зашифрования секретного сообщения, однако для этого Петру придется выполнить значительно больший объем вычислений, чем Антону и Борису Петр должен будет прочесть все 2 20 шифрованных сообщений, отправленных Борисом, чтобы найти у, соответствующее значению х, выбранному Антоном. На решение этих "шарад" Петр потратит примерно квадрат времени. которое потребуется Антону и Борису, чтобы их составить. И хотя такое отличие в трудоемкости по криптографическим меркам довольно невелико, в некоторых случаях этого может оказаться достаточно. Например, если Антон и Борис смогут опробовать по 10 тыс. ключей в секунду, им понадобится немногим более 1 минуты, чтобы ключ шифрования у оказался в руках Антона. В то же время у Петра, обладающего примерно такой же вычислительной мощью для опробования ключей, как Антон и Борис, на вскрытие правильного ключа уйдет больше года.

 

2. Цифровая подпись

Цифровая подпись

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

  • Подлинность подписи можно проверить. Ее присутствие в документе позволяет убедиться, действительно ли он был подписан человеком, который обладает правом ставить эту подпись.
  • Подпись нельзя подделать. Наличие подлинной подписи является доказательством того, что именно тот человек, которому она принадлежит, поставил эту подпись под документом.
  • Подпись, которая уже стоит под одним документом, не может быть использована еще раз для подписания второго документа. Иными словами, подпись является неотъемлемой частью документа и не может быть перенесена в другой документ.
  • Подписанный документ не подлежит никаким изменениям.
  • От подписи невозможно отречься. Тот, кто поставил подпись под документом, не может впоследствии заявить, что он не подписывал этот документ.

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

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

Подписание документов при помощи симметричных криптосистем и арбитра

Предположим, что Антон должен послать подписанное им цифровое сообщение Борису. Для этого потребуются симметричная криптосистема и арбитр Дмитрий, который может обмениваться шифрованной информацией и с Антоном, и с Борисом. Чтобы общаться с Антоном, Дмитрий использует ключ К А, а сообщения, предназначенные Борису, Дмитрий шифрует с помощью ключа К Б считается, что передача ключей всем заинтересованным сторонам произошла еще до того, как у Антона появилась потребность отправить Борису подписанный цифровой документ. Тогда Антон. Борис и Дмитрий могут действовать в соответствии со следующим протоколом:

1. Антон шифрует свое сообщение Борису на ключе К А и посылает это сообщение Дмитрию.

2. Дмитрий расшифровывает полученное сообщение, присоединяет к нему собственное заявление о принадлежности этого сообщения Антону,  шифрует сообщение Антона и свое заявление на ключе К Б , а затем отправляет их Борису.

3. Борис расшифровывает сообщение, пришедшее от Дмитрия. В результате Борис может прочесть как открытый текст сообщения Антона, так и подтверждение того факта, что этот текст принадлежит Антону.

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

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

Если Борис захочет продемонстрировать документ, подписанный Антоном. кому-нибудь еще, например, Владимиру, им всем снова придется прибегнуть к услугам вездесущего и кристально честного Дмитрия:

1. Борис шифрует сообщение Антона и заявление Дмитрия о том, что это сообщение действительно пришло от Антона, с помощью ключа К Б и отсылает их Дмитрию.

2. Дмитрий расшифровывает полученное от Бориса сообщение, заглядывает в свой архив и убеждается, что Борис не внес никаких изменений в исходный открытый текст сообщения Антона.

3. Дмитрий зашифровывает сообщение Бориса с помощью ключа К Б , используемого для связи с Владимиром, и шлет это сообщение Владимиру.

4. Владимир расшифровывает сообщение Дмитрия и получает как открытый текст сообщения Антона, так и подтверждение того факта, что лея текст на самом деле принадлежит Антону.

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

Подписание документов при помощи криптосистем с открытым ключом

Протокол подписания документа при помощи криптосистемы с открытым ключом достаточно незатейлив:

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

2. Борис расшифровывает документ с использованием открытого ключа Антона, тем самым проверяя подлинность подписи.

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

Отметка о времени подписания документа

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

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

Использование однонаправленных хэш-функций для подписания документов

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

1. Антон подвергает документ хэшированию при помощи однонаправленной хэш-функции.

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

3. Борис вычисляет хэш-значение документа, расшифровывает хэш-значение, присланное ему Антоном, с использованием открытого ключа Антона. Если два полученных хэш-значения совпадают, то подпись Антона под документом верна.

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

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

Дополнительная терминология

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

По этой причине в ходе дальнейшего изложения о процессах подписания документа и проверки подлинности подписи будет говориться без упоминания конкретных алгоритмов, которые используются для этих целей. Подписание документа Р при помощи тайного ключа К будет обозначаться S К (P), а проверка подлинности подписи с использованием соответствующего открытого ключа — V К (P).

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

Несколько подписей под одним документом

Каким образом Антон и Борис могут поставить свои цифровые подписи под одним и тем же документом? Если не задействовать однонаправленные хэш-функции, существуют 2 способа сделать это.

  • Первый заключается в создании двух идентичных копий документа, одну из которых подписывает Антон, а другую — Борис. Однако тогда придется хранить документ, длина которого в 2 раза превышает размер исходного документа, предназначенного для совместного подписания Антоном и Борисом.
  • Второй способ состоит в том, чтобы сначала документ подписал Антон, а затем подпись Антона заверил своей подписью Борис. Но в этом случае будет невозможно убедиться в подлинности подписи Антона, не проверив подпись Бориса.

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

1. Антон подписывает хэш-значение документа.

2. Борис подписывает хэш-значение того же самого документа.

3. Борис отсылает свою подпись Антону.

4. Антон шлет документ вместе со своей подписью и подписью Бориса Владимиру.

5. Владимир проверяет подлинность подписей Антона и Бориса.

Неоспоримость

Вполне возможна ситуация, при которой Антон, подписав некоторый документ, впоследствии попытается ее оспорить — заявит о том, что подпись под документом поставил не он. Причиной может послужить, например. потеря Антоном своего тайного ключа в людном месте или намеренная его публикация Антоном в разделе частных объявлений популярной газеты. Эта ситуация называется отказ от обязательств.

Уменьшить ущерб отказа от обязательств помогает введение в подпись даты и времени, когда она была поставлена под документом. Конечно, ничего нельзя поделать в случае, если Антон заранее предпринял определенные действия для создания условий, при которых его подпись под документом должна быть признана недействительной. Но можно, по крайней мере, сделать так, чтобы эти действия не позволили Антону объявить поддельными все остальные его подписи, которые он ранее поставил под другими документами:

1. Антон подписывает документ.

2. Антон генерирует заголовок, в который помещает свои личные данные. присоединяет этот заголовок к подписанному им документу, еще раз подписывает итоговый документ и посылает его Дмитрию.

3. Дмитрий проверяет вторую подпись Антона, добавляет к его сообщению отметку о дате и времени получения этого сообщения, подписывает его. а затем отправляет Антону и Борису.

4. Борис проверяет подпись Дмитрия, персональные данные Антона и его подпись.

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

3. Цифровая подпись и шифрование

Цифровая подпись и шифрование

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

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

1. Антон подписывает сообщение Р при помощи своего тайного ключа К А:

S K A (P)

2. Антон шифрует подписанное сообщение, используя открытый ключ Бориса К Б , и посылает его Борису

Е K Б ( S K A (P) )

3. Борис расшифровывает сообщение Антона с помощью своего тайного ключа К Б :

D K Б ( Е K Б ( S K A (P) ) ) = S K A (P)

4. С помощью открытого ключа Антона К А, Борис проверяет подпись Антона и получает открытый текст его сообщения:

V K A (S K A (P) ) = Р

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

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

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

1. Антон подписывает сообщение при помощи своего тайного ключа, шифрует это сообщение, используя открытый ключ Бориса, и посылает его Борису:

Е K Б ( S K A (P) )

2. Борис расшифровывает сообщение Антона на своем тайном ключе, удостоверяется в подлинности подписи Антона с помощью его открытого ключа и восстанавливает открытый текст сообщения:

S K A (D K Б K Б ( S K A (P) ) ) ) = P

3. Борис подписывает сообщение Антона с использованием своего тайного ключа, шифрует это сообщение вместе со своей подписью на открытом ключе Антона и отсылает обратно:

Е K A ( S K Б (P) )

4. Антон расшифровывает сообщение Бориса при помощи своего тайного ключа и проверяет подлинность подписи Бориса, используя его открытый ключ. Если в результате он получит сообщение, идентичное тому, которое он ранее отправил Борису, значит, сеанс связи прошел корректно.

К сожалению, если для шифрования и проверки цифровой подписи применяется одинаковый криптографический алгоритм (т. е., V K = E К и S К = D К ), Зиновий, являясь законным пользователем сети связи, при определенных условиях сможет читать шифрованную переписку Антона. Для этого, перехватив сообщение Антона Е K Б ( S K A (P) ) , Зиновий шлет его от своего имени Борису. Борис после расшифрования и проверки цифровой подписи Зиновия получит:

E K З (D K Б K Б ( D K A (P) ) ) ) = E K З (D K А (P) )

В соответствии с протоколом Борис должен отправить Зиновию подтверждение правильности приема пришедшего ему сообщения:

В результате Зиновию останется только преобразовать сообщение, присланное ему Борисом, при помощи своего тайного ключа и известных открытых ключей Антона и Бориса — и вот он, заветный открытый текст Р сообщения, отправленного Антоном!

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

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

4. Основные криптографические протоколы

Основные криптографические протоколы

Обмен ключами

Распространенным приемом в криптографии является шифрование каждого передаваемого сообщения с помощью отдельного ключа. Такой ключ называется сеансовым, поскольку используется только на протяжении одного сеанса связи. Каким образом сеансовый ключ попадает в распоряжение отправителя и получателя шифрованного сообщения?

Обмен ключами для симметричных криптосистем

Предположим, что Антон и Борис, являющиеся пользователями компьютерной сети, получили секретные ключи от Дмитрия (доверенного липа, наделенного правами арбитра). Секретные ключи попали к Антону и Борису еще до начала сеанса связи, а злоумышленник Зиновий ровным счетом ничего не знает о том, какие это ключи. Тогда для обмена шифрованными сообщениями по компьютерной сети Антон и Борис могут воспользоваться следующим криптографическим протоколом:

1. Антон связывается с Дмитрием и запрашивает у него сеансовый ключ для связи с Борисом.

2. Дмитрий генерирует случайный сеансовый ключ и создает две шифрованных копии этого ключа — один раз Дмитрий шифрует сеансовый ключ с помощью секретного ключа Антона, второй — с помощью секретного ключа Бориса. Затем Дмитрий отсылает обе копии Антону.

3. Антон расшифровывает свою копию сеансового ключа.

4. Антон отправляет Борису его копию сеансового ключа.

5. Борис расшифровывает свою копию сеансового ключа.

6. Антон отправляет Борису сообщение, зашифрованное с использованием сеансового ключа, копия которого имеется у них обоих.

И Антон, и Борис полностью полагаются на честность Дмитрия. Если Зиновию удастся его подкупить или обмануть, ни о какой секретности обмена сообщениями между Антоном и Борисом не может быть и речи. В этом ел у чае Зиновий получит доступ ко всем ключам, используемым абонентами компьютерной сети, и сможет прочесть шифрованные сообщения, которыми они обмениваются по сети. Для этого Зиновию достаточно аккуратно копировать всю передаваемую через нее информацию.

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

Обмен ключами для криптосистем с открытым ключом

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

1. Антон находит открытый ключ Бориса в справочнике, в базе данных или получает его от Дмитрия.

2. Антон генерирует случайный сеансовый ключ, шифрует его при помощи открытого ключа Бориса и отправляет ему в зашифрованном виде.

3. Борис расшифровывает сообщение Антона с использованием своего тайного ключа.

4. Антон и Борис обмениваются сообщениями, зашифрованными на одном и том же сеансовом ключе.

Атака методом сведения к середине

Петр, возможности которого ограничены лишь перехватом передаваемых сообщений, может попытаться вскрыть применяемый криптографический алгоритм с открытым ключом или организовать атаку со знанием только шифртекста. По сравнению с Петром у Зиновия выбор гораздо богаче: он ' может не только "подслушивать" за Антоном и Борисом, но также видоизменять и даже уничтожать сообщения, которыми они обмениваются между собой. Более того, Зиновий может перевоплотиться в Антона, когда общается с Борисом. Он также может попытаться выдать себя за Бориса, вступая в контакт с Антоном. При этом Зиновий может действовать, например, следующим образом:

1. Антон посылает Борису свой открытый ключ. Зиновий перехватывает этот ключ, а вместо него отсылает Борису свой собственный открытый ключ.

2. Борис посылает Антону свой открытый ключ. Зиновий перехватывает лог ключ, а вместо него отсылает Антону свой собственный открытый ключ.

3. Антон шлет Борису сообщение, зашифрованное с помощью открытого ключа, который Антон ошибочно считает принадлежащим Борису. Зиновий перехватывает это сообщение, расшифровывает его при помощи своего тайного ключа, произвольным образом изменяет его, снова зашифровывает на открытом ключе Бориса и затем отсылает адресату.

4. Борис шлет Антону сообщение, зашифрованное с помощью открытого ключа, который Борис ошибочно считает принадлежащим Антону. Зиновий перехватывает это сообщение, расшифровывает его при помощи своего тайного ключа, произвольным образом изменяет его, снопа зашифровывает на открытом ключе Антона и затем отсылает адресат.

Даже если в процессе обмена сообщениями Антон и Борис не передают свои открытые ключи по каналам связи, а просто извлекают их из базы данных, Зиновий может оказаться в состоянии перехватывать запросы в эту базу данных и подменять открытые ключи Антона и Бориса своими собственными. А еще Зиновий может проникнуть в базу данных, где хранятся открытые ключи Антона и Бориса, заменить их на свои собственные, а затем преспокойно дожидаться, пока Антон и Борис не захотят обменяться сообщениями.

Такая атака методом сведения к середине стала возможна потому, что Антон и Борис не в состоянии достоверно убедиться в том, что общаются друг с другом напрямую. И если, модифицируя сообщения Антона и Бориса. Зиновий научится делать это с такой быстротой, что задержка в передаче сообщений будет незаметной, ни Антон, ни Борис так никогда и не догадаются, что кто-то вклинился между ними и читает всю их якобы секретную переписку.

Блокировочный протокол

Блокировочный протокол, изобретенный американскими криптологами Р. Райвестом и А. Шамиром, позволяет существенно осложнить жизнь Зиновию и ему подобным личностям:

1. Антон посылает Борису свой открытый ключ.

2. Борис посылает Антону свой открытый ключ.

3. Антон зашифровывает свое сообщение и отсылает половину этого сообщения Борису.

4. Борис зашифровывает свое сообщение и отсылает половину этого сообщения Антону.

5. Антон отсылает вторую половину своего сообщения Борису.

6. Борис расшифровывает сообщение Антона с помощью своего тайного ключа. Борис отсылает вторую половину своего сообщения Антону.

7. Антон расшифровывает сообщение Бориса с помощью своего тайного ключа.

Необходимо, чтобы одну часть сообщения, посланного Антоном или Борисом, нельзя было прочитать, не имея на руках другой его части. Тогда Борис не сможет прочитать сообщение Антона до тех пор, пока не дойдет до шага 6 блокировочного протокола, а Борис не сможет ознакомиться с сообщением Антона до шага 7. Существует несколько способов добиться этого:

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

На шаге 1 блокировочного протокола Зиновий по-прежнему может подставить свой собственный открытый ключ вместо открытого ключа Антона. Однако теперь на шаге 3 Зиновий будет не в состоянии дешифровать перехваченное сообщение Антона и зашифровать его заново при помощи открытого ключа Бориса. Зиновию непременно придется придумать свое собственное сообщение (случайный битовый вектор или хэш-значение) и послан, его половину Борису. То же самое касается и сообщения Бориса Антону. которое Зиновий перехватит на шаге 4 блокировочного протокола. А после того как Зиновий получит в свое распоряжение вторые половины подлинных сообщений Антона и Бориса, будет уже слишком поздно изменить придуманные им ранее фальшивые сообщения, которые он уже отослал от их имени. Следовательно, Зиновию придется дать волю своей фантазии и продолжить вести всю переписку от имени Антона и Бориса.

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

Протокол обмена ключами с цифровой подписью

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

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

Зиновию остается только перехватывать шифрованные сообщения, которыми обмениваются Антон и Борис, и пытаться их читать с помощью криптоаналитических методов.

Однако следует отметить, что в протоколе обмена сеансовыми ключами с цифровой подписью появился новый участник — Дмитрий. Если Зиновий сумеет перевоплотиться в Дмитрия, он сможет подписывать и навязывать участникам протокола известные ему фальшивые сеансовые ключи. Таким образом, несмотря ни на что, у Зиновия все же остается возможность атаковать этот протокол, воспользовавшись методом сведения к середине.

Одновременная передача ключа и сообщения

Антон и Борис совершенно необязательно передают друг другу сеансовые ключи перед тем, как приступить к обмену сообщениями. Вместо этого они могут воспользоваться следующим протоколом:

1. Антон генерирует случайный сеансовый ключ Кис помощью него зашифровывает сообщение М, получая в результате Е К (М).

2. Антон извлекает открытый ключ Бориса В из базы данных.

3. Антон шифрует сеансовый ключ К при помощи В, получая в результате Е В (К) .

4. Антон посылает Борису Е к (М) и Е в (К).

5. Борис расшифровывает сеансовый ключ К с помощью своего тайного ключа.

6. Борис расшифровывает сообщение Антона на сеансовом ключе К.

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

Множественная рассылка ключей и сообщений

Почему бы Антону не послать шифрованное сообщение сразу нескольким адресатам? Он может сделать это, например так:

1. Антон генерирует случайный сеансовый ключ Кис его помощью зашифровывает сообщение М, получая в результате Е К (М).

2. Антон извлекает открытые ключи Бориса, Владимира и Георгия из базы данных.

3. Антон шифрует К при помощи открытых ключей Бориса, Владимира и Георгия, получая в результате Е Б (К), Е в (К)и Е г (К).

4. Антон, посылает шифрованное сообщение Е к (М), а также многократно зашифрованный сеансовый ключ (E Б (K), Е в (К)и Е Г (К)) всем, кто пожелает их получить.

5. Только Борис, Владимир и Георгий смогут расшифровать сеансовый ключ К при помощи своих тайных ключей.

6. Только Борис, Владимир и Георгий смогут прочесть шифрованное сообщение Антона с помощью сеансового ключа К.

5. Аутентификация

Когда Антон проходит процедуру регистрации для получения доступа к глобальной компьютерной сети Internet, каким образом информационно-коммерческая служба, услугами которой он пользуется, узнает, что это именно Антон, а не Зиновий, пытающийся бесплатно (за счет Антона) попутешествовать по Всемирной паутине? Чаще всего эта проблема решается при помощи пароля: Антон должен ввести некую секретную информацию. известную только ему и его поставщику услуг Internet. Причем вводить эту информацию надо каждый раз при прохождении процедуры регистрации.

Аутентификация при помощи однонаправленных функций

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

1. Антон посылает на сервер свой пароль.

2. С помощью однонаправленной функции сервер вычисляет хэш-значение для присланного Антоном пароля.

3. Сервер сравнивает вычисленное хэш-значение с эталоном, который хранится в его памяти, и делает вывод о правильности пароля Антона.

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

Отражение словарной атаки при помощи "изюминок"

Файл с хэш-значениями, полученными из паролей, может подвергнуться словарной атаке. Составив словарь примерно из 1 млн самых распространенных паролей, Зиновий применит к ним хэш-функцию. В результате он получит файл объемом до 10 Мбайт, который уместится на нескольких дне кетах. Далее Зиновий украдет с сервера файл с паролями, зашифрованными с помощью хэш-функции, и сравнит его со своим файлом, содержащим хэш-значения для самых часто используемых паролей. Совпадающие хэш-значения позволят Зиновию определить некоторые из паролей.

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

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

"Изюма" понадобится много. Во многих версиях операционной системы UNIX используются "изюминки" длиной 12 бит. Этого явно недостаточно: существуют программы, которые при помогли словарной атаки позволяют за неделю вскрыть от 30 до 40% всех паролей, применяемых пользователями UNIX.

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

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

Периодическая сменяемость паролей

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

Антон генерирует случайное число R и пересылает его серверу, который вычисляет, исходя из этого числа и однонаправленной функции f значения x 1 = f (R), x 2 =f (f (R)), x 3 = f (f (f(R))) и т.д. 101 раз. Первые 100 вычисленных значений x 1 , х 2 , . . , x 100 передаются Антону в качестве списка паролей, который он должен хранить в тайне. A x 101 запоминается на сервере.

Теперь, когда Антон захочет зарегистрироваться для работы на сервере, ему достаточно ввести свое имя и число х 100 . Сервер вычислит f(x 100 ) и сравнит его с х 101 . В случае совпадения Антону будет разрешен доступ к серверу, который затем заменит х 101 на х 100 . А Антон вычеркнет х 101 из своего списка паролей.

В следующий раз, когда Антон снова захочет получить доступ к серверу, он найдет в списке паролей следующее по порядку не зачеркнутое значение х j . Сервер вычислит f(x j ) и сравнит с запомненным X j+ 1 .

Злоумышленник Зиновий, взломавший сервер, все равно не сможет узнать очередной пароль Антона x j по хранимому на сервере значению x j+l, поскольку функция f является однонаправленной. По той же самой причине. даже если Зиновий перехватит x j , это позволит ему зарегистрироваться под именем Антона всего лишь один раз. А значения x 1 , x 2 , ... , х j -1 так и останутся для Зиновия тайной за семью печатями при условии, что Антон достаточно ответственно относится к хранению списка паролей, полученного им с сервера.

Аутентификация при помощи криптосистем с открытым ключом

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

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

1. Сервер генерирует случайную битовую строку и посылает ее Антону.

2. Антон шифрует эту строку при помощи своего тайного ключа и отсылает обратно на сервер.

3. На сервере производится расшифрование сообщения, пришедшего от  Антона, с помощью его открытого ключа.

4. Если полученный в результате открытый текст идентичен случайной битовой строке, ранее посланной Антону, последний получает доступ к серверу.

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

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

1. Антон производит некоторые специальные вычисления на основе предварительно сгенерированной им случайной битовой последовательности и своего тайного ключа. Затем он отсылает вычисленные им значения на сервер.

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

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

4. На сервере производятся некоторые специальные вычисления на основе присланных Антоном значений и его открытого ключа, чтобы убедиться в том, что именно он является обладателем соответствующего тайного ключа.

5. Если проверка дает положительный результат, Антону разрешается доступ к серверу.

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

6. Формальный анализ криптографических протоколов

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

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

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

Авторами третьего подхода являются американские криптологи М. Бэрроуз. М. Абади, Р. Нидхэм (М. Burrows, M. Abadi, R. Needham). Они разработали формальную логическую модель, названную по первым буквам их фамилий БАН-логикой (BAN-logic). Составить с ее помощью общее представление о надежности криптографического протокола нельзя. Однако основное преимущество БАН-логики перед другими подходами заключается в том, что она состоит из набора простых логических правил, которые легко применяются на практике и весьма полезны при обнаружении отдельных изъянов в анализируемых протоколах.

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

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

7. Многоключевая криптография с открытым ключом

Многоключевая криптография с открытым ключом

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

Имеется три ключа К А , К Б и К С , которые распределены между участниками процесса обмена сообщениями следующим образом:

Антон           К А

Борис            К Б

Владимир     К В

Георгий        К А и К Б

Денис           К Б и К В

Евгений        К В и К А

Если Антон зашифрует свое сообщение с помощью ключа К А, расшифровать его смогут либо Денис, либо Борис совместно с Владимиром, которые имеют в своем распоряжении К Б и К В . Сообщение, зашифрованное Борисом, сможет прочесть Евгений. Владимир может зашифровать сообщение, которое в состоянии прочесть Георгий. Сообщение, зашифрованное Георгием при помощи ключа К А , смогут прочесть Денис. Если Георгий воспользуется ключом кб, то его сообщение прочитает Евгений, а если применит кб и кб, то с этим сообщением сможет ознакомиться Владимир. Аналогичным образом может .зашифровать свое сообщение Денис, и тогда его прочтут либо Антон, либо Георгий, либо Евгений. Всевозможные сочетания ключей шифрования и расшифрования перечислены в табл. 7.2.

Таблица 7.2. Сочетания ключей шифрования и расшифрования в трехключевой криптосистеме с открытым ключом


Зашифровано с помощью ключей: Расшифровывается с помощью ключей:
К А К Б и К В
К Б К А и К В
К С К А и К Б
К А и К Б К В
К А и К В К Б
К Б и   К В К А

Множественная рассылка шифрованных сообщений

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

Выход из положения позволяет найти многоключевая криптография с открытым ключом. Предположим, что в компьютерной сети связи имеются всего 3 абонента — Антон, Борис и Владимир. Каждый из них получит по 2 ключа: Антон — К А и К Б , Борис — К Б и К В , Владимир — К А и К В . Тогда если потребуется послать сообщение для Антона, его надо зашифровать с помощью К С . Сообщение, предназначенное Борису, следует зашифровать при помощи К А . А если сообщение должен прочесть только Владимир, необходимо использовать К Б . Сообщение для Антона и Бориса шифруется на ключах К А и К В , для Антона и Владимира — на К Б и   К В , для Бориса и Владимира — на К А и К Б .

В случае трех абонентов эта схема множественной рассылки сообщений группам абонентов выглядит не слишком впечатляюще, но при 100 абонентах ее преимущества становятся очевидны. Вместо порядка 2 100 ключей абонентам сети надо раздать всего 100 ключей, и посылать требуется всего одно шифрованное сообщение, а не n , где n — количество абонентов в группе ( n >1).

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

8. Распределение ответственности

Распределение ответственности

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

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

Простейший криптографический протокол позволяет Дмитрию поровну распределить между Антоном и Борисом ответственность за сохранение сообщения в тайне:

1. Дмитрий генерирует случайную битовую строку R, которая имеет ту же длину, что и исходное сообщение М.

2. Дмитрий складывает М с R по модулю 2 и получает S.

3. Дмитрий вручает R Антону, a S — Борису.

Чтобы восстановить сообщение М в исходном виде, Антон и Борис должны совместно выполнить последний шаг протокола:

1. Антон и Борис складывают R и S по модулю 2 и получают М.

В умелых руках данный протокол является весьма надежным. Знание S или R не позволяет реконструировать М. Дмитрий шифрует сообщение при помощи одноразового блокнота и отдает полученный в результате шифртекст одному человеку, а сам блокнот — другому.

Этот протокол можно легко применять для любого числа участников. Если участников 4, он будет выглядеть следующим образом:

1. Дмитрий генерирует три случайных битовых строки R, S и Т, которые имеют ту же длину, что и исходное сообщение М.

2. Дмитрий складывает М, R, S и Т по модулю 2 и получает U.

3. Дмитрий вручает R Антону, S — Борису, Т — Владимиру, U — Георгию.

Чтобы восстановить сообщение М в исходном виде, Антон, Борис, Владимир и Георгий должны совместно выполнить последний шаг протокола:

1. Антон, Борис, Владимир и Георгий складывают R, S, Т и U по модулю 2 и получают М.

Одним из участников протокола является Дмитрий, который наделен неограниченными правами. Например, Дмитрий может зашифровать какую-нибудь абракадабру вместо М, а потом утверждать, что Антон и другие участники протокола являются хранителями настоящей тайны, а не какой-то чепухи. Чтобы разоблачить Дмитрия, им необходимо собраться вместе и восстановить исходное сообщение. А еще Дмитрий может сначала раздать части своего сообщения Антону, Борису, Владимиру и Георгию, а затем сложить М и U по модулю 2 и заявить, что только Антон, Борис и Владимир нужны для восстановления сообщения в исходном виде, а от Георгия можно избавиться. Поскольку сообщение М всецело принадлежит только Дмитрию, он может распоряжаться им, как того пожелает.

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

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

Ситуацию можно еще усложнить. Допустим, что для нажатия "ядерной кнопки" в нашей стране нужны 1 генерал и 3 полковника. А если генерал по причине своего старческого склероза, забыл приехать к "ядерной кнопке" в назначенное время, достаточно и пятерых полковников. При этом, если собрались всего 4 полковника, Америке ничего не грозит до тех пор, пока 5 полковников не окажутся в полном сборе. Или пока генерал не приедет.

Криптологи придумали так называемый пороговый протокол, который позволяет распределять ответственность даже еще более сложным образом. В общем случае берется любое секретное сообщение (пароль, код запуска баллистических ракет, рецепт приготовления "Кока-колы") и делится па n частей (называемых долями) так, что для реконструкции исходного сообщения обязательно нужны m из них. Такой протокол более точно именуется ( т, п ) - пороговым протоколом.

Например, при использовании (3,4)-порогового протокола Дмитрий может поделить между Антоном, Борисом, Владимиром и Георгием секретный пароль для включения своего персонального компьютера таким образом, что трое из них, собравшись вместе, будут в состоянии восстановить этот пароль и включить компьютер Дмитрия. Если Владимир неожиданно попадет в больницу в бессознательном состоянии, то же самое смогут сделать Антон, Борис и Георгий. Однако, если Борис в это время будет в командировке, без него Антон и Георгий так и не смогут запустить компьютер Дмитрия.

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

1. Антон, Борис, Владимир и Георгий получают от шефа приказ включить персональный компьютер Дмитрия. Все четверо собираются вместе и выполняют операцию сложения имеющихся у них долей по модулю 2. Однако Георгий, которого подкупила конкурирующая фирма, вместо того чтобы честно прибавить свою долю, выданную ему Дмитрием, прибавляет случайную битовую строку. В результате компьютер Дмитрия отказывается включаться, и никто не может объяснить, в чем тут дело.

2. К Антону, Борису, Владимиру и Георгию, получившим от шефа распоряжение включить персональный компьютер Дмитрия, присоединяется Зиновий, который утверждает, что он явился по приказу шефа для воссоздания пароля, поскольку якобы является законным обладателем соответствующей пятой доли. После того как ничего не подозревающие Антон, Борис, Владимир и Георгий огласили свои доли, Зиновий с торжествующем воплем убегает из комнаты: теперь он может в одиночку реконструировать пароль Дмитрия, т. к. знает все необходимые для этого доли.

3. Вместо того чтобы убежать, Зиновий дожидается, пока все участники протокола по очереди огласят свои доли, а затем называет случайную битовую строку требуемой длины. В этом случае Зиновий не только сумеет узнать все доли, но и никто из участников протокола так и не осознает. что Зиновий является посторонним лицом и не имеет никакого права присутствовать при восстановлении секретного пароля Дмитрия.

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

  • Можно обойтись без Дмитрия, который делит исходное секретное сообщение на части. В этом случае никто из участников протокола не знает содержание сообщения до тех пор, пока все они не соберутся вместе и не реконструируют его.
  • От участников протокола не требуется оглашать свою долю публично. Если секретом является тайный ключ в криптосистеме с открытым ключом, которая используется для цифровой подписи, каждый участник выполняет частичное (долевое) подписание соответствующего документа. После того как это сделает последний из них, под документом появится полная цифровая подпись. При этом ни один из участников так и не узнает долю другого.
  • Участники протокола могут убедиться, что на самом деле получили от Дмитрия настоящую долю, позволяющую им принимать участие в реконструкции секретного сообщения наравне с другими участниками протокола. При этом от участников совершенно не требуется собираться вместе и восстанавливать исходное сообщение.
  • Можно устроить так, что если более m участников протокола высказались за реконструкцию секретного сообщения и при этом менее n участников были против, сообщение будет восстановлено в первозданном виде, а иначе — не будет.
  • Можно добиться, чтобы в случае, если один из участников протокола окажется не в состоянии выполнить необходимые действия для восстановления исходного секретного сообщения, почти мгновенно и без каких-либо существенных накладных расходов будет введен новый протокол, участниками которого станут оставшиеся участники первоначального.

9. Вспомогательные криптографические протоколы

Вспомогательные криптографические протоколы

Отметка о времени создания файла

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

В компьютерном мире все значительно сложнее. Файл, в котором хранится документ, может быть скопирован и изменен бессчетное число раз. А поменять отметку о времени последней модификации этого файла по силам даже начинающему пользователю. И никто не сможет просто взглянуть на файл и сказать: "Да, я абсолютно уверен, что данный файл был создан именно 15 марта 1996 г." Необходимо пользоваться специальным криптографическим протоколом, который обладает следующими свойствами:

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

Отметка о времени создания файла и арбитраж

Файл можно снабдить отметкой о времени его создания при помощи протокола, в котором принимает участие доверенное лицо (Дмитрий):

1. Антон передает копию своего документа Дмитрию.

2. Дмитрий фиксирует время получения копии документа, которую с этого момента хранит у себя, чтобы предъявить по первому требованию Антона.

Теперь при возникновении разногласий относительно времени создания документа Антон обращается к Дмитрию, который демонстрирует копию документа и дает свидетельские показания о том, когда этот документ был им получен.

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

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

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

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

1. Антон вычисляет хэш-значение для своего документа.

2. Антон передает вычисленное хэш-значение Дмитрию.

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

4. Дмитрий отсылает подписанное им хэш-значение с проставленной отметкой времени обратно Антону.

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

Связующий протокол

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

Пусть А— это идентификатор Антона, присвоенный ему в компьютерной сети, Н n — хэш-значение документа, для которого Антон хочет получить отметку о времени создания, a T n -1 — отметка о времени создания предыдущего документа. Тогда, чтобы затруднить сговор между Антоном и Дмитрием, можно воспользоваться так называемым связующим протоколом:

1. Антон посылает Дмитрию Н n и А.

2. Дмитрий отсылает обратно Антону T n = S K (n,A,H n ,T n ,I n -1 ,H n-1 ,T n-1 ,L n ), где L n представляет собой следующую связующую информацию, подвергнутую хэшированию при помощи функции Н вида L n = H(I n -1 ,H n-1 ,T n-1 ,L n -1 ). Здесь наличие S К свидетельствует о том, что сообщение подписано цифровой подписью Дмитрия. Присутствие А необходимо, чтобы идентифицировать Антона в качестве получателя этого сообщения. Параметр n задает порядковый номер отметки о времени создания документа, хэш-значение которого Дмитрий получил от Антона. Т n — это сама отметка о времени. Остальные параметры перечисляют идентификатор хэш-значение, отметку времени и связующую информацию, которые были вычислены для предыдущего документа, присланного Дмитрию для постановки отметки о времени создания.

3. После того как Дмитрий получит следующий документ, на который потребуется поставить отметку о времени создания, он перешлет Антону идентификатор I n+ 1 своего очередного клиента, приславшего этот документ.

Теперь, если кто-то поставит под сомнение время создания документа Антоном, он может связаться с I n -1 и I n +1 , т. е. с авторами предыдущего и следующего документов, присланных Дмитрию. Если и у них возникнут сомнения относительно времени создания документов, то они. в свою очередь, могут обратиться к I n - 2 и I n + 2 . Каждый из них может доказать, что на его документ была поставлена отметка времени, предшествующая отметке следующего клиента и идущая за отметкой предыдущего.

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

Распределенный протокол

Люди не вечны. Поэтому вполне может случиться так, что когда Антон обратится за содействием к I n -1 , тот уже успеет отправиться в мир иной, где отметки о времени создания документов вовсе не так важны для его обитателей. В этом случае можно посоветовать Антону воспользоваться распределенным протоколом и встроить в отметку о времени создания своего документа временные отметки, по крайней мере, 10-и других человек. Таким образом, у Антона будет больше шансов найти людей, которые при необходимости смогут помочь удостоверить время создания его документа. Распределенный протокол также позволяет избавиться от услуг Дмитрия:

1. С помощью генератора криптографически надежной псевдослучайной последовательности Антон получает k чисел R 1 , R 2 , . . . , R k , в качестве начального значения используя хэш-значение Н n , вычисленное для своего документа,.

2. Антон интерпретирует сгенерированные числа R 1 , R 2 , . . . , R k , как идентификаторы абонентов компьютерной сети, и отсылает Нп каждому из них.

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

4. Антон собирает и хранит все k подписей вместе с отметкой о времени создания своего документа.

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

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

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

Подсознательный канал

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

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

Простым подсознательным каналом может служить число слов в предложениях невинного на первый взгляд текста. Нечетное количество слов соответствует 0, а четное — 1. Таким образом, если мой сообщник подсчитает количество слов в предложениях предыдущего абзаца, то получит секретное сообщение "11010". К сожалению, в этом алгоритме отсутствует ключ, а сам алгоритм является ограниченным — здесь стойкость всецело зависит от сохранения в тайне самого алгоритма.

Американский криптолог Г. Симмонс (G. Simmons) первым сумел встроить подсознательный канал в обыкновенную цифровую подпись. В этом случае алгоритм цифровой подписи со встроенным подсознательным каналом б\-дет неотличим для Олега от стандартного алгоритма цифровой подписи. Олег не только не сможет читать сообщения, передаваемые Антоном и Борисом по подсознательному каналу. В его мозгу не мелькнет даже намека па мысль о возможном существовании такового.

Протокол, придуманный Симмонсом для реализации подсознательного канала с помощью цифровой подписи, в общих чертах выглядит так:

1. Антон генерирует произвольное сообщение, выглядящее вполне невинно.

2. При помощи секретного ключа, который имеется и у Бориса, Антон подписывает свое сообщение так, что в подписи прячется подсознательный канал.

3. Антон отдает подписанное сообщение Олегу.

4. Олег знакомится с сообщением Антона, проверяет цифровую подпись. Не обнаружив ничего подозрительного, Олег передает это сообщение Борису.

5. Борис проверяет цифровую подпись Антона под полученным из рук Олега сообщением и убеждается, что оно пришло от Антона.

6. Используя секретный ключ, которым он владеет совместно с Антоном, Борис извлекает секретную информацию, содержащуюся в подсознательном канале.

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

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

Практическое применение подсознательного канала

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

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

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

10. Неоспоримая цифровая подпись

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

Предположим, что Антон возглавляет компанию "ПрограммКомп", которая торгует универсальным текстовым редактором "УниЛекс'97" собственного изготовления. Чтобы исключить заражение компьютерным вирусом машин. принадлежащих покупателям этого программного продукта, "ПрограммКомп" снабжает каждую копию "УниЛекса'97" цифровой подписью. Однако необходимо, чтобы только легальные покупатели "УниЛекса'97" могли проверить подлинность цифровой подписи. Если в купленной на законных основаниях копии "УниЛекса'97" вдруг обнаружится вирус, "ПрограммКомп" не сможет оспорить подлинность своей цифровой подписи.

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

Математический аппарат, используемый для конструирования неоспоримой цифровой подписи, довольно сложен и громоздок, однако основная идея соответствующего протокола достаточно прозрачна:

1. Антон знакомит Бориса со своей цифровой подписью.

2. Борис генерирует случайное число и передает его в распоряжение Антона.

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

4. Борис подтверждает получение вычисленного Антоном значения.

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

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

В результате Борис может на законных основаниях приобрести копию "УниЛекса'97", сделать с нее пиратскую копию и перепродать Владимиру. Как только Владимир захочет проверить подлинность цифровой подписи под пиратской копией "УниЛекса'97", Борис обратится к Антону с просьбой произвести проверку подписи под купленной легально копией этого текстового редактора. Сгенерированное Владимиром случайное число Борис переадресует Антону, а поступивший от Антона ответ он перешлет Владимиру.

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

11. Цифровая подпись с назначенным конфирмантом

Если дела у компании "ПрограммКомп" резко пойдут в гору и "УниЛекс'97" станут покупать нарасхват, то Антону вскоре придется заниматься одной только проверкой подлинности цифровых подписей на проданных копиях вместо того, чтобы готовить к выпуску новую, более универсальную, версию своего текстового редактора. Поэтому Антон вряд ли откажется, если ему Борис предложит стать его конфирмантом, т. е. взять на себя верификацию подписей Антона. Для этого Антон просто будет ставить под копиями "УниЛекса'97" не обыкновенную цифровую подпись, а цифровую подпись с назначенным конфирмантом.

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

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

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

12. Цифровая подпись по доверенности

Кроме проверки своей цифровой подписи, Антон может поручить другому лицу ставить эту подпись вместо себя. В жизни случается всякое, и Антон не застрахован от несчастного случая. Или, например, попытка продать текстовый редактор "УниЛекс'97" якутским оленеводам может потребовать от Антона посещения районов, в которых компьютерные сети — все еще большая редкость. Каким же образом Антон может передать Борису право подписывать все документы вместо себя, не предоставляя ему доступ к своему тайному ключу?

Для этого Антону следует воспользоваться цифровой подписью по доверенности. Тогда в случае необходимости Антон сможет передать Борису доверенность на право ставить свою цифровую подпись. Для этого поставленная по доверенности цифровая подпись должна обеспечивать:


  • Распознаваемость.
Подпись по доверенности всегда можно отличить от оригинальной подписи ее настоящего владельца.

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

    13. Групповые подписи

    Групповыми подписями называются цифровые подписи, которые обладают следующими свойствами:

    • только члены группы могут подписывать документы;
    • владелец документа может убедиться, действительно ли поставленная под этим документом подпись принадлежит одному из членов группы:
    • по подписи невозможно определить, кто именно из членов группы ее поставил;
    • в случае возникновения разногласий имеется возможность однозначно идентифицировать члена группы, которому принадлежит та или иная подпись.

    Поставить групповую подпись под документом можно, например. мощи следующего протокола с арбитражем:

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

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

    3. Чтобы подписать документ, член группы выбирает ключ из списка, предоставленного ему Дмитрием.

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

    5. В случае возникновения спора Дмитрий знает, кому из членов группы принадлежит ключ, с помощью которого была поставлена подпись, вызвавшая разногласия.

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

    14. Цифровая подпись с дополнительной защитой

    Предположим, что в распоряжении злоумышленника Зиновия имеется множество высокопроизводительных компьютеров. И все они работают днем и ночью, чтобы вскрыть тайный ключ Антона, которым тот попытается, подписывая своей цифровой подписью важные финансовые документы. Цель оправдывает средства: ведь в случае успеха Зиновий сможет свободно распоряжаться весьма значительными денежными средствами Антона, подделывая его подпись.

    Чтобы противостоять злодейским планам Зиновия, Антону следует воспользоваться цифровой подписью с дополнительной защитой. Тогда, если Зиновии вскроет тайный ключ Антона с помощью тотального перебора и подделает его подпись, Антон сможет разоблачить подделку. Идея, которая лежит в основе цифровой подписи с дополнительной зашитой, достаточно проста. Каждому открытому ключу ставится в соответствие не один тайный ключ, а некоторое множество тайных ключей. Любой из них позволяет поставить под документом цифровую подпись, но она будет отлична от подписей, изготовленных при помощи других ключей. Антон знает только один ключ, остальные ему неизвестны.

    Теперь, если Зиновий накопит достаточно документов, подписанных Антоном, и попробует использовать всю мощь своих компьютеров для нахождения тайного ключа Антона, то самое большее, чего сможет добиться Зиновий, — это отыскание отдельного ключа. А если количество возможных тайных ключей, соответствующих данному открытому ключу, чрезвычайно велико, то Зиновий вряд ли найдет именно тот ключ, который использует Антон для подписи своих документов.

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

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

    15. Предсказание бита

    Непревзойденный маг и волшебник Антон решает публично продемонстрировать свои необычайные интеллектуальные способности. Он точно знает. какую карту выберет из колоды Борис еще до того, как это сделает сам Борис! Поэтому Антон записывает название этой карты на листке бумаги, кладет листок в конверт и запечатывает его. Затем Антон передает запечатанный конверт на хранение кому-то из публики. "Возьми из колоды любую карту", — предлагает Антон Борису. Борис выбирает наугад карту и показывает зрителям: "Туз пик". Антон вскрывает конверт и извлекает из него листок бумаги, на котором, как все могут убедиться, черным по белому написано: "Туз пик". Шквал аплодисментов.

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

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

    Антон может сделать предсказание, выполнив шаги протокола, который использует симметричную криптосистему:

    1. Борис, генерирует случайную битовую строку S и посылает ее Антону.

    2. Антон присоединяет бит b , значение которого он собирается предсказать, к S, шифрует полученную в результате битовую строку (S,b) при помощи симметричной криптосистемы E K и некоторого секретного ключа К, а затем отсылает результат обратно Борису.

    На этом завершается процесс предсказания. Поскольку Борис не может дешифровать полученное от Антона сообщение Е K ( S , b ), то предсказание, сделанное Антоном, остается для Бориса тайной за семью печатями.

    Теперь, если Антон пожелает ознакомить Бориса со своим предсказанием, они могут продолжить совместное выполнение следующих шагов протокола:

    1. Антон посылает Борису ключ К.

    2. С помощью К Борис расшифровывает Е K ( S , b ) и узнает значение b . Чтобы убедиться в честности Антона, Борис проверяет, содержит ли открытый текст расшифрованного сообщения сгенерированную им случайную битовую строку S.

    Если бы посланное Борису сообщение изначально не содержало случайной битовой строки, Антон мог бы впоследствии попытаться подобрать другой ключ, использование которого позволило бы ему получить вместо предсказанного значения b противоположное. Поскольку b принимает всего 2 возможных значения, сделать это будет очень просто. Однако при наличии в сообщении случайной битовой строки, сгенерированной Борисом, Антону придется подобрать ключ, который при расшифровании сообщения даст не только инвертированный бит b , но и S. Если Антон пользуется хорошей симметричной криптосистемой, то его шансы найти такой ключ будут пренебрежимо малы. Следовательно, Антон не сможет изменить предсказанное им значение после того, как сделает свой выбор, выполнив первые 2 шага протокола.

    Предсказание бита с помощью однонаправленной функции

    Антон может предсказать битовое значение, воспользовавшись свойствами. которыми обладают однонаправленные функции:

    Антон генерирует две случайные битовые строки S 1 и S 2;

    Антон присоединяет к сгенерированным S 1 и S 2 бит b , значение которою собирается предсказать;

    Антон вычисляет значение однонаправленной функции Н, используя в качестве аргумента битовую строку (S 1 , S 2 ,b), и вместе с S 1 отсылает Борису полученный результат.

    Теперь у Бориса имеется вся необходимая информация, которая не позволит Антону впоследствии изменить предсказанное значение b . Однако проверить правильность предсказания без участия Антона Борис не сможет. поскольку в этом случае ему придется вычислять H -1 (S 1 ,S 2 ,b).

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

    1. Антон посылает Борису исходную битовую строку (S 1 ,S 2 ,b).

    2. Борис вычисляет H(S 1 ,S 2 ,b), а затем сравнивает вычисленное значение и S 1 со значением и случайной битовой строкой, присланными ему Антоном на шаге 3. В случае совпадения b действительно представляет собой значение, предсказанное Антоном на шаге 2.

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

    Теперь, при предсказании бита с помощью однонаправленной функции. Борису уже не обязательно генерировать какие-либо случайные битовые строки, поскольку Антон использует для предсказания однонаправленную функцию и не сможет смошенничать, составив фальшивое сообщение (S 1 S ' 2 , b') такое, что H(S 1 S 2 , b') = H(S 1 ,S 2 ,b). Антон посылает Борису случайную битовую строку S 1 чтобы у Антона не было возможности путем подбора S 1 и S 2 добиться, чтобы изменилось b и чтобы при этом было сохранено значение H(S 1 ,S 2 ,b), которое Антон ранее отослал Борису. Храня S 1 в секрете от Бориса, Антон не дает Борису вычислить значения H(S 1 ,S 2 ,b) и H(S 1 ,S 2 ,b ' ), а затем определить b, сравнив эти значения с тем, что прислал ему Антон.

    Предсказание с помощью генератора псевдослучайных битовых последовательностей

    Для предсказания битового значения Антон может использовать генератор псевдослучайных битовых последовательностей:

    1. Борис генерирует случайную битовую строку S Б и посылает ее Антону.

    2. Антон вычисляет случайное начальное значение для генератора псевдослучайных битовых последовательностей. Затем для каждого бита присланном Борисом битовой строки S Б Антон отправляет Борису либо (а) выходное значение генератора псевдослучайных битовых последовательностей, если этот бит равен 1, либо (б) результат сложения выходного значения генератора псевдослучайных битовых последовательностей со значением, предсказанным Антоном, если соответствующий бит S Б равен 0.

    Когда Антон захочет раскрыть Борису свое предсказание, они должны буду: перейти к выполнению последних двух шагов протокола:

    1. Антон высылает Борису случайное начальное значение, вычисленное им для генератора псевдослучайных битовых последовательностей на шаге 2.

    2. Борис повторяет действия Антона, предпринятые им на шаге 2. чтобы убедиться в том, что Антон не смошенничал.

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

    16. Бросание монеты

    Бросание монеты

    Для разрешения неожиданно возникшего спорного вопроса Антон и Борис решают бросить монету. Однако и у того, и у другого при себе не оказалось ни одной. Тогда они решают "бросить" монету в уме: сначала Антон загадает, что выпадет — "орел" или "решка", а потом Борис подумает и объявит. какой стороной упала "брошенная" им монета. Спрашивается: могут ли Антон и Борис сделать это так, чтобы полностью быть уверенными в том. что никто из них не смошенничал?

    Могут, если воспользуются криптографическим протоколом, который заставит их действовать таким образом, что:

    Антону придется бросить монету прежде, чем Борис попытается предсказать, какой стороной она упадет;

    Антон не сможет изменить результат бросания монеты после того, как услышит, на какую сторону монеты сделал свою ставку Борис;

    Борис не узнает, что выпало — "орел" или "решка", до тех пор. пока не примет окончательное решение и не сообщит о нем Антону.

    Бросание монеты с помощью предсказания бита

    В этом случае криптографический протокол, которою должны придерживаться Антон и Борис при бросании монеты, выглядит следующим образом:

    1. Антон делает предсказание битового значения в соответствии с одной из схем, описанных в разделе "Предсказание бита",

    2. Борис пытается догадаться, какое значение предсказал Антон, и информирует о своей догадке Антона.

    3. Антон сообщает Борису предсказанное значение. Борис выигрывает, если его догадка была правильной.

    Бросание монеты с помощью однонаправленной функции

    Если Антон и Борис сумеют заранее договориться об использовании конкретной однонаправленной функции f(x), криптографический протокол бросания монеты будет выглядеть так:

    1. Антон выбирает случайное число х и вычисляет значение y = f(x).

    2. Антон посылает у Борису.

    3. Борис пытается догадаться, является ли х четным или нечетным числом. и сообщает о своей догадке Антону.

    4. Антон информирует Бориса о том, какое число х он выбрал.

    5. Борис проверяет, действительно ли f(x) = y, а также узнает, была ли верна его догадка.

    Здесь все зависит от свойств однонаправленной функции f. Если Антон вдруг сможет найти два числа х и х' такие, что х является четным, а х' — нечетным, и при этом y = f(x) = f(x'), то Борис всегда будет в проигрыше. Необходимо также, чтобы наименее значимый бит f(x) не зависел от х. Например, если f(x) будет четным в 90 процентах всех случаев, когда х является четным, Антон будет брать верх над Борисом почти всегда.

    Бросание монеты с помощью криптосистемы с открытым ключом

    В этом случае от алгоритмов шифрования (Е) и расшифрования (D) требуется, чтобы они были коммутативны, т. е.:

    D K1 (E K2 (E K1 (M) ) ) ) = Е К2 (М),

    где К 1 и К 2 — криптографические ключи, Р — открытый текст сообщения. Для симметричных криптоалгоритмов в общем случае это условие не выполняется, однако существуют алгоритмы шифрования с открытым ключом, для которых оно верно. Последние могут быть использованы в протоколе бросания монеты:

    1. Антон и Борис генерируют каждый для себя по паре ключей, состоящей из открытого и тайного ключа.

    2. Антон генерирует две случайные битовые строки Р 1 и Р 2, одна из которых означает, что при бросании монеты выпал "орел", а другая — что получилась "решка".

    3. При помощи своего открытого ключа Антон шифрует сначала Р 1 , а потом Р 2 , и отсылает оба полученных в результате шифрсообщения (E A (P 1 ) и E A (P 2 )) Борису.

    4. Борис выбирает одно из присланных ему Антоном шифрсообшений (для этой цели Борис может воспользоваться, например, известной считалкой "Эне, бене, раба, квинтер, минтер, жаба" или сходить за советом к астрологу). Борис шифрует выбранное шифрсообщение с помощью своего открытого ключа и отсылает результат (E Б (E A (P)) , где Р — это либо Р 1 , либо Р 2 ) Антону.

    5. Антон расшифровывает пришедшее от Бориса сообщение на своем тайном ключе и посылает то, что у него получилось ( D Б (E Б (P)) = E Б (P) обратно Борису.

    6. Борис расшифровывает это сообщение Антона ( D Б (E Б (P)) = P) и узнает, какой стороной упала монета. Затем Борис шлет Р Антону.

    7. Антон проверяет, действительно ли Р — это одна из тех двух случайных битовых строк, которые он сгенерирована на шаге 2.

    8. Чтобы окончательно убедиться в честности друг друга, Антон и Борис обмениваются парами ключей, которые они сгенерировали на шаге 1.

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

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

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

    Игра в покер

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

    Отличие между этими протоколами состоит в том, что теперь Антону требуется сгенерировать, зашифровать и отослать Борису не 2 битовых последовательности, а 52 — по числу карт в воображаемой колоде. Среди них Борис случайным образом выбирает 5 битовых последовательностей, шифрует их при помощи своего открытого ключа и посылает Антону. Антон расшифровывает полученные последовательности и шлет обратно Борису, который тоже расшифровывает их. Затем Борис выбирает еще 5 битовых последовательностей и посылает Антону, который опять их расшифровывает. В результате и у Антона, и у Бориса на руках окажется по 5 карт, которыми они и будут играть друг против друга. Если потребуется, дополнительные карты могут быть розданы обоим игрокам по той же схеме.

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

    17. Специальные криптографические протоколы

    Специальные криптографические протоколы

    Доказательство с нулевым разглашением конфиденциальной информации

    Антон: "Я знаю пароль для входа в компьютерную сеть Центробанка, рецепт приготовления "Байкала", а также почему Ельцин всегда выглядел так, будто только что проглотил живого лягушонка!"

    Борис: "Нет, не знаешь!"

    Антон: "Нет, знаю!"

    Борис: "Чем докажешь? "

    Антон: "Хорошо, я тебе все расскажу".

    Антон дол со шепчет что-то на ухо Борису.

    Борис: "Действительно интересно! Надо сообщить об этом газетчикам!"

    Антон: "Е-мое, как же я так лопухнулся..."

    К сожалению, в обычных условиях Антон может доказать Борису что знает какую-либо тайну, единственным способом — рассказав, и чем сое ют с. суть. Но тогда Борис автоматически узнает эту тайну и сможет поведан, о ней первому встречному. Есть ли у Антона возможность помешать Борису это сделать?

    Конечно есть. В первую очередь, Антону не следует доверять свою таит Борису. Но тогда как Антон сможет убедить Бориса, что действительно входит в число посвященных в эту тайну?

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

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

    Протокол доказательства с нулевым разглашением конфиденциальной информации

    Использование доказательства с нулевым разглашением конфиденциальной информации можно пояснить на конкретном примере. Предположим, что имеется пещера. Вход в пещеру находится в точке А, а в точке В пещера разветвляется на две половины — С и D. У пещеры есть секрет: только то;, км знает волшебные слова, может открыть дверь, расположенную между С и I).

    Антону волшебные слова известны, Борису — нет. Антон хочет доказан. Борису, что знает волшебные слова, но так, чтобы Борис по-прежнему оставался в неведении относительно этих слов. Тогда Антон может воспользоваться следующим протоколом:

    1. Борис стоит в точке А.

    2. По своему выбору Антон подходит к двери либо со стороны точки С, либо со стороны точки D.

    3. Борис перемещается в точку В.

    4. Борис приказывает Антону появиться или через левый проход к двери, или через правый.

    5. Антон подчиняется приказу Бориса, в случае необходимости используя волшебные слова, чтобы пройти через дверь.

    6. Шаги 1—5 повторяются n раз, где n — параметр протокола.

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

    Вряд ли. Владимир никогда не сможет удостовериться в том, что Антон каждый раз предварительно не сообщал Борису о своих намерениях, чтобы потом Борис приказывал ему выходить именно с той стороны двери, с какой Антон зашел. Или что из сделанной видеозаписи не вырезаны все неудачные эксперименты, в ходе которых Антон не смог выполнить распоряжения Бориса.

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

    Протокол доказательства с нулевым разглашением срабатывает в силу того. что не зная волшебных слов, Антон может выходить только с той стороны, с которой зашел. Следовательно лишь в 50% всех случаев Антон сумеет обмануть Бориса, догадавшись, с какой именно стороны тот попросит его выйти. Если количество экспериментов равно n , то Антон успешно пройдет все испытания только в одном случае из 2". На практике можно ограничиться n =16. Если Антон правильно исполнит приказ Бориса во всех 16-ти случаях. значит он и правда знает секрет волшебных слов.

    Пример с пещерой является наглядным, но имеет существенный изъян. Борису значительно проще проследить, как в точке В Антон поворачивает и одну сторону, а потом появляется с противоположной стороны. Протокол доказательства с нулевым разглашением здесь попросту не нужен.

    Поэтому предположим, что Антону известны не какие-то там волшебные слова, типа "Сезам, откройся". Нет, Антон владеет более интересной информацией — он первым сумел найти решение этой трудно решаемой задачи. Чтобы доказать данный факт Борису, Антону совсем не обязательно всем и каждому демонстрировать свое решение. Ему достаточно применить следующий протокол доказательства с нулевым разглашением конфиденциальной информации:

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

    2. Антон задействует протокол предсказания бита для найденного на шаге 1 решения, чтобы впоследствии, если у Бориса возникнет необходимость ознакомиться с этим решением, Борис мог бы достоверно убедиться, что предъявленное Антоном решение действительно было получено им па шаге 1.

    3. Антон показывает новую трудно решаемую задачу Борису.

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

    5. Антон выполняет просьбу Бориса.

    6. Антон и Борис повторяют шаги 1—6 n раз, где n — параметр протокола.

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

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

    Параллельные доказательства с нулевым разглашением конфиденциальной информации

    Обычный протокол доказательства с нулевым разглашением конфиденциальной информации требует, чтобы Антон и Борис последовательно повторили его шаги n раз. Можно попробовать выполнять действия, предусмотренные этим протоколом, одновременно:

    1. Антон использует имеющуюся у него информацию и n сгенерированных случайных чисел, чтобы свести трудно решаемую задачу к n другим трудно решаемым задачам, изоморфным исходной задаче. Затем Антон решает эти n новых задач.

    2. Антон задействует протокол предсказания бита для найденных на шаге 1 n решений, чтобы впоследствии, если у Бориса возникнет необходимость ознакомиться с этими решениями, Борис мог бы достоверно убедиться, что предъявленные Антоном решения действительно были получены им на шаге 1.

    3. Антон показывает n новых трудно решаемых задач Борису.

    4. Для каждой из n новых трудно решаемых задач Борис просит Антона или доказать, что она изоморфна исходной трудно решаемой задаче или предоставить решение этой задачи, которое Антон должен был найти на шаге 1, и доказать, что оно действительно является ее решением.

    5. Антон выполняет все просьбы Бориса.

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

    Неинтерактивные протоколы доказательства с нулевым разглашением конфиденциальной информации

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

    1. Антон использует имеющуюся у него информацию и n сгенерированных случайных чисел, чтобы свести трудно решаемую задачу к n другим трудно решаемым задачам, изоморфным исходной задаче. Затем Антон решает эти n новых задач.

    2. Антон задействует протокол предсказания бита для найденных на шаге 1 n решений.

    3. Антон подает n обязательств, полученных им на шаге 2, на вход однонаправленной функции.

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

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

    6. Борис, Владимир или любое другое заинтересованное лицо могут проверить правильность выполнения Антоном шагов 1—5.

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

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

    В отличие от интерактивного протокола, здесь требуется большее количество итераций. Поскольку генерация случайных чисел возложена на Ангина. подбором этих чисел он может попытаться добиться, чтобы на выходе одно направленной функции получилась битовая последовательность нужно: и ему вида. Ведь даже если Антон не знает решения исходной трудно решаемой задачи, он всегда в состоянии выполнить требования пли пункта (а). или пункта (б) шага 4 протокола. Тогда Антон может попытается догадаться. на какой из этих пунктов падет выбор, и выполнить шаги 1—3 протокола. А если его догадка неверна, он повторит все сначала. Именно поэтому в неинтерактивных протоколах необходим больший запас прочности, чем в интерактивных. Рекомендуется выбирать n = 64 или даже n = 128.

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

    Удостоверение личности с нулевым разглашением конфиденциальной информации

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

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

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

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

    В-третьих, Антон может попросить Зиновия одолжить на время его цифровое удостоверение личности. Мол, Антону надо съездить в Соединенные Штаты, а поскольку он — бывший сотрудник советской разведки, работавший против США, американское правительство наотрез отказывает ему во въездной визе. Зиновий с радостью соглашается: после отъезда Антона он сможет пойти практически на любое преступление, поскольку обзавелся "железным" алиби. С другой стороны, ничто не мешает совершить преступление Антону. Кто поверит .лепету Зиновия о том, что он одолжил свое цифровое удостоверение личности какому-то другому человеку?

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

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

    18. Неосознанная передача информации

    Предположим, что Борис безуспешно пытается разложить на простые множители 700-битовое число. При этом ему известно, что данное число является произведением семи 100-битовых множителей. На помощь Борису приходит Антон, который случайно знает один из множителей. Антон Предлагает Борису продать этот множитель за 1000 руб. — по 10 руб. за бит. Однако у Бориса имеются в наличии лишь 500 руб. Тогда Антон выражает желание отдать Борису 50 бит за половину цены. Борис сомневается, поскольку даже купив эти 50 бит, он все равно не сможет убедиться, что они действительно являются частью искомого множителя, пока не узнает все его биты целиком.

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

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

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

    1. Антон генерирует две пары ключей, состоящих из открытого и тайного ключа, и отсылает оба открытых ключа Борису.

    2. Борис генерирует ключ для симметричного алгоритма (например, для DES-алгоритма), шифрует этот ключ при помощи одного из открытых ключей, присланных Антоном, и отсылает обратно Антону.

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

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

    5. Борис расшифровывает оба присланных Антоном сообщения на ключе, сгенерированном на шаге 2, и обретает два открытых текста сообщения, один из которых представляет собой настоящую тарабарщину, а второй — содержательное послание.

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

    6. После того как отпала надобность хранить в секрете второе сообщение (к примеру, у Бориса нашлись еще 500 руб., чтобы выкупить у Антона оставшуюся половину множителя), Антон предоставляет Борису свои тайные ключи, чтобы тот мог убедиться в честности Антона.

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

    Конечно, протокол неосознанной передачи информации отнюдь не гарантирует, что Антон не пошлет Борису какие-нибудь бессмысленные послания, типа "Борис — лох" или "Мяу-мяу", вместо битов одного из семи простых множителей, на которые раскладывается исходное 700-битовое чист. Или что Борис вообще захочет с ними ознакомиться и примет участие и выполнении шагов этого протокола.

    На практике протокол неосознанной передачи информации используется довольно редко. Обычно он служит в качестве одного из строительных блоков для построения других протоколов.

    19. Анонимные совместные вычисления

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

    Вычисление средней зарплаты

    Допустим, что начальник отдела приказал своим подчиненным подсчитан, среднюю зарплату в отделе. Начальник осведомлен о зарплате любого сотрудника, но слишком занят более важными делами, чтобы отвлекаться па подобные пустяки. Каждый сотрудник прекрасно знает собственную зарплату, но категорически не желает сообщать о ней сослуживцам. Чтобы сотрудники отдела (Антон, Борис, Владимир и Георгий) смогли просуммировать свои оклады, сохранив их в тайне от других, им следует воспользоваться следующим протоколом:

    1. Антон генерирует случайное число, прибавляет его к своей зарплате, шифрует полученную сумму при помощи открытого ключа Бориса и затем передает то, что у него получилось, Борису.

    2. На своем тайном ключе Борис расшифровывает результат, вычисленный Антоном, прибавляет к нему свою зарплату, шифрует полученную сумму при помощи открытого ключа Владимира и затем передает то, что у него получилось, Владимиру.

    3. На своем тайном ключе Владимир расшифровывает результат, вычисленный Борисом, прибавляет к нему свою зарплату, шифрует полученную сумму при помощи открытого ключа Георгия и затем передает то. что у него получилось, Георгию.

    4. На своем тайном ключе Георгий расшифровывает результат, вычисленный Владимиром, прибавляет к нему свою зарплату, шифрует подученную сумму при помощи открытого ключа Антона и затем передает то. что у него получилось, Антону.

    5. На своем тайном ключе Антон расшифровывает результат, вычисленный Георгием, вычитает из него случайное число, сгенерированное на шаге 1, делит на количество сотрудников отдела и получает искомую среднюю зарплату в отделе.

    Точность вычисления средней зарплаты зависит от честности каждого сотрудника. Если хотя бы один из участников протокола соврет относительно своего жалованья, итоговое значение будет неверным. Особенно большими потенциальными возможностями для злоупотреблений обладает Антон. На шаге 5 он может вычесть любое число, какое только придет ему в голову, и никто не заметит подделки. Поэтому необходимо обязать Антона воспользоваться какой-либо из схем предсказания бита. Однако, если от Антона потребуется раскрыть перед всеми случайное число, сгенерированное им на шаге 1, зарплату Антона узнает Борис. Это значит, что начальнику отдела все же придется отвлечься и самому выполнить вычисления, предусмотренные шагом 2 протокола. Ведь он и так знает зарплату Антона.

    Как найти себе подобного

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

    Фирма "Совместные анонимные вычисления" готова оказать необходимую помощь Антону, Борису и им подобным в подборе таких же чудаков, как они сами. Сотрудники фирмы составили всеобъемлющий список всех человеческих чудачеств, каждое из которых снабжено уникальным идентификатором из семи цифр. Обратившись в фирму, Антон и Борис принимают участие в выполнении шагов некоторого протокола, после чего узнают. испытывают ли они склонность к одним и тем же чудачествам. При положительном ответе они смогут связаться друг с другом. Если ответ будет отрицательным, об их необычных пристрастиях не узнает никто, включая сотрудников "Совместных анонимных вычислений".

    Протокол выглядит так:

    1. Используя однонаправленную функцию, Антон преобразует 7-значный идентификатор своего чудачества в другое 7-значное число.

    2. Трактуя полученное на шаге 1 число как телефонный номер, Борис набирает этот номер и оставляет его абоненту свои координаты. Если на вызов никто не отвечает или такого телефонного номера не существует. Антон применяет к нему однонаправленную функцию и получает новое семизначное число. Так продолжается до тех пор, пока кто-нибудь не ответит на телефонный звонок Антона.

    3. Антон сообщает в фирму, сколько раз Борис должен применять однонаправленную функцию, чтобы получить искомый телефонный номер.

    4. С помощью однонаправленной функции Борис преобразует 7-значный идентификатор своего чудачества столько раз, сколько это делал Антон. и получает 7-значное число, которое трактует как телефонный номер. Борис звонит по полученному им номеру и спрашивает, нет ли для него какой-либо информации.

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

    20. Депонирование ключей

     

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

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

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

    1. Антон генерирует пару ключей, состоящую из открытого и тайного ключа, и делит их на n частей.

    2. Антон посылает каждую часть тайного ключа и соответствующую ей часть открытого ключа отдельному доверенному лицу.

    3. Каждое доверенное лицо проверяет полученные от Антона части открытого и тайного ключа и помещает их на хранение в надежное место.

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

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

    Депонирование ключей и политика

    После заявления американского правительства о планах внедрения Стандарта шифрования данных с депонированием ключа вокруг крошечной кремниевой пластинки по имени Clipper разразился политический конфликт такой силы, что в печати ее вскоре окрестили "Боснией телекоммуникаций". В непримиримой схватке лицом к лицу сошлись защитники национальном безопасности США и поборники гражданских свобод вместе с поставщиками информационных технологий.

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

    Кроме того, в ходе "холодной" войны АНБ неуклонно повышало свой шпионский потенциал. Соответственно росло его влияние на политическую жизнь страны. К началу 90-х годов АНБ превратилось в монстра, внушавшего американским политикам и законодателям благоговейный страх. Для них мнение руководства АНБ было намного весомее возражений его оппонентов. А директор АНБ и его помощники неустанно твердили о том. что недоверие к Стандарту шифрования данных с депонированием ключей вызвано, главным образом, его незнанием. И в этом была доля правды, поскольку значительная часть проекта с самого начала хранилась в строгой тайне, включая сам алгоритм под условным названием Skipjack (Попрыгунчик), используемый для шифрования сообщений.

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

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

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

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

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

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

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

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

     

    Глава 8. Надежность криптосистем

    Глава 8. Надежность криптосистем

    1. Как выбрать хороший криптографический алгоритм

     

    Как выбрать хороший криптографический алгоритм

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

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

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

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

    При выборе хорошего криптографического алгоритма можно:

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

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

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

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

    Лучше исходить из предположения, что АНБ, ФАПСИ и иже с ними могут , прочесть любое сообщение, которое они пожелают прочесть. Однако эти ведомства не в состоянии читать все сообщения, с содержанием которых хотят ознакомиться. Главной причиной является ограниченность в средствах, ассигнуемых правительством на криптоанализ. Другое разумное предположение состоит в том, что компетентным органам гораздо легче получить доступ к зашифрованной информации с помощью грубой физической силы, чем путем изящных, но очень трудоемких математических выкладок, приводящих к вскрытию шифра.

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

    Криптографические алгоритмы, предназначенные для экспорта из США

    В настоящее время у пользователей персональных компьютеров имеется возможность применять алгоритмы шифрования, встроенные в различные программные продукты. Достаточно приобрести, например, текстовый редактор Word, редактор электронных таблиц Excel или операционные системы Windows NT и NetWare. Кроме встроенных алгоритмов шифрования, все эти программные продукты имеют еще одно общее свойство: они изготовлены в Соединенных Штатах. Прежде чем начать торговать ими за рубежом, американские производители в обязательном порядке должны получить разрешение у своего правительства на экспорт данных продуктов за пределы США.

    Многие придерживаются сейчас такого мнения: ни один криптографический алгоритм, разрешенный к экспорту из США, не является достаточно стойким, чтобы его не могли вскрыть криптоаналитики из АНБ. Считается, что американские компании, желающие продавать за рубежом свою продукцию, которая позволяет шифровать данные, по настоянию АНБ переделывают используемые криптографические алгоритмы так, что:

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

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

     

    2. Симметричный или асимметричный криптографический алгоритм?

    Симметричный или асимметричный криптографический алгоритм?

    Какой алгоритм лучше — симметричный или асимметричный? Вопрос не вполне корректен, поскольку предусматривает использование одинаковых критериев при сравнении криптосистем с секретным и открытым ключами. А таких критериев просто не существует.

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

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

    3. Шифрование в каналах связи компьютерной сети

    Шифрование в каналах связи компьютерной сети

    Одной из отличительных характеристик любой компьютерной сети является ее деление на так называемые уровни, каждый из которых отвечает за соблюдение определенных условий и выполнение функций, необходимых для общения между компьютерами, связанными в сеть. Это деление на уровни имеет фундаментальное значение для создания стандартных компьютерных сетей. Поэтому в 1984 г. несколько международных организаций и коми готов объединили свои усилия и выработали примерную модель компьютерной сети, известную под названием OSI (Open . Systems Interconnection — Модель открытых сетевых соединений).

    Согласно модели OSI коммуникационные функции разнесены по уровням. Функции каждого уровня независимы от функций ниже- и вышележащих уровней. Каждый уровень может непосредственно общаться только с двумя соседними. Модель OSI определяет 7 уровней: верхние 3 служат для связи с конечным пользователем, а нижние 4 ориентированы на выполнение коммуникационных функций в реальном масштабе времени.

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

    Канальное шифрование

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

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

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

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

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

    Сквозное шифрование

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

    Теперь сообщение не требуется постоянно расшифровывать и зашифровывать при прохождении через каждый промежуточный узел сети связи. Сообщение остается зашифрованным на всем пути от отправителя к получателю.

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

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

    Комбинированное шифрование

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

    При комбинированном шифровании работа с ключами ведется так: сетевые администраторы отвечают за ключи, используемые при канальном шифровании, а о ключах, применяемых при сквозном шифровании, заботятся сами пользователи.

    4. Шифрование файлов

     

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

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

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

    Есть и другие особенности шифрования файлов, о которых необходимо помнить вне зависимости от применяемого криптографического алгоритма:

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

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

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

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

    5. Аппаратное и программное шифрование

    Аппаратное и программное шифрование

    Аппаратное шифрование

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

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

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

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

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

    Программное шифрование

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

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

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

    6. Сжатие и шифрование

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

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

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

    7. Как спрятать один шифртекст в другом

    Антон и Борис несколько месяцев обменивались шифрованными сообщениями. Контрразведка перехватила все эти сообщения, но так и не смогла прочесть ни единого слова. Контрразведчикам надоело коллекционировать переписку Антона и Бориса, не зная ее содержания, и они решили арестовать подозрительную парочку. Первый же допрос начался словами: "Где ключи к шифру?" "К какому такому шифру?!" — в один голос воскликнули Антон и Борис, но тут же осеклись и побледнели, заметив на столе у следователя зловещего вида клещи, покрытые пятнами то ли ржавчины, то ли крови.

    Антон и Борис смогли бы выкрутиться из создавшегося положения, если бы шифровали каждое свое сообщение так, чтобы оно допускало два различных расшифрования в зависимости от используемого ключа. Свое настоящее секретное сообщение Борису Антон мог бы зашифровать на одном ключе, а вполне невинный открытый текст — на другом. Теперь, если от Антона потребуют ключ к шифру, он отдаст подставной ключ, который позволит прочесть невинное сообщение, а другой ключ сохранит в тайне.

    Самый простой способ сделать это потребует использования одноразового блокнота. Пусть Р — секретный открытый текст, D — невинный открытый текст, С — шифрованный текст, К — настоящий ключ, а К — подставной ключ. Антон шифрует Р:

    Р Å   К = С

    Поскольку у Бориса имеется копия ключа К, он может без проблем расшифровать сообщение Антона:

    С Å  К = Р

    Если контрразведчики попытаются заставить Антона и Бориса выдать используемый ими ключ, то вместо К они могут сообщить в контрразведку:

    К '= С Å  D

    В результате контрразведчики смогут прочитать невинный открытый текст:

    С Å  К ' = D

    Так как Антон и Борис пользуются одноразовым блокнотом, то К является полностью случайным и доказать, что К является подставным ключом, практически невозможно (не прибегая к пыткам).

    Антон мог бы зашифровать Р не с помощью одноразового блокнота, а пользуясь любым из своих самых любимых криптографических алгоритмов и ключом К. Сложив С с фрагментом какого-либо общеизвестного произведения (например, с отрывком из второй главы "Идиота") по модулю 2, Антон получит К'. Теперь если к Антону пристанут злые "дяденьки" из контрразведки, он предъявит им С вместе с К' и скажет, что К' — это одноразовый блокнот для С и что он просто захотел попрактиковаться н криптографии, зашифровав для этой цели отрывок из первой попавшейся книги. И пока контрразведчики не получат в свое распоряжение ключ К, доказать, что Антон занимался чем-то противозаконным, они не смогут.

    8. Почему криптосистемы ненадежны

     

     

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

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

    Реализация

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

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

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

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

    Учет реальных потребностей пользователей

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

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

    Законодательные ограничения

    В Своде законов США имеется пункт 2778, который называется "Контроль за экспортом и импортом вооружений". Именно этот пункт является юридической основой для ряда инструкций, именуемых "Правилами контроля за перемещением оружия в мире" (International Traffic in Arms Regulations, сокращенно— 1TAR). Раздел 120.1 ITAR впрямую причисляет к военному снаряжению, за перемещением которого Соединенные Штаты осу шести, (я ют самый строгий контроль, программное обеспечение, предназначенное для целей эффективного шифрования данных. А это означает, что американским компаниям, желающим экспортировать программы эффективной) шифрования, необходимо зарегистрироваться в Государственном департаменте США в качестве торговца военным имуществом и получить там лицензию на экспорт.

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

    Чтобы повысить свою конкурентоспособность на мировом рынке, производители средств криптографической защиты в США вынуждены искать лазейки в законодательстве. Например, известная американская фирма RSA Data Security попыталась обойти закон путем финансирования усилии китайских ученых, которых правительство Китая официально уполномочило разработать новые программные средства шифрования данных. Предполагалось, что эти средства, созданные на основе алгоритмов, переданных американской фирмой китайцам, смогут обеспечить более надежную криптографическую защиту информации, чем те, которые Китай в состоянии импортировать из США в соответствии с действующим американским законодательством. Это, несомненно, радостное событие для Китая, однако следует отметить, что ради удовлетворения потребностей рядового пользователя за рубежом, не обладающего возможностями и ресурсами, сравнимыми с теми, которые имеются в распоряжении китайского правительства, американские производители программ эффективного шифрования вряд ли будут искать какие-либо пути, ведущие в обход американского законодательства.

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

    Слишком малая длина ключа

    Слишком малая длина ключа — одна из самых очевидных причин ненадежности криптографических систем. Причем недостаточную длину ключа могут иметь даже те криптосистемы, в которых применяются самые надежные алгоритмы шифрования, поскольку:

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

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

    В начале 1998 г. из-за слишком малой длины ключа (56 бит) фактически "приказал долго жить" DES-алгоритм, долгое время являвшийся официальным стандартом шифрования данных в США. Сейчас американским Национальным институтом стандартов объявлен конкурс на новый стандарт шифрования данных Advanced Encryption Standard (AES). Согласно условиям этого конкурса, кандидаты на роль AES должны представлять собой симметричные алгоритмы шифрования с ключом длиной более 128 бит.

    Потайные ходы

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

    Классический пример потайного хода, который хакерами единодушно признается самым талантливым "хаком" по взлому системы парольной зашиты всех времен и народов, привел Кен Томпсон (один из авторов компилятора для языка программирования С) в своей лекции по случаю вручения ему престижной премии Тьюринга. Дело в том, что в операционной системе UNIX пользовательские пароли хранятся в зашифрованном виде в специальной базе данных. В компилятор языка С Томпсоном был предусмотрительно вставлен код, распознававший, когда на вход компилятора поступала программа, содержавшая приглашение пользователю зарегистрироваться (login). Тогда компилятор добавлял в эту программу код, который распознавал пароль, выбранный самим Томпсоном. Таким образом, Томпсон получал возможность успешно проходить процедуру регистрации и идентификации, не зная легальных паролей, хранимых в зашифрованной базе данных.

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

    Шифрование вокруг нас

    Итак, для того чтобы создать надежную криптографическую систему, необходимо обладать достаточными познаниями в области современной криптографии, аккуратно и безошибочно воплотить эти познания в виде работающей программы с дружественным интерфейсом, убрав из нее все потайные ходы по окончании отладки. Далее требуется передать эту систем) в ФАПСИ, чтобы получить там лицензию, дающую право на ее легальное распространение и использование на территории России. Однако несмотря на богатый научный потенциал российских криптографов и высокую квалификацию отечественных программистов, единственным лицензированным ФАПСИ шифром в настоящее время является ГОСТ 28147-89, разработанный еще в недрах КГБ. Все остальные криптосистемы, предлагаемые зарубежными и российскими фирмами в виде законченных продуктов или библиотек, включая как устоявшие зарубежные стандарты, так и самостоятельные оригинальные разработки, являются незаконными.

    Поскольку наше государство оказывается не в состоянии обеспечить всех своих граждан, остро нуждающихся в надежной информационной защите, сертифицированными криптографическими средствами, виртуальная среда обитания российского компьютерного пользователя буквально нашпигована шифровальными программами (сотни таких программ можно найти в Internet, например, по адресу ftp.elf.stuba.sk/pub/security). Их распространению способствует нечеткость президентского Указа № 334, в котором не оговорено, что же конкретно понимается под термином "шифрование" данных. Если предположить, что шифрование — это такая нестандартная кодировка данных, которая серьезно затрудняет возможность их перекодировки в стандартное представление без соответствующего аппаратного или программного обеспечения, то в категорию шифрсистем тут же попадут архиваторы (pkzip, arj и r а r ), известные текстовые редакторы (Word и Lexicon), a также средства редактирования графических изображений (Paint и CorelDraw), поскольку все они используют свою собственную нестандартную кодировку, не позволяющую без соответствующих программ просматривать закодированные с их помощью данные.

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

    Учитывая неразбериху, царящую в российском законодательстве, неудивительно, что российские пользователи для защиты своей конфиденциально!! информации активно применяют архиваторы с парольной защитой, Norton Diskreet, Word, Excel, многочисленные условно-бесплатные программы (PGP, CodeDvag, SecurPC, Secur-all 32, BestCrypt NP, Kremlin и др.). криптографические системы отечественных фирм ("Лан Крипто". "Анкорт" и др.), собственные кустарные разработки, а также программы неизвестного происхождения. Большинство из них крайне слабы, и программы их взлома за вполне умеренную плату можно получить, например, в Internet по адресу www.accessdata.com. Исключение в списке заведомо ненадежных криптографических систем, потенциально доступных пользователю в России, составляют лишь несколько оригинальных разработок российских фирм. Однако ввиду воздвигнутой нашим государством информационной блокады вокруг криптографии и всего, что с ней связано, можно только строить предположения, какие именно.

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

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

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

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

    Поэтому время от времени вполне вероятно появление надежных криптосистем, хотя бы на ограниченный период времени.

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