УЯЗВИМОСТЬ ЗАЩИТНЫХ СВОЙСТВ CRC - КОНТРОЛЬНОЙ СУММЫ ПРИ ИНФОРМАЦИОННОМ ПРОТИВОДЕЙСТВИИ (ФАЛЬСИФИКАЦИИ ДАННЫХ) Филатов О.В. Email: Filatov17123@scientifictext.ru
Филатов Олег Владимирович - инженер-программист, ЗАО Научно технический центр «Модуль», г. Москва
Аннотация: обнаружена серьёзная уязвимость в широко распространенной системе защиты информации, основанной на CRC. Экономические фальсификации данных, хакерские атаки, информационное противодействие - основные направления угроз, с которых постоянно ощутимы деструктивные воздействия и которые могут в ближайшее время воспользоваться этой найденной уязвимостью. Сейчас сложилась практика, в которой первым уровнем защиты принимаемой информации, удостоверения безошибочности приёма информации, являются алгоритмы проверки принятых данных по величине контрольной суммы - CRC (остатка от деления сообщения на константу). В статье приведены простейшие способы подмены информации в передаваемом сообщении с сохранением размеров фальсифицируемых файлов (сообщений) и сохранением значения CRC (контрольной суммы, которая удостоверяет целостность принятой информации). То есть, в статье показывается, что CRC более не является защитой от хакерской атаки или подмены информации для извлечения экономической выгоды, так как CRC не позволяет однозначно определить, фальсифицировано исходное сообщение при передаче или нет. Предлагается начать поиск новых критериев подтверждения целостности исходного кода на основе открытий, сделанных «Комбинаторикой длинных последовательностей». Ключевые слова: CRC, циклически избыточные коды, контрольная сумма, полином, F-алгоритм.
VULNERABILITY OF PROTECTIVE PROPERTIES
OF CRC - CHECKSUM FOR INFORMATION COUNTERMEASURES (FALSIFICATION OF DATA)
Filatov O.V.
Filatov Oleg Vladimirovich - Software Engineer, SCIENTIFIC AND TECHNICAL CENTER «МОДУЛЬ», MOSCOW
Abstract: а serious vulnerability has been discovered in the widespread system of information protection based on CRC. Economic data falsifications, hacker attacks, information counteraction are the main directions of threats, from which destructive influences are constantly felt and which can soon take advantage of this found vulnerability. Now there is a practice in which the algorithms for checking the received data by the amount of the checksum - CRC (the remainder from dividing the message into a constant) are the first level of protection of the received information, the certificate of error-free reception of information. The article presents the simplest ways of substituting information in a transmitted message while preserving the size of falsified files (messages) and saving the CRC value (a checksum that certifies the integrity of the received information). That is, the article shows that CRC is no longer a defense against hacker attack or substitution of information to extract economic benefits, since CRC does not allow unequivocally to determine whether the original message is falsified during transmission or not. It is proposed to start searching for new criteria for confirming the integrity of the source code based on the discoveries made by the "Combinatorics of long sequences". Keywords: CRC, Cyclic Redundancy Codes, checksum, polynomial, F-algorithm.
УДК: 81.93.29
Введение
Идея преодоления защитных свойств CRC (Cyclic Redundancy Codes - Циклически Избыточные Коды) базируется на несжимаемых (или иначе - несжимаемых на один) последовательностях. А именно, если есть достаточно длинная несжимаемая последовательность, то гарантировать её безошибочную передачу может только последовательность не меньшей (равной и большей) длины. Если бы не существовал предел сжатия исходного файла (сообщения), то файл любой длины можно было бы сжать в один байт (или бит). Что очевидно невозможно, так как из одного байта (бита) нельзя без угадываний (какая информация и в каком формате представлена) получить разархивированные файлы, размерами во много раз превосходящие один байт (бит). Собственно это и происходит при попытке использования короткого CRC (размер от 1 байта - 8 бит, ... 256 байт - 2048 бит) подтвердить безошибочность принятого пакета ощутимо большей длины. То есть, CRC может гарантированно обнаружить подмену информации только в файлах (сообщениях), число бит в которых меньше или равно числу бит в CRC. Причём, чем больше величина отношения длины (в битах) защищаемого файла или сообщения Lp к числу бит контрольной суммы Lcrc, тем больше остаётся у хакеров простора для «творческого» выбора тем подменяемой информации. Более того, существуют условия, когда CRC не в состоянии защитить файл, длина которого короче длины самой CRC.
Можно условно разбить фальсификацию информации на три типа:
«Скоростное» затирание информации; затирание информации с маскировкой;
фальсификация данных.
«Скоростное» затирание информации (рассматривается в этой статье) применяется при электронном противодействии. Его отличие от шумового подавления канала заключается в том, что нет признаков искажения принятой информации, но применение принятой информации к исполнению полностью дезориентирует процесс, применяющий эту информацию. Однако, простейший анализ принятой информации (с правильным CRC), показывает «странность» этой информации, а именно, слишком простую структуру сообщения. Что является демаскирующим признаком.
Усложнение структуры путём помещения случайной битовой информации (обработка которой даёт также истинный, родной CRC), усложняет принимающей стороне понимание причины дезориентации исполняемого процесса, что приводит к гораздо большим временным потерям, ещё сильнее замедляет ответную реакцию принимающей стороны.
Фальсификация данных наиболее трудоёмкий процесс (как для организации данных фальсифицирующей стороной, так и для распознания фальсификации принимающей стороной). Фальсифицированные данные имеют широкую область применения, не ограничивающуюся только военной сферой.
Схема применения CRC [1]: < исходное сообщение> + < CRC >. Идея скоростной затирающий фальсификации данных заключается в том, что бы создать вместо исходного сообщения структуру, число бит которой равно числу бит исходного сообщения, а CRC (контрольная сумма) фальсифицированного сообщения было равно исходному CRC. Эта структура приведена в ф. 1:
< Р + {0. .0} + F(CRC) > Ф. 1
Где:
Р - полином исходного сообщения, он является максимально короткой и не тривиальной последовательностью, деление которого на самого себя даёт нулевой
р г.
остаток: -^0;
п '
{0. .0} - множество нулей, из которых состоит основной объём фальсифицированного сообщения, нули нужны для сохранения размера (числа байт) исходного сообщения;
F(CRC) - «родительский фрагмент», максимально короткая последовательность в конце фальсифицируемого сообщения, при делении F(CRC) на полином Р воспроизводится исходная величина CRC.
Практически всё преодоление защитных свойств CRC сводится к решению задачи по нахождению «родительского фрагмента» - F(CRC), итоговое деление которого на полином Р создаёт истинное CRC, что убеждает принимающую сторону в безошибочности принимаемого пакета.
Величина полинома Р в ф. 1 известна, она не является секретной, поэтому число
нулей множества {0. .0} (ф. 1) зависит от длины битовой последовательности F(CRC),
которая является обратной функцией от CRC, такой, что выполняется условие:
деление числа F(CRC) на число полинома Р даёт в остатке CRC, ф. 2:
F(CRC) . „
-—ß—-^CRC Ф. 2
Исходя из ф.2, для нераспознаваемого в приёме затирания данных, нужно найти из CRC и полинома Р любую зависящую от них битовую последовательность F(CRC). После нахождения F(CRC) определяется число нулей в множестве {0. .0} и фальсифицированный пакет (ф.1), передаётся принимающей стороне. Принимающая сторона, обработав сообщение убедиться, что CRC принадлежит этому сообщению, и воспримет это сообщение как корректно принятое. Подлог данных будет обнаружен только после неудачной попытки применения полученных данных.
Основная часть
Уточним используемые в статье термины.
Регистровая переменная. Под регистровой переменной будем понимать упорядоченное по номерам (от 1 до n) хранилище бит, в котором биты хранятся единым неразрывным массивом. В таблице 1 в качестве примера приведены две регистровые переменные (Registr и Polinom). В зависимости от целей использования данным присваивается любой стартовый номер: 1; 2; .. n - l, где l - число бит в массиве. В регистровой переменной существуют адреса, в которых отсутствуют биты (нули «0» и единицы «1»).
Таблица 1. Пример регистровых переменных
№ разряда 1 2 3 4 5 6 7 8 9 n
Registr 0 1 0 0
Polinom 1 0 0 1
Регистровые переменные фактически являются строками AnsiString, содержащими символы: пробел, «0», «1».
Логическое сложение - «Исключающие ИЛИ» (eXclusive OR - XOR), обозначается символом ®. Обозначим две битовые переменные как: ь1и b2 (каждая переменная может быть равна либо «0», либо «1»), так же обозначим целочисленные переменные как: i1 и i2 (тип int в языке С). Причём, ограничим множество всех возможных значений i1 и i2 двумя значениями: 0; 1, тогда операция ® может быть замена операцией вычитания с неотрицательной суммой, ф.3:
Ь1фЬ2 = |il -i2| = (il -i2)2 Ф. 3
Для примера рассмотрим деление [1] «родительского фрагмента» - F(CRC) = «0100» на полином Р = «1001» (итоговая контрольная сумма CRC = «0100»), и обратно из CRC получение «родительского фрагмента» F(CRC), таблица 2. В этом примере для уменьшения объёмов проводимых вычислений разрядность полинома
четыре бита, очевидно, что описанные действия справедливы для полиномов любой разрядности [1].
Таблица 2. Пример расчёта CRC - контрольной суммы
№ 1М Номер бита к в 'Мк- пос-ти Доп. биты
0i 02 0з
t = 1 t = 2 t = 3 t = 4 t = 5 t = 6 t = 7
1 F(CRC) = 1М 1о1 Ч 12 10з 104 4—
2 2Мк е 212 20э ч 20S
3 Р lp 0р 0р lp
4 Змк 302 30з 304 30s 4— 4—
5 4Mfc = CRC ч 41s 40б 4
6 t t = 7 t = 6 t = 5 t = 4 t = 3 t = 2 t = 1
Полином р = «1001»
В таблице 2 показано получение CRC = «0100» из «родительского фрагмента» F(CRC) = «0100» (строка 5), и восстановление «родительского фрагмента» F(CRC) из CRC. Стрелочки показывают перемещение М - пос-ти в области
дополнительных нулей [1] при получении CRC. А стрелочки показывают обратное перемещение М - пос-ти при получении из CRC «родительского фрагмента» F(CRC).
Следует подчеркнуть, что «родительский фрагмент» F(CRC) не обязан совпадать с реальным фрагментом исходного сообщения, F(CRC) обязан порождать значение исходного CRC.
Недостатком обратного движения в таблице 2, для получения F(CRC) из
CRC, является при программировании относительно сложная работа в «обратном ходе» процесса. Для упрощения программы, было произведено зеркальное отображение Р и CRC.
Работа с зеркальным полиномом ZP и зеркальным ZCRC. Символом z обозначим зеркальное состояние. После зеркального отображения CRC («0100») примет вид: ZCRC = «0010». Полином Р («1001»), после зеркального отображения не изменит свой вид: ZP = «1001».
Зеркальный поворот позволил при восстановлении F(CRC) из CRC перемещать 'М- последовательности вправо «^», таблица 3. Физически, зеркальное отображение является работой в отрицательном направлении времени (обратное течение времени -это прокручивание киноленты в обратном направлении) [2, 3]. Приведём алгоритм восстановления F(CRC) после зеркального преобразования (лево - право), с последующим примером.
Обозначим число бит полинома - w. Например, w = 4 для полинома «1001». О правилах вычисления и CRC дополнительных битах можно прочесть в работе [1].
Алгоритм восстановления F(CRC) будет называть «F - алгоритмом».
F - алгоритм нахождения «родительского фрагмента» F(CflC)
1. Скопировать значение CRC в одноимённую регистровую переменную: Registr; зеркально отобразить биты CRC (первый ^ последний), получим ZCRC; поместить ZCRC в регистровую переменную Registr, получим ZM.
2. Зеркально отобразим в Polinom биты (право ^ лево), получим ZP. Поместить значение полинома ZP в регистровую переменную Polinom,
3. Выровнять правый край 2Р с правым краем ¿М. Определить позицию pos1_R первой единицы «1» (от левого края) в регистре Registr. Определить pos1_P - позицию первой единицы «1», в переменной Polinom.
4. Сравнить между собой величины: pos1_R и pos1_P.
4.1. Если не выполняется условие: pos1_R > pos1_P, то переходим к пункту 4.2 (если выполняется, то к 4.1.1).
4.1.1. Вычислить разность: Д = pos1_R - pos1_P. Если число бит последовательности в регистре Polinom (kj, k2, ... kn) плюс Д будет больше, чем: 2*w -1, то есть: п + Д >2 w — 1 , то переходим в пункт 5; иначе к битовой последовательности находящейся в переменной Polinom (kj, k2, ... kn) добавить с левой стороны серию нулей «0», количество нулей в серии равно разности: pos1_R -pos1_P = Д.
4.1.2. К битовой последовательности находящейся в переменной Registr добавить с правой стороны серию нулей «0», количество нулей в серии равно разности: pos1_R -pos1_P = Д.
4.1.3. Переход в пункт 4.2.1.
4.2. При выполнении условия: pos1_R= pos1_P переходим в пункт 4.2.1, если условие: pos1_R= pos1_P не выполняется, то, с учётом 4.1, возникла невозможная ситуация, производится останов работы алгоритма с сообщением об ошибке.
4.2.1. Произвести логическое сложение ® («исключающее или») для переменных Polinom и Registr, результат операции записать в переменную Registr: Registr = Registr ® Polinom.
4.2.2. Определяем число последовательных нулей «0» в переменной Registr, от начала (с левого края) до первой единицы «1». Если число последовательных нулей равно или больше w (числу разрядов CRC), то переход в пункт 5, иначе переход в пункт 3.
5. Если в множестве дополнительных нулей [1] остались неиспользованные в переменной Registr нули, то добавляем неиспользованные нули справа к пос-ти содержащейся в переменной Registr.
6. Удаляем из последовательности, находящейся в переменной Registr, множество нулей с номерами: к = 1, .., к = w -1. Производим обратное (восстановительное) зеркальное отображение бит (первый ^ последний) в регистровой переменной Registr. Полученная последовательность в Registr является искомой битовой последовательностью. Конец алгоритма.
Разбор примера на F - алгоритм (таблица 3). Для подменяемого пакета известны: полином Р = «1001» и контрольная сумма CRC = «0100». По пункту 1, F - алгоритма, помещаем CRC отсылаемого пакета в одноимённую переменную, строка 1, зеркальное значение = «0010» помещаем в регистровую переменную
Registr (строка 2).
По пункту 2, F - алгоритма, зеркально отображаем биты в Polinom (право ^ лево), помещаем 2Р = «1001»в регистровую переменную Polinom (строка 3).
По п. 3, F - алгоритма, выравниваем 2Р и ^М по правому краю, строки 2 и 3. Определяем в (Registr) позицию первой единицы от левого края (строка 2): pos1_R = 3; а так же определяем позицию первой единицы в переменной Polinom (строка 3): pos1_P =1.
№ 1мк Номер бита к в 'Мк и ¿Мк-пос - ях Доп. биты Имя переменной
0i 02 0з
к = 1 к = 2 к = 3 к = 4 к = 5 к = 6 к = 7
1 m = crc 1о, 1 1 2 % 1 0 4 CRC
2 im = zcrc ч % Из 1 0 4 Registr
3 zp 1p 0p 0p 1p Polinom
4 IM 2о, 2 0 2 213 2 0 4 io5 Registr
5 zp 0 0 1p 0p 0p 1p Polinom
6 1мк= r e p 30i 30i 30з 3 0 4 30S 316 Registr
7 IM 30, 30, 30з 3 0 4 305 3o7 Registr
8 *M 3 0 4 30S 307 Registr
9 Im 0 1 0 0 Registr
Полином ZP = «1001»; ZC RC = «0010»
По п. 4, F - алгоритма, выявляем, что pos1_R (3) > pos1_P (1); Д = 2.
По п. 4.1.1, F - алгоритма, проверим истинность неравенства: п + Д >2 w — 1; это неравенство не выполняется, так как: 4+2 <2 • 4 - 1, поэтому к битовой последовательности находящейся в переменной Polinom добавим с левой стороны серию нулей «00», перед ZP, строка 5.
П. 4.1.2, F - алгоритма, так как Д = 2, то к в переменной Registr, добавим с правой стороны серию из двух нулей: |М = ^М + «00», строка 4.
По п. 4.2.1 произвели логическое сложение ® переменных Polinom и Registr: lMfc = R ® Р, результат записали в переменную Registr, строка 6.
По п. 4.2.2, определим длину последовательности из нулей от начала (с левого края, к = 1) в переменной Registr до первой единицы «1» (к = 6), строка 6. Последовательность в переменной Registr содержит пять нулей: «00000». Что больше числа разрядов CRC (w = 4) хранящихся в одноимённой регистровой переменной, поэтому переходим в пункт 5.
По п. 5. Так как в множестве дополнительных нулей [1] остался один, последний, неиспользованный ноль «03», то добавляем его справа к последовательности содержащейся в переменной Registr, строка 7.
По п. 6. Удаляем из пос-ти в переменной Registr множество нулей с номерами: к = 1, .., к = 4 -1, строка 8. Производим обратное зеркальное (восстановительное) отображение бит (0010 ^ 0100) в регистровой переменной Registr, строка 9. Полученная последовательность в Registr является искомой битовой последовательностью, которую можно применить для фальсификации пакета.
Приведём ещё пример фальсификации сообщения. Есть сообщение: «01000100010000110101», его CRC = «0100», полином P = «1001». Заменяем левые (головные) разряды на разряды полинома P =«1001» (деление полинома на самого себя даёт ноль, что позволяет начать беспрепятственное перемещение по последующему множеству нулей). Заменяем центральную часть фальсифицируемого сообщения на последовательность из нулей. Заменяем оконечные, правые, разряды на пос-ть, найденную по F-алгоритму: «0100» - деление которой на полином P= «1001» даёт CRC = «0100», то есть: CRC = «0100» / P = «0100». Выпишем структуру хакерского пакета: «1001» + «000000000000» + «0100». Выпишем, для наглядности, исходное и фальсифицированное сообщения, друг под другом:
«01000100010000110101»;
«10010000000000000100».
Обсуждение
В F-алгоритме, зеркальное отображение битовой последовательности самой на себя, с последующим пошаговым развитием событий, по сути, является разворотом хода физического времени в обратном порядке, таблица 2. Из таблицы 2 видно, что действия, приводящие к получению CRC («0100»), из исходной последовательности ХМ, при применении полинома Р, можно повторить в обратном порядке. И получить из CRC, при применении полинома Р, последовательность ХМ. В работе [2, 3] продемонстрирована гипотеза о том, что развитие от простого к сложному, эволюционирующая жизнь, возможна в процессах с обратным временем. Такая гипотеза была высказана по результатам работ изложенных в статьях [4 - 8].
Применение алгоритмов, подобных F - алгоритму, для организации фальсификации данных несёт угрозу в сбоях работы всех информационных потоков: экономических, новостных, технического управления. Необходимо как можно скорее начать работы по ликвидации найденной уязвимости в защитных свойствах CRC алгоритма. Эти работы могут заключаться в поиске новых способов подтверждения истинности принятой информации, основанных на работах [4 - 8]. Выводы
В статье разобран один из возможных алгоритмов преодоления защитных средств CRC - контрольной суммы.
Восприятие фальсифицированных пакетов, с непредсказуемой информацией, в качестве корректных пакетов с корректной информацией, может привести к аварийным последствиям в системах получающих управляющую информацию в реальном времени.
Большим рискам подвергаются архивные хранилища данных, в которых проверка целостности хранящейся информации осуществляется периодическим контролем хранимой информации, при котором истинность хранимой информации подтверждается: совпадением размера проверяемого файла с его эталонным размером, и совпадением получаемого CRC проверяемого файла с его эталонным CRC.
Для нейтрализации уязвимости защитных свойств контрольной суммы ( CRC) предлагается использовать новые возможности, которые базируются на открытии структуры случайной бинарной последовательности [4 - 8].
Список литературы /References
1. Ross N. Williams. Элементарное руководство по CRC алгоритмам обнаружения ошибок (A painless guide to CRC error detection algorithms^ 19 августа 1993 г. [Электронный ресурс]. Режим доступа: ftp://www.internode.net.au/clients/rocksoft/pa pers/crc_v3.txt/ (дата обращения: 26.02.2018).
2. Филатов О.В., Филатов И.О., Макеева Л.Л. и др. Потоковая теория: из сайта в книгу. Москва. «Век информации», 2014. С. 200.
3. Филатов О.В., Филатов И.О. «Закономерность в выпадении монет - закон потоковой последовательности». Германия. Издательский дом: LAPLAMBERT Academic Publishing, 2015. С. 268.
4. Филатов О.В., Филатов И.О. О закономерностях структуры бинарной последовательности. «Журнал научных публикаций аспирантов и докторантов», 2014. № 5 (95). С. 226-233.
5. Филатов О.В. Теорема «Об амплитудно-частотной характеристике идеальной бинарной случайной последовательности. Журнал «Проблемы современной науки и образования», 2015. № 1 (31). С. 5-11.
6. Филатов О.В. Определение случайной бинарной последовательности как комбинаторного объекта. Расчёт совпадающих фрагментов в случайных бинарных последовательностях. // Проблемы современной науки и образования. № 6 (48), 2016. С. 12-22.
7. Филатов О.В. Derivation of formulas for Golomb postulates. A method for creating pseudo-random sequence of frequencies Mises. Basics "Combinatorics of long sequences." / Вывод формул для постулатов Голомба. Способ создания псевдослучайной последовательности из частот Мизеса. Основы «Комбинаторики длинных последовательностей». // Проблемы современной науки и образования. № 17 (59), 2016. С. 11-18.
8. Филатов О.В. Доказательство теоремы: «Формула для цуг из составных событий, образующих случайную бинарную последовательность». // Проблемы современной науки и образования, 2017. № 20 (102). С. 6-12.
BOUNDS OF PROOF COMPLEXITY MEASURES FOR SOME SEQUENCE OF MANY-VALUED TAUTOLOGIES Tshitoyan A.S. Email: Tshitoyan17123@scientifictext.ru
Tshitoyan Arman Samvelovich - PhD Student, DEPARTMENT OF INFORMATICS AND APPLIED MATHEMATICS, YEREVAN STATE UNIVERSITY, YEREVAN, REPUBLIC OF ARMENIA
Abstract: in this paper the main proof complexity characteristics in some proof systems for two versions of many valued propositional logic with more than one designated values are investigated for some class of k-valued(k > 3) tautologies. For many valued logic with Lukasiewicz's negation and negation, defined by permuting the truth values cyclically, we consider the "elimination" system, which is based on the determinative disjunctive normal forms. We suggest some generalization for a family of 2-valued tautologies, which are known as "hard" for some proof systems of classical propositional logic tautologies. For introduced sequence of many-valued tautologies we obtain simultaneously optimal bounds for different proof complexity measures (asymptotically the same upper and lower bounds for each measures). Keywords: Many-valued logic, elimination systems, determinative disjunctive normal form, proof complexity.
ОЦЕНКИ ВЕЛИЧИН СЛОЖНОСТЕЙ ВЫВОДОВ НЕКОТОРОЙ ПОСЛЕДОВАТЕЛЬНОСТИ МНОГОЗНАЧНЫХ ТАВТОЛОГИЙ
Читоян А.С.
Читоян Арман Самвелович - аспирант, фикультет информатики и прикладной математики, Ереванский государственный университет, г. Ереван, Республика Армения
Аннотация: в данной статье исследованы основные сложностные характеристики выводов для определенного класса k-значных (k>3) тавтологий в некоторых системах двух версий многозначных логик с более чем одним выделенным значением. Для многозначных логик, основанных на отрицании Лукасевича и циклическом отрицании, мы рассматриваем «элиминационные» системы, основанные на определяющих дизъюнктивных нормальных формах. Мы предлагаем обобщение некоторого семейства 2-значных тавтологий, которые известны как «трудновыводимые» в ряде пропозициональных систем классической логики. Для введенной последовательности