27
Сигурност на Сигурност на мобилните мобилните изчисления изчисления Софийски университет Софийски университет "Св. Климент Охридски" "Св. Климент Охридски" Светлин Наков, Светлин Наков, докторант към КИТ докторант към КИТ научен ръководител: научен ръководител: доц. Боян Бончев доц. Боян Бончев Семинар за докторанти към Семинар за докторанти към катедра "Информационни катедра "Информационни технологии" на ФМИ технологии" на ФМИ 1.06.2005 г. 1.06.2005 г.

Svetlin Nakov - Mobile Code Security

Embed Size (px)

Citation preview

Page 1: Svetlin Nakov - Mobile Code Security

Сигурност на Сигурност на мобилните мобилните изчисленияизчисления

Сигурност на Сигурност на мобилните мобилните изчисленияизчисления

Софийски университетСофийски университет"Св. Климент Охридски""Св. Климент Охридски"Софийски университетСофийски университет

"Св. Климент Охридски""Св. Климент Охридски"

Светлин Наков,Светлин Наков,докторант към КИТдокторант към КИТ

научен ръководител:научен ръководител:доц. Боян Бончевдоц. Боян Бончев

Светлин Наков,Светлин Наков,докторант към КИТдокторант към КИТ

научен ръководител:научен ръководител:доц. Боян Бончевдоц. Боян Бончев

Семинар за докторанти Семинар за докторанти към катедра към катедра

"Информационни "Информационни технологии" на ФМИтехнологии" на ФМИ

1.06.2005 г.1.06.2005 г.

Семинар за докторанти Семинар за докторанти към катедра към катедра

"Информационни "Информационни технологии" на ФМИтехнологии" на ФМИ

1.06.2005 г.1.06.2005 г.

Page 2: Svetlin Nakov - Mobile Code Security

2

СъдържаниеСъдържание

• Мобилни изчисленияМобилни изчисления

• Защита на изчислителните възлиЗащита на изчислителните възли

• Статична проверка на кодаСтатична проверка на кода

• Проверка на кода по време на Проверка на кода по време на изпълнениеизпълнение

• Защита на мобилните програмиЗащита на мобилните програми

• Кодирани изчисленияКодирани изчисления

• Други, по-слаби решенияДруги, по-слаби решения

• ЗаключениеЗаключение

Page 3: Svetlin Nakov - Mobile Code Security

3

Разпределени изчисленияРазпределени изчисленияРазпределени изчисленияРазпределени изчисления

• Мобилни данниМобилни данни• Отдалечени данни се обработват локалноОтдалечени данни се обработват локално

• Мобилен контролМобилен контрол• Извиква се отдалечен код (напр. Извиква се отдалечен код (напр. RPCRPC, ,

DCOM)DCOM)

• Мобилен кодМобилен код• Скриптове или изпълним код се Скриптове или изпълним код се

изпълняват на отдалечена машина (напр. изпълняват на отдалечена машина (напр. JavaScript)JavaScript)

• Мобилни агентиМобилни агенти• Софтуерни агенти се местят от машина на Софтуерни агенти се местят от машина на

машина и се изпълняват автономномашина и се изпълняват автономно

Page 4: Svetlin Nakov - Mobile Code Security

4

• Мобилни данниМобилни данни• Отдалечени данни се обработват локалноОтдалечени данни се обработват локално

• Мобилен контролМобилен контрол• Извиква се отдалечен код (напр. Извиква се отдалечен код (напр. RPCRPC, ,

DCOM)DCOM)

• Мобилен кодМобилен код• Скриптове или изпълним код се Скриптове или изпълним код се

изпълняват на отдалечена машина (напр. изпълняват на отдалечена машина (напр. JavaScript)JavaScript)

• Мобилни агентиМобилни агенти• Софтуерни агенти се местят от машина на Софтуерни агенти се местят от машина на

машина и се изпълняват автономномашина и се изпълняват автономно

Мобилни Мобилни изчисленияизчисления

