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 | 
