Композиційний метод контролю цілісності програмного коду FPGA, базований на використанні цифрових водяних знаків
DOI:
https://doi.org/10.15276/aait.02.2019.5Ключові слова:
контроль цілісності програмного коду, програмовані апаратні компоненти, FPGA, LUT-орієнтована архітектура, контрольна хеш-сума, цифровий водяний знак, стеганографічний підхід до контролю цілісностіАнотація
В роботі розглянута проблема забезпечення цілісності програмованих компонентів комп'ютерних систем. Показані основні етапи життєвого циклу програмованих компонентів. Відзначено, що можливість модифікації програмного коду відкриває шляхи до зловмисному порушення його цілісності. Традиційні методи контролю цілісності базуються на використанні контрольних хеш-сум. Однак недолік традиційних методів полягає в тому, що вони не дозволяють приховати факт виконання контролю цілісності. Цей факт є відкритим. Навіть в умовах додаткового шифрування контрольної хеш-суми її наявність свідчить про те, що проводиться контроль цілісності. В роботі виділяється клас методів, в рамках яких контрольна хеш-сума вбудовується в програмний код у вигляді цифрового водяного знаку. Цей клас методів розглядається стосовно контролю цілісності програмного коду мікросхем FPGA (Field Programmable Gate Array). Для вбудовування використовуються особливості LUT-орієнтованої архітектури FPGA. Вбудовування контрольного цифрового водяного знаку виконується за рахунок застосування еквівалентних перетворень програмних кодів на множині блоків LUT, що входять до складу FPGA. Особливістю вбудовування цифрового водяного знаку є те, що таке вбудовування не змінює розмір програмного коду і не модифікує функціонування мікросхеми FPGA. В результаті вбудовування явно виділити контрольну хеш-суму в програмному коді стає неможливим. Витягання цифрового водяного знаку, який включає до свого складу хеш-суму можливо тільки при наявності спеціального стеганографічного ключа (що задає правила розміщення водяного знака в просторі програмного коду FPGA). В даній роботі пропонується композиційний метод вбудовування контрольного цифрового водяного знаку в програмний код FPGA. Метод поєднує властивості методів, що забезпечують відновлення первісного стану програмного коду, і методів, які здійснюють вбудовування на основі синдромного декодування. Пропонований метод поєднує корисні властивості зазначених двох класів методів і спрямований на зменшення кількості еквівалентних перетворень, що застосовуються до програмного коду в ході вбудовування цифрового водяного знаку. Представлено опис і результати експериментального дослідження запропонованого методу. Показано переваги запропонованого методу в порівнянні з базовими методами, вбудовування цифрових водяних знаків в програмний код FPGA.