Мобилни изчисленияМобилни изчисленияМобилни изчисленияМобилни изчисления

Page 5: Svetlin Nakov - Mobile Code Security

5

Сигурност на мобилнитеСигурност на мобилнитеизчисленияизчисления

• Участници при мобилните изчисленияУчастници при мобилните изчисления

• Мобилен кодМобилен код (mobile programs) (mobile programs)

• Мобилни скриптове, програми и агентиМобилни скриптове, програми и агенти

• Възли за мобилни изчисления Възли за мобилни изчисления (hosts)(hosts)

• Машини, които изпълняват кодаМашини, които изпълняват кода

• Сигурност на мобилните изчисленияСигурност на мобилните изчисления

• Защита на възлите от "лоши" програмиЗащита на възлите от "лоши" програми

• Защита на програмите от "лоши" възлиЗащита на програмите от "лоши" възли

Page 6: Svetlin Nakov - Mobile Code Security

6

Сигурност на мобилнитеСигурност на мобилнитеизчисленияизчисления

• Аспекти на сигурносттаАспекти на сигурността

• Неприкосновеност (Неприкосновеност (privacy)privacy)

• Да не се допуска достъп до чужди данниДа не се допуска достъп до чужди данни

• Интегритет (Интегритет (integrity)integrity)

• Да не се допуска промяна на поведението Да не се допуска промяна на поведението на изчисленията или даннитена изчисленията или данните

• БезотказностБезотказност ((availabilityavailability))

• Безотказност на работата и разумно Безотказност на работата и разумно използване на ресурситеизползване на ресурсите, , защита от защита от DoSDoS

Page 7: Svetlin Nakov - Mobile Code Security

7

СъдържаниеСъдържание

• Мобилни изчисленияМобилни изчисления

• Защита на изчислителните възлиЗащита на изчислителните възли

• Статична проверка на кодаСтатична проверка на кода

• Проверка на кода по време на Проверка на кода по време на изпълнениеизпълнение

• Защита на мобилните програмиЗащита на мобилните програми

• Кодирани изчисленияКодирани изчисления

• Други, по-слаби решенияДруги, по-слаби решения

• ЗаключениеЗаключение

Page 8: Svetlin Nakov - Mobile Code Security

8

Политики за сигурностПолитики за сигурност

• Изчислителна системаИзчислителна система• Разглеждаме я като машина със Разглеждаме я като машина със

състояниясъстояния

• ПрограмаПрограма• Съвкупност от възможните пътища на Съвкупност от възможните пътища на

изпълнение (последователност от изпълнение (последователност от състояния и преходи между тях)състояния и преходи между тях)

• Политика за сигурностПолитика за сигурност• Предикат върху възможните пътища на Предикат върху възможните пътища на

изпълнениеизпълнение

• Дефинира позволени и непозволени Дефинира позволени и непозволени пътищапътища

Page 9: Svetlin Nakov - Mobile Code Security

9

Политики за сигурностПолитики за сигурност

• Политика за безопасностПолитика за безопасност (safety (safety))

• Контролира "лошите" неща, които не Контролира "лошите" неща, които не трябва да се случват при изпълнениетотрябва да се случват при изпълнението

• Пример: да не се четат чужди файловеПример: да не се четат чужди файлове

• Политика за жизнеспособностПолитика за жизнеспособност (liveness)(liveness)

• Контролира "хубавите" неща, които Контролира "хубавите" неща, които трябва задължително да се случат при трябва задължително да се случат при изпълнениетоизпълнението

• Пример: програмата да завърши, да не Пример: програмата да завърши, да не настъпи "настъпи "deadlockdeadlock"" и др.и др.

Page 10: Svetlin Nakov - Mobile Code Security

10

Защита на изчислителните Защита на изчислителните възливъзли

• Два подхода за прилагане на Два подхода за прилагане на политиките за сигурностполитиките за сигурност

• Статична верификацияСтатична верификация• Директна статична верификацияДиректна статична верификация

