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

Однако при постоянной работе с файлами, содержащими программы на Visual Basic for Applications, то и дело появляющееся диалоговое окно с предупреждением изрядно надоедает и возникает желание, чтобы документы, созданные каким-либо одним человеком или группой лиц, открывались без запроса о запуске в них макросов, а при открытии всех остальных диалоговое окно по-прежнему отображалось. Именно для таких случаев и был создан механизм цифровой подписи.

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

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

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

Возможность добавлять цифровую подпись и, следовательно, применять ее для запрета появления диалога о запуске макросов при работе с какими-либо программами на Visual Basic for Applications впервые появилась в Microsoft Office 2000.

После того как вы завершите работу над своей программой на Visual Basic for Applications и оформите ее как отдельный проект (для Word — в виде шаблона или документа, для Excel — в виде книги и т.д.), можете добавить к нему цифровую подпись. Чтобы сделать это, нужно в каталоге, куда установлен Office, запустить файл Selfsert.exe (рис.1).

Рис.1. Этот файл генерирует электронную подпись

Он копируется на компьютер только тогда, когда при установке Microsoft Office был выбран также пункт «Цифровая подпись для проектов VBA». Если это не сделано, то для использования программы Selfsert, возможно, потребуется снова запустить программу установки Microsoft Office в режиме добавления и удаления компонентов пакета. Программа пригласит ввести имя (рис.2). Именно это имя потом и будет отображаться при установке проекта с цифровой подписью на компьютер другого пользователя.

Рис.2. Генерация цифровой подписи

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

Рис.3. Файлы сертификатов

Новый сертификат с цифровой подписью можно применять сразу же после его появления. Например, чтобы подписать им новый проект на Visual Basic for Applications, следует выделить какой-либо компонент этого проекта (в частности, его название), а затем выбрать из пункта меню Tools в редакторе VBA пункт Digital Signature (рис.4) и в появившемся диалоговом окне «Цифровая подпись» нажать одноименную кнопку для выбора сертификата.

Рис.4. Прикрепление электронной подписи

В открывшемся диалоговом окне (рис.5) можно выбрать прикрепляемый сертификат. Если создать множество сертификатов с разными именами, то в данном окне выбор будет больше, чем на рисунке.

Рис.5. Выбор сертификата для прикрепления

О том, какой сертификат прикреплен к тому или иному файлу (и прикреплен ли вообще), вы можете узнать в диалоговом окне «Цифровая подпись», вызываемом пунктом меню Tools?Digital Signature — том же самом, что используется для прикрепления сертификата (рис.4).

Сохранив затем проект с добавленным сертификатом, вы завершите процесс его подписи.

После открытия файла, подписанного сертификатом, будет выдаваться сообщение об этом (рис.6).

Рис.6. Запрос при открытии файла с макросами и сертификатом

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

Список цифровых подписей, файлы с которыми признаны достойными открываться без запросов, можно просмотреть в диалоговом окне «Сервис?Макросы? Безопасность» на вкладке «Надежные источники» (рис.7). Там будут перечислены все установленные сертификаты, т. е. те, при открытии документов с которыми был отмечен пункт «Всегда доверять макросам из этого источника». Если понадобится, допустимо удалить ненужные.

Рис.7. Список установленных сертификатов

Возможности механизма цифровой подписи проекта на Visual Basic for Applications довольно ясны — это всего лишь предоставление пользователю права открывать без каких-либо запросов файлы с одним и тем же сертификатом. Если автор файлов с макросами создаст новый сертификат, пусть даже и с тем же именем, то он не будет идентичен предыдущему, и когда откроется файл, снова появится запрос о необходимости разрешения на использование макросов.

Цифровая подпись не подходит для аутентификации проектов на Visual Basic for Applications по имени или еще каким-либо данным ее создателя, т. е. с ее помощью нельзя убедить пользователя, что автором макросов в открываемом им файле является именно тот, чье имя высвечивается в диалоговом окне подтверждения разрешения на использование макросов. Значит, в программу Selfsert можно ввести любое имя, в том числе и принятое другим автором VBA-программ, однако доказать, что новый сертификат был создан не реальным владельцем этого имени, нельзя. Но это все-таки можно сделать, если обратиться в компанию VeriSign, занимающуюся их разработкой индивидуально для каждого клиента, или в любую ей подобную (адреса фирм приведены в разделе «Цифровые подписи» справочной системы Microsoft Office). Кроме того, программа Microsoft Certificate Server позволяет делать сертификаты, не поддающиеся подделке.

Бывает, что при открытии файла с макросами, имеющего сертификат с цифровой подписью, окошко «Всегда доверять макросам из этого источника» оказывается недоступным. Тогда придется вручную устанавливать сертификат.

Чтобы поместить его в диалоговое окно запроса о необходимости разрешения использования макросов, следует нажать кнопку «Настройка» (см. рис. 6), а в открывшемся окне (рис. 8) — кнопку «Просмотр сертификата».

Рис.8. Установка сертификата вручную. Очередной шаг

Затем в появившемся окне информации о сертификате надо нажать кнопку «Установить сертификат», и тогда запустится мастер импорта сертификатов (рис. 9).

Рис.9. Мастер импорта сертификатов

Для его прохождения достаточно во всех диалоговых окнах нажимать кнопку «Далее...» или «Готово». Появление сообщения с запросом (рис. 10) означает окончание процесса.

Рис.10. Установка сертификата вручную. Последний запрос

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

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

Чтобы добавить электронную подпись, например к файлу Word, следует открыть вкладку «Безопасность» диалогового окна «Сервис?Параметры» и нажать кнопку «Цифровые подписи». А для ее присоединения нужно нажать кнопку «Добавить» в открывшемся ранее окне (рис.11).

Рис.11. Подписывание файла Word

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

Антон Орлов http://antorlov.chat.ru