учебники, программирование, основы, введение в,

 

Криптографические средства

Рассмотренные до сих пор средства применялись для защиты сетей и машин, располагающихся в этих сетях. Однако, когда данные выходят за границы сети, они оказываются вне защиты описанных средств и потенциально могут быть перехвачены злоумышленниками. Большинство современных Интернет-приложений передают свои данные в открытом виде (открытым текстом). Это означает, что при просмотре пакетов любой желающий может видеть данные. Когда данные пересекают Интернет, они проходят через различные системы, большинство из которых находятся вне вашего непосредственного контроля и поэтому должны считаться недружественными. Маршрутизаторы и коммутаторы поставщиков Интернет-услуг могут применяться как внутри, так и вне вашей сети, а почтовые и web-серверы стандартным образом обрабатывают ваши приватные данные.
Не существует способа избежать отправки данных за пределы вашей сети. Основное преимущество глобальности Интернета - возможность совместного использования информации со всеми бизнес-партнерами и заказчиками из внешнего мира. Невозможно вернуться во времена полностью собственных сетей. Как же защитить важные данные, когда они покидают уютные и безопасные пределы домашней сети? Чтобы обезопасить свои данные в Интернете, большинство организаций полагаются на криптографию, и вы также можете применять это важное средство для поддержания целостности и конфиденциальности.
Вам может понадобиться защитить данные от несанкционированного просмотра и в вашей сети, поскольку не всякая информация должна быть доступна для всеобщего обозрения даже в пределах организации. Наконец, шифрование важных данных может служить последней линией обороны против хакеров. Даже если им удастся проникнуть в сеть и подчинить себе сервер, им придется взломать шифр, чтобы добраться до ваших данных.
Имеется множество различных криптографических протоколов. Обратившись к эталонной модели ВОС (табл. 9.1), можно видеть, что существуют криптографические средства, действующие на нескольких различных уровнях модели. Как вы, вероятно, догадались, доступно много прекрасных криптографических средств с открытыми исходными текстами почти для любых приложений, от шифрования отдельных файлов до защиты всех ваших исходящих Интернет-соединений. На самом деле, доступность высококачественного криптографического программного обеспечения коренится в движении за открытость исходных текстов.


Таблица 9.1. Модель ВОС и криптография

Номер уровня модели ВОС

Название уровня

Примеры протоколов

Уровень 7

Прикладной уровень

PGP, GnuPG

Уровень 6

Уровень представления

Уровень 5

Уровень сеанса

SSL, SSH

Уровень 4

Транспортный уровень

Уровень 3

Сетевой уровень

IPsec

Уровень 2

Канальный уровень

Уровень 1

Физический уровень

Виды криптографии
На сегодня имеется два основных метода шифрования. Первый метод, именуемый симметричным или шифрованием с разделяемым секретом, применялся со времен древнего Египта. В нем секретный ключ, называемый разделяемым секретом, используется для превращения данных в непонятную тарабарщину. Второй стороне разделяемый секрет (ключ) требуется для расшифрования данных в соответствии с криптографическим алгоритмом. Если изменить ключ, изменятся и результаты шифрования. Это называется симметричной криптографией, поскольку один и тот же ключ применяется обеими сторонами как для зашифрования, так и для расшифрования данных.
Проблема с этим методом состоит в том, что необходимо безопасным образом передать секретный ключ предполагаемому получателю. Если враг перехватит ключ, он сможет прочитать сообщение. Изобретались всевозможные системы с целью обойти это фундаментальное слабое место, но факт остается фактом: требуется каким-то образом передавать секретный ключ предполагаемому получателю, прежде чем можно будет начинать защищенное взаимодействие.
Революция в криптографии началась, когда Витфилд Диффи, Мартин Хеллман и Ральф Меркл изобрели криптографию с открытым ключом. (Некоторые утверждают, что в действительности британский гражданский служащий Джеймс Эллис сделал это раньше и держал в секрете, но Диффи, Хеллману и Мерклу принадлежит первая публикация, датируемая 1976-м годом.) Они пытались решить старую проблему обмена ключами. Диффи интересовало, как два человека, желающие осуществить финансовую транзакцию через электронную сеть, могут сделать это безопасным образом. Он думал о далеком будущем, так как Интернет тогда был в зачаточном состоянии, а электронной коммерции еще не существовало. Если правительственные организации имеют проблемы при обмене ключами, то как может справиться с этим рядовой гражданин? Он хотел построить систему, с помощью которой две стороны могли бы легко поддерживать защищенные коммуникации и безопасные транзакции, не обмениваясь каждый раз ключами. Он знал, что если он сможет решить проблему обмена ключами, то это станет прорывом в криптографии.
Диффи сотрудничал с Мартином Хеллманом и Ральфом Мерклом. Им потребовалось несколько лет, но в конце концов они создали систему, называемую шифрованием с открытым ключом (PKE - Public Key Encryption), известную также как асимметричная криптография.
В асимметричной криптографии применяется шифрование, при котором некая величина расщепляется на два ключа меньшего размера. Один из них делается открытым, а другой сохраняется в секрете. Вы шифруете сообщение с помощью открытого ключа получателя. Получатель может затем расшифровать его с помощью своего секретного ключа. И он может сделать то же самое для вас, шифруя сообщение с помощью вашего открытого ключа, чтобы вы могли расшифровать его с помощью своего секретного ключа. Суть в том, что не требуется знать чей-то секретный ключ, чтобы послать защищенное сообщение. Применяется открытый ключ, который не нужно держать в секрете (на самом деле, его можно публиковать наравне с номером телефона). Используя открытый ключ получателя, вы знаете, что только этот человек может расшифровать сообщение при помощи своего секретного ключа. Данная система позволяет двум сущностям безопасно общаться без какого-либо предварительного обмена ключами.
Асимметричная криптография обычно реализуется с помощью односторонних функций. В математических терминах это функции, которые очень легко вычислять в одном направлении, но очень сложно - в обратном. Именно это позволяет публиковать открытые ключи, которые являются производными от секретных ключей. Очень трудно выполнить обратное преобразование и определить секретный ключ. На сегодняшний день наиболее употребительной односторонней функцией является перемножение больших простых чисел. Очень легко перемножить два больших простых числа и получить произведение, однако определение того, каким из множества возможных способов это произведение раскладывается на два множителя, является одной из трудных математических задач. Если бы кто-то изобрел метод быстрого определения множителей подобных больших чисел, это поставило бы крест на многих современных методах шифрования с открытым ключом. К счастью, имеются и другие трудновычислимые функции, обратные к легковычислимым. Например, пока неизвестны быстрые алгоритмы для логарифмирования в конечном поле или в группе точек эллиптической кривой над конечным полем, тогда как возведение в степень в обоих этих случаях выполнить очень легко.
Вскоре после публикации Диффи, Хеллмана и Меркла другая группа из трех человек разработала практическое приложение теории. Эта система для шифрования с открытым ключом была названа RSA по именам авторов: Ronald Rivest (Рональд Ривест), Adi Shamir (Ади Шамир) и Leonard Adleman (Леонард Адлеман). Они образовали компанию и начали лицензировать свою систему. Дело шло туго, и их компания почти обанкротилась, пока они не договорились с малоизвестной тогда компанией Netscape об использовании возможностей растущего поля Интернет-коммерции. Остальное уже история, и RSA на сегодняшний день - самый употребительный алгоритм шифрования с открытым ключом. Диффи и Хеллман со временем выпустили собственное практическое приложение, но оно применяется только для обмена ключами, в то время как RSA - для аутентификации и обеспечения неотказуемости.
Шифрование с открытым ключом присутствует теперь на каждом Web-сервере, предлагающем безопасные покупки. Ваша транзакция шифруется без передачи или получения секретного ключа, и все это происходит в фоновом режиме. Как пользователи, мы знаем, что в навигаторе появился маленький символ замка SSL, и мы чувствуем себя в безопасности. Нетрудно представить себе судьбу Интернет-коммерции, если бы при каждой покупке в Сети приходилось думать о секретном ключе, шифровать сообщение, а затем как-то передавать этот ключ другой стороне. Очевидно, что без криптографии с открытым ключом электронная коммерция в ее современном виде не могла бы существовать.
Имеется много различных алгоритмов шифрования, протоколов и приложений на основе этих двух основных видов криптографии. В следующих разделах вы ознакомитесь с некоторыми из них.
Криптографические алгоритмы
В наше время сила криптографии обычно характеризуется размером ключа. Независимо от силы алгоритма, зашифрованные данные могут подвергаться атакам методом грубой силы, пробующим всевозможные комбинации ключей. Со временем шифр может быть взломан. Для большинства современных шифров с подходящей длиной ключа время их взлома методом грубой силы измеряется тысячелетиями. Однако неизвестный дефект алгоритма, достижения в компьютерной технологии или математических методах могут резко сократить это время.
Обычно считается, что длина ключа должна быть достаточной для сохранения защиты данных на разумный период времени. Если речь идет о короткоживущих данных, таких как коммуникации на поле боя или ежедневная биржевая информация, то вполне достаточно шифра, обеспечивающего защиту в течение недель или месяцев. Однако некоторые вещи, такие как номер кредитной карты или секреты национальной безопасности, необходимо сохранять защищенными гораздо дольше, по сути - навсегда. Поэтому применение слабых алгоритмов шифрования или коротких ключей для некоторых данных приемлемо, только если полезность информации для посторонних теряется за короткое время.
Стандарт шифрования данных DES (Data Encryption Standard)
DES является исходным стандартом, который правительство США рекомендовало для правительственных и коммерческих применений. Первоначально в 1970-е годы он считался практически невскрываемым, но с ростом вычислительной мощности и снижением стоимости вычислений его 56-битный ключ функционально устарел для высокосекретной информации. Тем не менее, он все еще применяется во многих коммерческих продуктах и считается приемлемым для приложений с умеренным уровнем безопасности. Он используется также в продуктах со слабыми процессорами, таких как смарт-карты и бытовые приборы, неспособных обрабатывать более длинные ключи.
Тройной DES
Тройной алгоритм DES (TripleDES или 3DES, как его часто записывают) - более новая, усовершенствованная версия DES, а его название отражает его функциональность. Он трижды применяет DES к данным, выполняя зашифрование, расшифрование и затем снова зашифрование. В действительности он не обеспечивает трехкратного усиления шифра (так как в нем задействованы всего два ключа - первый применяется дважды для зашифрования, а второй служит для расшифрования результатов первого зашифрования), но он, тем не менее, предоставляет эффективную длину ключа в 112 бит, что более чем достаточно почти для всех пользователей.
RC4, RC5 и RC6
Это алгоритм шифрования, разработанный Рональдом Ривестом, одним из создателей RSA, первого коммерческого приложения криптографии с открытым ключом. Со временем были сделаны усовершенствования, чтобы усилить его и исправить некоторые недочеты. Текущая версия RC6 допускает длину ключа до 2040 бит и переменный размер блока до 128 бит.
AES
Когда правительство США осознало, что DES со временем достигнет конца своей полезной жизни, оно стало искать ему замену. Национальный институт стандартов и технологий США - правительственный орган стандартизации - объявил открытый конкурс на новый алгоритм, призванный стать новым правительственным стандартом. Претендентов было много, включая RC6, Blowfish известного криптографа Брюса Шнайера и другие достойные алгоритмы. Победителем стал AES, базирующийся на алгоритме Rijndael, разработанном двумя бельгийскими криптографами. То, что стандарт был выбран в результате открытого состязания, весьма примечательно, как и победа двух неамериканских разработчиков, позволившая без значительных финансовых вложений обеспечить ему мировое признание. AES быстро становится новым стандартом шифрования. Он предлагает ключ шифрования до 256 бит, что представляется более чем достаточным для обозримого будущего. Обычно AES из соображений эффективности реализуется в режиме 128 или 192 бита.

