GOST (karma işlevi) - GOST (hash function)

GOST R 34.11-94
Genel
TasarımcılarFAPSI ve VNIIstandart (SSCB )
İlk yayınlandı1994-05-23 (sınıflandırılmamış)
Elde edilenGOST blok şifresi
HaleflerStreebog
SertifikasyonGOST standardı
Detay
Özet boyutları256 bit
Mermi32
En iyi halk kriptanaliz
2008 saldırısı, tam kapsamlı hash işlevini bozar. Kağıt bir çarpışma saldırısı 2'de105 zaman ve ön görüntü saldırıları 2'de192 zaman.[1]

GOST karma işlevistandartlarda tanımlanmıştır GOST R 34.11-94 ve GOST 34.311-95 256 bit kriptografik karma işlevi. Başlangıçta Rus ulusal standardında tanımlandı GOST R 34.11-94 Bilgi Teknolojisi - Kriptografik Bilgi Güvenliği - Hash Fonksiyonu. Diğer üye devletler tarafından kullanılan eşdeğer standart BDT GOST 34.311-95.

Bu işlev, farklı bir Streebog standardın yeni revizyonunda tanımlanan karma işlevi GOST R 34.11-2012.[2]

GOST hash işlevi, GOST blok şifresi.

Algoritma

GOST, değişken uzunluklu bir mesajı 256 bitlik sabit uzunlukta bir çıktı halinde işler. Giriş mesajı 256 bitlik bloklardan (sekiz adet 32 ​​bitlik) oluşan parçalara bölünmüştür. küçük endian tamsayılar); mesaj yastıklı mesajın uzunluğunu 256 bit'e getirmek için gerektiği kadar sıfır ekleyerek. Kalan bitler, önceden karma hale getirilmiş tüm blokların 256 bitlik tam sayı aritmetik toplamı ve ardından orijinal mesajın uzunluğunu bit cinsinden temsil eden 256 bitlik bir tam sayı ile doldurulur.

Temel gösterim

Algoritma açıklamaları aşağıdaki gösterimleri kullanır:

  • - sıfırlarla dolu j-bit blok.
  • - modulo 2 bit cinsinden M bloğunun uzunluğu256.
  • - iki bloğun birleştirilmesi.
  • - modulo 2 iki bloğun aritmetik toplamı256
  • - iki bloğun mantıksal xoru

Ayrıca, küçük dereceli bitin bir bloğun solunda ve yüksek dereceli bitin sağda bulunduğunu düşünüyoruz.

Açıklama

Giriş mesajı 256 bitlik bloklara bölünmüştür Son blok durumunda 256 bitten daha az içerir, istenen uzunluğa ulaşmak için başına sıfır bit bırakılır.

Her blok, adım karma işlevi tarafından işlenir ,nerede , , 256 bitlik bloklardır.

Birincisinden başlayan her mesaj bloğu, adım karma işlevi tarafından işlenir. , ara hash değerini hesaplamak için

değer isteğe bağlı olarak seçilebilir ve genellikle .

Sonra hesaplanır, nihai hash değeri aşağıdaki şekilde elde edilir

  • burada L - M mesajının modulo bit cinsinden uzunluğu
  • , burada K - M'nin 256 bitlik kontrol toplamıdır:

M mesajının hash fonksiyonunun istenen değeridir.

GOST-hash-calculator.gif

Dolayısıyla, algoritma aşağıdaki gibi çalışır.

  1. Başlatma:
    1. - Kullanıcı tarafından belirlenen, karma işlevinin ilk 256 bit değeri.
    2. - Kontrol toplamı
    3. - Mesaj uzunluğu
  2. Dahili yinelemelerin sıkıştırma işlevi: i = 1… n - 1 için aşağıdakileri yapın ( ):
    1. - adım karma işlevi uygulayın
    2. - mesaj uzunluğunu yeniden hesapla
    3. - kontrol toplamını hesapla
  3. Son yinelemenin sıkıştırma işlevi:
    1. - tam mesaj uzunluğunu bit cinsinden hesaplayın
    2. - son mesajı sıfırlarla doldurun
    3. - güncelleme kontrol toplamı
    4. - son mesaj bloğunu işle
    5. - MD - ileti uzunluğuna hashing uygulayarak güçlendirin
    6. - hash kontrol toplamı
  4. Çıkış değeri .

