SlideShare a Scribd company logo
1 of 15
Download to read offline
Катедра “Информатика”
Реферат на тема:
Advanced Encryption Standard
– същност и практическо приложение
по дисциплината
“Безопасност и защита на компютърни системи и приложения”
Изготвила:
Елица Христова Захариева
СИН 400464
10 група
Спец. “ИТ иновации в бизнеса”
Фак. Номер 90919
Проверили:
ДОЦ.Д-Р СТЕФАН ДРАЖЕВ
АС. РАДКА В. НАЧЕВА
2
Съдържание
Увод ...................................................................................................................................................................2
I. Същност на Advanced Encryption Standard .............................................................................................3
II. Практическо приложение на Advanced Encryption Standard ................................................................7
1.AES решения в индустрията......................................................................................................................7
2.AES в защитата на безжични мрежи ........................................................................................................8
3.Поглед върху приложението с езици за програмиране ........................................................................9
Заключение.......................................................................................................................................................9
Използвана литература.................................................................................................................................10
Приложения....................................................................................................................................................11
. . .
Увод
Настоящата разработка има за цел да запознае читателя със стандарта Advanced En-
cryption Standard. За постигане на целта ще бъдат изпълнени две задачи:
1) запознаване със същността на стандарта, включително технически и
математически характеристики, история на въвеждане, някои предимства и недостатъци,
криптиращ алгоритъм;
2) запознаване с практическото приложение на стандарта, за да се изясни ролята му в
различни сфери в ежедневието.
Става ясно, че обект на реферата е стандартът Advanced Encryption Standard, а
предмет на анализ са същността и приложението му в практиката.
Живеем в дните на все по-бурното внедряване на високотехнологични решения в чо-
вешкия бит, отдалеченото съхраняване на файлове за мултиканален достъп, все по-масовото
и доброволно споделяне на информация, но и на гениалните т.нар. „черни” хакери и злона-
мерени разработчици. Нуждата от защита е неоспорима. Именно поради тези причини счи-
таме, че разработката не е лишена от актуалност и значимост, тъй като касае най-добрият и
непробиваем до този момент стандарт за шифриране .
Криптографията се използва, за да се гарантира, че съдържанието на съобщенията се
транспортира конфиденциално и няма да бъде променено1
. Дефинира се като „наука за тай-
ното писане”. Процесът на криптиране е стар, колкото и самото писане. Смята се, че първите
текстове, в които се откриват кродиращи техники, са от преди 4000 години при древните
египтяни. Йероглифни надписи върху гроба на благородника Khnumhotep II са съставени от
необикновени символи, за да прикриват истинското значение.
1
AbuTaha, М., M. Farajallah, R. Tahboub, M. Odeh. Survey Paper: Cryptography Is The Science Of Information
Security. International Journal of Computer Science and Security (IJCSS), Volume (5) : Issue (3) : 2011. Стр. 300
3
I. Същност на Advanced Encryption Standard
Advanced Encryption Standard (AES)2
, известен още като метод на Рейндал, е подобрен
стандарт за шифриране. Този стандарт се използва за замяна на оригиналния DES (Data
Encryption Standard)3
. AES прилага алгоритъма на Рейндал върху матрица, съдържаща байто-
вете на оригиналното съобщение. AES използва шифриращи ключове със 128, 192 и 256 би-
тови дължини. Въпросната дължина определя броя повторения на криптирането, необходими
за превръщането на обикновения текст в шифър. Повторенията се проявяват в цикли, като
ключовете с дължина 128 бита използват 10 цикъла, 192 битовите – 12 цикъла, а 256 битови-
те – 14 цикъла. Всеки цикъл се състои от няколко етапа от 5 идентични процедури. Една от
последните зависи от т.нар. криптиращ ключ, който впоследствие може да възстанови ори-
гиналния текст чрез прилагане на набор от обратни процедури.
Националният институт по стандарти и технологии на Съединените щати (NIST) е
поставен пред задачата да намери нов криприращ алгоритъм, за да замени старите, които
вече се смятат за несигурни4
. Петнайсет конкурентни проекта са обект на предварителен
анализ от Световната криптографска общност, включително Агенцията за национална сигур-
ност (NSA). NIST спира избора си на Rijndael, тъй като той съчетава в себе си простота и
висока производителност. Advanced Encryption Standard е приет през 2002 г. от американския
Национален институт за стандарти и технология.
AES прилага симетричен алгоритъм за блоково криптиране5
. Основава се на permuta-
tions6,7
и substitutions8
. Има висока скорост и ниски изисквания към RAM-паметта, затова
работи добре на голямо разнообразие от софтуер, започвайки от 8 битови смарт карти.
Според правителството на САЩ стандартът AES може да защити дори класифицира-
на информация до ниво тайни. 192 и 256 битовите ключове могат да защитят и строго сек-
ретна информация. NIST потвърждава голямата сигурност на AES чрез астрономически
числа - 128 битов ключ осигурява 340*1036 възможни комбинации, а 256 битовия ключ
увеличава това число до 11*1076. За сравнение, алгоритъмът DES дава общо число на
комбинациите 72*1015. За тяхното разбиване на специално построената машина “DES
2
http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септември 2013
3
http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard, стр. 1
4
http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014
5
http://www.slideshare.net/kgospodinova89/ss-32125546, 10 Март 2014, слайд 12
6
Григорова, Ася. Проектиране на система за защита на бази данни за ресурсно пла-ниране чрез пароли и раз-
лични нива на достъп. Дип. София. 2008, стр. 26
7
Permutations - пермутация, изменение на реда на данните.
8
Substitutions - заместване на един блок от данни с друг.
4
Cracker” й трябват няколко часа. Дори да можеше да го извърши за 1 секунда, за разбиването
на 128 битов AES ключ машината би изразходвала 149 трилиона години9
.
Единствените успешни атаки срещу стандарта AES са били от страничен канал10
сре-
щу открити слабости във внедряването или управлението на ключа на някои AES-базирани
криптиращи продукти11
. Браузърът BEAST, използван срещу TLS v1.0 протокол е добър
пример - TLS може да използва AES за криптиране на данни, но поради информацията, която
TLS излага, нападателите успяват да предскажат инициализиращия векторен блок, използван
в началото на процеса на криптиране.
Различни изследователи публикуват атаки срещу версиите на Advanced Encryption
Standard с по-малко цикли. Доклад, публикуван през 2011 г. показва, че използвайки техника,
наречена biclique атака, може да се възстановят AES ключове по-бързо от атака от типа „гру-
ба сила“ с между три и пет пъти, в зависимост от версията на шифъра. Дори и тази атака,
обаче, не застрашават практическото използване на AES поради високата му изчислителна
сложност.
Шифърът е напълно самостоятелен12
– той не използва никакви части заимствани от
други шифри, има отчетлива и ясна структура, тоест неговата устойчивост не се основава на
сложни и не напълно разбираеми преобразувания. Последното свойство също намялава
вероятността за съществуване на някакви “тайни проходи”.
За недостатък на AES може да се счита, че режимът на разшифриране се различава от
режима на шифриране не само по последователността на функциите, но и самите функции се
различават със своите параметри. Това се отразява на ефективността на апаратната
реализация на шифъра13
.
Кръгът на цикъла на AES криптирането (с изключение на финалния кръг отвън), или 1
рунд, се състои от четири стъпки14
. Mеждинните резултати от преобразуванията, които се
изпълняват в рамките на криптиращия алгоритъм, се наричат състояния (State)15
. Състояние-
то може да се представи във вид на правоъгълен масив от байтове (Фигура 1).
9
Григорова, Ася. Проектиране…, стр. 36
10
Aтаките от страничен канал не използват „груба сила“ или теоретични слабости, за да разбият шифъра, а по-
скоро използват пропуски в начина, по който той е бил изпълнен.
11
http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014
12
Григорова, Ася. Проектиране…, стр. 53
13
Пак там.
14
http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard
15
Григорова, Ася. Проектиране…, стр. 36
5
Фигура 1: State (състояние).
I. AddRoundKey (добавяне на рундов ключ) - преобразувание, което съдържа добавя-
не чрез XOR16
на рундов ключ към състоянието. Рундовият ключ се изработва от ключа за
шифриране чрез алгоритъм за изработка на ключове (key schedule) (Фигура 2).
Фигура 2: AddRoundKey
II. SubBytes (замяна на байтове) - замяна чрез нелинейна функция, използвайки спра-
вочни таблици, за да превърнат всеки байт в кореспондиращ байт (Фигура 3).
16
Exclusive or (XOR) - логическа операция, която извежда „вярно“ винаги, когато двата входа се различават
(единият е верен, а другият е грешен).
6
Фигура 3: SubBytes
III. ShiftRows (преместване/отместване на редовете) - всеки ред на матрицата пре-
търпява циклична размяна. Последните 3 реда на състоянието циклично се отместват наляво
на различно число байтове. Ред 1 се придвижва на C1 байт, ред 2 - на C2 байта, ред 3 - на C3
байта (Фигура 4).
Фигура 4: ShiftRows
IV. MixColumns (разбъркване/смесване на стълбовете) - до пълното разбъркване на
всяка колона. Тази процедура използва линейно преобразуване, докато разбърка всичките
четири байта в реда (Фигура 5).
Фигура 5: IV. MixColumns
В матричен вид изглежда така (c е номер на стълба в масива State) (Фигура 6).
Фигура 6: MixColumns, матричен вид
7
II. Практическо приложение на Advanced Encryption Standard
AES се използва в много протоколи като SSL/TLS и може да бъде намерен в най-
модерните приложения и устройства, нуждаещи се от криптираща функционалност17
.
1. AES решения в индустрията
18
Поради широката гама от приложения, които Rijndael алгоритъмът може да поддържа,
в момента са налични четири различни версии на Rijndael-базирани продукти: 1) Стандартна
- осигурява скорости на трансфер до 500 Mbits/сек и е подходящ за приложения като VoIP19
.
2) Компактна - перфектна за безжични приложения като PDA 20
устройства и мобилни
телефони, където минимизирането на енергия и място са от решаващо значение. 3) Бърза -
достига до 2000 Mbits/сек, подходяща за VPN 21
продукти за сигурност, включени в
широколентови суичове, рутери, защитни стени и концентратори за отдалечен достъп. 4)
Много бърза - за приложения със скорост по-висока от 2000 Mbits/сек.
Фигура 7: Пример за защитена VoIP система, използвайки AES
Фигура 8: Защитена безжична видео-комуникационна с-ма с използване на бързи AES
решения.
17
http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014
18
http://www.eetimes.com/document.asp?doc_id=1275908, 10 Ноември 2001
19
Voice Over IP (VoIP) е методология и набор от технологии за доставка на гласови съобщения и мултимедийни
сесии по интернет протокол (IP) мрежи като Интернет.
20
Персонален цифров помощник (PDA) /преносим компютър/ помощник на личните данни е мобилно устройс-
тво, което функционира като мениджър на лична информация.
21
Виртуална частна мрежа (VPN) разпростира частна мрежа в публична мрежа, каквато е Интернет.
8
2. AES в защитата на безжични мрежи
Настройването на шифроването на wi-fi рутера е едно от най-важните неща, които мо-
гат да се направят за сигурността на мрежата22
, но всеки рутер предлага различни опции -
WPA2-PSK23
(TKIP), WPA2-PSK (AES) и WPA2-PSK (TKIP/AES) и др. Погрешната настрой-
ка може да доведе до по-бавна и незащитена връзка24
.
WPA използва TKIP криптиране, а WPA2 - AES, но може да се използва TKIP за об-
ратна съвместимост (така че би приело WPA връзки)25
. TKIP26
означава "временен ключов
интегритет протокол” и представлява временен криптиращ протокол, представен заедно с
WAP, за да замени прекалено несигурното WEP криптиране. TKIP всъщност е доста сходен с
WEP и вече не се счита за сигурен. В днешно време той се отхвърля и не бива да се използва.
По-старите устройства не поддържат AES, но всички, произведени след 2006 би трябвало да
го поддържат.
Когато се настройва рутер да използва WPA2, обикновено има възможност да се из-
ползва AES или TKIP + AES27
. Когато рутерът е настроен на WPA2 с TKIP + AES, това зна-
чи, че мрежови устройства, които могат да използват WPA2, ще се свържат с WPA2, а мре-
жови устройства, ползващи само WPA, ще се свържат с WPA. Паролата и за двете ще бъде
еднаква. Тази опция позволява на потребителите лесно да преминат от WPA да WPA2. Ре-
жимът понякога се нарича PSK2-смесен режим. За да се настрои рутерът да използва само
WPA2, се избира WPA2 с AES.
Фигура 9: Примерен работен екран при конфигурация на частна wi-fi мрежа
22
http://lifehacker.com/the-difference-between-wi-fi-security-protocols-wpa2-a-1672256222, 17 Декември 2014
23
PSK е предварително споделен ключ и всъщност представлява паролата на криптиране. Това го отличава от
WPA, който използва RADIUS сървър, за да раздава уникални ключове за големи корпоративни или държавни
Wi-Fi мрежи.
24
http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014
25
http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331
26
http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014
27
http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331
9
Първите 4 режима28
(вж. Фигура 9) днес се смятат за несигурни и не бива да се изби-
рат. WPA-PSK (AES) не е много логичен, тъй като устройства, които поддържат AES почти
винаги ще поддържат WPA2, а устройства, които изискват WPA1 много рядко поддържат
AES криптиране. WPA2-PSK (TKIP) не е защитен и е подходящ само ако имате по-стари ус-
тройства, които не могат да се свързват с WPA2-PSK (AES) мрежа. WPA2-PSK (AES) е най-
сигурният избор. Понякога, в зависимост от рутера, избирането на WPA2 може да не е доста-
тъчно добро. Въпреки всичко, можем да изберем него и да върнем настройките обратно, ако
устройството спре да работи. Последният режим е препоръчителен и поддържа всички видо-
ве устройства и криптиране. Въпреки това гарантира, че атакуващият може да разбие мрежа-
та чрез пробив в схемата за криптиране “най-малкия общ знаменател”.
Много съвременни устройства, поддържащи 802.11n и по-бързи стандарти, ще се за-
бавят до 54Mbps29
, ако използвате опция за по-стари криптирания като WEP и WPA/TKIP
сигурност, избрана, за да съответства и на по-стари спецификации.
3. Поглед върху приложението с езици за програмиране
AES намира широко приложение в разработването на приложения, сайтове и др. По-
ради възможността си за импортиране чрез различни езици за програмиране - Java Script,
C#.NET, Java. Съгласно поставените в точка „Въведение” ограничения на изследването, те
няма да бъдат разглеждани подробно, но ще бъдат приложени в точка „Приложения” (вж.
Приложение 1, 2 и 3). Там са илюстрирани примерна реализация на Java Script и употреба в
C#.NET и Java.
Заключение
Стандартът AES представлява комбинация от прости, но немалобройни етапи на
шифриране на информация. Това го прави високо производителен и едновременно с това
изключително надежден. В наши дни той е най-сигурният начин за кодиране на данни и фак-
тически не е станал жертва на злонамерена атака, особено в по-високобитовите си версии.
Настоящият реферат наблегна върху факта, че AES неизменно присъства в ежедне-
вието на всеки потребител на компютърни устройства и интернет. Стандартът е разработен в
няколко версии, които го правят приложим за всякакви цели и технологични решения. Пора-
ди некомпрометираното му действие и нарастващите нужди на обществото и се очаква упот-
ребата му да расте и за напред.
Едно бъдещо по-задълбочено изследване в областта би могло да наблегне на конк-
ретни практики за прилагане на AES в домашни условия. Подобна информация се постарах-
28
http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014
29
http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331
10
ме да включим в подточка II. Такава разработка, наподобяваща практическо ръководство, би
могла да бъде полезна на всеки заинтересован за това как да внедри AES при програмиране-
то на приложение, как да криптира собствените си съобщения, как да защити преносимите си
устройства и др.
Има понятие „цена на декриптиране” – „декриптирането е неизбежно. Всичко, което
програмистът може да направи, е да увеличи цената (време, пари и изчисления) за врага.”30
Можем аргументирано да твърдим, че AES увеличава многократно тази цена, допринасяйки
непрекъснато за защитата на безброй потребители навсякъде по света.
Използвана литература
Григорова, А. Проектиране на система за защита на бази данни за ре-сурсно планиране чрез
пароли и различни нива на достъп. Дип. София. 2008
Господинова, К. Методи за криптиране и декриптиране на данни.
http://www.slideshare.net/kgospodinova89/ss-32125546, 10 Март 2014, слайд 12
AbuTaha, М., M. Farajallah, R. Tahboub, M. Odeh. Survey Paper: Cryptography Is The Science Of
Information Security. International Journal of Computer Science and Security (IJCSS), Volume (5)
: Issue (3) : 2011. Стр. 300
Hoffman, C. Wi-Fi Security: Should You Use WPA2-AES, WPA2-TKIP, or Both?
http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/,
12 Дек. 2014
Nekoogar, F. Digital Cryptography: Rijndael Encryption and AES Applications.
http://www.eetimes.com/document.asp?doc_id=1275908, 10 Ноември 2001
Ohri, A. Random Thoughts on Cryptography. http://decisionstats.com/2015/04/14/random-
thoughts-on-cryptography/, 14 Април 2015
Pinola, M. The Difference Between Wi-Fi Security Protocols: WPA2-AES vs WPA2-TKIP.
http://lifehacker.com/the-difference-between-wi-fi-security-protocols-wpa2-a-1672256222, 17 Дек.
2014
Rouse, M. Advanced Encryption Standard (AES).
http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014
Advanced Encryption Standard. Wikipedia.
http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септември 2013
Advanced Encryption Standard. World encyclopedic knowledge.
http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard
WPA2 TKIP or AES encryption ?. Speed Guide. http://www.speedguide.net/faq/wpa2-tkip-or-aes-
encryption-331
30
Ohri, A. Random Thoughts on Cryptography. http://decisionstats.com/2015/04/14/random-thoughts-on-
cryptography/, 14 Април 2015
11
Приложения
Приложение 1 - Примерна реализация на Java Script31
/**
* @source http://people.eku.edu/styere/Encrypt/JS-AES.html#subbytes
*/
// функция за криптиране
function aes_encrypt(message,crypt_key)
{
var w = new Array( 44 );// деклариране на key shedule
var state = new Array( 16 );// деклариране на state
var round;
msg=get_value(message,true);
key=get_value(crypt_key,false);
// генериране на "round" ключове
w = key_expand( key );
state = transpose( msg );
state = AddRoundKey(state, w, 0);
for( round=1; round<10; round++ )
{
state = SubBytes(state, S_enc);
state = ShiftRows(state);
state = MixColumns(state);
state = AddRoundKey(state, w, round*4*4);
}
SubBytes(state, S_enc);
ShiftRows(state);
AddRoundKey(state, w, 10*4*4);
// обработване на изход
AES_output = transpose( state );
return format_AES_output();
}
//функция за генериране на "round" ключове
function key_expand( key )
{
var temp = new Array(4);
var i, j;
var w = new Array( 4*11 );
for( i=0; i<16; i++ )
{
w[i] = key[i];
}
i = 4;
while ( i < 44 )
{
for( j=0; j<4; j++ )
temp[j] = w[(i-1)*4+j];
if ( i % 4 == 0)
{
temp = RotWord( temp );
temp = SubWord( temp );
temp[0] ^= Rcon( i>>>2 );
}
31
Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв-
ри 2013
12
// word = word ^ temp
for( j=0; j<4; j++ )
w[i*4+j] = w[(i-4)*4+j] ^ temp[j];
i++;
}
return w;
}
// смесване на "round" ключ с state
function AddRoundKey( state, w, base )
{
var col;
for( col=0; col<4; col++ )
{
state[I(0,col)] ^= w[base+col*4];
state[I(1,col)] ^= w[base+col*4+1];
state[I(2,col)] ^= w[base+col*4+2];
state[I(3,col)] ^= w[base+col*4+3];
}
return state;
}
// функция за S-Box размяна
function SubBytes(state, Sbox)
{
var i;
for( i=0; i<16; i++ )
state[i] = Sbox[ state[i] ];
return state;
}
...
Приложение 2 - Употреба в C#.NET 32
using System;
using System.IO;
using System.Security.Cryptography;
namespace Aes_Example
{
class AesExample
{
public static void Main()
{
try
{
string original = "Here is some data to encrypt!";
// Създаване на нова инстанция на класа Aes
//Създава се нов ключ и инициализиращ вектор(IV).
using (Aes myAes = Aes.Create())
{
//Криптиране на съобщението в масив от байтове.
byte[] encrypted =
EncryptStringToBytes_Aes(original,myAes.Key, myAes.IV);
//Декриптиране на байтовете в стринг.
32
Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв-
ри 2013
13
string roundtrip =
DecryptStringFromBytes_Aes(encrypted,myAes.Key, myAes.IV);
//Отпечатване на оригиналното съобщение и декриптираното
съобщение за сравнение.
Console.WriteLine("Original: {0}", original);
Console.WriteLine("Round Trip: {0}", roundtrip);
}
}
catch (Exception e)//Отпечатване на грешки.
{
Console.WriteLine("Error: {0}", e.Message);
}
}
static byte[] EncryptStringToBytes_Aes(string plainText, byte[]
Key,byte[] IV)
{
//При некоректно зададени параметри се хвърля изключение, като се
показва причинителят.
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("Key");
byte[] encrypted;
// Създаване на AES обект с посоченият ключ и инициализиращ вектор.
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
// Създаване на енкриптор за извършване на трансформации.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key,
aesAlg.IV);
//Създаване на поток за самото криптиране.
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt,
encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new
StreamWriter(csEncrypt))
{
//Записване на всичко получено в потока
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
//Методът връща потокът с криптираното съобщение като резултат.
return encrypted;
}
static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key,
byte[] IV)
{
14
//При некоректно зададени параметри се хвърля изключение, като се
показва причинителят.
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("Key");
//Деклариране на низ, който ще съдържа декриптираното съобщение
string plaintext = null;
// Създаване на AES обект с посоченият ключ и инициализиращ вектор.
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
// Създаване на декриптор за извършване на трансформации.
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key,
aesAlg.IV);
//Създаване на поток за декриптирането.
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt,
decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new
StreamReader(csDecrypt))
{
//Низът за декриптираното съобщение се запълва с
декриптираните байтове от потока.
plaintext = srDecrypt.ReadToEnd();
}
}
}
}
//Методът връща низ със декриптирано съобщение.
return plaintext;
}
}
}
15
Приложение 3 - Употреба в Java 33
import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AES {
static String IV = "AAAAAAAAAAAAAAAA";
static String plaintext = "test text 123000"; /*Note null padding*/
static String encryptionKey = "0123456789abcdef";
public static void main(String [] args) {
try {
System.out.println("==Java==");
System.out.println("plain: " + plaintext);
byte[] cipher = encrypt(plaintext, encryptionKey);
System.out.print("cipher: ");
for (int i=0; i<cipher.length; i++)
System.out.print(new Integer(cipher[i])+" ");
System.out.println("");
String decrypted = decrypt(cipher, encryptionKey);
System.out.println("decrypt: " + decrypted);
}
catch (Exception e) {
e.printStackTrace();
}
}
public static byte[] encrypt(String plainText, String encryptionKey) throws
Exception {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"),
"AES");
cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-
8")));
return cipher.doFinal(plainText.getBytes("UTF-8"));
}
public static String decrypt(byte[] cipherText, String encryptionKey) throws
Exception{
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"),
"AES");
cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-
8")));
return new String(cipher.doFinal(cipherText),"UTF-8");
}
}
33
Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв-
ри 2013