Приложения криптографии
Хэши
Хэши служат специальным применением односторонних функций для аутентификации и верификации криптографическими средствами. Исходный файл пропускается через хэш-функцию, в результате чего порождается значительно меньший файл фиксированного размера с уникальными идентификационными признаками исходного файла. В дальнейшем это позволяет удостовериться, что файл никаким образом не был изменен. Хэшируя подозрительный файл и сравнивая результат с заведомо хорошим значением, можно определить, были ли внесены какие-либо изменения. Маловероятно, что файлы с различной структурой будут порождать идентичные хэши. Даже изменение одного символа существенно меняет хэш. Вероятность того, что два различных файла дадут одинаковый хэш, пренебрежимо мала.
Хэшами часто снабжают загружаемые версии программного обеспечения, чтобы гарантировать получение подлинника. Это важно, особенно для программ с открытыми исходными текстами, которые могут попасть к вам через третьи руки или с "неродного" сайта. На официальном web-сайте обычно публикуется правильный хэш самой свежей версии. Если два значения не совпадут, то можно утверждать, что были внесены некоторые изменения, возможно, без разрешения или уведомления разработчиков программы. Наиболее популярный алгоритм хэширования называется MD5.
Цифровые сертификаты
Цифровые сертификаты - это "подпись" мира Интернет-коммерции. Они применяются для аутентификации. Они удостоверяют, что тот, с кем вы соединяетесь, действительно тот, за кого себя выдает. Проще говоря, сертификат служит "удостоверением" источника данных, содержащим открытый ключ организации. Хэш сертификата шифруется с помощью секретного ключа этой организации или уполномоченной организации - удостоверяющего центра (последнее предпочтительнее). Зная открытый ключ, парный секретному, вы можете проверить подлинность сертификата и тем самым удостовериться в принадлежности web-сайта интересующей вас организации.
Сертификаты обычно приписываются определенному домену. Они могут выпускаться удостоверяющим центром или локально, как описано выше. Имеется несколько удостоверяющих центров, самым крупным из которых является VeriSign - компания, поддерживающая также доменную систему имен. Удостоверяющие центры наделяют другие организации правом предлагать сертификаты под их ответственность. Получить сертификат от VeriSign или одной из авторизованных организаций - все равно, как если бы кто-то поручился за вас. Обычно сертификат выпускают только после проверки фигурирующих в нем данных, осуществляемой либо по телефону, либо с помощью некоторой бумажной документации, такой как устав организации. Когда вас "освидетельствуют", удостоверяющий центр берет представленную вами информацию, включая URL, для которого вы собираетесь применять сертификат, и "подписывает" ее цифровым образом с помощью своего секретного ключа. После этого Web-сервер или другая программа может использовать выданный сертификат. Когда внешние пользователи получают с сервера некоторые данные, например, Web-страницу, с присоединенным к ним сертификатом, они могут применить криптографию с открытым ключом для проверки вашей личности. Чаще всего сертификаты используются на Web-сайтах электронной коммерции, но они могут также применяться для коммуникаций произвольного вида. SSH и Nessus могут использовать сертификаты для аутентификации. В виртуальных защищенных сетях сертификаты также могут применяться для аутентификации вместо паролей.
Криптографические протоколы
IPsec
Хорошо известно, что при первоначальном проектировании IP-протокола вопросам безопасности уделяли не слишком много внимания. IP версии 4 (IPv4), доминирующий протокол IP-коммуникаций, не предоставляет никаких средств аутентификации или конфиденциальности. Полезная нагрузка пакетов посылается в открытом виде, а заголовки пакетов можно легко изменять, так как они не проверяются в месте назначения. Многие атаки эксплуатируют эту базовую незащищенность инфраструктуры Интернет. Новый стандарт IP, называемый IPv6, был разработан для обеспечения аутентификации и конфиденциальности с помощью криптографии. Он также расширяет адресное пространство IP, используя 128-битный адрес вместо применяемого сейчас 32-битного, и усовершенствован в ряде других направлений.
Полная реализация стандарта IPv6 потребует широкомасштабной модернизации оборудования, поэтому развертывание IPv6 происходит довольно медленно. Однако была предложена реализация средств безопасности для IP, называемая IPsec, не требующая значительных изменений в схеме адресации. Производители оборудования перешли на IPsec, постепенно ставший фактическим стандартом для создания виртуальных защищенных сетей в Интернете.
IPsec - это не конкретный криптографический алгоритм, а скорее криптографический каркас для шифрования и верификации пакетов в протоколе IP. Спецификации IPsec предусматривают использование различных алгоритмов и могут быть реализованы полностью или частично. Комбинация асимметричной и симметричной криптографии применяется для шифрования содержимого пакетов, а хэширование добавляет к этому аутентификацию. Данная функция называется протоколом аутентифицирующего заголовка - Authentication Header, AH). С помощью AH создается и передается хэш IP-заголовка. Когда пакет прибывает в место назначения, хэш его заголовка перевычисляется. Если полученное значение не совпало с присланным, значит, в процессе пересылки заголовок был изменен. Тем самым обеспечивается высокая степень доверия к подлинности исходного адреса. Можно шифровать содержимое пакетов без добавления аутентифицирующего заголовка, чтобы не снижать пропускную способность и избежать проблем с трансляцией сетевых адресов и межсетевыми экранами. Имеется два различных режима работы IPsec: туннельный и транспортный.
В туннельном режиме весь пакет - заголовок и все остальное - шифруется, помещается (инкапсулируется) в другой пакет и переправляется по одному из туннелей виртуальной защищенной сети. В конечной точке этого туннеля пакет извлекается, расшифровывается и переправляется на правильный IP-адрес. Преимущество этого метода состоит в том, что посторонний наблюдатель не может даже определить пункт назначения зашифрованного пакета. Другое преимущество - возможность централизованного управления и администрирования виртуальной защищенной сети. Недостаток заключается в том, что для туннелирования требуется специально выделенное оборудование на обоих концах.
В транспортном режиме шифруется только полезная нагрузка пакетов; заголовки посылаются без изменений. Это упрощает инфраструктуру и несколько облегчает ее развертывание. Отметим, что транспортный режим можно сочетать с протоколом AH и верифицировать исходные адреса пакетов.
Протокол туннелирования точка-точка (PPTP - Point-to-Point Tunneling Protocol)
PPTP - стандарт, разработанный Microsoft, 3Com и другими большими компаниями для обеспечения шифрования. Корпорация Microsoft включила его в Windows 98 и последующие выпуски, сделав вероятным кандидатом на роль основного стандарта массовой криптографии. Однако в PPTP были обнаружены существенные дефекты, что ограничило его применение. Когда Microsoft включила поддержку IPsec в Windows 2000, это можно было счесть молчаливым признанием победы IPsec как нового криптографического стандарта. Однако PPTP все-таки является полезным и недорогим протоколом для создания виртуальных защищенных сетей ПК со старыми версиями Windows.
Протокол туннелирования второго уровня (L2TP - Layer Two Tunneling Protocol)
Еще один индустриальный протокол, поддержанный компаниями Microsoft и Cisco. Хотя он часто используется в аппаратных устройствах шифрования, его применение в программном обеспечении довольно ограничено.
Защищенный протокол сеансового уровня (SSL - Secure Socket Layer)
Этот протокол специально предназначен для применения в Web, хотя он может использоваться почти для любого типа TCP-коммуникаций. Первоначально компания Netscape разработала его для своего навигатора, чтобы помочь развитию электронной коммерции. SSL, опираясь на сертификаты, обеспечивает шифрование данных, аутентификацию обеих сторон и контроль целостности сообщений. В основном SSL работает в фоновом режиме при соединении с web-сервером для защиты пересылаемой информации, и его присутствие мало кто осознает. Обычно он аутентифицирует только одну сторону - серверную, так как у большинства конечных пользователей нет сертификатов.
Криптографические приложения
Фил Циммерман - программист и активный борец за права человека. Его тревожило, что все более широкое применение компьютеров и коммуникационных сетей облегчает органам национальной безопасности репрессивных режимов перехват и сбор информации о диссидентах. Фил хотел написать программное обеспечение, помогающее этим людям сохранять свою информацию в тайне и безопасности. Подобное ПО могло бы в буквальном смысле спасать человеческие жизни. Он также не вполне доверял собственному правительству. Он знал, как легко правительство может создать системы для поиска определенных ключевых слов в любых электронных сообщениях. Он хотел дать людям способ защиты и гарантии их конституционного права на тайну частной жизни.
Он назвал свою программу "Приятное уединение" (PGP - Pretty Good Privacy), так как считал, что проделал хорошую работу для защиты данных от разведок небольших стран. Однако агентство по информационной безопасности США считало по-другому. Циммерман был обвинен в нарушении федеральных законов об экспорте вооружений за предоставление возможности загружать свою программу из любой точки мира.
Первоначально Циммерман собирался учредить компанию для продажи своего изобретения. Однако, когда правительство стало его преследовать, он бесплатно распространял свое программное обеспечение через Интернет, сделав его общедоступным. Впоследствии он все-таки сформировал компанию для продвижения коммерческих версий программного обеспечения, но повсюду в Интернете имеются реализации PGP с открытыми исходными текстами. Некоторые из них более популярны, чем другие, а некоторые являются нишевыми приложениями, такими как шифрование электронной почты. В следующем разделе рассматривается официальная условно свободная версия от PGP Corporation, а также версия с полностью открытыми исходными текстами. Список всех реализаций PGP можно найти по адресу http://www.cypherspace.org/openpgp/.

