Стандарт шифрования данных DES и его практическая реализация


ОРГАНИЗАЦИЯ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ

Стандарт шифрования данных DES (Data Encryption Standard) является одним из известных алгоритмов криптографической защиты данных, используемых до недавне­го времени в США. Этот стандарт — типичный представитель криптоалгоритмов, ис­пользующих симметричное шифрование. Благодаря таким качествам, как обеспече­ние высокого уровня защиты информации, простота и экономичность в реализации, он нашел широкое применение в различных областях государственной и военной дея­тельности. Рассмотрим детально принцип шифрования данных с помощью алгоритма

DES.

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

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

Приведенная схема описывает как процесс шифрования, так и расшифровки ин­формации. Алгоритм шифрования данных преобразует открытый текст в шифротекст или наоборот, в зависимости от режима использования. Как видно из структурной схе­мы, алгоритм имеет два входа по 64 бита каждый: один — для шифруемого открытого текста (при дешифровке — для шифротекста), другой — для ключа, и один 64-битный выход для полученного шифротекста (при расшифровке — для открытого текста). Из 64-х бит ключа непосредственно в процессе шифрования участвуют только 56 бит. Это связано с тем, что ключ представляется в виде восьмибитовых символов кода ASCII, каждый символ которого имеет один бит проверки на четность. Именно эти провероч­ные биты и не используются в алгоритме DES.

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

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

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

Из правого регистра 32 бита посту­пают на вход блока расширенной пе­рестановки, который производит их регулярное преобразование таким об­разом, что первый, четвертый, пятый

и восьмой биты каждого из четырех октетов преобразуемых бит используются дваж­ды. Таким образом, на выходе блока расширенной перестановки появляется уже не 32, а 48 бит. Правило преобразования данных в блоке расширенной перестановки пред­ставлено на рис. 4.8. Как видно из рисунка, при расширенной перестановке 1-й выход­ной бит соответствует 32-му входному биту, 2-й выходной бит — 1-му входному и т. д. С выхода блока расширенной перестановки полученные 48 бит данных поступают на сумматор по модулю 2, где складываются с 48 битами ключа шифрования. Полу­ченные в результате этой операции 48 бит данных разделяются на 8 секстетов, посту­пающих на 8 соответствующих S-блоков замены. С выходов S-блоков 32 бита (8 раз по 4 бита) поступают на блок простой перестановки, задаваемой табл. 4.1, согласно ко­торой в простой перестановке 1-й выходной бит равен 16-му входному, 2-й выходной бит — 7-му входному и т. д.

Таблица 4.1. Правило простой перестановки

       
  ,12      
       
      1.0  
       
       
       
       

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

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

Блоки замены в алгоритме DES (в литературе обычно обозначаемые как S-блоки) имеют 6-битные входы и 4-битные выходы. Правило замены в каждом S-блоке опреде­ляется соответствующими таблицами SI—S8, представленными ниже.

Первый и последний биты 6-битного входа каждого S-блока задают число в диапа­зоне от 0 до 3, которое определяет номер строки в таблице замены, биты 2—5 задают число в интервале 0— 15, определяя таким образом номер элемента таблицы замены в соответствующей строке. Каждый элемент таблицы замены, представленный в двоич­ном виде, определяет 4 бита на выходе соответствующего S-блока.

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

Регистр D  
             
             
             
             

64 бита исходного ключа преобразуются в первом блоке сокращенной перестанов­ки, где отбрасывается каждый восьмой бит. Если исходный ключ записан в виде 8-и символов кода ASCII, то каждый восьмой отбрасываемый бит является избыточным битом проверки на четность. Результат, полученный в блоке сокращенной переста­новки 1, — 56 бит, записывается в регистры С и D, содержащие по 28 бит каждый. Правило перестановки первого блока сокращенной перестановки, с учетом распреде­ления выходных данных по регистрам, задается следующими таблицами:

Регистр С  
             
             
             
             

 

S2  
                                 
                                 
                                 
                                 
 
                                 
                                 
                                 
                                 
 
                                 
                                 
                                 
                                 
S5  
                                 
                                 
                                 
                                 
                                                           

8<

                                 
    1$                              
                                 
                                 
                                 
                                 
                U                  
                                 
s.  
          в                        
                                 
                                 
                              в    
                                         

Согласно этим таблицам, первый бит регистра С соответствует 57-му биту исход­ного ключа шифрования, а первый бит регистра D — 63-му биту ключа шифрования.

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

Цикл 12 3 45 6 7 8 9 10 11 12 13 14 15 16 Сдвиг 1122222212222221

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

Таблица 4.2. Порядок второй сокращенной перестановки

    И        
           
           
           
           
           
           
           

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

Цикл 1 2 3 4 5 6 7 8 9 10 И 12 13 14 15 16 Сдвиг О 1 2 2 2.2 2 212222221

Таким образом, процесс расшифрования является инверсным по отношению к шиф­рованию данных.

