Диплом: Алгоритмы упаковки и шифрования исполняемого кода

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
42
сервере, доступном в глобальной сети, а
доступ осуществляется по принципу
тонкого клиента. Код исполняется на
«доверенной» стороне, однако
стойкость защиты зависит от
защищенности серверов. Также
необходимо обеспечить
конфиденциальность запросов,
аутентификацию пользователей и
отказоустойчивость сервиса.
Распространенный способ
статистического анализа приложения –
исследование его исходного кода.
Злоумышленники находят
некорректные программные
конструкции, которые могут привести к
некорректной работе приложения. Они
могут стать уязвимостями или
«закладками», или просто замедлять
работу приложения, что часто случается
с неправильно построенными запросами
к базе данных.
Динамический анализ позволяет
исследовать защищенность
приложения, компилируя его с
различными параметрами и исполняя
43
его на реальном или виртуальном
процессоре. Исследуя реакции
приложения на разные воздействия,
можно обнаружить и нетипичные
реакции – например, запросы к данным,
скрытый канал передачи данных и т.п.
Здесь можно выделить средства
защиты от непосредственно анализа –
обфускаторы и
самомодифицирующийся код.
Табл. 1. Меры обеспечения защиты исходного кода программного обеспечения
2.2.1. Шифрование
Шифрованием называется процесс преобразования сообщения или информации
таким образом, что доступ к ней имеют только авторизованные лица. В основном
шифрование используется для предотвращения утечек конфиденциальной
информации. Важной особенностью любого алгоритма шифрования является
наличие и выбор ключа, который утверждает выбор конкретного преобразования
исходной информации из совокупности множества для данного алгоритма.
Криптографической стойкостью алгоритма называется свойство шифра
противостоять анализу, направленному на изучение шифра с целью его
дешифрования. Криптостойкость шифра является его важнейшей характеристикой:
она отражает, насколько успешно алгоритм решает задачу шифрования, то есть
свойство шифра противостоять анализу, направленному на изучение шифра с целью
его дешифрования.
44
С помощью шифрования обеспечиваются три состояния безопасности
информации:
конфиденциальность
целостность – шифрование используется для предотвращения
изменения информации при передаче и хранении
идентифицируемость – шифрование используется для
аутентификации источника информации и предотвращения отказа
отправителя информации от того факта, что данные были отправлены
именно им.
Шифрование применяется для хранения и передачи важной информации в
ненадежной и/или небезопасной среде. Принимающей стороне необходимы ключ и
дешифратор, чтобы узнать зашифрованную информацию. Для этого перед отправкой
или сохранением данных они подвергаются шифрования, а для восстановления
исходных данных к зашифрованным применяется процедура расшифровывания.
Шифром называется пара алгоритмов, реализующих шифрование и
дешифрование с использованием ключей, которые могут различаться, а могут быть
одинаковыми. Секретность расшифровывающего делает данные недоступными для
несанкционированного ознакомления, а секретность первого делает невозможным
внесение ложных данных. Традиционно методы шифрования делятся на
симметричные и ассиметричные. Также методы шифрования могут обладать разной
криптостойкостью и по-разному обрабатывать входные данные – блоками или
поточно.
Симметричное шифрование использует одинаковые ключи для
зашифровывания и расшифровывания. В качестве широко используемого примера
шифров такого рода можно привести AES (Advanced Encryption Standart, также
известен как Rijndael). AES – алгоритм блочного шифрования с размеров блока в 128
бит и ключом в 128, 192 или 256 бит. Поддержка ARD введена фирмой Intel в
45
семейство процессоров x86 начиная с Intel Core i7-980X Extreme Edition, а затем на
процессорах Sandy Bridge.
AES является стандартом, основанным на алгоритме Rijndael. Для AES длина
input (блока входных данных) и State (состояния) постоянна и равна 128 бит, а длина
ключа K составляет 128, 192 или 256 бит. При этом, исходный алгоритм Rijndael
допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для
обозначения выбранных длин input, State и Cipher Key в 32-битных словах
используется нотация    для input и State,      для Cipher Key
соответственно для разных длин ключей. На Лист. 5 показан псевдокод алгоритма.
Лист. 5. Псевдокод алгоритма AES
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1])
for round = 1 step 1 to Nr-1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
46
В начале шифрования input копируется в массив State по правилу

????
 
????
 ????  ????, для      и      . После этого к State