More Related Content

What's hot

Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниMarketDevelopment
 
Big data security word file 116941
Big data security   word file 116941Big data security   word file 116941
Big data security word file 116941borkopinf
 
Особености на sniffing атаките и как да се предпазим от тях
Особености на sniffing атаките и как да се предпазим от тяхОсобености на sniffing атаките и как да се предпазим от тях
Особености на sniffing атаките и как да се предпазим от тяхUniversity of Economics - Varna
 
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...radopetrov
 
с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)ssalieva
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastIvailo Jelqzkov
 
методи за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниметоди за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниkgospodinova89
 
Kурсова работа БЗКСП ралица христова
Kурсова работа БЗКСП ралица христоваKурсова работа БЗКСП ралица христова
Kурсова работа БЗКСП ралица христоваRalica Hristova
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниpinf_117075
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниd_e_n_i_8_7
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниpinf_117075
 
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикация
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикацияТема:Методи за криптиране и декриптиране на данни, индефикация и автентикация
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикацияГеорги Карагеоргиев
 

What's hot (19)

Nadezhda Stavreva
Nadezhda StavrevaNadezhda Stavreva
Nadezhda Stavreva
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данни
 
Web Security Intro
Web Security IntroWeb Security Intro
Web Security Intro
 
Big data security word file 116941
Big data security   word file 116941Big data security   word file 116941
Big data security word file 116941
 
