# Парольная защита документов Microsoft Office

Андрей Малышев

Общие принципы парольной защиты документов

Версии Microsoft Office

Самые первые версии Microsoft Office

Microsoft Office 95

Microsoft Office 97/2000

Microsoft Office XP/2003

Microsoft Office 2007

Рекомендации по использованию Microsoft Office

## Общие принципы парольной защиты документов

Основные принципы парольной защиты можно условно разделить на три типа:

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

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

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

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

## Версии Microsoft Office

По способам парольной защиты можно выделить следующие группы версий Microsoft Office:

- ранние версии отдельных приложений: Word 2.0, 6.0; Excel 4.0, 5.0; Access 2.0.
- Microsoft Office 95;
- Microsoft Office 97/2000;
- Microsoft Office XP/2003;
- Microsoft Office 2007.

Рассмотрим подробно парольную защиту каждой из этих групп версий.

### Самые первые версии Microsoft Office

Первые версии Word и Excel

В этих программах возможна установка только одного типа пароля — пароля на открытие файла. В Word 2.0 и 6.0, а также в Excel 4.0 и 5.0 используется шифрование документа путем логической операции XOR с гаммой длиной в 16 байт. Сначала из пароля вычисляются два двухбайтовых значения, одно из которых применяется для генерации гаммы, а второе — для проверки правильности введенного пароля. Поскольку операция XOR является обратимой, а в документах всегда присутствует заведомо известный текст, процедура нахождения валидного пароля очень проста. Прежде всего, исходя из известного текста и зашифрованного документа, находится гамма. Затем символы пароля однозначно вычисляются, поскольку нам известна функция генерации гаммы.

Access 2.0

В Microsoft Access используется защита баз данных, основанная на разграничении доступа. Возможно создание учетных записей пользователей, которым можно присваивать различные права на базу данных. В Access 2.0 учетные записи хранятся в файлах с расширением MDA. При отсутствии этого файла открыть базу данных вообще невозможно. Для каждого пользователя устанавливается пароль, который также хранится в базе учетных записей. Способ хранения паролей позволяет легко их восстановить — нужно только разобраться в формате файла. Пароли хранятся в шифрованном виде, однако ключ шифрования известен. И более того, мы можем открыть любую базу данных, даже если база учетных записей недоступна или потеряна. В базе Access хранится уникальный идентификатор каждого пользователя. Зная этот идентификатор, мы можем создать свою базу учетных записей, внести туда пользователя и присвоить ему нужное значение идентификатора. Поэтому защита баз данных Access на уровне пользователей является нестойкой. Можно не только найти пароли пользователей, но и открыть любую базу данных независимо от установленной защиты.

### Microsoft Office 95

Основное отличие документов Microsoft Office 95 от документов первых версий — измененный формат файла. Теперь файлы Word и Excel представляют собой структурированные хранилища в формате Microsoft OLE. Пароль на открытие документа применяется по той же схеме, что и в первых версиях Word и Excel. Однако для защиты документов добавилось еще несколько типов паролей.

Пароль read only

В Word и Excel добавился пароль на открытие документа в режиме «чтение — запись». Если этот пароль не введен, документ открывается в режиме «только чтение». Пароль хранится с использованием первой схемы — открытым текстом в документе.

Пароль read only хранится в документе открытым текстом

Пароли защиты документа, книг и листов

В Word добавился пароль защиты документа, позволяющий защищать от изменений отдельные фрагменты текста, а в Excel появились пароли на доступ к книгам и листам. Все эти пароли объединяет одно — вторая схема защиты. От каждого пароля вычисляется хеш длиной в 16 бит, который хранится в документе. Трудно сказать, чем обусловлена столь небольшая длина хеша. При этом для каждого из возможных значений хеша можно найти множество паролей и невозможно определить, какой из них был введен пользователем изначально. Функция, преобразующая хеш в первый подходящий пароль, очень проста — пароль находится мгновенно.

Защита баз данных Access 95

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

### Microsoft Office 97/2000

Word и Excel 97/2000