Adım karma işlevi

Adım karma işlevi 256 bitlik iki bloğu tek bir blok halinde eşler: Üç bölümden oluşur:

GOST-step-hash-function.gif
  • Anahtarların oluşturulması
  • Şifreleme dönüşümü tuşları kullanmak
  • Karışık dönüştürme

Anahtar oluşturma

Algoritma üreten anahtarlar şunları kullanır:

  • 256 bitlik blokların iki dönüşümü:
    • dönüşüm , nerede 64 bitlik alt bloklardır Y.
    • dönüşüm , nerede , ve 8 bitlik alt bloklardır Y.
  • Üç sabit:
    • C2 = 0
    • C3 = 0xff00ffff000000ffff0000ff00ffff0000ff00ff00ff00ffff00ff00ff00ff00
    • C4 = 0

Algoritma:

  1. İçin j = 2,3,4 aşağıdakileri yapın:

Şifreleme dönüşümü

Anahtar üretiminden sonra, kullanılarak yapılır GOST 28147-89 anahtarlar üzerinde basit değiştirme modunda Şifreleme dönüşümünü E olarak gösterelim (Not: E dönüşümü, 256-bit anahtar kullanarak 64-bit veriyi şifreler). Şifreleme için dört 64 bit bloğa bölünmüştür: ve bu blokların her biri şu şekilde şifrelenir:

Bundan sonra, sonuç blokları 256 bitlik bir bloğa birleştirilir: .

Karışık dönüştürme

Son adımda, karıştırma dönüşümü şuna uygulanır: , S ve m kullanarak Doğrusal geri besleme kaydırma yazmacı. Sonuç olarak, ara hash değeri elde edildi.

İlk önce ψ işlevini tanımlıyoruz, LFSR 256 bitlik bir blokta: , nerede 16 bitlik alt bloklardır. Y.

GOST-psi-function.gif

Karışık dönüşümü , nerede i-inci gücünü gösterir işlevi.

GOST-R-34.11-94-shuffle-transform.gif

Başlangıç ​​değerleri

GOST R 34.11 94 için yaygın olarak kullanılan iki ilk parametre seti vardır. Her iki set için de başlangıç ​​vektörü

= 0x00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000.

GOST R 34.11 94 standardının kendisi algoritma başlangıç ​​değerini belirtmese de ve S-kutusu şifreleme dönüşümünün , ancak örnekler bölümlerinde aşağıdaki "test parametrelerini" kullanır.[3]

"Test parametreleri" S kutusu

RFC 5831 yalnızca bu parametreleri belirtir, ancak RFC 4357 bunları "test parametreleri" olarak adlandırır ve üretim uygulamalarında kullanılmalarını tavsiye etmez.

S-box numarasıDeğer
14109213801461111271553
21411412613151023810759
35811310342141512760911
47131010891514461211253
56127151513841091403112
64111007211336859121514
71311413155901014768212
81151305710492314611812

CryptoPro S-kutusu

CryptoPro S-kutusu CryptoPro şirketi tarafından geliştirilen "üretime hazır" parametre setinden gelir, ayrıca RFC 4357 bölüm 11.2.

S-box numarasıDeğer
11045681371312140921115
25154021311917631214108
37151214941031152610813
44107120152814165131193
57641191221018014151335
67624139150101511814123
71314417051031281562911
81310951141586714130212

Kriptanaliz

2008'de, tam kapsamlı GOST hash işlevini bozan bir saldırı yayınlandı. Kağıt bir çarpışma saldırısı 2'de105 zaman ve birinci ve ikinci ön görüntü saldırıları 2'de192 zaman (2n zaman, algoritmanın saldırıda yaklaşık kaç kez hesaplandığını ifade eder).[1]

GOST hash testi vektörleri

"Test parametreleri" için karmalar

256-bit (32-bayt) GOST hash değerleri tipik olarak 64-digit hexadecimal sayılar olarak temsil edilir. Burada GOST hash için "test parametreleri" ile test vektörleri bulunmaktadır.