Особености на sniffing атаките и как да се предпазим от тях
Особености на sniffing атаките и как да се предпазим от тяхОсобености на sniffing атаките и как да се предпазим от тях
Особености на sniffing атаките и как да се предпазим от тях
 
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
 
с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)с- ми_за-откриване_на_атаки(ids)
с- ми_за-откриване_на_атаки(ids)
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-last
 
методи за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниметоди за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данни
 
10724 vpn
10724 vpn10724 vpn
10724 vpn
 
wifi-security 2
wifi-security 2wifi-security 2
wifi-security 2
 
Open Free Security Software
Open Free Security SoftwareOpen Free Security Software
Open Free Security Software
 
Kурсова работа БЗКСП ралица христова
Kурсова работа БЗКСП ралица христоваKурсова работа БЗКСП ралица христова
Kурсова работа БЗКСП ралица христова
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данни
 
Презентация - sniffing атаки
Презентация - sniffing атакиПрезентация - sniffing атаки
Презентация - sniffing атаки
 
4684
46844684
4684
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данни
 
Методи за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данниМетоди за криптиране и декриптиране на данни
Методи за криптиране и декриптиране на данни
 
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикация
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикацияТема:Методи за криптиране и декриптиране на данни, индефикация и автентикация
Тема:Методи за криптиране и декриптиране на данни, индефикация и автентикация
 

