• DES algoritması ve çeşitleri. DES ve AES şifreleme algoritmaları

    • öğretici

    Hey %kullanıcıadı%!
    Birçok kişi, alandaki varsayılan standardın simetrik şifreleme uzun zamandır değerlendirildi DES algoritması. Bu yok edilemez algoritmaya yönelik ilk başarılı saldırı, standart olarak kabul edilmesinden 16 yıl sonra, 1993 yılında yayınlandı. Yazarın lineer kriptanaliz olarak adlandırdığı yöntem, 2 47 çift düz/şifreli metin varlığında, gizli anahtar 243 işlemde DES şifresi.
    Kesim altında, bu saldırının ana noktalarını özetlemeye çalışacağım.

    Doğrusal kriptanaliz

    Doğrusal kriptanaliz, bilinen bir anahtardan bilinmeyen bir şifreleme anahtarını kurtarmayı amaçlayan simetrik şifrelere yönelik özel bir saldırı türüdür. mesajları aç ve bunlara karşılık gelen şifreli metinler.

    Genel durumda, doğrusal kriptanalize dayalı bir saldırı aşağıdaki koşullara indirgenir. Saldırganın sahip olduğu büyük miktar aynı şifreleme anahtarı K kullanılarak elde edilen düz metin/şifreli metin çiftleri. Saldırganın amacı, K anahtarının bir kısmını veya tamamını kurtarmaktır.

    Saldırgan öncelikle şifreyi inceler ve sözde olanı bulur. istatistiksel analog, yani keyfi bir genel/özel metin çifti ve sabit bir anahtar için P ≠ 1/2 olasılıkla tutan aşağıdaki formun bir denklemi:
    P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
    burada Pn , Cn , Kn metnin, şifreli metnin ve anahtarın n'inci bitleridir.
    Böyle bir denklem bulunduktan sonra, saldırgan aşağıdaki algoritmayı kullanarak anahtarla ilgili 1 bitlik bilgiyi kurtarabilir.

    Algoritma 1
    T, hangi metinlerin sayısı olsun? Sol Taraf denklem (1) 0'dır, o zaman
    T>N/2 ise, burada N bilinen açık metinlerin sayısıdır.
    K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (P>1/2 olduğunda) veya 1 (P olduğunda<1/2).
    Aksi takdirde
    K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (P>1/2 olduğunda) veya 0 (P olduğunda<1/2).
    Algoritmanın başarısı doğrudan |P-1/2| değerine bağlıdır. ve mevcut düz metin/özel metin çiftlerinin sayısı N. Eşitliğin P olasılığı (1) 1/2'den ne kadar farklıysa, bir saldırı için gereken düz metin sayısı N o kadar az olur.

    Saldırının başarılı bir şekilde uygulanması için çözülmesi gereken iki sorun vardır:

    • (1) formunun etkili bir denklemi nasıl bulunur.
    • Böyle bir denklemi kullanarak anahtar hakkında birden fazla bilgi nasıl elde edilir.
    Örnek olarak DES şifresini kullanarak bu sorunların çözümünü düşünün.

    DES'in açıklaması

    Ama önce kısaca algoritmanın nasıl çalıştığını açıklayalım. DES hakkında yeterince şey söylendi. Şifrenin tam açıklaması Wikipedia'da bulunabilir. Bununla birlikte, saldırıyı daha fazla açıklamak için, en iyi şekilde önceden tanıtılan bir dizi tanıma ihtiyacımız var.

    Yani DES, Feistel ağına dayalı bir blok şifredir. Şifrenin blok boyutu 64 bit ve anahtar boyutu 56 bittir. DES algoritmasının şifreleme şemasını düşünün.

    Şekilden de görülebileceği gibi şifreleme sırasında metin üzerinde aşağıdaki işlemler yapılmaktadır:

    1. İlk bit takası. Bu aşamada, giriş bloğunun bitleri belirli bir sırada karıştırılır.
    2. Bundan sonra, karıştırılan bitler, Feistel fonksiyonunun girişine beslenen iki yarıya bölünür. Standart DES için Feistel ağı 16 tur içerir, ancak algoritmanın başka varyantları da vardır.
    3. Son dönüşüm turunda elde edilen iki blok birleştirilir ve ortaya çıkan blok üzerinde başka bir permütasyon gerçekleştirilir.

    Feistel ağının her turunda, mesajın en önemsiz 32 biti f işlevinden geçirilir:

    Bu aşamada gerçekleştirilen işlemleri göz önünde bulundurun:

    1. Giriş bloğu, 32 bitlik bloğu 48 bitlik bir bloğa dönüştüren bir uzantı fonksiyonu E'den geçirilir.
    2. Ortaya çıkan blok K i yuvarlak anahtarına eklenir.
    3. Önceki adımın sonucu, her biri 6 bitlik 8 bloğa bölünür.
    4. Ortaya çıkan Bi bloklarının her biri, 6 bitlik bir diziyi 4 bitlik bir blokla değiştiren bir S-Box i ikame fonksiyonundan geçirilir.
    5. Ortaya çıkan 32 bitlik blok, P permütasyonundan geçirilir ve f fonksiyonunun sonucu olarak döndürülür.

    Şifrenin kriptanalizi açısından bizim için en ilginç olanı, f fonksiyonunun giriş ve çıkış verileri arasındaki bağlantıyı gizlemek için tasarlanmış S bloklarıdır. DES'e başarılı bir şekilde saldırmak için, önce S-kutularının her biri için istatistiksel karşılıklar oluştururuz ve ardından bunları tüm şifreye genişletiriz.

    S bloklarının analizi

    Her bir S kutusu, girdi olarak 6 bitlik bir dizi alır ve bu tür her dizi için sabit bir 4 bitlik değer döndürülür. Onlar. Toplam 64 giriş ve çıkış seçeneği vardır. Görevimiz, S bloklarının giriş ve çıkış verileri arasındaki ilişkiyi göstermektir. Örneğin, DES şifresinin üçüncü S kutusu için, 64 vakanın 38'inde giriş dizisinin 3. biti, çıkış dizisinin 3. bitine eşittir. Bu nedenle, üçüncü S için aşağıdaki istatistiksel analoğu bulduk. -kutu:
    S 3 (x) = x, P=38/64 olasılıkla karşılanır.
    Denklemin her iki tarafı da 1 bitlik bilgiyi temsil eder. Bu nedenle, sol ve sağ kısımlar birbirinden bağımsız olsaydı, denklemin 1/2 olasılıkla sağlanması gerekirdi. Böylece, DES algoritmasının 3. S-box'ının girdileri ve çıktıları arasındaki ilişkiyi az önce göstermiş olduk.

    Genel durumda S-kutusunun istatistiksel bir benzerini nasıl bulabileceğinizi düşünün.

    Bir S-box S a , 1 ≤ α ≤ 63 ve 1 ≤ β ≤ 15 için, NS a (α, β) değeri, α bitlerinin üzerine yerleştirilmiş S a giriş bitlerinin 64 olası XOR'undan kaç kez olduğunu açıklar β bitlerinin üzerine yerleştirilmiş çıkış bitlerinin XOR'una eşittir, yani:
    burada sembol mantıksal bir VE'dir.
    NS a'nın (α, β) 32'den en çok farklı olduğu α ve β değerleri, S-box S a'nın en verimli istatistiksel analoğunu tanımlar.

    α = 16 ve β = 15 NS 5 (16, 15)=12 için en verimli analog DES şifresinin 5. S-kutusunda bulunmuştur. Bu, aşağıdaki denklemin doğru olduğu anlamına gelir: Z=Y ⊕ Y ⊕ Y ⊕ Y, burada Z, S-box giriş dizisidir ve Y, çıkış dizisidir.
    Veya DES algoritmasında, S-kutusuna girmeden önce verilerin yuvarlak bir anahtarla modulo 2 eklendiği gerçeğini dikkate alarak, yani. Z = X ⊕ K elde ederiz
    X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, burada X ve Y, f fonksiyonunun permütasyonsuz giriş ve çıkış verileridir.
    Ortaya çıkan denklem, DES algoritmasının tüm turlarında aynı olasılıkla P=12/64 ile yürütülür.
    Aşağıdaki tablo etkili olanları listeler, örn. P=1/2'den en büyük sapmaya sahip olan, DES algoritmasının her s bloğu için istatistiksel analoglar.

    Çoklu DES Turları için İstatistiksel Analoglar Oluşturma

    Şimdi birkaç DES turunun istatistiksel analoglarının nasıl birleştirilebileceğini ve sonuç olarak tüm şifre için istatistiksel bir analogun nasıl elde edilebileceğini gösterelim.
    Bunu yapmak için, algoritmanın üç aşamalı bir versiyonunu düşünün:

    X(2) değerinin belirli bitlerini hesaplamak için 5. s-kutusunun verimli istatistiksel analojisini uygulayalım.
    12/64 olasılıkla f fonksiyonunun eşitliği sağladığını biliyoruz. X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, burada X, 5. S-kutusunun ikinci giriş bitidir, esasen giriş bitlerinin genişletilmesinden sonra elde edilen dizinin 26. bitidir. Uzatma fonksiyonu analiz edildiğinde, X(1) dizisinin 17. bitinin 26. bitin yerine çıktığı belirlenebilir.
    Benzer şekilde, Y,…, Y, P permütasyonundan önce elde edilen dizinin esasen 17., 18., 19. ve 20. bitleridir.P permütasyonunu inceleyerek, Y,…, Y bitlerinin aslında Y(1) bitleri olduğunu buluruz. ), Y(1), Y(1), Y(1).
    Denklemlerde yer alan anahtar bit K, birinci tur K1'in 26. alt anahtar bitidir ve daha sonra istatistiksel karşılığı aşağıdaki formu alır:
    X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
    Buradan, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) olasılıkla P=12/64.
    Y(1) dizisinin 3, 8, 14, 25 bitini bilerek, X(2) dizisinin 3, 8, 14, 25 bitini bulabilirsiniz:
    X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) veya denklem (2) dikkate alınarak
    X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) 12/64 olasılıkla.

    Son turu kullanarak benzer bir ifade bulalım. Bu sefer denklemimiz var
    X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
    Çünkü
    X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = СL ⊕ СL ⊕ СL ⊕ СL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
    anladık
    X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = СL ⊕ СL ⊕ СL ⊕ СL ⊕ X(3) ⊕ K3(4) 12/64 olasılıkla.

    (3) ve (4) denklemlerinin doğru kısımlarını eşitleyerek elde ederiz
    СL ⊕ СL ⊕ СL ⊕ СL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 olasılıkla (12/64) 2 +(1-12/64) 2 .
    X(1) = PR ve X(3) = CR olduğu gerçeğini dikkate alarak istatistiksel bir analog elde ederiz.
    СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
    (12/64) 2 +(1-12/64) 2 =0.7 olasılıkla gerçekleştirilir.
    Yukarıda açıklanan istatistiksel analog aşağıdaki gibi grafiksel olarak gösterilebilir (şekildeki bitler sağdan sola ve sıfırdan başlayarak numaralandırılmıştır):

    Denklemin sol tarafındaki tüm bitler saldırgan tarafından bilinir, böylece Algoritma 1'i uygulayabilir ve K1 ⊕ K3 değerini bulabilir. Bu istatistiksel analoğu kullanarak K şifreleme anahtarının 1 değil 12 bitini açmanın nasıl mümkün olduğunu gösterelim.

    Bilinen düz metinle DES'e saldırı

    İşte saldırıyı genişletebileceğiniz ve ilk turun alt anahtarının 6 bitini hemen alabileceğiniz bir yol.
    Denklem (5)'i derlerken, F1(PR, K1) değerini bilmediğimizi dikkate aldık. Bu nedenle istatistiksel analoğu K1 ⊕ PR'yi kullandık.
    K1 ⊕ PR ifadesi yerine F1(PR, K1) değerini döndürür ve aşağıdaki denklemi elde ederiz:
    CL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , 12/64 olasılıkla yürütülecek. Üçüncü turdan sadece istatistiksel analogu bıraktığımız için olasılık değişti, diğer tüm değerler sabitlendi.

    F1(PR, K1) değerinin 5. S-kutusunun giriş bitlerinden, yani K1 anahtarının bitlerinden ve PR bloğunun bitlerinden etkilendiğini zaten yukarıda belirledik. Yalnızca bir dizi açık/kapalı metne sahip olarak K1 değerinin nasıl geri yüklenebileceğini gösterelim. Bunu yapmak için Algoritma 2'yi kullanıyoruz.

    Algoritma 2
    Saldırıdan önce bilinen açık/kapalı metin çiftlerinin sayısı N olsun. Ardından, anahtarı açmak için aşağıdaki adımları uygulamanız gerekir.
    için (i=0; ben<64; i++) do
    {
    için(j=0;j {
    eğer(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) ise o zaman
    T ben =T ben +1
    }
    }
    Muhtemel bir dizi K1 olarak, |T i -N/2| ifadesi için böyle bir i değeri alınır. maksimum değere sahiptir.

    Yeterli sayıda bilinen düz metinle, algoritma büyük olasılıkla birinci yuvarlak alt anahtar K1'in altı bitinin doğru değerini döndürecektir. Bu, i değişkeni K1'e eşit değilse, o zaman F1(PR j , K) fonksiyonunun değerinin rastgele olacağı ve sol tarafın böyle bir i değeri için denklem sayısının olacağı gerçeğiyle açıklanır. sıfıra eşittir, N/2 eğiliminde olacaktır. Alt anahtar doğru tahmin edilirse, sol kısım 12/64 olasılıkla sabit bit K3'e eşit olacaktır. Onlar. N/2'den önemli bir sapma olacaktır.

    K1 alt anahtarının 6 bitini aldıktan sonra, benzer şekilde K3 alt anahtarının 6 bitini açabilirsiniz. Bunun için gereken tek şey denklem (6)'da C'yi P ile ve K1'i K3 ile değiştirmektir:
    PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
    Algoritma 2, K3'ün doğru değerini döndürür çünkü DES algoritmasının şifre çözme işlemi şifreleme işlemiyle aynıdır, sadece anahtar sırası tersine çevrilir. Böylece şifre çözmenin ilk turunda K3 anahtarı ve son turda K1 anahtarı kullanılır.

    6 bit K1 ve K3 alt anahtarı alan saldırgan, K şifresinin ortak anahtarının 12 bitini kurtarır, çünkü yuvarlak tuşlar, K anahtarının olağan permütasyonudur. Başarılı bir saldırı için gereken düz metin sayısı, istatistiksel karşılığın olasılığına bağlıdır. 12 bitlik 3 turlu bir DES anahtarını kırmak için 100 genel/özel metin çifti yeterlidir. 12 bitlik 16 yuvarlak bir DES anahtarını kırmak için yaklaşık 244 çift metin gerekir. Anahtarın kalan 44 biti olağan numaralandırma ile açılır.

    Dipnot: Özel anahtarlı en iyi bilinen şifreleme sistemlerinden biri DES - Veri Şifreleme Standardıdır. Bu sistem, veri şifreleme alanında bir devlet standardı statüsü alan ilk sistemdi. Ve eski Amerikan DES standardı artık resmi statüsünü kaybetmiş olsa da, bu algoritma kriptografi okurken hala ilgiyi hak ediyor. Ayrıca, bu ders "çift DES"in ne olduğunu, "ortada buluşma" saldırısının ne olduğunu ve nasıl düzeltileceğini açıklar. Aynı ders, yeni ABD blok şifreleme standardı olan Rijndael algoritmasını kısaca tartışıyor.

    dersin amacı: öğrenciye DES şifreleme algoritması hakkında temel bilgileri tanıtmak.

    temel bilgiler

    Özel anahtarlı en ünlü şifreleme sistemlerinden biri DES - Veri Şifreleme Standardı. Bu sistem, veri şifreleme alanında bir devlet standardı statüsü alan ilk sistemdi. IBM uzmanları tarafından geliştirildi ve 1977'de ABD'de yürürlüğe girdi. algoritma DES farklı bilgi işlem sistemleri arasında verilerin depolanması ve aktarılmasında yaygın olarak kullanılır; posta sistemlerinde, elektronik çekme sistemlerinde ve elektronik alışverişte ticari bilgi. Standart DES hem yazılım hem de donanım olarak uygulanmaktadır. Farklı ülkelerden şirketler, kullanarak dijital cihazların seri üretimini başlattı. DES veri şifreleme için. Tüm cihazlar, standarda uygunluk için zorunlu sertifikayı geçti.

    Bu sistemin bir süredir devlet standardı statüsüne sahip olmamasına rağmen, hala yaygın olarak kullanılmaktadır ve özel anahtarlı blok şifreleri incelerken dikkati hak etmektedir.

    Algoritmadaki anahtar uzunluğu DES 56 bittir. Bu gerçekle birlikte, yeteneği ile ilgili ana tartışma DESçeşitli saldırılara direnmek. Bildiğiniz gibi, özel anahtara sahip herhangi bir blok şifre, olası tüm anahtar kombinasyonları denenerek kırılabilir. 56 bitlik bir anahtar uzunluğu ile 256 farklı anahtar mümkündür. Bir bilgisayar bir saniyede 1.000.000 anahtar sayarsa (ki bu yaklaşık olarak 220'ye eşittir), o zaman 256 anahtarın tümünün sayılması 236 saniye veya iki bin yıldan biraz daha uzun sürer ki bu elbette saldırganlar için kabul edilemez.

    Ancak, daha pahalı ve daha hızlı bilgi işlem sistemleri Kişisel bilgisayar. Örneğin, paralel bilgi işlem için bir milyon işlemciyi birleştirmek mümkünse, maksimum anahtar seçim süresi yaklaşık 18 saate düşürülür. Bu süre çok uzun değildir ve bu kadar pahalı ekipmanlarla donatılmış bir kriptanalist, makul bir sürede kolayca DES şifreli bir saldırı gerçekleştirebilir.

    Aynı zamanda, sistem not edilebilir DESçok az değere sahip verileri şifrelemek için küçük ve orta ölçekli uygulamalarda kullanılabilir. Ulusal öneme sahip veya önemli ticari değere sahip verileri şifrelemek için sistem, DESşu anda elbette kullanılmamalıdır. 2001 yılında, Amerika Birleşik Devletleri'nde özel olarak duyurulan bir yarışmanın ardından, yeni bir blok şifreleme standardı kabul edildi. AES (Gelişmiş Şifreleme Standardı), şifreye dayalıydı Rijndael Belçikalı uzmanlar tarafından geliştirilmiştir. Bu şifre dersin sonunda tartışılmaktadır.

    Ana ayarlar DES: blok boyutu 64 bit, anahtar uzunluğu 56 bit, tur sayısı - 16. DES iki şubesi olan klasik bir Feishtel ağıdır. Algoritma, 64 bitlik bir giriş veri bloğunu birkaç turda 64 bitlik bir çıkış bloğuna dönüştürür. Standart DES permütasyon, ikame ve gam oluşturmanın birleşik kullanımı üzerine kurulmuştur. Şifrelenmiş veriler ikili biçimde olmalıdır.

    şifreleme

    Genel yapı DESŞek. 4.1. Her 64 bitlik kaynak veri bloğunu şifreleme işlemi üç aşamaya ayrılabilir:

    1. veri bloğunun ilk hazırlığı;
    2. "Ana döngü" nün 16 turu;
    3. veri bloğunun son işlenmesi.

    İlk aşamada, ilk permütasyon Bitlerin belirli bir şekilde yeniden sıralandığı 64 bitlik orijinal metin bloğu.

    Bir sonraki (ana) aşamada, blok her biri 32 bitlik iki kısma (dallara) bölünür. Sağ dal, bir F işlevi kullanılarak dönüştürülür ve karşılık gelen kısmi anahtar, özel bir anahtar dönüştürme algoritması kullanılarak ana şifreleme anahtarından elde edilir. Daha sonra veri, bloğun sol ve sağ dalları arasında değiş tokuş edilir. Bu, bir döngüde 16 kez tekrarlanır.

    Son olarak üçüncü aşamada, ana döngünün on altı adımından sonra elde edilen sonuç değiştirilir. Bu permütasyon orijinal permütasyonun tersidir.


    Pirinç. 4.1.

    Standarda göre kriptografik dönüşümün tüm aşamalarını daha ayrıntılı olarak ele alalım. DES.

    İlk aşamada, 64 bitlik kaynak veri bloğu bir ilk permütasyona tabi tutulur. Literatürde bu operasyona bazen "beyazlatma" - beyazlatma denir. İlk permütasyon sırasında, veri bloğunun bitleri belirli bir şekilde yeniden sıralanır. Bu işlem, orijinal mesaja bir miktar "rastgelelik" vererek, istatistiksel yöntemlerle kriptanaliz kullanma olasılığını azaltır.

    Veri bloğunun başlangıç ​​permütasyonu ile eş zamanlı olarak, anahtarın 56 bitlik bir başlangıç ​​permütasyonu gerçekleştirilir. Şek. 4.1. döngülerin her birinde karşılık gelen 48-bit kısmi anahtar Ki'nin kullanıldığı görülebilir. K i anahtarları, ilk anahtarın bitlerinin her biri birkaç kez kullanılarak belirli bir algoritmaya göre elde edilir. Her turda, 56 bitlik anahtar iki 28 bitlik yarıya bölünür. Yarımlar daha sonra tur sayısına bağlı olarak bir veya iki vuruş sola kaydırılır. Kaydırma işleminden sonra 56 bitten 48 tanesi belirli bir şekilde seçilir. Bu sadece bitlerin bir alt kümesini seçmekle kalmayıp aynı zamanda sıralarını da değiştirdiğinden, bu işleme "takas-takas" işlemi denir. Sonuç, 48 bitlik bir dizidir. Ortalama olarak, orijinal 56 bitlik anahtarın her bir biti, 16 alt anahtarın 14'ünde kullanılır, ancak tüm bitler aynı sayıda kullanılmaz.

    Ardından, Feishtel ağına göre düzenlenen ve 16 özdeş turdan oluşan ana dönüşüm döngüsü gerçekleştirilir. Bu durumda, her turda (Şekil 4.2), bir sonraki turda işlenen bir ara 64 bitlik değer elde edilir.


    Pirinç. 4.2.

    Her bir ara değerin sol ve sağ dalları, L ve R olarak gösterilen ayrı 32 bit değerler olarak ele alınır.

    İlk olarak, R i bloğunun sağ tarafı, bir permütasyon artı 16 bitlik bir uzantı tanımlayan bir tablo kullanılarak 48 bit'e genişletilir. Bu işlem, XOR işlemini gerçekleştirmek için sağ yarının boyutunu anahtarın boyutuyla eşleşecek şekilde ayarlar. Ek olarak, bu işlemin yürütülmesi nedeniyle, sonucun tüm bitlerinin orijinal verilerin ve anahtarın bitlerine bağımlılığı daha hızlı artar (buna "çığ etkisi" denir). Bir veya başka bir şifreleme algoritması kullanırken çığ etkisi ne kadar güçlüyse o kadar iyidir.

    Genişletme permütasyonu gerçekleştirildikten sonra, ortaya çıkan 48 bitlik değer, 48 bitlik K i alt anahtarıyla XORlanır. Daha sonra ortaya çıkan 48 bitlik değer, ikame bloğu S'nin girişine beslenir (İngilizce'den. ikame - ikame), sonuç 32-bit değeri olan . İkame, sekiz ikame kutusunda veya sekiz S kutusunda gerçekleştirilir. Bu DES'i yürütürken, bırakın yazılım uygulamasını, kağıt üzerinde oldukça karmaşık görünüyor! Tamamen uygun olarak doğru ve en iyi şekilde işleyen bir program geliştirin. DES muhtemelen sadece deneyimli programcılar içindir. İlk permütasyon veya genişleme permütasyonu gibi yazılım uygulamasında bazı zorluklar ortaya çıkar. Bu zorluklar, başlangıçta uygulanması planlanmış olmasından kaynaklanmaktadır. DES sadece donanımda. Standartta kullanılan tüm işlemler donanım birimleri tarafından kolaylıkla yapılmakta olup, uygulamada herhangi bir zorluk yaşanmamaktadır. Bununla birlikte, standardın yayınlanmasından bir süre sonra, yazılım geliştiriciler bir kenara çekilmemeye ve şifreleme sistemlerinin oluşturulmasına da karar verdiler. Daha öte DES hem donanım hem de yazılım olarak uygulanmaktadır.

    algoritma DES

    DES algoritmasının ana avantajları:

    Yalnızca bir 56 bitlik anahtar kullanılır;

    · bir paketi kullanarak bir mesajı şifreledikten sonra, şifresini çözmek için başka herhangi bir paketi kullanabilirsiniz;

    Algoritmanın göreceli basitliği, yüksek bilgi işleme hızı sağlar;

    algoritmanın oldukça yüksek kararlılığı.

    DES, 56 bitlik bir anahtar kullanarak 64 bitlik veri bloklarını şifreler. DES'te şifre çözme, şifrelemenin ters işlemidir ve şifreleme işlemlerinin ters sırayla tekrarlanmasıyla gerçekleştirilir (görünüşe göre, bu her zaman yapılmaz. Daha sonra, şifreleme ve şifre çözmenin farklı algoritmalar kullanılarak gerçekleştirildiği şifreleri ele alacağız).

    Şifreleme işlemi, 64 bit bloğun ilk bit takasından, on altı tur şifrelemeden ve son olarak ters bit takasından oluşur (Şekil 1).

    Bu makalede verilen TÜM tabloların STANDART olduğu ve bu nedenle algoritma uygulamanıza değiştirilmeden dahil edilmesi gerektiği hemen belirtilmelidir. Tablolardaki tüm permütasyonlar ve kodlar, geliştiriciler tarafından bir anahtar seçerek şifre çözme işlemini olabildiğince zorlaştıracak şekilde seçilir. DES algoritmasının yapısı Şekil 2'de gösterilmiştir.

    İncir. 2. DES Şifreleme Algoritmasının Yapısı

    Sonraki 8 baytlık T bloğunun, ilk permütasyon matrisi IP (Tablo 1) kullanılarak aşağıdaki gibi dönüştürülen dosyadan okunmasına izin verin: T bloğunun 58. biti, bit 1, bit 50 - bit 2, vb. olur, bu da sonuç : T(0) = IP(T).

    Ortaya çıkan bit dizisi T(0), her biri 32 bitlik iki diziye bölünür: L(0) - sol veya yüksek bitler, R(0) - sağ veya düşük bitler.

    Tablo 1: IP İlk Permütasyon Matrisi

    58 50 42 34 26 18 10 02

    60 52 44 36 28 20 12 04

    62 54 46 38 30 22 14 06

    64 56 48 40 32 24 16 08

    57 49 41 33 25 17 09 01

    59 51 43 35 27 19 11 03

    61 53 45 37 29 21 13 05

    63 55 47 39 31 23 15 07

    Daha sonra 16 yinelemeden oluşan şifreleme gerçekleştirilir. i'nci yinelemenin sonucu aşağıdaki formüllerle açıklanır:

    R(i) = L(i-1) xveya f(R(i-1), K(i)) ,

    burada xor ÖZEL VEYA işlemidir.

    f işlevine şifreleme işlevi denir. Argümanları, (i-1)-inci yinelemede elde edilen 32-bit dizi R(i-1) ve 64-bit anahtar K'nin dönüştürülmesinin sonucu olan 48-bit anahtar K(i)'dir. K(i) anahtarlarını türetmek için şifreleme işlevi ve algoritması aşağıda açıklanmıştır.

    16. tekrarda, R(16) ve L(16) dizileri (permütasyon olmadan) elde edilir ve bunlar 64 bitlik bir R(16)L(16) dizisi halinde birleştirilir.

    Daha sonra bu dizinin bitlerinin konumları, IP -1 matrisine göre yeniden düzenlenir (tablo 2).

    Tablo 2: IP-1 Ters Permütasyon Matrisi

    40 08 48 16 56 24 64 32

    39 07 47 15 55 23 63 31

    38 06 46 14 54 22 62 30

    37 05 45 13 53 21 61 29

    36 04 44 12 52 20 60 28

    35 03 43 11 51 19 59 27

    34 02 42 10 50 18 58 26

    33 01 41 09 49 17 57 25

    IP -1 ve IP matrisleri şu şekilde ilişkilidir: IP -1 matrisinin 1. öğesinin değeri 40 ve IP matrisinin 40. öğesinin değeri 1, 2. öğesinin değeri IP -1 matrisinin elemanı 8'dir ve 8. matris elemanı IP'nin değeri 2'dir vb.

    Veri şifre çözme işlemi, şifreleme işleminin tersidir. Tüm adımlar ters sırayla gerçekleştirilmelidir. Bu, şifresi çözülecek verinin önce IP-1 matrisine göre yeniden düzenlenmesi ve daha sonra R(16)L(16) bit dizisi üzerinde şifreleme işleminde olduğu gibi aynı işlemlerin ters sırada yapılması anlamına gelir.

    Yinelemeli şifre çözme işlemi aşağıdaki formüllerle açıklanabilir:

    R(i-1) = L(i), ben = 1, 2, ..., 16;

    L(i-1) = R(i) xveya f(L(i), K(i)), ben = 1, 2, ..., 16 .

    16. iterasyonda, 64 bitlik bir L(0)R(0) dizisi halinde birleştirilen L(0) ve R(0) dizileri elde edilir.

    Bu dizinin bit konumları daha sonra IP matrisine göre yeniden düzenlenir. Bu permütasyonun sonucu orijinal 64 bitlik dizidir.

    Şimdi şifreleme fonksiyonunu f(R(i-1),K(i)) ele alalım. Şekil l'de şematik olarak gösterilmiştir. 3.


    Şek. 3. f(R(i-1), K(i)) fonksiyonunun hesaplanması

    f fonksiyonunun değerini hesaplamak için aşağıdaki matris fonksiyonları kullanılır:

    E - 32 bitlik bir dizinin 48 bit'e genişletilmesi,

    S1, S2, ... , S8 - 6 bitlik bir bloğu 4 bitlik bir bloğa dönüştürme,

    P, 32 bitlik bir dizideki bir bit permütasyonudur.

    Uzatma işlevi E, Tablo 3'te tanımlanmıştır. Bu tabloya göre, E(R(i-1))'in ilk 3 biti 32, 1 ve 2 bitleridir ve sonuncusu 31, 32 ve 1'dir.

    Tablo 3: Uzatma işlevi E

    32 01 02 03 04 05

    04 05 06 07 08 09

    08 09 10 11 12 13

    12 13 14 15 16 17

    16 17 18 19 20 21

    20 21 22 23 24 25

    24 25 26 27 28 29

    28 29 30 31 32 01

    E(R(i-1)) işlevinin sonucu, 48 bitlik anahtar K(i) ile modulo 2 (xor işlemi) eklenen 48 bitlik bir dizidir. Sonuç, sekiz adet 6 bitlik B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8) bloğuna bölünmüş 48 bitlik bir dizidir. Yani:

    E(R(i-1)) xveya K(i) = B(1)B(2)...B(8) .

    S1, S2, ... , S8 fonksiyonları Tablo 4'te tanımlanmıştır.

    Tablo 4

    tablo.4'e. ek açıklamalar gereklidir. Sj matris fonksiyonunun girişinin 6 bitlik bir blok B(j) = b1b2b3b4b5b6 olmasına izin verin, ardından iki bitlik b1b6 sayısı matrisin satır numarasını ve b2b3b4b5 sütun numarasını gösterir. Sj(B(j))'nin sonucu, belirtilen satır ve sütunun kesişme noktasında bulunan 4 bitlik bir öğedir.

    Örneğin, B(1)=011011. Daha sonra S1(В(1)) 1. satır ile 13. sütunun kesiştiği noktada bulunur. 1. satırın 13. sütunu 5 olarak ayarlanır. Dolayısıyla, S1(011011)=0101.

    Seçim işlemini 6 bitlik B(1), B(2), ..., B(8) bloklarının her birine uygulayarak, 32 bitlik bir dizi S1(B(1))S2(B(2) elde ederiz. )S3( B(3)...S8(B(8)).

    Son olarak, şifreleme işlevinin sonucunu elde etmek için bu dizinin bitlerini yeniden düzenlemeniz gerekir. Bunun için permütasyon fonksiyonu P kullanılır (Tablo 5). Giriş dizisinde, bitler ters çevrilir, böylece bit 16, bit 1 olur, bit 7, bit 2 olur ve bu böyle devam eder.

    Tablo 5: Permütasyon işlevi P

    Böylece,

    f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

    Veri şifreleme algoritmasının açıklamasını tamamlamak için geriye 48 bitlik K(i), i=1...16 anahtarlarını elde etmek için bir algoritma vermek kalıyor. Her yinelemede, başlangıç ​​anahtarı K'den hesaplanan yeni bir anahtar değeri K(i) kullanılır. K, 8,16,24,32,40,48, 56, 64.

    Kontrol bitlerini kaldırmak ve geri kalanını yeniden düzenlemek için, anahtarın ilk hazırlığının G işlevi kullanılır (Tablo 6).

    Tablo 6

    İlk anahtar hazırlığının Matrix G'si

    57 49 41 33 25 17 09

    01 58 50 42 34 26 18

    10 02 59 51 43 35 27

    19 11 03 60 52 44 36

    63 55 47 39 31 23 15

    07 62 54 46 38 30 22

    14 06 61 53 45 37 29

    21 13 05 28 20 12 04

    G(K) dönüşümünün sonucu iki 28 bitlik C(0) ve D(0) bloğuna bölünür ve C(0), K'nin 57, 49, ..., 44, 36 bitlerinden oluşacaktır. anahtarı ve D(0 ), K anahtarının 63, 55, ..., 12, 4 bitlerinden oluşacaktır. C(0) ve D(0), C(i) ve D(i) tanımlandıktan sonra, i =1...16, yinelemeli olarak tanımlanır. Bunun için, Tablo 7'de gösterildiği gibi, yineleme sayısına bağlı olarak bir veya iki bitlik bir sola döngüsel kaydırma uygulanır.

    Tablo 7

    Anahtar hesaplama için vardiya tablosu

    Yineleme numarası Kaydırma (bit)
    01 1
    02 1
    03 2
    04 2
    05 2
    06 2
    07 2
    08 2
    09 1
    10 2
    11 2
    12 2
    13 2
    14 2
    15 2
    16 1

    Ortaya çıkan değer yine H matrisine göre "karıştırılır" (Tablo 8).

    Tablo 8: Anahtar Sonlandırma Matrisi H

    14 17 11 24 01 05

    03 28 15 06 21 10

    23 19 12 04 26 08

    16 07 27 20 13 02

    41 52 31 37 47 55

    30 40 51 45 33 48

    44 49 39 56 34 53

    46 42 50 36 29 32

    K(i) anahtarı, C(i)D(i) dizisinin 14, 17, ..., 29, 32 bitlerinden oluşacaktır. Böylece:

    K(i) = H(C(i)D(i))

    Anahtar hesaplama algoritmasının blok diyagramı Şekil 4'te gösterilmiştir.

    Şekil 4. K(i) anahtarını hesaplamak için algoritmanın blok diyagramı

    Orijinal metnin geri yüklenmesi bu algoritmaya göre gerçekleştirilir, ancak önce anahtarı kullanırsınız.

    K(15), ardından - K(14) vb. Şimdi yazarın neden yukarıdaki matrisleri kullanmanızı şiddetle tavsiye ettiğini anlamalısınız. Keyfi olarak gitmeye başlarsanız, çok gizli bir şifre edinmelisiniz, ancak daha sonra kendiniz açamayacaksınız!

    DES Algoritmasının Çalışma Modları

    Ticari şifreleme sistemleri için tüm gereksinimlerin en eksiksiz şekilde karşılanması için, DES algoritmasının çeşitli çalışma modları uygulanmıştır. En yaygın kullanılan modlar şunlardır:

    Elektronik kod defteri (Elektronik Kod Kitabı) - ECB;

    bir dijital blok zinciri (Şifre Blok Zincirleme) - CBC;

    dijital geri bildirim (Şifre Geri Bildirimi) - CFB;

    Harici geri besleme (Çıkış Geri Beslemesi) - OFB.

    Bu modda, kaynak dosya M 64 bitlik bloklara bölünür (her biri 8 bayt): M = M(1)M(2)...M(n). Bu blokların her biri, aynı şifreleme anahtarı kullanılarak bağımsız olarak kodlanır (Şekil 5). Bu algoritmanın ana avantajı uygulama kolaylığıdır. Dezavantajı, yetenekli kriptanalistlere karşı nispeten zayıf dirençtir.

    DES standardı, ABD hükümeti ve ticari kuruluşlardaki hassas ancak sınıflandırılmamış bilgilere yetkisiz erişime karşı koruma sağlamak için tasarlanmıştır. Standardın altında yatan algoritma oldukça hızlı bir şekilde yayıldı ve 1980'de ABD Ulusal Standartlar ve Teknoloji Enstitüsü tarafından onaylandı. Bu noktadan sonra DES sadece isim olarak değil fiilen de bir standart haline gelmektedir. Veri ağlarındaki bilgileri şifrelemek ve şifresini çözmek için tasarlanmış yazılımlar ve özel mikro bilgisayarlar vardır.

    Bugüne kadar DES, ticari bilgi güvenliği sistemlerinde kullanılan en yaygın algoritmadır. Ayrıca, DES algoritmasının bu tür sistemlerde uygulanması, bir zevk işareti haline gelir.

    DES algoritmasının ana avantajları:

    Yalnızca bir 56 bitlik anahtar kullanılır;

    · bir paketi kullanarak bir mesajı şifreledikten sonra, şifresini çözmek için başka herhangi bir paketi kullanabilirsiniz;

    Algoritmanın göreceli basitliği, yüksek bilgi işleme hızı sağlar;

    algoritmanın oldukça yüksek kararlılığı.

    DES, 56 bitlik bir anahtar kullanarak 64 bitlik veri bloklarını şifreler. DES'te şifre çözme, şifrelemenin ters işlemidir ve şifreleme işlemlerinin ters sırayla tekrarlanmasıyla gerçekleştirilir (görünüşe göre, bu her zaman yapılmaz. Daha sonra, şifreleme ve şifre çözmenin farklı algoritmalar kullanılarak gerçekleştirildiği şifreleri ele alacağız).

    Şifreleme işlemi, 64 bit bloğun ilk bit takasından, on altı tur şifrelemeden ve son olarak ters bit takasından oluşur (Şekil 1).

    Bu makalede verilen TÜM tabloların STANDART olduğu ve bu nedenle algoritma uygulamanıza değiştirilmeden dahil edilmesi gerektiği hemen belirtilmelidir. Tablolardaki tüm permütasyonlar ve kodlar, geliştiriciler tarafından bir anahtar seçerek şifre çözme işlemini olabildiğince zorlaştıracak şekilde seçilir. DES algoritmasının yapısı, Şek. 2.

    Pirinç. 2.

    Sonraki 8 baytlık T bloğunun, ilk permütasyon matrisi IP (Tablo 1) kullanılarak aşağıdaki gibi dönüştürülen dosyadan okunmasına izin verin: T bloğunun 58. biti, bit 1 olur, bit 50, bit 2 olur, vb. sonuç : T(0) = IP(T).

    Ortaya çıkan bit dizisi T(0), her biri 32 bitlik iki diziye bölünür: L(0) - sol veya yüksek bitler, R(0) - sağ veya düşük bitler.

    Tablo 1: IP İlk Permütasyon Matrisi

    58 50 42 34 26 18 10 02

    60 52 44 36 28 20 12 04

    62 54 46 38 30 22 14 06

    64 56 48 40 32 24 16 08

    57 49 41 33 25 17 09 01

    59 51 43 35 27 19 11 03

    61 53 45 37 29 21 13 05

    63 55 47 39 31 23 15 07

    Daha sonra 16 yinelemeden oluşan şifreleme gerçekleştirilir. i'nci yinelemenin sonucu aşağıdaki formüllerle açıklanır:

    R(i) = L (i-1) xveya f (R(i-1), K(i)),

    burada xor ÖZEL VEYA işlemidir.

    f işlevine şifreleme işlevi denir. Argümanları, (i-1)-inci yinelemede elde edilen 32-bit dizi R(i-1) ve 64-bit anahtar K'nin dönüştürülmesinin sonucu olan 48-bit anahtar K(i)'dir. Ayrıntılı olarak, K(i) anahtarlarını türetmek için şifreleme işlevi ve algoritması aşağıda açıklanmaktadır.

    16. iterasyonda, 64 bitlik bir R(16) L(16) dizisi halinde birleştirilen R(16) ve L(16) dizileri (permütasyon olmadan) elde edilir.

    Daha sonra bu dizinin bitlerinin konumları IP-1 matrisine göre yeniden düzenlenir (Tablo 2).

    Tablo 2: IP-1 Ters Permütasyon Matrisi

    40 08 48 16 56 24 64 32

    39 07 47 15 55 23 63 31

    38 06 46 14 54 22 62 30

    37 05 45 13 53 21 61 29

    36 04 44 12 52 20 60 28

    35 03 43 11 51 19 59 27

    34 02 42 10 50 18 58 26

    33 01 41 09 49 17 57 25

    IP -1 ve IP matrisleri şu şekilde ilişkilidir: IP -1 matrisinin 1. öğesinin değeri 40 ve IP matrisinin 40. öğesinin değeri 1, 2. öğesinin değeri IP -1 matrisinin elemanı 8'dir ve 8. matris elemanı IP'nin değeri 2'dir vb.

    Veri şifre çözme işlemi, şifreleme işleminin tersidir. Tüm adımlar ters sırayla gerçekleştirilmelidir. Bu, şifresi çözülecek verinin önce IP-1 matrisine göre yeniden düzenlenmesi ve daha sonra R(16) L(16) bit dizisi üzerinde şifreleme işleminde olduğu gibi aynı işlemlerin ters sırada yapılması anlamına gelir.

    Yinelemeli şifre çözme işlemi aşağıdaki formüllerle açıklanabilir:

    R(i-1) = L(i), ben = 1, 2,…, 16;

    L (i-1) = R(i) x veya f (L(i), K(i)), ben = 1, 2,…, 16.

    16. iterasyonda, 64 bitlik bir L(0) R(0) dizisi halinde birleştirilen L(0) ve R(0) dizileri elde edilir.

    Bu dizinin bit konumları daha sonra IP matrisine göre yeniden düzenlenir. Bu permütasyonun sonucu orijinal 64 bitlik dizidir.

    Şimdi f (R(i-1), K(i)) şifreleme fonksiyonunu ele alalım. Şekil l'de şematik olarak gösterilmiştir. 3.


    Pirinç. 3.

    f fonksiyonunun değerini hesaplamak için aşağıdaki matris fonksiyonları kullanılır:

    E - 32 bitlik bir dizinin 48 bit'e genişletilmesi,

    S1, S2,…, S8 - 6-bit'ten 4-bit'e blok dönüştürme,

    P, 32 bitlik bir dizideki bir bit permütasyonudur.

    Uzatma işlevi E Tablo'da tanımlanmıştır. 3. Bu tabloya göre, E'nin (R(i-1)) ilk 3 biti 32, 1 ve 2 ve sonuncusu 31, 32 ve 1'dir.

    Tablo 3: Uzatma işlevi E

    32 01 02 03 04 05

    04 05 06 07 08 09

    08 09 10 11 12 13

    12 13 14 15 16 17

    16 17 18 19 20 21

    20 21 22 23 24 25

    24 25 26 27 28 29

    28 29 30 31 32 01

    E (R(i-1)) işlevinin sonucu, 48 bitlik anahtar K(i) ile modulo 2 (xor işlemi) eklenen 48 bitlik bir dizidir. Sekiz adet 6 bitlik B(1) B(2) B(3) B(4) B(5) B(6) B(7) B(8)'e bölünen 48 bitlik bir dizi elde edilir. Yani:

    E (R(i-1)) x veya K(i) = B(1) B(2)… B(8).

    S1, S2, ..., S8 fonksiyonları Tabloda tanımlanmıştır. 4.

    Tablo 4

    Masaya. 4. Ek açıklamalar gereklidir. Sj matris fonksiyonunun girişinin 6 bitlik bir blok B(j) = b1b2b3b4b5b6 olmasına izin verin, ardından iki bitlik b1b6 sayısı matrisin satır numarasını ve b2b3b4b5 sütun numarasını gösterir. Sj (B(j))'nin sonucu, belirtilen satır ve sütunun kesişme noktasında bulunan 4 bitlik bir eleman olacaktır.

    Örneğin, B(1)=011011. Daha sonra S1 (B(1)) 1. satır ile 13. sütunun kesiştiği noktada bulunur. 1. satırın 13. sütunu 5 olarak ayarlanır. Yani S1 (011011)=0101.

    Seçim işlemini 6 bitlik B(1), B(2),…, B(8) bloklarının her birine uygulayarak, 32 bitlik bir dizi S1 (B(1)) S2 (B(2)) elde ederiz. Ö3 (B( 3))… Ö8 (B(8)).

    Son olarak, şifreleme işlevinin sonucunu elde etmek için bu dizinin bitlerini yeniden düzenlemeniz gerekir. Bunun için permütasyon fonksiyonu P kullanılır (Tablo 5). Giriş dizisinde, bitler ters çevrilir, böylece bit 16, bit 1 olur, bit 7, bit 2 olur ve bu böyle devam eder.

    Tablo 5: Permütasyon işlevi P

    Böylece,

    f (R(i-1), K(i)) = P (S1 (B(1)),… S8 (B(8)))

    Veri şifreleme algoritmasının açıklamasını tamamlamak için geriye 48 bitlik K(i), i=1…16 anahtarlarını elde etmek için bir algoritma vermek kalıyor. Her yinelemede, başlangıç ​​anahtarı K'den hesaplanan yeni bir anahtar değeri K(i) kullanılır. K, 8,16,24,32,40,48, 56, 64.

    Kontrol bitlerini kaldırmak ve geri kalanını yeniden düzenlemek için, anahtarın ilk hazırlığının G işlevi kullanılır (Tablo 6).

    Tablo 6

    İlk anahtar hazırlığının Matrix G'si

    57 49 41 33 25 17 09

    01 58 50 42 34 26 18

    10 02 59 51 43 35 27

    19 11 03 60 52 44 36

    63 55 47 39 31 23 15

    07 62 54 46 38 30 22

    14 06 61 53 45 37 29

    21 13 05 28 20 12 04

    G(K) dönüşümünün sonucu iki 28 bitlik C(0) ve D(0) bloğuna bölünür; burada C(0), K anahtarının 57, 49,…, 44, 36 bitlerinden oluşacaktır, ve D(0), K anahtarının 63, 55,…, 12, 4 bitlerinden oluşacaktır. C(0) ve D(0) belirlendikten sonra, C(i) ve D(i), i=1 …16, yinelemeli olarak belirlenir. Bunun için, Tablo 1'de gösterildiği gibi, yineleme sayısına bağlı olarak bir veya iki bitlik bir sola döngüsel kaydırma uygulanır. 7.

    Tablo 7. Anahtar hesaplama için kaydırma tablosu

    Yineleme numarası

    Kaydırma (bit)

    Ortaya çıkan değer yine H matrisine göre "karıştırılır" (Tablo 8).

    Tablo 8: Anahtar Sonlandırma Matrisi H

    14 17 11 24 01 05

    03 28 15 06 21 10

    23 19 12 04 26 08

    16 07 27 20 13 02

    41 52 31 37 47 55

    30 40 51 45 33 48

    44 49 39 56 34 53

    46 42 50 36 29 32

    K(i) anahtarı, C(i) D(i) dizisinin 14, 17,…, 29, 32 bitlerinden oluşacaktır. Böylece:

    K(i) = H (C(i) D(i))

    Anahtar hesaplama algoritmasının blok diyagramı, Şek. 4.

    Pirinç. 4.

    Orijinal metnin geri yüklenmesi bu algoritmaya göre gerçekleştirilir, ancak önce K(15), ardından K(14) vb. Şimdi yazarın neden yukarıdaki matrisleri kullanmanızı şiddetle tavsiye ettiğini anlamalısınız. Keyfi olarak gitmeye başlarsanız, çok gizli bir şifre edinmelisiniz, ancak daha sonra kendiniz açamayacaksınız!

    DES(Veri Şifreleme Standardı) - Verileri hem şifrelemek hem de şifresini çözmek için bir anahtarın kullanıldığı simetrik bir şifreleme algoritması. DES, IBM tarafından geliştirildi ve 1977'de ABD hükümeti tarafından resmi bir standart (FTPS 46-3) olarak onaylandı. DES, 64 bitlik bloklara ve 16 döngülü bir Feistel ağ yapısına sahiptir; şifreleme için 56 bitlik bir anahtar kullanır. Algoritma, doğrusal olmayan (S kutuları) ve doğrusal (E, IP, IP-1 permütasyonları) dönüşümlerin bir kombinasyonunu kullanır. DES için birkaç mod önerilir:
  • elektronik kod kitabı modu (ECB - Elektronik Kod Kitabı),
  • blok zincirleme modu (CBC - Cipher Block Chaining),
  • şifreli metin geri bildirim modu (CFB - Şifreli Geri Bildirim),
  • çıkış geri besleme modu (OFB - Çıkış Geri Beslemesi).

    blok şifre

    Bir blok şifre için giriş verisi, bir n-bitlik blok ve bir k-bitlik anahtardır. Çıkışta, şifreleme dönüşümü uygulandıktan sonra, n-bitlik şifreli bir blok elde edilir ve giriş verilerindeki küçük farklılıklar, kural olarak, sonuçta önemli bir değişikliğe yol açar. Blok şifreler, belirli temel dönüşümlerin kaynak metin bloklarına tekrar tekrar uygulanmasıyla uygulanır.
    Temel dönüşümler:
  • Bloğun bir yerel bölümünde karmaşık dönüşüm.
  • Blok parçalar arasında kolay dönüşüm. Dönüşüm blok blok yapıldığından, ayrı bir adım olarak, kaynak verinin gerekli büyüklükteki bloklara bölünmesi gerekir. Bu durumda, ister metin belgeleri, görüntüler veya diğer dosyalar olsun, kaynak verilerin biçiminden bağımsız olarak, bunlar ikili bir biçimde yorumlanmalı ve ancak o zaman bloklara bölünmelidir. Yukarıdakilerin tümü, yazılım ve donanım araçlarıyla uygulanabilir.

    Feistel Ağ Dönüşümleri

    Bu, kaydırma yazmacının sol ve sağ yarısını temsil eden vektörler (bloklar) üzerinden bir dönüşümdür. DES algoritması, şifrelemede Feistel ağı tarafından ileri dönüşümü (bkz. Şekil 1) ve Feistel ağı tarafından şifre çözmeye ters dönüşümü (bkz. Şekil 2) kullanır.

    DES şifreleme şeması


    Kaynak metin - 64 biti bloke edin.
    Şifreli metin 64 bitlik bir bloktur.

    Şifreleme işlemi bir ilk permütasyon, 16 şifreleme döngüsü ve bir son permütasyondan oluşur.
    DES algoritmasının ayrıntılı şemasını düşünün:
    L i R ben =1,2\ldots.64 bit bloğun sol ve sağ yarısı L ​​ben R ben
    k ben - 48 bitlik anahtarlar
    f - şifreleme işlevi
    IP - ilk permütasyon
    IP -1 son permütasyondur. Tabloya göre, ilk IP permütasyonundan sonra ortaya çıkan IP(T) bloğunun ilk 3 biti giriş bloğu T'nin 58, 50, 42 bitleridir ve son 3 biti girişin 23, 15, 7 bitleridir. engellemek. Ayrıca, 64 bit blok IP(T), Feistel dönüşümünün 16 döngüsüne katılır.

    Feistel dönüşümünün 16 döngüsü:

    IP(T)'yi iki parça L 0 ,R 0'a ayırın, burada L 0 ,R 0, blok T0'ın sırasıyla 32 yüksek biti ve 32 düşük bitidir IP(T)= L 0 R 0

    T i -1 = L i -1 R i -1 (i-1) yinelemesinin sonucu olsun, ardından i'inci yinelemenin sonucu T i = L i R ben şu şekilde belirlenir:

    L ben = R ben - 1 L i'nin sol yarısı, önceki L ben - 1 R ben - 1 vektörünün sağ yarısına eşittir. Ve R i'nin sağ yarısı, L i - 1 ve f(R i - 1 , k i) modulo 2'nin bitsel toplamıdır.

    Feistel dönüşümünün 16 döngüsünde, f işlevi şifreleme rolünü oynar. f fonksiyonunu ayrıntılı olarak ele alalım.

    f işlevinin bağımsız değişkenleri, 56 bitlik orijinal şifre anahtarı k'nin dönüştürülmesinin sonucu olan 32 bitlik bir vektör Ri-1, 48 bitlik bir k i anahtarıdır.

    f fonksiyonunu hesaplamak için, uzantı fonksiyonu E, S-kutularının 8 dönüşümünden oluşan S dönüşümü ve P permütasyonu kullanılır.

    E fonksiyonu, R i - 1'den bazı bitleri çoğaltarak 32 bit vektör R i - 1'i 48 bit vektör E(R i - 1)'e genişletirken, E(R i - 1) vektörünün bit sırası belirtilir Tablo 2'de. E(Ri-1) vektörünün ilk üç biti, Ri-1 vektörünün 32, 1, 2 bitleridir. Tablo 2, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 bitlerinin kopyalandığını göstermektedir. E(Ri - 1) vektörünün son 3 biti, R i - 1 vektörünün 31, 32, 1 bitleridir. Permütasyondan sonra elde edilen E(Ri-1) bloğu, ki anahtarlarıyla modulo 2 eklenir ve daha sonra sekiz ardışık blok Bı ,B2 ,...B8 olarak sunulur.
    E(R ben - 1) = B 1 B 2 ...B 8
    Her Bj, 6 bitlik bir bloktur. Daha sonra, Bj bloklarının her biri, Sj dönüşümleri kullanılarak 4 bitlik bir B"j bloğuna dönüştürülür. Sj dönüşümleri tablo 3 tarafından belirlenir. B3 = 101111 olduğunu varsayalım ve B" 3'ü bulmak istiyoruz. . B 3'ün ilk ve son haneleri a, 0 sayısının ikili gösterimidir f(R i - 1, k i) (32 bit) fonksiyonunun değeri, 32 bitlik bir B bloğuna uygulanan P'nin değiştirilmesiyle elde edilir " 1 B" 2 ...B" 8. Permütasyon P, tablo 4'te verilmiştir.
    f(R ben - 1 ,k ben) = P(B" 1 B" 2 ...B" 8)
    Tablo 4'e göre, f fonksiyonunun eyleminden sonra ortaya çıkan vektörün ilk dört biti B" 1 B" 2 ...B" 8 vektörünün 16, 7, 20, 21 bitleridir.

    Anahtarların oluşturulması k i .
    K i anahtarları, k başlangıç ​​anahtarından (56 bit = 7 bayt veya ASCII'de 7 karakter) bu şekilde elde edilir. 8, 16, 24, 32, 40, 48, 56, 64 konumlarında bulunan sekiz bit k anahtarına eklenir, böylece her bayt tek sayıda bir içerir. Bu, anahtar değişimi ve depolamadaki hataları tespit etmek için kullanılır. Daha sonra genişletilmiş anahtar için bir permütasyon yapılır (eklenen bitler 8, 16, 24, 32, 40, 48, 56, 64 hariç). Böyle bir permütasyon Tablo 5'teki gibi tanımlanır.

    Bu permütasyon, her biri 28 bitlik iki blok C0 ve D0 tarafından tanımlanır. C 0'ın ilk 3 biti, genişletilmiş anahtarın 57, 49, 41 bitleridir. Ve D 0'ın ilk üç biti, genişletilmiş anahtarın 63, 55, 47 bitleridir. C i ,D i i=1,2,3…, Tablo 6'ya göre C i - 1 ,D i - 1'den bir veya iki sola çevrimsel kaydırma ile elde edilir.

    k i , i=1,…16 anahtarı, tablo 7'ye göre C i D i vektörünün bitlerinden (56 bit) seçilen 48 bitten oluşur. k i'nin birinci ve ikinci bitleri, C vektörünün 14, 17 bitleridir. ben D ben

    Son permütasyon IP - 1, T 16'ya etki eder ve konumu geri yüklemek için kullanılır. IP permütasyonunun tersidir. Nihai permütasyon Tablo 8 ile belirlenir.
    DES kullanma modları DES dört modda kullanılabilir.

  • Elektronik Kod Kitabı (ECB) Modu: DES'in bir blok şifre olarak yaygın kullanımı (bkz. Şekil 7).
  • Blok zincirleme modu (CBC - Cipher Block Chaining) (bkz. Şekil 8). Her bir sonraki blok C i i>=1, şifrelemeden önce bir sonraki düz metin bloğu olan M i + 1 ile modulo 2 eklenir. C 0 vektörü başlangıç ​​vektörüdür, günlük olarak değişir ve gizli tutulur.
  • Şifreli Geri Besleme (CFB) modu (bkz. Şekil 9). CFB modunda, bir blok "gamma" Z 0 ,Z 1 ,...Z i = DESk(C i - 1) üretilir. Başlangıç ​​vektörü C 0 gizli tutulur.
  • Çıkış Geri Besleme (OFB) modu (bkz. Şekil 10). OFB modunda, bir blok "gamma" oluşturulur Z 0 ,Z 1 ,... , i>=1
  • ECB modunun uygulanması kolaydır, ancak kritik analiz mümkündür
  • ECB ve OFB modlarında, bir 64-bit şifreli metin bloğu Ci'nin iletimi sırasında bozulma, yalnızca ilgili açık blok Mi'nin şifresinin çözülmesinden sonra bozulmaya yol açar, bu nedenle bu modlar, çok sayıda bozulma içeren iletişim kanalları üzerinden iletim için kullanılır.
  • CBC ve CFB modlarında, bir şifreli metin bloğunun (Ci) iletimi sırasındaki bozulma, alıcıda en fazla iki düz metin bloğunun (Mi,Mi+1) bozulmasına yol açar. Mi'nin değiştirilmesi, diğer tüm bloklarda bir değişikliğe yol açar M i + 1 ,M i + 2 ... Bu özellik, bir mesaj kimlik doğrulama kodu oluşturmak için kullanılır.