• Сигурност чрез проверка на типовете Сигурност чрез проверка на типовете ((Security Type Checking)Security Type Checking)

• Код с доказателстваКод с доказателства (Proof-Carrying Code) (Proof-Carrying Code)

• Наблюдение по време на Наблюдение по време на изпълнениеизпълнение• Директно наблюдение при изпълнениеДиректно наблюдение при изпълнение

• Инструментация на кодаИнструментация на кода

Page 11: Svetlin Nakov - Mobile Code Security

11

Директна статична Директна статична верификацияверификация

• Проверява всички пътища на Проверява всички пътища на изпълнение срещу политиката за изпълнение срещу политиката за сигурностсигурност

• Има два подхода:Има два подхода:

• Математическа логикаМатематическа логика

• Автоматично доказване на теоремиАвтоматично доказване на теореми

• Често е неразрешим проблемЧесто е неразрешим проблем

• Директна проверкаДиректна проверка

• Експоненциален брой пътища за Експоненциален брой пътища за изпълнениеизпълнение

• Практически неприложимаПрактически неприложима

Page 12: Svetlin Nakov - Mobile Code Security

12

Сигурност чрез проверка Сигурност чрез проверка на типоветена типовете

• Сигурност чрез проверка на Сигурност чрез проверка на типовететиповете• Политиката за сигурност се съдържа в Политиката за сигурност се съдържа в

синтактичните и семантичните правиласинтактичните и семантичните правила на езикана езика

• Три елемента:Три елемента:• Анотации към програмните елементиАнотации към програмните елементи

• Правила за използване на типоветеПравила за използване на типовете

• Доказателство за сигурността – Доказателство за сигурността – отговорност на създателя на езикаотговорност на създателя на езика

• Пример: Пример: Java bytecode verifierJava bytecode verifier

Page 13: Svetlin Nakov - Mobile Code Security

13

Код с доказателстваКод с доказателства(Proof-Carrying Code)(Proof-Carrying Code)

• Мобилните програми носят в себе си Мобилните програми носят в себе си доказателство, че кодът им отговаря доказателство, че кодът им отговаря на политиката за сигурностна политиката за сигурност

• Изчислителният възел само Изчислителният възел само проверява доказателстватапроверява доказателствата

• Разпределена версия на директната Разпределена версия на директната статична верификациястатична верификация• Изводите се правят при компилация Изводите се правят при компилация

чрез математическа логикачрез математическа логика

• Проверяват се от изчислителния възелПроверяват се от изчислителния възел

Page 14: Svetlin Nakov - Mobile Code Security

14

Наблюдение по време на Наблюдение по време на изпълнениеизпълнение

• Изпълнението на програмите се Изпълнението на програмите се проследявапроследява от изчислителния от изчислителния възелвъзел• На всяка стъпка се проверява На всяка стъпка се проверява

политиката за сигурност чрез тригериполитиката за сигурност чрез тригери

• Осигурява само безопасност, но не Осигурява само безопасност, но не и жизнеспособности жизнеспособност

• Работи бавно – много извиквания Работи бавно – много извиквания на процедурина процедури

• Пример: Пример: Java Security ManagerJava Security Manager

Page 15: Svetlin Nakov - Mobile Code Security

15

Инструментация на кодаИнструментация на кода

• Кодът за проверка на сигурността Кодът за проверка на сигурността се вмъква в кода на програматасе вмъква в кода на програмата

• Намалява се забавянето заради Намалява се забавянето заради проверкитепроверките

• Нужно е да се защити вмъкнатия код Нужно е да се защити вмъкнатия код от кода на програматаот кода на програмата

• Пример: Пример: Software Fault Isolation (SFI)Software Fault Isolation (SFI)

Page 16: Svetlin Nakov - Mobile Code Security

16

Сравнение на методитеСравнение на методите

static time runtime

language designer

mobile program producer

host (load time)

host (runtime)

static approach

generic verification annotation annotation predicate verifying

none

verification w/ type checking

type system & proof

typing rules & annotations

type checking

