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.
NSA, 2011 yılında Simon ve Speck şifreleri üzerinde çalışmaya başlamıştır. Ajans, ABD federal hükûmetindeki bazı ajansların kabul edilebilir bir güvenlik seviyesinde, çeşitli Nesnelerin İnterneti cihazlarında iyi çalışacak bir şifreleme algoritmasına ihtiyaç duyacağını öngörmüştür.
Şifrenin tanımı
Speck çeşitli blok ve anahtar boyutlarını desteklemektedir. Bir blok her zaman iki kelimeden oluşmaktadır, ancak kelime boyutları 16, 24, 32, 48 veya 64 bit olabilirler. Karşılık gelen anahtarlar 2, 3 veya 4 kelimedir. Her tur, sağ kelimenin sol kelimeye eklenmesi, anahtarın sol kelime ile XOR'lanması, sonra da sol tarafın sağ taraf ile XOR'lanması olmak üzere iki yönlüdür. Tur sayısı aşağıdaki parametrelere bağlıdır:
Blok boyutu (bit) | Anahtar boyutu (bit) | Tur sayısı |
---|---|---|
2 × 16 = 32 | 4 × 16 = 64 | 22 |
2 × 24 = 48 | 3 × 24 = 72 | 22 |
4 × 24 = 96 | 23 | |
2 × 32 = 64 | 3 × 32 = 96 | 26 |
4 × 32 = 128 | 27 | |
2 × 48 = 96 | 2 × 48 = 96 | 28 |
3 × 48 = 144 | 29 | |
2 × 64 = 128 | 2 × 64 = 128 | 32 |
3 × 64 = 192 | 33 | |
4 × 64 = 256 | 34 |
Anahtar çizelgesi, ana blok şifresi ile aynı tur fonksiyonunu kullanır.
Referans Kodu
Aşağıda tasarımcıların önermiş olduğu, 128 bit blok boyutu ve anahtarı olan Speck varyantının C ile yazılmış kodu bulunmaktadır. Burada anahtar = (K [1], K [0]). ePrint'lerinden uyarlanmıştır.
#include <stdint.h> #define ROR(x, r) ((x >> r) | (x << (64 - r))) #define ROL(x, r) ((x << r) | (x >> (64 - r))) #define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x) #define ROUNDS 32 void encrypt(uint64_t ct[2], uint64_t const pt[2], uint64_t const K[2]) { uint64_t y = pt[0], x = pt[1], b = K[0], a = K[1]; R(x, y, b); for (int i = 0; i < ROUNDS - 1; i++) { R(a, b, i); R(x, y, b); } ct[0] = y; ct[1] = x; }
Bu kodun tur anahtarlarını (Anahtar Çizelgesi) istek üzerine hesapladığını unutmayın. Genelde, diğer blok şifrelemelerde olduğu gibi, tur anahtarları her blok için tekrar tekrar hesaplanmak yerine, bir defa hesaplanıp gerektiğinde kullanılmak üzere saklanmaktadır.
16 bit kelimeler için (Speck32), 7 bit sağa ve 2 bit sol kaydırılmaktadır. Diğer tüm kelime boyutları için, burada kullanıldığı gibi 8 ve 3'tür.
Eğer anahtar 2 kelimeden uzunsa, kaydırmalarda kullanılan 2 veya 3 a
değeri vardır.
Endian
Orijinal Speck makalesinde, düz metin bloğu, iki kelime olarak ele alındığı durumlarda bayt sırası açıkça belirtilmemiştir. Makalede verilen test vektörleri big-endian sıralamasındadır. Bununla birlikte, makalenin yazarları, bazı geliştiricilere anahtarların, düz metinin ve şifreli metinin little-endian olması gerektiğini önermiştir. Bu öneri diğer geliştiriciler tarafından da dikkate alınmıştır.
Kaynakça
- ^ a b c . 19 Haziran 2013. 3 Eylül 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Eylül 2016.
- ^ (PDF). 9 Temmuz 2015. 1 Aralık 2017 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 23 Kasım 2017.
- ^ . www.mail-archive.com (İngilizce). 13 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018.
- ^ . www.cryptopp.com (İngilizce). 13 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Speck Haziran 2013 te Ulusal Guvenlik Ajansi NSA tarafindan halka acik bir sekilde yayinlanmis bir blok sifreleme ailesidir Speck yazilim uygulamalari icin optimize edilmisken kardes algoritmasi Simon donanim uygulamalari icin optimize edilmistir Speck bir add rotate xor ARX sifresidir Speck NSA 2011 yilinda Simon ve Speck sifreleri uzerinde calismaya baslamistir Ajans ABD federal hukumetindeki bazi ajanslarin kabul edilebilir bir guvenlik seviyesinde cesitli Nesnelerin Interneti cihazlarinda iyi calisacak bir sifreleme algoritmasina ihtiyac duyacagini ongormustur Sifrenin tanimiSpeck cesitli blok ve anahtar boyutlarini desteklemektedir Bir blok her zaman iki kelimeden olusmaktadir ancak kelime boyutlari 16 24 32 48 veya 64 bit olabilirler Karsilik gelen anahtarlar 2 3 veya 4 kelimedir Her tur sag kelimenin sol kelimeye eklenmesi anahtarin sol kelime ile XOR lanmasi sonra da sol tarafin sag taraf ile XOR lanmasi olmak uzere iki yonludur Tur sayisi asagidaki parametrelere baglidir Blok boyutu bit Anahtar boyutu bit Tur sayisi2 16 32 4 16 64 222 24 48 3 24 72 224 24 96 232 32 64 3 32 96 264 32 128 272 48 96 2 48 96 283 48 144 292 64 128 2 64 128 323 64 192 334 64 256 34 Anahtar cizelgesi ana blok sifresi ile ayni tur fonksiyonunu kullanir Referans KoduAsagida tasarimcilarin onermis oldugu 128 bit blok boyutu ve anahtari olan Speck varyantinin C ile yazilmis kodu bulunmaktadir Burada anahtar K 1 K 0 ePrint lerinden uyarlanmistir include lt stdint h gt define ROR x r x gt gt r x lt lt 64 r define ROL x r x lt lt r x gt gt 64 r define R x y k x ROR x 8 x y x k y ROL y 3 y x define ROUNDS 32 void encrypt uint64 t ct 2 uint64 t const pt 2 uint64 t const K 2 uint64 t y pt 0 x pt 1 b K 0 a K 1 R x y b for int i 0 i lt ROUNDS 1 i R a b i R x y b ct 0 y ct 1 x Bu kodun tur anahtarlarini Anahtar Cizelgesi istek uzerine hesapladigini unutmayin Genelde diger blok sifrelemelerde oldugu gibi tur anahtarlari her blok icin tekrar tekrar hesaplanmak yerine bir defa hesaplanip gerektiginde kullanilmak uzere saklanmaktadir 16 bit kelimeler icin Speck32 7 bit saga ve 2 bit sol kaydirilmaktadir Diger tum kelime boyutlari icin burada kullanildigi gibi 8 ve 3 tur Eger anahtar 2 kelimeden uzunsa kaydirmalarda kullanilan 2 veya 3 a degeri vardir Endian Orijinal Speck makalesinde duz metin blogu iki kelime olarak ele alindigi durumlarda bayt sirasi acikca belirtilmemistir Makalede verilen test vektorleri big endian siralamasindadir Bununla birlikte makalenin yazarlari bazi gelistiricilere anahtarlarin duz metinin ve sifreli metinin little endian olmasi gerektigini onermistir Bu oneri diger gelistiriciler tarafindan da dikkate alinmistir Kaynakca a b c 19 Haziran 2013 3 Eylul 2013 tarihinde kaynagindan arsivlendi Erisim tarihi 20 Eylul 2016 PDF 9 Temmuz 2015 1 Aralik 2017 tarihinde kaynagindan PDF arsivlendi Erisim tarihi 23 Kasim 2017 www mail archive com Ingilizce 13 Nisan 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 12 Nisan 2018 www cryptopp com Ingilizce 13 Nisan 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 12 Nisan 2018