CSI XII: Криптография и криптиране на данни
Е, в последните публикации на Нещата, които се случват в изчислителната техника, сме се занимавали (и то много) с въпроса за кодиране, което не е нищо повече от използването на друго представяне на данните по някаква причина. Днес ще се изправя и представям последната публикация, посветена на тази тема: тогава ще преминем към нещо съвсем различно. Но това е, че говорейки за кодиране на информация, не исках да оставя една от най-интересните и актуални теми незасегната: криптиране на данни.
ефективно, криптиране Информацията се състои в трансформирането й, следвайки някои правила или алгоритъм. Когато правим това е, общо взето, защото не ни интересува, че всеки може да разбере нашето послание. Първият подход за постигане на това е този, който изглежда най-очевиден за нас: само получателят на съобщението ще знае какви са правилата или алгоритъмът за дешифриране на информацията, която изпращам. Това е известно като криптиране на таен алгоритъм и истината е, че днес тя е малко остаряла. Нека да видим защо.
Всеки, който е бил част от таен клуб като дете, вероятно ще разбере какво имам предвид. Най-простото нещо е да установим правила за кодиране на информацията, която знаем само в клуба. По този начин ще бъде почти невъзможно, ако правилата са сложни, всеки отвън да може да дешифрира съобщението. Нека вместо това вземем пример за прости правила.
Извиква се най-старото известно криптиране Шифър Цезар и се състои от добавяне на сума към всяка буква, за да се преобразува в друга от същата азбука. Ако искаме да кодираме 'a' и ключът е 5, добавяме 5 символа към 'a' (b, c, d, e,F) и го променяме на „f“. Когато стигнем до последните букви, разбира се, заместваме с първите. По този начин съобщението „abcdez“ ще бъде кодирано като „fghije“. Просто.
Твърде просто, разбира се. Но тук се появи важна концепция, която е тази на код на ключа. Паролата ни беше 5 и по принцип, без да я знаем, не можахме да дешифрираме съобщението. все още знаейки правилата за кодиране. Е, в този случай да, защото алгоритъмът е много прост: знаейки, че правилото се състои от добавяне на определен номер, за да разбиете ключа, ще трябва само да опитате да добавите 1, след това 2, след това 3. към всеки символ, докато намерите че ключът е 5 при четене на смислено съобщение: това е известно като атака с груба сила
Но тъй като алгоритъмът се усложнява и ключовете са дълги и сложни, може да се гарантира с известна строгост, че атаката с груба сила ще намери ключа, в най-лошия случай, когато изпратената информация вече не е от значение. Ето защо днес тенденцията е да се използва публични алгоритми -правила - за кодиране на информация. Освен това с Интернет възникна много важен проблем за тайните алгоритми: в нашия детски клуб можем да се договорим за тайните правила на тайна среща в (тайната) къща на дървото. Но в Интернет няма такава възможност!: Имате нужда от такава защитен канал да разпространяваме тайните правила и точно това нямаме 1 .
Първият „стандарт де факто'от публичните алгоритми беше DES (Стандарт за шифроване на данни). DES беше одобрен през 1976 г. и през 1998 г. паролата беше разбита чрез атака с груба сила, продължила 56 часа 2. Ако смятаме, че мощността на компютрите нараства експоненциално през всичките тези години, можем да предоставим повече от забележително на този алгоритъм. Така или иначе към този момент DES вече беше заменен от по-сложен вариант Тройна DES който през 2001 г. беше „заменен“ с друг алгоритъм, AES (Разширен стандарт за шифроване). Някои слабости в AES са спекулирани, но в момента няма известни атаки с груба сила, които биха могли да работят. Толкова много, че правителството на САЩ, свикнало с тайни алгоритми, обяви, че може да използва този публичен метод за криптиране на своите TOP-SECRET документи. Така че е МНОГО МНОГО ТРУДНО да счупите ключ. МНОГО, МНОГО по-лесно е да го откраднеш.
Името е криптография на симетричен ключ към която използва един и същ ключ за криптиране и за дешифриране. Това е най-очевидното и това, което всички сме мислили досега. Но тук има проблем: как да получите таен ключ? Ако подателят и получателят споделят град или държава, нещата са прости: те остават един ден и ако са сигурни, че лицето пред тях не е измамник, те се договарят за сигурна парола. Но ако двама души искат да обменят информация през интернет и не могат да се срещнат помежду си, как се договарят за ключа със сигурността?.
Друг проблем: ако искам да общувам с Хуан, прекарвам тайна парола. И с Мария още един ключ (за да не разбере Хуан), а с Антонио друг, Хуан прекарва друг, за да общува с Антония. накратко, че да общуваме с н хора, от които имам нужда н различни ключове и това са много: по-добре да ги запиша в POST-IT, нали?.
За да разреши тези проблеми, криптография с асиметричен ключ който по същество харчи ключ за криптиране и двойка за дешифриране. И това дава много игра. Да предположим, че генерирам чифт ключове у дома и ги запазвам за дешифриране: това е моят таен ключ. Но другият ключ го публикувам на сървър: е моят публичен ключ. Така че, ако Хуан иска да ми изпрати нещо шифровано, той взема публичния ми ключ, криптира информацията с него и ми го изпраща. Благодатта е, че само с моя частен ключ това съобщение може да бъде дешифрирано и аз го имам скрит: всеки, който прочете съобщението, ще намери само тъпотия. И същото може и Мария, Антонио.
Но, фаталността, тук проблемът е друг: когато получа съобщение, кодирано с моя публичен ключ и подписано от Хуан. Как да разбера, че Хуан ми го изпрати? Не мога: Хуан трябва удостоверяване. Но. Ами ако направим обратното?: Хуан публикува паролата си да дешифрирам. Шифровайте съобщението с моя публичен ключ, за да шифровате и кодирайте резултата с личния си ключ за криптиране. Тогава аз (и всеки друг) ще мога да прочета шифрованото съобщение на Хуан, без да взема повече от публичния ключ на Хуан. Текстът ще съдържа глупости: само аз мога да го разбера, като изразходвам личния си ключ. Извиква се съобщението, кодирано с частен ключ за удостоверяване цифров подпис. Цифровият подпис удостоверява, предотвратява промяна (добавяне на съдържание към съобщението) и не може да бъде отхвърлен: Хуан не може да твърди, че това съобщение не е негово.
Това е направено?. Никога. Да предположим, че Антонио иска да се представя за Хуан и кодира съобщението: „Здрасти, аз съм Хуан“ със своя личен ключ (този на Хуан не го знае). И в момента, когато имах достъп до сървър за ключове, за да разбера публичния ключ на Хуан (и дешифрирах съобщението), Антонио прекъсва комуникацията и ми изпраща НЕГОВИЯ партньорски ключ: тогава ще мисля, че съобщението е подписано от Хуан. Необходимо е те да съществуват Сертифициращи органи (AC). Те служат за гарантиране, че определен публичен ключ съответства на този на дадено лице или лице. За да направи това, след проверка на самоличността на заявителя (и в най-сериозните случаи се изисква физическо присъствие), удостоверяващият орган свързва самоличността на лицето с публичния ключ в документ и цифров знак със своята парола - AC - тази асоциация.
Мога да поискам от Хуан да получи своя цифров подпис от уважаван CA. Например, ако искам да направя отчет за доходите онлайн, ще трябва да имам цифров подпис, издаден от администрацията. Когато "Хуан" се свърже с мен, ще дешифрирам цифровия подпис с публичния ключ на CA (който трябва да е известен) и ще получа публичния ключ на Хуан заедно с личните му данни. И ако някой е подправил публичния ключ на Хуан по някакъв злонамерен начин, това е вината на AC. Лесно вдясно?.
Истината е, че удължих много в този пост и оставих много неща в процес. Това е много интересна тема, която се поддава на размисъл конспирация. И е, че всяка комуникация през Интернет, в даден момент от нея, ще бъде несигурна. Но това е нещото в конспирацията: Никога не можете да го прекратите: Винаги можете да отидете една крачка по-напред и да включите някой друг в заговора. Нормално е, че някои от тези теории са толкова успешни, нали?