Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java17.pptx
Скачиваний:
140
Добавлен:
16.04.2015
Размер:
417.03 Кб
Скачать

Некоторые определения

Открытый ключ - Public Key

Число, ассоциируемое с какой-либо сущностью (например, с человеком или фирмой). Открытый ключ предназначен для того, чтобы быть известным всем, кому требуются безопасные (проверяемые) контакты с этой сущностью

Приватный (закрытый) ключ - Private Key

Число, которое должно быть известно только некоторой сущности, т.е. должно держаться в секрете. Приватный ключ всегда ассоциирован с определенным открытым ключом

Цифровая подпись - Digital Signature

Строка битов, вычисляемая по некоторым данным (т.е. “подписывающая” эти данные) и закрытому ключу некоторой сущности. Цифровая попись может быть использована для проверки того, что данные переданы именно этой сущностью

(C)В.О. Сафонов. 2013

Свойства цифровой подписи

Ее аутентичность может быть проверена путем вычисления, использующего открытый ключ, соответствующий закрытому ключу, использованному для генерации данной цифровой подписи

Она не может быть подделана, если предположить, что закрытый ключ держится в секрете

Она является функцией некоторых данных, которые подписаны ею, и не может быть выдана за цифровую подпись некоторых других данных

Подписанные данные не должны изменяться. Если это

произойдет, их цифровая подпись больше не будет аутентичной

(C)В.О. Сафонов. 2013

Схема аутентификации в Java

(C) В.О. Сафонов. 2013

Безопасные соединения

SSL / TLS – безопасные сокетные соединения

(класс javax.net.ssl.SSLSocket) для передачи данных по протоколу HTTP поверх TCP/IP

Simple Authentication and Security Layer (SASL) – Интернет-протокол для спецификации способа аутентификации и уровня безопасности между клиентом и сервером (без явного определения данных, используемых для аутентификации) – класс javax.security.sasl.Sasl и объекты SaslClient

иSaslServer

(C)В.О. Сафонов. 2013

Управление доступом

При загрузке Java-кода (приложения или апплета) в виртуальную машину загрузчик классов определяет:

Откуда загружен код

Кем подписан код (если подписан)

Полномочия по умолчанию, предоставленные коду

Полномочия безопасности описываются объектами класса java.security.Permission

(C)В.О. Сафонов. 2013

Политика безопасности

Предназначена для администраторов, которые могут ее конфигурировать для Java- платформы

Описывается объектом класса java.security.Policy

Определяет набор полномочий по умолчанию

В каждый момент существует только один объект в виртуальной машине, описывающий политику безопасности

Конфигурирование выполняется с помощью утилиты policytool –file mypolicy.policy,

загружающей в JVM содержимое указанного

.policy-файла

(C) В.О. Сафонов. 2013

 

Фрагмент .policy - файла

//Here is the permission ExampleGame needs.

//It grants code signed by "terry" the

//HighScorePermission, if the

//HighScorePermission was signed by "chris" grant SignedBy "terry" {

permission com.scoredev.scores.HighScorePermission

"ExampleGame", signedBy "chris";

};

//Here is the set of permissions the HighScore

//class needs:

grant SignedBy "chris" {

//The HighScore class needs permission to read

//"user.home" to find the location of the

//highscore file

permission java.util.PropertyPermission "user.home", "read"; … }

(C) В.О. Сафонов. 2013

Защита ресурсов

Реализована с помощью security manager (класс

SecurityManager)

Пример использования:

Permission perm =

new java.io.FilePermission("/my/file", "read"); SecurityManager sm = System.getSecurityManager(); if (sm != null)

{sm.checkPermission(perm); }

SecurityManager реализован по умолчанию так, что он делегирует это решение реализации java.security.AccessController, который для проверки полномочий выполняет “прогулку по стеку”, аналогично .NET

(C)В.О. Сафонов. 2013

Схема проверки полномочий

(C) В.О. Сафонов. 2013

Пример: Вывод всех сервисов безопасности

// Метод выдает все имеющиеся типы сервисов безопасности public static String[] getServiceTypes() {

Set result = new HashSet(); // Все провайдеры

Provider[] providers = Security.getProviders(); for (int i=0; i<providers.length; i++) {

// Сервисы, предоставляемые каждым провайдером Set keys = providers[i].keySet();

for (Iterator it = keys.iterator(); it.hasNext(); ) { String key = (String)it.next();

key = key.split(" ")[0];

if (key.startsWith("Alg.Alias.")) { // Strip the alias

key = key.substring(10);

}

int ix = key.indexOf('.'); result.add(key.substring(0, ix));

}

}

return (String[]) result.toArray(new String[result.size()]);

}

(C) В.О. Сафонов. 2013

 

Соседние файлы в папке java1_2013_2014