среда, 4 июля 2012 г.

Безопасность

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

 почтовые переводы;

 чеки;

 кредитные карточки;

 расчет в кредит (или предоплата);

 электронные деньги.

Очевидно, что первый вариант неприемлем из за малой скорости,
неудобства и ненадежности расчетов для покупателя. Второй в условиях
российской действительности еще не приобрел должной популярности.
На Западе при расчетах через Интернет наиболее популярны кредитные
карточки. Обычно расчет происходит следующим образом: покупатель
выбирает в электронном магазине понравившиеся товары или услуги,
заполняет бланк заказа, указывает компанию, номер и «срок годности»
своей кредитки, нажимает кнопку и информация отправляется продавцу. На компьютере продавца установлена специальная программа, отправляющая номер кредитки и сумму заказа в банк, который проверяет,
достаточно ли денег на счете у клиента для оплаты. Если результат положительный, продавцу сообщается, что клиент платежеспособен и заказ можно выполнять. Это удобный и испытанный механизм, однако, к сожалению, еще далеко не все российские граждане обзавелись кредитными картами.
Другой способ связан с практикой выпуска некоторыми крупными российскими фирмами, имеющими свою сеть магазинов, собственных магнитных карт. Покупатель делает начальный взнос, и ему выдается магнитная карточка, на которой записана сумма этого взноса. При помощи карточки он оплачивает покупку в любом магазине фирмы без наличных денег. Вполне естественно было бы присвоить каждой карточке
известный только владельцу уникальный номер, который можно было
бы использовать при покупках в режиме онлайн в электронном магазине
той же фирмы, не выходя из дома. Поскольку большинство клиентов подобных фирм — вполне состоятельные люди, домашний компьютер с
подключением к Интернет не будет для них слишком большой роскошью. Перспективность этого способа связана еще и с тем, что все расчеты происходят между магазином и клиентом без непосредственного участия банка и нет необходимости ждать, когда тот обзаведется собственной системой обработки электронных транзакций.
И наконец, существует еще один способ расчетов. Это многообещающий и интенсивно развивающийся метод «электронных денег». Он заключается в том, что покупатель и продавец обмениваются блоками информации, которые являются настоящими электронными банкнотами.
 