PGP Freeware: Средство криптографии с открытым ключом

Официальную условно свободную версию PGP поддерживает Массачусетский технологический институт. Так как она лицензирована у Фила Циммерамана и PGP Corporation, то можно не сомневаться в ее целостности и законности. Недостатком условно свободной версии PGP является то, что она лицензирована только для индивидуального применения, поэтому ее можно использовать для персональной электронной почты или в целях образования, если вы студент. Если вы собираетесь применять эту версию PGP, не забудьте внимательно прочитать лицензию. Хотя эта версия PGP имеет открытые исходные тексты и распространяется бесплатно, существуют значительные ограничения на ее использование. Помните, что открытость исходных текстов не обязательно означает бесплатность. Если вы желаете получить самую свежую версию в сочетании с простотой использования и поддержкой, то должны рассмотреть возможность покупки полной лицензии у PGP Corporation. Она стоит примерно $125 на одного пользователя. При массовых закупках предоставляется скидка. Если вы не можете или не хотите платить, то более интересным для вас может оказаться другое средство - GnuPG, полностью свободная реализация PGP.
Официальная версия PGP от PGP Corporation обладает некоторыми замечательными возможностями:

  • Встроенный клиент для виртуальных защищенных сетей на основе IPsec 3DES, пригодный для безопасных коммуникаций с любым партнером, имеющим PGP версии 8.0 или выше.
  • Возможность создания саморасшифровывающихся архивов для отправки сообщений PGP тем, у кого нет установленного программного обеспечения PGP.
  • Затирание удаленных файлов, то есть возможность удалить файл с последующей многократной перезаписью области данных на диске.
  • Затирание свободного пространства, аналогичное затиранию удаленных файлов, но для свободного дискового пространства, которое может содержать следы старых данных.
  • Интегрированная поддержка командной строки для тех, кто знаком со старыми командами.
  • Встраиваемые модули для основных программ электронной почты: Outlook, Eudora и Claris Emailer (только в платной версии).
  • Поддержка посредников, полезная для пользователей, находящихся позади межсетевого экрана (только в платной версии).
  • PGPDisk - средство шифрования целых томов или частей вашего диска, так что зашифрование и расшифрование данных происходит автоматически (только в платной версии).

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

Установка PGP и генерация пары ключей открытый/секретный

  1. В первую очередь, загрузите файл программы PGP с web-сайта.
  2. Щелкните мышью на самораспаковывающемся zip-файле, и он автоматически начнет процесс установки.
  3. У вас есть выбор между покупкой полной лицензии и оценкой продукта. Щелкните мышью на кнопке Purchase Now (Купить сейчас), если хотите получить полную версию, авторизованную для коммерческого применения. В противном случае щелкните мышью на кнопке Later (Позже), чтобы воспользоваться условно свободной версией.
  4. Программа установки затем проведет вас через процесс генерации пары ключей открытый/секретный. Этот процесс очень важен, так как служит основой защиты, которую предоставляет PGP.
  5. Программа попросит вас ввести имя, название организации и адрес электронной почты. Вы не обязаны вводить электронный адрес, но если вы этого не сделаете, открытый ключ не будет ассоциирован с вашим адресом на сервере ключей, и человеку, который захочет послать вам зашифрованное PGP-сообщение, будет сложно найти ваш открытый ключ, если он его еще не имеет.
  6. Затем программа попросит ввести парольную фразу, позволяющую хранить ключи на диске. Не вводите здесь обычный пароль, такой как одиночное слово или набор букв. Это существенно снизит безопасность ключей. Задайте последовательность слов с комбинацией из букв и цифр. Это облегчит запоминание и в то же время гарантирует достаточную степень сложности. Хороший пример сложной парольной фразы с числами, большими и малыми буквами и другими символами - one+one=Two.

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


Флэми Тех советует:
Не теряйте ключи!
Лишиться ключей для PGP - почти то же, что потерять ключи от квартиры или автомобиля, только намного хуже. Вообразите, что при утере физических ключей ваш дом или автомобиль навсегда становятся недоступными. Именно это происходит с зашифрованными данными, если теряется секретный ключ. А поскольку секретный ключ обычно зашифрован на диске с помощью парольной фразы, то потеря последней дает обычно тот же эффект.
Не забудьте сделать резервную копию папки с секретным ключом на вашем компьютере (вы же регулярно делаете резервное копирование своих данных, не так ли?) Если вам трудно запоминать пароли, запишите парольную фразу и сохраните ее где-нибудь в безопасном месте (желательно - не на "горчичнике", прилепленном к монитору).
Помните, если вы потеряете ключ или парольную фразу, данные будут безвозвратно утеряны; даже Агентство национальной безопасности не сможет вам помочь. Думаете, это преувеличение? Если бы ваши данные легко восстанавливались, это было бы легко сделать и постороннему. Поэтому помните о своей парольной фразе и ключах.