применяется процедура AddRoundKey и затем State проходит через процедуру
трансформации (раунд) 10, 12, или 14 раз (в зависимости от длины ключа), при
этом надо учесть, что последний раунд несколько отличается от предыдущих.
В итоге, после завершения последнего раунда трансформации, State
копируется в output по правилу 
????
  
????
 ???? ????, для      и
    . Отдельные трансформации SubBytes, ShiftRows, MixColumns и
AddRoundKey — обрабатывают State. Массив w[]содержит key schedule.
В процедуре SubBytes (Рис. 7) каждый бит в state заменяется
соответствующим элементов в фиксированной 8-битной таблице поиска S по
формуле 

 ????

????, что обеспечивает нелинейность алгоритма шифрования.
Построение S состоит из двух шагов:
1. взятие обратного числа в поле Галуа ????
????
2. к каждому байту применяется операция 
????

????

????


????

????


????

????


????

????


, где     
и 
– i-й бит b, а 
– i-й бит константы   

 


47
Рис. 7. Процедура SubBytes
Так обеспечивается защита от атак, основанных на простых алгебраических
свойствах.
В процедуре ShiftRows (Рис. 8) байты в каждой строке циклически
сдвигаются влево на позиций в зависимости от номера строки .
Рис. 8. Процедура ShiftRows
В процедуре MixColumns (Рис. 9) каждая колонка состояния
перемножается с фиксированным многочленом. Четыре байта каждой колонки
State смешиваются, используя для этого обратимую линейную
трансформацию. Каждая колонка воспринимается как полином третьей
степени, каждый из которых умножается в 
????
????
по модулю
  на
многочлен 
????
????
 
 
   . Аналогично предыдущим процедурам
MixColumns вводит в шифр диффузию.
48
Рис. 9. Процедура MixColumns
В процедуре AddRoundKey (Рис. 10) каждый байт состояния объединяется
RoundKey при помощи оператора ????????
Рис. 10. Процедура AddRoundKey
Последний раунд шифрования не включает в себя процедуру MixColumns.
49
Важным недостатком симметричных шифров является невозможность их
использования в механизмах формирования электронной цифровой подписи и
сертификатов, так как ключ известен каждой стороне.
Асимметричное шифрование в противопоставление симметричному
использует два разных ключа: открытый для шифрования и закрытый для
расшифровывания. Схема шифрования с открытым ключом показана на Рис.
11.
Рис. 11. Схема асимметричного шифрования с открытым ключом
Пусть – пространство ключей, а и – ключи шифрования и
расшифровывания соответственно. Функцией шифрования 
для
произвольного ключа шифрования    является выражение 
????
????
 , где
  , пространству шифротекстов, а   , пространству сообщений.
Функцией расшифровки 
????

????
  является функция, с помощью которой
можно найти исходное сообщение , зная шифротекст . Каждая пара
????
 
????
50
имеет свойство, зная 
невозможно решить уравнение 
????
????
 , таким
образом для данного произвольного шифротекста   невозможно найти
сообщение   . Это значит, что по данному невозможно определить
соответствующий ключ расшифрования .
является односторонней
функцией, а – лазейкой.
2.2.2. Мутация кода
Мутация кода, или так называемый «полиморфизм» — это технологии,
позволяющие формировать код программы прямо во время ее исполнения. Сама
процедура, формирующая код, не должна быть постоянной и видоизменяется при
каждом запуске программного обеспечения.
Часто мутации достигаются за счет добавления операторов, не изменяющих
алгоритм работы (например, оператор nop в языке ассемблера). На Лист. 6 приведен
пример исходного кода, использующего только переменные A и B. Ничто не
помешает алгоритму корректно работать, если ввести дополнительную переменную
C.
51
Лист. 6. Пример исходного кода
На Лист. 7 показан тот же самый код, что и на Лист. 6 , но с добавлением
операций, изменяющих значение переменной C. Код внутри секции “Encrypted”
может обрабатывать код между секциями “Decryption_Code” и “CryptoKey” и
удалять избыточные операции, меняющие переменную C. Перед тем, как
криптографическое устройство будет вновь использовано, он может добавить
поменять эти операции на другие, или даже полностью изменить алгоритм так, что
он будет выполнять те же функции.
Start:
GOTO Decryption_Code
Encrypted:
...
lots of encrypted code
...
Decryption_Code:
A = Encrypted
Loop:
B = *A
B = B XOR CryptoKey
*A = B
A = A + 1
GOTO Loop IF NOT A = Decryption_Code
GOTO Encrypted
CryptoKey:
some_random_number

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)