Yazan : Şefik İlkin Serengil

Ron Rivest, Matt Robshaw, Ray Sidney ve Yiqun Lisa Yin tarafından 1998 yılında RC5 şifrelemesinin bir uzantısı olarak geliştirilen AES yarışmasının finalisti olan bir kriptoloji yöntemidir.Anahtar boyutu 128, 192 veya 256 bit olabilir.Blok boyutu 128 bit kadardır.Yapısal olarak basit, hızlı ve günümüzde halen güvenli olarak düşünülmektedir.


Şekil 1.1 RC6–w / r / b ile kriptolama işlemi. F(x) = x * ( 2x + 1 )

RC6-w/r/b parametreleri

Bitlerin kelime genişliği (Word size of bits) w ( 32 )( lg(w) = 5 )
Çevrim sayısı (Number of rounds) r ( 20 )*
Anahtar byte miktarı (Number of key bytes) b ( 16, 24 veya 32 )

*Yüksek güvenlik için r parametresi AES’in önerisi olan 20 olarak seçilir.

Anahtar Genişletme Uzayı

w-bit çevrim anahtarlarından S[ 0 … ( 2r+3 ) ] dizisi üretilir.

Şifreleme / Deşifreleme

Giriş / Çıkış işlemleri 32 bitlik A, B, C, D kaydedicilerinde gerçekleşir.

Temel İşlemler

A + B Mod 2w de toplama işlemi
A – B Mod 2w de çıkarma işlemi
AB XOR veya Exclusive-Or
A <<< B B’ nin düşük değerlikli lg(w ) bitleri kadar A’yı sola kaydır
A >>> B B’ nin düşük değerlikli lg(w ) bitleri kadar A’yı sağa kaydır
( A, B, C, D ) = (B, C, D, A) Paralel atama işlemleri

Bu adıma kadar olan işlemler zaten RC5 şifrelemesinde de kullanılmaktaydı.RC6’nın RC5’ten temel farkı olan işlem:

A x B Mod 2w de çarpma işlemi

Şifreleme ( Genel )

Input:    Plaintext w-bit input kaydedicileri olan A, B, C, D’de bulunmaktadır.

r çevrim sayısını ifade eder

w-bit çevrim anahtarları S[ 0 … 2r + 3 ]

Output: Ciphertext A, B, C, D kaydedicileri içerinde saklanacaktır.

Prosedür:

B = B + S[ 0 ]

D = D + S[ 1 ]

for i = 1 to r do

