Главная > Операционные системы > UNIX
Описание: Кандидат должен быть знаком с началами теории вычисления конторльной суммы и почему вообще важно её вычислять. Кандидат должен уметь вычислить контрольную сумму файла, проверить контрольную сумму. Практика: md5(1), openssl(1), sha1(1), cksum(1).
Комментарий
Различные утилиты для подсчёта контрольных сумм служат для того, чтобы пользователь мог убедиться в аутентичности файла, которым он располагает. Так, например, устанавливая программу sudo(1) из исходного кода, или из заранее скомпилированного бинарника, полезно убедиться, что то что вы скачали действительно то, что вы хотели скачать. Для этого надо подсчитать контрольную сумму файла. Теоретически можно представить, что злоумышленник смог изменить файл таким образом, что его размер и контрольная сумма при этом не изменились, т.е. найти коллизию (коллизия, это когда два файла имеют одну контрольную сумму), но представить себе при этом, что он сумел сохранить функциональность программы крайне трудно. В особенности, если вы проверите две разные контрольные суммы двумя разными алгоритмами.
Наличие этой программы требуется стандартом
POSIX. У данной программы есть необязательный
аргумент В настоящее время программа cksum(1) вычисляет контрольную сумму (CRC) по стандарту ISO/IEC 8802-3:1989. Алгоритм описан в справочной странице man(1). Команда cksum(1) выводит два числа: контрольную сумму и число байт.
Программа для подсчёта hash-суммы по одноимённому алгоритму.
Данный алгоритм используется по умолчанию при работе с паролями.
Полезные аргументы: Длина суммы — 128 бит. Идея хеширования состоит в том, что мы имеем некоторую очень резко меняющуюся и необратимую функцию, таким образом, даже от очень похожих строк получаются катастрофически разные результаты, а по хеш сумме невозможно восстановить оригинальную информацию. Это делает данный механизм пригодным для хранения шифрованных паролей. Алгоритм хеширования MD5 до сих пор не взломан, хотя существует способ находить коллизии — когда несколько вхождений дают один результат. Но для того, чтобы найти коллизию, надо знать оригинал, таким образом, неясно как это могло бы скомпрометировать данный метод. Идея аналогична md5(1), однако использован иной алгоритм и суммы получаются более длинные (160 бит). Команда sha1(1) есть не во всех BSD. В её отсутствии можно пользоваться командой openssl(1), которая позволяет посчитать контрольную сумму различными алгоритмами (в том числе MD5 и SHA1). Программа openssl(1) предназначена для создания ключей RSA, DH, DSA, создания сертификатов X.509, CSR, CRL, подсчёта контрольных сумм различными алгоритмами, шифрования и дешифрования, проверки SSL/TLS, обработки шифрованной почты. Запустив программу без параметров вы войдёте в интерактивный режим, в которм можно применять команды list-standard-commands, list-message-digest-commands, list-cipher-commands. А можно передать эти команды в качестве аргуметна openssl(1). Так или иначе, вы получите список команд поддерживаемых openssl(1). Команды эти также перечислены и в странице man(1) по openssl(1) с кратким описанием какая команда для чего служит.
Чтобы получить справку по каждой команде
openssl(1) существует отдельная страница
man(1). Так, для того, чтобы получить справку
по команде
Увы, на официальном сайте OpenSSL — http://www.openssl.org/docs/ документация помечена как незаконченная. Фактически там есть только страницы man(1) и очень скудные howto. Ниже приведены примеры подсчёта контрольных сумм файла ядра:
Один из способов применения программ md5(1) и
её аналогов, может состоять в примитивном сравнительном тесте
производительности ЭВМ. Идея состоит в
сравнении времени подсчёта хеш-суммы от некоторого фрагмента
устройства
Сравнивая эти величины полученные на разны машинах, можно грубо, с оговорками, судить об их производительности. Другой пример: проверка правильно ли записался на iso образ CD:
Совпадение хеш-сумм свидетельствует об идентичности записанного диска своему образу.
Главная > Операционные системы > UNIX |