İçeriğe atla

RC5

RC5
RC5 blok şifresinin bir turu (iki yarım tur)
Genel
TasarımcılarRon Rivest
İlk yayınlanma1994
ArdıllarRC6, Akelarre
Şifre detayları
Anahtar boyutları0 ila 2040 bit (128 önerilir)
Blok boyutları32, 64 veya 128 bit (64 önerilir)
YapıFeistel-benzeri ağ
Döngüler1-255 (12; başlangıçta önerilen)
En iyi açık kriptanaliz
12-döngülü RC5 (64 bit bloklarla) seçilmiş 244 düz metin kullanılarak yapılan bir diferansiyel saldırıya karşı hassastır.[1]

Kriptografide RC5, basitliği ile dikkat çeken simetrik - anahtar blok şifresidir. 1994 yılında Ronald Rivest tarafından tasarlanmıştır.[2] RC, "Rivest Cipher" veya bir başka seçenek olarak "Ron's Code" anlamına gelmektedir (RC2 ve RC4'ü karşılaştırın). Gelişmiş Şifreleme Standardı(AES) adayı RC6 ve RC5 blok şifrelerine dayanıyordu.

Tanım

Birden fazla şemadan farklı olarak RC5, değişken bir blok boyutuna (32,64 veya 128 bit olur), anahtar boyutuna (0 ila 2040 bit arası) ve tur sayısına (0 ile 255 arası)sahiptir. Genel olarak önerilen parametre seçimi; 64 bit blok boyutu, 125 bit bir anahtar boyutu ve 12 tur sayısına sahip olması gerekir.RC5 blok şifrelemenin önemli bir özelliği de, veriye bağlı rotasyonların kullanılmasıdır. RC5'in hedeflerinden biri ise, bu tur işlemlerin bir kriptografik ilkel olarak çalışmasını ve değerlendirmesini sağlamaktır. Bundan ayrı RC5, bir dizi modüler eklemeden ve özel VEYA (XOR)'lardan oluşmaktadır. Algoritmanın genel yapısı Feitsel benzeri bir ağdır. Şifreleme ve şifre çözme yöntemleri birkaç kod satırında belirtilebilir. Veriye bağlı rotasyonların yeniliği ile beraber göz alıcı basitliği olan RC5'i kriptoanalistler için ilgi çekici bir çalışma nesnesi haline getirildi.RC5 genel olarak;

RC5-w/r/b şeklinde ifade edilir. w:Bit cinsinden sözcük boyutu, r:Tur sayısı, b: Anahtardaki 8 bitlik byte sayısı.

Özellikleri

  • Yazılımsaldır.
  • S-box bulunmaz.
  • Basit, esnek ve hızlıdır.
  • XOR işlemi vardır.
  • Güvenilirliği yüksektir.
  • Kırılma olasılığı düşüktür.

Algoritma

RC5 şifreleme ve şifre çözme, rastgele anahtarı, şifreleme ve şifre çözme işlemleri sırasında sırayla (ve yalnızca bir kez) kullanılacak 2(r+1) kelimeye genişletir. Aşağıdakilerin tümü, Rivest'in RC5 hakkındaki gözden geçirilmiş makalesinden alınmıştır.[3]

Anahtar Genişletme

Anahtar genişletme algoritması, önce sözde kodda, ardından doğrudan referans belgesinin ekinden kopyalanan örnek C kodunda aşağıda gösterilmiştir.

Makalenin adlandırma şemasına göre aşağıdaki değişken adları kullanılır:

w - Bir kelimenin bit cinsinden uzunluğu, tipik olarak 16, 32 veya 64. Şifreleme 2 kelimelik bloklarda yapılır.

u = w/8 - Bir kelimenin bayt cinsinden uzunluğu.

b - Anahtarın bayt cinsinden uzunluğu.

K[] - Bir bayt dizisi olarak kabul edilen anahtar (0 tabanlı indeksleme kullanılarak).

c - Sözcüklerdeki anahtarın uzunluğu (veya b = 0 ise 1).

L[] - Anahtar zamanlaması sırasında kullanılan geçici bir çalışma dizisi. kelimelerdeki anahtara başlatıldı.

r - Verileri şifrelerken kullanılacak tur sayısı.

t = 2(r+1) - gerekli yuvarlak alt anahtarların sayısı.

S[] - Yuvarlak alt anahtar sözcükler.

P w - Olarak tanımlanan ilk sihirli sabit Odd((e-2)*2^{w})}Odd((e-2)*2^{w}), burada Odd verilen girdiye en yakın tek tam sayıdır, e [1] 18 Mart 2022 tarihinde Wayback Machine sitesinde arşivlendi. doğal logaritmanın tabanıdır ve w yukarıda tanımlanmıştır. w'nin ortak değerleri için, P w'nin ilişkili değerleri burada onaltılık olarak verilmiştir:

