Текущая статья не является практическим руководством или руководством к действию. Представленный материал представлен исключительно в образовательных целях и несёт в себе концепцию «пища для размышления» не нарушая авторского и/или смежного права. Повторять описанные процессы не рекомендуется. Часть материала может быть полезна инженерам занимающихся различными вопросами и проблемами криптологии. Некоторые материалы, находящиеся в теле статьи, являются собственностью их многоуважаемых авторов. Статья не претендует на полноту. Некоторые значения и параметры были сознательно изменены.
Вступление
В процессе получения данных каротажа, с использованием ПО Sigma, получают данные в формате описанном в этой публикации. Внешний вид программы просмотровщика представлен ниже.
Данные каротажа поступая с прибора измеряющего геофизические параметры попадает к заказчику через цепь посредников, таким образом целостность и аутентичность данных полученных с прибора контролировать классическими средствами достаточно сложно или дорого. Заказчик хочет быть уверенным что он получает именно то за что платит. При передаче данных в классическом формате, например .LAS или .DAT, или любого другого открытого формата, возможна намеренное или случайное изменение структуры, что повлечет за собой непредсказуемые последствия.
В представленной схеме, данные гарантированно передаются от прибора к заказчику. При этом каждый узел цепи может спокойно извлечь данные из .SFP формата и получить их в открытом формате (.DAT). Каждый узел цепи может обменяться данными в открытом (.DAT) формате, однако передача данных в этом формате не гарантирует аутентичности.
Извлечение данных и аутентичность
Если есть исходный .SFP (Sigma File Passport), то используя просмотровщик можно или открыть файл для просмотра, или извлечь (расшифровать) из него .DAT файл.
Если произвести расшифровку, то рядом окажется файл .DAT.
Всплывающая подсказка покажет шапку файла с сообщением что файл прошел проверку. Для .DAT файла файл .SFP является паспортом, удостоверяющим аутентичность.
Если в файле .DAT изменить хотя бы один бит, всплывающая подсказка скажет что "ФАЙЛ ПОДДЕЛАН!". Хотя открыть его можно так же как и оригинальный файл.
Паспорт
Какова же структура паспорта? Исходя из того что можно расшифровать .SFP и получить .DAT можно сделать вывод что .SFP содержит в себе полное содержание. Сравнение длин файлов указывает что .SFP длиннее .DAT на 21 байт.
Если пропустить первые 21 байт .SFP файла, то последующий код полностью повторяет код .DAT файла с преобразованием. Анализ и сопоставление данных которые удалось собрать из файлов показало, что таблица соответствия преобразований имеет вид.
Что представляет собой классический аффинный шифр, или шифр подстановок. Дальнейший анализ показал что алгоритм подстановок выглядит как операция инверсии или исключающего ИЛИ (XOR) над 1 и 4 битом младшего байта ASCII кода.
Для преобразования сразу двух бит можно использовать инструкцию XOR $9.
Такой подход позволяет сохранить целостность но в тоже время скрыть читаемость данных.
Осталось провести анализ первых 21 байт. Из структуры на рисунке 8 видно, что байты 18-21 содержат расширение исходного файла. Имя остаётся прежнее. Эксперименты с форматом .LAS показали, что просмотровщик SIGMA Carottage Preview с таким же успехом извлекает и .LAS формат. Другие эксперименты проводились c различными видами и длинами расширений. Вывод, из .SFP формата просмотровщик может извлекать все доступные для просмотровщика форматы, с тем же алгоритмом кодирования.
В 17 бите находится длина расширения по умолчанию равная 4 , по умолчанию это точка и три знака. Однако поддерживаются и короткие (менее 3 символов) и длинные расширения. Длина расширения указывается в шестнадцатеричном формате. Тесты прошли с предельным расширением в 254 символа.
ХЕШ-значение формируется достаточно древним но не потерявшим актуальность 128 битным алгоритмом Ривеста. Общая схема получения ХЭШ-значения приведена на рисунке 12.
Алгоритм легко поддаётся атакам brute-force, однако в данном случаем его использование оправдано. Таким образом проверяется целостность данных. И извлекаются целевые данные.