Similar to Advanced Encryption Standard

методи за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниметоди за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниGeorgi Georgiev
 
Методи и средства за филтриране на трафика в Lan мрежи
Методи и средства за филтриране на трафика в Lan мрежиМетоди и средства за филтриране на трафика в Lan мрежи
Методи и средства за филтриране на трафика в Lan мрежиDido Viktorov
 
Lekciq 6 new (2ch)
Lekciq 6   new (2ch)Lekciq 6   new (2ch)
Lekciq 6 new (2ch)slyone
 
Методи за криптиране и декриптиране
Методи за криптиране и декриптиранеМетоди за криптиране и декриптиране
Методи за криптиране и декриптиранеAngel Blagyov
 
Безопасност и защита на VPN
Безопасност и защита на VPNБезопасност и защита на VPN
Безопасност и защита на VPNEma Angelova
 
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка YiiСигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка YiiIlko Kacharov
 
Симетрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информацияСиметрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информацияKaloyan Kosev
 
курсова 91582
курсова 91582курсова 91582
курсова 91582ailiev
 
Сравнителна характеристика на криптографски алгоритми
Сравнителна характеристика на криптографски алгоритмиСравнителна характеристика на криптографски алгоритми
Сравнителна характеристика на криптографски алгоритмиВаня Иванова
 
