RC4 Encryption Algorithm(RC4 Şifreleme Algoritması)

Devrim Ozcay
3 min readMar 10, 2022

--

  • *RC4 is a stream cipher and variable-length key algorithm.

RC4 , bir akış şifresi ve değişken uzunluklu anahtar algoritmasıdır. Bu algoritma her seferinde bir biti şifreler(veya bir seferde daha büyük birim verileri).

RC4 şifresinin çeşitleri

Normal RC4 şifresinin 4 çeşidi vardır:

  1. Spritz — Spritz, kriptografik hash fonksiyonları ve deterministik rastgele bit üreteci oluşturmak için kullanılır.
  2. RC4A — Bu, ortalama RC4 şifresinden daha hızlı ve daha güçlü olması önerilen bir varyanttır. RC4A’nın şifresinde kullanılan gerçek rastgele sayılara sahip olmadığı bulundu.
  3. VMPC — Değişken Olarak Değiştirilmiş Permütasyon Kompozisyonu (VMPC), RC4A gibi, şifresinde gerçekten rastgele sayıların kullanılmadığı tespit edilen bir RC4 sürümüdür.
  4. RC4A+ — RC4A+, RC4A’nın RC4 ve RC4A’dan daha uzun ve daha karmaşık, ancak karmaşıklığının bir sonucu olarak daha güçlü olan gelişmiş bir sürümüdür.

Avantajlar ve dezavantajlar

RC4, diğer akış şifrelerine kıyasla bir dizi avantaja sahiptir:

  • RC4'ün kullanımı son derece basittir, dolayısıyla uygulamayı da basitleştirir.
  • RC4, basitliği nedeniyle hızlıdır ve bu da onu daha iyi performans gösteren bir şifre yapar.
  • RC4 ayrıca büyük veri akışlarıyla hızlı ve kolay bir şekilde çalışır.

Avantajları olmasına rağmen, RC4'ün birçok dezavantajı da vardır:

  • RC4'te bulunan güvenlik açıkları, RC4'ün son derece güvensiz olduğu anlamına gelir, bu nedenle artık çok az uygulama onu kullanır.
  • RC4, daha küçük veri akışlarında kullanılamaz, bu nedenle kullanımı diğer akış şifrelerinden daha niştir.
  • RC4 ayrıca kimlik doğrulama sağlamaz, bu nedenle Ortadaki Adam saldırısı meydana gelebilir ve RC4 şifre kullanıcısı daha akıllı olamaz.

Bir anahtar girişi, giriş anahtarı bilgisi olmadan tahmin edilemeyen 8 bitlik bir akış numarası üreten sözde rasgele bit oluşturucudur. Oluşturucunun çıkışına anahtar akışı denir ve X-or kullanılarak düz metin akış şifresiyle her seferinde bir bayt birleştirilir. (xor) işlemi.

formül:

A:BİLGİ

B:ANAHTAR

C:xor sonucu çıkan veri.

AxorB=C

CxorB=A

Örnek:

örneğin isminizi öğrenmek isteyen bir kullanıcıya kendi isminizi şifreleyerek göndermeye çalışıyorsunuz.

devrim isminin ikilik karşılığı 11010011 olsun. Bende ve kullanıcıda şifreyi çözen iki anahtar var. Xor kullanarak bilgiyi şifreleyip karşı tarafa göndereceğiz.

devrim:11010011

key:00111000 olsun

Not💡: Bende ve kullanıcıda kesinlikle aynı anahtar bulunmalıdır.

11010011

00111000

xor

sonuç:11101011

benim tarafım: 11010011xor00111000=11101011 sonucu çıkıyor. Tamam şimdi bu ne anlama geliyor?

açıklama: bu gönderdiğimiz ismi ve anahtarı xor kapısından geçirerek karşı tarafa gönderdik. Karşı taraf ise çıkan sonucu gene aynı anahtar ile xor kapısından geçirerek benim ismimi elde edecek sonuç bu.

11101011

00111000

xor

11010011

Kullanıcı Tarafı:11101011xor00111000=11010011

ve bu da tekrar devrim ismini elde ediyor. Yani basit bir xor kapısıyla bilgiyi gizleyip ve gönderip tekrar karşı tarafta aynı anahtar kullanarak elde ettik:

gönderen: devrim:11010011

alıcı: kullanıcı: 11010011:devrim

en basit ve güvenli bilgi gönderme yöntemidir.

Anahtar Oluşturma Algoritması –
S[0] ila S[255] öğeleriyle 256 baytlık bir durum vektörü S’yi başlatmak için 1 ila 256 bayt arasında değişken uzunlukta bir anahtar kullanılır. Şifreleme ve şifre çözme için, sistematik bir şekilde 255 girişten biri seçilerek S’den bir bayt k üretilir, ardından S’deki girişlere yeniden izin verilir.

Anahtar Zamanlama Algoritması:
Başlatma:S’nin girişleri, artan sırada 0 ila 255 arasındaki değerlere eşit olarak ayarlanır, geçici bir vektör T oluşturulur. k anahtarının uzunluğu 256 bayt ise, k, T’ye atanır. Aksi takdirde, uzunluk(k-len) bayt olan bir anahtar için, K’den kopyalandığı gibi T’nin ilk k-len öğeleri ve ardından K tekrarlanır. T’yi doldurmak için gerektiği kadar. Fikir şu şekilde gösterilmektedir:

for(int i=0;i<255;i++){

S[i] = i;

T[i] = K[i mod k — len];

}

Sözde rastgele oluşturma algoritması (Akış Oluşturma):

S vektörü başlatıldığında, giriş tuşu kullanılmayacaktır. Bu adımda, her S[i] algoritması için, S’nin mevcut konfigürasyonu tarafından dikte edilen bir şemaya göre S’deki başka bir bayt ile değiştirin. S[255]’e ulaştıktan sonra işlem tekrar S[0]’dan başlayarak devam eder.

i, j = 0;

while (true)

i = (i + 1)mod 256;

j = (j + S[i])mod 256;

Swap(S[i], S[j]);

t = (S[i] + S[j])mod 256;

k = S[t];

copied: geeksforgeeks.

Encrypt using X-Or():

bu linkten https://www.youtube.com/watch?v=VUwiDh0m_kg algoritmanın detayına bakabilirsiniz.

RC4 ALGORİTMASININ JAVA KODU

from github https://github.com/Devrim0/RC4-Encryption-Algorithm/blob/main/rc4/RC4.java

--

--

No responses yet