none

verification w/ Proof-Carrying

Code

requirements on instructions

annotation, verif. cond.

generation & proof

Verif. cond. gen. & proof

checking

none

runtime approach

monitoring w/o instrumentation

none / slight annotation

none / slight annotation

none monitoring

monitoring w/ instrumentation

slight annotation

slight annotation

code insertion

lightweight monitoring

approaches

computation stages

Page 17: Svetlin Nakov - Mobile Code Security

17

СъдържаниеСъдържание

• Мобилни изчисленияМобилни изчисления

• Защита на изчислителните възлиЗащита на изчислителните възли

• Статична проверка на кодаСтатична проверка на кода

• Проверка на кода по време на Проверка на кода по време на изпълнениеизпълнение

• Защита на мобилните програмиЗащита на мобилните програми

• Кодирани изчисленияКодирани изчисления

• Други, по-слаби решенияДруги, по-слаби решения

• ЗаключениеЗаключение

Page 18: Svetlin Nakov - Mobile Code Security

18

Защита на мобилните Защита на мобилните програми от изчислителните програми от изчислителните възливъзли

• Два аспектаДва аспекта

• Защита на даннитеЗащита на данните

• Да се запазят в тайна обработваните Да се запазят в тайна обработваните данни и получения резултатданни и получения резултат

• Да се защити резултатът от подмянаДа се защити резултатът от подмяна

• Защита на програмния кодЗащита на програмния код

• Да остане в тайна програмния код – Да остане в тайна програмния код – за какво служи и как работиза какво служи и как работи

• Да се защити кодът от промянаДа се защити кодът от промяна

Page 19: Svetlin Nakov - Mobile Code Security

19

Защита на мобилните Защита на мобилните програмипрограми

• Кодирани изчисленияКодирани изчисления• Изчисления с кодирани данниИзчисления с кодирани данни

• Кодиране на полиномиални функцииКодиране на полиномиални функции

• Кодиране на функции в матрична формаКодиране на функции в матрична форма

• Кодиране на произволни функцииКодиране на произволни функции

• Други, по-несигурни подходиДруги, по-несигурни подходи• Разбъркване и валидност на кодаРазбъркване и валидност на кода

• Раздробяване и дублиране на Раздробяване и дублиране на изчислениятаизчисленията

• Откриване на подправени изчисленияОткриване на подправени изчисления

Page 20: Svetlin Nakov - Mobile Code Security

20

Изчисления с кодирани Изчисления с кодирани данниданни

• Изчисления с кодирани данниИзчисления с кодирани данни• Кодират се входните данниКодират се входните данни

• Трансформира се изчислителната Трансформира се изчислителната функцияфункция

• Декодира се изчисленият изходДекодира се изчисленият изход

• x x E(x), f(x) E(x), f(x) g( E(x) ), D(g( E(x) ) ) = f (x) g( E(x) ), D(g( E(x) ) ) = f (x)

• Известни са техники за Известни са техники за трансформация на булеви функциитрансформация на булеви функции

• Защитават само данните, но не и Защитават само данните, но не и изчислениятаизчисленията

Page 21: Svetlin Nakov - Mobile Code Security

21

Изчисления с кодирани функцииИзчисления с кодирани функции

• Целта е да се кодира функцията, която Целта е да се кодира функцията, която се изчислява:се изчислява:• f(x) f(x) E( f(x) ), D( E( f(x) ) ) = f (x) E( f(x) ), D( E( f(x) ) ) = f (x)

• Кодиране на полиномиални функцииКодиране на полиномиални функции• Не може да се разшири за общи функцииНе може да се разшири за общи функции

• Кодиране на функции в матрична Кодиране на функции в матрична формаформа• Кодира произволна булева функцияКодира произволна булева функция

• Кодираната функция може да е огромнаКодираната функция може да е огромна

• Преобразуването на обща функция в булева Преобразуването на обща функция в булева води до експоненциален размер на входаводи до експоненциален размер на входа

