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