Лекции по компютърни мрежи и комуникации



страница6/6
Дата25.07.2016
Размер1.22 Mb.
#6465
ТипЛекции
1   2   3   4   5   6


е името на компютър, който може да приема електронна поща в рамките на домейна с име .

Основният тип записи са адресните записи, които съдържат съответствие между име и IP-адрес. Имат следния формат:



IN A

е пълното име на хост, е съответният IP адрес.

В DNS е възможно създаването на прякори, т.е. няколко имена да отговарят на един и същ IP адрес. Това става с помощта на CNAME-записите, които имат следния формат:



IN CNAME

е новото име (прякорът), а е старото име.

Допуска се създаване на прякор на прякора, но не се препоръчва.

Файлът reverse-lookup се използва за обратно търсене – съдържа информация на кой IP адрес кое име отговаря. Записите в този файл са наопаки, тъй като при търсене индексираме по IP адреса, а не по името.
23. Сесийно ниво в Интернет – файлов трансфер и FTP протокол.
FTP е приложен протокол над TCP/IP, който използва TCP за установяване на съединение и прехвърляне на информация.

Основно този протокол се използва за прехвърляне на файлове.

Състои се от протоколен интерпретатор (PI) и протокол за прехвърляне на данни (DTP). Протоколният интерпретатор съдържа потребителски интерфейс и през него се обменят команди. Между FTP сървъра и клиента се създават две отделни съединения – едно между DTP и едно между PI. FTP сървърът слуша на порт 20 за DTP и на порт 21 за PI. В клиента съединенията се осъществяват на два порта с номера по-големи от 1024. Поддържат се две паралелни сесии, които могат да се прекратяват и пак да се възстановяват, затова FTP е протокол от сесийно+представително+приложно ниво.

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

Клиентът комуникира с протоколния си интерпретатор посредством потребителски интерфейс.

Командите за FTP са следните видове:



  • команди за контрол на достъпа;

  • команди за параметри на трансфера;

  • команди за прехвърляне на файлове;

  • команди за управление на директории и файлове;

  • команди за помощ и състояние;

  • отговори на FTP сървъра.

Чрез командите за контрол на достъпа се създава контролната сесия между протоколните интерпретатори. Те са OPEN hostname – отваряне на връзка към сървъра hostname. Името hostname се

resolve-а и се получава съответния IP адрес. След това се установява TCP връзка към този IP адрес. Следва идентификация на клиента чрез команди USER username и PASS (команда за парола). По-нататък следва команда за зареждане на структура. Тя се използва когато сървърът и клиентът имат различни структури на файловата система. Клиентът казва каква файлова структура очаква и сървърът имитира тази структура, независимо от неговата физическа файлова система.

Повечето FTP сървъри поддържат user anonymous с парола mail-адреса на клиента. Те отварят почти винаги цялото си съдържание като read-only за този user. Останалите user-и може да имат по големи права за създаване или за промяна на вече създадени файлове върху сървъра.

Командите за параметри на трансфера определят клиентските портове, типа на данните които ще се прехвърлят и вида на трансфера по време на прехвърлянето. Вида на трансфера може да е поток, блок или компресиран.

Най-често използваните команди за прехвърляне на файлове са RECV и SEND. RECV има следния синтаксис: RECV [remfile] [locfile]

[remfile] е име на файл от сървъра, който ще се тегли, а [locfile] е името под което този файл ще се запише в клиента. Ако няма [locfile] файлът ще се запише под същото име, както е на сървъра.

Командата SEND е за обратен трансфер – прехвърляне на файл от клиента към сървъра, в случай че потребителя има права.

Командите GET и PUT са аналогични на RECV и SEND.

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

Командите за управление на директории и файлове са следните:



  • DELETE – изтриване на файл от сървъра, ако потребителя има права;

  • CD – смяна на текущата директория на сървъра;

  • MKDIR – създаване на нова директория на сървъра;

  • RMDIR – изтриване на директория от сървъра;

  • DIR – дава списък на съдържанието на текущата директория на сървъра;

  • RENAME – преименуване на файл.

Командите за помощ и състояние са ? за показване на всички налични команди и ! за прехвърляне от една FTP сесия в друга.

На всяка команда, издадена от протоколния интерпретатор на клиента, протоколният интерпретатор на сървъра трябва да отговори с някакъв код. Кодовете са трицифрени. Първата цифра показва общото състояние на изпълнение на командата. Може да е едно от 1, 2, 3, 4, 5.

