Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Проблеми захисту виконуваного коду Java

РефератДопомога в написанніДізнатися вартістьмоєї роботи

У більшості випадків для обходу захисту, зловмисникові потрібно вивчити принцип роботи її коду, і те, як вона взаємодіє з самою захищуваною програмою, цей процес вивчення називається процесом реверсивної (зворотної) інженерії. Цей процес часто залежить від властивостей людської психіки, тому використання цих властивостей дозволяє знизити ефективність самого процесу реверсивної інженерії. Суть… Читати ще >

Проблеми захисту виконуваного коду Java (реферат, курсова, диплом, контрольна)

На відміну від C або C++, Java компілятор не створює кінцевий машинний код, а всього лиш його платформенно незалежне подання — байт-код. Отриманий байт-код містить дуже багато осмисленої інформації, яка може допомогти розібратися зломщикові програми в принципі її роботи.

При створенні програми, в більшості, вводяться явні назви для класів та їх методів. Наприклад, клас ConfigMgr швидше за все бдует представляти сервіс для управління конфігруцією програмного продукту. А його метод getRootCataloog — повертатиме кореневий коталог, де фізично розташована програма. Це, звичайно, істотно полегшує розуміння програми для програміста, але і одночасно допомагає зловмисникові, адже при декомпіляції Java байт-коду виходять реальні назви класів та їх методів. Тобто при декомпіляції скомпільованого .class файлу початковий код відображається майже ідентичний до написаного програмістом.

Методи захисту виконуваного коду Java

Обфускація

У більшості випадків для обходу захисту, зловмисникові потрібно вивчити принцип роботи її коду, і те, як вона взаємодіє з самою захищуваною програмою, цей процес вивчення називається процесом реверсивної (зворотної) інженерії. Цей процес часто залежить від властивостей людської психіки, тому використання цих властивостей дозволяє знизити ефективність самого процесу реверсивної інженерії.

Обфускація («obfuscation» — заплутування), це один з методів захисту програмного коду, який дозволяє ускладнити процес реверсивної інженерії коду захищуваного програмного продукту.

Суть процесу обфускаціі полягає в тому, щоб заплутати програмний код і усунути більшість логічних зв’язків у ньому, тобто трансформувати його так, щоб він був дуже важкий для вивчення і модифікації сторонніми особами (будь то зломщики, або програмісти які збираються дізнатися унікальний алгоритм роботи захищуваної програми).

Процеси обфускаціі можна класифікувати за видами, в залежності від способу модифікації коду програми:

Лексична обфускація. Найбільш проста, полягає у форматуванні коду програми, зміні його структури, таким чином, щоб він став нечитабельним, менш інформативним, і важким для вивчення.

Обфускація даних. Така обфускація пов’язана з трансформацією структур даних. Вона вважається більш складною, і є найбільш просунутою і часто використовуваною.

Обфускація управління. Обфускація такого виду здійснює заплутування потоку управління, тобто послідовності виконання програмного коду. Більшість її реалізацій грунтується на використанні непрозорих предикат, в якості, яких виступають, послідовності операцій, результат роботи яких складно визначити (саме поняття «предикат» висловлює властивість одного об'єкта (аргументу), або відносини між кількома об'єктами).

Перенесення логіки на сервер

Так як Java — кроссплатформенна мова програмування, то вона дозволяє виконувати програму в браузері за допомогою так званих Java-аплетів. Java-аплети виконуються у браузері з використанням віртуальної Java машини (JVM), або в Sun’s AppletViewer, автономному засобі для випробування аплетів.

Це дозволяє перенести основну логіку програми на сервер, а на стороні клієнта, в браузері буде лише відображатись результат виконання програми. Тому зловмисник не отримає доступу до початкового коду програми і не буде знати як вона працює.

Шифрування виконуваного коду

Одним із ефективних способів захисту виконуваного коду від зловмисників є шифрування. В цьому випадку скомпільований .class файл зашифровується надійними алгоритмами шифрування і окремо пишеться програма, яка буде розшифровувати його і передавати JVM на виконання. Таким чином зловмисник, навіть якщо отримає зашифрований. class файл, не зможе його декомпілювати і не зможе витягнути з нього ніякої корисної інформації.

Висновки

В цьому розділі було розглянуто архітектуру Java. Її недостатком виявляється проблематичний захист виконуваного коду, тому що компілятор Java компілює у проміжковий байт-код, який можна з легкістю декомпілювати та дослідити, а не машинний код.

Розглянуто також способи захисту виконуваного коду Java, та обрано метод захисту шифруванням, тому-що зашифрований байт-код неможливо дослідити, а розшифрувати його дуже проблематично.

Показати весь текст
Заповнити форму поточною роботою