В Microsoft Office 97 существенно изменилась схема применения пароля на открытие документа в приложениях Word и Excel. Применена третья схема парольной защиты. Однако из-за экспортных ограничений США эта защита оказалась нестойкой. Из пароля путем нескольких MD5-преобразований формируется ключ шифрования длиной 40 бит. Далее весь текст документа шифруется этим ключом по алгоритму RC4. Для проверки валидности пароля используется MD5-хеш, взятый от случайного значения (уникального для каждого документа), и его копия, зашифрованная по алгоритму RC4. Для нахождения пароля к документу можно воспользоваться прямым перебором и атакой по словарю. Средняя скорость перебора паролей на процессоре Pentium 4 3 ГГц составляет 500 тыс. паролей в секунду. Пароль также может быть найден путем атаки по словарю. Однако экспортные ограничения США дают нам возможность гарантированно расшифровать документ. При длине ключа в 40 бит общее количество ключей составляет 1 099 511 627 776. Скорость перебора ключей выше, чем скорость перебора паролей, на том же процессоре она уже достигает миллиона паролей в секунду. Следовательно, нам потребуется 305 часов, чтобы перебрать все возможные варианты ключей, что составляет около 12 суток. А при распределенной атаке, когда применяются вычислительные мощности большого количества компьютеров, ключ может быть найден за несколько часов. Таким образом, в Office 97 Microsoft значительно усилила защиту, однако экспортные ограничения помешали использовать ее в полной мере.

Остальные пароли Word и Excel аналогичны паролям Office 95. Однако здесь есть один курьезный момент. В Microsoft зачем-то решили шифровать документ Excel, если к нему применен пароль на доступ к книге. Шифрование происходит при помощи пароля VelvetSweatshop. Можно попробовать защитить этим паролем документ Excel (поставив эту строчку в качестве пароля на открытие документа) и посмотреть на поведение программы при открытии файла. Документ просто откроется, и при этом диалог ввода пароля даже не появится! Наверное, это форма протеста программистов Microsoft против тяжелых условий работы.

Французские версии Word и Excel 97/2000

Во время выпуска этих версий Microsoft Office во Франции и некоторых других странах существовали очень жесткие ограничения на применение криптографических алгоритмов. В частности, использовать RC4, даже с 40-битным ключом шифрования, было запрещено законодательством. Поэтому в Word и Excel, поставлявшихся на французский рынок, была применена та же схема шифрования, что и в документах Office 95.

Visual Basic for Applications

Одним из нововведений в Office 97 является поддержка встроенного языка программирования — Visual Basic for Applications (VBA). В любой документ могут быть встроены исходные тексты макросов, которые можно защищать паролем. При этом применяется вторая схема парольной защиты — в документе хранится хеш пароля, вычисленный по очень простому алгоритму (на базе логической операции XOR). Пароль легко находится путем выполнения обратного преобразования. Еще один способ защиты VBA-макросов — это модули (add-ins) Excel. Если из макроса делается add-in, исходные тексты недоступны для просмотра. Однако простым изменением нескольких байт в служебной области документа add-in превращается в обычный документ Excel, что позволяет нам просматривать исходные коды макросов. Следовательно, защита VBA-макросов в Office 97/2000 не является стойкой, если мы храним в документе их исходные тексты.

Microsoft Access 97/2000

Складывается впечатление, что Microsoft полностью устраивает нестойкая защита баз данных Access. В Access 97/2000 способ хранения пароля на открытие базы не поменялся, он по-прежнему доступен любому, кто воспользуется программой для его восстановления. Защита базы данных на уровне пользователей тоже изменений не претерпела.

Microsoft Outlook 97/2000

Начиная с версии 97 Microsoft Office содержит приложение Outlook в составе пакета. В этом приложении можно защищать паролем файлы с персональной информацией (они имеют расширение *.pst). Используется второй способ парольной защиты — хранение хеша пароля в документе. Хеш представляет собой контрольную сумму всех символов пароля, вычисленную по алгоритму CRC32. Этот алгоритм можно реверсировать и найти подходящий пароль. Защита PST-файлов не является стойкой — пароль находится мгновенно.