Inrusion Detection Systems Referat
Inrusion Detection Systems ReferatInrusion Detection Systems Referat
Inrusion Detection Systems Referatradoatanasov
 
(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2Zdravko Stoychev, CISM, CRISC
 
Безопасност и защита на VPN мрежи
Безопасност и защита на  VPN мрежиБезопасност и защита на  VPN мрежи
Безопасност и защита на VPN мрежиmApTu
 

Similar to Advanced Encryption Standard (17)

методи за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данниметоди за криптиране и декриптиране на данни
методи за криптиране и декриптиране на данни
 
Методи и средства за филтриране на трафика в Lan мрежи
Методи и средства за филтриране на трафика в Lan мрежиМетоди и средства за филтриране на трафика в Lan мрежи
Методи и средства за филтриране на трафика в Lan мрежи
 
Advanced Encryption Standard
Advanced Encryption StandardAdvanced Encryption Standard
Advanced Encryption Standard
 
Lekciq 6 new (2ch)
Lekciq 6   new (2ch)Lekciq 6   new (2ch)
Lekciq 6 new (2ch)
 
Методи за криптиране и декриптиране
Методи за криптиране и декриптиранеМетоди за криптиране и декриптиране
Методи за криптиране и декриптиране
 
Vpn mreji 105227
Vpn mreji 105227Vpn mreji 105227
Vpn mreji 105227
 
Безопасност и защита на VPN
Безопасност и защита на VPNБезопасност и защита на VPN
Безопасност и защита на VPN
 
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка YiiСигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
 
Симетрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информацияСиметрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информация
 
курсова 91582
курсова 91582курсова 91582
курсова 91582
 
Сравнителна характеристика на криптографски алгоритми
Сравнителна характеристика на криптографски алгоритмиСравнителна характеристика на криптографски алгоритми
Сравнителна характеристика на криптографски алгоритми
 
Inrusion Detection Systems Referat
Inrusion Detection Systems ReferatInrusion Detection Systems Referat
Inrusion Detection Systems Referat
 
(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2(You better) change focus, 2015 finance ict & isaca v2
(You better) change focus, 2015 finance ict & isaca v2
 
VPN Security
VPN SecurityVPN Security
VPN Security
 
Netsec
NetsecNetsec
Netsec
 
Безопасност и защита на VPN мрежи
Безопасност и защита на  VPN мрежиБезопасност и защита на  VPN мрежи
Безопасност и защита на VPN мрежи
 
Vpn mreji 105227
Vpn mreji 105227Vpn mreji 105227
Vpn mreji 105227
 

Advanced Encryption Standard

  • 1. Катедра “Информатика” Реферат на тема: Advanced Encryption Standard – същност и практическо приложение по дисциплината “Безопасност и защита на компютърни системи и приложения” Изготвила: Елица Христова Захариева СИН 400464 10 група Спец. “ИТ иновации в бизнеса” Фак. Номер 90919 Проверили: ДОЦ.Д-Р СТЕФАН ДРАЖЕВ АС. РАДКА В. НАЧЕВА
  • 2. 2 Съдържание Увод ...................................................................................................................................................................2 I. Същност на Advanced Encryption Standard .............................................................................................3 II. Практическо приложение на Advanced Encryption Standard ................................................................7 1.AES решения в индустрията......................................................................................................................7 2.AES в защитата на безжични мрежи ........................................................................................................8 3.Поглед върху приложението с езици за програмиране ........................................................................9 Заключение.......................................................................................................................................................9 Използвана литература.................................................................................................................................10 Приложения....................................................................................................................................................11 . . . Увод Настоящата разработка има за цел да запознае читателя със стандарта Advanced En- cryption Standard. За постигане на целта ще бъдат изпълнени две задачи: 1) запознаване със същността на стандарта, включително технически и математически характеристики, история на въвеждане, някои предимства и недостатъци, криптиращ алгоритъм; 2) запознаване с практическото приложение на стандарта, за да се изясни ролята му в различни сфери в ежедневието. Става ясно, че обект на реферата е стандартът Advanced Encryption Standard, а предмет на анализ са същността и приложението му в практиката. Живеем в дните на все по-бурното внедряване на високотехнологични решения в чо- вешкия бит, отдалеченото съхраняване на файлове за мултиканален достъп, все по-масовото и доброволно споделяне на информация, но и на гениалните т.нар. „черни” хакери и злона- мерени разработчици. Нуждата от защита е неоспорима. Именно поради тези причини счи- таме, че разработката не е лишена от актуалност и значимост, тъй като касае най-добрият и непробиваем до този момент стандарт за шифриране . Криптографията се използва, за да се гарантира, че съдържанието на съобщенията се транспортира конфиденциално и няма да бъде променено1 . Дефинира се като „наука за тай- ното писане”. Процесът на криптиране е стар, колкото и самото писане. Смята се, че първите текстове, в които се откриват кродиращи техники, са от преди 4000 години при древните египтяни. Йероглифни надписи върху гроба на благородника Khnumhotep II са съставени от необикновени символи, за да прикриват истинското значение. 1 AbuTaha, М., M. Farajallah, R. Tahboub, M. Odeh. Survey Paper: Cryptography Is The Science Of Information Security. International Journal of Computer Science and Security (IJCSS), Volume (5) : Issue (3) : 2011. Стр. 300
  • 3. 3 I. Същност на Advanced Encryption Standard Advanced Encryption Standard (AES)2 , известен още като метод на Рейндал, е подобрен стандарт за шифриране. Този стандарт се използва за замяна на оригиналния DES (Data Encryption Standard)3 . AES прилага алгоритъма на Рейндал върху матрица, съдържаща байто- вете на оригиналното съобщение. AES използва шифриращи ключове със 128, 192 и 256 би- тови дължини. Въпросната дължина определя броя повторения на криптирането, необходими за превръщането на обикновения текст в шифър. Повторенията се проявяват в цикли, като ключовете с дължина 128 бита използват 10 цикъла, 192 битовите – 12 цикъла, а 256 битови- те – 14 цикъла. Всеки цикъл се състои от няколко етапа от 5 идентични процедури. Една от последните зависи от т.нар. криптиращ ключ, който впоследствие може да възстанови ори- гиналния текст чрез прилагане на набор от обратни процедури. Националният институт по стандарти и технологии на Съединените щати (NIST) е поставен пред задачата да намери нов криприращ алгоритъм, за да замени старите, които вече се смятат за несигурни4 . Петнайсет конкурентни проекта са обект на предварителен анализ от Световната криптографска общност, включително Агенцията за национална сигур- ност (NSA). NIST спира избора си на Rijndael, тъй като той съчетава в себе си простота и висока производителност. Advanced Encryption Standard е приет през 2002 г. от американския Национален институт за стандарти и технология. AES прилага симетричен алгоритъм за блоково криптиране5 . Основава се на permuta- tions6,7 и substitutions8 . Има висока скорост и ниски изисквания към RAM-паметта, затова работи добре на голямо разнообразие от софтуер, започвайки от 8 битови смарт карти. Според правителството на САЩ стандартът AES може да защити дори класифицира- на информация до ниво тайни. 192 и 256 битовите ключове могат да защитят и строго сек- ретна информация. NIST потвърждава голямата сигурност на AES чрез астрономически числа - 128 битов ключ осигурява 340*1036 възможни комбинации, а 256 битовия ключ увеличава това число до 11*1076. За сравнение, алгоритъмът DES дава общо число на комбинациите 72*1015. За тяхното разбиване на специално построената машина “DES 2 http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септември 2013 3 http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard, стр. 1 4 http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014 5 http://www.slideshare.net/kgospodinova89/ss-32125546, 10 Март 2014, слайд 12 6 Григорова, Ася. Проектиране на система за защита на бази данни за ресурсно пла-ниране чрез пароли и раз- лични нива на достъп. Дип. София. 2008, стр. 26 7 Permutations - пермутация, изменение на реда на данните. 8 Substitutions - заместване на един блок от данни с друг.
  • 4. 4 Cracker” й трябват няколко часа. Дори да можеше да го извърши за 1 секунда, за разбиването на 128 битов AES ключ машината би изразходвала 149 трилиона години9 . Единствените успешни атаки срещу стандарта AES са били от страничен канал10 сре- щу открити слабости във внедряването или управлението на ключа на някои AES-базирани криптиращи продукти11 . Браузърът BEAST, използван срещу TLS v1.0 протокол е добър пример - TLS може да използва AES за криптиране на данни, но поради информацията, която TLS излага, нападателите успяват да предскажат инициализиращия векторен блок, използван в началото на процеса на криптиране. Различни изследователи публикуват атаки срещу версиите на Advanced Encryption Standard с по-малко цикли. Доклад, публикуван през 2011 г. показва, че използвайки техника, наречена biclique атака, може да се възстановят AES ключове по-бързо от атака от типа „гру- ба сила“ с между три и пет пъти, в зависимост от версията на шифъра. Дори и тази атака, обаче, не застрашават практическото използване на AES поради високата му изчислителна сложност. Шифърът е напълно самостоятелен12 – той не използва никакви части заимствани от други шифри, има отчетлива и ясна структура, тоест неговата устойчивост не се основава на сложни и не напълно разбираеми преобразувания. Последното свойство също намялава вероятността за съществуване на някакви “тайни проходи”. За недостатък на AES може да се счита, че режимът на разшифриране се различава от режима на шифриране не само по последователността на функциите, но и самите функции се различават със своите параметри. Това се отразява на ефективността на апаратната реализация на шифъра13 . Кръгът на цикъла на AES криптирането (с изключение на финалния кръг отвън), или 1 рунд, се състои от четири стъпки14 . Mеждинните резултати от преобразуванията, които се изпълняват в рамките на криптиращия алгоритъм, се наричат състояния (State)15 . Състояние- то може да се представи във вид на правоъгълен масив от байтове (Фигура 1). 9 Григорова, Ася. Проектиране…, стр. 36 10 Aтаките от страничен канал не използват „груба сила“ или теоретични слабости, за да разбият шифъра, а по- скоро използват пропуски в начина, по който той е бил изпълнен. 11 http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014 12 Григорова, Ася. Проектиране…, стр. 53 13 Пак там. 14 http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard 15 Григорова, Ася. Проектиране…, стр. 36
  • 5. 5 Фигура 1: State (състояние). I. AddRoundKey (добавяне на рундов ключ) - преобразувание, което съдържа добавя- не чрез XOR16 на рундов ключ към състоянието. Рундовият ключ се изработва от ключа за шифриране чрез алгоритъм за изработка на ключове (key schedule) (Фигура 2). Фигура 2: AddRoundKey II. SubBytes (замяна на байтове) - замяна чрез нелинейна функция, използвайки спра- вочни таблици, за да превърнат всеки байт в кореспондиращ байт (Фигура 3). 16 Exclusive or (XOR) - логическа операция, която извежда „вярно“ винаги, когато двата входа се различават (единият е верен, а другият е грешен).
  • 6. 6 Фигура 3: SubBytes III. ShiftRows (преместване/отместване на редовете) - всеки ред на матрицата пре- търпява циклична размяна. Последните 3 реда на състоянието циклично се отместват наляво на различно число байтове. Ред 1 се придвижва на C1 байт, ред 2 - на C2 байта, ред 3 - на C3 байта (Фигура 4). Фигура 4: ShiftRows IV. MixColumns (разбъркване/смесване на стълбовете) - до пълното разбъркване на всяка колона. Тази процедура използва линейно преобразуване, докато разбърка всичките четири байта в реда (Фигура 5). Фигура 5: IV. MixColumns В матричен вид изглежда така (c е номер на стълба в масива State) (Фигура 6). Фигура 6: MixColumns, матричен вид
  • 7. 7 II. Практическо приложение на Advanced Encryption Standard AES се използва в много протоколи като SSL/TLS и може да бъде намерен в най- модерните приложения и устройства, нуждаещи се от криптираща функционалност17 . 1. AES решения в индустрията 18 Поради широката гама от приложения, които Rijndael алгоритъмът може да поддържа, в момента са налични четири различни версии на Rijndael-базирани продукти: 1) Стандартна - осигурява скорости на трансфер до 500 Mbits/сек и е подходящ за приложения като VoIP19 . 2) Компактна - перфектна за безжични приложения като PDA 20 устройства и мобилни телефони, където минимизирането на енергия и място са от решаващо значение. 3) Бърза - достига до 2000 Mbits/сек, подходяща за VPN 21 продукти за сигурност, включени в широколентови суичове, рутери, защитни стени и концентратори за отдалечен достъп. 4) Много бърза - за приложения със скорост по-висока от 2000 Mbits/сек. Фигура 7: Пример за защитена VoIP система, използвайки AES Фигура 8: Защитена безжична видео-комуникационна с-ма с използване на бързи AES решения. 17 http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014 18 http://www.eetimes.com/document.asp?doc_id=1275908, 10 Ноември 2001 19 Voice Over IP (VoIP) е методология и набор от технологии за доставка на гласови съобщения и мултимедийни сесии по интернет протокол (IP) мрежи като Интернет. 20 Персонален цифров помощник (PDA) /преносим компютър/ помощник на личните данни е мобилно устройс- тво, което функционира като мениджър на лична информация. 21 Виртуална частна мрежа (VPN) разпростира частна мрежа в публична мрежа, каквато е Интернет.
  • 8. 8 2. AES в защитата на безжични мрежи Настройването на шифроването на wi-fi рутера е едно от най-важните неща, които мо- гат да се направят за сигурността на мрежата22 , но всеки рутер предлага различни опции - WPA2-PSK23 (TKIP), WPA2-PSK (AES) и WPA2-PSK (TKIP/AES) и др. Погрешната настрой- ка може да доведе до по-бавна и незащитена връзка24 . WPA използва TKIP криптиране, а WPA2 - AES, но може да се използва TKIP за об- ратна съвместимост (така че би приело WPA връзки)25 . TKIP26 означава "временен ключов интегритет протокол” и представлява временен криптиращ протокол, представен заедно с WAP, за да замени прекалено несигурното WEP криптиране. TKIP всъщност е доста сходен с WEP и вече не се счита за сигурен. В днешно време той се отхвърля и не бива да се използва. По-старите устройства не поддържат AES, но всички, произведени след 2006 би трябвало да го поддържат. Когато се настройва рутер да използва WPA2, обикновено има възможност да се из- ползва AES или TKIP + AES27 . Когато рутерът е настроен на WPA2 с TKIP + AES, това зна- чи, че мрежови устройства, които могат да използват WPA2, ще се свържат с WPA2, а мре- жови устройства, ползващи само WPA, ще се свържат с WPA. Паролата и за двете ще бъде еднаква. Тази опция позволява на потребителите лесно да преминат от WPA да WPA2. Ре- жимът понякога се нарича PSK2-смесен режим. За да се настрои рутерът да използва само WPA2, се избира WPA2 с AES. Фигура 9: Примерен работен екран при конфигурация на частна wi-fi мрежа 22 http://lifehacker.com/the-difference-between-wi-fi-security-protocols-wpa2-a-1672256222, 17 Декември 2014 23 PSK е предварително споделен ключ и всъщност представлява паролата на криптиране. Това го отличава от WPA, който използва RADIUS сървър, за да раздава уникални ключове за големи корпоративни или държавни Wi-Fi мрежи. 24 http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014 25 http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331 26 http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014 27 http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331
  • 9. 9 Първите 4 режима28 (вж. Фигура 9) днес се смятат за несигурни и не бива да се изби- рат. WPA-PSK (AES) не е много логичен, тъй като устройства, които поддържат AES почти винаги ще поддържат WPA2, а устройства, които изискват WPA1 много рядко поддържат AES криптиране. WPA2-PSK (TKIP) не е защитен и е подходящ само ако имате по-стари ус- тройства, които не могат да се свързват с WPA2-PSK (AES) мрежа. WPA2-PSK (AES) е най- сигурният избор. Понякога, в зависимост от рутера, избирането на WPA2 може да не е доста- тъчно добро. Въпреки всичко, можем да изберем него и да върнем настройките обратно, ако устройството спре да работи. Последният режим е препоръчителен и поддържа всички видо- ве устройства и криптиране. Въпреки това гарантира, че атакуващият може да разбие мрежа- та чрез пробив в схемата за криптиране “най-малкия общ знаменател”. Много съвременни устройства, поддържащи 802.11n и по-бързи стандарти, ще се за- бавят до 54Mbps29 , ако използвате опция за по-стари криптирания като WEP и WPA/TKIP сигурност, избрана, за да съответства и на по-стари спецификации. 3. Поглед върху приложението с езици за програмиране AES намира широко приложение в разработването на приложения, сайтове и др. По- ради възможността си за импортиране чрез различни езици за програмиране - Java Script, C#.NET, Java. Съгласно поставените в точка „Въведение” ограничения на изследването, те няма да бъдат разглеждани подробно, но ще бъдат приложени в точка „Приложения” (вж. Приложение 1, 2 и 3). Там са илюстрирани примерна реализация на Java Script и употреба в C#.NET и Java. Заключение Стандартът AES представлява комбинация от прости, но немалобройни етапи на шифриране на информация. Това го прави високо производителен и едновременно с това изключително надежден. В наши дни той е най-сигурният начин за кодиране на данни и фак- тически не е станал жертва на злонамерена атака, особено в по-високобитовите си версии. Настоящият реферат наблегна върху факта, че AES неизменно присъства в ежедне- вието на всеки потребител на компютърни устройства и интернет. Стандартът е разработен в няколко версии, които го правят приложим за всякакви цели и технологични решения. Пора- ди некомпрометираното му действие и нарастващите нужди на обществото и се очаква упот- ребата му да расте и за напред. Едно бъдещо по-задълбочено изследване в областта би могло да наблегне на конк- ретни практики за прилагане на AES в домашни условия. Подобна информация се постарах- 28 http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 2014 29 http://www.speedguide.net/faq/wpa2-tkip-or-aes-encryption-331
  • 10. 10 ме да включим в подточка II. Такава разработка, наподобяваща практическо ръководство, би могла да бъде полезна на всеки заинтересован за това как да внедри AES при програмиране- то на приложение, как да криптира собствените си съобщения, как да защити преносимите си устройства и др. Има понятие „цена на декриптиране” – „декриптирането е неизбежно. Всичко, което програмистът може да направи, е да увеличи цената (време, пари и изчисления) за врага.”30 Можем аргументирано да твърдим, че AES увеличава многократно тази цена, допринасяйки непрекъснато за защитата на безброй потребители навсякъде по света. Използвана литература Григорова, А. Проектиране на система за защита на бази данни за ре-сурсно планиране чрез пароли и различни нива на достъп. Дип. София. 2008 Господинова, К. Методи за криптиране и декриптиране на данни. http://www.slideshare.net/kgospodinova89/ss-32125546, 10 Март 2014, слайд 12 AbuTaha, М., M. Farajallah, R. Tahboub, M. Odeh. Survey Paper: Cryptography Is The Science Of Information Security. International Journal of Computer Science and Security (IJCSS), Volume (5) : Issue (3) : 2011. Стр. 300 Hoffman, C. Wi-Fi Security: Should You Use WPA2-AES, WPA2-TKIP, or Both? http://www.howtogeek.com/204697/wi-fi-security-should-you-use-wpa2-aes-wpa2-tkip-or-both/, 12 Дек. 2014 Nekoogar, F. Digital Cryptography: Rijndael Encryption and AES Applications. http://www.eetimes.com/document.asp?doc_id=1275908, 10 Ноември 2001 Ohri, A. Random Thoughts on Cryptography. http://decisionstats.com/2015/04/14/random- thoughts-on-cryptography/, 14 Април 2015 Pinola, M. The Difference Between Wi-Fi Security Protocols: WPA2-AES vs WPA2-TKIP. http://lifehacker.com/the-difference-between-wi-fi-security-protocols-wpa2-a-1672256222, 17 Дек. 2014 Rouse, M. Advanced Encryption Standard (AES). http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard, Ноември 2014 Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септември 2013 Advanced Encryption Standard. World encyclopedic knowledge. http://www.swewe.net/word_show.htm/?1448347_1&Advanced_Encryption_Standard WPA2 TKIP or AES encryption ?. Speed Guide. http://www.speedguide.net/faq/wpa2-tkip-or-aes- encryption-331 30 Ohri, A. Random Thoughts on Cryptography. http://decisionstats.com/2015/04/14/random-thoughts-on- cryptography/, 14 Април 2015
  • 11. 11 Приложения Приложение 1 - Примерна реализация на Java Script31 /** * @source http://people.eku.edu/styere/Encrypt/JS-AES.html#subbytes */ // функция за криптиране function aes_encrypt(message,crypt_key) { var w = new Array( 44 );// деклариране на key shedule var state = new Array( 16 );// деклариране на state var round; msg=get_value(message,true); key=get_value(crypt_key,false); // генериране на "round" ключове w = key_expand( key ); state = transpose( msg ); state = AddRoundKey(state, w, 0); for( round=1; round<10; round++ ) { state = SubBytes(state, S_enc); state = ShiftRows(state); state = MixColumns(state); state = AddRoundKey(state, w, round*4*4); } SubBytes(state, S_enc); ShiftRows(state); AddRoundKey(state, w, 10*4*4); // обработване на изход AES_output = transpose( state ); return format_AES_output(); } //функция за генериране на "round" ключове function key_expand( key ) { var temp = new Array(4); var i, j; var w = new Array( 4*11 ); for( i=0; i<16; i++ ) { w[i] = key[i]; } i = 4; while ( i < 44 ) { for( j=0; j<4; j++ ) temp[j] = w[(i-1)*4+j]; if ( i % 4 == 0) { temp = RotWord( temp ); temp = SubWord( temp ); temp[0] ^= Rcon( i>>>2 ); } 31 Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв- ри 2013
  • 12. 12 // word = word ^ temp for( j=0; j<4; j++ ) w[i*4+j] = w[(i-4)*4+j] ^ temp[j]; i++; } return w; } // смесване на "round" ключ с state function AddRoundKey( state, w, base ) { var col; for( col=0; col<4; col++ ) { state[I(0,col)] ^= w[base+col*4]; state[I(1,col)] ^= w[base+col*4+1]; state[I(2,col)] ^= w[base+col*4+2]; state[I(3,col)] ^= w[base+col*4+3]; } return state; } // функция за S-Box размяна function SubBytes(state, Sbox) { var i; for( i=0; i<16; i++ ) state[i] = Sbox[ state[i] ]; return state; } ... Приложение 2 - Употреба в C#.NET 32 using System; using System.IO; using System.Security.Cryptography; namespace Aes_Example { class AesExample { public static void Main() { try { string original = "Here is some data to encrypt!"; // Създаване на нова инстанция на класа Aes //Създава се нов ключ и инициализиращ вектор(IV). using (Aes myAes = Aes.Create()) { //Криптиране на съобщението в масив от байтове. byte[] encrypted = EncryptStringToBytes_Aes(original,myAes.Key, myAes.IV); //Декриптиране на байтовете в стринг. 32 Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв- ри 2013
  • 13. 13 string roundtrip = DecryptStringFromBytes_Aes(encrypted,myAes.Key, myAes.IV); //Отпечатване на оригиналното съобщение и декриптираното съобщение за сравнение. Console.WriteLine("Original: {0}", original); Console.WriteLine("Round Trip: {0}", roundtrip); } } catch (Exception e)//Отпечатване на грешки. { Console.WriteLine("Error: {0}", e.Message); } } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key,byte[] IV) { //При некоректно зададени параметри се хвърля изключение, като се показва причинителят. if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("Key"); byte[] encrypted; // Създаване на AES обект с посоченият ключ и инициализиращ вектор. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Създаване на енкриптор за извършване на трансформации. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); //Създаване на поток за самото криптиране. using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { //Записване на всичко получено в потока swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } //Методът връща потокът с криптираното съобщение като резултат. return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) {
  • 14. 14 //При некоректно зададени параметри се хвърля изключение, като се показва причинителят. if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("Key"); //Деклариране на низ, който ще съдържа декриптираното съобщение string plaintext = null; // Създаване на AES обект с посоченият ключ и инициализиращ вектор. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Създаване на декриптор за извършване на трансформации. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); //Създаване на поток за декриптирането. using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { //Низът за декриптираното съобщение се запълва с декриптираните байтове от потока. plaintext = srDecrypt.ReadToEnd(); } } } } //Методът връща низ със декриптирано съобщение. return plaintext; } } }
  • 15. 15 Приложение 3 - Употреба в Java 33 import java.security.MessageDigest; import java.util.Arrays; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AES { static String IV = "AAAAAAAAAAAAAAAA"; static String plaintext = "test text 123000"; /*Note null padding*/ static String encryptionKey = "0123456789abcdef"; public static void main(String [] args) { try { System.out.println("==Java=="); System.out.println("plain: " + plaintext); byte[] cipher = encrypt(plaintext, encryptionKey); System.out.print("cipher: "); for (int i=0; i<cipher.length; i++) System.out.print(new Integer(cipher[i])+" "); System.out.println(""); String decrypted = decrypt(cipher, encryptionKey); System.out.println("decrypt: " + decrypted); } catch (Exception e) { e.printStackTrace(); } } public static byte[] encrypt(String plainText, String encryptionKey) throws Exception { Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE"); SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES"); cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF- 8"))); return cipher.doFinal(plainText.getBytes("UTF-8")); } public static String decrypt(byte[] cipherText, String encryptionKey) throws Exception{ Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE"); SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES"); cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF- 8"))); return new String(cipher.doFinal(cipherText),"UTF-8"); } } 33 Advanced Encryption Standard. Wikipedia. http://bg.wikipedia.org/wiki/Advanced_Encryption_Standard, Септемв- ри 2013