1 означава положителен подготвителен отговор (командата е започнала да се изпълнява, но не е завършила).

2 означава положителен заключителен отговор (командата е приключила изпълнението си и можем да преминем към следваща команда).

3 означава положителен междинен отговор.

4 означава отрицателен поправителен отговор.

5 означава отрицателен постоянен отговор.

Втората цифра е допълнителна информация за състоянието на сървъра, а третата цифра допълва информацията от втората цифра.


В оригиналния си вид username-а и паролата преминават в чист вид през мрежата. Файлът също минава в явен вид. Това не е желателно – с нов стандарт се добавя authentication и security по отношение на файловия трансфер. Паролата не трябва да минава в явен вид, по време на установяването на сесия по някакъв начин трябва да се установи таен ключ за сесията за шифровано предаване на файлове, като ги получи клиентът ги разшифрова и си ги записва в локалния диск.
24. Приложно ниво в Интернет – електронна поща. Протоколи SMTP и POP3.
Електронната поща (e-mail) означава изграждането на обслужване в мрежата и протоколи, които допускат регламентираното предаване на съобщения.

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

Когато се е изграждала електронната поща е следвана идеологията на класическата поща – писмото е едно цяло, то се опакова в плик, който се надписва с адреса на получателя и адреса на подателя.

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

Структурата на адреса е следната: name@domain.

name е името на получателя, domain е името на домейн от най-ниско ниво в DNS нотация.

Важното е, че в DNS сървърът, който поддържа имената има запис от тип MX, който съдържа адреса на mail-сървъра за този домейн. Всеки домейн от крайно ниво би трябвало да има специален сървър за поддържане на пощенски услуги към този домейн (mail-сървър).

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

Тъй като един домейн притежава само един пощенски сървър, в адреса не фигурира името на сървъра, а само името на домейна.

IP адреса на сървъра се намира като се resolve-не адресът на домейна и от DNS сървъра за този домейн се прочита MX записа, в който е IP адреса на пощенския сървър.

Протоколът за изпращане на поща е SMTP (simple mail transfer protocol). Той се базира на TCP като долустоящ транспортен протокол. При използване на SMTP от клиента от порт с номер по-голям от 1024 се прави заявка за съединение към IP адреса на пощенския сървър на порт 25, т.е. порт 25 стои отворен в пощенския сървър и чака заявка за съединение. Ако сървърът е в състояние да получи заявката, той отговаря с 220, което означава готов. След това клиентът изпраща съобщение HELLO, а при успех сървърът отговаря с 250. След това от клиента се изпращат MAIL FROM (от кого е пощата), RCPT TO (кой е получателя) и накрая се прехвърля самото съобщение, след което връзката се разпада.

Описаното съединение е едно TCP/IP съединение. В неговите рамки се обменят ASCII съобщения, които са с определена структура. Крайният получател на писмото не е SMTP-сървърът – той се отделя и в него се събират изпратените писма до съответния домейн.

Сървърът трупа тези писма на диск при себе си.

Създаден е друг протокол, с който крайният получател изтегля получените писма от пощенския сървър. Това е POP3 (post office protocol). При него сървърът слуша на порт 110. За разлика от SMTP, протоколът POP3 поддържа автентикация на клиента (username + password), т.е. притежателят на пощенската кутия е регистриран като POP3 потребител. Когато клиентът се свърже към POP3 сървъра, той първо се идентифицира, след което може да извърши други команди за прочитане на получените от него mail-ове.

В клиента SMTP и POP3 агентите се вграждат в една програма – най-широко разпространена е Outlook Express на Microsoft, за UNIX са много.

Писмото се състои от плик, заглавна част и тяло. Всички те са в стандартен ASCII формат (7-битов).

Форматът на плика е прост – той съдържа адресите на подателя и на получателя.

Заглавието съдържа следните полета:



  • поле TO – e-mail на получателя;

  • поле CC – е-mail на втори получател;

  • поле BCC – e-mail на трети получател;

  • поле FROM – от кого е писмото;

  • поле SENDER – кой изпраща писмото;

  • поле RECEIVED – попълва ст от всеки transparent agent, през който е минало писмото;

  • поле RETURN PATH – пътят, по който е минало писмото (може да се използва за обратен достъп до подателя).

