Книгата "Java за цифрово подписване на документи в уеб" има за цел да запознае читателя с проблемите, свързани с цифровото подписване на документи в уеб среда и да предложи конкретни подходи за тяхното решаване. След кратък анализ на съществуващите решения се прави преглед на технологиите, проектира се и се имплементира Java-базирана система за цифрово подписване на документи в уеб и верификация на цифрови подписи и сертификати.
Проблемът с цифровите подписи в уеб среда
Днешните уеб браузъри нямат стандартна функционалност за подписване на прикачени файлове при изпращането им от клиента към уеб сървъра. Това води до проблеми при реализацията на някои специфични приложения, в които потребителят трябва да удостовери по надежден начин, че той е изпратил даден документ. Примери за такива приложения са взаимодействието с електронното правителство, електронно банкиране, някои финансови системи и др.
Цели
Целта, която си поставяме, е да се разработи технология за цифрово подписване на документи в уеб среда, основана на инфраструктурата на публичния ключ (PKI) и сървърен софтуер, който посреща подписаните документи и проверява валидността на сигнатурата им и използвания цифров сертификат. Разработената технология трябва да е независима от операционната система и от уеб браузъра на потребителя.
Потенциални потребители
С въвеждането на електронното правителство и увеличаването на услугите, извършвани по електронен път, нуждата от средства за цифрово подписване на документи нараства. Нараства и необходимостта този процес да се извършва в уеб среда за да максимално лесно достъпен за обикновения гражданин. Като потенциални потребители на разработената технология можем да идентифицираме уеб разработчиците, които в своите приложения трябва да прилагат технологията на цифровия подпис. Предложеното решение е базирано на Java технологиите, но може да бъде използвано и от други уеб разработчици, тъй като използва отворени стандарти, необвързани с Java платформата.
Цифрови подписи и сертификати
В първа глава е направен обзор на терминологията, проблемите и технологиите, свързани с използването на цифров подпис в уеб среда. Изясняват са понятията, свързани с цифровия подпис, моделите на доверие между непознати страни и инфраструктурата на публичния ключ: публичен ключ, личен ключ, цифров сертификат, сертификационен орган, сертификационна верига, защитено хранилище за ключове и сертификати и др. Описват се процедурите и алгоритмите за цифрово подписване на документи и верификация на цифрови подписи. Изяснява се технологията на смарт картите като сигурен и надежден начин за съхранение на ключове и сертификати. Прави се преглед на съществуващите технологии за подписване на документи в уеб среда. Анализират се техните силни и слаби страни. Разглеждат се начините за реализация на система за подписване на документи в клиентския уеб браузър, работеща върху всички операционни системи и всички масово разпространени уеб браузъри. Обосновава се необходимостта от използване на подписан Java аплет, който подписва файловете преди изпращането им от клиента към сървъра.
Работа с цифрови подписи и сертификати в Java
Във втора глава се разглеждат библиотеките от класове за работа с цифрови подписи и сертификати, които Java 2 платформата предоставя. Дава се описание на класовете и интерфейсите от Java Cryptography Architecture (JCA) и Java Certification Path API, които имат отношение към работата с цифрови подписи и сертификати. Разглеждат се и средствата за достъп до смарт карти от Java. Дават се конкретни насоки как разгледаните класове могат да се използват за полагане на цифров подпис, верификация на цифров подпис и верификация на цифрови сертификати и сертификационни вериги.
Проектиране на система за цифрово подписване в уеб среда
В трета глава се анализират и решават конкретните проблеми, свързани с реализацията на Java-базирана система за цифрово подписване на документи в уеб среда. Проектират се отделните компоненти на системата –Java аплет, който подписва документите в клиентския уеб браузър (във вариант за работа с локален сертификат и със смарт карта), уеб приложение, което посреща подписаните документи с подсистема за верификация на цифровия подпис и подсистема за верификация на сертификата на потребителя. Обосновава се необходимостта Java аплетът, който подписва документи, да работи с повишени права. Разглежда се технологията за подписване на Java аплети с цел повишаване на правата, с които се изпълняват. Разглеждат се и средствата за комуникация между аплет и уеб браузър. От страна на сървъра се разглежда проблемът с верификацията на цифровия подпис и начините за верификация на цифрови сертификати. Разглеждат се двата подхода за верификацията на сертификата на потребителя, които имат приложение при различни сценарии за използване на цифров подпис. Единият подход е директна верификация, при която се проверява дали сертификатът на клиента е директно издаден от даден...