Jump to content

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 горимуудыг түлхүү ашигладаг.

Шифрлэлт хийх болон тайлах үйл явц

[засварлах | кодоор засварлах]
RC6

Шифрлэлт (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]

JAVABorland CAssemblyJAVABorland CAssembly
Түлхүүр үүсгэх11000023001108Түлхүүр үүсгэх182086956180500
Шифрлэх16200616254Шифрлэх12300325000787000
Тайлах16500566254Тайлах12100353000788000
128bit192bit256bit
Шифрлэх1.5741.5100.8
Тайлах1.5545.2100.8

Бүх боломжит түлхүүрийг хайх буюу /brute-force/ халдлагад /128, 192, 256 бит түлхүүртэй/ 2128 – 2256 нарийвлал шаардагдах учраас өнөөгийн хэмжээнд боломжгүй гэж үздэг. Бусад нарийвчилсан довтолгооны хувьд үнэлгээг сонирхоё. 128 бит түлхүүрийн хувьд довтолгооны үзүүлэлт:

Үеийн тоо
Халдлага812162024
Дифференциал халдлага2562117219022382299
Шугаман халдлага247283211921552191

Эндээс харахад 20 үеээс дээш үе гүйцэтгэдэг, 128-аас их бит түлхүүрийн урттай RC-6 алгоритм нь өнөөгийн түвшинд аюулгүй гэж үзэж болно. Өнөөгийн байдлаар RC-6 алгоритмыг бүрэн тайлсан тохиолдол гараагүй байна, стандарт технологийн хувьд тайлах боломж одоогоор байхгүй ч хүчирхэг орнууд технологийн хүчээр 128 бит түлхүүртэй RC6 алгоритмыг тайлсан байхыг үгүйсгэх аргагүй юм.

Advanced encryption standard уралдааны эцсийн шалгаруулалтад тухайн үзүүлэлтүүдэд 1-3 оноог өгч дүгнэсэн. Ялагч AES буюу Rijndael алгоритмтай харьцуулсан үнэлгээ.

Ерөнхий үзүүлэлтХэрэгжүүлэхэд хялбар байдалПрограммын гүйцэтгэлТехникийн гүйцэтгэлSmart-card үзүүлэлтДизайн
AES(Rijndael)233332
RC6212121