Применение PGP
Доступ к PGP осуществляется из подменю Programs в меню Start. Там имеется несколько доступных опций, включая PGPMail и документацию. Условно свободная версия PGP снабжена отличной документацией, включая более чем семидесятистраничное введение в криптографию. Это прекрасный начальный курс для новичков в криптографии. Для PGP написано также огромное руководство пользователя.
При запуске PGPMail на экране появляется небольшая панель инструментов. Ее можно минимизировать до небольшой иконки на системной панели, когда она не используется. Простой интерфейс PGPMail предлагает несколько опций: PGPKeys, Encrypt, Sign, Encrypt and Sign, Decrypt/Verify, Wipe и FreeSpace wipe. Конкретные функции каждого элемента рассмотрены ниже.
PGPKeys
Раздел PGPKeys служит для управления как вашими открытым и секретным ключами, так и открытыми ключами ваших партнеров. Программа PGP создает на диске два каталога, называемых кольцами для ключей, так как они содержат все ключи, как открытые, так и секретные, которые нужны для применения PGP. Файл pubring, находящийся в основном каталоге PGP, содержит ваш открытый ключ, а также открытые ключи других людей, которым вы предполагаете посылать зашифрованные файлы. Файл secring содержит ваш секретный ключ, обычно в зашифрованном виде. Как правило, он содержит только один секретный ключ, но у вас может быть и несколько секретных ключей. Например, вы можете применять один из них для деловых писем, а другой - для частной корреспонденции. Помните только, что документы, зашифрованные с помощью определенного открытого ключа, можно расшифровать только с помощью соответствующего ему секретного ключа.
Здесь можно также создавать новые ключевые пары и отзывать пары ключей, которые больше не используются. Можно загрузить свой открытый ключ на один из нескольких серверов открытых ключей. Это позволит тем, кто никогда с вами не общался, найти ваш ключ на сервере открытых ключей и послать вам сообщение PGP. Многие люди, применяющие PGP, имеют привычку размещать открытый ключ в строке подписи своих электронных сообщений, поэтому их адресаты могут легко послать им сообщение, зашифрованное PGP.
Другим способом, помогающим проверить законность некоторого персонального ключа, является его подписывание ключами других людей. Это позволяет удостовериться, что некий открытый ключ принадлежит данному человеку. Вы должны подписывать открытые ключи только тех людей, которых хорошо знаете лично, и проверять, что ключ правильный. Ваши друзья и знакомые также могут подписывать ваши ключи. Это кольцо подписывающих ключей создает неиерархическую модель доверия, называемую сетью доверия. Ее главное достоинство в том, что для ее работы не требуется центральный уполномоченный орган. Более подробно о том, как работает сеть доверия, можно узнать из раздела GnuPG далее в этой лекции.
Чтобы добавить ключи других пользователей в ваше кольцо открытых ключей, можно либо импортировать их непосредственно из файла или произвести поиск на серверах открытых ключей. Выбирая Search в меню Servers или щелкая мышью на иконке с изображением увеличительного стекла и вводя часть имени или некоторый идентифицирующий текст, можно увидеть, какие ключи на серверах открытых ключей соответствуют вашему запросу. Отбуксируйте выбранные элементы из результатов на основной экран PGPKey, и открытый ключ этого человека будет доступен для использования в сообщениях PGP. Можно также просмотреть специфические свойства любого ключа, включая подписавших этот ключ, размер ключа (в битах) и метод (обычно DH, что означает Diffie-Hellman). Наконец, можно импортировать или экспортировать ваши кольца ключей, если вы меняете компьютеры или должны восстановить данные с резервной копии.
Encrypt
Функция Encrypt устроена просто. Сначала появляется диалоговое окно, которое позволяет выбрать файл для зашифрования. Когда файл выбран, PGP попросит выбрать открытый ключ адресата из вашего кольца ключей. Если нужного ключа у вас еще нет, поищите его на серверах открытых ключей, как описано выше, и добавьте его к своему списку. Выберите открытый ключ вашего адресата и отбуксируйте ключ из поля наверху в список адресатов.
Флажки внизу слева позволяют задать несколько важных опций. Одна из наиболее важных - Wipe Original (Стереть оригинал). Установите этот флажок, если вы шифруете файл для хранения на жестком диске. В противном случае PGP просто создаст новый зашифрованный файл и оставит оригинал в открытом для просмотра текстовом виде в том же каталоге. Помните, однако, что если вы выберете эту опцию и потеряете свои ключи, то файл пропадет безвозвратно.
Другим важным параметром является Conventional Encryption (Обычное шифрование). Установка этого флажка отменяет шифрование с открытым ключом. Вместо этого будет производиться стандартное шифрование с разделяемым секретом, и вам нужно будет выбрать парольную фразу, чтобы зашифровать данные. Эту парольную фразу затем нужно безопасным образом передать адресату. Подобный метод ликвидирует основное достоинство PGP, но он может быть необходим, если у вас нет открытого ключа адресата. Если у адресата нет программного обеспечения PGP, выберите опцию Self-Decrypting Archive (Саморасшифровывающийся архив). При этом будет создан файл, который сам расшифрует себя, когда получатель щелкнет на нем мышью. Конечно, получатель все равно должен знать парольную фразу, которая применялась при создании файла.
Sign
Функция Sign дает возможность подписать файл с помощью секретного ключа, позволяя впоследствии проверить, что с момента подписания файл не изменился. При этом применяется хэш-функция для преобразования файла в формат дайджеста, а затем производится шифрование с помощью секретного ключа. Это действие противоположно обычному шифрованию открытым ключом. Получатель может взять подпись и попытаться расшифровать ее с помощью вашего открытого ключа. Если хэши совпадут, то можно утверждать, что с момента подписания содержимое не изменилось. Данная функция полезна, если вы больше озабочены целостностью файла, чем конфиденциальностью информации. Примером может служить длинный контракт, который был существенно отредактирован. Можно подписать его цифровой подписью и быть уверенным, что после этого никто не сможет его изменить. Подпись можно также применять для обеспечения так называемой "неотказуемости" - если вы подписали документ, то может быть доказано, что вы это сделали, если только кто-то не заполучил ваш секретный ключ. Это равносильно юридической силе физической подписи, за исключением того, что подделать цифровую подпись значительно труднее, чем обычную.
Encrypt and Sign
Эта функция совмещает функции Encrypt и Sign, обеспечивая строгую конфиденциальность, целостность и неотказуемость.
Decrypt/Verify
Функция Decrypt/Verify применяется для обращения процесса шифрования PGP. После выбора файла для расшифрования будет предложено ввести парольную фразу, чтобы можно было использовать хранящийся на диске секретный ключ. Если парольная фраза будет введена правильно, вам предложат задать имя нового файла, в который будет помещен результат расшифрования. Эту функцию можно также применять для проверки подлинности подписи.
Wipe
Функция Wipe навсегда стирает файл с жесткого диска. Этот процесс существенно надежнее, чем функция Delete в Windows. Проблема с Windows и большинством других операционных систем состоит в том, что при удалении файла они на самом деле не удаляют данные с жесткого диска, ограничиваясь удалением записи о файле в индексе файловой системы. Данные по-прежнему остаются на дисковых пластинах. Их можно просмотреть с помощью низкоуровневого дискового редактора или восстановить с помощью легко доступных утилит, таких как Norton или DD (DD демонстрируется). Функция Wipe на самом деле несколько раз перезаписывает данные на диске случайными единицами и нулями. По умолчанию это делается три раза, что вполне достаточно для большинства случаев. При желании можно увеличить это число по крайней мере до десяти, если вы стираете сверхсекретные данные, поскольку специалисты по восстановлению данных в действительности могут восстановить данные даже после нескольких перезаписей. Можно увеличить число проходов до 28, и в этом случае даже Агентство национальной безопасности будет бессильно. Отметим, что при стирании больших файлов с большим числом проходов может потребоваться довольно много времени. Это высокоинтенсивная дисковая операция.
Freespace Wipe
Freespace Wipe выполняет ту же функцию, что и Wipe, но для свободного дискового пространства. Время от времени протирать свободные блоки необходимо, так как старые файлы, которые вы удаляли, но не стирали, все еще могут существовать. Кроме того, программы постоянно создают временные файлы, которые могут содержать копии данных ограниченного доступа. Они удаляются операционной системой, когда программа завершается, но все еще существуют на диске. Freespace Wipe санирует весь ваш жесткий диск. Можно запланировать автоматические регулярные санации жесткого диска.
Опции PGP
В PGP имеется ряд глобальных опций. В основном меню PGPKeys в разделе File выберите Edit, чтобы вывести диалоговое окно опций PGP. В табл. 9.2 даны описания имеющихся вкладок.


Таблица 9.2. Вкладки диалогового окна опций PGP

Вкладка

Описание

General

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

Files

Здесь можно изменить подразумеваемый каталог ваших колец открытых и секретных ключей

Email

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

HotKeys

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

Servers

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

CA

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

Advanced

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

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

GNU Privacy Guard (GnuPG) основывается на стандарте OpenPGP и является ответом на коммерческую и ограниченную условно свободную лицензионные версии PGP. В названии программы, как и в названиях большинства программ от GNU, заключена игра слов (инверсия PGP). Важное преимущество версии GNU - возможность применения для любого приложения, личного или коммерческого. Кроме того, поскольку используется лицензия GPL, программу можно расширять или встраивать в любые приложения. Недостатком же является то, что это средство командной строки, поэтому в нем отсутствуют некоторые полезные добавления, имеющиеся в коммерческой версии PGP. Если цена составляет проблему, и вы не боитесь изучать работу команд, то GnuPG - для вас. Однако, одно предостережение: GnuPG, вероятно, не лучший выбор для нетехнических пользователей, если только вы не добавите собственный интерфейс или удобные для пользователей процедуры (некоторые из них доступны в Интернет).

Установка GnuPG
Многие современные версии Linux и BSD поставляются с предустановленной системой GnuPG. Это можно проверить, набрав в командной строке gpg --version. Если появится листинг с информацией о программе, то можно пропустить данный раздел и сразу перейти к применению GnuPG.
Проверьте также, содержат ли ваши дистрибутивные диски файл RPM для автоматической установки. Если вы хотите получить самую свежую версию, то на web-сайте имеются RPM для многих дистрибутивов. Если там есть RPM для вашей ОС, загрузите его и просто щелкните на нем мышью, чтобы установить программу. Если RPM отсутствует, то можно загрузить .tar-файлы с прилагаемого к книге компакт-диска или с официального Web-сайта и скомпилировать их вручную с помощью следующих инструкций:

  1. Распакуйте .tar-файлы, затем наберите обычные команды компиляции:
  • ./configure
  • make

make install
Программа создаст структуру каталогов с корнем .gnupg в вашем пользовательском каталоге, где будут храниться ключи и другая информация.

  1. (Необязательно) После установки GnuPG наберите make clean, чтобы избавиться от бинарных или временных файлов, созданных в процессе конфигурирования.

Создание ключевых пар
После установки программы прежде всего необходимо создать свою пару ключей открытый-секретный. Если у вас уже есть ключ и вы хотите импортировать его в GnuPG, воспользуйтесь командой:
gpg --import маршрутное_имя_файла_ключей
Следует выполнить эту инструкцию для вашего кольца открытых ключей и отдельно - для кольца секретных ключей. Обычные форматы для колец ключей - pubring.pkr и secring.skr.
Если ключей у вас еще нет, следуйте приведенной ниже процедуре.

  1. Наберите gpg --gen-key. Будет запущен процесс, который запросит у вас некоторые данные.
  2. GnuPG попросит задать длину ключей в битах (по умолчанию - 1024, что обычно достаточно для надежной криптографии с открытым ключом). Можно увеличить длину до 2048 для усиления безопасности.
  3. Как правило, вам не нужно, чтобы ваши ключи имели ограниченный срок годности, но в специальном случае, когда ключи будут применяться ограниченное время, можно указать, когда истечет срок их действия.
  4. GnuPG запросит у вас имя и адрес электронной почты. Эти данные важны, поскольку они определяют индексацию открытого ключа на серверах открытых ключей.
  5. Наконец, GnuPG предложит ввести парольную фразу. Она должна быть достаточно длинной и сложной, но в то же время легко запоминаемой. (См. описание парольной фразы выше в этой лекции, в разделе о PGP). После двукратного ввода парольной фразы GnuPG создаст ключи. Это может занять некоторое время. В ходе этого процесса следует немного подвигать мышью. GnuPG использует случайные сигналы клавиатуры и мыши для повышения энтропии своего датчика случайных чисел.

Примечание: Еще раз - как и при работе с PGP или любым другим средством сильной криптографии, сохраняйте резервные копии пар ключей в безопасном месте и не теряйте их, иначе ваши зашифрованные данные будут безвозвратно потеряны.
Создание сертификата отзыва
После создания ключей можно создать сертификат отзыва. Он применяется, когда вы теряете ключи, или если кто-то скомпрометирует ваш секретный ключ. Тогда можно воспользоваться этим сертификатом для отзыва ключа с серверов открытых ключей. Тем не менее, вы сможете расшифровывать полученные ранее сообщения, зашифрованные с помощью старого открытого ключа (если вы не потеряли старый секретный), но никто больше не сможет зашифровывать сообщения с помощью ставших негодными открытых ключей.
Чтобы создать сертификат отзыва, введите:
gpg - output revoke.asc - gen-revoke пользователь
где пользователь заменяется его уникальной фразой в вашем кольце секретных ключей. Создается файл revoke.asc. Необходимо переместить его с жесткого диска в какое-то безопасное место. Нежелательно оставлять его рядом с секретным ключом, поскольку если кто-то получит доступ к секретному ключу, то сможет помешать и его отзыву.
Публикация открытого ключа
Желательно разместить ваш открытый ключ на сервере ключей, чтобы его можно было легко найти и послать вам сообщение. Чтобы сделать это, наберите команду:
gpg - keyserver имя_сервера_открытых_ключей - send-key пользователь
где пользователь задается адресом электронной почты, с которым ассоциируется публикуемый ключ. Можно использовать любой сервер открытых ключей PGP, так как все они регулярно синхронизируются. Выберите любой из них, и ваш открытый ключ будет распространен на все остальные. Имеется много серверов открытых ключей, например:

  • certserver.pgp.com
  • pgp.mit.edu
  • usa.keyserver.net

Шифрование файлов с помощью GnuPG
Для зашифрования файла служит команда -- encrypt, имеющая следующий формат:
gpg -- output зашифрованный_файл -- encrypt -- recipient адрес шифруемый_файл
Здесь адрес - это электронный адрес пользователя, которому вы хотите отправить зашифрованный файл. Отметим, что вы должны иметь открытый ключ адресата в своем кольце ключей.
GnuPG можно применять и для шифрования файлов с помощью простой симметричной криптографии, что удобно для защиты локальных файлов или для отправки сообщения кому-то, чей открытый ключ у вас отсутствует. Чтобы сделать это, воспользуйтесь командой --symmetric:
gpg --output зашифрованный_файл --symmetric шифруемый_файл
Расшифрование файлов
Для расшифрования полученных файлов при помощи GnuPG, воспользуйтесь следующей командой:
gpg --output расшифрованный_файл --decrypt зашифрованный_файл
Чтобы расшифровать файл, необходимо иметь в своем кольце секретных ключей ключ пользователя, для которого файл был зашифрован. У вас запросят парольную фразу, и если вы введете ее правильно, GnuPG создаст расшифрованный файл.
Подписывание файлов
Как упоминалось выше, имеется еще одно применение GnuPG и PGP - подписывание документов для контроля их целостности. Это можно сделать с помощью следующей команды:
gpg --output подписанный_файл --sign подписываемый_файл
Обычно GnuPG автоматически проверяет подпись при получении файла. Верификация файла по инициативе пользователя осуществляется с помощью команды
gpg --verify подписанный_файл
Можно создавать подписи в текстовом виде и отдельно от файла, если вы хотите, чтобы пользователи без GnuPG могли получить к ним доступ. Для этого имеются две команды. Команда
gpg -- clearsign подписываемый_файл
создает текстовое дополнение к подписываемому файлу. Если вы не хотите изменять этот файл, можно создать отдельный файл подписи с помощью команды
gpg --output файл_подписи --detache-sign подписываемый_файл
Модель сети доверия PGP/GnuPG
Как упоминалось ранее, вместо иерархической системы доверия, с цифровыми сертификатами и удостоверяющим их центром, в PGP и GnuPG используется модель сети доверия. Подписывая ключи людей, которых вы знаете, вы можете проверить, что их ключ заслуживает доверия. А если они подписывают ключи других людей, которых вы не знаете непосредственно, вы создаете цепочку доверия. Такая модель основана на идее "друг моего друга - мой друг". Модель, конечно, несовершенна; кто-нибудь в дальней части цепочки доверия может оказаться плохим парнем. Но основной принцип состоит в естественном росте цепочки без какой-либо инфраструктуры, и поэтому ее нельзя легко разрушить или "раздуть". Вы создаете сеть доверия, подписывая ключи каких-то людей и предоставляя им возможность подписывать ваши. В примере на Тони может неявно доверять ключам Джейн, Джо, Джона и Евы, хотя он не знает их непосредственно.

Подписание ключей и управление доверием к ним
В GnuPG вы подписываете ключи и управляете доверием к ним, переходя в режим редактирования ключей с помощью команды
gpg --edit-key доверенный_адрес
Здесь доверенный адрес ассоциируется с подписываемым или управляемым ключом, входящим в ваше открытое кольцо. Команда выдает основную информацию о ключе. В этом режиме наберите fpr, чтобы распечатать идентификационную метку данного ключа. Как и отпечатки пальцев для людей, идентификационная метка служит специфической формой идентификатора ключа. Убедитесь, что это ключ нужного человека, проверяя его либо по телефону, либо каким-то другим способом. Можно также проверить, кто еще подписал этот ключ, вводя check. Будет напечатан список лиц, подписавших этот ключ, что может помочь вам определить его законность.
Когда вы уверены, что это ключ нужного человека, наберите sign. Данная команда подписывает ключ этого человека, так что все смогут узнать, что вы ему доверяете. В этом режиме можно также отредактировать уровни доверия различных ключей вашего кольца. Войдите в этот режим из режима редактирования ключа, набирая trust. Появится следующее меню:
1 = Don't know (Не знаю)
2 = I do NOT trust (Я НЕ доверяю)
3 = I trust marginally (Я доверяю косвенно)
4 = I trust fully (Я доверяю полностью)
s = Please show me more information (Мне требуется дополнительная информация)
m = Back to the main menu (Вернуться в основное меню)
Выберите один из этих элементов, и ключ будет помечен должным образом. Это еще один способ сообщить о том, какие пользователи вызывают у вас наибольшее доверие, а каких вы едва знаете.
Вышеизложенное может служить хорошим введением в мир PGP и GnuPG. Данная лекция не претендует на полноту освещения этой темы, так что следует обратиться к соответствующим Web-сайтам и другим упомянутым источникам, чтобы лучше изучить эти революционные программы.
PGP и GnuPG отлично работают для шифрования файлов. Однако как быть, если вы желаете шифровать все коммуникации между двумя точками? Программа PGP в действительности не годится на эту роль (несмотря на недавнее включение в коммерческую версию клиента виртуальных защищенных сетей). Мы приступаем к обсуждению средства с открытыми исходными текстами для создания таких постоянных соединений, где все шифруется на лету.

