Документы без печатей — Шифрование электронного документа
Документы без печатей — Шифрование электронного документа
Автор: Игорь Орещенков
Источник: © компьютерная газета
Информационные технологии шагают по планете. Пожалуй, уже сложно найти организацию, предприятие или фирму, офис которой не освещали бы экраны мониторов. Компьютеризация делопроизводства — свершившийся факт. Вспомним, как все начиналось. Увеличивалась емкость магнитных носителей информации. В популярных статьях авторы вещали о том, сколько страниц текста (потом — книг, «Больших советских энциклопедий», библиотек…) можно записать на дискету или жесткий диск. Появились оптические носители невообразимой емкости. Печатные машинки ушли в прошлое, уступив место компьютерам. Секретари хранят подготовленные шаблоны документов и перед распечаткой лишь подставляют нужные данные вместо того, чтобы всякий раз «отстукивать» полный текст.
В околокомпьютерных кругах витают оптимистические ожидания сокращения объема бумажной документации, оценивается экономический эффект от переноса информации с бумаги «в цифру», подсчитываются кубометры спасенных от вырубки зеленых насаждений. В то же самое время исследования, которые были проведены в странах с развитой информационной инфраструктурой, показали не уменьшение, а, наоборот, увеличение расхода бумаги. И дело не только в том, что современные принтеры в случае небольшой опечатки, допущенной сотрудником в тексте договора или платежного документа, позволяют производить макулатуру со скоростью от 12 листов в минуту. Ведь документ можно было бы вообще не распечатывать, ошибку исправить прямо в файле и передать партнерам или банку файл с корректным документом — и никакой бумаги. Ведь прочитать документ можно и с экрана монитора. Однако, ведя дела таким образом, можно попасть в ситуацию, когда недобросовестный партнер исправит в подготовленном вами договоре сумму сделки и предъявит вам этот файл как исходный. Как определить, что в файле сохранено именно то соглашение, которое было достигнуто в результате переговоров? По дате и времени внесения изменений? Но ведь эта информация подвержена несанкционированному изменению точно так же, как и текст документа! По размеру файла?
Но ведь число «1.000.000» занимает в файле столько же места, что и «9.999.999»! Неужели тупик? Неужели созданная инфраструктура, позволяющая передавать текст, звук и изображения практически мгновенно из одной точки земного шара в другую, способная многократно ускорить ведение бизнеса, а значит, увеличить его прибыльность, бессильна помочь в случаях, когда требуется оттиск печати и собственноручная подпись? Как известно, любая техническая проблема может быть успешно решена, если для ее решения предоставлено достаточное количество времени и денег. Описанная выше ситуация не стала исключением. Информационные технологии оказались слишком привлекательной сферой для большого бизнеса. А отсчет времени начался с тех незапамятных времен, когда Мухамед ибн Муса ал-Хорезми, уроженец Хивы, впервые сформулировал правила выполнения арифметических действий над целыми числами и простыми дробями. Однако обо всем по порядку.
Чтобы рассказать о том, как защитить файлы с текстами договоров, соглашений, обязательств, отчетов, платежных инструкций от несанкционированных изменений, нужно затронуть тему криптографии. За многие века тайнопись (так переводится с греческого слово «криптография») прошла длинный путь от искусства составления головоломок до науки, базирующейся на прочном математическом фундаменте. Именно использование математических методов для выполнения обратимого преобразования текстов в непроизносимую кашу из букв, цифр, знаков препинания и прочих графических символов позволило создать стойкие шифры. Может возникнуть вопрос, какое отношение имеет математика к обработке текстов?
Но ведь текст состоит из слов, а слова, в свою очередь, состоят из букв (в этой статье не рассматриваются тексты на восточных языках, записанные с использованием иероглифов). Упорядоченное множество букв составляет алфавит того языка, на котором написан текст. Буквы алфавита можно пронумеровать, то есть каждой из них можно поставить в соответствие число. Иными словами, существует взаимно однозначное соответствие между множеством букв и подмножеством натуральных чисел. А раз так, то от рассмотрения букв можно перейти к рассмотрению чисел. C числами можно выполнять арифметические действия. Арифметические действия могут выстраиваться в длинные цепочки. Способ, с помощью которого из одного числа получается другое, называется функциональным преобразованием и записывается в виде Y = F (X), где X — аргумент функции F, а Y — ее результат. После выполнения преобразований от чисел можно снова вернуться к буквам, из получившихся букв можно сложить слова и получить текст, который, скорее всего, будет нечитаемым. Таким образом получается шифротекст — запись исходного текста в виде, непригодном для прочтения.
Чтобы расшифровать текст, нужно выполнить обратные действия, то есть операцию X = F-1(Y), где F-1 — обратное функциональное преобразование. Можно придумать, и было придумано, множество способов выполнения криптографических преобразований F и F-1 — от наивных (в которых каждая буква текста заменяется на соседнюю в алфавите) до весьма хитроумных. Однако практика показала, что шифры, основанные на секретности способа преобразования не являются достаточно стойкими. Гораздо лучше, когда шифротекст, получающийся при шифровании, зависит не только от исходного текста и способа преобразования, но и от дополнительного параметра, или, как его назвали, ключа шифрования K. Тогда даже в том случае, когда известны сами преобразования (последовательности действий) F и F-1, расшифровать текст невозможно без знания секретного ключа K. Криптографические методы вида Y= F(X, K); X= F-1(Y, K) (1), в которых для шифрования текста и его расшифровки используется один и тот же ключ K, получили название симметричных алгоритмов шифрования. Эти алгоритмы получили широкое распространение. В компьютерных системах они обеспечивают конфиденциальность информации, хранимой на машинных носителях и передаваемых по каналам связи. Еще раз отметим, что зашифрованные таким способом файлы невозможно прочитать без знания пароля — ключа, с использованием которого производилось шифрование.
Однако математики на этом не остановились. Ими был открыт еще один очень интересный способ шифрования. Оказывается, существуют функции, для которых очень легко выполнить преобразование R=G(Q), но обратное преобразование чрезвычайно трудоемко. Настолько, что, если на одну элементарную операцию этого преобразования тратить один квант энергии, то для вычисления Q=G-1(R) не хватит мощностей всей энергосистемы Земли. Запомним этот примечательный факт. Но что же с ним делать? Очевидно, что два числа Q и R связаны между собой преобразованием G. Следовательно, пары таких чисел можно рассматривать как самостоятельные объекты. Обратим внимание на то, что новую пару чисел Q и R получить легко, а вот по имеющемуся числу R восстановить число Q практически невозможно. Были найдены такие криптографические преобразования F и F-1, в которых для того, чтобы зашифровать текст, нужно было использовать в качестве ключа число Q, а чтобы его расшифровать — число R (не забываем, что Q и R — не какие-нибудь произвольные числа, а пара чисел, связанных между собой преобразованием G). Или, более лаконично, Y=F(X, Q); X=F-1(Y, R) (2). То есть, если текст зашифровать с использованием какого-нибудь ключа, то этот ключ будет абсолютно бесполезен при расшифровке текста. Чтобы расшифровать зашифрованный таким способом текст, необходим другой ключ, который легко вычислить на основе ключа, использованного при шифровании. Но вот зная ключ для расшифровки, вычислить ключ шифрования не удастся. Из-за такого неравноправия ключей описанные методы шифрования получили название асимметричных алгоритмов. Заметим только, что выбор ключа из пары чисел {Q, R} осуществляется произвольно. С таким же успехом для шифрования можно было использовать число R, но тогда для расшифровки пришлось бы воспользоваться числом Q.
Для открытия способа, которым можно защитить текст от несанкционированного изменения, осталось сделать один шаг. Пусть у нас имеется некоторый текст X. Мы можем зашифровать его с использованием асимметричного алгоритма и ключа Q. Получится абракадабра шифротекста Y. Если в исходном тексте X заменить хотя бы одну букву и снова выполнить шифрование, то получится тоже абракадабра, но совсем не похожая на предыдущую. Оно и понятно. А что же дальше? Шифротекст Y можно передать кому угодно вместе с ключом расшифровки R. Но ведь тогда же этот «кто угодно» может запросто прочитать зашифрованное сообщение! Правильно, сможет. И пусть расшифровывает и читает. Ведь наша цель состояла в другом. Вспомнили? Что будет, если «кто угодно» изменит хотя бы одну букву в шифротексте Y? Да этот шифротекст просто потеряет всякий смысл. Его невозможно будет расшифровать ключом R, да и, скорее всего, никаким другим ключом тоже. Значит, наша цель достигнута? Без нашего ведома никто не сможет изменить текст и выдать его за исходный.
Зачем же автору понадобилось рассказывать про мудреные асимметричные алгоритмы шифрования? Ведь при использовании гораздо более понятного симметричного алгоритма можно получить тот же самый результат: взять ключ K, зашифровать текст X, получить шифротекст Y и передать его вместе с ключом… Вы хорошо подумали? Допустим, «некто» получил Y и K, выполнил расшифровку, и ему не совсем понравилось содержание исходного текста. Настолько не понравилось, что он взял да и чуть-чуть его изменил, в результате чего получился текст X-штрих (по которому вы должны этому «некто», предположим, N-значную денежную сумму). А потом спокойненько зашифровал его ключом K и представил на суд шифротекст Y-штрих. Как вы сможете доказать, что это — не то, что вы хотели сказать?
Чтобы этого не произошло, приходится использовать более сложные, но единственно возможные в описанной ситуации асимметричные алгоритмы шифрования. Из приведенного примера должно быть понятно, что при использовании асимметричных алгоритмов ключ шифрования Q нужно хранить в секрете. Ведь с его помощью можно из любого открытого текста получить шифротекст, который подлежит расшифровке (а значит, и проверке) с помощью открытого ключа R. Если секретный ключ Q станет известен злоумышленнику (в такой ситуации говорят, что ключ Q скомпрометирован), то этот злоумышленник сможет зашифровать любой документ и представить его от вашего имени. Напротив, хранить открытый ключ R нет никакого смысла. Его предназначение как раз в том и состоит, чтобы любой желающий мог расшифровать созданный вами шифротекст и таким образом убедиться в его подлинности. Из-за описанных особенностей ключей асимметричные алгоритмы иногда называют алгоритмами с открытым ключом.
Говорят, что в старые времена разрубали монету и давали по одной половинке двум гонцам. Даже если они не были знакомы между собой, при встрече они могли сложить имеющиеся у них части монеты и убедиться, что служат общему делу. Для образности можно сравнить монету с ключом асимметричной криптографии, а части этой монеты — соответственно с секретным и открытым ключами. Вспомним о том, что секретный и открытый ключи, вообще говоря, взаимозаменяемы. То есть, если сообщение шифруется с помощью одного ключа, его можно расшифровать с помощью другого. Как можно использовать это свойство на практике?
Предположим, что кто-то хочет передать вам конфиденциальное сообщение таким образом, чтобы прочесть его мог только адресат. В этом случае ему достаточно узнать ваш открытый ключ (как было выяснено выше, это не составляет никакой проблемы и не несет никакой угрозы), а потом выполнить шифрование сообщения с его помощью. Полученный шифротекст может быть передан вам по открытым каналам связи. В соответствии с обсужденными выше свойствами криптографии с открытым ключом исходное сообщение может быть восстановлено из такого шифротекста только обладателем секретного ключа. Однако в этой статье основное внимание уделяется описанию средств защиты файлов от несанкционированных изменений. В этом направлении осталось рассмотреть еще один момент.
Предположим, что файл имеет достаточно большой размер. Если зашифровать его описанным выше способом, получится шифротекст, по размеру сравнимый с исходным файлом. Конечно, его можно расшифровать с помощью открытого ключа (заодно проверив целостность), но удобнее все-таки иметь перед глазами открытый текст, а количество абракадабры для служебных целей уменьшить. Для этих целей используются так называемые хэширующие преобразования, которые из текста произвольной длины позволяют получить текст фиксированной длины существенно меньше исходного текста. А основным свойством таких преобразований является то, что при небольших изменениях исходного текста результаты преобразования меняются очень сильно, так что практически невозможно для двух различных осмысленных исходных текстов получить одинаковые хэш-преобразования. Как этим воспользоваться? Выполняется хэширование исходного текста, а уже результат шифруется асимметричным алгоритмом с использованием секретного ключа.
Для проверки подлинности предъявляются шифротекст, открытый ключ и исходный текст. Во-первых, по исходному тексту тем же самым способом вычисляется хэш-преобразование, во-вторых, шифротекст расшифровывается с помощью открытого ключа. Если оба результата идентичны — значит, текст не претерпел изменений. Таким образом, шифротекст, полученный только что описанным способом, позволяет установить подлинность документа. Но, поскольку этот шифротекст вырабатывается с использованием секретного ключа, он же позволяет идентифицировать владельца. Никто, кроме владельца секретного ключа, не сможет создать такой шифротекст. Этот факт позволяет использовать его в качестве личной подписи владельца секретного ключа под файлом с текстом документа — электронной цифровой подписи (ЭЦП).
Но пора вернуться из идеального мира математических теорий к реальному миру экономических отношений. Предположим, что две стороны (назовем их условно «А» и «Б») решили организовать между собой обмен документами на машинных носителях. При всем взаимном уважении и доверии во избежание конфликтных ситуаций и для упрощения процедуры разрешения споров они решили использовать механизм ЭЦП. Это допускается в соответствии с п. 2 ст. 161 «Гражданского кодекса Республики Беларусь».
Как должен выстраиваться документооборот между этими сторонами? В первую очередь, стороны должны договориться об использовании средств ЭЦП. Лучше, если это будет программный или программно-аппаратный комплекс, сертифицированный в нашей стране. Хотя сегодня это условие и не является, насколько известно автору статьи, обязательным, его выполнение защитит от откровенно слабых систем и избавит от необходимости замены системы ЭЦП при планируемом ужесточении законодательства (в наиболее ответственных секторах банковской системы в соответствии с Постановлением Комитета по стандартизации, метрологии и сертификации при Совете Министров Республики Беларусь № 35 от 30.07.2004 г. «Об утверждении перечня продукции, услуг, персонала и иных объектов оценки соответствия, подлежащих обязательному подтверждению соответствия в Республике Беларусь», должны использоваться только сертифицированные средства ЭЦП). После того, как средство ЭЦП выбрано, стороны должны выполнить генерирование ключей — по открытому и секретному (личному) ключу ЭЦП для каждой стороны (рис. 1.)
Рис. 1. Пара ключей ЭЦП стороны «А» (слева) и стороны «Б» (справа).
Ключ Q — секретный (личный), ключ R — открытый.
Чтобы каждая сторона могла удостовериться в подлинности ЭЦП, поставленной под документом другой стороной, они должны обменяться открытыми ключами. Однако этот процесс не так прост, как может показаться. Ведь в случае конфликтной ситуации одна из сторон может заявить, что тот открытый ключ, который был использован при проверке ЭЦП под документом, не ее, а неизвестно чей. Чтобы исключить всякие недоразумения, Законом Республики Беларусь от 10.01.2003 г. «Об электронном документе» предусматривается обмен карточками открытых ключей ЭЦП — распечатками ключей на бумажном носителе, заверенных их владельцами традиционным способом — личной подписью и печатью. Неужели нельзя совсем обойтись без печатей? Работы в этом направлении ведутся.
Как сообщалось в 32-м номере "Национальной экономической газеты" от 03.05.2005 г., Национальный банк разрабатывает проект создания удостоверяющего центра электронной подписи, в котором, как в хранилище, будут содержаться ключи ко всем цифровым подписям, имеющимся у граждан Беларуси. Пункт о создании Центра управления ключевой информацией включен в Концепцию развития национальной платежной системы Республики Беларусь до 2010 г. В этом центре предполагается организовать хранение сертификатов открытых ключей участников системы межбанковских расчетов и клиентов всех банков. После обмена открытыми ключами стороны могут использовать все прелести работы с электронными документами. Предположим, что сторона «А» хочет подписать некоторый документ и передать его стороне «Б». Предположим также, что документ этот является конфиденциальным. Как поступать в этом случае? Сначала для документа должна быть выработана ЭЦП с использованием соответствующих технических средств и секретного ключа стороны «А» (рис. 2).
Рис. 2. Получение ЭЦП для документа с использованием секретного ключа отправителя
Из исходного текста документа и его ЭЦП формируется электронный документ. Здесь нужно четко понимать, что электронный документ — это не просто файл на магнитном носителе с текстом документа, но файл, состоящий из двух частей: общей (в которой как раз и содержится текст) и особенной, содержащей все необходимые ЭЦП (рис. 2а.) Текст документа без ЭЦП — это не более чем обычный текст (например, статья в этой газете), который не имеет юридической силы. Его можно распечатать, передать по электронной почте, отредактировать, но нельзя установить его подлинность. ЭЦП без текста документа вообще представляет собой непереводимую игру букв. Восстановить документ по ЭЦП невозможно точно так же, как невозможно восстановить дворец по найденному кирпичу. ЭЦП сама по себе не имеет ни ценности, ни смысла.
Рис. 2а. Текст документа + ЭЦП = электронный документ
Чтобы обеспечить конфиденциальность при передаче по открытым каналам, он может быть зашифрован с использованием открытого ключа корреспондента — стороны «Б» (рис. 3).
Рис. 3. Шифрование электронного документа с использованием открытого ключа получателя
Получившийся зашифрованный текст может быть безопасно передан стороне «Б», например, по электронной почте через Интернет. Сторона «Б», в свою очередь, должна сначала расшифровать полученный документ, используя свой секретный ключ (рис. 4).
Рис. 4. Расшифровка электронного документа с использованием секретного ключа получателя
Расшифровав текст, его можно прочитать, однако, чтобы убедиться в том, что он передан именно стороной «A», нужно проверить цифровую подпись, пришедшую вместе с текстом электронного документа (рис. 5).
Рис. 5. Проверка ЭЦП с использованием открытого ключа отправителя
Так выглядит схема передачи файла из пункта «А» в пункт «Б». Если осуществляется передача в обратном направлении, в описанных шагах нужно поменять местами ключи отправителя и получателя. Но это не единственное приложение криптографии с открытым ключом. Вернемся к обсуждению ситуации, приведенной в самом начале статьи. Две стороны хотят составить договор в электронном виде и защитить его от внесения изменений. Поскольку стороны равны перед законом, каждая из них должна подписать один и тот же документ (файл) с использованием своего личного (секретного) ключа, после чего обменяться полученными цифровыми подписями. В этом случае (при наличии заверенных карточек открытых ключей каждой из сторон) проверить подлинность файла не составит труда. Выполняется проверка ЭЦП точно так же, как было описано в примере с передачей сообщений. Итак, чтобы установить доверительные отношения в электронном документообороте, стороны должны:
1. Заключить соглашение об использовании электронных документов.
2. Сгенерировать ключи в соответствии с документацией на выбранный комплекс средств ЭЦП.
3. Принять меры к защите личного (секретного) ключа ЭЦП от компрометации (разглашения). Носитель, на котором хранится личный ключ, определяется используемыми средствами ЭЦП и может представлять жесткий диск компьютера, гибкий диск (дискету) или устройство хранения на базе энергонезависимой памяти. Как правило, личный ключ дополнительно шифруется, и для его использования нужно ввести пароль или PIN-код. В любом случае, если ключ хранится на несъемном диске, нужно ограничить доступ к компьютеру со средствами ЭЦП. Если же ключ хранится на съемном носителе, это устройство следует хранить, например, в сейфе вместе с печатью организации.
4. Обменяться открытыми ключами ЭЦП и заверенными карточками открытого ключа ЭЦП.
Обмен электронными документами для нашей страны — словами героя известной комедии Гайдая, «дело новое, неосвоенное» (за исключением, пожалуй, финансовых учреждений). Как это обычно бывает со всякими новинками, они несут в себе как блистательные перспективы, так и некоторые до поры до времени скрытые недостатки. Так ли все радужно на описываемом фронте? Нет ли каких-нибудь подводных камней? Ответить на это можно словами другого героя того же фильма — если «разобраться, что к чему», то разумное использование средств ЭЦП может избавить от некоторых неудобств и поможет сэкономить на расходных материалах. Для этого прежде всего нужно ознакомиться с положениями уже упоминавшегося выше «Закона об электронном документе». Использование электронных документов в различных областях человеческой деятельности — уже реальность. Успешно функционируют системы «Клиент-банк», позволяющие передавать в банк платежные инструкции по открытым каналам связи. Реализовано управление лицевым счетом и возможность совершения безналичных платежей с использованием средств мобильной связи или посредством банкоматов и инфокиосков. Организован обмен электронными документами персонифицированного учета между плательщиками страховых взносов и Фондом социальной защиты населения.
Таким образом, текст документа на машинном носителе, снабженный электронными цифровыми подписями сторон — электронный документ — вполне способен заменить традиционный «бумажный» документ с личными подписями и печатями. Для этого уже сегодня имеется необходимая техническая и законодательная база.