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 |
AB | 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:
Çı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.