
- •JAVA-ТЕХНОЛОГИЯ
- •Безопасность – основные понятия
- •Безопасность: основные понятия
- •Безопасность: основные виды атак
- •Инициатива Trustworthy Computing
- •Безопасность в Java
- •Эволюция безопасности в Java: Безопасность в JDK 1.0
- •Эволюция безопасности в Java: Безопасность в JDK 1.1
- •Эволюция безопасности в Java: Безопасность в JDK 1.2
- •Эволюция безопасности в Java
- •Безопасность языка Java и верификация байт-кода
- •Принципы безопасности Java
- •Провайдеры безопасности
- •Поиск сервиса безопасности по списку провайдеров
- •Выбор сервиса безопасности у конкретного провайдера
- •Криптография в Java –
- •Java Cryptography Extension
- •Public Key Infrastructure (PKI) – Поддержка криптования на основе публичных ключей
- •Утилиты keytool и jarsigner(JDK)
- •Аутентификация
- •Некоторые определения
- •Свойства цифровой подписи
- •Схема аутентификации в Java
- •Безопасные соединения
- •Управление доступом
- •Политика безопасности
- •Фрагмент .policy - файла
- •Защита ресурсов
- •Схема проверки полномочий
- •Пример: Вывод всех сервисов безопасности
- •Пример: Результаты вывода
- •Сравнение с .NET
- •Дополнительная литература

JAVA-ТЕХНОЛОГИЯ
Сафонов Владимир Олегович
Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)
Email: vosafonov@gmail.com
Лекция 17 Безопасность в Java

Безопасность – основные понятия
Безопасность (security) – защита от внешних угроз и атак (threats, attacks), направленных на нарушение работоспособности оборудования, программ, целостности и конфиденциальности данных
Уязвимость (vulnerability) – ошибка или недостаток архитектуры программы, позволяющие организовать атаки
Устойчивость к атакам (resilience to attacks) – способность программного обеспечения обнаруживать атаки, предотвращать их или ослаблять (mitigate) их действие
(C)В.О. Сафонов. 2013

Безопасность: основные понятия
Полномочия безопасности (security permissions) – права или отсутствие прав у кода (пользователя) на выполнение определенных действий, например, чтения файла
Политика безопасности (security policy) –
конфигурируемый набор полномочий безопасности и правила определения системой такого набора полномочий для кода (пользователя)
Identity (principal) – пользователь со своим набором прав доступа и ролей
(C)В.О. Сафонов. 2013

Безопасность: основные виды атак
Переполнение буфера (buffer overrun) – использование операций пересылки массивов и строк без явного указания длины для изменения (порчи) “чужой” области памяти
Пример (Си):
strcpy(dest, source); // длина источника больше длины получателя
Отказ в обслуживании (denial of service) – генерация очень большого числа фиктивных запросов к серверу с целью вывода его из строя (например, в результате исчерпания памяти)
Phishing – “Ловля” логинов и паролей излишне доверчивых пользователей
Pharming – Перенаправление пользователя на враждебный (malicious) Web-сайт
Spam – Рассылка враждебных писем по email с целью распространения сетевых вирусов и “червей” или похищения конфиденциальных данных пользователей (“Ваш банковский счет в опасности”… )
(C)В.О. Сафонов. 2013

Инициатива Trustworthy Computing
В 2002 г. Microsoft предложила инициативу Trustworthy Computing (TWC)
Four pillars of TWC – безопасность (security);
надежность (reliability); соблюдение
конфиденциальности (privacy); оперативность и корректность бизнеса (business integrity)
Основная идея TWC: Следовать этим принципам на всех этапах разработки программы – выработка требований и целей, проектирование и моделирование, реализация, тестирование, сопровождение
Security Development Life Cycle (SDLC) – новая схема жизненного цикла рабработки безопасных программ(C) В.О. (Microsoft)Сафонов. 2013

Безопасность в Java
Безопасность приложений – обеспечивается управляемым выполнением (managed execution) программ с полным контролем типов, соблюдения границ массивов, использования указателей, распространения исключений и др.
Типовая атака buffer overrun, например, в Java невозможна (сработает контроль границ массивов)
Безопасность апплетов: в Java 1.0 / 1.1 – модель песочницы (sandbox); апплет не имеет права читать или изменять локальные файлы, устанавливать дополнительные сетевые соединения и др.
Начиная с версии 1.1, введены цифровые подписи и подписанные апплеты. Апплет с проверенной цифровой подписью приравнивается по своим правам к обычному приложению
Ранняя модель безопасности в Java (1.1, 1.2): класс SecurityManager, который может быть реализован по-разному в различных браузерах(C) В.О. Сафонов. 2013
В новых версиях Java реализована концепция провайдера

Эволюция безопасности в Java: Безопасность в JDK 1.0
(C) В.О. Сафонов. 2013

Эволюция безопасности в Java: Безопасность в JDK 1.1
(C) В.О. Сафонов. 2013

Эволюция безопасности в Java: Безопасность в JDK 1.2
(C) В.О. Сафонов. 2013

Эволюция безопасности в Java
JDK 1.0: Любая внешняя программа (апплет) исполнялся в “песочнице”
JDK 1.1: Реализовано понятие trusted (signed) applet
JDK 2.0: реализована концепция конфигурируемой политики безопасности
(C) В.О. Сафонов. 2013