ANUBIS CIPHER

Durmuş Ali Nergiz
5 min readFeb 21, 2021

--

Anubis Cipher, Vincent Rijmen ve Paulo SLM Barreto tarafından geliştirilen açık kaynak kodlu bir şifreleme algoritmasıdır. Anubis algoritmasının iki sürümü bulunmaktadır. İlk sürümü olan Sbox uygulamasının daha verimli ve hızlı hale getirilmesi ile ikinci versiyonu yani tweak sürümü ortaya çıkmıştır.

Bu algoritma blok şifreleme mantığıyla geliştirilmiştir. 128 bit veri blokları üzerinde çalışan bir blok şifreleyici olup 32 bitlik adımlarla artan 128 bit ve 320 bit arasında bulunan anahtarları kabul eder. Kullanılan feistel yapı sayesinde şifreleme ve şifre çözme işlemleri hızlı bir şekilde gerçekleştirilebilmektedir.

Araştırmacılara göre yapılan çalışmalar sonucunda bu algoritmanın yapısının çok güçlü olduğu ileri sürülmüş olup günümüzde Anubis algoritmasında hala herhangi bir zayıflık tespit edilememiştir. Oluşturulan şifreye sadece kaba kuvvet saldırısı uygulanabilmektedir.

TARİHÇESİ

Anubis Cipher, Rijndael algoritmasının geliştiricilerinden Vincent Rijmen ve Whirlpool hash fonksiyonu geliştiricilerinden Paulo S.L.M. Barreto tarafından tasarlanan bir blok şifreleme algoritmasıdır. İsminde Mısır gömme ve mumyalama tanrısı olan Anubis’ten esinlenilmiştir. İlk olarak 2000 yılında yayınlanan şifre, Avrupa komisyonu tarafından düzenlenen NESSIE kriptografik değerlendirme çalışması için aday algoritma olarak sunulmuştur. Rijndael algoritmasının bir modifikasyonu olarak kabul edilen Anubis, Rijndael’den kabul edilebilir derecede farklı bir yarar sağlamadığından NESSIE değerlendirme çalışmasının sonraki aşamalarında yer almamıştır. Şifre açık kaynaklı olup ücretsiz olarak kullanıma sunulmuştur. Patentli bir çalışma değildir.

Aşağıda şifreleme algoritmaları ve katıldıkları projeleri gösteren bir şekil bulunmaktadır. Şekil 1’de görüldüğü üzere Anubis sadece NESSIE projesine dâhil edilmiştir.

Şekil 1: Kriptografik Tasarım Yarışmalarına Başvuran Algoritmalar

ÇALIŞMASI

Anubis’in çalışma yapısında kullanılan blok şifreleme ve feistel yapı kavramları önem arz etmektedir. Aşağıda bu kavramlar hakkında kısa bilgiler bulunmaktadır.

Blok şifreleme: Anahtar ile şifreleme yapan türlerden birisi olan blok şifreleme, sabit büyüklükteki veriler üzerinde şifreleme yapmaktadır. Şifrelenmek istenen veri, sabit uzunluktaki parçalara ayrılarak paralel olarak şifrelenmektedir.

Feistel yapı: Bu yapının kullanıldığı şifreleme türlerinde şifreleme ve şifre çözme işlemleri çok benzer yapıda olmaktır. Bir benzetme yapılacak olursa, şifrelenmesi gereken metin algoritmaya girdi olarak verilerek şifrelenir. Çıkan şifreli metin tekrar aynı fonksiyona girdi olarak verilir. Şifreleme işlemleri tam tersi olarak uygulanır ve şifresi çözülmüş veri elde edilir. Aşağıda bu yapının anlaşılması için f fonksiyonu ile evrim kavramı açıklanmaktadır.

o f ( f ( x )) = x olsun, bunun anlamı, bir x değişkeni f fonksiyonuna girdiğinde çıkan sonuç tekrar f fonksiyonuna girdi olarak verilirse, çıkan sonuç başta girdi olarak verilen x değerine eşit olacaktır.

o f ( xy ) = f ( y ) f ( x ) : fonksiyon kuralları sebebi ile f fonksiyonuna x,y değerleri girdi olarak verilirse bu değer f ( y ) ve f ( x ) olarak ayrılabilir.

o xy = f ( f ( xy )) = f ( f ( y ) f ( x )) = f ( f ( x )) f ( f ( y )) = xy : Yukarıda verilen açıklamalar ışığında xy girdisi f fonksiyonuna verilir. Denklemde görüldüğü üzere f fonksiyonundan çıkan çıktı, tekrar f fonksiyonuna girdi(f ( f ( xy ))) olarak verilir. Bu durumda bu fonksiyon f ( f ( y ) f ( x )) olarak yazılarak açılabilir ve f ( f ( x )) f ( f ( y )) olarak yazılır. İlk maddede açıklanan kural gereği çıktı olarak x ve y değerleri çıkar. Girdi olarak verilen xy değeri sonuç olarak elde edilir.

