Java за цифрово подписване на документи в уеб


Технологии за цифрово подписване в уеб среда



страница5/14
Дата14.08.2018
Размер2.83 Mb.
#78668
1   2   3   4   5   6   7   8   9   ...   14

0.3.Технологии за цифрово подписване в уеб среда


Да си представим, че разработваме някаква информационна система с уеб-базиран потребителски интерфейс, която е достъпна от Интернет. Потреби­телите на тази система трябва да могат да изпращат на сървъра различни документи. Документите могат да бъдат файлове с най-разнообразни формати – MS Word .DOC файлове, Adobe Acrobat .PDF файлове, MS Excel .XLS файлове, JPEG и GIF изобра­жения, текстови файлове и др. За да се следи самоличността на изпращачите и за да се гарантира, че никой не може да промени документите след тяхното изпращане, е необходимо системата да дава възможност на потребителите да подписват с цифров подпис изпращаните файлове. Да разгледаме проблемите, които стоят пред реализацията на такава система.

0.3.1.Общи съображения при подписването в уеб среда


За целите на цифровия подпис системата може да използва крипто­графия, базирана на публични ключове, а за удостоверяване на самолич­ността на потребителите, които подписват документи, е най-удобно да бъдат изпол­звани цифрови сертификати.

Сертификатите могат да бъдат или саморъчно-подписани (self-signed) или да бъдат издадени от някой сертификационен орган.


Кой издава сертификатите?


Ако потребителите саморъчно си издават сертификати и подписват с тях изпращаните документи, няма гаранция че някой злонамерен потребител няма да си издаде сертификат с чуждо име и да подпише някакви документи от името на друг потребител.

Използване на локален сертификационен орган


За да се избегне горният проблем, е възможен друг вариант – лицето, което поддържа системата (системният администратор) да издава цифрови сертификати на потребителите. Той може да осъществи това като създаде локален сертификационен орган или като директно генерира и раздава публичните и личните ключове на потребителите. На практика това е моделът на директно доверие, при който всички потребители се доверяват на една независима трета страна. Този модел работи добре в малки организации, но не е приложим в глобална среда, каквато е Интернет.

Използване на утвърден (глобален) сертификационен орган


Другият подход е да се използват услугите на утвърдените сертификаци­онни органи. Всеки потребител на системата закупува сертификат от някой сертификационен орган и този орган гарантира, че издаденият сертификат е наистина на лицето, което е записано в сертификата. Личният ключ, съответстващ на този сертификат, остава достъпен единствено за неговия собственик и за никой друг (като за по-голяма сигурност може да се съхранява върху смарт карта). Благодарение на това когато даден потребител подпише даден документ със сертификата, издаден му от някой сертификационен орган, има гаранция, че подписът е положен наистина от него. Фалшификация е възможна само, ако злонамерени лица се сдобият с личния ключ на някой потребител, за което отговорност носи самият този потребител.

Закупуване на цифров сертификат


Закупуването на цифров сертификат е свързано с известни разходи, които всеки потребител трябва да направи, но това е единственият надежден начин да се гарантира сигурността. Обикновено при закупуване на цифров сертификат потребителят може да се сдобие с PFX файл или смарт карта, съдържащи издадения му сертификат и личния му ключ, защитени с парола за достъп (или PIN код).

