ПредишенСледващото

Как HTTPS осигурява сигурност връзка, която всеки трябва да знае уеб разработчик

Как става така, че работи HTTPS? Това е въпрос, на който съм се борил в продължение на няколко дни в работния проект.

В Web-разработчик, аз разбирам, че използването на HTTPS за защита на данните на потребителя - това е много, много добра идея, но аз никога не съм имал кристално разбиране за това как да HTTPS всъщност работи.

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

тръбопровод

Преди да се потопите в това как работи, нека накратко се говори за това, защо е толкова важно да се защити вашата интернет връзка и това, което предпазва HTTPS.

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

Как HTTPS осигурява сигурност връзка, която всеки трябва да знае уеб разработчик

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

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

• Тя изисква по-голяма изчислителна мощност
• прехвърляне на повече данни
• Да не се използва за кеширане

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

Transport Layer Security (TLS)

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

TLS - SSL наследник - е протокол, най-често се използва за сигурни връзки HTTP (т.нар HTTPS). TLS се намира на по-ниското ниво на HTTP протокол в модела OSI. Разясняване на пръстите, това означава, че в процеса на запитването първо място всички "неща", свързани с TLS-връзката и след това по-късно, всичко, свързано с HTTP-връзка.

TLS - хибриден криптографска система. Това означава, че той използва няколко криптографски подходи, които ще бъдат допълнително разгледани:

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

публичен ключ на криптографията

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

Това означава, че ако някой е между клиента и сървъра и следи връзката - тя ще продължава да не бъде в състояние да намери частен ключ на клиента или частния ключ на сървъра или ключ секретно заседание.

Как е възможно това? Математика!

Diffie на алгоритъм - Хелман

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

След като е имало обмен на ключове алгоритъм DH получени таен ключ може да се използва за криптиране на допълнителни връзки в рамките на тази сесия, като се използва много по-просто симетрично криптиране.

Малко по математика ...

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

Да предположим, че Алис и Боб - двете страни, участващи в обмен на ключове DH-алгоритъм. Първо, те са съгласни на основата на корена (обикновено малко на брой, като например 2,3 или 5) и един много голям просто число председател (над 300 цифри). И двете стойности са изпратени в ясен по комуникационния канал, без заплаха от компромис съединение.

Спомнете си, че Алис и Боб имат свои собствени частни ключове (повече от 100 знака), които никога не се предават по комуникационни канали.

По същия комуникационен канал се предава комбинация смес. получено от частния ключ, както и основните ценности и корен.

По този начин:
Смес Алис = (корен ^ Alice Тайната)% нулевия
Смес Боб = (корен ^ Боб тайна)% нулевия
където% - остатък от участък

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

Алис Изчисленията
(Смес на Боб ^ Алис Secret)%-председател

Боб Изчисленията
(Смес на Алис ^ Боб Secret)%-председател

В резултат на тези операции е един и същ номер и за двете Алис и Боб, и този номер става частния ключ за сесията. Моля, имайте предвид, че нито една от страните не е била да изпрати частния си ключ на канала за връзка, както и в резултат на таен ключ също не се предава по една отворена връзка. Чудесно!

За тези, които са по-малко запознат с математическия смисъл на думата, Wikipedia предоставя отлична картина. обяснявайки примера на цвят процес на смесване:

Как HTTPS осигурява сигурност връзка, която всеки трябва да знае уеб разработчик

Забележете как в крайна сметка първоначалния цвят (жълто) се превръща в един и същ "смесено" цвят и Боб и Алис. Единственото нещо, което се предава по един отворен канал за комуникация, тъй като е полу-смесени цветове, в действителност, безсмислени за всеки, слушане на комуникационния канал.

симетрично криптиране

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

С помощта на таен ключ, предварително приготвен, както и да се споразумеят за режима на криптиране, на клиента и сървъра може да комуникира сигурно чрез криптиране и декриптиране на съобщения, получени ние един от друг с помощта на частния ключ. хакер, свързан канал ще виждате само "боклук", се разхождах из мрежата напред-назад.

заверка

Diffie-Hellman алгоритъм позволява две партии, за да получите частен ключ тайна. Но там, където и двете страни могат да се, че говорят много помежду си? Не сме говорили за удостоверяване.

Какво става, ако аз наричам мой приятел, ние ще направим DH-обмен на ключове, но се оказва, че обаждането ми е било спряно и аз всъщност говорих с някой друг. Аз все още съм в състояние да комуникира сигурно с този човек - никой няма да бъде в състояние да ни слуша повече - но това не е този, с когото аз мисля, че общуват. Това не е твърде безопасно!

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

Но, наистина, какъв сертификат, и това ни дава сигурност?

Сертификати

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

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

1 е действително съществуващо;
2. има достъп до домейна, удостоверението, за които тя се опитва да се получи.

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

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

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

Други неща, които трябва да знаете за сертификатите

Extended Validation

В допълнение към обичайните на X.509 сертификати сертификат съществуват Extended Validation, осигуряване на по-високо ниво на доверие. С издаването на такъв сертификат, CA извършва повече проверки на лицето, което получава сертификат (с помощта на обичайните паспортни данни или сметки).

Service набор от уеб сайтове на един сървър

На тази тема има много данни за Wikipedia, има курс по Корсера. Специални благодарности на момчетата от чата на security.stackexchange.com. който отговори на въпросите ми тази сутрин.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!