В по-новия стандарт са включени още следните полета:

  • поле DATE – дата на изпращане на писмото;

  • поле REPLYTO – e-mail, към който да се изпрати отговора;

  • поле KEYWORDS – ключови думи в писмото;

  • поле SUBJECT – задължително поле за резюме на писмото.

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

ASCII7 означава писмото да е написано на латиница. В клиентите, които създават писмото има текстов редактор, чрез който се написва писмото.

За да могат да се предават не само ASCII7 текстове се създава

едно разширение MIME (multipurpose internet mail extension).

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

Допускат се няколко начина на кодиране.

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

Двоични файлове се кодират с така наречената кодировка base64.

Тялото на писмото се разбива на групи по 24 бита (3 байта). Групата от 24 бита се разделя на 4 части по 6 бита. Всяка част от 6 бита се кодира с ASCII7 код (кодът е от 0 до 63). На 0 отговаря A,

на 1 – B, ..., на 25 – Z, на 26 – a, на 27 – b, ..., на 51 – z, на 52 – 0, на 53 – 1, ..., на 61 – 9, на 62 - +, на 63 - /. Непълните до 24 бита групи се попълват до края със знак =. Когато групата е само 8 бита, тя завършва с ==, а когато е 16 бита завършва с =.

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

Електронната поща е много разпространена в Internet. Не е трудно да се направи поща във всяка мрежа. Основен недостатък е, че цялото писмо трябва да е в ASCII7 формат, което налага въвеждането на MIME.



25. WEB-технологии в Интернет. Хипертекст и HTTP.
Най-мощното приложение на Internet e WWW (world wide web). Като технология и идея е създадено от физика Тим Бърнър Лий през 1990 година с цел да улесни комуникацията на група учени.

Основното, на което се базира web-технологията е хипертекста.

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

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

Web значи паяжина – идва от страниците, които са пръснати и са свързани като паяжина чрез хиперлинковите връзки.

Browser е клиентът, който изтегля и изобразява страниците.

Web server е сървърът, който съхранява страниците. За комуникация между browser-ите и сървърите е създаден

протокола HTTP (hyper text transfer protocol).

Едно URL съдържа протокол, име на домейн и пътя на страницата върху диска на сървъра. При осъществяване на връзка между browser-а и сървъра по URL-то първо по името на сървъра, а после по пътя върху диска на сървъра страницата физически се изтегля от сървъра, предава се на browser-a и той я изобразява. Една страница се прехвърля в рамките на една HTTP-сесия. Ако човек кликне върху линк на изтеглената страница, browser-ът установява нова сесия, подава се новото URL, изтегля се страницата от сървъра и отнове се изобразява от browser-а.

Протоколът HTTP се базира на TCP. HTTP клиентът отваря сесия на произволен порт с номер по-голям от 1024. HTTP сървърът слуша за заявки на порт 80.

При HTTP протокола имаме подготвителна фаза – прави се заявка за HTTP сесия към сървъра, след това се прави HELLO към сървъра, потвърждава се от сървъра и се изпращат методи на HTTP. Методите са GET, HEAD, POST, PUT, TRACE, CONNECT.

Основният метод е GET. Като аргумент му се подава адресът на страницата върху диска на сървъра. Страниците могат да се кешират върху proxy-сървъри, затова в метода GET има if-условие.

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

Методът PUT служи за прехвърляне на страница върху сървъра. Той е свързан с обмен на два етапа – първо се дава адресът на страницата, след това се прехърля самата страница. Методът POST е аналогичен на метода PUT с тази разлика, че той добавя новите данни към съществуващ адрес.

Методът TRACE връща от сървъра получените данни по заявката.

Той се използва за тестване – да видим дали сървърът е получил това, което сме изпратили.

При първите версии на HTTP протокола за изпълнението на всеки метод се прави отделна HTTP сесия – тя отваря TCP съединение, праща нещо, след това затваря последователно съединението и сесията. С други думи имаме 1:1 – една сесия, едно съединение.

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

Ако за всяко изпълнение на GET се затваря съединението, а предстои четене на серия от страници това е много неефективно. Правенето на съединение означава resolving на URL-адреса за да се вземе IP адрес, с който да се направи TCP съединение. На самото TCP ниво се договаря трикратно съединението. След това се договаря HTTP сесията. С други думи, мотае се много служебен трафик – не е ефективно, ако от един сървър се четат няколко страници за всяка страница да се започва отначало.

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

При версията 1.0 на HTTP на едно съединение отговаря една сесия.