{

t = ( B x ( 2B + 1 ) ) <<< lg( w )

u = ( D x ( 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 ]

Şifreleme( AES )

B = B + S[ 0 ]

D = D + S[ 1 ]

for i = 1 to 20 do

{

t = ( B x ( 2B + 1 ) ) <<< 5

u = ( D x ( 2D + 1 ) ) <<< 5

A = ( ( A  t ) <<< u ) + S[ 2i ]

C = ( ( C  u ) <<< t ) + S[ 2i + 1 ]

(A, B, C, D) = (B, C, D, A)

}

A = A + S[ 42]

C = C + S[ 43 ]

Deşifreleme ( Genel )

Input: Ciphertext w-bit input kaydedicileri olan A, B, C, D’de bulunmaktadır.

r çevrim sayısını ifade eder

w-bit çevrim anahtarları S[ 0 … 2r + 3 ]

Output: Plaintext A, B, C, D içerisine saklanacaktırç

Prosedür:

C = C – S[ 2r + 3 ]

A = A – S[ 2r + 2 ]

for i = 20 downto 1 do

{

(A, B, C, D) = (D, A, B, C)

u = ( D x ( 2D + 1 ) ) <<< lg w

t = ( B x ( 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 ]

Deşifreleme ( AES )

C = C – S[ 43 ]

A = A – S[ 42 ]

for i = 20 downto 1 do

{

(A, B, C, D) = (D, A, B, C)

u = ( D x ( 2D + 1 ) ) <<< 5

t = ( B x ( 2B + 1 ) ) <<< 5

C = ( ( C – S[ 2i + 1 ] ) >>> t )  u

A = ( ( A – S[ 2i ] ) >>> u )  t

}

D = D – S[ 1 ]

B = B – S[ 0 ]

Anahtar genişletme ( Genel )

RC5 ile aynı prosedür ile üretilir. Aralarında tek fark, şifreleme ve deşifreleme işlemlerinde kullanılmak üzere kullanıcı tarafından işlenmiş anahtardan daha fazla kelime üretilmesidir. Kullanıcı b byte kadar anahtarı işler.

Input:         L[ 0 … (c-1) ]

Pw

Qw

r çevrim sayısı

Output:    S[ 2r + 3 ]

Prosedür:

S[ 0 ] = Pw

for i = 1 to 2r + 3 do

{

S[i] = S[i-1] + Qw

}

A = B = i = j = 0

v = 3 * Max(c, 2r + 4)

for s = 1 to v do

{

A = S[ i ] = ( S[ i ] + A + B ) <<< 3

B = L[ j ] = ( L[ j ] + A + B ) <<< ( A + B )

i = ( i + 1 ) mod 2r + 3

j = ( j + 1 ) mod c

}

Anahtar genişletme ( AES )

Pw = ( e – 2) = B7E15163

Qw = ( Ф – 1 ) = 9E3779B9

Input:         L[ 0 … (c-1) ]

Pw = B7E15163

Qw = 9E3779B9

r = 20

Output:    S[ 43 ]

Prosedür:

S[ 0 ] = 0xB7E15163

for i = 1 to 43 do

{

S[i] = S[i-1] + 0x9E3779B9

}

A = B = i = j = 0

for s = 1 to 132 do

{

A = S[ i ] = ( S[ i ] + A + B ) <<< 3

B = L[ j ] = ( L[ j ] + A + B ) <<< ( A + B )

i = ( i + 1 ) mod 44

j = ( j + 1 ) mod c

}

RC6 Güvenlik Analizi

Kuvvetli analiz en etkin bilinen ataklar temeline dayanmaktadır.

  • Lineer kriptoanaliz
  • Diferansiyel kriptoanaliz

Lineer analiz

(r-2) çevrim için yaklaşımlar bulunur

Güvenlik yönünden lineer ataklar

Lineer atak saldırısı için plaintext/ciphertext çiftlerinin sayılarının tahminleri gerekmektedir.

( Sadece 2128 çift mevcuttur. )

Çevrim Çift
8 247
12 283
16 2119
20 RC6 2155 imkansız
24 2191

Diferansiyel analiz

Yinelemeli ve yinelemesiz ( r-2 ) çevrimin farklarını yine (r-2) çevrimin karakterisliği olarak kullanması şeklinde düşünülebilinir.

Fark olarak iki kavram düşünülür. Bunlar:

Exclusive-Or

Çıkarma ( Daha iyi )

5 bitlik karesel fonksiyon (quadratic function) ve sabit kaydırma (fixed rotation) kombinasyonları diferansiyel atakların önüne geçmek için oldukça iyi bir yöntemdir.

Güvenlik yönünden diferansiyel ataklar

Diferansiyel atakta bulunmak için plaintext çiftlerinin sayısının tahmini gerekmektedir.

(Sadece 2128 çifti mevcuttur.)

Çevrim Çift
8 256
12 2117
16 2190 imkansız
20 RC6 2238
24 2299

Anahtar genişletme’nin güvenliği

Anahtar genişletme prosedürü RC5 ile aynı şekildedir. Henüz bilinen bir zayıflık içermemektedir.

Bilinen zayıf anahtar içermemektedir

Bilinen ilişkili anahtar saldırısı içermemektedir

Çevrim anahtarları işlenmiş anahtarın rassal bir fonksiyonu gibi görünmektedir.

Bonus: Anahtar genişletme tamamı ile tek yönlüdür. Çevrim anahtarlarından işlenmiş anahtarın sonucuna ulaşılması oldukça zordur.

Sonuç

RC6, AES gereksinimlerinden daha fazlasını kapsar.RC6,

kolay

hızlı, ve

güvenli

Kuvvetli şifreler üretmek için oldukça basit bir yapı içermektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir