Spec-Zone .ru
спецификации, руководства, описания, API
След: Развертывание
Урок: Упаковка Программ в Файлах JAR
Раздел: Подписание и Проверка Файлов JAR
Понимание Подписания и Проверки
Домашняя страница > Развертывание > Упаковка Программ в Файлах JAR

Понимание Подписания и Проверки

Платформа Java™ позволяет Вам в цифровой форме подписать файлы JAR. Вы в цифровой форме подписываете файл по той же самой причине, Вы могли бы подписать печатный документ с пером и чернилами - чтобы позволить читателям знать, что Вы записали документ, или по крайней мере что у документа есть Ваше одобрение.

Когда Вы подписываете букву, например, все, кто распознает, что Ваша подпись может подтвердить, что Вы записали букву. Так же, когда Вы в цифровой форме подписываете файл, любой, кто "распознает", что Ваша цифровая подпись знает, что файл прибыл от Вас. Процесс "распознавания" электронных подписей вызывают проверкой.

Возможность подписаться и проверить файлы является важной частью архитектуры безопасности платформы Java. Безопасностью управляет политика безопасности, это находится в силе во времени выполнения. Можно сконфигурировать политику предоставить полномочия безопасности апплетам и приложениям. Например, Вы могли предоставить, что разрешение апплету обычно выполнило запрещенный операции, такие как чтение и запись локальных файлов или выполнение локальных исполняемых программ. Если Вы загрузили некоторый код, это подписывается доверяемым объектом, можно использовать тот факт в качестве критерия в решении который права доступа присвоиться к коду.

Как только Вы (или Ваш браузер) проверили, что апплет из доверяемого источника, у Вас может быть платформа, ослабляют ограничения безопасности, чтобы позволить апплету выполнять операции, которые обычно запрещались бы. У доверяемого апплета могут быть свободы как определено файлом политики в силе.

Платформа Java позволяет подписаться и проверка при использовании специальных чисел, названных открытыми и закрытыми ключами. Открытые ключи и закрытые ключи, прибывшие в пар, и они играют дополнительные роли.

Закрытый ключ является электронным "пером", с которым можно подписать файл. Поскольку его имя подразумевает, Ваш закрытый ключ известен только Вам так, чтобы никто больше не мог "подделать" Вашу подпись. Файл, подписанный с Вашим закрытым ключом, может быть проверен только соответствующим открытым ключом.

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

Еще один элемент, поэтому, обязан заставлять подписание и проверку работать. Тот дополнительный элемент является сертификатом, который подписывающее лицо включает в подписанный файл JAR. Сертификат является в цифровой форме подписанным заявлением от распознанного центра сертификации, который указывает, кому принадлежит определенный открытый ключ. Центр сертификации является объектами (обычно фирмы, специализирующиеся на цифровой безопасности), которым доверяют всюду по отрасли, чтобы подписать и выпустить сертификаты для ключей и их владельцев. В случае подписанных файлов JAR сертификат указывает, кому принадлежит открытый ключ, содержавшийся в файле JAR.

То, когда Вы подписываетесь, JAR регистрируют Ваш открытый ключ, помещается в архиве наряду со связанным сертификатом так, чтобы это было легко доступно для использования любым желающим проверять Вашу подпись.

Суммировать цифровую подпись:

Обзоры и Файл Подписи

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

Name: test/classes/ClassOne.class
SHA1-Digest: TD1GZt8G11dXY2p4olSZPc5Rj64=

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

Когда файл JAR подписывается, файл подписи автоматически сгенерирован и помещен в каталог META-INF файла JAR, тот же самый каталог, который содержит декларацию архива. У файлов подписи есть имена файлов с расширением .SF. Вот пример содержания файла подписи:

Signature-Version: 1.0
SHA1-Digest-Manifest: h1yS+K9T7DyHtZrtI+LxvgqaMYM=
Created-By: 1.6.0 (Sun Microsystems Inc.)

Name: test/classes/ClassOne.class
SHA1-Digest: fcav7ShIG6i86xPepmitOVo4vWY=

Name: test/classes/ClassTwo.class
SHA1-Digest: xrQem9snnPhLySDiZyclMlsFdtM=

Name: test/images/ImageOne.gif
SHA1-Digest: kdHbE7kL9ZHLgK7akHttYV4XIa0=

Name: test/images/ImageTwo.gif
SHA1-Digest: mF0D5zpk68R4oaxEqoS9Q7nhm60=

Как можно видеть, файл подписи содержит записи обзора для файлов архива, которые выглядят подобными записям значения обзора в декларации. Однако, в то время как значения обзора в декларации вычисляются от файлов непосредственно, значения обзора в файле подписи вычисляются от соответствующих записей в декларации. Файлы подписи также содержат значение обзора для всей декларации (см. заголовок SHA1-Digest-Manifest в вышеупомянутом примере).

Когда подписанный файл JAR проверяется, обзоры каждого из его файлов повторно вычисляются и по сравнению с обзорами, записанными в декларации, чтобы гарантировать, что содержание файла JAR не изменилось, так как это было подписано. Как дополнительная проверка, значения обзора для самого файла манифеста повторно вычисляются и сравниваются со значениями, записанными в файле подписи.

Можно считать дополнительную информацию о файлах подписи на Явной странице Формата документации JDK™.

Файл Сигнатурного блока

В дополнение к файлу подписи файл сигнатурного блока автоматически помещается в каталог META-INF, когда файл JAR подписывается. В отличие от файла манифеста или файла подписи, файлы сигнатурного блока не удобочитаемы.

Файл сигнатурного блока содержит два элемента, важные для проверки:

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


Связанная Документация

Для дополнительной информации о ключах видят сертификаты, и центры сертификации,

Для получения дополнительной информации об архитектуре безопасности платформы Java, см. эту связанную документацию:


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Подписание и Проверка Файлов JAR
Следующая страница: Подписание Файлов JAR