PDA

Просмотр полной версии : Проверка подлинности файлов



stayer
26.01.2012, 19:09
ПРОСТАЯ ПРОВЕРКА ФАЙЛА ПО ЕГО КОНТРОЛЬНОЙ СУММЕ

Пусть Алиса хочет передать Бобу файл. При архивации/передаче файл может повреждаться, кроме того, его могут злонамеренно модифицировать по пути, зашив внутрь червя или вирус. Поэтому правилом хорошего тона для Алисы является указание контрольной суммы (слепка) файла с целью проверки его подлинности.

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

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

Обычно применяются хэш-функции md5, sha1 или sha256 (хотя md5 и sha1 к настоящему времени скомпрометированы, относительно стойким пока считается haval). Для расчета и проверки контрольных сумм существуют разнообразные программы. Наиболее известными консольными утилитами являются sha1sum и md5sum, их обычно включают в дистрибутивы Linux, но есть и версия для Windows. Расчет большинства типов контрольных сумм присутствует в файловом менеджере double commander (http://forum.dpni.org/showthread.php?t=42234).

КРИПТОЗАЩИЩЕННАЯ ПРОВЕРКА ФАЙЛА ПО ЕГО СИГНАТУРЕ

Недостатком простой схемы с контрольной суммой является необходимость наличия некоторого защищенного канала проверки самого слепка между Алисой и Бобом при угрозе злонамеренной модификации файла и его слепка человеком-по-середине (MITM). При отсутствия такого канала, для борьбы с MITM приходиться использовать более сложную схему проверки, основанную на электронно-цифровой подписи. В основе ее лежит все тот же зашифрованный слепок, называемый проверочной сигнатурой файла (или электронно-цифровой подписью, ЭЦП). Для создания сигнатуры Алисой применяется ассиметричная схема шифровки (http://forum.dpni.org/showthread.php?t=42235) слепка с шифрующим секретным ключом и расшифровыающим публичным. Причем публичный ключ публикуется Алисой в некотором сетевом сертификационном центре, дающим зуб за подлинность ключей. Это достигается путем договоренностей с разработчиками пользовательских программ, которые зашивают ключи самих сертификационных центров внутрь своих дистрибутивов, тем самым обеспечивая защищенный канал обмена. В результате браузеры, клиенты ftp, системы криптозащиты и многие другие программы "узнают" сертификационные центры. Боб безопасно импортирует публичный ключ Алисы из сертификационного центра, при помощи него расшифровывает оригинальный слепок и сверяет его со слепком, полученным из файла. Если слепки совпали, то файл подлинный.

Для криптостандарта OpenPGP существует сетевое хранилище публичных ключей (http://sks-keyservers.net/), взаимодействующее с рядом пользовательских криптосистем. Это дает возможность Алисе безопасно публиковать свои публичные ключи в сети, а Бобу - безопасно получать их. Алисы обычно размещают инструкции по проверке на страницах скачивания.

В качестве примера рассмотрим проверку Бобом файловой сигнатуры Tor Browser Bundle при помощи gpg4usb (http://forum.dpni.org/showthread.php?t=42239). Сначала Бобу надо импортировать публичный ключ Torproject из сетевого хранилища. Для этого Боб отыскивает идентификатор этого ключа (key fingerprint) на сайте Torproject: 0x63FEE659. Затем при помощи идентификатора он импортирует публичный ключ в свой pgp4usb.

В современных версиях gpg4usb это можно сделать через графический интерфейс: Ключи -> Импорт ключа -> Сервер ключей:

Сервер_ключей = http://pool.sks-keyservers.net
Поисковый_запрос = 0x63FEE659

В старых версиях gpg4usb это можно сделать (для Windows еще надо провести некоторую доработку gpg4usb***) через консоль:

Для Windows: gpg4usb\bin\gpg.exe --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x63FEE659
Для Linux: gpg4usb/bin/gpg --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x63FEE659

После Бобу следует убедиться в успешности импорта публичного ключа*, затем скачать нужный файл (например tor-browser-gnu-linux-x86_64-2.2.35-4-dev-ru.tar.gz) в некоторый каталог и создать там же файл сигнатуры с именем имя_файла.asc (например tor-browser-gnu-linux-x86_64-2.2.35-4-dev-ru.tar.gz.asc), куда поместить текст сигнатуры, опубликованный на странице закачки. После этого можно приступить к проверке файла по сигнатуре. К сожалению, в интерфейсе gpg4usb пока не реализована сверка файлов по их gpg-сигнатурам, поэтому необходимо (для Windows еще надо провести некоторую доработку gpg4usb***) выполнить после этого в консоли:

Для Windows: gpg4usb\bin\gpg.exe --verify <путь_к_каталогу_файла>\<имя_файла>.asc
Для Linux: gpg4usb/bin/gpg --verify <путь_к_каталогу_файла>/<имя_файла>.asc

Наконец прочесть результат сверки**.


* Должно появиться:

pub 2048R/63FEE659 2003-10-16
Key fingerprint = 8738 A680 B84B 3031 A630 F2DB 416F 0610 63FE E659
uid Erinn Clark <[email protected]> uid Erinn Clark <[email protected]>
uid Erinn Clark <[email protected]> sub 2048R/EB399FD7 2003-10-16

** Должно появиться:

gpg: Signature made Wed 31 Aug 2011 06:37:01 PM EDT using RSA key ID 63FEE659
gpg: Good signature from "Erinn Clark <[email protected]>"
gpg: aka "Erinn Clark <[email protected]>" gpg: aka "Erinn Clark <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 8738 A680 B84B 3031 A630 F2DB 416F 0610 63FE E659

*** Необходимо скачать архив iconv с официального сайти gnuPG: http://www.gnupg.org/download/iconv.html , распаковать и скопировать файл iconv.dll из этого архива в каталог gpg4usb\bin