UA55438C2 - Спосіб контролю приписаного виконання програм - Google Patents

Спосіб контролю приписаного виконання програм Download PDF

Info

Publication number
UA55438C2
UA55438C2 UA99074040A UA99074040A UA55438C2 UA 55438 C2 UA55438 C2 UA 55438C2 UA 99074040 A UA99074040 A UA 99074040A UA 99074040 A UA99074040 A UA 99074040A UA 55438 C2 UA55438 C2 UA 55438C2
Authority
UA
Ukraine
Prior art keywords
protection
data
program
return
write
Prior art date
Application number
UA99074040A
Other languages
English (en)
Russian (ru)
Inventor
Міхаель Бальдішвайлер
Штефан Пфаб
Original Assignee
Сіменс Акцієнгезельшафт
Сименс Акциенгезельшафт
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Сіменс Акцієнгезельшафт, Сименс Акциенгезельшафт filed Critical Сіменс Акцієнгезельшафт
Publication of UA55438C2 publication Critical patent/UA55438C2/uk

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

Цей винахід стосується способу згідно з обмежувальною частиною п. 1 формули винаходу, тобто способу контролю приписаного виконання програм математичного забезпечення.
Приписане виконання програм математичного забезпечення стає дедалі все більш реальним завданням завдяки вживанню різноманітних заходів.
Якщо раніше причиною порушення належного виконання програм математичного забезпечення були насамперед ненадійне апаратурне забезпечення і помилки у програмуванні, сьогодні більш важливу роль відіграє цілеспрямоване маніпулювання процесом виконання програм.
Шляхом цілеспрямованого маніпулювання процесом виконання програм можна, наприклад, пропускати певні частини програм, завдяки чому створюється можливість виключення етапів перевірки для визначення повноважень щодо доступу.
Це може створити значні проблеми, наприклад, у галузі застосування чіп-карток, але, якщо розглядати проблему ширше, то не тільки для них, оскільки, з одного боку, вони набувають поширеного застосування, насамперед у галузях, пов'язаних з питаннями захисту (наприклад, для контролю доступу, фінансових операцій тощо), а з іншого боку, оскільки їх, природно, не можна постійно контролювати чи перевіряти, вони можуть легко стати предметом спроб маніпулювання.
У зв'язку з великою кількістю вже передбачених заходів безпеки ймовірність того, що спроба маніпуляції, метою якої є зловживання, виявиться вдалою, дуже мала. Проте, взагалі ймовірність цього виключити не можна.
Тому в основу цього винаходу було покладено завдання розробити спосіб контролю приписаного виконання програм математичного забезпечення, за допомогою якого можна, зокрема, надійно виключити можливість цілеспрямованого маніпулювання процесом виконання програми.
Це завдання згідно з винаходом вирішується за допомогою заходів, зазначених у відрізняльній частині п.1 формули винаходу.
Відповідно до цього, попереджується можливість перезапису на місце адрес повернення, записаних у запам'ятовувальний пристрій для наступного використання, та/або використання як адрес повернення помилково записаних або перезаписаних адрес повернення.
На практиці реалізувати ці етапи завдання можна, вживаючи найрізноманітніших заходів. У найпростішому випадку у разі виклику функції, що потребує запису адреси повернення у пам'ять, або в аналогічних випадках записуються не лише адреси повернення, але й додаткова інформація захисту, що дозволяє зробити висновок про те, чи будуть ще потрібні записані адреси повернення і тому на їхнє місце не можна здійснювати перезапис, та/або чи є записана адреса повернення такою, що була записана у пам'ять спочатку, чи такою, яку треба записати.
У першому випадку, тобто у разі реалізації захисту від запису інформації на місце адрес повернення, інформація захисту може складатись, наприклад, з коду захисту від запису, наприклад, біта захисту від запису або аналогічного, що додається під час запису адреси повернення і після використання записаної адреси повернення як адреси повернення стирається.
У другому випадку, тобто у разі реалізації захисту від використання адрес повернення, інформація захисту може складатись, наприклад, лише з адреси повернення або з даних, які іншим чином репрезентують або характеризують адресу повернення.
Згадана інформація захисту записується в область пам'яті, до якої переважно неможливий доступ ззовні; "нормальний" запис адрес повернення можна, як і раніше, здійснювати у так званий стек (стекову пам'ять) (5іаск).
Якщо перед кожною спробою запису до стеку здійснюється перевірка щодо того, чи позначена за допомогою біту захисту від запису область, в яку треба здійснити запис, як така, що має захист від запису, у цьому разі можна попередити запис поверх даних, які потім мають бути використані як адреса повернення.
Якщо альтернативно або додатково перевіряється, чи відповідають дані, що мають бути використані як адреси повернення, адресі повернення, записаній раніше або такій, що має бути записана, можна запобігти тому, щоб дані, які були змінені (тобто якими маніпулювали) після запису адреси повернення, були використані як адреса повернення.
В обох випадках для того, щоб попередити наступні спроби маніпулювання, можна припинити процес виконання актуальної програми та/або повернути до вихідного стану систему, що виконує програму, та/або ініціювати тривогу, та/або вжити інших заходів захисту.
Таким чином, можна забезпечити, щоб цілеспрямоване маніпулювання адресами повернення не могло б призвести до зміни приписаного виконання програми.
Отже, було розроблено спосіб для того, щоб, зокрема, можна було б надійно виключити можливість цілеспрямованого маніпулювання процесом виконання програми.
Інші ознаки винаходу наведені у залежних пунктах формули винаходу.
Суть винаходу пояснюється далі на прикладах реалізації за допомогою креслень. На них показано:
Фіг.1 Фрагмент схеми системи для реалізації захисту від використання адреси повернення, та
Фіг2 Схема для пояснення способу захисту від запису поверх адрес повернення та модифікованого захисту від використання адрес повернення.
Систему, фрагмент якої наведений на фіг.1, було розроблено для виконання програм математичного забезпечення, яка повністю або частково може бути інтегрована у мікропроцесор, мікроконтролер, сигнальний процесор тощо.
Показаний фрагмент є частиною системи для оперування адресами повернення.
Адреси повернення слід записувати у пам'ять, наприклад, у тому разі, якщо програма, що підлягає виконанню, включає у себе виклик функції. У разі наявності виклику функції, наприклад, команди ІСАЇ. для мікроконтролера Іпієї 8051, - у пам'яті програм виконується (адресний) перехід у місце, на якому записана програма для функції, яка підлягає виконанню на цей момент, - виконується відповідна функціональна програма, та - здійснюється повернення у місце у програмний пристрій пам'яті, з якого було здійснено перехід до функціональної програми.
Остання згадана адреса, тобто адреса, за якою слід продовжувати виконання програми після виконання функціональної програми, є згаданою вище адресою повернення.
Для того, щоб пристрій, який виконує програму математичного забезпечення, знав, у яке місце йому треба перейти після виконання функції, він потребує проміжного запису адреси повернення у пам'ять.
Саме тепер слід зауважити, що виклики функцій не є єдиними подіями, коли потрібний запис адрес повернення у пам'ять. Лише для того, щоб навести кілька прикладів, можна згадати, що запис адрес повернення потрібен також у разі переривання процесу виконання програми (Іпіегтиріє) або у разі зміни завдань в експлуатаційних системах, призначених для виконання кількох завдань (системах Миїйі-Тазкіпо).
Запис у пам'ять адрес повернення здійснюється зазвичай у так звані стеки або стекову пам'ять. Такий стек позначений на фіг.17 цифрою 1. Керування стеком 1 здійснюється від логічної схеми стеку 2. Логіка стеку 2, зокрема, генерує так званий укажчик стеку (біаск-Роіпієї), що вказує на ту окрему найближчу область стеку 1, в яку треба здійснити запис або з якої треба здійснити зчитування. Оскільки стеки та пов'язані з ними операції широко відомі, можна відмовитись від подальших пояснень.
У стек 1 можна записувати не лише адреси повернення, але також будь-які інші дані (вміст регістрів, локальні змінні тощо). Проте, наведені пояснення стосуються, в основному, виключно операцій з адресами повернення.
Якщо, наприклад, для команди І САЇ ЇЇ, у стек 1 треба записати адресу повернення, цей процес ініціюється за допомогою логіки стеку 2.
У системі, що розглядається, на відміну від звичайних систем, адреси повернення, що записані або мають бути записані у стек 1, додатково записуються до іншого запам'ятовувального пристрою як інформація захисту.
Цей запам'ятовувальний пристрій, далі - запам'ятовувальний пристрій захисту, позначений на фіг.1 цифрою 3.
Запам'ятовувальному пристрою захисту З підпорядкована логічна схема 4 запам'ятовувального пристрою захисту, за допомогою якої здійснюється керування цим запам'ятовувальним пристроєм захисту, аналогічно тому, як керування стеком 1 здійснюється за допомогою логіки стеку 2.
Запам'ятовувальний пристрій захисту 3, на відміну від стеку 1, не можна примусити спрацьовувати ззовні, з-за меж системи, що виконує програму математичного забезпечення. Тобто, записаними у ньому даними не можна маніпулювати, або у будь-якому випадку не можна маніпулювати з припустимими витратами.
Логіка 4 запам'ятовувального пристрою захисту у наведеному прикладі, на відміну від логіки стеку 2, спрацьовує лише у тому разі, якщо треба записати або зчитати адресу повернення. Проте, альтернативно є природним, що можна передбачити можливість спрацьовування логіки 4 запам'ятовувального пристрою захисту також у разі інших подій (крім процесів запису та зчитування із запуском ззовні).
Якщо процес виконання програми дійшов до моменту, коли слід здійснити перехід до записаної раніше адреси повернення, тобто, наприклад, у разі надходження команди ВЕТ, потрібну адресу повернення можна забезпечити шляхом відповідного зчитування стеку 1. Проте, перед застосуванням одержаних при цьому даних як адреси повернення здійснюється перевірка того, чи є ідентичними отримані дані і адреса повернення, записана у запам'ятовувальний пристрій захисту З як інформація захисту.
Для цього передбачений компаратор 5, що приймає дані стеку 1 та запам'ятовувального пристрою захисту 3, які необхідно зіставити, і виконує цей процес порівняння.
Якщо у результаті проведеного у компараторі 5 процесу порівняння виявиться, що зіставлені дані є ідентичними, це означає, що дані, одержані зі стеку 1, відповідають адресі повернення, яку треба записати спочатку, тобто, ними не маніпулювали, вони не стали неправильними внаслідок помилки в апаратурному та/або математичному забезпеченні, та не були записані у невірне місце чи зчитані з невірного місця. Тому дані, записані у стек 1, можна вважати автентичними адресами повернення та використовувати їх як такі. Цей висновок можна зробити тому, що, як вже було згадано вище, цілеспрямований вплив на вміст запам'ятовувального пристрою захисту З практично неможливий.
Якщо у процесі порівняння, проведеному у компараторі 5, виявиться, що зіставлені дані не є ідентичними, це означає, що дані, одержані зі стеку 1, з великою ймовірністю зазнали маніпулювання або стали неправильними внаслідок помилки в апаратурному чи програмному забезпеченні, або були записані у невірне місце чи зчитані з невірного місця. Незалежно від причини відсутності ідентичності, записані у стек 1 дані не можна використовувати як адресу повернення, оскільки наслідком цього було б відхилення від приписаного виконання програми.
Компаратор 5 у цьому разі генерує сигнал ММІ, який подається на логіку ММІ 6. Логічна схема ММІ 6 ініціює негайне припинення процесу виконання програми та/або повернення у вихідний стан системи, що обробляє програму математичного забезпечення, та/або ініціює тривогу та/або стирання даних, що стосуються безпеки.
Компаратор 5 у наведеному прикладі активізується командами, що, наприклад, як команда НЕТ, мають своїм наслідком зчитування із стеку 1 даних, які слід інтерпретувати як адреси повернення. Решту часу компаратор 5 є пасивним.
За допомогою цих заходів можна досягти того, щоб програму математичного забезпечення, яка підлягає виконанню, можна було б виконувати лише у тому разі, якщо і поки не виявляються будь-які помилки в адресі повернення.
Приклад, що пояснюється за допомогою фіг.1, можна розглядати як варіант практичної реалізації способу захисту від використання адрес повернення, який спрацьовує у разі необхідності.
Хоча це не пояснюється більш докладно на прикладах, при цьому не є безумовно необхідним, щоб інформація захисту, підпорядкована відповідним адресам повернення, сама була адресою повернення. Як альтернативне рішення, можна передбачити, щоб тільки певні частини адреси повернення або дані, що будь- яким іншим чином репрезентують або характеризують адреси повернення, застосовувались як інформація захисту. У цьому разі компаратор 5 у разі необхідності слід було б, природно, замінити пристроєм для порівняння, зміненим у відповідності до конкретних обставин.
Альтернативним варіантом потрібного способу контролю процесу виконання програми є спосіб захисту від запису даних поверх адрес повернення, який пояснюється далі за допомогою фіг.2.
На фіг.2 показаний, зокрема, запам'ятовувальний пристрій 11, що складається з першої області пам'яті у вигляді стеку 11а, та другої області пам'яті у вигляді запам'ятовувального пристрою захисту 116.
Стек 11а відповідає показаному на фіг.1 стеку 1. Запам'ятовувальний пристрій захисту 116 приблизно відповідає показаному на фіг.1 запам'ятовувальному пристрою захисту 3; проте, запам'ятовувальний пристрій захисту 116 описується іншою інформацією захисту на відміну від тієї що використовується |у запам'ятовувальному пристрої захисту 3.
Як і запам'ятовувальний пристрій захисту 3, запам'ятовувальний пристрій захисту 116 не може ззовні примусити спрацьовувати пристрій, що виконує програму математичного забезпечення, яку слід контролювати.
Тобто, у цьому варіанті контролю процесу виконання програми інформацією, яка записана у запам'ятовувальному пристрої захисту, не можна маніпулювати таким чином, щоб витрати на це були припустимими.
Інформація, записана у запам'ятовувальний пристрій захисту 110, складається з біту захисту від запису, якому приписане значення "1", якщо запис поверх даних у підпорядкованій області стеку не дозволений, або "0", якщо запис поверх даних у підпорядкованій області стеку дозволений.
Якщо, наприклад, як у разі надходження команди ІСАЇ, треба записати адресу повернення у стек 11а, це ініціюється звичайним способом.
Одночасно в області запам'ятовувального пристрою захисту 1160, підпорядкованій області стеку, у якій була записана адреса повернення, записується "1", на ознаку того, що не можна здійснювати запис поверх даних у відповідній області стеку.
Хай у наведеному прикладі стек 11а розділений на області, кожна з яких охоплює 8 біт відповідно, причому кожній з областей місткістю 8 біт підпорядкований біт захисту від запису, записаний у запам'ятовувальному пристрої захисту 110. Якщо виходити з того, що робота ведеться з адресами довжиною 16 біт, для запису адреси повернення потрібні дві області стеку.
Як показано на фіг.2, адреса повернення записується у стек 11а. Адреса повернення складається з частини, що охоплює вісім старших біт (РОН), та частини, що охоплює 8 молодших біт (РСІ). Областям стеку, як таким, що містять РОН, так і таким, що містять РСІ, підпорядкована "1" як інформація захисту чи біт захисту від запису.
Відповідній інформації захисту чи біту захисту від запису знову приписується значення "0", якщо дані, записані у підпорядкованій області стеку, були використані як адреси повернення.
Перед кожною спробою запису даних до стеку (запису поверх записаних у ньому даних) інформація захисту (підпорядкований біт захисту від запису), підпорядковані області стеку, у яку треба здійснити запис, оцінюються з метою визначення, чи дозволений запис у стек на цьому місці.
Якщо підпорядкованій інформації захисту або підпорядкованому біту захисту від запису приписується значення "1", запис на це місце у стек не дозволений; спроба запису розпізнається як спроба маніпулювання або помилка у апаратурному чи математичному забезпеченні. Навпаки, якщо підпорядкованій інформації захисту чи підпорядкованому біту захисту від запису приписується значення "0", запис у стек на цьому місці дозволений.
Рішення щодо припустимості запису у певну область стеку перевіряється за допомогою схеми перевірки наявності захисту від запису, яка у наведеному прикладі реалізована у вигляді ланки "ТА" 12. На ланку "ТА" 12 як вхідні сигнали подаються біт захисту від запису, підпорядкований області стеку, у яку треба здійснити запис, та сигнал УУпіе аск (запис до стеку), який сигналізує про бажання здійснити запис, причому сигнал МУпіе 5гаск може набувати значення "1", якщо бажано здійснити запис, або "0", якщо запис не потрібний. Вихідний сигнал
Маїїй УуУпе ланки "ТА" 12 тоді свідчить про те, чи дозволений навмисний запис у відповідну область стеку (мМаїїй УМ/йще - "0"), чи не дозволений (Маїїй МуУпе - "1"). Вихідний сигнал Май М/пе ланки "ТА" 12, як і вихідний сигнал ММІ ММТ компаратора 5 на фіг.1, можна використовувати для того, щоб негайно припинити процес виконання програми та/або перевести у вихідний стан систему, яка виконує програму, та/або ініціювати тривогу, та/або стерти дані, що стосуються безпеки.
Додатково до цього захисту від запису поверх адрес повернення у систему згідно з фіг.2 можна інтегрувати захист від застосування адрес повернення, модифікований у порівнянні з варіантом виконання згідно з фіг.1. Цей додатковий механізм захисту полягає у тому, що дані, зчитані зі стеку 11а, перед їхнім використанням як адрес повернення перевіряються щодо того, чи вони взагалі репрезентують адресу повернення. Цей висновок можна зробити на підставі інформації захисту чи біту захисту від запису, підпорядкованих відповідним областям стеку.
Лише у тому разі, якщо інформація захисту чи біт захисту від запису, підпорядковані області стеку, з якої слід здійснити зчитування, мають значення "1", дані, записані у відповідній області стеку, дійсно репрезентують адресу повернення. Тому умовою для цього є, природно, те, що даним, які репрезентують інформацію захисту чи біт захисту від запису виключно для адрес повернення, тобто, наприклад, додатково до команди САЇЇ або аналогічним, записаним у стек 11а, приписується значення "1".
Цей додатковий механізм захисту згідно з фіг.2 реалізується за допомогою ланки "ТА" 13. У ланці "ТА" 13 як вхідні сигнали використовуються біт захисту від запису, підпорядкований області стеку, з якої слід здійснити зчитування, та сигнал Неай 5іасК, що сигналізує про мету використання даних, що зчитуються, причому сигнал
Аєай біаск може мати значення "1", якщо, наприклад, як у разі надходження команди НЕТ, на меті є використання її як адреси повернення, або "0", якщо передбачається інший варіант її використання. Вихідний сигнал Май НфМеай ланки "ТА" 13 у цьому разі свідчить про те, чи дозволяється використовувати дані, що запитуються, як адреси повернення (Маїїйй Неай - "1"), або таке використання заборонено (Маїй Неай - "0".
Якщо під час запиту щодо адрес повернення використання опитуваних зі стеку 11а даних як адрес повернення слід вважати неприпустимим, тому що Маїїй Неаа - "0", це можна інтерпретувати як спробу маніпулювання або помилку в апаратурному чи програмному забезпеченні, і використати як привід для введення у дію належних заходів для захисту. Ці заходи можуть полягати, зокрема, у негайному припиненні процесу виконання програми та/"або переходу до вихідного стану системи, що опрацьовує програму, та/або ініціювання тривоги, та/або стирання даних, що стосуються безпеки.
З наведеного вище опису випливає, що інформація, яка має захист від доступу ззовні, складається з біту захисту від запису. Зрозуміло, що замість нього можна використовувати код, що складається з певної кількості біт з будь-якими значеннями, завдяки чому можна піддавати спеціальній обробці не тільки адреси повернення, але й будь-які інші дані, які треба захистити від маніпуляцій чи помилок.
Запам'ятовувальний пристрій захисту, у якому записується різна інформація захисту, як вже неодноразово було сказано вище, представляє собою запам'ятовувальний пристрій, який ззовні не можна примусити спрацьовувати. Він розміщується переважно у пристрої, що виконує програму математичного забезпечення, яку слід захистити, тобто зазвичай мікропроцесор, мікроконтролер або сигнальний процесор; у цьому разі він особливо надійно захищений від доступу ззовні. Реалізація запам'ятовувального пристрою, який не можна примусити спрацьовувати ззовні, у мікропроцесорі, мікроконтролері або сигнальному процесорі (наприклад, у формі Ніддеп або бпадом/ бїаск), є досить простою. Для цього необхідно лише відповідно модифікувати математичне забезпечення Ке/пеї!.
Застосування одного з наведених вище способів не потребує жодних додаткових змін в апаратурному чи математичному забезпеченні. Зокрема, стек можна використовувати далі, як і раніше.
Таким чином, було розроблено спосіб для контролю приписаного виконання програм математичного забезпечення, завдяки чому просто і без змін математичного забезпечення, зокрема, дуже надійно можна запобігти цілеспрямованому маніпулюванню процесом виконання програм, а також частково виключити помилки в апаратурному та математичному забезпеченні.
Ше ШЕ в
Фіг1 "а пь
РОН (старший біт) М
РОЇ. (молодший біт
Що " 13 ши Май Кеаа
Кеадй аск ур й Щ я) ; достовірне зчи анн (Зчитування зі стеку) Р тув 12 (Запис до стеку) : -
Улійе віаск Май УМпіе пе с (Достовірний запис)
Фіг.2

Claims (10)

1. Спосіб контролю приписаного виконання програм, при якому запобігається перезапис адрес повернення, записаних для наступного використання, та/або використання як адрес повернення помилково записаних адрес повернення, або адрес повернення, щодо яких було здійснено перезапис, який відрізняється тим, що здійснюють захист від перезапису адрес повернення та захист від використання адрес повернення з оцінкою інформації захисту, яка генерується під час запису адрес повернення і записується у запам'ятовувальний пристрій захисту, і тим, що як запам'ятовувальний пристрій захисту використовують запам'ятовувальний пристрій, який не можна цілеспрямовано примусити спрацьовувати ззовні, 3-за меж системи, яка виконує програму, що підлягає контролю.
2. Спосіб за п. 1, який відрізняється тим, що як запам'ятовувальний пристрій захисту використовують запам'ятовувальний пристрій, передбачений у мікропроцесорі, мікроконтролері або сигнальному процесорі, що виконує програму.
3. Спосіб за п. 1 або 2, який відрізняється тим, що як інформацію захисту використовують адресу повернення або дані, що відображають або характеризують цю адресу.
4. Спосіб за п. 3, який відрізняється тим, що записані дані перед їхнім використанням як адрес повернення зіставляють з підпорядкованою інформацією захисту, причому використання даних як адрес повернення дозволяється лише у тому разі, якщо встановлено, що інформація захисту репрезентує або характеризує записані дані.
5. Спосіб за п. З або 4, який відрізняється тим, що тоді, коли у разі запиту даних, що репрезентують адресу повернення, встановлюється, що інформація захисту не репрезентує або не характеризує дані, зазначені у відповіді на запит, ініціюють негайне припинення процесу виконання програми та/або повернення у вихідний стан системи, яка виконує програму, та/або тривогу, та/або стирання даних, що стосуються безпеки.
6. Спосіб за п. 1 або 2, який відрізняється тим, що як інформацію захисту записують коди захисту від запису, що сигналізують про наявність захисту від запису.
7. Спосіб за п. 6, який відрізняється тим, що попереджується перезапис даних в області запам'ятовувального пристрою, про наявність захисту від запису до яких сигналізують коди захисту від запису.
8. Спосіб за п. б або 7, який відрізняється тим, що тоді, коли у разі спроби перезапису даних в область запам'ятовувального пристрою встановлюється, що підпорядкована інформація захисту сигналізує про наявність захисту від запису, ініціюють негайне припинення процесу виконання програми та/або повернення системи, що виконує програму, до вихідного стану, та/або тривогу, та/або стирання даних, що стосуються безпеки.
9. Спосіб за будь-яким з пп. 6 - 8, який відрізняється тим, що перед використанням записаних даних як адреси повернення опитують підпорядковану інформацію захисту, причому використання даних як адрес повернення дозволяється лише у тому разі, якщо встановлюється, що інформація захисту сигналізує про наявність захисту від запису.
10. Спосіб за п. 9, який відрізняється тим, що тоді, коли при запиті даних, які репрезентують адреси повернення, встановлюється, що підпорядкована інформація захисту не сигналізує про наявність захисту від запису, ініціюють негайне припинення процесу виконання програми та/або переведення до вихідного стану системи, що виконує програму, та/або тривогу, та/або стирання даних, що стосуються безпеки.
UA99074040A 1997-01-15 1998-01-15 Спосіб контролю приписаного виконання програм UA55438C2 (uk)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19701166A DE19701166A1 (de) 1997-01-15 1997-01-15 Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
PCT/DE1998/000133 WO1998032072A1 (de) 1997-01-15 1998-01-15 Verfahren zur überwachung der bestimmungsgemässen ausführung von softwareprogrammen

Publications (1)

Publication Number Publication Date
UA55438C2 true UA55438C2 (uk) 2003-04-15

Family

ID=7817440

Family Applications (1)

Application Number Title Priority Date Filing Date
UA99074040A UA55438C2 (uk) 1997-01-15 1998-01-15 Спосіб контролю приписаного виконання програм

Country Status (12)

Country Link
US (1) US6202176B1 (uk)
EP (1) EP0951673B1 (uk)
JP (1) JP2001511271A (uk)
KR (1) KR20000070127A (uk)
CN (1) CN1248110C (uk)
AT (1) ATE200358T1 (uk)
BR (1) BR9806770A (uk)
DE (2) DE19701166A1 (uk)
ES (1) ES2156029T3 (uk)
RU (1) RU2220443C2 (uk)
UA (1) UA55438C2 (uk)
WO (1) WO1998032072A1 (uk)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19944991B4 (de) * 1999-09-20 2004-04-29 Giesecke & Devrient Gmbh Verfahren zur Sicherung eines Programmablaufs
DE10122505A1 (de) * 2001-05-10 2002-11-14 Giesecke & Devrient Gmbh Verfahren zum Schützen eines Rechners gegen Manipulation von Registerinhalten und Rechner zum Durchführen des Verfahrens
US7853803B2 (en) * 2001-09-28 2010-12-14 Verizon Corporate Services Group Inc. System and method for thwarting buffer overflow attacks using encrypted process pointers
JP2004126854A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
WO2005020069A1 (ja) * 2003-08-25 2005-03-03 Denki Hompo Ltd. コンピュータシステムのcpu(中央処理装置)
JP4518564B2 (ja) * 2003-09-04 2010-08-04 サイエンスパーク株式会社 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体
US20050138263A1 (en) * 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7594269B2 (en) * 2004-10-29 2009-09-22 Intel Corporation Platform-based identification of host software circumvention
US20090119492A1 (en) * 2005-10-26 2009-05-07 David James Seal Data Processing Apparatus and Method for Handling Procedure Call Instructions
US7774761B2 (en) * 2005-12-27 2010-08-10 International Business Machines Corporation Use of memory watch points and a debugger to improve analysis of runtime memory access errors
US20070174571A1 (en) * 2006-01-25 2007-07-26 Safenet, Inc. Binding a protected application program to shell code
US8352713B2 (en) 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US20080127118A1 (en) * 2006-10-02 2008-05-29 Bulent Kasman Method and system for dynamic patching of software
US20090187748A1 (en) * 2008-01-22 2009-07-23 Scott Krig Method and system for detecting stack alteration
DE102009005764A1 (de) 2009-01-23 2010-07-29 Giesecke & Devrient Gmbh Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Unterprogramms
US8484625B2 (en) * 2009-04-01 2013-07-09 Motorola Mobility Llc Method and apparatus to vet an executable program using a model
RU2434272C1 (ru) * 2010-06-04 2011-11-20 Федеральное государственное учреждение "Государственный научно-исследовательский испытательный институт проблем технической защиты информации Федеральной службы по техническому и экспортному контролю" Система контроля отсутствия недекларированных возможностей в программном обеспечении
RU2434265C1 (ru) * 2010-07-13 2011-11-20 Федеральное государственное учреждение "Государственный научно-исследовательский испытательный институт проблем технической защиты информации Федеральной службы по техническому и экспортному контролю" Система контроля отсутствия недекларированных возможностей в программном обеспечении
CN102053839A (zh) * 2010-12-31 2011-05-11 山东中创软件商用中间件股份有限公司 监控探针生成方法和装置
FR2977694A1 (fr) 2011-07-08 2013-01-11 St Microelectronics Rousset Microprocesseur protege contre un debordement de pile
US9213828B2 (en) * 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9015835B2 (en) * 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
JP2015011436A (ja) * 2013-06-27 2015-01-19 株式会社デンソー プロセッサ
RU2591020C1 (ru) * 2015-06-01 2016-07-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") Способ контроля хода выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN108701193B (zh) * 2016-02-12 2022-08-30 汉阳大学校产学协力团 安全半导体芯片及其工作方法
WO2017138797A1 (ko) * 2016-02-12 2017-08-17 한양대학교 산학협력단 시큐어 시스템 온 칩
JP6489050B2 (ja) * 2016-03-24 2019-03-27 株式会社オートネットワーク技術研究所 情報処理装置及び情報処理システム
US9904485B2 (en) * 2016-03-31 2018-02-27 Intel Corporation Secure memory controller
US10613864B2 (en) 2018-03-16 2020-04-07 Texas Instruments Incorporated Processor with hardware supported memory buffer overflow detection
RU2697948C1 (ru) * 2018-04-19 2019-08-21 Акционерное общество "Лаборатория Касперского" Система и способ выявления уязвимостей с использованием перехвата вызовов функций

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4241396A (en) * 1978-10-23 1980-12-23 International Business Machines Corporation Tagged pointer handling apparatus
JPS5568000A (en) * 1978-11-13 1980-05-22 Ibm Maintenance and protection of control storage capable of writing
US4296404A (en) * 1979-10-18 1981-10-20 Engineered Systems, Inc. Remote verification lockout system
US5408642A (en) * 1991-05-24 1995-04-18 Symantec Corporation Method for recovery of a computer program infected by a computer virus
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
RU2055588C1 (ru) * 1993-03-03 1996-03-10 Арнольд Аркадиевич Ласков Способ стимуляции работоспособности лошадей
DE4315732C1 (de) * 1993-05-11 1994-06-01 Siemens Nixdorf Inf Syst Verfahren zum authentischen Booten und Testen der Integrität von Software auf PC-Architekturen
FR2728363A1 (fr) * 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Dispositif de protection de l'acces a des mots memoires
DE19614904A1 (de) * 1996-04-16 1997-10-23 Philips Patentverwaltung Verfahren und System zum Freigeben der Ausführung zugelassener Programme
JP3421526B2 (ja) * 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置

Also Published As

Publication number Publication date
US6202176B1 (en) 2001-03-13
WO1998032072A1 (de) 1998-07-23
CN1248110C (zh) 2006-03-29
DE19701166A1 (de) 1998-07-23
RU2220443C2 (ru) 2003-12-27
ATE200358T1 (de) 2001-04-15
KR20000070127A (ko) 2000-11-25
ES2156029T3 (es) 2001-06-01
JP2001511271A (ja) 2001-08-07
EP0951673B1 (de) 2001-04-04
EP0951673A1 (de) 1999-10-27
BR9806770A (pt) 2000-05-16
CN1243580A (zh) 2000-02-02
DE59800589D1 (de) 2001-05-10

Similar Documents

Publication Publication Date Title
UA55438C2 (uk) Спосіб контролю приписаного виконання програм
US7039779B2 (en) Access monitor and access monitoring method for monitoring access between programs
US7890726B1 (en) Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US5963980A (en) Microprocessor-based memory card that limits memory accesses by application programs and method of operation
US6751716B2 (en) Semiconductor storage device, control device, and electronic apparatus
JP4172745B2 (ja) プロセッサによる命令シーケンスの実行を監視する方法および監視装置
US8156280B2 (en) Data protection for non-volatile semiconductor memory using block protection
US5894550A (en) Method of implementing a secure program in a microprocessor card, and a microprocessor card including a secure program
JPH06266624A (ja) メモリの保護装置及びアドレスの発生方法
EP0735488A1 (en) Multi-program execution controlling apparatus and method
US7228569B2 (en) Programmable unit
JP2005316599A (ja) 割込制御装置
US20100132053A1 (en) Information processing device, information processing method and program
US5678027A (en) Method for preventing unauthorized modification of data in a device with a nonvolatile memory
EP0470163A1 (en) Improved security for machine-writeable data storage systems
WO2001097010A2 (en) Data processing method and device for protected execution of instructions
US6776346B1 (en) Secured access device with chip card application
KR19990028574A (ko) 고정프로그램을변경시키는방법및장치
JP4104990B2 (ja) メモリカード
JPH02157988A (ja) Icカードにおけるコマンド処理方法
JP4734582B2 (ja) 不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラム
JP2003203012A (ja) マイクロコンピュータ装置
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
MXPA99006559A (en) Method for monitoring the execution of software programmes as prescribed
JPS62266602A (ja) システムパラメ−タの設定ガ−ド装置