Кроме пароля защиты персональных данных, Outlook позволяет сохранять пароли на учетные записи электронной почты. В версии Office 97 эти пароли хранятся в системном реестре, в настройках MAPI, зашифрованные простым алгоритмом с известным ключом шифрования. В версии Office 2000 эти пароли хранятся в Protected Storage — хранилище секретных данных, разработанном Microsoft. Однако, поскольку программа может извлечь пароль из хранилища и передать его серверу, ничто не мешает нам реверсировать алгоритм хранения пароля и проделать то же самое. Оба способа хранения паролей, MAPI и Protected Storage, являются нестойкими.

### Microsoft Office XP/2003

Microsoft Word, Excel, PowerPoint XP/2003

В Microsoft Office XP полностью переработана схема применения пароля на открытие документа. Плюс ко всему этот пароль стало возможно устанавливать на документы PowerPoint. Для шифрования документов теперь применяется Microsoft CryptoAPI. Эта система позволяет пользоваться криптопровайдерами — специальными динамическими библиотеками, в которых реализованы криптографические алгоритмы. Таким способом Microsoft решает проблему экспортных ограничений. Для стран, в которых подобные ограничения существуют, поставляются урезанные версии криптопровайдеров, позволяющие шифровать документы ключом небольшой длины (обычно не более 40 бит). Всем остальным предоставляется возможность шифровать документы ключом длиной до 128 бит. Перебрать все возможные значения 128-битного ключа за приемлемое время невозможно — даже задействовав очень большое количество вычислительных ресурсов. Алгоритм шифрования остался прежним — RC4. Поменялся алгоритм хеширования пароля: теперь это SHA-1, более стойкий, чем MD5. Единственный способ найти пароль — это прямой перебор паролей либо атака по словарю. Если пользователь ввел стойкий пароль, найти его за приемлемое время не представляется возможным. Скорость перебора паролей на процессоре Pentium 4 3 ГГц составляет около 300 тыс. паролей в секунду. Однако даже при такой схеме защиты очень большую роль играет человеческий фактор. Для совместимости с предыдущими версиями Microsoft оставила возможность использовать схему защиты из Office 97, причем она применяется к документу по умолчанию. Пользователь, плохо разбирающийся в схемах защиты, конечно же, воспользуется старой схемой, при которой документ можно гарантированно расшифровать за несколько часов.

Защита, совместимая с Office 97/2000, устанавливается
в Office XP по умолчанию

Visual Basic for Applications

В Microsoft Office XP изменен алгоритм формирования хеша пароля защиты VBA-макросов. Теперь вместо нестойкой операции XOR применяется алгоритм SHA-1, который не дает возможности реверсировать пароль. Однако мы можем вычислить этот хеш для любого другого пароля и просто подменить его в документе. Таким образом, мы получаем возможность либо изменить, либо вообще сбросить этот пароль. Следовательно, защищать паролем VBA-макросы просто не имеет смысла.

Outlook XP/2003

Схема защиты персональных данных в Outlook XP/2003 не изменилась. По-прежнему в документе хранится контрольная сумма CRC32 от пароля. Однако существенные изменения претерпело хранение паролей к учетным записям электронной почты. Эти пароли опять перенесены в хранилище настроек MAPI. Однако теперь они шифруются системной функцией CryptProtectData(). Эта функция позволяет шифровать данные определенного пользователя системы, основываясь на его пароле для входа в систему. Таким образом, если пользователь уже вошел в систему, то он, безусловно, может восстановить свои пароли к учетным записям электронной почты. Однако, если эти пароли пытается восстановить другой пользователь или даже системный администратор, он должен знать пароль пользователя для входа в систему. При изменении этого пароля извне данные просто потеряются, поскольку будет утрачен ключ шифрования. Пароль на вход в систему — это тема для отдельной статьи. Отметим лишь, что он может быть найден прямым перебором и при определенных условиях находится очень быстро.

PowerPoint 2003, пароль read only

В PowerPoint 2003 появилась возможность устанавливать пароль для защиты документа от изменений. Этот пароль хранится в документе по первой схеме, то есть открытым текстом. Однако при этом документ шифруется известным паролем, состоящим из двух фамилий, вероятно разработчиков.

### Microsoft Office 2007

