реклама
ЭКСПЕРТИЗА САЙТОВ НА СЛИВ ИНФОРМАЦИИ

ВОССТАНОВЛЕНИЕ ИНФОРМАЦИИ С РАЗЛИЧНЫХ НАКОПИТЕЛЕЙ В КИЕВЕ
реклама

proxy  статьи  библиотека  softice  free_юр.консультация  hard
рекламодателям  расшифровка штрих-кодов  links/add

http://kiev-security.org.ua

Содержание

Некоторые понятия криптографии

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

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

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

Исходное сообщение ВРЕМЯ - ДЕНЬГИ

Зашифрованное сообщение ГСЖНА - ЕЖОЭДЙ

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

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

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

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

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

В реальность таких методов сначала трудно поверить, поэтому приведем два простых примера.

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

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

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

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

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

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

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

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

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

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

Этот алгоритм называется алгоритмом открытого распределения ключей, или - по именам авторов, исследователей из Стэнфорда - алгоритмом Диффи-Хеллмана.

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

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

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

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

Цифровая подпись - это некоторый "довесок" к любой информации, который уже не позволит отрицать подлинность этой информации. А при каких условиях невозможно отрицать подлинность информации?

  1. Если есть уверенность, что только конкретное лицо может произвести информацию (подписать ее).
  2. Если после того, как это лицо подписало информацию, никто не может ее изменить так, что это останется незамеченным.

Как же устроена цифровая подпись? Вы уже достаточно знакомы с элементами криптографии, чтобы сразу ("без ларцов") ознакомиться с алгоритмом:

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

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

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

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

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

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

Очень важным алгоритмом, применяющимся в технологии электронных наличных платежей, является слепая подпись (blind signature).

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

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

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

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

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

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

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

  1. Только имеющий право голоса может голосовать.
  2. Никто не может голосовать более одного раза.
  3. Никто не может определить, кто конкретно за кого голосовал.
  4. Никто не может подменить чей-либо выбор.
  5. Любой голосовавший может проверить, что его голос правильно учтен при подсчете результатов.
  6. Все знают, кто проголосовал, а кто нет.

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

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

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

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

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

В платежных системах Internet, CyberCash например, реально используются алгоритмы RSA c длиной ключа 1024 бит, при этом Рон Ривест (Ron Rivest), один из разработчиков RSA, подсчитал, что для того, чтобы "пробить" криптотекст, зашифрованный с помощью ключа длиной 512 бит, нужно потратить 8,2 млн долларов.

Александр Демидов

Некоторые криптографические алгоритмы,
разработанные и применяемые в России, США и Европе

Алгоритмы
США, Европа
Россия
Шифрование с закрытым ключом блочный, поточный DES*1, IDEA*3, RС2*2, RC4*2, RC5*2 ГОСТ 28147-89*7, ВЕСТА-2*8, ВЕСТА-2М*8, ВЕСТА-4*8
Шифрование с открытым ключом RSA*2 LC1*9
Открытое распределение ключей Diffie-Hellman*4 Diffie-Hellman*4, АФИНА*8
Цифровая подпись RSA*2, DSA*1, Schnorr*5 ГОСТ Р 34.10*7, Нотариус-АМ*8, Нотариус-S*8
Слепая подпись Chaum*6 LBS1*8

1 - Алгоритмы, являющиеся национальным стандартом США.
2 - Алгоритмы, являющиеся собственностью RSA Data Security, Inc. (США).
3 - Алгоритм Дж. Месси - собственность Ascom-Tech AG (Швейцария).
4 - Срок действия патента на алгоритм Диффи-Хеллмана (Diffie-Hellman) США истек 29 марта 1997 года.
5 - Алгоритм Клауса Шнора (Klaus Schnorr, Германия).
6 - Алгоритм, разработанный Давидом Шомом (David Chaum) - DigiCach BV (Нидерланды).
7 - Алгоритмы, являющиеся государственным стандартом РФ.
8 - Алгоритмы, являющиеся собственностью "ЛАН" Крипто (Россия).

Содержание

HOME


Если у вас есть сайт или домашняя страничка - поддержите пожайлуста наш ресурс, поставьте себе кнопочку, скопировав этот код:

<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a>

Идея проекта(C)Anton Morozov, Kiev, Ukraine, 1999-2019, security2001@mail.ru