3 закона
робототехники
или
безопасность, функциональность и
защищенность ПО
Обо мне
• Юденко Николай
• Более 15 лет опыта разработки в IT
• За все эти года выполнял практически
все роли в жизненном цикле ПО: от
постановщика задачи до
руководителя проекта
• На текущий момент – Java+Android
разработчик
email: unick04@ua.fm

Skype: unick_
Кто Я? Я робот!
Кто Я? Я робот!
Кто Я? Я робот!
Кто Я? Я робот!
3 закона робототехники
Закон 1:
Робот не может причинить вред человеку или своим
бездействием допустить, чтобы человеку был причинён
вред.

Закон 2:
Робот должен повиноваться всем приказам, которые
даёт человек, кроме тех случаев, когда эти приказы
противоречат Первому Закону.

Закон 3:
Робот должен заботиться о своей безопасности в той
мере, в которой это не противоречит Первому и
Второму Законам.
Айзек Азимов (1942 год)
Закон 1
безопасность человека
Безопасность человека — такое состояние человека, когда
действие внешних и внутренних факторов не приводит к
смерти, ухудшению функционирования и развития:

- организма
- сознания
- психики
- и человека в целом
Закон 1 – безопасность
Безопасность — состояние защищённости жизненноважных интересов

личности,
общества,
организации,
предприятия
от потенциально и реально существующих угроз, или
отсутствие таких угроз.
Обеспечение безопасности
• Соблюдение законов
• Соблюдение норм и правил техники
безопасности в данной предметной
области
• Соблюдение физических законов
безопасности человека
• Выработка системы защиты
• Изоляция и нейтрализация источников
потенциальных угроз
Цена ошибки
Передозировка при лучевой терапии.
Дефект в компьютерной
программе, управлявшей
радиотерапевтической
установкой, привёл к
переоблучению пациентов
с 1985 года по 1987 в
клиниках США и Канады.
Цена ошибки
Аварии в космонавтике
1) Ariane 5 – 1996 год
(финансовые потери)
2) Аппараты исследования
Марса – 1999 год
(финансовые потери)
3) Морской старт – 2000 год
(финансовые потери)
4) Шаттл Columbia – 2003 год
(погибли 7 астронавтов)
Некоторые причины
ошибок
Повторное использование модулей от
предыдущих версий
Не проводилось
регрессионное и интеграционное
тестирование
Некоторые причины
ошибок
Неверная или неполная спецификация
Не проводилось тестирование
спецификации
Некоторые причины
ошибок
Отклонение от спецификации

Неполное функциональное
тестирование
Некоторые причины
ошибок
Недостатки пользовательского
интерфейса
Не проводилось юзабилити
тестирование
Примеры из личной
практики
Приложение: АСУТП на
ЖД. Автоматическое
управление питанием.
Уровень напряжения от 3.3 кВ до
220 кВ

Проблемы:
- Обеспечить безопасность людей
- Отсутствие тестировщиков в проекте
- Недостаточные знания в предметной области
Примеры из личной
практики
Приложение: Система
управления доступом в
помещения.
Проблемы:
- При отключении электричества люди оказались
заблокированными в помещении.
- Дилема: безопасность компании или безопасность
людей?
Примеры из личной
практики
Приложение:
Информационный веб
портал для узкой целевой
группы.
Проблемы:
- Была обеспечена информационная безопасность
- Отсутствие полноценной защищенности привело
к заражению ПК пользователей
Приоритеты безопасности

ЧЕЛОВЕК
ГРУППА ЛЮДЕЙ
КОМПАНИЯ
ГОСУДАРСТВО
ЧЕЛОВЕЧЕСТВО
Типы безопасности по
направленности
Прямая - направлена на
конкретного пользователя
(потребителя) ПО
Косвенная - направлена на
третьи лица
Смешанная – сочетание прямой
и косвенной
Пример объекта
безопасности
Снятие денег в банкомате
Прямая:
- человек, снимающий деньги,
- банк-владелец банкомата
Косвенная:
- другие клиенты банка
Закон 2
функциональность ПО
Робот должен повиноваться
всем приказам, которые даёт
человек, кроме тех случаев,
когда эти приказы
противоречат Первому Закону.
Закон 2
функциональность ПО
Разрабатываемое ПО
должно выполнять
функции, возложенные на
него человеком.
То есть выполнять
«приказы» человека.
Закон 3 – защищенность ПО
ПО должно защищать само себя от
1) Человека (пользователя)
2) Другого ПО
3) От физического
воздействия
4) Самого себя
Защита от «дурака»
- Защита от любых
случайных действий
пользователя
- Защита важных функций
от пользователя
(использование по
незнанию)
- Защита от
злоумышленников
Защита от другого ПО
- Защита от ошибок в
другом ПО
(пассивная)
- Защита от атак со
стороны другого ПО
(активная)
Защита от физического
воздействия
Проблемы:
- Отключение питания
- Уничтожение
аппаратной части
системы
- Разрыв физической
связи с сервером

Варианты решения:
-

Автосохранение
Самовосстановление
Бекап
Возможность работать
в упрощенном режиме
Защита от самого себя
- Удаление своих данных
настройки
- Удаление части библиотек
- Чрезмерные защиты от
пользователя
- Невозможность изменить
свои настройки, которые
приводят к краху системы
- Удаление единственного
админа
Code injections
-

XSS (Cross-Site Scripting)
XSRF / CSRF (Request Forgery)
PHP, ASP … injection
Подмена библиотек (DLL и т.п.)
Shell injection
Data injections
-

SQL инъекции
XML инъекции
File инъекции
Protocol инъекции
Неверные данные
Большие объемы
данных
Перезащищенность
1) Нарушение функциональности
2) Нарушение безопасности
Да

Безопасно
Не защищено

Безопасно
Защищено

Нет

Безопасность

Матрица человечности

Небезопасно
Не защищено

Небезопасно
Защищено

Нет

Да

Защищенность
Итоги
Закон №1

Безопасность
Закон №2

Функциональность
Закон №3

Защищенность
Спасибо за внимание!

Email: unick04@ua.fm
Skype: unick_

3 закона робототехники: или безопасность, функциональность и защищенность ПО