RC-6
RC-6 (Rivest Cipher) нь өмнөх RC-5 дээр суурилсан нууцлалын блок шифр алгоритм (block encryption algorithm). Анх RC-6 алгоритмыг Америкийн Үндэсний стандарчлалын газраас 1997 онд зарлагдсан Advanced Encryption Standard (AES) уралдаанд зориулан RSA лабораторт 1998 онд зохиосон. Уг уралдааны сүүлийн шатанд шалгарсан 5 алгоритм (Rijndael, Mars, Serpent, Twofish, RC-6)-ын нэг юм. Хэдийгээр уралдаанд Rijndeal алгоритм ялж AES гэж нэрлэгдсэнээр стандарт болон гарсан ч RC-6 алгоритм нь энгийн шинж чанар, хурдан гүйцэтгэлээрээ өнөөг хүртэл хэрэглээтэй, тодорхой аюулгүй байдлыг хангасан хэвээр байна. Ерөнхий бүтэц, үйлдэл нь RC5-тай ойролцоо. RC6 нь 2 RC5 зэрэг ажиллаж байгаа юм шиг байх ба RC5-д хийгддэггүй зарим үйлдлүүд нэмэгдсэн. RC6 алгоритмийг Microsoft Office 2002, 2003 – файлын нууц үг хамгаалалт, мөн CryptoTools болон BestCrypt зэрэг нууцлалын програм хангамжуудад ашигладаг.
Блокын хэмжээ: 128 бит ( мэдээллийг 128 бит блок хэсгүүдэд хувааж ажилладаг гэсэн үг, энэ нь 32, 64 бит байж болно. Гэхдээ нийтийн хэрэглээнд 128 бит блок хэмжэээтэйгээр ажилладаг.) Түлхүүрийн хэмжээ: 128, 192, 256 бит (ерөнхийдөө, алгоритмын бүтцийн хувьд 2048 бит хүртэлх хэмжээтэй түлхүүрийг сонгох боломжтой байдлаар зохиогдсон.) Үеийн тоо: 20 үе. (Нэг блок буюу 128 бит мэдээллийг 20 үе (раунд) алхмаар шифрлэлт /encryption/ гүйцэтгэдэг.) Блок алгоритмуудын үйлдлийн нийтлэг горимуудыг /ECB, CBC, OFB, CFB, CTR, G-CTR/ хэрэглэдэг. CTR нь блок шифр алгоритмын аюулгүй горимуудын нэг юм. RC-6 алгоритмын хувьд CryptoTools болон Bestcrypt зэрэг шифрлэгч програм хангамжуудад CTR, XTS, LRW горимуудыг түлхүү ашигладаг.
Шифрлэлт хийх болон тайлах үйл явц
[засварлах | кодоор засварлах]Шифрлэлт (Encryption): RC-6 нэг үеийн бүтэц. (20 үе ижил зарчмаар гүйцэтгэнэ)
// Оролт: Шифрлэгдэх мэдээлэл нь 4 w-bit оролтын регистрүүдэд (A B C D) байршина
// r - үеийн тоо
// w-bit үеийн түлхүүрүүд S[0, ... , 2r + 3]
//
// Гаралт: Шифрлэгдсэн мэдээлэл A, B, C, D регистрүүдэд хадгалагдна.
//
// '''Шифрлэх үйл явц:'''
B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
t = (B*(2B + 1)) <<< lg w
u = (D*(2D + 1)) <<< lg w
A = ((A ⊕ t) <<< u) + S[2i]
C = ((C ⊕ u) <<< t) + S[2i + 1]
(A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]
// '''Тайлах үйл явц:'''
C = C - S[2r + 3]
A = A - S[2r + 2]
for i = r downto 1 do
{
(A, B, C, D) = (D, A, B, C)
u = (D*(2D + 1)) <<< lg w
t = (B*(2B + 1)) <<< lg w
C = ((C - S[2i + 1]) >>> t) ⊕ u
A = ((A - S[2i]) >>> u) ⊕ t
}
D = D - S[1]
B = B - S[0]
Гүйцэтгэл/Performance
[засварлах | кодоор засварлах]CPU давтамж/үйлдэл [200Mhz процессор]________Үйлдэл/секунд [200Mhz]
JAVA | Borland C | Assembly | JAVA | Borland C | Assembly | ||
---|---|---|---|---|---|---|---|
Түлхүүр үүсгэх | 110000 | 2300 | 1108 | Түлхүүр үүсгэх | 1820 | 86956 | 180500 |
Шифрлэх | 16200 | 616 | 254 | Шифрлэх | 12300 | 325000 | 787000 |
Тайлах | 16500 | 566 | 254 | Тайлах | 12100 | 353000 | 788000 |
Хурд (Mbps)
[засварлах | кодоор засварлах]128bit | 192bit | 256bit | |
---|---|---|---|
Шифрлэх | 1.57 | 41.5 | 100.8 |
Тайлах | 1.55 | 45.2 | 100.8 |
Аюулгүй байдал
[засварлах | кодоор засварлах]Бүх боломжит түлхүүрийг хайх буюу /brute-force/ халдлагад /128, 192, 256 бит түлхүүртэй/ 2128 – 2256 нарийвлал шаардагдах учраас өнөөгийн хэмжээнд боломжгүй гэж үздэг. Бусад нарийвчилсан довтолгооны хувьд үнэлгээг сонирхоё. 128 бит түлхүүрийн хувьд довтолгооны үзүүлэлт:
Үеийн тоо | |||||
---|---|---|---|---|---|
Халдлага | 8 | 12 | 16 | 20 | 24 |
Дифференциал халдлага | 256 | 2117 | 2190 | 2238 | 2299 |
Шугаман халдлага | 247 | 283 | 2119 | 2155 | 2191 |
Эндээс харахад 20 үеээс дээш үе гүйцэтгэдэг, 128-аас их бит түлхүүрийн урттай RC-6 алгоритм нь өнөөгийн түвшинд аюулгүй гэж үзэж болно. Өнөөгийн байдлаар RC-6 алгоритмыг бүрэн тайлсан тохиолдол гараагүй байна, стандарт технологийн хувьд тайлах боломж одоогоор байхгүй ч хүчирхэг орнууд технологийн хүчээр 128 бит түлхүүртэй RC6 алгоритмыг тайлсан байхыг үгүйсгэх аргагүй юм.
RC6 vs AES
[засварлах | кодоор засварлах]Advanced encryption standard уралдааны эцсийн шалгаруулалтад тухайн үзүүлэлтүүдэд 1-3 оноог өгч дүгнэсэн. Ялагч AES буюу Rijndael алгоритмтай харьцуулсан үнэлгээ.
Ерөнхий үзүүлэлт | Хэрэгжүүлэхэд хялбар байдал | Программын гүйцэтгэл | Техникийн гүйцэтгэл | Smart-card үзүүлэлт | Дизайн | |
---|---|---|---|---|---|---|
AES(Rijndael) | 2 | 3 | 3 | 3 | 3 | 2 |
RC6 | 2 | 1 | 2 | 1 | 2 | 1 |