Ако сертификационният орган при издаване на сертификат на своя клиент го инсталира директно в неговия уеб браузър, клиентът може да го експор­тира от браузъра си в PFX файл (във формат PKCS#12) и да използва по-нататък този PFX файл за подписване на документи.


Подписването се извършва на машината на клиента


Подписването на документи използва личния ключ на потребителя, който извършва подписването. Понеже личният ключ на един потребител е достъпен само от самия него, е необходимо подписването да се извършва физически на неговата машина. В противен случай потребителят ще трябва да изпраща на сървъра личния си ключ, а това създава потенци­ална опасност този ключ да бъде откраднат от злонамерени лица.

При уеб приложенията подписването на документи на машината на клиента никак не е лесна задача, защото клиентът разполага единствено със стандартен уеб браузър, който няма вградени функции за подписване на документи при изпращането им (upload) към сървъра.


0.3.2.Цифров подпис в уеб браузъра на клиента


Стандартно със средствата на HTML и JavaScript не можем да подписваме файлове в клиентския уеб браузър. Това е проблем на уеб технологиите, който няма стандартизирано решение, което да се поддържа от всички уеб браузъри. JavaScript по спецификация не поддържа функционалност за работа с цифрови подписи и сертификати и не може да осъществява достъп нито до сертификатите, инсталирани в уеб браузъра на потреби­теля, нито до външни хранилища за ключове и сертификати.

Някои уеб браузъри (например Mozilla) имат специфични за тях разшире­ния, които позволяват подписването на текст, но не позволяват подписва­нето на файл при изпращането му към сървъра.

Трябва да търсим решение на проблема с подписването на файлове в уеб браузъра на клиента в стандартните и широкоразпространени разширения на уеб технологиите: Macromedia Flash, Java аплети, ActiveX контроли и др. Ще разгледаме предимствата и недостатъците на съществуващите техно­логии, с които можем да подписваме документи в уеб среда.

Външен, специализиран софтуер


Един възможен подход за подписване на документи на машината на потребителя е всеки потребител да си инсталира за целта някакъв специа­лизиран софтуер. Това би могло да свърши работа, но има известни проб­леми, които правят това решение неудобно.

Единият проблем е, че софтуерът за подписване трябва да има отделни версии за различните операционни системи, които потребителят би могъл да използва. Това не винаги е лесна задача, особено ако трябва да се поддържат голям брой различни платформи.

Има и проблем с поддръжката на различни типове хранилища за сертификати – PFX файлове, смарт карти и т.н. В различните операционни системи достъпът до такива хранилища става по различен начин.

Друг проблем с поддръжката е, че при всяка промяна в софтуера е необ­ходимо да се заставят всички потребители да си изтеглят и инсталират променената версия. Ако потребителите са голям брой, това може да се окаже сериозен проблем.

Следващият немаловажен проблем е интеграцията на такъв софтуер с уеб интерфейса на системата. Това не е никак лесна задача, особено ако трябва да се поддържат различни уеб браузъри. Ако външният софтуер за подписване на документи не е добре интегриран с уеб системата, използването му ще е неудобно за потребителя.

Има и още един проблем: От съображения за сигурност потребителите може да не са съгласни да инсталират специален софтуер на компютъра си, а ако използват чужд компютър, може и да нямат физическата възможност да направят това.


Специализирана ActiveX контрола в Internet Explorer


Да разгледаме един друг подход – ActiveX контролите
. Те представляват Windows компоненти, базирани на COM технологията, които имплементират някаква функ­ционалност, имат собствен графичен потребителски интер­фейс и могат да се да се вграждат в уеб страници, подобно на обикновени картинки, и да се изпълняват след това вътре в страниците [MSDN ActiveX].

ActiveX контролите могат технически да решат проблема, но не са плат­формено независими – работят само под Windows. При тях не е проблем да осъществят достъп до хранилището за сертификати на Windows и Internet Explorer (т. нар. Windows Certificate Store), например посредством стан­дартната Windows библиотека CryptoAPI или чрез специализираната компо­нента CAPICOM. Предимство на този подход е, че се използва хранилището за сертификати на Windows, а то позволява използването както на PFX файлове, така и на смарт карти и други криптиращи устройства.

Основният проблем при този подход е, че върху друга операционна система, освен Windows, ActiveX контролите просто не могат да работят.

Друг проблем на ActiveX контролите е, че изискват от потребителя да се съгласи да ги инсталира преди да бъдат стартирани за пръв път, а това може да изисква промяна в настройките за сигурността.


.NET Windows Forms контрола в Internet Explorer


.NET Windows Forms контролите
в Internet Exoplorer представляват графич­ни компоненти, които могат да имплементират някаква специфична функ­цио­налност и да взаимодействат с потребителя чрез собствен графичен потреби­телски интерфейс [MSDN WinForms]. Те се изпълняват в клиент­ския уеб браузър, подобно на ActiveX контролите.

Технически .NET Windows Forms контролите могат да решат проблема с подписването, но при някои допълнителни условия. .NET Framework има силно развити средства за работа с цифрови подписи и сертификати и за достъп защитени храни­лища, включително и смарт карти, така че това не е проблем. Проблем е невъзможността стандартно .NET контрола, изпълнява­на в Internet Explorer, да чете от файловата система, а това е необходимо за да бъде прочетен файлът, който трябва да бъде подписан. Остава възможността потребителят да промени настройките на .NET сигурността (т. нар. .NET Security Policy) за да разреши на съответната контрола достъп до файловата система.

Най-големият проблем при подхода с Windows Forms контролите е, че те са силно платформено-зависими. Те работят само под Windows и то само с уеб браузър Internet Explorer 5.5 или по-висока версия и допълни­телно изискват на машината на клиента да има инсталиран Microsoft .NET Framework. Всички тези изисквания ги правят подходящи за използване в корпоративна среда, където администраторът може да осигури наличието на Internet Explorer, .NET Framework и настройките за сигурността, но в Интернет среда това решение няма да работи.

Контролата CAPICOM в Internet Explorer


В Windows среда, ако се използва Microsoft Internet Explorer, може да се инсталира ActiveX контролата CAPICOM. Тя представлява COM обвивка на Microsoft CryptoAPI и предоставя обектен модел за достъп криптографската функционалност на Windows [Lambert, 2001].

След като се инсталира, CAPICOM тя може да се използва през VBScript за подписване на текстови данни, например уеб форми. Ето прост пример как можем да подписваме текст чрез CAPICOM и VBScript код, вграден в уеб страница:



Sign-Data-with-CAPICOM-in-IE.html



При отваряне на примерния HTML документ с Internet Explorer, се изпълнява скриптът и ако ActiveX контролата CAPICOM е достъпна, се показва диалог за избор на сертификат (фигура 1-12):



Фигура 0 12. Диалог за избор на сертификат в Internet Explorer

При успешен избор на сертификат и успешна автентикация за достъп до съответния личен ключ, подаденият текст се подписва. Полученият цифров подпис съдържа пълната сертифика­ционна верига и цифровия подпис във формат PKCS#7, записани като текст с Base64 кодиране (фигура 1-13). Без проблеми се поддържа и подписване със смарт карта (понеже сертификатите от смарт картите могат да се импортират във Windows Certificate Store).

При подписването с CAPICOM има няколко проблема. Най-сериозният от тях е, че технологията работи само под Windows с уеб браузър Microsoft Internet Explorer. Под други операционни системи и уеб браузъри CAPICOM не е достъпна. Допълнително изискване е нуждата от еднократно инста­лиране на CAPICOM ActiveX контролата върху клиентската машина, което може да създаде трудности.

Още един проблем е, че за да се подпише даден файл, той трябва да бъде прочетен, а VBScript не позволява достъп до файловата система.





Фигура 0 13. Подписани данни с CAPICOM в Internet Explorer

Методът crypto.signText() в Netscape и Mozilla


По-новите версии на уеб браузърите Mozilla и Netscape имат вградени функции за подписване на текст. Те поддържат JavaScript функцията crypto.signText(text, certificateSelectionMode), която подписва циф­ро­­во даден символен низ [Netscape, 1997]. Ето примерен JavaScript фраг­мент, който извър­шва такова подписване:

Sign-Data-in-Mozilla.html



При отваряне на примерния HTML документ с Mozilla, се изпълнява JavaScript кодът и потребителят се приканва да избере сертификат и парола за достъп до него (фигура 1-14).

След успешен избор на сертификат и въвеждане на паролата за достъп до него подаденият текст се подписва и се отпечатва резул­татът. Получената сигнатура съдържа пълната сертификационна верига и цифровия подпис във формат PKCS#7, кодирани с Base64 (фигура 1-15).





Фигура 0 14. Диалог за избор на сертификат в Mozilla



Фигура 0 15. Подписани данни с crypto.Sign() в Internet Explorer

Предимство на тази технологията е, че не изисква инсталиране на никакъв допълнителен софтуер. Използва се хранилището за сертификати на уеб браузъра, а това дава възможност да се използват и смарт карти. Повече информация за функцията crypto.SignText() може да се намери в документацията на Netscape за JavaScript: http://devedge-temp.mozilla.org/ library/manuals/2000/javascript/1.3/reference/window.html#1202035.

Основният проблем на тази технология е, че работи само с уеб браузърите Mozilla и Netscape (под всички платформи, за които се предлагат – Linux, Windows, Solaris и др.), но не се поддържа от Internet Explorer.

Другият проблем е, че за да се подпише файл, той трябва да се прочете, а това не може да стане с JavaScript. По тази причина с тези технология могат да се подписват само уеб форми или части от тях, но не и файлове.


Macromedia Flash приложение


Технологията Macromedia Flash
представлява разширение на стандартните уеб браузъри, което позволява вмъкване на мултимедийно съдържание в уеб страниците. С Flash технологията могат да се създават не само анима­ции, но интерактивни мултимедийни приложения с графичен потребител­ски интер­фейс, които се изпълняват в клиентския уеб браузър. Flash приложенията могат да съдържат графика, текст, форми и други елементи, които могат да се управляват с езика ActionScript
.

За съжаление стандартните библиотеки на Flash не поддържат работа с цифрови подписи и сертификати, а освен това Flash няма достъп до локалната файлова система, а това е необходимо, защото за да бъде подписан един файл, съдържанието му трябва да бъде прочетено.


Комбинация между plug-in за Netscape/Mozilla и ActiveX контрола за Internet Explorer


За подписване на уеб форми може да се използва комбинация от технологии, които са достъпни за различните уеб браузъри, например подписване с crypto.SignText() в Mozilla и с CAPICOM в Internet Explorer. При този вариант може да бъде подписана уеб форма или част от уеб форма, но няма как да бъде подписан файл, защото JavaScript и VBScript нямат достъп до файловата система.

Подобен подходът е реализиран и в проекта „Secure Form Signing”, реализиран от специалисти от университета за наука и технологии в Хонг Конг (http://www.cyber.ust.hk/projects/eForm/). В проекта са комбинирани специално разработен plug-in в браузъра Netscape и ActiveX контрола в Internet Explorer.

При някои комерсиални решения са използвани и други комбинации от технологии, специфични за различни уеб браузъри и платформи, но при повечето реализации се подписват уеб форми, а не файлове. Нека си припомним, че нашата цел е да разработим технология за подписване на файл по време на изпращането му от уеб браузъра към уеб сървъра.

Специализиран Java аплет


След като разгледахме възможните алтернативи, остана една, последна, възможност – да се използват Java аплети.

Java аплетите са стандартни разширения на уеб технологиите и имат предимството, че могат да работят на всички по-известни уеб браузъри и всички операционни системи.

Проблемът с тях е, че по принцип нямат достъп до локалната файлова система на машината, на която се изпълняват, но това ограничение може да се преодолее, ако се използват подписани Java аплети, които работят с по-високи права.

Java платформата поддържа стандартно работа с цифрови подписи и сертификати, а от версия 1.5 е имплементирана и стандартна поддръжка на смарт карти.

Предимствата на аплетите са, че работят върху всички по-известни уеб браузъри и операционни системи. Недостатъците им са, че изискват предварителна инсталация на Java Plug-In, който е обикновено се доставя отделно от браузъра. Ако се използват подписани аплети, е необходимо потребителят да потвърди доверието си към тях, за да им се отпуснат права за достъп до файловата система. Това може да е проблем за някои потребители.

Независимо от изброените недостатъци, Java аплетите са единствената технология, която може да реши по платформено-независим начин проб­лема с цифрово подписване на документи в уеб браузъра на потребителя. По тази причина ще изберем тази технология за реализацията на нашата система за цифрово подписване на документи в уеб среда.


Технологията на Java аплетите


Java аплетите представляват компилирани програми на Java, които се вграждат като обекти в HTML документи и се изпълняват от уеб браузъра, когато тези документи бъдат отворени. Вграждането на аплет в една уеб страница става по начин много подобен на вграждането на картинки, но за разлика от картинките аплетите не са просто графични изображения. Те представляват програми, които използват за графичния си потребителски интерфейс правоъгълна област от страницата, в която са разположени [Sun, 1995].

Аплетите се състоят от един компилиран Java клас или от съвкупност от компилирани Java класове, записани в JAR файл. Както всички програми на Java, аплетите се изпълняват от виртуалната машина на Java (JVM) и затова всички уеб браузъри, които поддържат аплети, имат вградена в себе си или допълнително инсталирана виртуална машина. При отварянето на HTML документ, съдържащ аплет, браузърът зарежда Java виртуалната си машина и стартира аплета в нея.


Java аплетите и сигурността


За да се осигури безопасността на потребителя, на аплетите не е позволено да извършват операции, които биха могли да осъществят достъп до потребителска информацията от машината, на която се изпълняват. Един аплет стандартно няма достъп до локалната файлова система, а това затруднява използването на тази технология за целите на цифрово подписване на документи.

Подписани Java аплети


Подписаните Java аплети предоставят механизъм за повишаване на правата, с които се изпълняват обикновените Java аплети. Te, също като обикновените аплети, представляват JAR архиви, които съдържат съвкуп­ност от компилирани Java класове, но в допълнение към тях съдържат и цифрови подписи на всички тези класове, както и цифров сертификат (заедно с пълната му серти­фикационна верига), с който тези подписи могат да се верифицират.

При изпълнението на подписан аплет уеб браузърът показва информацията от сертификата, с който този аплет е подписан и пита потребителя дали вярва на този сертификат. Ако потребителят му се довери, аплетът се изпълнява без никакви ограничения на правата и може свободно да осъществява пълен достъп до локалната файлова система на машината, на която се изпълнява.

Доверяването на аплети, които са подписани от непознат производител или са подписани със сертификат, който не може да бъде верифициран, е много рисковано, защото такива аплети имат пълен достъп до машината и могат да изпълнят всякакъв злонамерен код, като например вируси и троянски коне. За улеснение на потребителя Java Plug-In автоматично валидира сертификатите на подписаните аплети и предупреждава за рисковете от изпълнението им. Доверяването на даден подписан аплет може да се извърши както еднократно, така и перманентно.




Национална академия по разработка на софтуер

Лекторите
» Светлин Наков е преподавател по съвременни софтуерни технологии в СУ “Св. Климент Охридски”.

Той е автор на десетки на­учни и технически публи­ка­ции и ня­колко книги, свър­­зани с раз­работката на соф­ту­ер, заради което е търсен лектор и консултант.

През 2004 г. получава наг­ра­дата "Джон Атанасов" от прези­дента на България Ге­орги Пър­ва­нов за приноса му към разви­тието на инфор­ма­ци­он­ните технологии и ин­формаци­он­ното общество.
» Мартин Кулов е изпълнителен директор във фирма “Код Атест”, където раз­работва проекти за пови­ша­ване качеството на соф­ту­ер­ните продукти в Бъл­гария чрез автоматизация на про­цесите и внедряване на сис­теми за управление на ка­чеството.

Мартин е опитен лектор и сертифициран от Майкрософт разработчик по програмите MCSD и MCSD.NET.


» Други инструк­тори с опит като преподаватели и програмисти.

Академията
» Национална академия по раз­ра­ботка на софтуер (НАРС) е център за професионално обу­чение на соф­ту­ерни специалисти.
» НАРС провежда задълбочени кур­сове по разработка на софтуер и съв­ременни софтуерни тех­нологии.
» Предлагани специалности:

.NET Enterprise Developer

Java Enterprise Developer
» Качествено обу­чение с много практически упраж­нения
» Завършвате само за 3 месеца.
» Гарантирана работа след успеш­но завършване!
» Професионална сертификация!
» БЕЗПЛАТНО!

Учите безплатно, плащате след като завършите и започнете работа.

Стипендии от софтуерни фирми.


http://academy.devbg.org


Каталог: books -> signatures
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване
signatures -> Java за цифрово подписване на документи в уеб


Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   14




©obuch.info 2024
отнасят до администрацията

    Начална страница