В Microsoft Office 2007 значительно улучшена система защиты документов. Существенно изменен формат файлов: теперь вместо OLE-контейнеров применяется легко читаемый формат XML. Однако если файл защищен паролем «на открытие», документ представляет собой OLE-контейнер, в котором находится информация о шифровании и сам зашифрованный документ. Для шифрования применяется широко известный и очень криптостойкий алгоритм AES. Длина ключа всегда 128 бит, что исключает возможность прямого перебора ключей. При формировании ключа происходит 50 тыс. преобразований по алгоритму SHA-1, исходными данными для которых являются пароль и число, уникальное для каждого документа. При этом скорость прямого перебора паролей значительно уменьшается и, по предварительным оценкам, составит около 500 паролей в секунду на современных процессорах Intel Core 2 Duo. Следовательно, стойкий пароль к документу Office 2007 восстановить практически невозможно. Единственным препятствием к использованию данной защиты является новый формат файлов, который пока не очень распространен. Если же сохранять документы в старых форматах — защита будет более слабой.

### Рекомендации по использованию Microsoft Office

Защита документов и кода

Как было показано выше, единственной стойкой защитой в Microsoft Office является пароль на открытие документа Word, Excel и PowerPoint. При этом версия Office должна быть XP или более новая. Не выбирайте алгоритм защиты, установленный по умолчанию. Из криптопровайдеров рекомендуется выбирать Microsoft Strong Cryptographic Provider и длину ключа 128 бит. Длина пароля должна быть как минимум 8 символов, при этом пароль должен содержать заглавные и строчные буквы, цифры и спецсимволы. Пример стойкого пароля: «qU8&lg$H». Не используйте в качестве пароля слова из словаря, номер своего автомобиля или свой год рождения.

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

При разработке баз данных в Microsoft Access компилируйте код работы с базой, делайте файлы MDE. В этом случае отсутствует доступ к исходным текстам.

В Microsoft Outlook не рекомендуется сохранять пароли доступа к учетным записям электронной почты, если помимо вас к компьютеру имеют доступ другие люди. Ваш пароль может быть извлечен из хранилища, что позволит третьим лицам получить доступ к вашим почтовым ящикам. Нет никакого смысла устанавливать пароли на PST-файлы, поскольку они могут быть легко найдены. Для хранения персональных данных рекомендуется использовать сервер Microsoft Exchange либо располагать файлы с персональными данными на носителях, защищенных от доступа программами других фирм, например PGP Disk.

Не используйте старые версии Microsoft Office, так как в этом случае потребуется ослаблять защиту документов в целях совместимости.

Проверка стойкости паролей

Очень часто в организациях возникает проблема проверки стойкости паролей. Каждый сотрудник устанавливает пароли, исходя из своих личных предпочтений. Однако пароли, придуманные пользователями, могут оказаться нестойкими. Для проверки стойкости пароля можно использовать программу Advanced Office Password Recovery (http://www.passwords.ru), поддерживающую документы всех версий Microsoft Office. При открытии документа программа автоматически определяет его версию и пароли, установленные в документе. Нестойкие пароли находятся мгновенно и отображаются, а для стойких паролей вначале применяется предварительная атака (preliminary attack), которая проверяет пароли по словарю, а также производит прямой перебор коротких паролей. Если пароль найден в результате этой атаки, он не является стойким. Далее надо проанализировать способ защиты, примененный к документу. Если защита совместима с Office 97/2000, документ может быть расшифрован за несколько часов.

Восстановление забытых паролей

Очень часто пароли к документам теряются или забываются. Иногда уволившийся сотрудник оставляет набор документов, защищенных паролями. Для восстановления забытых паролей Microsoft Office можно использовать программы Advanced Office Password Recovery и Elcomsoft Distributed Password Recovery, которые позволяют находить стойкие пароли, задействуя при этом вычислительные мощности компьютеров, объединенных в сеть. Также при помощи этих программ можно гарантированно расшифровать документ, к которому применена защита, совместимая с Office 97/2000; при этом скорость восстановления паролей напрямую зависит от количества задействованных компьютеров. Ознакомиться с другими программами для восстановления паролей можно на упомянутом выше сайте http://www.passwords.ru/.

КомпьютерПресс 7'2007