More than Just Lines on a Map: Best Practices for U.S Bike Routes
Camelia
1. Camellia Algoritması
CAMELLIA 2000 yılında NTT ve Mitsubishi Electric Corporation tarafından ortak
geliştirilmiştir. Camellia şifresinde kullanılan doğrusal dönüşüm matrisi MDBL
(Maximum Distance Binary Linear) kod olarak tasarlanmıştır.
Algoritmayı Oluşturan Ekip
https://info.isl.ntt.co.jp/crypt/eng/camellia/
https://info.isl.ntt.co.jp/crypt/eng/camellia/dl/01espec.pdf
2. İsmi Neden Camellia
02
Japonya da bir çiçek
adıdır.
03 Çiçek dilinde, iyi şans çok
sevimli anlamlarına
gelmektedir.
04
Söylenmesi kolay olduğu
için
01 Şifre ömrünün uzun olması
4. 04
Bilinen bütün şifre çözme saldırılarına
karşı koyabilmek için tasarlanmıştır.
Dünya çapında şifre çözücüler
tarafından incelenmiştir.
03
AES şifreleme türü ile karşılaştırılabilecek
kadar hızlı şifreleme yapabilmektedir.
02
Camellia şifrelemesi donanım
ve yazılım uygulamalarına
uygulanabilirdir.
Camellia Özellikleri
01
Camellia, simetrik bir şifreleme
türüdür. Fiestel yapısına
sahiptir
5. Şifreleme ve şifre çözme için
anında alt anahtar hesaplama
yapmaktadır
Anahtarlama
Zaman Kısa sürede şife oluşturmaktadır
Yapısı E2 ve MISTY temelinden
geliştirilmiştir
Camellia Özellikleri
Gelişim
Kriptoloji araştırma ve
geliştirme uzmanları tarafından
geliştirilmiştir
9. 256-bit Anahtar için Camellia Şifrelemesinin Blok Şeması ve Özellikleri
Camellia, 128, 192 veya 256 bitlik gizli anahtara sahip simetrik bir blok şifresidir. Düz
metin ve şifreli metin bloklarının uzunluğu her zaman 128 bite eşittir
Algoritmanın en önemli unsurları F- fonksiyonlardır. Şifreleme, şifre çözme ve anahtarın
yardımcı değişkenlerini oluşturma sırasında kullanılırlar
F fonksiyonu 128 giriş biti alır. bunları alt anahtarlarının bitleriyle karıştırır ve 128 yeni bit
döndürür
F fonksiyonlarında ki bitlerin modifikasyonu, algoritmanın bir turu olarak adlandırılır. F
fonksiyonu çağrıları bloklar halinde toplanır. Her blok altı tur içerir
Turlar FL fonksiyonları ve FL -1 fonksiyonları çağrılarıyla ayrılır . 64 bitlik uzun veri
parçalarını işlerler ve bunları kl i alt anahtarlarıyla karıştırırlar
Hem şifreleme hem de şifre çözme algoritmaları, 6 turlu blokların bazı tekrarlarını
gerçekleştirmek için Tekrar sayısı, o anda kullanılan gizli anahtarın uzunluğuna bağlıdır.
6 bloğun 3 tekrarı - 128-bit gizli anahtar için,
6 blokğun 4 tekrarı - 192-bit veya 256-bit gizli anahtarlar için.
Hem şifreleme hem de şifre çözme algoritmalarının başında ve sonunda ek işlemler
gerçekleştirilir: veri bitleri, alt anahtarın bitlerine eklenir kw i
Her veri bloğunu şifrelemek (veya her şifreli metin bloğunun şifresini çözmek) için
kullanılan alt anahtarlar, ayrı bir işlemde oluşturulur. Her blok için gizli anahtardan onlarca
alt anahtar hesaplanır. Ana algoritmada çeşitli işlemler için kullanılırlar
10. 6’lı blok şeması
F fonksiyonu, ana işlevlerden biridir. Şifreleme ve şifre
çözme işlemleri sırasında ve alt anahtarlar oluşturulurken
kullanılır. 64 bit büyüklüğündeki giriş verileri X , k alt
anahtarlarından biriyle (64 bit uzunluğunda)
karıştırılır. İşlev, 64 bit uzunluğunda bir Y çıktı bloğu
döndürür .
Veri bitleri, anahtar bitlere XOR eklenir ve sonuç, S ve P
olmak üzere iki işlevle değiştirilir .
(X, k) -> Y => P (S (X XOR k)) -> Y
11. FL fonksiyonu ve FL -1 fonksiyonu
FL fonksiyonu hem şifreleme hem de şifre çözme işlemleri sırasında kullanılır. 64 bit uzunluğunda
giriş verisi ve alt anahtarlardan birini alır, sonra bazı değişiklikler yapar ve son olarak 64 bit içeren
bir veri bloğu döndürür.
Bir giriş veri bloğu X olarak adlandırılırken , Y 64 bit uzunluğunda bir çıkış bloğudur. kl , daha
önce oluşturulan alt anahtarlardan biridir:
(X, kl) -> Y => (XL || XR, klL || klR) -> YL || YR
Başlangıçta X , 32 bit uzunluğunda iki parçaya bölünmüştür: X L , 32 sol X biti ve X R , 32 sağ X biti
içerir . Ardından, iki yeni blok (her biri 32 bit uzunluğunda) hesaplanır:
YR = ((XL AND klL) <<< 1) XOR XR
YL = (YR OR klR) XOR XL
Y L , FL fonksiyonunun 32 sol çıkış bitini ve Y R 32 sağ çıkış bitini içerir.
FL -1 fonksiyonu hem şifreleme hem de şifre çözme işlemleri sırasında kullanılır. 64 bit
uzunluğunda giriş verisi ve alt anahtarlardan birini alır, sonra bazı değişiklikler yapar ve son olarak
64 bit içeren bir veri bloğu döndürür.
Bir giriş veri bloğu X olarak adlandırılırken , Y 64 bit uzunluğunda bir çıkış bloğudur. kl , daha
önce oluşturulan alt anahtarlardan biridir:
(Y, kl) -> X => (Y L || Y R , kl L || kl R ) -> X L || X R
Başlangıçta Y , 32 bit uzunluğunda iki parçaya bölünmüştür: Y L 32 sol Y biti ve Y R 32 sağ Y biti
içerir . Ardından, iki yeni blok (her biri 32 bit uzunluğunda) hesaplanır:
XL = (YR OR klR) XOR YL
XR = ((XL AND klL) <<< 1) XOR YR
X L , FL -1 fonksiyonunun 32 sol çıkış bitini içerir ve X R , 32 sağ çıkış bitini içerir.
12. S-Box
F fonksiyonu içinde S fonksiyonu kullanılır. 64 bit boyutundaki giriş verileri, 8 bayt ile değiştirilir. Bunlar daha sonraki işlemler
için geri döner.
Fonksiyonda, dört değiştirme tablosu kullanır. Bunlar s-kutuları olarak adlandırılır .
Giriş verileri sekiz ayrı byta x 1 , ..., x 8 bölünmüştür . x 1 en soldaki sekiz biti, x 2 sonraki sekiz biti ve x 8 en son sekiz biti içerir.
S bloklarının her biri, alınan sekiz biti tablo ile gösterilen diğer sekiz bit olarak değiştirir. Dört s bloğu s 1 , ..., s 4 olarak
adlandırılır . Eğer y 1 , ..., y 8 , sekiz, arkasında byte ( y 1 soldaki giriş bitini , Y 8 en sağdaki çıkış biti içerir), modifikasyonlar
gerçekleştirilebilmesi S-box taşımasının avantajlı olarak tanımlanabilir:
y 1 = s 1 (x 1 )
y 2 = s 2 (x 2 )
y 3 = s 3 (x 3 )
y 4 = s 4 (x 4 )
y 5 = s 2 (x 5 )
y 6 = s 3 (x 6 )
y 7 = s 4 (x 7 )
y 8 = s 1 (x 8 )
s-box s 1 , 256 aşağıdaki sayıları içerir:
S blokları, bir bytelık giriş numarası ile belirlenen değerleri
döndürür. Tablodaki tüm hücreler, soldan sağa ve yukarıdan aşağıya
0 ile 255 arasında numaralandırılmıştır.
Örneğin s 1 [0] 112'ye eşittir, s 1 [1] 130'a eşittir ve s 1 [255] 158'e
eşittir.
Kalan üç s-kutusu da 256 numaralı tablolar olarak tanımlanabilir.
Alternatif olarak, ikameleri, değiştirilmiş giriş verileriyle s 1 üzerindeki
işlemler olarak tanımlanabilir :
s 2 (x): = (s 1 (x) <<< 1)
s 3 (x): = (s 1 (x) >>> 1)
s 4 (x): = s 1 (x <<< 1)
13. Anahtar oluşturma
Camellia şifresinde kullanılan gizli anahtar 128, 192 veya 256 bitten oluşabilir. Veri
bloklarını şifrelemek için, gizli anahtar bitlerine dayalı olarak birkaç yardımcı değişken ve
ardından alt anahtarlar oluşturmak gerekir. Her alt anahtar 64 bit uzunluğundadır
İlk olarak, 128 bitlik iki değişken ( K L ve K R ) ve 64 bitlik dört değişken
( K LL , K LR , K RL ve K RR ) hesaplanmalıdır . Aşağıdaki denklemler bu değişkenler arasındaki bağlantıları
açıklamaktadır:
.K LL = 64 K L'nin sol biti .K LR = 64 sağ bit K L .K RL = 64 sol bit K R .K RR = 64 sağ bit K R
Bağlantıların geri kalanı K gizli anahtarının uzunluğuna göre belirlenmelidir .
256 bit uzun anahtar için:
. K L = 128 K'nin sol biti .K R = 128 sağ bit K
Daha sonra, iki yeni yardımcı değişkeni hesaplamak mümkündür: K A ve K B , öncekilere göre. Her ikisi de 128
bit uzunluğundadır. K B sıfırdan farklıdır ancak ve ancak gizli anahtar 192 veya 256 bitten
oluşuyorsa. K A ve K B'yi oluştururken , ∑ i olarak adlandırılan altı yardım sabiti değeri kullanılmalıdır .
Sonunda, yeni oluşturulmuş dört adet 128-bit uzunluğundaki K L , K R , K A ve K B değişkenine dayalı olarak ,
64 bitlik tüm gizli alt anahtarlar hesaplanmalıdır: k i , kw i ve kl i . Kamelya algoritmasında şifreleme ve şifre
çözme sırasında tüm adımlarda alt anahtarlar kullanılır.
14. Anahtar Program sabitleri
Şifreleme ve şifre çözme işlemlerinde alt anahtarlar oluştururken,
genellikle ∑ i olarak adlandırılan önceden tanımlanmış altı sabit değer
kullanılmalıdır .
Aşağıdaki değerler 64 bit uzunluğundadır ve onaltılık olarak sunulmuştur.
∑ 1 = 0xA09E667F3BCC908B
∑ 2 = 0xB67AE8584CAA73B2
∑ 3 = 0xC6EF372FE94F82BE
∑ 4 = 0x54FF53A5F1D36F1C
∑ 5 = 0x10E527FADE682D1D
∑ 6 = 0xB05688C2B3E6C1FD
15. Alt Anahtar oluşturma
Dört 128-bit uzunluğunda değişken K L , K R , K A ve K B
Kullanıldığında k i , kw i ve kl i alt anahtarları hesaplanmalıdır (tüm alt anahtarlar 64 bit
içerir).
Subkey: alt anahtar
Received value: alınan değer
Where used: Nerede Kullanıldı
16. KriptoAnaliz
(İmkansız Difarensiyel)
Şifreleme Prosedürü : Şifreleme prosedürünün girişi 128-bit düz metin M ve 64 bit alt
anahtarları k wi ( i = 1 , ..., 4), k r ( r = 1 , ..., 24) ve kl j( j = 1 , ..., 6). İlk M , iki adet 64-bit ara
elde etmek için k w 1 ve k w 2 ile XORlanır. değerleri L 0 ve R 0 : L 0 || R 0 = M ⊕ ( k w 1 || k w
2 ). Ardından aşağıdaki işlemler = 6, 12 ve 18 hariç i = 1 ila 24 için gerçekleştirilir.
Lr = Rr−1 ⊕ F(Lr−1, kr), Rr = Lr−1
R için aşağıdaki işlemler uygulanır.
128-bit şifreli metin C şu şekilde hesaplanır:
FL fonksiyonu : ( X, L (32) || x R (32) , kl L (32) || kl R (32) ) ↦ →( Y L (32) || Y R (32) )
Buradan da;
olarak hesaplabilir.
17. KriptoAnaliz
(İmkansız Difarensiyel)
FL ve FL-1 için imkansız difaransiyel analizi
Özellik-1: 3 tur kamelya yapısı için giriş fark formu;
sonra ;
a, b, b2, b3, b4, b5, b6 sıfır olmayan byte lardır.
Özellik-2: 3 tur Camellia yapısı için gerekli koşullar
18. KriptoAnaliz
(İmkansız Difarensiyel)
En sonunda; ΔSi+3 = P −1(ΔLi+1 ⊕ ΔLi+3), P −1(ΔLi+1) = (0, b, 0, 0, 0, 0, 0, 0) dir.
P −1 fonsiyonu doğrusaldır.
Kanıt : , ΔSi+1 formu (0, b, 0, 0, 0, 0, 0, 0) bu şekildedir. B sıfırdan farklıdır. ΔLi+1 = (0, b, b, b, b, b, 0, 0) p
fonsiyonu doğrusal olduğundan Anahtar ekleme katmanı ve S-box katmanından sonra, ΔSi+2 = (0, b2, b3, b4, b5, b6,
0, 0) şeklidedir. Bu işlemlerden sonra aşağıda denklem kurulabilir.
19. KriptoAnaliz
(İmkansız Difarensiyel)
Şekil-1 : 3 tur Camellia Özellikleri
İmkansız diferansiyel:
((0, 0, 0, 0, 0, 0, 0, 0);
(0, a, 0, 0, 0, 0, 0, 0)),a sıfır olmayan bir bayttır.
İlk turun çıktı farkı ((0, a, 0, 0, 0, 0, 0, 0); (0, 0, 0, 0, 0, 0, 0, 0))
Özellik 1'e göre, ikinci tur ve üçüncü turun çıktı farkları vardır.
21. KriptoAnaliz
(İmkansız Difarensiyel)
((0, b, b, b, b, b, 0, 0); (0, a, 0, 0, 0, 0, 0, 0)) ve ((c1, c2 ⊕ a, c3, c4, c5, c6, c7, c8); (0, b, b, b, b, b, 0, 0)) olasılık 1 olduğu sürece; (c1, c2, c3, c4, c5,
c6, c7, c8) = P(0, b2, b3, b4, b5, b6, 0, 0) b, b2, b3, b4, b5, b6 bilinmeyen sıfır olmayan baytlardır.
S-box katmanı ve cl (l = 1, .., 8) bilinmeyen baytlartır.
Benzer şekilde, geriye doğru,sıfır olmayan bayt için e’yi biliyoruz , altıncı turun çıktı farkı; ((0, e, 0, 0, 0, 0, 0, 0); (0, 0, 0, 0, 0, 0, 0, 0)) şeklindedir.
dördüncü turun girdi farkı; ((0, d, d, d, d, d, 0, 0); (f1, f2 ⊕ e, f3, f4, f5, f6, f7, f8))
burada d bilinmeyen sıfır olmayan bir bayttır ve fl (l = 1, .., 8) bilinmeyen baytlardır.
F L fonksiyonuun giriş ve çıkış farklılıkları belirlenir.
c3 = b2 ⊕ b3 ⊕ b5 ⊕ b6,
c4 = b2 ⊕ b3 ⊕ b4 ⊕ b5 ⊕ b6
b4 = 0 ile çelişen (F L − 1 fonksiyonunun giriş ve çıkış farkına göre, d4 = 0 d4 = 0 gibi başka bir çelişki de çıkarabiliriz. Sonuç olarak,
22. KriptoAnaliz
(İmkansız Difarensiyel)
11-round Camellia-256'yı analiz etmek için 6 mermi imkansız diferansiyelin üstüne 3 tur ve altına 2 tur ekliyoruz, Beyazlatma anahtarlarıyla başa çıkmak için önce
eşdeğer alt anahtarları belirtiyoruz ka = kw1 ⊕ k1, kb = kw2 ⊕ k2, kc = kw1 ⊕ k3, kd = kw4 ⊕ k10 ve ke = kw3 ⊕ k11. Daha sonra şifre, yuvarlak fonksiyonların orijinal
olanlar yerine eşdeğer alt anahtarları kullanması dışında beyazlatma anahtarı yokmuş gibi davranır. Saldırının amaçları imkansız diferansiyel vasıtasıyla yanlış
eşdeğer alt anahtarları atmaktır.Örneğin, bir düz metin / şifreli metin çifti, Şekil 3'teki farkı karşılıyorsa, o zamanilgili alt anahtar yanlış olmalıdır. Doğru eşdeğeri
bulduktan sonra alt anahtarlar, ana anahtar anahtar zamanlama tarafından kurtarılacaktır. Tanıtmadan önceSaldırı prosedürü için, önce bir ön hesaplama tablosu
oluşturmak. saldırının zaman karmaşıklığını azaltır.
11-tur camellia-256'ya İmkansız Diferansiyel Saldırısı
Şekil-3