Sonuç olarak bu yapının kullanılması ile birlikte algoritma işlemleri daha hızlı yapar, şifreleme kodu ve devre büyüklüğünden büyük tasarruf sağlanır, çip alanı ve tablo boyutu azalır.

KRİPTOANALİZ DETAY

Anubis algoritması 128 bit veri blokları üzerinde çalışan bir blok şifreleyici olup 32 bitlik adımlarla ilerleyen 128 bit ve 320 bit arasında bulunan anahtarları kabul eder. Anubis algoritması için matris yapısı M4x4(GF(28)) şeklinde ifade edilmektedir. Bu matriste belirtilen 128 bit veriler aşağıdaki gibi gösterilebilir.

Tablo 1: Matris Gösterimi

Yukarıdaki Tablo 1’de 128 bitlik bloklardan birisi için örnek verilmiştir. Her bir hücre 8 bitlik veri içermektedir. 16 hücre toplam 128 bit veriye tekabül etmektedir.

Aşağıda Anubis algoritmasının genel yapısını anlatan akış şeması bulunmaktadır.

Şekil 2: Algoritma Akış Şeması

Şekil 2’de görüldüğü üzere yukarıda belirtilen 128 bitten oluşan her bir veri bir anahtar ile şekilde belirtilen işlemlerden (bayt değiştirme, bayt aktarımı, doğrusal difüzyon, anahtar ekleme) geçerek şifrelenmektedir.

Anahtar boyutu, aşağıdaki fonksiyonda belirtilen N değerine göre belirlenmektedir. N değeri 4 olduğunda anahtar boyutu 32xN değeri sebebi ile 128 bit olur ve N değeri aşağıda belirtildiği gibi 4 ila 10 arasında değişmektedir. Bu da anahtar boyutunun 128 bit ve 320 bit arasında bir değer olduğunu göstermektedir.

Çevrim(ing. round) sayısı ise en az 12 olup en fazla 18 çevrim olacak şekilde belirlenmiştir ve standart olarak anahtar uzunluğu belirlenirken kullanılan çevrim sayısı N + 8 olarak değerlendirilir.

NESSIE çalışmasında sunum sırasında kullanılan 2 adet örneklem

Anubis için örnek çalışma:

Anubis şifreleme algoritması için python ve perl gibi dillerde hazır kütüphaneler yer almaktadır. Aşağıda perl dilinde yazılmış bir şifreleme/şifre çözme kodu bulunmaktadır.

Şekil 3: Anubis İçin Örnek Perl Kodu

RIJNDAEL VE ANUBIS ARASINDAKİ FARKLAR

Avrupa komisyonu tarafından algoritmaların değerlendirilmesi için kurulan Nessie projesine dâhil olan Anubis Algoritmasının ikinci oturuma katılamama sebebi olan Rijndael algoritmasıdır. Bunun sebebi bu iki algoritma arasında kabul edilebilir bir farkın bulunmamasıdır. Anubis algoritmasının Rijndael algoritması ile birçok açıdan benzerlik göstermesine rağmen bazı fakları bulunmaktadır. Aşağıda Tablo 2’de bu iki algoritma arasındaki farklar sıralanmıştır.

Tablo 2: Rijndael ve Anubis Cipher Karşılaştırması
Tablo 2: Rijndael ve Anubis Cipher Karşılaştırması

ALGORİTMA GÜVENLİK DEĞERLENDİRME

Anubis algoritması geliştirildiği dönemden bu yana birçok değerlendirme sonucunda güvenli olduğu ileri sürülmüş ve bugüne kadar herhangi bir zayıflığı bulunamamıştır. Diferansiyel ve doğrusal analizin yanı sıra aşağıdaki saldırılar için de değerlendirmeler yapılmış ve güvenli bir algoritma olduğu görülmüştür.

• Related key attack

• Interpolation attack

• Boomerang_attack

• Truncated differential cryptanalysis

• Impossible differential cryptanalysis

• Saturation attack

Günümüzde ise algoritmaya sadece kaba kuvvet saldırısı(bruteforce) uygulanabilmektedir.

Aşağıda Şekil 4’te Anubis’in de içinde bulunduğu benzer algoritma tipleri için yapılan atak denemeleri ve sonuçları yer almaktadır.

Şekil 4 : Algoritmalara Yapılan Atak Çalışması

ALGORİTMA DEĞERLENDİRME

Şifre nihai NESSIE portföyüne dâhil edilmemiş olsa da, tasarımı çok güçlü kabul edilmektedir. Proje tamamlandıktan sonra 2004 yılına kadar herhangi bir saldırı bulunamadı. Şifre patentli değildir ve tasarımcılar tarafından halka açık ücretsiz kullanım için yayınlanmıştır.

Anubis, yalnızca bir şifre örneği kullanması açısından ve tüm standart blok şifreleme modlarıyla uyumlu olmasından kaynaklı olarak büyük ölçüde verimlilik sağlanmıştır.

--

--