При версията 1.1 на HTTP на едно TCP съединение отговарят няколко сесии (няколко команди). Тези команди касаят различни хипертекстови страници, но достъпът до тях се прави с едно TCP съединение. За целта се създава съобщителен канал. По него в пълен дуплекс текат заявки, а в обратна посока – отговори. Така не се работи по метода спри и чакай за всяка заявка.

Друга особеност е, че за един IP адрес може да има няколко имена на сървъри (така наречените виртуални сървъри). За клиента те са различни сървъри, но реално зад тях стои един и същ IP адрес. По-късно те могат да мигрират към други компютри, но вътре в тях URL-то ще се запази.

Основен недостатък е, че не знае кога са обновени хиперлинковете. Затова е важно използването на виртуални сървъри.

В момента се използват два HTTP сървъра – apache основно за UNIX и IIS на Microsoft.

HTTP browser-ите са:



  • MOSAIC – първият browser;

  • NETSCAPE – дълго време е бил най-добрият;

  • INTERNET EXPLORER – най-масовият в момента;

  • OPERA – счита се за най-бърз.

Езикът за написване на страници се нарича HTML (hyper text mark-up language). Това е език с набор от правила (тагове), в които се помества служебна част, която не се изобразява. В последствие в browser-а се правят виртуални машини, които интерпретират други езици като javascript например.


26. Секретност и автентичност в мрежите.
В началото е имало изцяло частни, затворени мрежи. Те, обаче, са скъпи и неудобни, затова се преминава към публични мрежи.

При тях съобщенията не се знае от къде минават, как минават и така въпросът за защита на информацията става жизненоважен.

За да се защити информацията, най-сигурно е тя да се криптира (шифрира), да се предаде криптирана и от другата страна да се декриптира. Схемата е следната: подава се натурален текст P, той се криптира до C = EK (P) – шифриран текст, предава се C, при получаване следва декриптиране DK (C) = P до оригиналния натурален текст. E и D са съответно криптираща и декриптираща функция, параметризирани с ключ K. Щифрираният текст C може да се атакува пасивно, при което атакуващият взима текста C, но обикновено не може да го декриптира, тъй като не притежава декриптираща функция или ключа. При активно атакуване, атакуващият взима C и го заменя с друг текст или без да го променя го праща отново след време.

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

Задачата на криптографията е да намери такива E и D, че

DK (EK (P)) = P за всеки натурален текст P.

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

От гледна точка на криптоанализа имаме три вида задачи:



  • притежаваме само шифриран текст. Разбиването означава да получам оригиналния натурален текст, заедно с ключа;

  • притежаваме натурален текст P и съответният му шифриран текст EK (P). Разбиването означава да получим ключа.

  • можем да изберем произволен натурален текст P и да го шифрираме до EK (P). Разбиването отново означава да получим ключа.

Ще разгледаме някои класически принципи на криптографията.

Първият метод за криптиране е чрез така наречените субституционни шифри. Най-старият такъв е шифърът на Цезар при който всяка буква се измества с три напред, т.е. на A се съпоставя D, на B се съпоставя E, ..., на Z се съпоставя C. Просто разширение е изместването да става с k позиции напред, а не точно с 3, където k е ключ. Обобщението на този метод е моноалфабетичен шифър, при който на всяка буква съотвества друга буква, като на различни букви съотвестват различни (на азбуката се съпоставя нейна пермутация). Механичното разбиване на този шифър практически не е възможно чрез изброяване на всичките 26! възможности. Шифърът, обаче, се разбива лесно, ако се използва нещо допълнително. Например, ако натуралният текст е на английски, то се използва честотният анализ на английския език – честотата на появата на букви в произволен текст, а също и на сричките по две и три букви.

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

Шифрираният текст се взима по колони, в реда на определената номерация.

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

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

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

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

IBM разработва алгоритмите DES и 3DES при които натуралният текст се разбива на групи и към всяка група се прилагат няколко субституционни и транспозиционни шифри. По-късно е разбработен алгоритъмът IDEA, който по-трудно се разбива от DES и 3DES алгоритмите.

Изброените алгоритми са алгоритми със симетричен ключ – ключът е един и същ при криптиране и декриптиране. Основен проблем при тях е секретността на ключа – той не трябва да преминава в нешифриран вид през мрежата.

През 1976 година Diffie и Hellman създават нов вид криптосистема. При нея има два различни ключа K1 и K2 при криптиране и декриптиране. Тя трябвало да отговаря на следните три условия:



  1. D (E (P)) = P за всеки натурален текст P;

  2. D не може да се намери от E (K2 от K1);

  3. E не може да се разбие чрез избран натурален текст.