Page 22: Svetlin Nakov - Mobile Code Security

22

Кодиране на произволни Кодиране на произволни функциифункции

• Кодирането на произволна Кодирането на произволна функция заедно с нейния вход и функция заедно с нейния вход и изход е нерешен проблемизход е нерешен проблем

• Пълна защита на мобилните Пълна защита на мобилните програми не е възможна на програми не е възможна на практикапрактика

• За практически цели се използват За практически цели се използват по-несигурни подходипо-несигурни подходи

Page 23: Svetlin Nakov - Mobile Code Security

23

По-несигурни подходиПо-несигурни подходи

• Разбъркване и валидност на кодаРазбъркване и валидност на кода• Разбъркването на кода Разбъркването на кода (obfuscation) (obfuscation)

затруднява неговото анализиранезатруднява неговото анализиране

• Валидността на кода ограничава времето Валидността на кода ограничава времето за анализ (и подправяне на изчислението)за анализ (и подправяне на изчислението)

• Не защитава даннитеНе защитава данните

• Раздробяване и дублиране на Раздробяване и дублиране на изчисленията в различни възлиизчисленията в различни възли• Раздробяването на изчисленията Раздробяването на изчисленията

защитава частично и кода и даннитезащитава частично и кода и данните

• Дублирането на изчисления позволява Дублирането на изчисления позволява откриване на невалидни изчислителни откриване на невалидни изчислителни възливъзли

Page 24: Svetlin Nakov - Mobile Code Security

24

Откриване на подправени Откриване на подправени изчисленияизчисления

• Оценка на състояниетоОценка на състоянието• Заявителят проверява дали резултатът Заявителят проверява дали резултатът

е получаем при нормална работае получаем при нормална работа

• Следене на изпълнениетоСледене на изпълнението• Изчислителните възли изпращат Изчислителните възли изпращат

информация за изпълнения код (информация за изпълнения код (logs)logs)

• Заявителят проверява валидността имЗаявителят проверява валидността им

• Излишни данни и изчисленияИзлишни данни и изчисления• Заявителят добавя към изчислението Заявителят добавя към изчислението

излишни данни и изчисленияизлишни данни и изчисления

• По тях открива подправени изчисленияПо тях открива подправени изчисления

Page 25: Svetlin Nakov - Mobile Code Security

25

СъдържаниеСъдържание

• Мобилни изчисленияМобилни изчисления

• Защита на изчислителните възлиЗащита на изчислителните възли

• Статична проверка на кодаСтатична проверка на кода

• Проверка на кода по време на Проверка на кода по време на изпълнениеизпълнение

• Защита на мобилните програмиЗащита на мобилните програми

• Кодирани изчисленияКодирани изчисления

• Други, по-слаби решенияДруги, по-слаби решения

• ЗаключениеЗаключение

Page 26: Svetlin Nakov - Mobile Code Security

26

ЗаключениеЗаключение

• Сигурността на мобилните Сигурността на мобилните изчисления има две страниизчисления има две страни• Защита на изчислителните възлиЗащита на изчислителните възли

• Защита на програмитеЗащита на програмите

• Защитата на възлитеЗащитата на възлите• Статична и по време на изпълнениеСтатична и по време на изпълнение

• Защитата на програмитеЗащитата на програмите• Нерешен проблемНерешен проблем

• Има частични решенияИма частични решения

Page 27: Svetlin Nakov - Mobile Code Security

27

Насоки за бъдещи Насоки за бъдещи изследванияизследвания

• Защита на възлите срещу код, Защита на възлите срещу код, генериран по време на изпълнениегенериран по време на изпълнение

• Защита на програмите при специални Защита на програмите при специални изчисленияизчисления• Например при симулации от физикатаНапример при симулации от физиката

• Защита на данните чрез Защита на данните чрез раздробяване на изчисленията – как раздробяване на изчисленията – как да раздробявамеда раздробяваме

• Методологии за откриване на Методологии за откриване на невалидни възли чрез излишни данниневалидни възли чрез излишни данни