w = 16 için : 0xB7E1

w = 32 için : 0xB7E15163

w = 64 için : 0xB7E151628AED2A6B

Q w - Olarak tanımlanan ikinci sihirli sabit {{\displaystyle Odd((\phi -1)*2^{w})}Odd((\phi - 1) * 2^w), burada Odd verilen girişe en yakın tek tam sayıdır, burada {{\displaystyle \phi altın [2] 20 Mart 2022 tarihinde Wayback Machine sitesinde arşivlendi. orandır ve w yukarıda tanımlanmıştır. w'nin ortak değerleri için, Q w'nin ilişkili değerleri burada onaltılık olarak verilmiştir:

w = 16 için : 0x9E37

w = 32 için : 0x9E3779B9

w = 64 için : 0x9E3779B97F4A7C15

  # K'yı kelimelere ayırın.
# u = w / 8
c = ceiling(max(b, 1) / u)
#L başlangıçta 0'a kadar 0 değerli w-uzunluklu kelimelerin c-uzunluklu bir listesidir.
 for i = b-1 down to 0 do:
L[i / u] = (L[i / u] <<< 8) + K[i]
#Anahtardan bağımsız sözde rastgele S dizisini başlat.
# S başlangıçta =2(r+1) uzunluğunda tanımsız w-uzunluklu kelimelerin listesidir.
S[0] = P_w
S[i] = S[i - 1] + Q_w
for i = 1 to t-1 do:
# Anahtar zamanlama döngüsü
i = j = 0
 A = B = 0,
do 3 * max(t, c) times:
A = S[i] = (S[i] + A + B) <<< 3
   B = L[j] = (L[j] + A + B) <<< (A + B)
   i = (i + 1) % t
   j = (j + 1) % c
return S

Örnek kaynak kodu, Rivest'in RC5 hakkındaki makalesinin ekinden sağlanmıştır. Uygulama w:32, r:12 ve b:16 ile çalışılmak üzere tasarlanmıştır.

  void RC5_SETUP(unsigned char *K){
// w = 32, r = 12, b = 16
  // c = max(1, ceil(8 * b/w))
  // t = 2 * (r+1)
  WORD i, j, k, u = w/8, A, B, L[c];
  
  for (i = b-1, L[c-1] = 0; i != -1; i--)
     L[i/u] = (L[i/u] << 8) + K[i];
  
  for (S[0] = P, i = 1; i < t; i++)
     S[i] = S[i-1] + Q;
  
  for (A = B = i = j = k = 0; k < 3 * t; k++, i = (i+1) % t, j = (j+1) % c)
  {
     A = S[i] = ROTL(S[i] + (A + B), 3);
     B = L[j] = ROTL(L[j] + (A + B), (A + B));
  }

}

Şifreleme

Şifreleme, basit bir işlevin birkaç turunu içeriyordu. Güvenlik gereksinimlerine ve zaman hususlarına bağlı olarak 12 veya 20 tur öneriliyor gibi görünüyor. Yukarıda kullanılan değişkenlerin ötesinde, bu algoritmada aşağıdaki değişkenler kullanılır:

* A, B - Şifrelenecek düz metin bloğunu oluşturacak iki kelime.

   A = A + S[0]
   B = B + S[1]
for i = 1 to r do:
   A = ((A ^ B) <<< B) + S[2 * i]
   B = ((B ^ A) <<< A) + S[2 * i + 1]
#Şifreli metin bloğu, sırayla A ve B'den oluşan iki kelimelik geniş bloktan oluşur.
return A, B

Rivest'in verdiği örnek C kodu:

  void RC5_ENCRYPT(WORD *pt, WORD *ct){
WORD i, A = pt[0] + S[0], B = pt[1] + S[1];
  
  for (i = 1; i <= r; i++)
  {
     A = ROTL(A ^ B, B) + S[2*i];
     B = ROTL(B ^ A, A) + S[2*i + 1];
  }
  ct[0] = A; ct[1] = B;
}

Şifre Çözme

Şifre çözme, şifreleme işleminin oldukça basit bir şekilde tersine çevrilmesidir. Aşağıdaki sözde kod işlemi gösterir.

   for i = r down to 1 do:
B = ((B - S[2 * i + 1]) >>> A) ^ A
   A = ((A - S[2 * i]) >>> B) ^ B
B = B - S[1]
A = A - S[0]
return A, B

Rivest'in verdiği örnek C kodu:

 void RC5_DECRYPT(WORD *ct, WORD *pt){
WORD i, B=ct[1], A=ct[0];
  
  for (i = r; i > 0; i--)
  {
     B = ROTR(B - S[2*i + 1], A) ^ A;
     A = ROTR(A - S[2*i], B) ^ B;
  }
  
  pt[1] = B - S[1]; pt[0] = A - S[0];
}

Kriptoanaliz

12 turlu RC5 (64 bit bloklu), 244 seçilmiş düz metin kullanan [3] 12 Mart 2022 tarihinde Wayback Machine sitesinde arşivlendi. farklı saldırıya açıktır.[4] 18-20 mermi yeterli koruma olarak önerilmektedir.

Bu zorlu sorunların bir kısmı Distributed.net tarafından organize edilen dağıtılmış bilgi işlem kullanılarak çözülmüştür . Distributed.net, 56-bit ve 64-bit anahtarlarla şifrelenmiş brute- force RC5 mesajlarına sahiptir ve 3 Kasım 2002'den beri 72-bit bir anahtarı kırmak için çalışmaktadır.[5] 6 Ağustos 2021 itibarıyla, %7.900'ü keyspace arandı ve o gün kaydedilen orana göre keyspace'in %100'ünün tamamlanması 127 yıl alacaktı.[6] Görev, küme hesaplama alanında birçok yeni ve özgün gelişmeye ilham verdi.[7]

Algoritma üzerinde bir patente sahip olan RSA Security,[8] RC5 ile şifrelenmiş şifreli metinleri kırmak için bir dizi 10.000 ABD Doları ödül teklif etti, ancak bu yarışmalar Mayıs 2007'den itibaren durduruldu.[5] Sonuç olarak, dağıtılmış.net karar verdi . para ödülünü finanse etmek için. Kazanan anahtarı bulan kişi 1.000 ABD Doları, ekibi (varsa) 1.000 ABD Doları ve Özgür Yazılım Vakfı 2.000 ABD Doları alacaktır.[9]

Kaynakça

  1. ^ Alex Biryukov & Eyal Kushilevitz (1998), "Improved Cryptanalysis of RC5", EUROCRYPT 1998, Lecture Notes in Computer Science, Springer, 1403, ss. 85-99, doi:10.1007/BFb0054119 
  2. ^ "Rivest, R. L. (1994).Proceedings of the Second International Workshop on Fast Software Encryption (FSE)" (PDF). 21 Eylül 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 20 Mart 2022. 
  3. ^ "Rivest RC5" (PDF). 21 Eylül 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 20 Mart 2022. 
  4. ^ "Biryukov A. and Kushilevitz E. (1998). Improved Cryptanalysis of RC5. EUROCRYPT 1998". 20 Mart 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2022. 
  5. ^ a b "www.distributed.net. Retrieved 14 December 2019". 9 Mart 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2022. 
  6. ^ "RC5-72 / Overall Project Stats". 20 Mart 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2022. 
  7. ^ "Archived from . Retrieved". 28 Ekim 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Ekim 2014. 
  8. ^ "Rivest, R. L, "Block Encryption Algorithm With Data Dependent Rotation", U.S. Patent 5,724,428, issued on 3 March 1998." 21 Ocak 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2022. 
  9. ^ "Retrieved 15 December 2019". 22 Ocak 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2022. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Şifre</span> bilginin şifrelenmesi ve şifresinin çözülmesi için algoritma

Kriptografide, bir şifre şifreleme veya şifre çözme—bir prosedür olarak izlenebilen bir dizi iyi tanımlanmış adım gerçekleştirmek için bir algoritmadır. Alternatif, daha az yaygın bir terim şifrelemedir. Şifrelemek veya kodlamak, bilgiyi şifreye veya koda dönüştürmektir. Yaygın kullanımda "şifre", "kod" ile eş anlamlıdır, çünkü her ikisi de bir mesajı şifreleyen bir dizi adımdır; ancak kriptografide, özellikle klasik kriptografide kavramlar farklıdır.

<span class="mw-page-title-main">Simetrik anahtar algoritmaları</span>

Simetrik anahtar algoritmaları aynı ya da benzer kripto-grafik şifreleri kullanarak hem şifreleme hem de deşifreleme yapan bir kripto-grafik algoritma grubudur. Şifreler ya birebir aynı ya da basit bir yöntemle birbirine dönüştürülebilir olmalıdır. Pratikte anahtarlar gizli bağlantının devam ettirilmesinde kullanılan iki ya da daha fazla taraf ile paylaşılmış bir şifreyi temsil ederler. Açık anahtarlı şifrelemeye göre ana dezavantajlarından biri iki partinin de gizli anahtara erişiminin olması gerekliliğidir.

Tek kullanımlık şifre, Gilbert Vernam tarafından keşfedilmiş bir kripto sistemi. Kullanılacak anahtar şifrelenecek metnin boyutu kadar olmalıdır ve yalnız bir kereye mahsus üretilip kullanılmalıdır. Böylece şifrelenmiş metni ele geçiren saldırgana hiçbir bilgi verilmemiş olunur.

Kriptografide çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir. Değişken uzunluktaki mesajları işlemek için veriler ayrı parçalara bölünmelidir. Son parça şifrenin blok uzunluğuna uyacak şekilde uygun bir tamamlama şeması ile uzatılmalıdır. Bir çalışma kipi bu bloklardan her birini şifreleme şeklini tanımlar ve genellikle bunu yapmak için ilklendirme vektörü (IV) olarak adlandırılan rastgele oluşturulmuş fazladan bir değer kullanır.

<span class="mw-page-title-main">Dizi şifresi</span> simetrik anahtar şifreleme metodu

Kriptografide, bir kesintisiz şifreleme, dizi şifresi veya akış şifresi bir simetrik anahtardır. Düz metin bitlerinin bir exclusive-or (XOR) işlemi kullanılarak bir sözde rastgele şifre bit akışı ile birleştirildiği şifrelemedir. Bir akış şifresinde düz metin sayısal basamakları her seferinde bir tane şifrelenir ve ardışık basamakların dönüşümü şifreleme durumu sırasında değişir. Her bir basamağın şifrelenmesi mevcut duruma bağlı olduğundan alternatif bir isim durum şifresidir. Pratikte, basamaklar tipik olarak tek bitler veya baytlardır.

Kriptografide blok şifreleme, blok olarak adlandırılmış sabit uzunluktaki bit grupları üzerine simetrik anahtar ile belirlenmiş bir deterministik algoritmanın uygulanmasıdır. Blok şifreleme birçok kriptografik protokol tasarımının önemli temel bileşenlerindendir ve büyük boyutlu verilerin şifrelemesinde yaygın biçimde kullanılmaktadır.

<span class="mw-page-title-main">Uluslararası Veri Şifreleme Algoritması</span>

Uluslararası Veri Şifreleme Algoritması (IDEA), 1991 yılında Xuejia Lai ve James Massey tarafından tasarlanmış bir blok şifreleme algoritmasıdır. Bilinen en güçlü algoritmalardandır.

Merkle-Hellman kripto sistemi, 1978 yılında Martin Hellman ve Ralph Merkle tarafından geliştirilen ilk açık anahtarlı kriptosistemlerden biridir. RSA'dan daha hızlı gerçekleştirilebilmesine rağmen Adi Shamir tarafından 1982'de güvensiz olduğu gösterilmiştir.

<span class="mw-page-title-main">Vigenère şifrelemesi</span> bir kriptoloji yöntemi

Vigenère şifrelemesi, alfabetik bir şifreleme metni kullanarak bir dizi farklı Sezar şifrelemesine dayalı harfleri kullanan bir şifreleme yöntemidir. Bu bir çeşit poli alfabetik ikame tablosudur.

Kriptografide anahtar beyazlatma, yinelenen bir blok şifrenin güvenliğini arttırmaya yönelik bir tekniktir. Verileri anahtarın parçalarıyla birleştiren adımlardan oluşur.

Kriptografide, IBM (ABD) için çalışırken öncü araştırmalar yapan Almanya doğumlu fizikçi ve kriptograf Horst Feistel'in ismiyle anılan Feistel şifresi blok şifrelerin yapımında kullanılan simetrik bir yapıdır; aynı zamanda Feistel ağı olarak da bilinir. Blok şifreler, DES(Data Şifreleme Standardı) dahil, büyük oranda bu şemayı kullanır. Feistel yapısı, şifreleme ve şifre çözme işlemlerinin çok benzer olması, hatta bazı durumlarda aynıdır, sadece anahtar sırasının tersine çevrilmesini gerektirme avantajına sahiptir. Bu nedenle, böyle bir şifreyi uygulamak için gereken kod veya devrenin büyüklüğü neredeyse yarıya inmiştir.

<span class="mw-page-title-main">Anahtar çizelgesi</span>

Kriptografide ürün şifreleri, verilerin (de)şifrelenmesinin genelde çevrimlerin iterasyonu ile yapıldığı belirli türdeki şifrelemelerdir. Çevrim sabiti olarak adlandırılan çevrime özgü sabit değerler ve çevrim anahtarı olarak adlandırılan şifre anahtarından türetilmiş çevrime özgü veriler haricinde her bir çevrim için kurgu genellikle aynıdır. Anahtar çizelgesi, tüm çevrim anahtarlarını anahtardan hesaplayan bir algoritmadır.

Kriptografide Galois / Sayaç Modu (GCM), performansı sayesinde yaygın olarak benimsenen simetrik anahtar şifreleme blok şifrelemeleri için bir çalışma modudur. Son teknoloji ürünü olan GCM, yüksek hızlı iletişim kanalları için ucuz donanım kaynakları ile üretim hızlandırabilir. Bu operasyon, hem veri doğruluğu (bütünlük) hem de gizlilik sağlamak için tasarlanmış kimliği doğrulanmış bir şifreleme algoritmasıdır. GCM, 128 bit blok boyutuna sahip blok şifreleri için tanımlanmıştır. Galois İleti Kimlik Doğrulama Kodu (GMAC), arttırımlı ileti doğrulama kodu olan GCM'in sadece kimlik doğrulama türüdür. Hem GCM hem de GMAC, başlatma vektörleri keyfi uzunlukta kabul edebilir.

<span class="mw-page-title-main">Simon (şifreleme)</span>

Simon, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir hafif blok şifreleme ailesidir. Simon, donanım uygulamaları için optimize edilmişken, kardeş algoritması Speck, yazılım uygulamaları için optimize edilmiştir.

<span class="mw-page-title-main">Speck (şifreleme)</span> şifreleme

Speck, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir blok şifreleme ailesidir. Speck, yazılım uygulamaları için optimize edilmişken, kardeş algoritması Simon, donanım uygulamaları için optimize edilmiştir. Speck bir add-rotate – xor (ARX) şifresidir.

<span class="mw-page-title-main">GOST (blok şifresi)</span>

GOST 28147-89 standardında tanımlanan GOST blok şifresi (Magma), blok boyutu 64 bit olan bir Sovyet ve Rus hükûmeti standardı simetrik anahtar blok şifresidir. 1989'da yayınlanan orijinal standart, şifreye herhangi bir isim vermemiştir, ancak standardın en son revizyonu olan GOST R 34.12-2015, bunun Magma olarak adlandırılabileceğini belirtir. GOST karma işlevi bu şifreye dayanmaktadır. Yeni standart ayrıca Kuznyechik adlı yeni bir 128 bitlik blok şifrelemeyi de belirtir.

<span class="mw-page-title-main">RC6</span>

Kriptografide RC6, RC5'ten türetilen simetrik bir anahtar bloğu şifresidir. Gelişmiş Şifreleme Standardı AES yarışmasının gerekliliklerini karşılamak için Ron Rivest, Matt Robshaw, Ray Sidney ve Yiqun Lisa Yin tarafından tasarlanmıştır. Algoritma bu yarışmada beş finalistten biriydi ve NESSIE ve CRYPTREC projelerine de gönderilmişti. RSA Security'nin patenti olan tescilli bir algoritmadır. Yapısal olarak basit ve günümüzde hala güvenli olarak nitelendirilmektdir.

LEA, Hafif şifreleme algoritması(lea olarak da bilinir), 2013 yılında Güney Kore tarafından büyük veri ve bulut bilişim gibi yüksek hızlı ortamlarda ve ayrıca IoT cihazları ve mobil cihazlar gibi hafif ortamlarda gizlilik sağlamak için geliştirilen 128 bitlik bir blok şifrelemedir. LEA'nın 3 farklı anahtar uzunluğu vardır. 128,192 ve 256 bit. LEA, verileri çeşitli yazılım ortamlarında en yaygın olarak kullanılan blok şifresi olan AES'ten yaklaşık 1,5 ila 2 kat daha hızlı şifreler.

Kriptografide klasik şifre, tarihsel olarak kullanılmış ancak çoğunlukla kullanımdan kalkmış bir şifre türüdür. Modern kriptografik algoritmaların aksine, klasik şifrelerin çoğu pratik olarak hesaplanabilir ve elle çözülebilir. Bununla birlikte, modern teknoloji ile kırılmaları da genellikle çok basittir. Bu terim Yunan ve Roma dönemlerinden beri kullanılan basit sistemleri, ayrıntılı Rönesans şifrelerini, Enigma makinesi gibi II. Dünya Savaşı kriptografisini ve sonrasını içerir.

Kriptografide bir döngü, çevrim, tur veya döngü fonksiyonu algoritma içinde birçok kez tekrarlanan (yinelemeli) temel bir dönüşümdür. Büyük bir algoritmik işlevi döngülere bölmek hem uygulamayı hem de kriptanalizi basitleştirir.