Ключът K1 за криптиране се прави публичен, а ключът K2 за декриптиране е частен и се пази в тайна.

Комуникацията между А и B се извършва по следния начин: A иска да прати съобщението P на B. За целта се сдобива с публичния ключ EB на B и му праща EB (P). Всички знаят публичният ключ на B, но по условие 3. не могат да разбият EB (P).

Когато B получи съобщението, той го декриптира със своя частен ключ DB до DB (EB (P)) = P. Аналогично, за пращане на съобщения към A, B използва публичния ключ EА на A, който ги декриптира със своя частен ключ DA.

Един алгоритъм, който отговаря на посочените изисквания е RSA. Практически той е най-използвания алгоритъм.


Проблемът за автентикация се състои в следното – когато A и B си говорят, първо A трябва да удостовери себе си пред B и обратно.

Първият начин за автентикация е A и B предварително да обменят общ секретен ключ KAB. След това автентикацията се извършва по следната схема:



Чрез съобщение 1 A казва на B, че е той. B не е сигурен, че това е съобщение от A, затова генерира случайно число RB и го праща

на A в съобщение 2. A кодира полученото случайно число с общия секретен ключ KAB и го праща на B в съобщение 3. B декодира полученото и по този начин се уверява, че наистина

комуникира с A, но в този момент A не е сигурен, че

комуникира с B, затова генерира слуйчайно число RA и го праща на B в съобщение 4. B декодира полученото случайно число с общия секретен ключ КАБ и праща полученото на A в съобщение 5, след което A вече е сигурен, че говори с B.

Възможна е следната подобрена версия на този алгоритъм:



При нея се изпращат само три съобщения, но тя е податлива на така наречената reflection атака от T:



В съобщение 1, T се преструва на A и изпраща случайно число RT.

B отговаря със своето случайно число RB и с кодираното с общия секретен ключ KAB случайно число RT в съобщение 2. В този момент T трябва да върне KAB (RB), но той не знае KAB и затова отваря нова сесия към B като отново се преструва за A, но подава случайното число RB в съобщение 3. B отговаря с ново случайно число RB2 и с кодираното с общия секретен ключ KAB случайно число RB в съобщение 4. T вече знае KAB (RB) и го подава в съобщение 5 в първата сесия и след това затваря втората сесия.

Оттук нататък T може да праща съобщения на B и B ще го мисли за A.


Вторият начин за автентикация е без предварително A и B да имат общ секретен ключ. Те установяват общ секретен ключ по следния алгоритъм: A и B се договарят за две големи числа n и g, такива че n и (n-1)/2 са прости и g отговаря на определени условия. Тези числа са публични, т.е. не се пазят в тайна. След това A избира едно голямо число x и го пази в тайна, както и B избира едно голямо число y и го пази в тайна. Схемата на изпращане е следната:

Първото съобщение, което A изпраща на B е (n, g, gx mod n). B отговаря на A със съобщението gy mod n. След това A изчислява

(gy mod n)x mod n = gxy mod n и B изчислява

(gx mod n)y mod n = gxy mod n. По този начин A и B имат общ секретен ключ gxy mod n.

Този алгоритъм има проблем, тъй като е податлив на бригадна атака:

Тук освен, че А и B избират по едно случайно число x и y съответно, T избира свое случайно число z. A изпраща първото съобщение (n, g, gx mod n), предназначено за B, но T го улавя и изпраща на B (n, g, gz mod n). T също така изпраща съобщението

gz mod n до А. След това B изпраща към A съобщението gy mod n, но T го улавя и го запазва за себе си. По този начин A изчислява секретен ключ gxz mod n, както и T изчислява същия ключ за съобщения към A и B изчислява gyz mod n, както и T изчислява същия ключ за съобщения към B. Така всяко съобщение, което A предава се улавя от T, евентуално се модифицира и евентуално се изпраща на B, аналогично за посоката от B към A. По този начин T вижда всичко и може да го променя по свое собствено желание, докато A и B мислят, че комуникират в сигурен канал.
Третият начин за автентикация е чрез център за разпределение на ключове (KDC). При този алгоритъм, всеки потребител има един общ секретен ключ, който се споделя с KDC. Схемата е следната:

