Статьи Королевства Дельфи

         

Продолжение


Раздел Подземелье Магов

После написания я перебирал старые архивы и наткнулся на описание программы Locker разработанной в Институт математики АН Молдовы, Колесниковым Александром Евгеньевичем.

Самой программы и алгоритмов её функционирования представлено не было. Далее приводится оригинальный текст описания: Традиционное использование CRC, в том числе и в области персо-нальных компьютеров - в контроллерах дисков, коммуникационных (XMODEM) и сетевых (Ethernet, Token Ring и др.) протоколах, предполагает размещение (передачу) значения CRC ПОСЛЕ блока информа-ции. Такой метод позволяет обнаружить практически все виды ЕСТЕСТВЕННЫХ ошибок в канале (физический сбой, помеха и пр.), но совершен-но не помогает в случае ошибок ИСКУССТВЕННЫХ (злонамеренные действия ПЕРЕХВАТЧИКА, например).

Действительно, применительно к безопасности данных в файловой системе персонального компьютера, можно представить себе следующую ситуацию. Пусть фирма-разработчик пакета программ сопровождает свой пакет файлом типа README, в котором приведены значения CRC для всех исполняемых файлов пакета. Такая информация позволит однозначно определить, например, факт поражения вирусом по неизбежному изменению реальной CRC файла по отношению к приведенной в README. Однако обна-ружить злонамеренные действия пионера, сажающего в тело файла шутки ради вирус или троянскую компоненту и РЕДАКТИРУЮЩЕГО соответствующее значение CRC в README, таким способом не удастся принципиально.

Если же предположить, что значение CRC блока данных находится ВНУТРИ этого блока (не рассматривая пока вопрос о том, как это сделать), то подобные действия пионера будут серьезно затруднены: при попытке редактирования блока произойдет рассогласование реальной CRC и записанного внутри блока значения, причем согласовать их снова (в случае использования достаточно мощного CRC алгоритма, например, CRC32) будет практически невозможно.

Как поместить в тело файла значение его CRC32? Пусть дан исход-ный файл. Определим его CRC32 и попытаемся добавить полученное зна-чение к исходному файлу. Это получится, однако при редактировании значение CRC файла безнадежно изменится. Из теоретических соображе-ний, приведенных в литературе, следует, что для согласования ("балансирования") в этом случае достаточно 64 бит или 8 байт (удвоенная длина используемого сдвигового регистра), однако теория ничего не говорит о том, как эти 8 байт определить. Несмотря на то, что психологически 8 байт выглядят как ерунда, найти нужное значение прямым перебором всех 2^64 возможных комбинаций в течение ближайших пятилеток не представляется возможным.



Содержание  Назад  Вперед