Большинство файловых и коммуникационных утилит, до сих пор применяемых в Интернете, восходят к тем временам, когда Интернет был небольшим и безопасным. Одним из наиболее употребительных средств, помимо web-навигатора, является Telnet. Эта утилита служит для удаленного терминального доступа ко всевозможным серверам, маршрутизаторам, межсетевым экранам и другим устройствам. Большим минусом Telnet является то, что утилита посылает свои данные в открытую, поэтому, если вы применяете Telnet для входа в системы через Интернет, то кто-нибудь может перехватить ваш трафик, включая ваши пароли. Вы вольны считать, что поиск вашего пароля в потоке данных подобен поиску иголки в стоге сена, но хакеры написали программы, выполняющиеся поверх сетевых анализаторов, для поиска обычных входных атрибутов и записи результатов. Это справедливо и для других средств удаленного доступа, таких как FTP, TFTP и RCP.
SSH (Secure Shell, защищенный командный интерпретатор) решает эту проблему, применяя как асимметричную, так и симметричную криптографию для шифрования сеансов, начиная с первого нажатия клавиши. В этом случае злоумышленник, прослушивающий ваше соединение, получит лишь случайный шум. SSH не только обеспечивает конфиденциальность ваших данных с помощью шифрования, но предоставляет также сильную аутентификацию, препятствующую подделкам и другим маскарадным атакам. Это достигается с помощью цифровых сертификатов для аутентификации пользователей. Не путайте SSH с SSL - стандартом шифрования Web. Хотя они делают одно и то же дело, SSH работает с любым протоколом, в то время как SSL предназначен прежде всего для web-коммуникаций.
SSH включает также SCP - безопасный эквивалент RCP, средства удаленного копирования, и SFTP - безопасный аналог FTP. SSH можно применять и для туннелирования других протоколов, таких как HTTP и SMTP. Некоторые приложения рассмотрены в конце данного раздела. Использование этого пакета программ вместо старых аналогов гарантирует, что ваши коммуникации с серверами не будут раскрыты. Отказаться от применения в вашей сети Telnet и FTP может быть нелегко, но чем больше вы в этом преуспеете, тем в большей безопасности окажетесь.
Чтобы использовать SSH, необходимо иметь сервер SSH, выполняющийся на машине, к которой вы хотите подключиться, и клиент SSH на машине, с которой вы подключаетесь. Обычные клиенты FTP и Telnet не будут соединяться с сервером SSH. Клиент встроен в большинство современных операционных систем Linux, хотя, быть может, требуется выбрать эту опцию при установке ОС. дополнительную информацию о клиенте SSH). Сервер SSH обычно является необязательным, и его следует выбрать при установке ОС. Чтобы проверить, установлен ли он, наберите
ps -ax | grep sshd
и посмотрите, выполняется ли процесс sshd. Если его нет, то необходимо установить сервер, чтобы обеспечить соединение с вашей машиной через SSH.
Установка и запуск сервера OpenSSH

  1. Первым делом загрузите пакет с Web-сайта или с прилагаемого к книге компакт-диска и распакуйте его.
  2. Выполните обычные команды компиляции в Linux:
  • ./configure
  • make

make install
Произойдет сборка и установка программ SSH. Бинарные файлы и ассоциированные библиотеки будут размещены в каталоге /usr/local/bin (в системе Mandrake Linux, в других дистрибутивах может быть иначе). Системные демоны помещаются в /usr/local/sbin, а конфигурационные файлы - в /usr/local/etc/ssh или /etc/ssh, в зависимости от установки.
Можно выбрать альтернативный маршрут установки, используя аргумент configure
---prefix=маршрут
где маршрут нужно заменить желательным альтернативным местом.

  1. После установки OpenSSH проверьте конфигурационный файл, находящийся в /etc/ssh, и убедитесь, что он соответствует параметрам вашей системы. Конфигурационный файл для серверной части называется sshd_config. Для внесения изменений можно воспользоваться текстовым редактором, таким как vi или EMACS. Необходимо проверить следующее:
    • Port: Порт, который SSH использует для входящих соединений. Подразумеваемый номер - 22. Если изменить это значение, то люди, пытающиеся с вами соединиться, должны будут вручную изменить номер порта у своих клиентов SSH.
    • Protocols: Набор протоколов, которые SSH должен принимать. По умолчанию принимаются оба типа соединений SSH1 и SSH2. Для повышения безопасности можно разрешить прием только SSH2, но тогда некоторые старые клиенты не смогут соединяться.
    • Hostkey: Задает расположение ключей, применяемых при проведении основанной на ключах аутентификации пользователя во время соединения с другой машиной. Это не то же самое, что ключи сервера, которые генерируются при установке.
  2. Прежде чем пользователь сможет работать с SSH, он должен сгенерировать ключи. Это делается с помощью следующей команды:

ssh make-host-key
Вы получите примерно следующий ответ:
Generating public/private rsa key pair.
(Генерация пары RSA-ключей открытый/секретный).
Enter file in which to save the key (/home/me/.ssh/id_rsa):
(Введите файл для сохранения ключа).
Created directory '/home/me/.ssh'. Создан каталог)
Enter passphrase (empty for no passphrase):
(Введите парольную фразу (пусто без фразы)).
Your identification has been saved in /home/me/.ssh/id_rsa.
(Идентификационные данные сохранены в)
Your public key has been saved in /home/me/.ssh/id_rsa.pub.
(Открытый ключ сохранен в)
The key fingerprint is :f6:41:99:d8:a5:d1:fb:e7:93:86:7e:e6:4f:01:d9:5b
(Идентификационная метка ключа).
Эта же команда, но с дополнительными опциями (задающими, например, неинтерактивный режим, длину ключей и имя файла для сохранения результатов), применяется и для генерации ключей хоста, необходимых серверу ssh. Идентификационная метка служит уникальным идентификатором ключей.

  1. Теперь можно запустить сервер SSH из командной строки, набрав sshd &. Эта команда в фоновом режиме запускает sshd - серверный демон, постоянно слушающий попытки подключений. Если вы хотите, чтобы sshd запускался автоматически при загрузке системы (что предпочтительно), поместите эту строку в конце файла rc.local, находящегося в каталоге /etc/rc.d/ (в Mandrake Linux, или в соответствующем стартовом файле для вашего дистрибутива).

Помните, чтобы соединиться с вашим сервером через SSH, необходимо иметь на клиентской стороне совместимую версию SSH. Инструкции по установке и применению клиента SSH можно найти.
Переправка портов посредством OpenSSH
Хотя SSH первоначально предназначался для взаимодействия на уровне командной строки, подобно Telnet, его можно применять также для создания безопасного туннеля между двумя машинами для произвольного приложения. Можно создать безопасное соединение между двумя серверами с помощью встроенной в SSH возможности переправки порта. Чтобы это сработало, SSH должен выполняться на обоих концах соединения. Соединение можно организовать для любого сервиса с любым портом, выполнив на клиентской стороне следующую инструкцию:
ssh -L локальный_порт:удаленный_хост:удаленный_порт -N удаленный_хост
где надо заменить:

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

Опция -L предписывает SSH слушать локальный порт на локальном хосте и переправлять любые соединения на удаленный порт удаленного хоста. Опция -N освобождает SSH от попыток входа; требуется просто поддерживать соединение открытым для переправляемого трафика.
При применении данного метода вам не нужно входить в удаленную систему для установления криптографически защищенного соединения с удаленным сервером. Вам понадобятся, если они требуются, соответствующие удостоверения для выполнения желаемых действий через переправляемый порт.
Ниже представлены два примера, которые показывают, как это работает.
Пример 1: Создание криптографически защищенного соединения для электронной почты с помощью OpenSSH
Обычно сообщения электронной почты пересылаются в открытом виде через порт 25. Предположим, вы желаете зашифровать это соединение. Один из способов добиться этого - создать при помощи SSH криптографически защищенный туннель для любого трафика, предназначенного для порта 25 почтового сервера. Используя вышеприведенный формат и считая, что почтовый сервер имеет IP-адрес 192.168.1.2, получим следующую команду:
ssh -L 5000:192.168.1.2:25 192.168.1.2 -N &
Эта команда задает порт 5000 на локальной машине для туннелирования почты (порт 25) на удаленный почтовый сервер. Поэтому, если вы настроите свой почтовый клиент для соединения с localhost:5000 вместо подразумеваемого почтового порта, SSH будет автоматически шифровать и переправлять трафик на порт 25 вашего почтового сервера. Теперь вы можете получать и посылать почту на эту машину, не опасаясь, что ее кто-то перехватит.
Пример 2: Создание безопасного web-соединения
Допустим, вы желаете соединиться со своим web-сервером для выполнения защищенной транзакции. Если сервер не настроен для поддержки SSL, вы все равно сможете при помощи SSH организовать безопасное туннелирование своего web-трафика на сервер. Если ваш web-сервер расположен по адресу 192.168.1.3, то командная строка будет выглядеть примерно так:
ssh -L 5000:192.168.1.3:80 192.168.1.3 -N &
Теперь вы можете соединиться, вводя localhost:5000 в web-навигаторе, и по безопасному туннелю ваш трафик будет переправляться в порт 80 удаленной машины. Можно переправлять несколько портов на одной машине. Например, команда
ssh -L 5000:192.168.1.2:25 -L 5001:192.168.1.2:80 -N 192.168.1.2 -N &
будет переправлять весь трафик с локального порта 5000 на почтовый порт и с порта 5001 - на порт 80 удаленной машины с адресом 192.168.1.2. Конечно, предполагается, что вы имеете почтовый счет на удаленном сервере.
Можно видеть, что SSH отлично подходит для создания безопасных соединений между двумя машинами практически для любого протокола. Однако, что если вы хотите шифровать весь трафик, независимо от порта или сервиса? В этом случае имеет смысл создать виртуальную защищенную сеть.

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