A избира ключ за сесия KS и праща съобщение на KDC, че иска да говори с B, използвайки ключа KS. Това съобщение се криптира със секретния ключ, който A споделя с KDC – KA. KDC получава съобщението, декриптира го и разбира, че A иска да говори с B чрез KS. След това KDC конструира съобщение, съдържащо идентификацията на A и избрания от A ключ за сесията KS и изпраща това съобщение на B. KDC криптира това съобщение със секретния ключ, който споделя с B – KB. Когато B получи съобщението, той го декриптира и научава, че A иска да говори с него чрез ключа KS. Естествено, B е сигурен, че съобщението е от A, тъй като се доверява на KDC.

Недостатъкът на тази схема е, че тя се разбива с атаката на повторението (повторение на стари съобщения). T може да прихване съобщение 2 и впоследствие да го изпрати към B.

Един начин за избягване на атаката на повторението е да се въведе timestamp за всяко съобщение. Ако пристигне съобщение с изтекъл timestamp, то се отхвърля. Другият начин е да се използват специални съобщения nonce – A и B се уговарят за списък от nonce за еднократна употреба, всеки употребен nonce се маха и след това се ползва следващия неупотребен nonce.


Четвъртият начин за автентикация е чрез асиметрични ключове.

Всеки потребител има публичен ключ, чрез който се изпращат съобщения към него и частен ключ, чрез който той декриптира съобщенията предназначени за него. Схемата е следната:



A научава публичния ключ EB на B и изпраща съобщение към B, съдържащо идентификацията на A и едно случайно число RA.

A кодира съобщението с EB. След като получи съобщението B не знае дали то е от A, но той научава публичният ключ на A и изпраща на A съобщение, съдържащо RA, случайно число RB и предложен ключ за сесията KS. B криптира съобщението с EA.

Когато A получи съобщението, той го декриптира със своя частен ключ и открива в него RA – тук вече той е сигурен, че полученото съобщение е от B. След това A изпраща на B неговото случайно число RB, кодирано с предложения ключ за сесия KS. Когато това съобщение пристигне при B, той знае, че е изпратено от А, тъй като е криптирано с генерирания от B ключ KS.

Този алгоритъм стои в основата на протокола SSL.

Недостатъкът е, че отново може да се направи бригадна атака. Всичко зависи от това как A и B научават публичните си ключове.

Ако A прати публичния си ключ на B, T може да го прихване и да прати на B своя публичен ключ, твърдейки че това е публичният ключ на A. Поради тази причина публичните ключове трябва да се разменят по друг канал, не през мрежата. Друг начин е да има доверен сървър на публичните ключове – при него всеки знае публичният ключ на сървъра, като го е получил по вторичен канал, а не през мрежата.
Последният начин за автентикация е чрез техниката на цифровия подпис. Тя се базира на технологията на кодирането. Замисълът е, че към съобщението се добавя нещо допълнително, което удостоверява кой е подателят. Освен това изпращачът по-късно не може да каже, че не е изпратил съобщението или че е изпратил съобщение с друг текст, както и получателят не може да промени полученото съобщение. Използва се RSA алгоритъма, който освен обичайното свойство D (E (P)) = P за всеки натурален текст P има и свойството E (D (P)) = P за всеки натурален текст P.

A изпраща на B следното съобщение: EB (DA (P)). Когато B получи съобщението, той прилага частния си ключ DB и получава

DB (EB (DA (P))) = DA (P). След това B прилага публичния ключ на A и получава EA (DA (P)) = P. B запазва както P, така и DA (P). DA (P) служи като подпис, тъй като то може да е съставено

единствено от A.

Недостатъкът на този алгоритъм е раздуването на съобщението – ако електронният подпис се приложи върху цялото съобщение, то ще стане много дълго. Затова се използва хеш-функция MD, която “смачква” съобщението в битов низ с фиксирана дължина. MD трябва да има следните свойства:


  1. Като е дадено P лесно се изчислява MD (P);

  2. Като е дадено MD (P) е невъзможно да получим P;

  3. Не съществуват P ≠ P′, такива че MD (P) = MD (P′).

Схемата на изращане е следната:

Когато B получи съобщението от A, той изчислява MD (P)

първо от P, а после като приложи публичния ключ на A към

DA (M (P)) и сравнява получените резултати – те трябва да съвпаднат. По този начин се удостоверява, че съобщението е изпратено от A и от никой друг и че текстът на съобщението е автентичен.



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

07.12.2006


Сподели с приятели:
1   2   3   4   5   6




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

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