Одна из широко распространенных систем криптографической защиты, использу­ющая стандарт DES, — разработанная в середине 80-х годов прошлого столетия сис­тема KerberoSj использование которой предполагает наличие высоконадежного серве­ра, хранящего исходные копии ключей для взаимодействия с каждым пользователем. Эта система представляет собой часть спецификации открытой вычислительной сре­ды DCE (Distributed Computing Environment) фонда OSE

Среди предлагающих продукты на базе DCE такие компании, как IBM и Hewlett-Packard. Kerberos должна стать также частью системы защиты Windows NT 5.0. На практике криптографические системы с секретными ключами, как правило, быстрее

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

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

Kerberos имеет структуру типа «клиент-сервер» и состоит из клиентских частей, установленных на всех компьютерах сети (рабочие станции пользователей и серве­ры), и Kerberos-сервера (или серверов), располагающегося на каком-либо (не обяза­тельно выделенном) компьютере. Kerberos-сервер, в свою очередь, делится на две рав­ноправные части: сервер идентификации (authentication server) и сервер выдачи разрешений (ticket granting server). Следует отметить, что существует и третий сервер Kerberos, который, однако, не участвует в идентификации пользователей, а предназна­чен для административных целей. Область действия Kerberos (realm) распространяет­ся на тот участок сети, все пользователи которого зарегистрированы под своими име­нами и паролями в базе Kerberos-сервера и где все серверы обладают общим кодовым ключом с идентификационной частью Kerberos. Эта область не обязательно должна быть участком локальной сети, поскольку Kerberos не накладывает ограничения на тип используемых коммуникаций. Упрощенно модель работы Kerberos можно опи­сать следующим образом.

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

Пользователь (это клиентская часть Kerberos, установленная на рабочей станции пользователя) направляет запрос идентификационному серверу на выдачу «разреше­ния на получение разрешения» (ticket granting ticket), которое даст возможность обра­титься к серверу выдачи разрешений. Идентификационный сервер адресуется к базе данных, хранящей информацию о всех пользователях, и на основании содержащегося в запросе имени пользователя определяет его пароль. Затем клиенту отсылается «раз­решение на получение разрешения» и специальный код сеанса (session key), которые шифруются с помощью пароля пользователя, как ключа. При получении этой информации пользователь на его рабочей станции должен ввести свой пароль, и если он совпадает с хранящимися в базе Kerberos-сервера, «разрешение на получение разре­шения» и код сеанса будут успешно расшифрованы. Таким образом решается пробле­ма с защитой пароля — в данном случае он не передается по сети.

После того как клиент зарегистрировался с помощью идентификационного сер­вера Kerberos, он отправляет запрос серверу выдачи разрешений на получение дос­тупа к требуемым ресурсам сети. Этот запрос (или «разрешение на получение раз­решения») содержит имя пользователя, его сетевой адрес, отметку времени, срок жизни этого разрешения и код сеанса. Запрос зашифровывается два раза: сначала с помощью специального кода, который известен только идентификационному серве­ру и серверу выдачи разрешений, а затем, как уже было сказано, с помощью пароля пользователя. Это предотвращает не только возможность использования разреше­ния при его перехвате, но и делает его недоступным самому пользователю. Чтобы сервер выдачи разрешений дал клиенту доступ к требуемым ресурсам, недостаточ­но только «разрешения на получение разрешения». Вместе с ним клиент посылает так называемый аутентикатор (authenticator), шифруемый с помощью сеансового ключа и содержащий имя пользователя, его сетевой адрес и еще одну отметку вре­мени. Сервер выдачи разрешений расшифровывает полученное от клиента «разре­шение на получение разрешения», проверяет, не истек ли срок его «годности», а затем сравнивает имя пользователя и его сетевой адрес, находящиеся в разрешении, с данными, которые указаны в заголовке пакета пришедшего сообщения. Однако на этом проверки не заканчиваются.

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

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

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

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

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

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

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

Следует отметить также, что для всех описанных выше процедур идентификации необходимо обеспечить доступ к базе данных Kerberos только для чтения. Но иногда требуется изменять базу, например, в случае изменения ключей или добавления но­вых пользователей. Тогда используется третий сервер Kerberos — административный (Kerberos Administration Server). He вдаваясь в подробности его работы, отметим, что его реализации могут различаться (так, возможно ведение нескольких копий базы од­новременно).

При использовании Kerberos-серверов сеть делится на области действия. Схема доступа клиента, находящегося в области действия одного Kerberos-сервера, к ресур­сам сети, расположенным в области действия другого, осуществляется следующим образом.

Оба Kerberos-сервера должны быть обоюдно зарегистрированы, то есть знать об­щие секретные ключи и, следовательно, иметь доступ к базам пользователей друг дру­га. Обмен этими ключами между КегЬегознеёрверами (для работы в каждом направле­нии используется свой ключ) позволяет зарегистрировать сервер выдачи разрешений каждой области как клиента в другой области. После этого клиент, требующий досту­па к ресурсам, находящимся в области действия другого Kerberos-сервера, может по­лучить разрешение от сервера выдачи разрешений своего Kerberos по описанному выше алгоритму.

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

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

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