Проект FreeS/WAN спонсирует и возглавляет Джон Гилмор - легендарная фигура в кругах программистов и борцов за свободу в сети, один из основателей Фонда электронной свободы (Electronic Freedom Foundation - EFF), много лет защищавшего права на свободную сильную криптографию. Участвуя в работе нескольких инновационных компаний Кремниевой Долины, в основном в Sun Microsystems, Гилмор составил состояние и теперь посвящает свое время различным проектам, многие из которых связаны с открытым ПО.
Проект FreeS/WAN зародился как попытка дать возможность шифровать свои коммуникации любому пользователю. Хотя эта цель еще не достигнута, пользователи Linux могут воспользоваться недорогим способом создания виртуальных защищенных сетей. Данное средство позволяет также соединяться с другими устройствами с помощью IPsec, так как IPsec - общепризнанный стандарт. Некоторые производители не строго следуют стандарту, поэтому возможны проблемы, если на другом конце применяется оборудование или программы других производителей. Проверьте на web-сайте FreeS/WAN список совместимости с реализациями других производителей.
При использовании IPsec все шифруется на уровне IP, независимо от приложения или порта. Именно это делает IPsec наиболее распространенной системой для создания защищенных коммуникаций. FreeS/WAN может применять и так называемое шифрование "по возможности", называемое также оппортунистическим. Это означает, что для коммуникаций с хостами, поддерживающими IPsec, применяется шифрование; с прочими хостами осуществляются обычные IP-коммуникации. Поэтому, если вы выполняете FreeS/WAN на компьютере межсетевого экрана, то вы можете получить автоматическую виртуальную защищенную сеть с сайтами, поддерживающими IPsec, при сохранении взаимодействия с другими сайтами, которые не поддерживают IPsec.
Вам потребуются две машины в качестве шлюзов. Для работы FreeS/WAN необходимы компьютеры с ОС UNIX, предпочтительно Linux. Чтобы организовать соединение IPsec между системами Windows, можно воспользоваться встроенной поддержкой IPsec (в Windows 2000 и более поздних разновидностях); FreeS/WAN для этого не нужен. Предположительно, поддержка IPsec будет встроена в новое ядро Linux. Но даже в этом случае FreeS/WAN по-прежнему найдется применение для коммуникаций со старыми версиями и для использования возможностей оппортунистического шифрования. Команда FreeS/WAN работает также над совместимостью с предполагаемой поддержкой IPsec в ядре Linux.
Установка и запуск FreeS/WAN
FreeS/WAN предустанавливается на многих дистрибутивах Linux. Чтобы проверить наличие FreeS/WAN, введите ipsec verify в командной строке. Если вы получите ответ "file not found", значит, у вас нет этой системы. Даже если у вас нет RPM, можно взять исходные тексты с прилагаемого к книге компакт-диска или загрузить свежую версию, чтобы воспользоваться самыми последними криптографическими протоколами и возможностями. Для компиляции FreeS/WAN из исходных текстов следуйте приведенным ниже инструкциям.

  1. Загрузите самый свежий пакет с web-сайта и распакуйте его или скопируйте файл с компакт-диска.
  2. Для компиляции и установки пакета выполните следующие команды от имени пользователя root из каталога FreeS/WAN:
  1. make oldmod

make minstall

  1. После установки пакета FreeS/WAN необходимо перезагрузить систему, чтобы изменения вступили в силу.
  2. Когда система перезагрузится, наберите в командной строке ipsec verify, чтобы проверить установку. Вы должны увидеть сообщение примерно такого вида:
  1. Checkin your system to see if IPsec got installed and started correctly
  2. Version check and ipsec on-path                   [OK]
  3. Checking for KLIPS support in kernel              [OK]
  4. Checking for RSA private key (/etc/ipsec.secrets) [OK]
  5. Checking that pluto is running                    [OK]

 . . .

  1. Если вы получили такую выдачу, можно запускать службу IPsec, набрав команду

service start ipsec
Служба IPsec выполняется в фоновом режиме. Теперь все готово к инициированию сеанса IPsec.
Применение FreeS/WAN
FreeS/WAN можно применять несколькими способами. Один из них предназначен для постоянного соединения "шлюз-шлюз" и называется одноранговым режимом. Этот режим подходит в случае, когда есть два офиса, желающие безопасно общаться через Интернет. Второй метод называется режимом мобильного пользователя. Он предназначен для удаленных пользователей, желающих безопасно подключаться к вашей ЛВС. Наконец, можно оперировать в режиме шифрования "по возможности", когда шифруются соединения с хостами или шлюзами, которые на это способны. Ниже описано, как задать каждый из этих режимов.
Одноранговый режим
В FreeS/WAN используются имена Right (Правый) и Left (Левый) для обозначения двух машин, соединяющихся посредством IPsec. Это никак не связано с направлением или расположением и просто позволяет ссылаться на различные стороны IPsec-соединения. По своему выбору назовите одну машину Left, а другую - Right.

  1. Сначала на машине Right наберите следующую команду, чтобы получить ее открытый ключ:

ipsec showhostkey --right
FreeS/WAN выдаст некоторую информацию об IPsec на этой машине, в том числе ее открытый ключ. После знака равенства будет следовать длинный список случайных на вид цифр. Это и есть ключ. Перепишите это число или воспользуйтесь функцией копирования текстового редактора.

  1. Теперь получите открытый ключ машины Left, применяя ту же самую команду, но с ключом --left.
  2. Перейдите в каталог /etc/freeswan и отредактируйте файл ipsec.conf (в некоторых дистрибутивах этот файл может храниться в /etc). В табл. 9.3 перечислены и описаны параметры, которые необходимо установить в разделе conn net-to-net.

Таблица 9.3. Параметры FreeS/WAN

Параметр

Описание

Left

IP-адрес шлюза IPsec Left

Leftsubnet

Диапазон IP-адресов, прикрываемых шлюзом Left

Leftid

Имя хоста в формате полностью квалифицированного доменного имени и со знаком @ перед ним. Например, @gateway.example.com.

Leftrsasigkey

Ключ, скопированный ранее из машины Left

Leftnexthop

Подразумеваемый шлюз для машины Left. Подразумеваемые настройки должны работать в большинстве случаев

Right

То же, что Left выше, но для машины Right

Rightsubnet

То же, что Leftsubnet выше, но для машины Right

Rightid

То же, что Leftid выше, но для машины Right

Rightrsasigkey

То же, что Leftrsasigkey выше, но для машины Right

Rightnexthop

То же, что Leftnexthop выше, но для машины Right

Auto

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

  1. Оставьте остальные настройки без изменений и сохраните файл.
  2. Скопируйте этот файл на другую машину в то же место.
  3. Примените описанную выше команду ipsec verify, чтобы убедиться, что служба IPsec функционирует на обеих машинах.
  4. Чтобы установить соединение IPsec, наберите

ipsec auto --up net-to-net
Должно появиться сообщение "IPsec SA established". Если это не так, проверьте настройки или изучите оперативную справку на предмет возможных причин неисправностей.
Если вы применяете межсетевой экран с трансляцией сетевых адресов, то, возможно, придется написать для него специальное правило, чтобы он не транслировал сетевой адрес этой машины. Многие новые модели межсетевых экранов автоматически распознают пакеты IPsec и пропускают их без изменения, поэтому этот дополнительный шаг не требуется.

  1. Чтобы проверить соединение, попробуйте выполнить эхо-тестирование внутреннего адреса на другой стороне удаленного шлюза. Если будет получен успешный ответ, значит, туннель IPsec построен и работает.
  2. Если вы на самом деле хотите убедиться, что пакеты шифруются, примените анализатор пакетов, такой как Tcpdump или Ethereal, чтобы попытаться прочитать эти пакеты. Если анализатор идентифицирует пакеты как пакеты ESP (ESP - один из подпротоколов IPsec), а полезная нагрузка будет выглядеть как тарабарщина, значит все работает как надо.
  3. Если вы желаете добавить несколько межсетевых соединений, можно просто добавить еще один раздел с новым заголовком, таким как conn office1-to-office2. Можно также переименовать исходное соединение net-to-net, но оно обязательно должно быть одинаковым в конфигурационных файлах ipsec на обеих машинах.

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

  1. На удаленной машине отредактируйте тот же файл /etc/freeswan/ipsec.conf с помощью следующего шаблона, аналогичного конфигурации net-to-net с небольшими отличиями.
  1.  conn road
  2.  left=%defaultroute
  3.  leftnexthop=%defaultroute
  4.  leftid=@tonyslaptop.example.com
  5.  leftrsasigkey=0sAQPIPN9uI...
  6.  right=192.0.2.2
  7.  rightsubnet=10.0.0.0/24
  8.  rightid=@gateway.example.com
  9.  rightrsasigkey=0sAQOnwiBPt...

 auto=add
В удаленной конфигурации %defaultroute служит для получения вашего динамического IP-адреса.

  1. Сторона Right должна содержать информацию для шлюза. Зайдите на машину шлюза и примените следующий шаблон для файла ipsec.conf:
  1.  conn road
  2.  left=192.0.2.2
  3.  leftid=@gateway.example.com
  4.  leftsubnet=192.0.2.1/24
  5.  leftrsasigkey=0sAQOnwiBPt...
  6.  rightnexthop=%defaultroute
  7.  right=%any
  8.  rightid=@tonyslaptop.example.com
  9.  rightrsasigkey=0sAQPIPN9uI...

 auto=add
