Advanced Encryption Standard

## Advanced Encryption Standart-ийн үүсэл
:Advanced Encryption Standart (AES) алгоритмыг өөрөөр Rijandeal гэж нэрлэдэг. 1997 онд NIST нийтэд эхлэлийг нь тавьж Америкийн засгийн газрын хэрэглээнд баталгаат криптосистем болгон хөгжүүлсэн. AES алгоритмыг Joan Daemen, Vincent Rijmen гэсэн Belgain криптографикчид анх гаргаж ирсэн. АES aлгоритм нь дундын түлхүүрийн алгоритм ба блок шифрлэлтийг ашигладаг. Бүтэц: Блок-128 бит түлхүүр 128, 192, 256 бит Криптоанализ: боломжит довтолгоонууд нь тооцооллын хувьд биелээгүй. AES-128 хувьд математик графын онол хэрэглэн 2126 нарийвчлалтай тооцооллоор түлхүүрийг олох боломжтой. Дундын түлхүүртэй алгоритмуудаас хамгийн их хэрэглэгдэг нь юм. Ихэнхдээ нууцлалын алгоритм дээр ашигдагддаг. Үүний гол жишээ нь утасгүй сүлжээ болох WPA2 дээр ашигладаг байгаа.
## Дундын түлхүүртэй нууцлалын алгоритм
:Дундын түлхүүртэй алгоритмууд цаг бага зарцуулдаг, нууцлалаараа илүү байдаг. Хамгийн том асуудал нь дундын түлхүүрээ харилцагч хоёр талд хэрхэн хүргэх вэ гэдэгт оршино. Мэдээллийг нууцлах, хамгаалах гэсэн хоёр үндсэн чиглэл байдаг. Нууцлах гэдэг нь мэссэжийг шифрлэх буюу уншигдахгүй хэлбэр рүү шилжүүлэх, харин хамгаалах нь мэссэжийг анхны хэлбэрээс өөрчлөгдөөгүй гэдгийг баталгаажуулахыг хэлдэг. Хаш функцууд бол баталгаажуулах үйлдэлд оролцдог гол алгоритмууд юм. Өөрөөр хэлбэл их хэмжээний өгөгдлийг баталгаажуулах тухайн өгөгдлөөс урган гарч ирсэн жижигхэн дагалдагч код үүсгэхийн тулд хаш функцыг ашигладаг гэсэн үг. Харин нууцлалын алгоритмуудын үр дүнд хэзээч эх өгөгдлөөсөө богино хэмжээтэй нууц код гаргахгүй. Энэ нь эх өгөгдөл буцаад сэргэх боломжтойг баталж байгаа юм. Нууцлалын алгоритм дундын түлхүүртэй болон нийтийн түлхүүрийн гэсэн хоёр янз байдаг. Дундын түлхүүртэй алгоритм (Shared Key Algorithm) нууцлах болон тайлах аль ч тохиолдолд нэг л түлхүүр ашигладаг бол нийтийн түлхүүрийн алгоритм түлхүүрийн хос ашигладаг. Нийтийн түлхүүрээр нууцлаад хувийн түлхүүрээр тайлдаг.
## Нийтийн түлхүүртэй нууцлалын алгоритм
Нийтийн түлхүүрийг харилцагч бүр мэддэг байх ба хувийн түлхүүрийг ганцхан өөртөө хадгалах ёстой. Нийтийн болон хувийн түлхүүрүүд нь бие биенээсээ харилцан хамааралтай хосолмол шинжтэй байдаг. Аливаа нэг хосын хувийн түлхүүр өөр нэг хосын нийтийн түлхүүртэй зохицон ажиллах боломжгүй. Нийтийн түлхүүрийг бусдад түгээхдээ шууд файл хэлбэрээр дамжуулах, нийтийн түлхүүр хадгалах сервер дээр байршуулах зэрэг аргууд ашигладаг. Хувийн түлхүүрийг бол зөвхөн өөрийн компьютерт хадгална.
## AES алгоритмын үндсэн үйлдлүүд
128 битийн мэдээгээ 8, 8 битээр салган 4x4 хүснэгтийг үүсгэдэг
Түлхүүр нь үгнүүдийн жагсаалтаас бүрддэг
9/11/13 циклтэй ба доорх төлөвүүдээр дамждаг:
#Файлын байрлуулалт (1 S-box дахь байт болгон ашиглагдана) 
#Мөр шилжүүлэх (групп байтыг баганаар нь солино) 
#Баганыг холих
#Циклийн түлхүүрийг нэмэх(Түлхүүрийн материалыг XOR функц ашиглан нэмэх)
#Түлхүүр ба оролтын өгөгдлийг холих
### Байтын орлуулалт
#Байт болгоны байрлалыг хялбархан солино
#16x16 байтын хүснэгт ашиглан бүх 8 бит утгыг байрлуулна
#Тухайн мөр багадах мэдээлэл солигдоно
#S-box нь GF(28) функцыг бүтцээр зохион байгуудагдана
#эвдэгдэж буй бүх халдлагаас хамгаалагдсан
### Мөр шилжүүлэх
Тойргон шилжүүлэлтийг ашиглана
*1-р мөрийн шилжүүлэхгүй
*2–р мөрийн байтуудыг зүүн тийш 1 байт шилжүүлнэ
*3–р мөрийн байтуудыг зүүн тийш 2 байт шилжүүлнэ
*4–р мөрийн байтуудыг зүүн тийш 3 байт шилжүүлнэ
*Тайлах үйлдлийг хийхдээ баруун тийш шилжүүлэх үйлдлийг хийнэ
### Баганыг холих
#Багана бүр тус тусдаа холигдоно
#Багана болгоны харгалзаа байтууд хоорондоо солигдоно
#GF(28)матрицтай үржих үйлдлийг хийх ба GF(28) нь m(x)=x8+x4+x3+x+1 энэ функцыг ашиглана
### Циклийн түлхүүрийг нэмэх
#128 бит XOR үйлдлийг циклийн түлхүүрт ашиглана
#Дахин баганууд дээр ажиллах үйлдлийг гүйцэтгэнэ
#Тайлах үйлдэл хийх бол эсрэгээр гүйцэтгэнэ
#XOR үйлдэл нь эсрэг шинж чанарыг агуулдаг
#Байж болох энгийнээр зохион байгуулах
## AES тайлах үйлдэл
#AES тайлах үйлдэл нь хэдий эсрэг үйлдэл боловч шифрлэх үйлдэлтэйгээ яг ижил биш
#Гэхдээ шифрлэлтэнд ашиглагддаг нууцлалыг механизын эсрэг үйлдлийг ашигладаг
*Алхам болгон нь эсрэг үйлдэл байдаг
*Түлхүүрийг хуваарилалт нь өөр

## Холбоос
*https://mn.wikipedia.org/wiki/RSA_(алгоритм)
*http://basiid.blogspot.com/p/blog-page.html
*http://crypto.mn/rc-6-шифр-алгоритм-encryption-ы-тухай/
*https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

Ангилал:Блок шифрлэлт