OpenPGP интеграция в Mozilla Thunderbird

(за версии 1.5.X и по-големи)

Copyright ©2006 Веселин Колев, Софийски Университет "Св. Климент Охридски"

Версия 1.0

Лиценз на документа: CC Attribution-ShareAlike

Съдържание на лиценза: http://creativecommons.org/licenses/by-sa/2.5/

Архив със съдържанието на документацията: thunderbird-openpgp-howto-1.0.tar.gz

Електронен пощенски адрес за контакт с автора: виж файла "AUTHOR" в архива със съдържанието

 

Съдържание:

  1. Общи сведения за OpenPGP сертификатите
  1. Криптография и свързани с нея понятия
  2. Структура на OpenPGP сертификатите
  3. Топологична схема на доверието в сертификатния модел OpenPGP
  1. Инсталация
  1. Управление на хранилището за OpenPGP сертификати и съдържанието му с Enigmail
  1. Електронно подписване, криптиране и декриптиране на електронни писма

 

 

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

 

1. Криптография и свързани с нея понятия

Най-общо казано, криптографията е наука за скриване на информация. За да скрива информацията, криптографията експлоатира идеи от дискретната математика, теория на групите и т.н. Като цяло криптографията е математическа наука.

Процесът на скриване на информацията се нарича криптиране, а обратния процес - декриптиране.

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

Криптографските алгоритми могат да се разделят (условно) на два вида:

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

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

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

Криптографските алгоритми с публичен ключ имат едно важно предимство. При тях няма проблеми публичния ключ да е публично достояние и до него да има достъп всеки. Причината за това е, че с него може да се криптира даден блок информация, но не може да се декриптира. Декриптирането може да стане само чрез частния ключ. Следователно обект на особено опазване от разкриване тук е частния ключ.

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

По-трудната задача е тази за надежден и сигурен обмен на публичен ключ. Обикновено тя се решава чрез медиатор (посредник). Медиаторът е лице, което има доверието на този, който предоставя публичния ключ и този, който иска да знае, че този ключ наистина идва от този, който се представя за негов изпращач. Така не е нужно собственика на публичния ключ и ползвателите му да се познават или осъществяват директен контакт с цел проверка на автентичността на публичния ключ. Ако няма медиатор, всеки може да представи публичен ключ от името на друг и доколкото няма кой да каже дали наистина този ключ е оригиналния, може да се създаде условие за измама.

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

Идеята за електронен подпис ползва медиаторите в особена степен. Да се върнем на задачата на медиаторите. Две лица трябва да обменят помежду си публичен ключ или публични ключове (например, всяко лице дава на другото своя публичен ключ). Ето как изглежда решението на задачата да удостоверяване на едното лице пред другото от гледна точка на медиатора. И двете лица имат публичния ключ на медиатора. Медиаторът получава публичните ключове на двете лица (например лично от тях) и ги подписва. Доколкото всяко от лицата има копие от публичния ключ на медиатора, то може да провери електронния му подпис върху ключа на другото лице и така да се увери, че медиатора го е удостоверил. Изпълнявайки тази задача, медиаторите се превръщат в електронни удостоверители (или за краткост "удостоверители").

В съвременните криптографски протоколи електронният подпис се реализира по по-бърз и удобен начин. Да се криптира с частния или публичния ключ от един асиметричен криптографски алгоритъм е много неудобно от гледна точка на огромните изчислителни натоварвания, които ще бъдат реализирани. За това в криптографските протоколи се използват т.нар. "хеш" функции. Те имат за задача да съпоставят на всеки блок с варираща големина блок информация с фиксирана големина, която като обем да е много по-малка от тази на блока с варираща големина. Блокът с фиксирана големина се нариша "хеш". Идеята е, че чрез частния ключ се подписва само хеша, а не големия блок с информация. Така изчислителната тежест на електронното подписване се редуцира.

Комбинирането на публичния ключ с допълнителна информация за собственика му и удостоверителите му, води до образуването на сертификат. В зависимост от своята структура, сертификатите са подчинени на сертификатни модели. Един от сертификатните модели е OpenPGP.

 

2. Структура на OpenPGP сертификатите

В основата на сертификатния модел OpenPGP се намират специфично форматирани сертификати. Доколкото този модел е наследник на PGP, в него са се "промъкнали" различни "диалектни" фрази. Въпреки, че основната единица в модела е "сертификат", то жаргонът все още нарича сертификатите "ключове". Понякога това може да е доста объркващо, но трябва да се има предвид.

За да се създаде OpenPGP сертификат е нужно да се генерира двойка ключове в рамките на асиметричен криптографски алгоритъм. В OpenPGP модела се използват два алгоритъма: RSA и DSA. По своят характер RSA може да служи за подписване и криптиране, докато DSA служи само и единствено за подписване. Публичният ключ на двойката е основата на сертификата. За да се формира сертификата, към него се прибавя служебна информация и потребителска информация. Потребителската информация представлява идентификатора на сертификата. В модела OpenPGP в идентификатора се поставят поне две имена на притежателя, електронния му пощенски адрес и произволен коментар. На базата на публичния ключ в основата на сертификата се изчислява шестнадесетичен хеш идентификатор, известен като "Key ID". Служебната информация и идентификатора се събират в един блок информация, на който се изчислява хеш (чрез хеш алгоритми като SHA-1, SHA512 и др). Този хеш се криптира с частния ключ. Хешът в явен вид и криптирания му вариант се прибавят към предишноформирания блок информация. Новополученият блок е OpenPGP сертификат.

Важно свойство на OpenPGP сертификатите е, че те са винаги поне самоподписани, което означава (виж предния параграф), че върху тях стои поне електронния подпис на създателя (собственика) им. Това е минимума набор от подписи, който всеки OpenPGP сертификат трябва да притежава.

Всеки, който иска да удостовери даден сертификат, прибавя своя електронен подпис по същата методика, по която става самоподписването. За целта не е нужно съгласието на собственика на сертификата. Със същата лекота може да бъде остранен всеки направен електронен подпис (софтуерът предпазва от премахване на "самоподписа").

Двойката ключове, която дава началото на OpenPGP сертификата е основна (главна). Съгласно предписанията тя се използва само за подписване (чрез частния ключ) и проверка на направения с нея електронен подпис (чрез публичния ключ). Публичният ключ на основната двойка има маркер, който го указва като такъв и изключва употребата му за криптиране. Това е друга важна особеност на OpenPGP сертификатите - всеки публичен ключ в тях има роля.

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

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

Ако един OpenPGP сертификат трябва да бъде обявен за невалиден, за него се генерира специален сертификат. На жаргона на PGP той се нарича "отменящ ключ" ("revokation key"), но по-правилно е да бъде наричан "отменящ сертификат", защото в него има мета структура (а ключът е просто едно число). Отменящият сертификат носи специален флаг, който е подписан с частния ключ на основната двойка на сертификата. Когато сертификатът трябва да се отмени, към него се прикрепя отменящия сертификат (структурно отменящият сертификат е подобен на електронния подпис за удостоверяване, но действащ в противоположена посока от гледна точка на удостоверяването).

 

3. Топологична схема на доверието в сертификатния модел OpenPGP

OpenPGP сертификатите, които са основата на сертификатния модел OpenPGP имат свойства, които довеждат до най-сполучливия модел на транзитивно удостоверяване, известен до момента. Всеки OpenPGP сертификат може да бъде удостоверен от всеки, който притежава OpenPGP сертификат, което води до модел на пълна децентрализация в удостоверяването. Колкото повече електронни подписи, които го удостоверяват, има един сертификат, толков по-добре е идентифициран собственика му. Разбира се, това твърдение има място само, ако се провери автентичността на повечето електронни подписи върху сертификата.

Подобен децентрализиран модел създава вериги на доверие. Поради тази му особеност, за сертификатния модел OpenPGP се казва, че той гради "Web ot trust". Ето и идеята на модела, която показва и свойството му транзитивност. Лицето A иска да комуникира с лицето B чрез криптиране и подписване на обменяната информация. A и B нямат директен контакт помежду си. Сертификатът на A обаче, е подписан от C, а сертификатът на C е подписан от D. Лицето B познава лично D и знае, че то е делегирало обосновано доверие на C, а C от своя страна е сторило същото за A. Следователно B може с голяма вероятност да смята, че обменения с A по несигурен канал сертификат наистина е на A. B може да направи това следвайки и други транзитивности на доверието (например B познава K, който се доверява на L, който пък се доверява на M, а M удостоверява A). Т.е. удостоверяването на един OpenPGP сертификат може да се направи по повече от една вериги на подписване (доверие), което е отличителна и много полезна черта на топологията на сертификатния модел OpenPGP.

Важна част в топологичната схема играят сървърите за сертификати (на PGP жаргон "сървъри за ключове" или "keyservers"). Това са хранилища на сертификатите, които освен хранилищната си роля, имат и актуализираща роля. Софтуерът върху тези сървъри има такава функционалност, че прибавя промени (електронни подписи, допълнителни публични ключове, отменящи сертификати). От друга страна софтуерът не премахва нищо от сертификатите. Т.е. той само добавя информация.

Целта на сървърите за OpenPGP сертификати е да помагат на потребителите в Интернет да намират търсените от тях сертификати и да поставят своите сертификати там, подписите към свои и чужди сертификати и т.н.

 

Valid HTML 4.01 Transitional