Обратите внимание, что строки в файле на шлюзе переставлены, Left обозначает локальную машину, а Right - удаленную, IP-адрес которой задан как %anys. Это метасимвол, допускающий произвольный IP-адрес, так как он станет известен, лишь когда удаленный пользователь попытается установить соединение.

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

ipsec auto --start road
Это, как и раньше, должно инициировать соединение. Если вы не получите сообщение "Ipsec SA established", проверьте настройки или обратитесь к разделу устранения неисправностей на web-сайте FreeS/WAN.

  1. Протестируйте и верифицируйте соединение так же, как для конфигурации net-to-net.
  2. Можно установить несколько удаленных соединений, как в предыдущей процедуре, и переименовать их содержательным образом.

Оппортунистическое шифрование
Если вы хотите воспользоваться данной возможностью FreeS/WAN, то ваш шлюзовый компьютер не должен располагаться позади межсетевого экрана, применяющего трансляцию сетевых адресов (изменение IP-адреса в заголовках нарушит режим проверки заголовков IPsec). Желательно, чтобы IP-адрес шлюза был статическим. Шифрование "по возможности" бывает полным или частичным. В полном режиме вы можете инициировать исходящие соединения IPsec, равно как и другие хосты IPsec могут инициировать сеансы оппортунистического шифрования с вашим шлюзом. В частичном режиме инициировать соединение всегда должен ваш шлюз. В обоих режимах требуется, чтобы вы имели доступ к записи DNS для имени хоста, который вы хотите настроить.
Настройка частичного оппортунистического шифрования (только инициирование)

  1. Сначала отредактируйте запись DNS для имени хоста, которое будете применять при добавлении элемента для ключа. Запись DNS должна соответствовать идентификатору в файле ipsec.conf. В рассмотренном выше примере с мобильным пользователем это gateway.example.com. Выполните следующую команду на шлюзовой машине, чтобы создать эту запись:

ipsec showhostkey --txt @имя_хоста-шлюза
Замените имя_хоста-шлюза именем вида gateway.example.com.
Будет создан текстовый файл с текстовой записью, содержащей ключ и отформатированной в соответствии с синтаксисом DNS.

  1. Вставьте полученную запись в зонный файл этого домена как прямую запись TXT.

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

  1. Убедиться, что сделанные изменения вступили в силу, можно с помощью следующего запроса:

ipsec verify --host gateway.example.com
Должен прийти ответ OK для прямой записи.
Обратный поиск записи работать не будет, но это допустимо, пока вы не пожелаете применить полное оппортунистическое шифрование. Помните, что хотя вы можете успешно опрашивать сервер DNS, другая сторона вашего соединения на это может быть еще не способна. Там также следует выполнить команду проверки.

  1. Когда обе стороны смогут видеть запись DNS, остается только перезапустить службу IPsec, набрав команду

service ipsec restart
Когда она выполнится, все будет готово к работе.
Это все, что требуется, так как FreeS/WAN автоматически сконфигурирует соединение с помощью информации в записи DNS.
Настройка полного оппортунистического шифрования
Чтобы применять полное оппортунистическое шифрование, необходимо иметь на шлюзе статический IP-адрес и располагать полным контролем над записью DNS для него. FreeS/WAN использует обратный поиск DNS для проверки открытого ключа любой машины, которая пытается подключиться. Инструкции здесь точно такие же, как и для частичного режима, за исключением того, что создается еще и обратная запись DNS для имени шлюзового хоста. Создайте текстовый файл таким же образом, как и выше, и после добавления его как прямой записи, добавьте ее и как обратную, связав ее со статическим IP-адресом. Опять же, если вы не знаете, как редактировать файл DNS, попросите помощи. DNS ошибок не прощает. Когда обе записи будут видны из Интернет, следует перезапустить службу IPsec, и можно будет создавать соединения с хостами, поддерживающими оппортунистическое шифрование IPsec.
Взлом паролей
Вы ознакомились с тем, как различными криптографическими методами защитить свою информацию, и как шифровать файлы, сеансы и целые соединения с другими сайтами. В следующем разделе рассматривается средство, помогающее убедиться, что файлы паролей в безопасности. Речь идет о программе взлома зашифрованных паролей. Она выполняет работу, обратную по отношению ко всем средствам данной лекции в том смысле, что пытается расшифровать файл паролей без каких-либо ключей. Она главным образом применяется к файлам паролей, чтобы гарантировать, что у вас нет паролей, которые легко взломать.
В наше время большинство паролей не хранится на сервере в открытом виде. Хранятся хэши паролей, так что пароли не передаются по сети открытым текстом. Однако в некоторых операционных системах схема хэширования слаба и шифр легко взламывается. В худшем случае, если кто-то перехватит файл паролей, он сможет выполнить атаку методом грубой силы на хэши и выяснить некоторые пароли. Это возможно благодаря склонности многих людей выбирать простые пароли. В большинстве операционных систем к паролям можно предъявлять определенные технические требования, но пользователи все равно будут пытаться обойти ограничения с целью облегчить себе жизнь. Тестирование файлов паролей с помощью программ взлома - единственный способ точно узнать, насколько безопасны пароли пользователей.

Утилита John the Ripper была разработана загадочным Солнечным Заговорщиком, чтобы помочь системным администраторам избавиться от слабых паролей, в основном в системах UNIX. Программа использует текстовый файл возможных паролей и проверяет хэш каждого слова из этого файла по файлу паролей. Она даже пробует варианты словарных слов, такие как cat1, cat2 и т.д. После завершения перебора всех слов из текстового файла программа переходит к методам рандомизации и пробует их, пока вы ее не остановите. Она поставляется с файлом базовых слов. Кроме того, вы можете загрузить дополнительные файлы слов для различных операционных систем или создать свои собственные.
Программа доступна для операционных систем UNIX и Windows. Так как она имеет командный интерфейс, то основные операции в обеих системах одинаковы. Ниже описаны процессы установки для Windows и UNIX.

Установка в Windows

  1. Загрузите бинарный пакет Windows с Web-сайта или с прилагаемого к книге компакт-диска и распакуйте файл в отдельном каталоге.
  2. На самом деле установки как таковой в Windows не требуется. Просто разместите файлы по своему выбору и запускайте программу из этого каталога с помощью соответствующих команд. При желании можно добавить этот каталог в список поиска, если вы хотите запускать John the Ripper из любого места. В противном случае перейдите в каталог john/run, чтобы получить доступ к бинарным файлам, и запустите программу.

Установка в UNIX

  1. Загрузите и "растарьте" файлы исходных текстов с web-сайта или с прилагаемого к книге компакт-диска.
  2. Выполните следующую команду из каталога src, который будет создан:

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

  1. Выполните следующую команду, подставляя свой тип системы из списка поддерживаемых:

make тип_системы
Команда соберет программу и поместит основные бинарные программные файлы в каталог john/run.

  1. Перейдите в этот каталог. Все готово к запуску John the Ripper.

Применение программы John the Ripper

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

Файл хэшей паролей выглядит примерно так, как показано на листинге 9.1.
root:$1$%8_pws/,$3ABCmAmVVtBbgXc1EpAZ7.:12080:0:99999:7:::
bin:*:12080:0:99999:7:::
daemon:*:12080:0:99999:7:::
adm:*:12080:0:99999:7:::
lp:*:12080:0:99999:7:::
sync:*:12080:0:99999:7:::
apache:!!:12080:0:99999:7:::
postfix:!!:12080:0:99999:7:::
mysql:!!:12080:0:99999:7:::
tony:$1$bFIb/_R$6RFzrkqq6nY4zTkmWQ8xV0:12080:0:99999:7:::
Случайная по внешнему виду последовательность символов после имени счета - хэш пароля. Именно с ней работает John the Ripper.

  1. Текстовый файл password в каталоге John the Ripper содержит подразумеваемый список слов. Его можно пополнять, если вы хотите, чтобы были проверены несколько специфических паролей. При желании можно заменить его собственным словарем.
  2. Чтобы запустить John the Ripper, наберите команду

john проверяемый_файл_паролей
Во время работы на экран выдаются пароли, которые удалось взломать. Большинство словарных слов будет просмотрено за несколько минут. Во многих ситуациях это слишком долго, но если вы хотите выполнять программу дольше, чтобы на самом деле протестировать пароли, то процесс можно запустить в фоновом режиме.
Можно также прервать процесс тестирования и вернуться к нему позже. Нажмите Ctrl+C один раз, чтобы остановить тестирование и сохранить результаты в файле с именем john.pot. Отметим, что в результате двукратного нажатия Ctrl+C поиск будет завершен без сохранения результатов.

  1. Можно просмотреть взломанные к текущему моменту пароли, вводя:

john -show проверяемый_файл_паролей

  1. Если вы хотите возобновить процесс взлома паролей, воспользуйтесь командой

john -restore
И это почти все о программе John the Ripper. Счастливого взлома! (Только своих паролей, естественно). Если вы обнаружите слабые пароли, то можно пойти к их владельцам и попросить изменить пароль, или установить на сервере политику, требующую более сильных паролей.

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика