Версия 1.0, 22 юни 2008
Веселин Колев, Софийски Университет "Св. Климент Охридски"
Адрес за кореспонденция: vesso AT vesselin.org
Първоизточник: http://www.vesselin.org
Лиценз на документа: CC Attribution-ShareAlike
Съдържание:
В рамките на сертификатния модел X.509 се следва йерархична структура, която представлява пирамида на доверитето. На върха на пирамидата стои един единствен (въховен) удостоверител. Възможно е в йерархията да има още удостоверители, но всички те са подчинени на върховния удостоверител.
Всеки, който е удостоверяван в рамките на пирамидата на доверие е директно или индиректно удостоверяван от върховния удостоверител. Индиректното удостоверяване става чрез подудостоверител, но на практика той е удостоверяем от върховния удостоверител и така пак схемата на доверие започва от върха.
Всеки публичен ключ има свой хеш за проверка, който може да бъде изчислен чрез някой от най-често използваните за целта алгоритми (например MD5 и SHA1). Основата на всеки X.509 сертификат е публичния ключ заложен в него. Следователно, ако се знае сумата за проверка на публичния ключ, който е основа на сертификата, по някакъв независим път, то може да се провери дали копието от дадено копие на сертификата е оригинално или е фалшифицирано.
Всички браузъри, които поддържат протокола HTTPS, имат локални хранилища за сертификати на удостоверители. Сертификатите, които се намират там са обект на дискусия. Причината за това е, че производителят на браузъра подава списък със сертификати на удостоверители и така той се превръща в удостоверител на удостоверителите. Учудващо е как огромното болшинство от потребители вярват на производителя на браузъра безрезервно и приемат сертификатите на удостоверителите за истински. Дори не си правят труда да проверят цифровия отпечатък на удостоверителските сертификати, които най-често използват. Това е една невероятно широка база за измама с непредвидими последствия. Проблемът може да има почти катастрофални последствия при използването на нелицензиран софтуер, при който използващия по подразбиране избягва контакт с производителя. Най-често такъв софтуер се изтегля от неофициални файлови хранилища или се отключва и декодира с външни на производителя или дистрибутора софтуерни продукти (т.нар. "cracks")
Използването на софтуер с отворен код не е панацея и при неговото използване трябва да се внимава особено много. Най-използваният браузър в операционни системи с отворен код си остава Mozilla, макар напоследък да се забелязва ускорена миграция към компонентните решения като FireFox. Множество дистрибуции включват този браузър като стандартен пакет и така те включват и хранилището му със сертификати на удостоверители. Доколкото в светът на отворения код дистрибуциите се разпространяват не директно от производителя им, а се предлагат за изтегляне от различни сървъри в Интернет, то потребителят трябва сам да се увери, че е свалил и инсталирал неподменена дистрибуция. Единственият начин да направи това е да провери електронният подпис извършен от производителя върху файловете на дистрибуцията. Тук изникват ведната два проблема:
потребителите не проверяват електронния подпис:
Повечето потребители не са наясно със значението и използването на електрония подпис. Те не са наясно и с използването на сертификатния модел OpenPGP, който най-често се използва за електронно подписване на файлове в системите с отворен код. Оттам те не могат да бъдат сигурни, че инсталирайки пакет със софтуер използващ X.509, инсталират наистина оригиналния пакет, а не такъв злонамерено подменен някъде по пътя на транспорт и с подменени или прибавени фалшиви X.509 сертификати.
Може да се спомене и друг странен случай, който много често се наблюдава. Излиза нова версия на популярния браузър Firefox или версия с включени в нея поправки. Потребителят е проверил електронния подпис на ISO файла, от който е инсталирана дистрибуцията, или файла, от който е инсталирал Firefox, но той не прави това за новия пакет. Обикновено това се случва, ако той инсталира ръчно пакета и пренебрегва проверката на електронния подпис или ако използва пакетна система, която няма вградена проверка на електронния подпис, или пък използва пакетна система с проверка на електронния подпис, но не обръща нужното внимание на предупреждаващите съобщения.
потребителите използват пакетни системи без електронен подпис:
Колкото и да се говори, че Linux е сигурна операционна система, все още някои Linux дистрибуции нямат пакетна система, която да извършва и проверява интегрирано и автоматично по подразбиране електронния подпис върху файловете с пакетите към дистрибуцията.
Един много опасен навик на потребителя е да поставя в хранилището за удостоверителски сертификати на браузъра такива с непроверен произход само и само за да се отърве от съобщенията, които браузъра му подава при посещение на страница със сертификат, чиито удостовеител е неизвестен. Невероятно опасно е да се следват инструкции от типа "за да не виждате предупреждението за използване на неразпознат сертификат, моля инсталирайте сертификата чрез следването на следната хипервръзка". Опасността идва от това, че не се знае кой наистина е издал удостоверителския сертификат. Както ще бъде показано по-долу, това е една от техниките за измама.
Перфектната схема на удостоверяване на сертификат в сертификатния модел X.509 може да се опише накратко чрез следните последователни стъпки:
клиентът директно контактува с удостоверителя за да получи информация за X.509 сертификата му:
Клиентът изисква от удостоверителя цифровия отпечатък на неговия сертификат и го получва лично от оторизирано за това лице, работещо за удостоверителя. След това клиентът изтегля удостоверителския сертификат от интернет страницата на удостоверителя, проверява цифровия отпечатък и го сравнява с този, който е получил лично от удостоверителя. Ако двата отпечатъка съвпадат, този сертификат с голяма вероятност е автентичен и може да бъде поставен в сертификатното хранилище на браузъра. Ако сертификатът на удостоверителя е наличен от преди това в хранилището за удостоверителски сертификати, то само се проверява цифровия отпечатък.
при проверка на клиентски сертификат се проверява кой удостоверителски сертификат го удостоверява и при съмнение се контактува с удостоверителя:
Тази проверка трябва да стане преди да бъдат предадени каквито и да са данни (например потребителско име и парола) в защитения слой между сървъра и клиента. Невероятно нелепо хрумване е данните от една уеб-форма е да се попълват в документа изтеглен по протокол HTTP, а само да се изпращат по HTTPS, защото тогава няма време и условия за проверка преди предаването на данните. Страници, които предлагат подобна услуга са потенциално опасни.
Некоректни са такива сертификатни удостоверители, които издават безогледно сертификати без надлежна проверка на лицето или организацията, която ще бъде титуляр на сертификата.
Един несъвестен удостоверител, който не се постарае да направи пълна проверка на удостоверяваното лице или организация, може да предизвика дублиране на сертификат и така да спомогне за успешна реализация на IP измама или измама на база потребителско удостоверяване. За голямо съжаление повечето удостоверители гледат на предлаганата от тях услуга като на едно задоволяване на потребителското търсене и правят компромиси с цел по-големи парични приходи. Това отваря невероятно голяма дупка в сигурността на сертификатния модел, която не може да бъде запушена с никакви технически средства, защото нарушава принципа на вярното първично удостоверяване, без който принцип нито един сертификатен модел не може да съществува.
Подхвърлените сертификати са "смъртоносната отрова" за сертификатния модел X.509. За жалост те са често използван похват при атака над различни услуги, най-често разплащания. Целта, с която те се използват, е да се декларира пред браузъра или друг софтуер използващ X.509 сертификати, мним удостоверител. Истината е, че подобна измама минава и пред добре обучени в сертификатния модел потребители, доколкото софтуера не генерира предупреждения при проверката на X.509 сертификатите. Учудващо е, че често тази измама минава пред администратори, чиято задача е преди всичко да внимават какво инсталират.
Един от сценариите за подхвърляне на сертификат вече бе описан по-горе. Друг сценарий е сертификат да бъде поставен от друг човек, имащ достъп до компютъра на жертвата или жертвата да импортира този серфикат по невнимание (последното едва ли е използваемо за атака). Възможно е да се разчита и на компромис на подудостоверителски сертификат, който се въвежда със сертификатна верига в хранилището на сертификати на софтуера.
Истината е, че големият ефект от подхвърлен сертификат най-добре се вижда при масовото му подхвърляне на потребителите така, че да се знае, че над определен процент от тях са го поставили в сертификатните си хранилища. Например, много е лесно да направиш страница за безплатно изпращане на SMS и да обясниш на всеки новодошъл в тази страница, че за да може да използва пълната функционалност на сайта и за защита на данните, той трябва да използва HTTPS и за целта трябва да постави в хранилището за сертификати на браузъра си удостоверителски сертификат като следва някаква хипервръзка. Оттук нататък може да се следи колко потребители са изтеглили сертификата и да се направи оценка на заразяването на хранилищата. Ако атаката е обмислена добре, извършващите я могат да изчакат определен период от време за да са сигурни, че имат гарантиран ефект (ще разберат за това като видят, че броят HTTPS сесии е сравнително постоянен, а изтеглянията на сертификата са непропорционално малко). Тогава те могат да пристъпят към атака, като генерират дублирани сертификати на често използвани услуги и извършат IP измама (или DNS измама). При една добре организирана измама, атакуващите могат да произведат сертификат на сървър, който да дублира реално съществуващ сървър за електронно разплащане. Последиците от това са ясни на всички.
Сертификатният модел X.509 позволява използването на подудостоверители. За да може да има подудостоверители, техния X.509 сертификат, трябва да е подписан от върховния удостоверител. Така се създава верига на доверие. Върховният удостоверител вярва на подудостоверителя и го упълномощава да удостоверява лица, организции и др. като им издава сертификати. Всеки сертификат издаден от подудостоверител всъщност е облечен в доверието на върховния удостоверител.
Истината е, че моделът X.509 не може адекватно да отчита наличието на увеличаване на вероятността за пробив в удостоверителната система по протежение на веригата. Възможно е (има данни за такива измами) някой от подудостоверителите да издаде поради грешка подудостоверителски сертификат на измамник и той да генерира дублиращи сертификати и да участва в измами основани на дублиране на услуга чрез IP измама или дублиране на потребителска идентификация.
В X.509v3 съществуват v3 разширения, които декларират "дълбочина" на веригата, т.е. колко подудостоверителски нива да има в нея. На пръв поглед това разширение би следвало да препятства неконтролирумото и злонамерено удължаване на веригата на удостоверяване. Реално обаче малко софтуерни продукти се съобразяват със стойността на разширението "depth".
Този документ е с OpenPGP подписано съдържание
[информация] [електронен подпис][TimeStamp]