Modern simetrik anahtar şifrelerinin temellerine giriş. Geri Besleme Kaydırma Kayıtları Doğrusal Geri Besleme Kaydırma Kaydı c

  • 06.11.2021

Doğrusal Geri Besleme Kaydırma Kaydı(RSLOS, İng. lineer geri besleme kaydırma kaydı, LFSR), giriş (eklenen) bitin değerinin, kaydırmadan önce kaydın kalan bitlerinin değerlerinden doğrusal bir Boole işlevine eşit olduğu bir bit kelime kaydırma yazmacıdır. Hem yazılım hem de donanım tarafından organize edilebilir. Özellikle kriptografide uygulama bulan sözde rastgele bit dizileri oluşturmak için kullanılır.

Açıklama

Donanım uygulamalarında kayıt kontrolü, bir kaydırma darbesi uygulanarak gerçekleştirilir (aksi halde saat veya senkronizasyon darbesi) tüm hücrelere. Yazılım uygulamalarında kayıt yönetimi, bir döngü yürütülerek gerçekleştirilir. Döngünün her yinelemesinde, geri besleme fonksiyonu hesaplanır ve kelimedeki bitler kaydırılır.

Çalışma prensibi

Doğrusal karmaşıklık

korelasyon bağımsızlığı

Oluşturulan dizinin yüksek doğrusal karmaşıklığını elde etme çabası içinde, kriptograflar çoklu kaydırma yazmaçlarının çıktılarını doğrusal olmayan bir şekilde birleştirir. Bu durumda, bir veya birkaç çıkış dizisi (veya bireysel RSLOS'un çıkışları bile) ortak bir akışla bağlanabilir ve bir kriptanalist tarafından açılabilir. Böyle bir güvenlik açığına dayalı hackleme denir. korelasyon otopsisi... Böyle bir hacklemenin ana fikri, jeneratörün çıktısı ile onu oluşturan parçaların çıktıları arasında bir miktar korelasyon bulmaktır. Daha sonra çıkış sırasını gözlemleyerek bu ara pinler hakkında bilgi alabilir ve bu sayede jeneratörü hackleyebilirsiniz. Thomas Sigenthaler, korelasyon bağımsızlığının doğru bir şekilde belirlenebileceğini ve korelasyon bağımsızlığı ile doğrusal karmaşıklık arasında bir değiş tokuş olduğunu gösterdi.

Yazılım uygulaması

RSLOS'un yazılım uygulamaları oldukça yavaştır ve derleyicide yazılırsa daha hızlı çalışır. Çözümlerden biri, 16 RSLOS'un (veya bilgisayar mimarisindeki kelime uzunluğuna bağlı olarak 32) paralel kullanımıdır. Böyle bir şemada, boyutu kaydırma yazmacının uzunluğuna eşit olan ve kelimenin her bir biti kendi RSLOS'una karşılık gelen bir kelime dizisi kullanılır. Aynı kademe sıra numaraları kullanıldığından, bu, jeneratör performansında gözle görülür bir kazanç sağlayabilir.

Fibonacci yapılandırması

32 bitlik bir kaydırma yazmacı düşünün. Bunun için bir saptırma dizisi var (32, 31, 30, 28, 26, 1) (\ displaystyle \ sol (32, \; 31, \; 30, \; 28, \; 26, \; 1 \ sağ))... Bu, yeni bir bit oluşturmak için 31., 30., 29., 27., 25. ve 0. bitleri XOR yapmanız gerektiği anlamına gelir. Alınan RSLO'nun bir maksimum süresi vardır 2 32 - 1 (\ displaystyle 2 ^ (32) -1)... Böyle bir kayıt için C kodu aşağıdaki gibidir:

int LFSR_Fibonacci (void) (statik unsigned long S = 0x00000001; S = (((S >> 31) ^ (S >> 30) ^ (S >> 29) ^ (S >> 27) ^ (S >> 25) ^ S) & 0x00000001)<< 31 ) | (S >> 1); dönüş S & 0x00000001; )

Galois yapılandırması

Bu oluşturucu daha fazla şifreleme gücüne sahip değildir, ancak bir performans kazancı sağlar: paralelleştirme yoluyla tüm XOR işlemleri, Fibonacci konfigürasyonunda olduğu gibi birbiri ardına değil, tek bir eylemde gerçekleştirilebilir. Bu şema aynı zamanda donanım uygulamasından da faydalanacaktır.

32 bitlik kaydırma yazmacı için C kodu aşağıdaki gibidir:

int LFSR_Galois (void) (statik işaretsiz uzun S = 0x00000001; if (S & 0x00000001) (S = (S ^ 0x80000057 >> 1) | 0x80000000; dönüş 1;) else (S >> = 1; dönüş 0;))

Galois konfigürasyonundaki LFSR_Galois işlevine yapılan sabit sayıda çağrı döngüsünün, Fibonacci konfigürasyonundaki LFSR_Fibonacci işlevinden yaklaşık 2 kat daha hızlı olduğunu belirtmekte fayda var (Intel Core i5 üzerinde MS VS 2010 derleyicisi).

Oluşturulan bir dizi örneği

Fibonacci yapılandırması

RSLOS karakteristik polinom tarafından verilsin x 3 + x + 1 (\ displaystyle x ^ (3) + x + 1)... Bu, musluğun bitlerinin 2. ve 0. olacağı ve polinom formülündekinin 0. bitin girdi olduğu anlamına gelir. Geri bildirim işlevi şu şekildedir: S j = S j - 1 ⊕ S j - 3 (\ displaystyle S_ (j) = S_ (j-1) \ oplus S_ (j-3)))... Diyelim ki vardiya kaydının ilk durumu sıralı. Kaydın diğer durumları aşağıdaki tabloda gösterilmektedir:

Adım numarası Durum oluşturulan bit
0 [0, 0, 1] (\ displaystyle \ sol) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\ displaystyle \ sol) 1

Yedinci adımdaki dahili durum orijinaline döndüğü için, bir sonraki adımdan başlayarak bitler tekrarlanacaktır. Yani, oluşturulan dizi aşağıdaki gibidir: [1, 0, 0, 1, 1, 1, 0, 1. ... ... ] (\ displaystyle \ sol)(dizideki bitlerin sırası, RSLOS tarafından üretilme sırasına karşılık gelir). Böylece dizinin periyodu 7'dir, yani verilen polinomun ilkelliği nedeniyle meydana gelen olası maksimum değerdir.

Galois yapılandırması

Aynı karakteristik polinomu alıyoruz, yani c 3 = c 1 = 1 (\ displaystyle c_ (3) = c_ (1) = 1), c 2 = 0 (\ displaystyle c_ (2) = 0)... Çıkış bitine yalnızca 1. bit eklenir. İlk durum aynıdır. Daha fazla kayıt durumu:

Adım numarası Durum oluşturulan bit
0 [0, 0, 1] (\ displaystyle \ sol) -
1 [1, 0, 0] (\ displaystyle \ sol) 0
2 [0, 1, 1] (\ displaystyle \ sol) 1
3 [1, 0, 1] (\ displaystyle \ sol) 1
4 [1, 1, 1] (\ displaystyle \ sol) 1
5 [1, 1, 0] (\ displaystyle \ sol) 0
6 [0, 1, 0] (\ displaystyle \ sol) 0
7 [0, 0, 1] (\ displaystyle \ sol) 1

Yedinci adımdaki kaydın dahili durumu orijinal durumuna geri döndü, bu nedenle periyodu da 7'dir. Fibonacci konfigürasyonunun aksine, kaydın dahili durumları farklı çıktı, ancak oluşturulan dizi aynı, sadece 4 saat döngüsü ile kaydırılır: [0, 1, 1, 1, 0, 0, 0, 0, 1, 1,. ... ... ] (\ displaystyle \ sol)(dizideki bitlerin sırası, RSLOS tarafından üretilme sırasına karşılık gelir).

İlkel polinomlar oluşturma