GOST ("Hızlı kahverengi tilki tembelin üzerinden atlar dog ") = 77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294

Mesajdaki küçük bir değişiklik bile, çok büyük olasılıkla, nedeniyle tamamen farklı bir hash ile sonuçlanacaktır. çığ etkisi. Örneğin, değiştirme d -e c:

GOST ("Hızlı kahverengi tilki tembelin üzerinden atlar cog ") = a3ebc4daaab78b0be131dab5737a7f67e602670d543521319150d2e14eeec445

GOST R 34.11-94 standardından gelen iki örnek:[3]

GOST ("Bu mesajdır, uzunluk = 32 bayt") = b1c466d37519b82e8319819ff32595e047a28cb6f83eff1c6916a815a637fffaGOST ("Orijinal mesajın uzunluğunun = 50 bayta sahip olduğunu varsayalım") = 471aba57a60a770d3a55420ae30635c1f51

Daha fazla test vektörü:

GOST ( "") = ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8dGOST ( "a") = 5c00ccc2734cdd3332d3d4749576e3c1a7dbaf0e7ea74e9fa602413c90a129fa = d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314ddGOST ( "mesaj" sindirmek) = ad4434ecb18f2c99b60cbe59ec3d2469582b65273f48de72db2fde16a4889a4dGOST = 53a3a3ed25180cef0c1d85a074273e551c25660a87062a52d926a9e8fe5733a4GOST ( 'U' 128 karakter) ( 'a' 1000000 karakter)

CryptoPro parametreleri için karmalar

CryptoPro S-box ile GOST algoritması, farklı hash değerleri kümesi üretir.

= 981e5f3ca30c841487830f84fb433e13ac1101569b9c13584ac483234cd656c0

GOST ( "a") = e74c52dd282183bf37af0079c9f78055715a103f17e3133ceff1aacf2f403011GOST ( "abc") = b285056dbf18d7392d7677369524dd14747459ed8143997e163b2986f92fd42cGOST ( "mesaj özeti") = bc6041dd2aa401ebfa6e9886734174febdb4729aa972d60f549ac39b29721ba0GOST ( "Hızlı kahverengi tilki tembel köpeğin üstünden atlar") = 9004294a361a508c586fe53d1f1b02746765e71b765472786e4770d565830a76GOST ( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 73b70a39497de53a6e08c67b6d4db853540f03e9389299d9b0156ef7e85d0f61GOST ( "12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 6bc7b38989b28cf93ae8842bf9d752905910a7528a61e5bce0782de43e610c90GOST = 2cefc2f7b7bdc514e18ea57fa74ff357e7fa17d652c75f69cb1be7893ede48ebGOST ( "orijinal mesaj uzunluğu = 50 bayt olduğunu varsayalım") = 1c4ac7614691bbf427fa2316216be8f10d92edfd37cd1027514c1008f649c4e8GOST = c3730c5cbccacf915ac292676f21e8bd4ef75331d9405e5f1a61dc3130a65011GOST ( "U" 128) (1000000 "a") 869 = ( "Bu mesaj, uzunluk = 32 bayttır") 3287aa62f9478f7cb312ec0866b6c4e4a0f11160441e8f4ffcd2715dd554f

Ayrıca bakınız

Referanslar

  1. ^ a b Mendel, Florian; Pramstaller, Norbert; Rechberger, Christian; Kontak, Marcin; Szmidt, Janusz (2008). "GOST Hash Fonksiyonunun Kriptanalizi". Wagner, David (ed.). Kriptolojideki Gelişmeler - CRYPTO 2008. Bilgisayar Bilimlerinde Ders Notları. 5157. Almanya: Springer Berlin Heidelberg. s. 162–178. doi:10.1007/978-3-540-85174-5_10. ISBN  978-3-540-85173-8.
  2. ^ GOST R 34.11-2012: Streebog Hash İşlevi
  3. ^ a b "GOST R 34.11-94 standardı. Bilgi teknolojisi. Kriptografik veri güvenliği. Karma işlevi. Ek A." 1994. Alıntı dergisi gerektirir | günlük = (Yardım)

daha fazla okuma

Dış bağlantılar