Секретность расчетов
Конечно, идея была прекрасной — воспользоваться Интернет для
пересылки номеров кредитных карточек. Однако Сеть весьма демократична — по приблизительным подсчетам на пути к месту назначения пакет информации проходит через десяток компьютеров и при желании администратор любого из них может воспользоваться вашей кредиткой для собственных нужд. Не слишком приятная перспектива, не правда ли?
Разумеется, оплата с помощью кредитки — не единственный вариант, однако для любого из перечисленных выше способов общее и самое главное требование — секретность.
Никто, кроме продавца, покупателя и обслуживающего их банка, даже теоретически, не должен иметь доступ к передаваемой информации. Более того, необходимо учитывать возможность нечестного поведения как со стороны продавца, так и со стороны покупателя. Продавец может воспользоваться полученными сведениями, чтобы перевести со счета покупателя на свой счет больше, чем полагается, покупатель же в свою очередь может впоследствии оспорить сделку и при отсутствии законных доказательств ее совершения вернуть себе деньги. Банк полагается честным a priori (ну, должен же хоть кто нибудь быть честным!).
Способ обезопасить данные при передаче известен давно — это шифрование. Простейший вид шифра — подстановочный: символы заменяются другими по определенному правилу. Ключом в таком случае
служит таблица соответствия обычного и зашифрованного сообщений.
К сожалению, такие шифры слишком легко поддаются расшифровке.
Вспомним, например, «Записки о Шерлоке Холмсе», рассказ «Пляшущие человечки». Великому сыщику потребовалось всего четыре коротких записки, чтобы прочитать пятую. Однако со времен Конан Дойля многое изменилось. Разработкой систем шифрования интенсивно занимались военные, испытывающие настоятельную потребность в безопасной передаче сообщений, а в серьезности их намерений, я думаю, никто не сомневается. Развитие вычислительной техники также стимулировало
прогресс в данной области.
Сегодня существуют два принципиально различных класса систем
шифрования, или, используя современную терминологию, криптосистем: симметричные — с секретным ключом (secret key) и несимметричные — с открытым ключом (public key). Примером симметричного шифра является упомянутый выше подстановочный — обе стороны, чтобы обмениваться сообщениями, должны иметь один и тот же ключ, который необходимо хранить в тайне от окружающих, поскольку любой человек, обладающий им, может как прочитать, так и написать зашифрованное сообщение. Последний вариант тоже очень важен. Вспомним еще раз Шерлока Холмса: послав злоумышленнику зашифрованное сообщение, он сумел обмануть его. Кроме того, существует проблема передачи самого ключа. Если один человек хочет послать другому секретное послание, он должен сначала встретиться с ним лично и передать ключ. Посредничество третьих лиц увеличивает риск утечки информации, а при работе в Сети вообще сводит на нет смысл электронной сделки. Между тем есть общепринятый стандарт шифрования с секретным ключом — Data
Encryption Standard (DES), который широко используется финансовыми
компаниями для передачи закрытой информации, например для управления банкометом по обычной телефонной линии.
Несимметричные криптосистемы содержат два ключа, причем то, что зашифровано с помощью первого из них, может быть расшифровано
только с помощью второго. Даже зная ключ, взятый для шифрования, вы
не сможете прочесть сообщение. Поначалу это с трудом укладывается в
голове, но это действительно так! Подобные свойства открывают очень
широкие возможности для безопасной передачи информации, и на них
базируется большинство современных систем электронных платежей.
Практически во всех этих системах применяется технология электронной подписи, которая является следствием удивительных свойств несимметричных криптосистем.
В системе, использующей электронную подпись (или любую другую технологию, основанную на несимметричной криптосистеме), каждый пользователь получает свою пару ключей, один из которых он хранит в строгой тайне (это персональный ключ, secret key), а другую делает
доступной всем желающим (это открытый ключ, public key), например
помещает на общедоступный сервер. Обычно ключи выдаются банком, и
банк же владеет сервером (key server), предоставляющим доступ к открытым ключам. Когда возникает необходимость подписать посылаемое по Сети сообщение, пользователь при помощи стандартного алгоритма
(Secure Hash Algorithm, SHA) генерирует некую сжатую характеристику
сообщения, которая в англоязычной литературе называется message
digest. Ближайшим аналогом ее может служить хорошо известная контрольная сумма. Основными свойствами этой характеристики являются:
уникальность, то есть очень малая вероятность совпадения двух различных сообщений;
необратимость, то есть невозможность восстановить по характеристике исходное сообщение.
Затем message digest шифруется с помощью персонального ключа (это и есть электронная подпись) и отправляется вместе с сообщением.
Получатель расшифровывает электронную подпись с помощью открытого ключа, взятого с сервера сертифицированной организации (банка), генерирует с тем же стандартным алгоритмом SHA характеристику сообщения и сравнивает полученные величины. При их совпадении он может быть уверен в том, что:
сообщение принадлежит именно отправителю и никому другому, поскольку только он мог зашифровать его своим персональным ключом;
оно получено без изменений, что гарантируется свойствами SHA.
Таким образом, электронная подпись обладает теми же свойствами, что и обычная «чернильная», то есть полностью идентифицирует своего обладателя, а кроме того, гарантирует целостность сообщения, чего обычная подпись обеспечить не может.
Соблюдение секретности персонального ключа в таких системах — забота только его владельца, поскольку он является единственным человеком, знающим данный ключ. Отсюда, кстати, вытекает еще одно существенное свойство — «неотпираемость» (от слова «отпираться»). В системах с симметричным ключом ключ всегда известен нескольким людям, и в случае «взлома» системы при отсутствии прямых улик невозможно установить, где произошла утечка информации. При использовании же несимметричной криптосистемы владелец ключа не может «свалить» ответственность на другого человека, поскольку «другого» просто нет.
Наиболее известным в настоящее время алгоритмом шифрования с несимметричным ключом является RSA, названный по именам его создателей: Rivest, Shamir и Adleman. Он содержится в большинстве существующих систем электронных платежей. Используемые ключи обычно имеют размер порядка 1024 бит, что обеспечивает необходимую устойчивость системы к попыткам «взлома». Очевидно, что операции с такими величинами не отличаются высокой скоростью, поэтому, как правило, применяется смешанная схема, где шифрование при помощи открытого ключа происходит только для передачи обычного секретного ключа, которым зашифровано само сообщение. Подобный механизм реализован в популярной бесплатной программе шифровки почтовых сообщений PGP (Pretty Good Privacy) Фила Циммермана (Phil Zimmermann). Другой алгоритм получения секретного ключа при открытом канале связи назы вается протоколом согласования ключей Диффи Хельмана (Diffie
Hellman, DH).
Вообще преобразования, обладающие подобными свойствами, в математике называются односторонними функциями (one way function)
или ловушками (trap door) и широко используются в современных криптосистемах.
Рассмотрим его на примере. Предположим, Борис и Елена решили втайне от своего шефа создать при помощи данного алгоритма секретный ключ для обмена сообщениями. Для этого каждый из них должен взять достаточно большое простое число, причем каждый — свое, преобразовать числа, применив некую стандартную одностороннюю функцию, и обменяться результатами. Некоторая комбинация результатов и будет общим секретным ключом. Интересно, что для вычисления ключа каждый из них использует «задуманное» им простое число. Даже если шеф перехватит в сети оба числа, он не сможет сконструировать секретный ключ. Однако он может оказаться хитрее, самостоятельно «загадать» два достаточно больших (порядка 20 000) простых числа и, проделав соответствующие вычисления, послать одно из них Борису, а другое —
Елене, оставив результаты у себя. Затем он вычислит секретные ключи и,
принимая сообщения от одного из них, будет читать их посредством второго, при необходимости изменяя и пересылая по назначению сообщения, зашифрованные другим ключом. Обман не будет раскрыт до тех пор, пока Борис и Елена не встретятся лично и не решат уволиться от шефа обманщика.

Комментариев нет:

Отправить комментарий