bitler, n (\ görüntü stili n) ilkel polinom Dönem, 2 n - 1 (\ displaystyle 2 ^ (n) -1) İlkel polinomların sayısı
2 x 2 + x + 1 (\ displaystyle x ^ (2) + x + 1) 3 1
3 x 3 + x 2 + 1 (\ displaystyle x ^ (3) + x ^ (2) +1) 7 2
4 x 4 + x 3 + 1 (\ displaystyle x ^ (4) + x ^ (3) +1) 15 2
5 x 5 + x 3 + 1 (\ displaystyle x ^ (5) + x ^ (3) +1) 31 6
6 x 6 + x 5 + 1 (\ displaystyle x ^ (6) + x ^ (5) +1) 63 6
7 x 7 + x 6 + 1 (\ displaystyle x ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\ displaystyle x ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 x 9 + x 5 + 1 (\ displaystyle x ^ (9) + x ^ (5) +1) 511 48
10 x 10 + x 7 + 1 (\ displaystyle x ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\ displaystyle x ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\ displaystyle x ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\ displaystyle x ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\ displaystyle x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 x 15 + x 14 + 1 (\ displaystyle x ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\ displaystyle x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 x 17 + x 14 + 1 (\ displaystyle x ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\ displaystyle x ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\ displaystyle x ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Avantajlar ve dezavantajlar

Avantajlar

  • RSLOS temelinde oluşturulan yüksek hızlı kriptografik algoritmalar (örneğin, akış şifreleri);
  • hemen hemen tüm bilgi işlem cihazlarında uygulanan donanım, toplama ve çarpmanın yalnızca en basit bit işlemlerinin kullanılması;
  • iyi kriptografik özellikler (RSLOS, iyi istatistiksel özelliklere sahip uzun dönemli diziler üretebilir);
  • RSLOS yapısı gereği cebirsel yöntemlerle kolayca analiz edilebilir.

Dezavantajları

Üretilen dizilerin kriptografik gücünü geliştirmeye yönelik yöntemler

Birden fazla vardiya kaydına sahip jeneratörler

Bu tür bir üreteç, bit üreten birkaç lineer geri besleme kaydırma kaydından oluşur. x 1, i, x 2, i,…, x M, ben (\ displaystyle x_ (1, i), \; x_ (2, i), \; \ dots, \; x_ (M, i)) sırasıyla. Ayrıca, üretilen bitler bazı Boolean fonksiyonları tarafından dönüştürülür. f (x 1, i, x 2, i,…, x M, i) (\ displaystyle f (x_ (1, i), \; x_ (2, i), \; \ dots, \; x_ (M) , ben)))... Bu tip jeneratörler için kayıt uzunluklarının L i (\ görüntü stili L_ (i)), i = 1, 2,…, M (\ displaystyle i = 1, \; 2, \; \ noktalar, \; M) birbirleriyle karşılıklı olarak basittir.

Bu jeneratörün periyodu T = (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 LM - 1) ≲ 2 L (\ displaystyle T = (2 ^ (L_ (1)) - 1) \ cdot (2 ^ ( L_ (2)) - 1) \ cdots (2 ^ (L_ (M)) - 1) \ lesssim 2 ^ (L)), nerede L = ∑ ben = 1 M L ben (\ displaystyle L = \ toplam \ limitler _ (i = 1) ^ (M) L_ (i))- toplam hücre sayısı. Sonuç olarak, birkaç RSLOS'un kullanılması, üretilen dizinin periyodunu bir kayıtla karşılaştırıldığında arttırır, bu da üretecin kriptografik gücünü arttırır. Ayrıca, belirli bir jeneratöre karşılık gelen en kısa kaydın doğrusal karmaşıklığını veya uzunluğunu arttırır. Böyle bir kayıt, oluşturulan diziden Berlekamp-Massey algoritması kullanılarak bulunur. En iyi ihtimalle uzunluğu, oluşturulan dizinin periyodu ile orantılıdır.

Doğrusal olmayan dönüşümlere sahip jeneratörler

Böyle bir jeneratörün blok şeması, önceki jeneratörünkinden farklı değildir. Temel fark, dönüştürme aygıtının doğrusal olmayan bir Boole işleviyle belirtilmesidir. f (x 1, x 2,…, x M) (\ displaystyle f (x_ (1), x_ (2), \ dots, x_ (M)))... Böyle bir fonksiyon olarak, örneğin, Zhegalkin polinomunu alıyoruz (Zhegalkin teoremine göre, herhangi bir Boole fonksiyonu, Zhegalkin polinomuyla benzersiz bir şekilde temsil edilebilir).

Doğrusal olmayan jeneratör ayrıca aşağıdakilere de uygulanabilir: doğrusal olmayan geri besleme kaydırmalı yazmaç... verebilir 2 2 L - 1 - L (\ displaystyle 2 ^ (2 ^ (L-1) -L)) RSLOS'unkinden daha fazla olan maksimum periyodun dizilerinin varyantları.

Bu üretecin kripto direnci, kullanılan fonksiyonun doğrusal olmamasından dolayı arttırılmıştır. Oluşturulan bit dizisinden kayıtların durumunu belirlemek karmaşık bir matematiksel problemdir, çünkü orijinal durumları geri yüklemek için bilinen bir algoritma yoktur.

Bu yöntem, örneğin, Geff üreteci ve genelleştirilmiş Geff üreteci, ancak bu tür üreteçler bir korelasyon saldırısı ile kırılabilir.

Kaydırma yazmaçlarının farklı zamanlamasına sahip osilatörler

Dur-kalk jeneratörü

Dur-kalk jeneratörü(İngilizce Stop-and-Go, Both-Piper), RSLOS-2'nin saat frekansını kontrol etmek için RSLOS-1'in çıkışını kullanır, böylece RSLOS-2, yalnızca RSLOS- çıkışının belirli bir zamanda durumunu değiştirir. 1 şu anda birime eşitti. Bu şema korelasyon otopsisine direnmedi.

Kriptografik gücü artırmak için önerilmiştir. alternatif dur-kalk jeneratörü... Farklı uzunluklarda üç vardiya kaydı kullanır. Burada RSLOS-1, 2. ve 3. kayıtların saat frekansını kontrol eder, yani, RSLOS-2, RSLOS-1 çıkışı bire eşit olduğunda ve RSLOS-3 - RSLOS-1 çıkışı sıfır olduğunda durumunu değiştirir. Jeneratör çıkışı, RSLOS-2 ve RSLOS-3'ün iki çıkışının ek modülo çalışmasıdır. Bu jeneratör uzun bir periyoda ve büyük bir doğrusal karmaşıklığa sahiptir. RSLOS-1 korelasyon saldırısının bir yolu vardır, ancak bu, oluşturucunun kriptografik özelliklerini büyük ölçüde zayıflatmaz.

Karmaşık bir saat şeması kullanılır iki yönlü jeneratör "dur-kalk" aynı uzunlukta 2 vardiya kaydı kullanan . Zaman içinde bir noktada RSLOS-1'in çıktısı t ben - 1 (\ displaystyle t_ (i-1))- bir, o zaman RSLOS-2 o sırada saatli değil t ben (\ displaystyle t_ (i))... RSLOS-2'nin çıktısı o andaki t ben - 1 (\ displaystyle t_ (i-1)) sıfıra eşittir ve şu anda t ben - 2 (\ displaystyle t_ (i-2))- bir ve eğer bu kayıt o sırada saatliyse t ben (\ displaystyle t_ (i)), sonra aynı anda RSLOS-1 saatli değildir. Bu devrenin doğrusal karmaşıklığı, oluşturulan dizinin periyoduna yaklaşık olarak eşittir.

Kendinden jetli jeneratör

Dahili ürüne sahip çok hızlı jeneratör

Bu üreteç, RSLOS-1 ve RSLOS-2 olmak üzere iki kaydırma yazmacı kullanır. RSLOS-2'nin saat frekansı d (\ görüntü stili d) RSLOS-1'den kat daha fazla. Bu kayıtların belirli bitleri, AND işlemi kullanılarak birbirleriyle çarpılır. Bir çıktı dizisi üretmek için çarpmaların sonuçları birlikte XOR'lanır. Bu üreteç, yüksek doğrusal karmaşıklığa ve iyi istatistiksel özelliklere sahiptir. Bununla birlikte, durumu, uzunluğun çıktı dizisinden belirlenebilir. L 1 + L 2 + log 2 ⁡ d (\ displaystyle L_ (1) + L_ (2) + \ log _ (2) (d)), nerede L 1 (\ görüntü stili L_ (1)) ve L 2 (\ görüntü stili L_ (2))- sırasıyla RSLOS-1 ve RSLOS-2 uzunlukları ve d (\ görüntü stili d)- saat frekanslarının oranı.

Gollmann'ın şelalesi

Bu şema, dur-kalk üretecinin geliştirilmiş bir versiyonudur. Her birinin saat ayarı önceki RSLOS tarafından kontrol edilen bir RSLOS dizisinden oluşur. O sırada RSLOS-1'in çıktısı ise t ben (\ displaystyle t_ (i)) 1 ise, RSLOS-2 saatlidir. O sırada RSLOS-2'nin çıktısı ise t ben (\ displaystyle t_ (i)) 1 ise, RSLOS-3 saatlidir, vb. Son RSLOS'un çıkışı, jeneratörün çıkışıdır. Tüm RSLOS'ların uzunluğu aynı ve eşitse L (\ görüntü stili L), daha sonra sistemin periyodu M (\ görüntü stili M) RSLO eşittir (2 L - 1) M (\ displaystyle (2 ^ (L) -1) ^ (M)) ve doğrusal karmaşıklık L (S) = L (2 L - 1) M - 1 (\ displaystyle L (S) = L (2 ^ (L) -1) ^ (M-1)) .

Bu fikir basittir ve çok büyük periyotlara, büyük doğrusal karmaşıklıklara ve iyi istatistiksel özelliklere sahip diziler oluşturmak için kullanılabilir. Ama ne yazık ki otopsi denen bir şeye duyarlılar. kilitleme(İngilizce kilitleme) ne zaman

- "Tetromino tenisi"). Sayısız matematiksel bulmaca ve kelime oyunu yarattı ve çözdü. Yaklaşık 20 yıl önce, 1959'da, ben yeni doğduğumda, hücresel otomatlar için en sevdiğim 30 kuralını keşfetmeye çok yakın olduğunu öğrendim.

Saul Golomb ile nasıl tanıştım

Tanıdığım hemen hemen tüm bilim adamları ve matematikçileri profesyonel bağlantılarım aracılığıyla tanıdım. Ama Sol Golomba değil. Yıl 1981 ve ben 21 yaşında bir fizikçi (ilk ödül töreninde MacArthur Ödülü'nü alan en genç kişi olduğum için medyada biraz ünlendi) 'de araştırma yapıyordum. Ofisimin kapısı çalındı ​​ve çok geçmeden genç bir kadın içeri girdi. Bu zaten olağandışıydı, çünkü o günlerde teorik yüksek enerji fiziğiyle uğraştıkları umutsuzca az sayıda kadın vardı. California'da birkaç yıl yaşamama rağmen, yine de üniversiteden ayrılmadım ve bu nedenle ofisimi dolduran Güney Kaliforniya enerjisinin dalgalanmasına hazırlıksız yakalandım. Kadın kendini Astrid'e tanıttı ve Oxford'a gittiğini ve anaokulunda birlikte olduğum birini tanıdığını söyledi. Pasadena bölgesindeki ilginç insanlar hakkında bilgi toplamakla görevlendirildiğini açıkladı. Sanırım beni zor bir vaka olarak gördü ama yine de konuşmakta ısrar etti. Ve bir gün, yaptıklarım hakkında bir şeyler anlatmaya çalışırken bana şöyle dedi: " Babamla tanışmalısın. O zaten yaşlı bir adam ama aklı hâlâ çok keskin. "Ve öyle oldu ki Saul Golomb'un en büyük kızı Astrid Golomb beni onunla tanıştırdı.

Golomb ailesi, Pasadena yakınlarındaki dağlarda bulunan bir evde yaşıyordu. İki kızları vardı: Astrid - benden biraz daha büyük, hırslı bir Hollywood kızı ve Beatrice - yaşım ve bilimsel zekam hakkında. Golomb kardeşler genellikle evlerinde partilere ev sahipliği yaparlardı. Temalar farklıydı: bir bahçe partisi ve flamingolar ve kirpilerle yapılan bir kroketti (" kazanan, kostümü belirtilen temaya en yakın olan kişi olacaktır."), ya da rünlerle yazılmış talimatları olan Stonehenge tarzı bir parti. Bu partilerde, genç ve pek de öyle olmayan insanlar, çeşitli yerel armatürler de dahil olmak üzere geçti. Ve üzerlerinde, biraz kenara, her zaman büyük sakallı küçük bir adam vardı, biraz elf gibi ve her zaman koyu renk bir palto giyiyor - Solomon Golomb'un kendisi.

Yavaş yavaş onun hakkında biraz bilgi edindim. Neye karıştı" bilgi teorisi"Güney Kaliforniya Üniversitesi'nde çalıştığını. Çeşitli belirsiz, ancak görünüşe göre üst düzey hükümet ve diğer bağlantıları olduğunu. Vardiya kayıtlarını duydum ama onlar hakkında neredeyse hiçbir şey bilmiyordum."

İşte bir süre sonra olanlar:

Gördüğünüz gibi, kaydırma yazmacı basit bir kural izlenerek bitleri her zaman sola kaydırır ve diğer bitler sağa eklenir. Bit dizisi rastgele gibi görünse de, şekilde gösterildiği gibi sonunda kendini tekrar eder. Sol Golomb, bu tür dizileri ve kendilerini nasıl tekrar ettiklerini analiz etmenin zarif bir matematiksel yolunu buldu.

Vardiya kaydı boyutundaysa n, o zaman 2 tane var n olası durumlar (uzunluk için tüm olası 0 ve 1 dizilerine karşılık gelir) n). Kaydırmalı yazmaç kuralları deterministik olduğundan, verilen herhangi bir konum her zaman başka bir aynı konuma gelmelidir. Bu, adımlar tekrarlanmaya başlamadan önce kaydırma yazmacının geçebileceği maksimum olası adım sayısının 2 olduğu anlamına gelir. n(aslında 2 n- 1, çünkü tüm 0'lara sahip bir konum başka bir şeye dönüşemez).

Yukarıdaki örnekte, kaydırma yazmacı 7'dir ve tam olarak 2 7 - 1 = 127 adımda tekrar edecektir. Ama hangi vardiya kayıtları - hangi dallanma konumlarıyla - maksimum uzunlukta diziler üretecek? Solomon Golomb, 1954 yazında bu soruyu araştırmaya başladı. Ve cevabı basit ve zarifti.

Yukarıdaki kaydırma yazmacının 7, 6 ve 1 konumlarında dalları vardır. Saul bunu polinomu kullanarak cebirsel olarak sundu. NS 7 + NS 6 + 1. Daha sonra bu polinomun " indirgenemez modülo 2"; bu nedenle, çarpanlara ayrılamaz, bu da onu polinomlar arasında bir asal sayıya benzer kılar; ve diğer bazı özelliklerin varlığı onu" ilkel bir polinom " yapar. Bugün bu, Mathematica ve Wolfram Dili kullanılarak kolayca doğrulanabilir:

Sonra 1954'te Saul hepsini elle yapmak zorunda kaldı; maksimum uzunlukta diziler üreten kaydırma yazmaçlarına karşılık gelen oldukça uzun bir ilkel polinom tablosu derledi:

Vardiya kayıtlarının geçmişi

RAM'i koruma fikri " gecikme hatları"Dijital darbeleri ileten, bilgisayarın ilk günlerine kadar uzanır. 1940'ların sonlarında, bu tür gecikme hatları bir dizi vakum tüpü kullanılarak dijital olarak uygulanıyordu ve " vardiya kayıtları"İlk kapalı döngü kaydırmalı yazmaçların ne zaman oluşturulduğu henüz belli değil. 1940'ların sonlarında olabilir. Ancak bu olay, ilk kez askeri kriptografide kullanıldığı için hala gizemini koruyor.

Kriptografinin temel fikri, anlamlı mesajları tanınmayacak şekilde değiştirmektir; ancak anahtarı biliyorsanız, şifreli mesajı yeniden oluşturabilirsiniz. Sözde akış şifreleri, görünüşte rastgele öğelerden oluşan uzun diziler oluşturma ilkesine göre çalışır ve bağımsız olarak aynı öğe dizisini üreten bir alıcı kullanılarak çözülür.

Doğrusal geri besleme kaydırmalı yazmaçlar, uzun yeniden deneme süreleri nedeniyle kriptografide değerliydi. Ancak Saul'un bu dönemleri bulmak için kullandığı matematiksel analiz, bu tür kaydırmalı yazmaçların güvenli kriptografi için uygun olmadığını açıkça ortaya koymaktadır. Ancak, başlangıçta iyi görünüyordu (özellikle Enigma'daki ardışık rotor konumlarıyla karşılaştırıldığında); Sovyet askeri kripto sistemlerinin bu temelde inşa edildiğine dair ısrarlı söylentiler vardı.

2001'de kitabım için tarihi notlar üzerinde çalışırken Yeni bir bilim türü Saul ve ben, kasa vardiyaları hakkında uzun bir telefon görüşmesi yaptık. Saul, işe başladığında vardiyalı yazmaçlar üzerindeki kriptografik çalışma hakkında hiçbir şey bilmediğini söyledi. Bell Labs, Lincoln Labs ve JPL'nin vardiyalı yazmaçlar üzerinde onunla aynı zamanlarda çalışmaya başladığını söyledi; ancak 1955 raporunda belirttiği gibi biraz daha ileri gitmeyi başardı.

Takip eden yıllarda, Saul, çalışmalarının çeşitli öncüllerini saf matematik literatüründen yavaş yavaş öğrendi. Zaten 1202'de Fibonacci, şimdi Fibonacci sayıları olarak adlandırılan ve bir tekrarlama ilişkisi tarafından üretilenlerden (sıfırlar ve birler değil, keyfi tam sayılarla çalışan doğrusal bir geri besleme kaydırma yazmacının bir analogu olarak görülebilir) bahsetti. 1900'lerin başında 0 ve 1 döngüleri üzerine küçük çalışmalar da var, ancak ilk büyük ölçekli çalışma Oslo Üniversitesi'nden Oysten Ore'nin çalışmasıydı. Ore'nin 1940'ların sonlarında Ulusal Güvenlik Ajansı'nın selefine danışmanlık yapan Marshall Hall adında bir öğrencisi vardı. - muhtemelen vardiya kayıtları konusunda. Ancak, yaptığı her şey sınıflandırıldı ve bu nedenle Saul ile lineer geri besleme kaydırmalı kayıtların tarihini yayınlamak için anlaşma yaptı; Saul kitabını Marshall Hall'a adadı.

Vardiya kayıtları tarafından oluşturulan diziler ne için?

Basit kurallarla yönetilen sistemlerin birçok uygulama varyasyonuyla sonuçlandığını birçok kez fark ettim; vardiya kayıtları da bu modeli takip eder. Hem modern donanım hem de yazılım vardiya kayıtları ile doludur: sıradan bir cep telefonunda, kural olarak, donanım düzeyinde ve bazen yazılımda ("shift register" yazdığımda) uygulanan muhtemelen bir düzine veya iki tanesi vardır. Burada, doğrusal bir geri besleme kaydırma kaydı - LFSR demek istiyorum).

Çoğu durumda, maksimum uzunluk dizilerini veren kaydırma yazmaçları kullanılır (diğer adıyla " M-dizileri Bunların kullanılma nedenleri genellikle Sol'un keşfettiği bazı özelliklerinden kaynaklanmaktadır.Her zaman aynı sayıda 0'lar ve 1'ler içerirler (gerçekte her zaman tam olarak bir ek 1 olmasına rağmen). ve 11 de karakteristiktir - ve büyük bloklar için de. Bu özellik " denge"Bu kendi içinde zaten çok faydalıdır - örneğin, giriş olarak tüm olası bit kombinasyonlarını test ederseniz.

Ancak Sol, daha da önemli bir özellik daha keşfetti. Dizideki her 0'ı 1 ile değiştirin, ardından dizinin kaydırılmış versiyonundaki her öğeyi orijinaldeki karşılık gelen öğeyle çarpın. Saul, eklendiğinde bu öğelerin her zaman sıfır olacağını gösterdi (hiç bir kayma olmadığı sürece). Yani, dizinin kendisinin kaydırılmış versiyonlarıyla hiçbir ilişkisi yoktur.

Bu özellikler, yeterince uzun herhangi bir rastgele 0 ve 1 dizisi için doğru olacaktır. Şaşırtıcı bir şekilde, bu özellikler maksimum uzunluktaki diziler için her zaman doğrudur. Dizilerin bazı kaotik özellikleri vardır, ancak gerçekte hiç de kaotik değildirler: iyi tanımlanmış, organize bir yapıya sahipler.

Onları ciddi kriptografi için uygun olmayan lineer geri besleme kaydırmalı yazmaçların bu doğal yapısıdır. Ancak temel "eleman permütasyonu" ve ucuz kriptografi için mükemmeldirler ve bu amaçlar için yaygın olarak kullanılırlar. Genellikle görev, sinyali "beyazlatmak"tır ("beyaz gürültü" de olduğu gibi). Bazen 0'lık uzun dizilerle veri iletmek gerekir. Ancak bu durumda "sessizlik" çok uzunsa elektronikler karışabilir. Orijinal verileri, kaydırma yazmacı tarafından oluşturulan diziyle birleştirerek karıştırarak bu sorunu önleyebilirsiniz. Wi-Fi, Bluetooth, USB, dijital TV, internet vb. ile yapılan tam olarak budur.

Kaydırmalı yazmaç karıştırmanın bir yan etkisi, bazen güvenliği artırmak için kullanılan daha karmaşık kod çözmedir (DVD teknolojisi, verileri kodlamak için 16 ve 24 bit kaydırma yazmaçlarının bir kombinasyonunu kullanır; birçok GSM telefonu, tüm sinyalleri kodlamak için üç kaydırma yazmacının bir kombinasyonunu kullanır) ).

Saul, tüm bunların matematiksel temelini oluşturdu ve ayrıca bir dizi önemli figürü birbirine tanıttı. 1959'da, kısa süre önce Massachusetts Teknoloji Enstitüsü'nden doktorasını almış olan Irwin Jacobs ile tanıştı. Jet Propulsion Laboratuvarı'nda çalışan Andy Viterbi'yi de tanıyordu. Saul onları tanıttı ve 1968'de kodlama sistemleri üzerinde çalışmak için (çoğunlukla askeri amaçlar için) Linkabit adlı bir şirket kurdular.

1985 yılında Jacobs ve Viterbi Qualcomm adında başka bir şirket kurdu. İlk başta pek iyi gitmiyorlardı, ancak 1990'ların başında, CDMA'yı cep telefonlarına dağıtmak için bileşenler yapmaya başladıklarında, şirket hızla büyüyordu.

Peki, nerede bu kayıtlar?

Çoğu insanın vardiyalı yazmaçları hiç duymamış olması ve aynı zamanda modern iletişim sistemlerini, bilgisayarları vb. kullandıklarında onlarla etkileşime girmeleri şaşırtıcıdır. Aynı kayıt dizilerinin farklı adların arkasında göründüğü ve kısaltmalar doğrusal geri besleme kayması (PN, sözde gürültü, M-, FSR, LFSR dizileri, MLS, SRS, PRBS, vb.).

Cep telefonlarında kaydırmalı yazmaç dizilerinin kullanımı yıllar içinde değişmiş, bazen artmakta bazen de azalmaktadır. ağlar TDMA'ya dayanır, bu nedenle verilerini kodlamak için kaydırmalı kayıt dizileri kullanmazlar, ancak CRC (Döngüsel Yedeklilik Kontrolü) hala veri bloklarını kontrol etmek için sıklıkla kullanılır. ağlar, CDMA'nın en büyük kullanıcılarıdır, bu nedenle kaydırma yazmaçları tarafından üretilen diziler, her bitin iletiminde yer alır. ağlar tipik olarak, CRC'ler hala kullanılmaktadır: örneğin, frekans pencereleri çakıştığında integral verilerle etkileşim kurmak için, kaydırma yazmacı dizilerini içermeyen zaman ve frekans yuvalarının bir kombinasyonunu kullanır. daha karmaşık bir yapıya sahiptir - birçok anten, optimum zaman ve slot frekansını kullanmaya dinamik olarak uyum sağlar. Bununla birlikte, kanallarının yarısı tipik olarak yerel radyo ortamını türetmek için kullanılan "pilot" sinyallere ayrılmıştır; bunlar aynı zamanda kaydırmalı yazmaçlar tarafından üretilen dizilere de dayanır.

Elektronik üretimi, tipik olarak, en düşük güç tüketimi ile mümkün olan en yüksek veri aktarım hızını elde etmeye çalışır ve bitlerin gürültü tabanının üstesinden gelmesine izin verir. Ve bir kural olarak, bu yol hata tespitinin otomasyonuna ve dolayısıyla CRC'nin (Döngüsel Artıklık Kontrolü) kullanımına ve dolayısıyla kaydırma yazmacı tarafından oluşturulan dizilere yol açar. Bu, bilgisayarın içindeki hemen hemen tüm veri yolu türleri (PCIe, SATA, vb.) için geçerlidir: merkezi işlemcinin parçaları arasında etkileşim sağlamak veya cihazlardan veri almak veya HDMI ile bir ekrana bağlanmak. Diskler veya bellek durumunda, kaydırmalı yazmaçlar tarafından oluşturulan dizilere dayalı CRC'ler ve diğer kodlar da neredeyse evrensel olarak maksimum hızda çalışmak için kullanılır.

Kaydırma yazmaçları o kadar yaygındır ki kaç bit ürettiklerini tahmin etmek neredeyse imkansızdır. Gömülü IoT'de (Nesnelerin İnterneti) yaklaşık 10 milyar bilgisayar, biraz daha az telefon ve çok sayıda cihaz var. Dünyadaki hemen hemen her araba (ve bir milyardan fazla var!) Yaklaşık 10 yerleşik mikroişlemciye sahiptir.

Vardiya kayıtları hangi frekansta çalışır? İletişim sistemlerinde, Hertz bandında bir baz taşıyıcı frekansının yanı sıra, MHz bandında çoklu erişimin (CDMA'dan bahsediyoruz) ne kadar hızlı gerçekleştirildiğini söyleyen bir "çip hızı" vardır. Öte yandan, bilgisayarların içindeki veri yollarında, tüm veriler vardiya kayıtları kullanılarak aktarılır - hertz aralığında en iyi aktarım hızıyla.

Her saniyede vardiya kayıtlarından en az 1 milyar bit kullanan en az 1/10 milyar saniye (yaklaşık 3 yıl) çalışan en az 10 milyar iletişim hattı vardır, bu da bugün itibariyle Sol'un algoritmasının en az bir kez kullanıldığı anlamına gelir. oktilyon kez.

Bu en yaygın kullanılan algoritma mı? Bence evet. Sadece aritmetik işlemlerin rekabet edebileceğinden şüpheleniyorum. Bugünlerde işlemciler saniyede trilyonlarca aritmetik işlem gerçekleştirebiliyor ve bu işlemler bir bilgisayar tarafından üretilen hemen hemen her bit için gereklidir. Ama aritmetik nasıl yapılır? Bir düzeyde, bu sadece bir dijital elektronik uygulamasıdır.

Ancak, mikroişlemci tasarımcıları dışında herkesin anlayamadığı “algoritmik fikirler” vardır. Babbage fark motorunu yaparken (bkz. aritmetik gibi bir şey yapan ancak devam etmeyen bir sistem olarak düşünülebilir). Taşıyıcıyı optimize eden taşıyıcı yayılım ağaçları vardır. Aritmetiğin iç kısımlarını oluşturmak için gereken bit işlemlerinin sayısını azaltan küçük ince ayarlar da (Both'un algoritması, Wallace ağaçları vb.) vardır. Ancak, doğrusal geri besleme kaydırmalı yazmaçların aksine, hemen hemen her yerde kullanılabilecek tek bir algoritmik fikir yoktur; bu nedenle, lineer geri besleme kaydırmalı yazmaçlar tarafından üretilen mümkün olan en uzun dizilerin, en çok kullanılan diziler arasında galip geldiğini düşünüyorum.

Doğrusal olmayan geri beslemeli hücresel otomatlar ve vardiya kayıtları

Bu ilk bakışta çok açık görünmese de, uzun yıllardır üzerinde çalıştığım kapalı döngü kaydırmalı yazmaçlar ile hücresel otomatlar arasında yakın bir ilişki olduğu ortaya çıkıyor. Geri beslemeli kaydırmalı yazmaç için temel organizasyon, her seferinde bir bit hesaplamaktır. Hücresel bir otomatta, bir hücre satırı vardır ve her adımda, tüm hücreler, örneğin en yakın komşularının değerlerine bağlı olan bir kurala göre paralel olarak güncellenir.

Nasıl ilişkili olduklarını görmek için, boyut geri besleme kaydırma kaydını çalıştırmamız gerekir. n ve aynı zamanda durumunu yalnızca her n adımlar; başka bir deyişle, yeniden görünmeden önce tüm bitlerin üzerine yazılmasına izin verin. Doğrusal bir geri besleme kaydırma kaydının her adımı (burada - iki dokunuşla) görüntülenirse, her adımda her şey sola kayar - işte bu kadar. Ancak sıkıştırılmış bir resim yaparsanız, yalnızca her n adımlar, bir desen görünür hale gelecektir.

Bu, iç içe geçmiş bir kalıptır; ve bu resim, hücresel otomatın bir hücreyi ve komşu hücreyi alıp onlara modulo 2 (XOR) eklemesi durumunda elde edilebilecek olana çok benzer. Hücrelerini yukarıdaki kaydırma yazmacıyla aynı boyutta bir daire içinde olacak şekilde düzenlerse, bir hücresel otomatın başına gelen budur:

Başlangıçta, hücresel otomatlar ve kaydırma yazmaç kalıpları tamamen aynı çıktı. Bu resimlere baktığınızda, kaydırmalı yazmaçların matematiğinin hücresel otomatlarla ilgili olması daha az şaşırtıcı hale geliyor. Ve iç içe geçmiş modellerin tekrarlanabilirliği göz önüne alındığında, neden kaydırmalı yazmaçların zarif bir matematiksel teorisi olması gerektiği açık hale geliyor.

Pratikte kullanılan tipik kaydırma yazmaçları, bu tür açıkça tekrar eden kalıplar sergilemez. Aşağıda, maksimum uzunlukta diziler oluşturan kaydırma yazmaçlarının bazı örnekleri verilmiştir. Gerçek şu ki, dallar birbirinden uzak, bu da yuvalamanın görsel izlerini bulmayı zorlaştırıyor.

Vardiya kayıtları ve hücresel otomatlar arasındaki yazışma ne kadar geniş? Hücresel otomatlar için, yeni hücre değerleri üretme kuralları, istediğiniz herhangi bir şey olabilir. Doğrusal geri besleme kaydırmalı yazmaçlarda, bunlar her zaman modulo 2 ekleme (veya XOR) tabanlı olmalıdır. Bu, bir "doğrusal geri besleme kaydırmalı yazmacının" "doğrusal" kısmının anlamıdır. Doğrusal olmayan geri besleme kaydırmalı yazmaçlar (NFSR) için değerleri birleştirmek için herhangi bir kuralı kullanmak da mümkündür.

Gerçekten de, Saul lineer geri beslemeli kaydırmalı yazmaçlar için teorisini geliştirdiğinde, lineer olmayan durumla başladı. 1956'da JPL'ye geldiğinde, küçük elektronik modüller için raflarla tamamlanmış bir laboratuvar aldı. Saul, modüllerin (her biri yaklaşık bir sigara paketi boyutunda) Bell Labs projesi için belirli bir mantıksal işlemi (VE, VEYA, DEĞİL, ...) gerçekleştirmesi için yapıldığını söyledi. Modüller, istenen herhangi bir doğrusal olmayan geri besleme kaydırma yazmaçlarını uygulamak için birlikte kullanılabilir ve saniyede yaklaşık bir milyon bit verir (Sol bana birinin aynı şeyi genel amaçlı bir bilgisayarla yapmaya çalıştığını ve donanım modüllerini kullanırken 1 saniye sürdüğünü söyledi, genel amaçlı bir bilgisayarda 6 haftalık çalışma gerekli).

Saul, doğrusal geri beslemeli kaydırmalı yazmaçları incelemeye başladığında, ilk büyük keşfi tekrarlama periyotlarıydı. Ve doğrusal olmayanlar söz konusu olduğunda, çabalarının çoğunu aynı şeyi anlamaya çalışmaya adadı. Her türlü deneysel veriyi topladı. Bir yıl süren 245 uzunluğundaki dizileri bile test ettiğini söyledi. Aşağıdaki resimdeki gibi bir özet yaptı (dalga formu satırında gösterilen dizilerin görselleştirilmesine dikkat edin). Ancak lineer geri beslemeli kaydırma kayıtları için sahip olduğu genel teoriyi asla ortaya çıkarmadı.

Şaşırtıcı olmayan bir şekilde, bunu yapamadı. Daha 1950'lerde, programların prensipte bunu yapabileceği teorik sonuçlar (çoğu durumda Turing'in evrensel hesaplamasının fikirlerine dayanarak) ortaya çıktı. Sol'un veya bir başkasının, doğrusal olmayan geri besleme kaydırmalı kayıtlarda çok basit (doğrusal olmayan) işlevlerin kullanılacağını düşündüğünü sanmıyorum.

Çok basit programların davranışının bile ne kadar karmaşık olabileceği ancak daha sonra anlaşıldı. En sevdiğim örnek, komşu hücrelerin değerlerinin şu şekilde gösterilebilecek bir fonksiyon kullanılarak birleştirildiği hücresel bir otomat için kural 30'dur. r + Q + r + q * r mod 2(veya r XOR ( Q VEYA r)). İnanılmaz bir şekilde, Saul, benzer işlevlere dayalı doğrusal olmayan geri besleme kaydırmalı yazmaçları düşündü: r + G + s + q * r + q * s + r * s mod 2... Aşağıda Sol işlevinin ("kural 29070" olarak düşünülebilir), kural 30'un ve diğer birkaç benzer kuralın vardiya kaydında nasıl göründüğünün örnekleri verilmiştir:

Ve burada, sabit boyutlu bir kayıtla sınırlı değiller, hücresel otomatlar gibidirler:

Tabii ki, Saul asla böyle fotoğraflar çekmedi (ve 1950'lerde bunu yapmak neredeyse imkansızdı). Bunun yerine, bir tür kümülatif özellik olarak tekrar dönemine odaklandı.

Saul, doğrusal olmayan geri besleme kaydırmalı yazmaçların kaos kaynakları olup olmadığını merak etti. Bugün hücresel otomatlar hakkında bilinenlerden, yapabilecekleri açıktır. Örneğin, Mathematica'da rastgelelik yaratmak için 25 yıl boyunca 30 hücresel otomat kuralını kullandık (son zamanlarda trilyonlarca olasılığı inceledikten sonra bulduğumuz daha verimli bir kural lehine terk etmemize rağmen).

Sol şifreleme hakkında çok az konuştu; uzun süre hükümet için çalışmadığını düşünmeme rağmen. Bana 1959'da keşfetmesine rağmen " doğrusal olmayan dizilere çok boyutlu korelasyon saldırıları"o iken" programın kriptanaliz için olduğu iddialarından dikkatle kaçınıldı Mesele şu ki, hücresel otomata (ve muhtemelen doğrusal olmayan geri besleme kaydırmalı yazmaçlar) için 30. .

Bir meraklı olarak, son birkaç on yılda tek boyutlu hücresel otomatlar üzerine çalışmamın tüm öncüllerini incelemeye çalıştım. İki boyutlu hücresel otomatlar üzerinde çok az çalışılmış, ancak tek boyutlu otomatlar söz konusu olduğunda yalnızca bir tane tamamen teorik çalışma bulunmuştur. Sanırım Solomon Golomb'un doğrusal olmayan geri besleme kaydırmalı yazmaçları, gördüklerimden çeyrek yüzyıl sonra yaptığım şeye en yakın olanı.

çocuk felci

Soyadını duymak" Golomb ", birçoğu vardiya kayıtlarını hatırlayacaktır. Ancak, çoğu hatırlayacaktır. poliomino... Sol, çocuk felci adını bulmasına rağmen icat etmedi. Daha önce sadece ayrı bulmacalarda görünenleri sistematik hale getirdi.

Sol'un yanıtlamak istediği asıl soru, belirli bir alanı kapsayacak şekilde çocuk felci setlerinin nasıl organize edilebileceğiydi. Bazen oldukça açık ve bazen oldukça zor. Sol, poliomino üzerine ilk makalesini 1954'te yayınladı, ancak Martin Gardner 1957'de onu gerçekten popüler hale getirdi (dergide matematiksel oyunlar üzerine bir köşe yazısı yazdı). Bilimsel amerikalı). Saul'un 1964 kitabının girişinde açıkladığı gibi, sonuç " dünyanın her yerinden ve hayatın her kesiminden sürekli bir muhabir akışı: önde gelen üniversitelerin yönetim kurulu başkanları, bilinmeyen manastırların sakinleri, ünlü hapishanelerden mahkumlar ...".

Oyun şirketleri de yeni bulmacaların farkına vardı ve birkaç ay içinde " yeni sansasyonel bulmacalar"ardından onlarca yıllık diğer polyomino tabanlı bulmacalar ve oyunlar (hayır, uğursuz kel adam Saul'a benzemiyor):

Saul, ilk yayından sonra 50 yıl daha çocuk felci üzerine makaleler yayınladı. 1961'de fraktal ("Infin-tiles") desenler oluşturmak için kullanılabilen "rep-tiles"i tanıttı. Ancak Sol'un çocuk felci ile yaptığı hemen hemen her şey belirli sorunları çözmeyi içeriyordu.

Polyomino'nun özellikleriyle pek ilgilenmiyorum; Onlarla ilgili daha genel fenomenlerle ilgileniyorum. Bir uçağın tamamını birkaç basit şekille "döşeme" yapıp yapamayacağınıza karar vermek kolay görünüyor. Ancak çocuk felci söz konusu olduğunda (ve bunlara dayalı tüm oyunlar ve bulmacalar), işlerin o kadar basit olmadığı ortaya çıkıyor. Nitekim 1960'larda bu sorunun teorik olarak çözülemez olduğu kanıtlandı.

Sadece sınırlı bir alanla ilgileniyorsak, o zaman, prensipte, şekillerin akla gelebilecek tüm pozisyonlarını basitçe listeleyebilir ve ardından olması gerektiği gibi yerleştirildiklerine bakabiliriz. Ancak, sonsuzlukla ilgileniyorsak, bu yapılamaz. Belki birileri bir milyon parçayı başarılı bir şekilde yerleştirmenin bir yolunu bulur, ancak bu sonucun daha da genişletilebileceğinin garantisi yoktur.

Çalışan bir Turing makinesi veya hücresel bir otomat gibi görünebileceği ortaya çıktı. Bir dizi karo ile başlarsınız. O halde sonsuz döşemenin mümkün olup olmadığı sorusu, bir Turing makinesinin sürekli devam etmesine izin verecek bir ayarın mümkün olup olmadığı sorusuna eşdeğerdir. Mesele şu ki, eğer bir Turing makinesi evrensel ise (yani, olası herhangi bir hesaplamayı yapmak üzere programlanabilir), o zaman onun için durma problemi çözülemez olabilir, bu da döşeme probleminin de çözülemez olacağı anlamına gelir.

Elbette bu, orijinal şekil kümesine bağlıdır. Soru, genel amaçlı hesaplamayı kodlamak ve çözülemez döşeme problemine yol açmak için formların ne kadar karmaşık olması gerektiğidir. Solomon Golomb bu konudaki literatürü biliyordu, ancak özellikle ilgilenmedi.

Karmaşık ve ayrıntılı poliomino kümelerinin aslında genel amaçlı hesaplamayı desteklediği bilinmektedir. Peki ya basit bir set? Yanlışlıkla rastlamak yeterince basit mi? Çalıştığım tüm bu sistemlere bakarsanız, en basit kümenin gerçekten basit olduğu ortaya çıkıyor. Ancak, onu bulmak zordur.

Çok daha basit bir görev, yalnızca periyodik olmasa da, uçakları başarıyla dolduran poliominoları bulmaktır. Roger Penrose, 1994 yılında uygun bir örnek buldu. Kitabımda Yeni bir bilim türü 3 poliomino ile biraz daha basit bir örnek verdim:

Hikayenin geri kalanı

Saul, vardiya kayıtları ve poliomino alanında kayda değer bir başarı elde ettiğinde otuzlu yaşlarının başındaydı... Çok aktif bir insandı. Bazıları daha önceki çalışmalarını genişleten birkaç yüz makale yazdı, bazıları kendisine sorulan soruların cevaplarıydı ve bazıları da görünüşe göre sadece eğlence için - sayılar, diziler, kriptosistemler hakkında ilginç şeyler bulmak için yazılmıştı. vb.

Vardiya kayıtları ve poliomino hacimli konulardır (AMS sınıflandırmasında ayrı kategorilere bile getirilirler). Son yıllarda, her ikisi de kendi temellerinde bilgisayar deneyleri yapmaya başladıklarında yeni bir gelişme turu aldılar; Sol da bunlarda aktif rol aldı. Ancak birçok soru cevapsız kalıyor. Ve eğer doğrusal geri beslemeli kaydırmalı yazmaçlar için büyük Hadamard matrisleri bulunabilirse, o zaman bile, tüm periyodik olmayan ve diğer egzotik poliominolardan bahsetmeden, doğrusal olmayan geri beslemeli kaydırmalı yazmaçlar hakkında çok az şey bilinmektedir.

Sol her zaman bulmacalarla, hem matematiksel hem de kelime bulmacalarıyla ilgilendi. Bir süre için bir bulmaca sütunu çalıştırdı. Los Angeles zamanları ve 32 yıl boyunca yazdı" Golomb kumarları Johns Hopkins Mezunlar Dergisi'ne MegaIQ testine katıldı ve kendisi ve patronu ülkedeki ilk beşte yer aldığında Beyaz Saray'a bir gezi kazandı.

Üniversitedeki çalışmalarına muazzam çaba harcadı: sadece öğrencilere ders vermekle ve lisansüstü öğrencileri denetlemekle kalmadı ve idari merdiveni tırmanmakla kalmadı (üniversite konseyi başkanı, araştırmadan sorumlu rektör yardımcısı, vb.), üniversitenin bir bütün olarak yönetimi (örneğin, “Fakülte Danışmanlığı: Al mı Bırak mı?” başlıklı bir makale yazdı) Cevap: Hayır, üniversite için iyi! Güney Kaliforniya Üniversitesi'nde kelle avcısı olarak çalıştı ve orada görev yaptığı süre boyunca üniversitenin bilinmezlikten eğitim programları sıralamasında en üst sıralara yükselmesine yardımcı oldu.

Ve sonra danışmanlık vardı. Saul titizdi ve devlet kurumları için yaptıklarını açıklamadı. 1960'ların sonlarında, kendisinden başka herkesin polyomino oyunları satmasından bıkan Saul, Recreational Technology, Inc. adlı bir şirket kurdu. İşler iyi gitmiyordu, ancak Saul, teorileri ve bulmacaları kodlama tutkusu olan Berkeley profesörü Alvin Berlekamp ile tanıştı. Daha sonra, Siklotomik'i kurdular (formun siklotomik polinomlarının onuruna x n- 1), sonunda Kodak'a toplu bir ücret karşılığında satıldı (Berlekamp ayrıca, daha sonra Jim Simons'a sattığı ve günümüzün en büyük hedge fonlarından biri olan Renaissance Technologies'in başlangıç ​​noktası haline gelen bir algoritmik ticaret sistemi oluşturdu).

10.000'den fazla patent, bir şekilde Sol'un çalışmasıyla ilgilidir, ancak Sol'un kendisi yalnızca bir patent yarıgruplara dayalı kriptosistemlere - ve bence işini ticarileştirmek için çok az şey yaptı.

Sol, uzun yıllar İsrail Teknoloji Enstitüsü Technion'da çalıştı. Kendisinden "olarak bahsetti. dini olmayan Ortodoks Yahudi", ancak aynı zamanda bazen Yaratılış Kitabı hakkında yeni başlayanlar için seminerler düzenledi ve ayrıca Ölü Deniz Parşömenlerinin (Qumran el yazmaları) deşifre edilmesi üzerinde çalıştı.

Saul ve karısı çok seyahat etti, ancak Saul için "dünyanın merkezi" kesinlikle Güney Kaliforniya Üniversitesi'ndeki Los Angeles ofisi ve yaklaşık 60 yıldır karısıyla birlikte yaşadığı evdi. Her zaman arkadaşları ve öğrencileri ile çevriliydi. Ve bir ailesi vardı. Kızı Astrid, Richard Feynman hakkındaki oyunda (onun için poz verdi) ve arkadaşımın romanında karakterlerden biri olarak öğrenci rolünü oynadı. Beatrice, kariyerini çeşitli tıbbi endikasyonlara ve teşhislere (Körfez Savaşı ile ilgili hastalıklar, statin etkileri, hıçkırıklar vb.) matematiksel kesinlik düzeyini uygulamaya adamıştır. Hatta Beatrice'i daha sonra kocası olacak adamla, modern hesaplamalı sinirbilimin kurucularından biri olan Terry Seinovski ile tanıştırarak onun hayatına küçük bir katkıda bulundum.

Sol, detayları çok fazla detaylandırmasa da birçok olaya karışmış gibi görünüyordu. Zaman zaman onunla fen ve matematik hakkında konuşmak istedim, ama o hem bireyler hem de organizasyonlar hakkında hikayeler anlatmakla (genellikle çok heyecan verici) daha çok ilgilendi (" [1985'te], yıllarca konferanslardan uzak kaldıktan sonra, Claude Shannon'ın bilgi teorisi üzerine yıllık konferansta bir barda habersiz olarak ortaya çıktığına inanabiliyor musunuz?"; "Suudi Arabistan'a gitmesi için California Teknoloji Enstitüsü'nün başkanına ne kadar ödediklerini biliyor musunuz?", vesaire.).

Geriye dönüp baktığımda, çalışmamda ortaya çıkan bazı matematiksel soruları çözmek için Saul'un ilgisini çekmek istediğimi fark ettim. Başkaları tarafından önerilen sorunları çözmeyi ne kadar sevdiğini anladığımı sanmıyorum. Bilgisayar dünyasının altyapısının gelişimine önemli katkısına rağmen, Sol'un kendisi hiçbir zaman bilgisayarları ciddi şekilde kullanmadı. Hesapları kafasında kolaylıkla yapabildiğinden gurur duyuyordu. 70 yaşına kadar e-posta kullanmadı ve cep telefonu olmasına rağmen evde hiç bilgisayar kullanmadı (neredeyse hiç normal e-posta almıyordu. Bir yıl kadar önce hikayeyi çalıştığımdan bahsetmiştim. Ada Lovelace'den; o yanıtladı: " Ada Lovelace'in Babbage'ın programcısı olarak hikayesi o kadar yaygın ki herkes bunu hafife alıyor gibi görünüyor, ancak konuyla ilgili kaynakları hiç görmedim.").

Sol'un kızları birkaç yıl önce 80. doğum günü için bir parti düzenledi ve şu ilginç davetiyeleri yarattı:

Saul'un bazı sağlık sorunları vardı, ancak bu onun yaşam ritmini pek etkilemiyor gibiydi. Karısının sağlığı kötüleşiyor ve son birkaç haftadır oldukça dramatik bir şekilde. Sol Cuma günü her zamanki gibi ofisine gitti ve Cumartesi gecesi uykusunda öldü. Karısı Bo ondan sadece iki hafta kurtuldu ve 60. evlilik yıldönümlerinden sadece iki gün önce öldü.

Saul gitmiş olsa da, çalışmaları dijital dünyanın oktilyonik bitlerinde yaşıyor.

Hoşçakal Sol. Ve hepimizden - teşekkür ederim.



Shift register dizileri hem kriptografide hem de kodlama teorisinde kullanılır. Teorileri iyi gelişmiştir, vardiya kayıtlarına dayalı akış şifreleri, elektroniklerin ortaya çıkmasından çok önce askeri kriptografinin beygir gücüydü.

Geri beslemeli kaydırma kaydı (bundan sonra РгСсОС olarak anılacaktır) iki bölümden oluşur: bir kaydırma kaydı ve bir geri bildirim işlevi. Kaydırma yazmacı bir bit dizisidir. Bit sayısı belirlenir vardiya kaydı uzunluğu, uzunluk n bit ise, kayıt denir n-bit kaydırma yazmacı... Bir bitin alınması gerektiğinde, kaydırma yazmacının tüm bitleri 1 konum sağa kaydırılır. En soldaki yeni bit, kayıttaki diğer tüm bitlerin bir işlevidir. Kaydırma yazmacının çıktısı, genellikle en az anlamlı olan bir bittir. Vardiya kaydı dönemi sonuç dizinin tekrarının başlamasından önceki uzunluğudur.

Şekil 1. Geri besleme kaydırma kaydı

Vardiya kayıtları, dijital donanım kullanılarak kolayca uygulandıkları için akış şifrelerinde çok hızlı bir şekilde yerini buldu. 1965 yılında, Norveç hükümetinin baş kriptografı Ernst Selmer, kaydırmalı kayıt dizileri teorisi geliştirdi. Bir NSA matematikçisi olan Solomon Golomb, bazı sonuçlarını ve Selmer'in sonuçlarını özetleyen bir kitap yazdı. Geri beslemeli en basit kaydırmalı yazmaç türü, doğrusal bir geri besleme kaydırmalı yazmaçtır (bundan sonra LFSR veya PrCCLOC olarak anılacaktır). Bu tür kayıtların geri bildirimi, bazı kayıt bitlerinin basitçe XOR'udur (iki modül ilavesi), bu bitlerin listesine bir kademe dizisi denir. Bu kayıt bazen Fibbonacci konfigürasyonu olarak adlandırılır. Geri besleme dizisinin basitliği nedeniyle, PrCcVOC analizi için oldukça iyi geliştirilmiş bir matematiksel teori kullanılabilir. Ortaya çıkan çıktı dizilerini analiz ederek, bu dizilerin güvenli olacak kadar rastgele olduğunu doğrulayabilirsiniz. PrCcLOC, kriptografide en yaygın olarak kullanılan kaydırma yazmacıdır.


Şekil 2. PrCsLOC Fibbonacci

Genel olarak, bir n-bit PrCcLOC, N = 2 n -1 dahili durumlardan birinde olabilir. Bu, teoride, böyle bir kaydın, T = 2 n -1 bitlik bir periyot ile bir psödo-rastgele dizi üretebileceği anlamına gelir. (Dahili durumların sayısı ve periyot N = T max = 2 n -1'e eşittir, çünkü PrCcLOC'u sıfırlarla doldurmak kaydırma yazmacının sonsuz bir sıfır dizisi üretmesine neden olur, bu kesinlikle işe yaramaz). Yalnızca belirli dağıtma dizileri için, PrCcLOC döngüsel olarak tüm 2 n -1 dahili durumdan geçer, bu tür PrCcLOC Maksimum süre ile PrCcLOC... Ortaya çıkan sonuç denir M-dizisi.

Örnek ... Aşağıdaki şekil, birinci ve dördüncü bitlerden alınan 4 bitlik bir PrCcLOC'u göstermektedir. 1111 değeri ile başlatılırsa, tekrarlamadan önce kayıt aşağıdaki dahili durumları üstlenecektir:

Shift saat numarası (dahili durum)

Kayıt durumu

çıkış biti

Başlangıç ​​değeri

15 (başlangıç ​​durumuna dönüş)

16 (tekrar durumları)

Çıktı dizisi en az anlamlı bitlerden oluşan bir dizi olacaktır: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 periyodu ile T = 15, olası dahili durumların toplam sayısı (sıfır hariç), N = 2 4 -1 = 16-1 = 15 = T max, dolayısıyla çıkış dizisi bir M dizisidir.

Belirli bir PrCcLOC'nin maksimum periyoda sahip olması için, dal dizisinden ve sabit 1'den oluşturulan polinom, ilkel modulo 2 olmalıdır. Polinom, derecelerin toplamı olarak temsil edilir, örneğin, n dereceli bir polinom şu şekilde temsil edilir. şöyle:

a n xn + bir n-1 x n-1 +… + bir 1 x 1 + bir 0 x 0 = bir n xn + bir n-1 x n-1 +… + bir 1 x + bir 0 burada bir ben = (0,1) için i = 1… n, a x ben - basamağı gösterir.

Bir polinomun derecesi, kaydırma yazmacının uzunluğudur. n dereceli bir ilkel polinom, x 2n?1+1'i bölen indirgenemez bir polinomdur, ancak 2 n -1'in bölenleri olan tüm d'ler için x d +1'in bir böleni değildir. İlgili matematiksel teori şurada bulunabilir.

Genel olarak, belirli bir modülo 2 derecesine sahip ilkel polinomları oluşturmanın kolay bir yolu yoktur. En kolay yol, rastgele bir polinom seçip ilkel olup olmadığını kontrol etmektir. Bu kolay değildir ve rastgele seçilen bir sayının basit bir sayı olup olmadığını kontrol etmeye benzer - ancak birçok matematiksel yazılım paketi bu sorunu çözebilir.

Çeşitli derecelerdeki polinomların bazıları, ancak kesinlikle hepsi değil, ilkel mod 2 aşağıda verilmiştir. Örneğin, giriş

(32, 7, 5, 3, 2, 1, 0) aşağıdaki polinomun ilkel mod 2 olduğu anlamına gelir: x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Bu, maksimum periyodu olan bir PrCCLOC için kolaylıkla genelleştirilebilir. İlk sayı PrCcLOC'un uzunluğudur. Son sayı her zaman 0'dır ve atlanabilir. 0 hariç tüm sayılar, kaydırma yazmacının sol kenarından sayılan parmak dizisini belirtir. Yani, daha düşük dereceye sahip bir polinomun üyeleri, kaydın sağ kenarına daha yakın konumlara karşılık gelir.

Örnekle devam edersek, (32, 7, 5, 3, 2, 1, 0) yazmak, alınan 32 bitlik kaydırma yazmacı için otuz saniye, yedinci, XORing ile yeni bir bit, yeni bir bit üretildiği anlamına gelir. beşinci, üçüncü, ikinci ve birinci bit. , ortaya çıkan PrCcLOC, tekrar edene kadar 2 32 -1 değer arasında döngü yaparak maksimum uzunluğa sahip olacaktır.


Maksimum uzunluklu Şekil 4.32-bit PrCcLOC

Dal dizisinin polinom (32, 7, 5, 3, 2, 1, 0) ile karakterize edildiği PgCsLOC program kodunu düşünün. C dilinde şöyle görünür:

statik imzasız uzun ShiftRegister = 1;

/ * 0 hariç her şey. * /

ShiftRegister = ((((ShiftRegister >> 31)

^ (ShiftKayıt >> 6)

^ (ShiftKayıt >> 4)

^ (ShiftRegister >> 2)

^ (ShiftRegister >> 1)

^ ShiftRegister))

| (ShiftRegister >> 1);

dönüş ShiftRegister & 0x00000001;)

Kaydırmalı yazmaç bir bilgisayar sözcüğünden daha uzunsa, kod daha karmaşık hale gelir, ancak fazla değil. Ek B, bazı ilkel polinomlar modulo 2'nin bir tablosunu içerir, bunu gelecekte bu polinomların bazı özelliklerini tanımlamak için ve ayrıca dal dizisini tanımlamak için yazılım uygulamasında kullanacağız.

Tablonun tüm öğelerinin tek sayıda katsayıya sahip olduğuna dikkat edilmelidir. Böyle uzun bir tablo, PrCcLOC ile daha fazla çalışma için sağlanır, çünkü PrCcLOC genellikle akış şifreleri ile kriptografi için ve sözde rasgele sayı üreteçlerinde kullanılır. Bizim durumumuzda, en yüksek derecesi en fazla yedi olan polinomları kullanabilirsiniz.

p (x) ilkel ise, x n p (1 / x) de ilkeldir, dolayısıyla tablonun her bir elemanı aslında iki ilkel polinomu tanımlar. Örneğin, (a, b, 0) ilkel ise, (a, a-b, 0) da ilkeldir. İlkel ise (a, b, c, d, 0), aynı zamanda ilkeldir (a, a-d, a-c, a-b, 0). Matematiksel olarak:

x a + x b +1 ilkel ise, x a + x a-b +1 de ilkeldir,

x a + x b + x c + x d +1 ilkel ise, x a + x a-d + x a-c + x a-b +1 de ilkeldir. Yeni bir bit oluşturmak için kaydırma yazmacının yalnızca iki bitinin XOR'lanması gerektiğinden, ilkel üç terimli terimler en hızlı şekilde yazılımda uygulanır (sıfır terimi dikkate alınmaz, yani x 0 = 1, yukarıdaki örneğe bakın). Aslında, tabloda gösterilen tüm geri besleme polinomları seyrektir, yani birkaç katsayıları vardır. Seyreklik her zaman bir zayıflık kaynağıdır ve bu bazen bir algoritmayı kırmak için yeterlidir. Kriptografik algoritmalar için, çok katsayıları olan yoğun ilkel polinomları kullanmak çok daha iyidir. Yoğun polinomlar kullanılarak, özellikle anahtarın bir parçası olarak, çok daha kısa PsCLOC'ler kullanılabilir.

Yoğun ilkel polinomlar mod 2 oluşturmak kolay değildir. Genel olarak, k dereceli ilkel polinomlar oluşturmak için 2 k -1'in çarpanlara ayrılmasını bilmeniz gerekir.

Kendi başlarına, PrCcLOC'ler iyi sözde-rastgele dizi oluşturuculardır, ancak bazı istenmeyen rasgele olmayan (deterministik) özelliklere sahiptirler. Ardışık bitler doğrusaldır, bu da onları şifreleme için işe yaramaz hale getirir. n uzunluğunda bir PrCLOC için, dahili durum üretecin önceki n çıkış bitidir. Geri besleme şeması gizli tutulsa bile, yüksek verimli Berlekamp-Massey algoritması kullanılarak üretecin 2n çıkış bitinden belirlenebilir.

Ek olarak, bu dizinin bitişik bitleri kullanılarak oluşturulan büyük rastgele sayılar yüksek oranda ilişkilidir ve bazı uygulama türleri için hiç rastgele değildir. Buna rağmen, PgCsLOC'ler genellikle şifreleme sistemleri ve algoritmalarının bileşenleri olarak şifreleme algoritmaları oluşturmak için kullanılır.

Geri besleme kaydırma kaydı iki bölümden oluşur: vardiya kaydı ve geri bildirim işlevleri.

Şekil 19. Geri besleme kaydırma kaydı.

Genel olarak, bir kaydırma yazmacı, bir halkanın veya alanın bazı öğelerinin bir dizisidir. En çok kullanılan biraz vardiya kayıtları. Böyle bir kaydın uzunluğu bit sayısı ile ifade edilir. Her bit alındığında, kaydın tüm bitleri bir konum sağa kaydırılır. Yeni en anlamlı bit, diğer tüm kayıt bitlerinin bir fonksiyonu olarak hesaplanır. Çıktı genellikle en az anlamlı bittir. Kaydırmalı yazmacın periyodu, çıktı dizisinin tekrarının başlamasından önceki uzunluğudur.

En basit kaydırmalı yazmaç türü, doğrusal bir geri besleme kaydırmalı yazmaçtır (RSLOS veya LRS). Geri bildirim, bazı kayıt bitlerinde basit bir XOR işlemidir. Bu bitlerin listesi tanımlanır karakteristik polinom ve aradı viraj sırası... Bu bazen denir Fibonacci yapılandırması.

20. RLOS Fibonacci yapılandırması.

RSLOS'un yazılım uygulamasında, değiştirilmiş bir şema kullanılır: yeni bir anlamlı bit üretmek için, kademe dizisinin bitlerini kullanmak yerine, eski biti değiştirerek jeneratör çıkışı ile her bit üzerinde bir XOR işlemi gerçekleştirilir. musluk dizisi. Bu değişiklik bazen denir Galois yapılandırması.

21. RSLOS Galois yapılandırması.

n-bit RSLOS 2'den birinde olabilir n- 1 dahili durum. Bu, teoride, böyle bir kaydın, 2 periyodu olan bir sözde rastgele dizi üretebileceği anlamına gelir. n- 1 bit (sıfırlarla doldurmak tamamen işe yaramaz). hepsini geç 2 n- 1 dahili durum yalnızca belirli musluk dizileriyle mümkündür. Bu tür kayıtlara maksimum süre ile RSLOS denir. RSLOC'nin maksimum periyodunu sağlamak için, karakteristik polinomunun olması gerekir. ilkel modulo 2. Polinomun derecesi, kaydırma yazmacının uzunluğudur. Derecenin ilkel polinomu n- öyle indirgenemez bölen ama bölen olmayan polinom xd hepsi için +1 NS 2'nin bölenleri nelerdir n- 1. (Polinomları tartışırken, terim asal sayı terimi ile değiştirilir indirgenemez polinom). RSLOS şekillerinde verilen karakteristik polinom:



x 32 + x 7 + x 5 + x 3 + x 2 + x + 1

ilkel modulo 2'dir. Böyle bir kaydın süresi, tekrarlanana kadar tüm 2 32 - 1 arasında döngü yaparak maksimum olacaktır. En yaygın olarak kullanılanlar, inceltilmiş polinomlardır, yani. sadece bazı katsayıları olan. en popülerleri üç terimlilerdir.

RSLOS'a dayalı üretecin önemli bir parametresi şudur: doğrusal karmaşıklık... Uzunluk olarak tanımlanır n jeneratör çıkışını simüle edebilen en kısa RLOS. Doğrusal karmaşıklık önemlidir çünkü basit bir Berlenkamp-Massey algoritması yalnızca 2'yi işaretleyerek böyle bir RSLOS'u yeniden oluşturabilirsiniz. n gama bitleri. İstenen RSLOS'un tanımı ile akış şifresi aslında bozulur.

RSLOS'a ek olarak, doğrusal olmayan geri beslemeli, geri beslemeli vb. kaydırmalı yazmaçlar da kullanılır.

Sayı-teorik yaklaşım temelinde bir dizi üreteç geliştirilmiştir (Bloom-Micali üreteçleri, RSA, BBS, sıkıştırma, katkı üreteçleri, vb.).

Akış şifreleme algoritmalarının sentezi için yazılım, blok şifreleme algoritmalarına kıyasla daha ayrıntılı olarak geliştirilmiştir. Bununla birlikte, akış şifreleri oluşturmak için blok şifreleme algoritmaları genellikle OFB veya CFB modlarında kullanılır.