Pengenalan kepada asas sifir kekunci simetri moden. Daftar Anjakan Maklum Balas Daftar Anjakan Maklum Balas Linear c

  • 06.11.2021

Daftar Anjakan Maklum Balas Linear(RSLOS, eng. daftar anjakan maklum balas linear, LFSR) ialah daftar anjakan perkataan bit di mana nilai bit input (dimasukkan) adalah sama dengan fungsi Boolean linear daripada nilai bit baki daftar sebelum anjakan. Ia boleh dianjurkan oleh kedua-dua perisian dan perkakasan. Ia digunakan untuk menjana jujukan bit pseudo-rawak, yang mencari aplikasi, khususnya, dalam kriptografi.

Penerangan

Kawalan daftar dalam pelaksanaan perkakasan dilakukan dengan menggunakan nadi anjakan (jika tidak dipanggil jam atau nadi penyegerakan) kepada semua sel. Pengurusan daftar dalam pelaksanaan perisian dilakukan dengan melaksanakan gelung. Pada setiap lelaran gelung, fungsi maklum balas dikira dan bit dalam perkataan dialihkan.

Prinsip operasi

Kerumitan linear

Kemandirian korelasi

Dalam usaha untuk mencapai kerumitan linear yang tinggi bagi jujukan yang dijana, pakar kriptografi menggabungkan output daftar anjakan berbilang secara bukan linear. Dalam kes ini, satu atau beberapa jujukan keluaran (atau malah keluaran RSLOS individu) boleh disambungkan dengan aliran biasa dan dibuka oleh cryptanalyst. Penggodaman berdasarkan kelemahan sedemikian dipanggil bedah siasat korelasi... Idea utama penggodaman sedemikian adalah untuk mencari beberapa korelasi antara output penjana dan output bahagian konstituennya. Kemudian, dengan memerhatikan urutan output, anda boleh mendapatkan maklumat tentang pin perantaraan ini, dan dengan itu menggodam penjana. Thomas Sigenthaler menunjukkan bahawa kebebasan korelasi boleh ditentukan dengan tepat dan terdapat pertukaran antara kebebasan korelasi dan kerumitan linear.

Pelaksanaan perisian

Pelaksanaan perisian RSLOS agak perlahan dan berfungsi lebih pantas jika ia ditulis dalam pemasang. Salah satu penyelesaiannya ialah penggunaan selari 16 RSLOS (atau 32, bergantung pada panjang perkataan dalam seni bina komputer). Dalam skema sedemikian, tatasusunan perkataan digunakan, saiznya sama dengan panjang daftar anjakan, dan setiap bit perkataan merujuk kepada RSLOSnya sendiri. Memandangkan nombor jujukan paip yang sama digunakan, ini boleh memberikan keuntungan yang ketara dalam prestasi penjana.

Konfigurasi Fibonacci

Pertimbangkan daftar anjakan 32-bit. Terdapat urutan lencongan untuknya (32, 31, 30, 28, 26, 1) (\ gaya paparan \ kiri (32, \; 31, \; 30, \; 28, \; 26, \; 1 \ kanan))... Ini bermakna untuk menjana bit baharu, anda mesti XOR bit ke-31, ke-30, ke-29, ke-27, ke-25 dan ke-0. RSLO yang diterima mempunyai tempoh maksimum 2 32 - 1 (\ gaya paparan 2 ^ (32) -1)... Kod C untuk daftar sedemikian adalah seperti berikut:

int LFSR_Fibonacci (kosong) (statik tidak bertanda panjang S = 0x00000001; S = ((((S >> 31) ^ (S >> 30) ^ (S >> 29) ^ (S >> 27) ^ (S >> 25) ^ S) & 0x00000001)<< 31 ) | (S >> 1); pulangkan S & 0x00000001; )

Konfigurasi Galois

Penjana ini tidak mempunyai kekuatan kriptografi yang lebih besar, tetapi ia memberikan keuntungan prestasi: semua operasi XOR melalui selari boleh dilakukan dalam satu tindakan, dan bukan secara berurutan satu demi satu, seperti dalam konfigurasi Fibonacci. Skim ini juga akan mendapat manfaat daripada pelaksanaan perkakasan.

Kod C untuk daftar anjakan 32-bit adalah seperti berikut:

int LFSR_Galois (kosong) (statik tidak bertanda panjang S = 0x00000001; jika (S & 0x00000001) (S = (S ^ 0x80000057 >> 1) | 0x80000000; kembali 1;) jika tidak (S >> = 1);

Perlu diingat bahawa gelung bilangan panggilan tetap ke fungsi LFSR_Galois dalam konfigurasi Galois adalah lebih kurang 2 kali lebih pantas daripada fungsi LFSR_Fibonacci dalam konfigurasi Fibonacci (pengkompil MS VS 2010 pada Intel Core i5).

Contoh urutan yang dihasilkan

Konfigurasi Fibonacci

Biarkan RSLOS diberikan oleh polinomial ciri x 3 + x + 1 (\ gaya paparan x ^ (3) + x + 1)... Ini bermakna bahawa bit paip akan menjadi ke-2 dan ke-0, dan satu dalam formula polinomial bermakna bit ke-0 ialah input. Fungsi maklum balas mempunyai bentuk S j = S j - 1 ⊕ S j - 3 (\ gaya paparan S_ (j) = S_ (j-1) \ lebihan S_ (j-3))... Katakan keadaan awal daftar anjakan ialah jujukan. Keadaan daftar selanjutnya ditunjukkan dalam jadual di bawah:

Nombor langkah negeri Dijana sedikit
0 [0, 0, 1] (\ gaya paparan \ kiri) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\ gaya paparan \ kiri) 1

Oleh kerana keadaan dalaman pada langkah ketujuh kembali kepada asalnya, maka, bermula dari langkah seterusnya, bit akan diulang. Iaitu, urutan yang dihasilkan adalah seperti berikut: [1, 0, 0, 1, 1, 1, 0, 1. ... ... ] (\ gaya paparan \ kiri)(urutan bit dalam jujukan sepadan dengan susunan penjanaannya oleh RSLOS). Oleh itu, tempoh jujukan ialah 7, iaitu nilai maksimum yang mungkin berlaku disebabkan oleh primitif polinomial yang diberikan.

Konfigurasi Galois

Ambil polinomial ciri yang sama, iaitu c 3 = c 1 = 1 (\ gaya paparan c_ (3) = c_ (1) = 1), c 2 = 0 (\ gaya paparan c_ (2) = 0)... Hanya bit pertama ditambah pada bit keluaran. Keadaan awal adalah sama. Daftar selanjutnya menyatakan:

Nombor langkah negeri Dijana sedikit
0 [0, 0, 1] (\ gaya paparan \ kiri) -
1 [1, 0, 0] (\ gaya paparan \ kiri) 0
2 [0, 1, 1] (\ gaya paparan \ kiri) 1
3 [1, 0, 1] (\ gaya paparan \ kiri) 1
4 [1, 1, 1] (\ gaya paparan \ kiri) 1
5 [1, 1, 0] (\ gaya paparan \ kiri) 0
6 [0, 1, 0] (\ gaya paparan \ kiri) 0
7 [0, 0, 1] (\ gaya paparan \ kiri) 1

Keadaan dalaman daftar pada langkah ketujuh kembali kepada keadaan asalnya, oleh itu, tempohnya juga adalah 7. Tidak seperti konfigurasi Fibonacci, keadaan dalaman daftar ternyata berbeza, tetapi urutan yang dijana adalah sama, hanya dianjak oleh 4 kitaran jam: [0, 1, 1, 1, 0, 0, 0, 0, 1, 1,. ... ... ] (\ gaya paparan \ kiri)(urutan bit dalam jujukan sepadan dengan susunan penjanaannya oleh RSLOS).

Menghasilkan polinomial primitif

bit, n (\ gaya paparan n) Polinomial primitif tempoh, 2 n - 1 (\ gaya paparan 2 ^ (n) -1) Bilangan polinomial primitif
2 x 2 + x + 1 (\ gaya paparan x ^ (2) + x + 1) 3 1
3 x 3 + x 2 + 1 (\ gaya paparan x ^ (3) + x ^ (2) +1) 7 2
4 x 4 + x 3 + 1 (\ gaya paparan x ^ (4) + x ^ (3) +1) 15 2
5 x 5 + x 3 + 1 (\ gaya paparan x ^ (5) + x ^ (3) +1) 31 6
6 x 6 + x 5 + 1 (\ gaya paparan x ^ (6) + x ^ (5) +1) 63 6
7 x 7 + x 6 + 1 (\ gaya paparan x ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\ gaya paparan x ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 x 9 + x 5 + 1 (\ gaya paparan x ^ (9) + x ^ (5) +1) 511 48
10 x 10 + x 7 + 1 (\ gaya paparan x ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\ gaya paparan x ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\ gaya paparan x ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\ gaya paparan x ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\ gaya paparan x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 x 15 + x 14 + 1 (\ gaya paparan x ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\ gaya paparan x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 x 17 + x 14 + 1 (\ gaya paparan x ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\ gaya paparan x ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\ gaya paparan x ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Kelebihan dan kekurangan

Kelebihan

  • kelajuan tinggi algoritma kriptografi yang dibuat berdasarkan RSLOS (contohnya, sifir aliran);
  • penggunaan hanya operasi bit termudah penambahan dan pendaraban, perkakasan yang dilaksanakan dalam hampir semua peranti pengkomputeran;
  • sifat kriptografi yang baik (RSLOS boleh menjana jujukan tempoh yang panjang dengan sifat statistik yang baik);
  • disebabkan strukturnya, RSLOS mudah dianalisis menggunakan kaedah algebra.

keburukan

Kaedah untuk meningkatkan kekuatan kriptografi jujukan yang dijana

Penjana dengan daftar anjakan berbilang

Penjana jenis ini terdiri daripada beberapa daftar anjakan maklum balas linear yang menjana bit x 1, i, x 2, i,…, x M, i (\ gaya paparan x_ (1, i), \; x_ (2, i), \; \ titik, \; x_ (M, i)) masing-masing. Selanjutnya, bit yang dijana diubah oleh beberapa fungsi Boolean f (x 1, i, x 2, i,…, x M, i) (\ gaya paparan f (x_ (1, i), \; x_ (2, i), \; \ titik, \; x_ (M , i)))... Perlu diingatkan bahawa untuk penjana jenis ini, panjang daftar L i (\ gaya paparan L_ (i)), i = 1, 2,…, M (\ gaya paparan i = 1, \; 2, \; \ titik, \; M) saling sederhana antara satu sama lain.

Tempoh penjana ini ialah T = (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 LM - 1) ≲ 2 L (\ gaya paparan T = (2 ^ (L_ (1)) - 1) \ cdot (2 ^ ( L_ (2)) - 1) \ cdots (2 ^ (L_ (M)) - 1) \ lesssim 2 ^ (L)), di mana L = ∑ i = 1 M L i (\ gaya paparan L = \ jumlah \ had _ (i = 1) ^ (M) L_ (i))- jumlah bilangan sel. Akibatnya, penggunaan beberapa RSLOS meningkatkan tempoh jujukan yang dijana berbanding dengan satu daftar, yang meningkatkan kekuatan kriptografi penjana. Ia juga meningkatkan kerumitan linear atau panjang daftar terpendek yang sepadan dengan penjana yang diberikan. Daftar sedemikian didapati menggunakan algoritma Berlekamp-Massey daripada urutan yang dijana. Paling baik, panjangnya adalah sepadan dengan tempoh urutan yang dijana.

Penjana dengan transformasi tak linear

Gambar rajah blok penjana sedemikian tidak berbeza daripada penjana sebelumnya. Perbezaan utama ialah peranti transformasi ditentukan oleh fungsi Boolean tak linear f (x 1, x 2,…, x M) (\ gaya paparan f (x_ (1), x_ (2), \ titik, x_ (M)))... Sebagai fungsi sedemikian, kita mengambil, sebagai contoh, polinomial Zhegalkin (mengikut teorem Zhegalkin, sebarang fungsi Boolean boleh diwakili secara unik oleh polinomial Zhegalkin).

Penjana bukan linear juga boleh dilaksanakan pada daftar anjakan maklum balas bukan linear... Dia boleh memberi 2 2 L - 1 - L (\ gaya paparan 2 ^ (2 ^ (L-1) -L)) varian urutan tempoh maksimum, iaitu lebih daripada RSLOS.

Rintangan kripto penjana ini meningkat disebabkan oleh ketaklinieran fungsi yang digunakan. Menentukan keadaan daftar daripada jujukan bit yang dihasilkan adalah masalah matematik yang kompleks, kerana tiada algoritma yang diketahui untuk memulihkan keadaan asal.

Kaedah ini digunakan, sebagai contoh, dalam Penjana Geff dan penjana Geff umum, namun penjana tersebut boleh dipecahkan oleh serangan korelasi.

Pengayun dengan masa yang berbeza bagi daftar anjakan

Penjana berhenti-dan-pergi

Penjana berhenti-dan-pergi(English Stop-and-Go, Both-Piper) menggunakan output RSLOS-1 untuk mengawal frekuensi jam RSLOS-2, supaya RSLOS-2 menukar keadaannya pada masa tertentu hanya jika output RSLOS- 1 pada masa adalah sama dengan unit. Skim ini tidak menentang autopsi korelasi.

Untuk meningkatkan kekuatan kriptografi, ia telah dicadangkan penjana berhenti-dan-pergi berselang-seli... Ia menggunakan tiga daftar anjakan dengan panjang yang berbeza. Di sini RSLOS-1 mengawal kekerapan jam daftar ke-2 dan ke-3, iaitu, RSLOS-2 mengubah keadaannya apabila keluaran RSLOS-1 bersamaan dengan satu, dan RSLOS-3 - apabila keluaran RSLOS-1 adalah sifar. Output penjana ialah operasi tambahan modulo dua keluaran RSLOS-2 dan RSLOS-3. Penjana ini mempunyai tempoh yang panjang dan kerumitan linear yang besar. Terdapat cara serangan korelasi RSLOS-1, tetapi ini tidak banyak melemahkan sifat kriptografi penjana.

Skim masa yang rumit digunakan dalam penjana dua hala "stop-and-go", yang menggunakan 2 daftar anjakan dengan panjang yang sama. Jika output RSLOS-1 pada satu ketika t i - 1 (\ gaya paparan t_ (i-1))- satu, maka RSLOS-2 tidak jam pada masa itu t i (\ gaya paparan t_ (i))... Jika output RSLOS-2 pada masa itu t i - 1 (\ gaya paparan t_ (i-1)) adalah sama dengan sifar, dan pada saat masa t i - 2 (\ gaya paparan t_ (i-2))- satu, dan jika daftar ini dicatatkan pada masa itu t i (\ gaya paparan t_ (i)), maka pada masa yang sama RSLOS-1 tidak mencatat masa. Kerumitan linear litar ini adalah lebih kurang sama dengan tempoh urutan yang dijana.

Penjana jet sendiri

Penjana berbilang kelajuan dengan produk dalaman

Penjana ini menggunakan dua daftar syif RSLOS-1 dan RSLOS-2. Kekerapan jam RSLOS-2 in d (\ gaya paparan d) kali lebih banyak daripada RSLOS-1. Bit tertentu daftar ini didarab antara satu sama lain menggunakan operasi DAN. Keputusan pendaraban di XOR bersama untuk menghasilkan urutan keluaran. Penjana ini mempunyai kerumitan linear yang tinggi dan sifat statistik yang baik. Walau bagaimanapun, keadaannya boleh ditentukan dari urutan keluaran panjang L 1 + L 2 + log 2 ⁡ d (\ gaya paparan L_ (1) + L_ (2) + \ log _ (2) (d)), di mana L 1 (\ gaya paparan L_ (1)) dan L 2 (\ gaya paparan L_ (2))- panjang RSLOS-1 dan RSLOS-2, masing-masing, dan d (\ gaya paparan d)- nisbah frekuensi jam mereka.

Lata Gollmann

Gambar rajah ini ialah versi penjana berhenti-dan-pergi yang dipertingkatkan. Ia terdiri daripada urutan RSLOS, masa setiap satunya dikawal oleh RSLOS sebelumnya. Jika keluaran RSLOS-1 pada masa itu t i (\ gaya paparan t_ (i)) ialah 1, maka RSLOS-2 adalah jam. Jika output RSLOS-2 pada masa itu t i (\ gaya paparan t_ (i)) ialah 1, kemudian RSLOS-3 dikira jam, dan seterusnya. Keluaran RSLOS terakhir ialah keluaran penjana. Jika panjang semua RSLOS adalah sama dan sama L (\ gaya paparan L), kemudian tempoh sistem daripada M (\ gaya paparan M) RSLO adalah sama dengan (2 L - 1) M (\ gaya paparan (2 ^ (L) -1) ^ (M)) dan kerumitan linear ialah L (S) = L (2 L - 1) M - 1 (\ gaya paparan L (S) = L (2 ^ (L) -1) ^ (M-1)) .

Idea ini mudah dan boleh digunakan untuk menjana jujukan dengan tempoh yang besar, kerumitan linear yang besar dan sifat statistik yang baik. Tetapi malangnya mereka sensitif dengan bedah siasat yang dipanggil mengunci(Bahasa Inggeris lock-in) apabila

- "Tenis Tetromino"). Dia mencipta dan menyelesaikan teka-teki dan permainan matematik yang tidak terkira banyaknya. Kira-kira 20 tahun yang lalu, saya mendapati bahawa dia sangat hampir menemui peraturan kegemaran saya 30 untuk automata selular pada tahun 1959, ketika saya baru dilahirkan.

Bagaimana saya bertemu dengan Saul Golomb

Hampir semua saintis dan ahli matematik yang saya kenali saya kenali melalui hubungan profesional saya. Tetapi bukan Sol Golomba. Ia adalah tahun 1981, dan saya, seorang ahli fizik berusia 21 tahun (yang menjadi terkenal sedikit di media kerana saya penerima Hadiah MacArthur termuda pada majlis anugerah pertama), sedang membuat penyelidikan di. Pintu pejabat saya diketuk, dan tidak lama kemudian seorang wanita muda melangkah masuk. Ini sudah menjadi luar biasa, kerana pada masa itu terdapat sedikit wanita di mana mereka terlibat dalam fizik tenaga tinggi teori. Walaupun saya tinggal di California selama beberapa tahun, saya tetap tidak meninggalkan universiti, dan oleh itu tidak bersedia untuk lonjakan tenaga California Selatan yang menceroboh masuk ke pejabat saya. Wanita itu memperkenalkan dirinya kepada Astrid dan berkata bahawa dia pernah belajar di Oxford dan mengenali seseorang yang saya bersama di tadika. Dia menjelaskan bahawa dia ditugaskan untuk mengumpul maklumat tentang orang yang menarik di kawasan Pasadena. Saya fikir dia menganggap saya kes yang sukar, tetapi tetap berkeras untuk bercakap. Dan suatu hari, ketika saya cuba memberitahu sesuatu tentang apa yang saya lakukan, dia berkata: " Awak mesti jumpa ayah saya. Dia sudah tua, tetapi fikirannya masih tajam. "Dan kebetulan Astrid Golomb, anak perempuan sulung Saul Golomb, memperkenalkan saya kepadanya.

Keluarga Golomb tinggal di sebuah rumah yang terletak di pergunungan berhampiran Pasadena. Mereka mempunyai dua anak perempuan: Astrid - lebih tua sedikit daripada saya, seorang gadis Hollywood yang bercita-cita tinggi, dan Beatrice - kira-kira sebaya dan minda saintifik saya. Adik-beradik Golomb sering menganjurkan parti, biasanya di rumah mereka. Temanya berbeza: ia adalah pesta taman dan kroket dengan flamingo dan landak (" pemenang akan menjadi orang yang pakaiannya paling hampir padan dengan tema yang dinyatakan"), atau pesta gaya Stonehenge dengan arahan yang ditulis dalam rune. Di pesta-pesta ini, orang muda dan tidak begitu ramai menyeberang, termasuk pelbagai tokoh tempatan. Dan pada mereka, di tepi sedikit, sentiasa ada seorang lelaki kecil dengan janggut yang besar, sedikit seperti pada bunian dan sentiasa memakai kot gelap - Solomon Golomb sendiri.

Secara beransur-ansur, saya belajar sedikit tentang dia. Apa yang dia terlibat dalam " teori maklumat"Bahawa dia bekerja di Universiti California Selatan. Bahawa dia mempunyai pelbagai hubungan kerajaan yang samar-samar tetapi nampaknya peringkat tinggi. Saya pernah mendengar tentang daftar syif tetapi hampir tidak tahu apa-apa tentang mereka."

Inilah yang berlaku selepas beberapa ketika:

Seperti yang anda lihat, daftar anjakan sentiasa mengalihkan bit ke kiri, dan bit lain ditambah ke kanan, mengikut peraturan mudah. Urutan bit nampaknya rawak, walaupun, seperti yang ditunjukkan dalam rajah, ia akhirnya berulang. Sol Golomb menemui cara matematik yang elegan untuk menganalisis urutan sedemikian dan cara ia berulang.

Jika daftar anjakan bersaiz n, maka dia ada 2 n keadaan yang mungkin (sepadan dengan semua kemungkinan urutan 0 dan 1 untuk panjang n). Memandangkan peraturan untuk daftar anjakan adalah deterministik, mana-mana kedudukan tertentu mesti sentiasa tiba di kedudukan lain yang sama. Ini bermakna bilangan maksimum kemungkinan langkah yang boleh dilalui oleh daftar anjakan sebelum langkah itu mula berulang ialah 2 n(sebenarnya 2 n- 1, kerana kedudukan dengan semua 0 tidak boleh berubah menjadi apa-apa lagi).

Dalam contoh di atas, daftar anjakan ialah 7 dan akan berulang tepat dalam 2 7 - 1 = 127 langkah. Tetapi daftar anjakan yang mana - dengan lokasi cawangan yang mana - akan menghasilkan urutan panjang maksimum? Solomon Golomb mula menyiasat soalan ini pada musim panas 1954. Dan jawapannya ringkas dan elegan.

Daftar anjakan di atas mempunyai cawangan pada kedudukan 7, 6, dan 1. Saul membentangkan ini secara algebra menggunakan polinomial NS 7 + NS 6 + 1. Dia kemudian menunjukkan bahawa jujukan yang dihasilkan akan menjadi panjang maksimum jika polinomial ini " modulo tidak boleh dikurangkan 2"; oleh itu, ia tidak boleh difaktorkan, yang menjadikannya analog dengan nombor perdana antara polinomial; dan kehadiran beberapa sifat lain menjadikannya" polinomial primitif. "Hari ini, ini mudah disahkan menggunakan Mathematica dan Bahasa Wolfram:

Kemudian, pada tahun 1954, Saul terpaksa melakukan semuanya dengan tangan; dia menyusun jadual polinomial primitif yang agak panjang sepadan dengan daftar anjakan, yang menghasilkan urutan panjang maksimum:

Sejarah daftar syif

Idea untuk mengekalkan RAM melalui " talian kelewatan"yang menghantar denyutan digital bermula sejak zaman awal komputer. Menjelang akhir 1940-an, talian kelewatan tersebut telah digunakan secara digital menggunakan satu siri tiub vakum dan dipanggil" daftar shift"Tidak jelas bila daftar anjakan gelung tertutup pertama dicipta. Ia mungkin pada akhir 1940-an. Bagaimanapun, peristiwa ini masih diselubungi misteri, kerana ia pertama kali digunakan dalam kriptografi tentera.

Idea asas kriptografi adalah untuk menukar mesej yang bermakna supaya mereka tidak dapat dikenali; namun, jika anda mengetahui kuncinya, anda boleh mencipta semula mesej yang disulitkan. Sifir strim yang dipanggil bekerja berdasarkan prinsip mencipta jujukan panjang unsur-unsur yang kelihatan rawak, dan dinyahkod menggunakan penerima yang secara bebas menjana jujukan unsur yang sama.

Daftar anjakan maklum balas linear dihargai dalam kriptografi kerana tempoh percubaan semula yang panjang. Walau bagaimanapun, analisis matematik yang Saul gunakan untuk mencari tempoh ini menjelaskan bahawa daftar anjakan sedemikian tidak sesuai untuk kriptografi selamat. Walau bagaimanapun, pada mulanya ia kelihatan baik (terutamanya jika dibandingkan dengan kedudukan rotor berturut-turut dalam Enigma); terdapat khabar angin berterusan bahawa sistem kriptografi tentera Soviet dibina atas dasar ini.

Pada tahun 2001 ketika saya sedang mengerjakan nota sejarah untuk buku saya Satu jenis sains baru Saul dan saya berbual panjang melalui telefon tentang pertukaran daftar. Saul memberitahu saya bahawa apabila dia bermula, dia tidak tahu apa-apa tentang kerja kriptografi pada daftar syif. Dia berkata bahawa Bell Labs, Lincoln Labs dan JPL mula bekerja pada daftar syif pada masa yang sama dia lakukan; namun, dia berjaya melangkah lebih jauh, yang dia nyatakan dalam laporannya pada tahun 1955.

Sepanjang tahun-tahun berikutnya, Saul secara beransur-ansur belajar tentang pelbagai pendahulu karyanya daripada kesusasteraan matematik tulen. Sudah pada tahun 1202, Fibonacci bercakap tentang apa yang kini dipanggil nombor Fibonacci dan yang dijana oleh hubungan berulang (yang boleh dilihat sebagai analog daftar anjakan maklum balas linear yang berfungsi dengan integer arbitrari, bukan sifar dan satu). Terdapat juga karya kecil pada awal 1900-an pada kitaran 0 dan 1, tetapi kajian berskala besar yang pertama ialah karya Oysten Ore dari Universiti Oslo. Ore mempunyai seorang pelajar bernama Marshall Hall yang menasihati pendahulu Agensi Keselamatan Negara pada akhir 1940-an. - mungkin mengenai topik daftar syif. Walau bagaimanapun, semua yang dia lakukan adalah diklasifikasikan, jadi dia mengatur dengan Saul untuk menerbitkan sejarah daftar anjakan maklum balas linear; Saul mendedikasikan bukunya kepada Marshall Hall.

Untuk apakah jujukan yang dijana oleh daftar anjakan?

Saya telah melihat banyak kali bahawa sistem yang dikawal oleh peraturan mudah berakhir dengan banyak variasi aplikasi; daftar shift juga mengikut corak ini. Kedua-dua perkakasan dan perisian moden dipenuhi dengan daftar anjakan: dalam telefon mudah alih biasa, mungkin terdapat sedozen atau dua daripadanya, dilaksanakan, sebagai peraturan, di peringkat perkakasan, dan kadang-kadang dalam perisian (apabila saya menulis "daftar anjakan" di sini, saya maksudkan daftar anjakan maklum balas linear - LFSR).

Dalam kebanyakan kes, daftar anjakan digunakan yang memberikan urutan panjang maksimum (atau dikenali sebagai " M-jujukan Sebab ia digunakan secara amnya disebabkan oleh beberapa sifatnya yang Sol temui. Ia sentiasa mengandungi nombor 0 dan 1 yang sama (walaupun pada hakikatnya sentiasa ada tepat satu tambahan 1). bilangan jujukan yang sama 00, 01, 10 dan 11 juga ciri - dan untuk blok besar juga. Harta ini " seimbang"ini sendiri sudah sangat berguna - contohnya, jika anda menguji semua kemungkinan kombinasi bit sebagai input.

Walau bagaimanapun, Sol menemui harta lain yang lebih penting. Gantikan setiap 0 dalam jujukan dengan 1, kemudian darabkan setiap elemen dalam versi anjakan jujukan dengan elemen yang sepadan dalam asal. Saul menunjukkan bahawa apabila ditambah, unsur-unsur ini akan sentiasa sifar (melainkan tiada anjakan sama sekali). Iaitu, urutan itu tidak mempunyai korelasi dengan versi yang dialihkan itu sendiri.

Sifat ini adalah benar untuk sebarang jujukan rawak yang cukup panjang iaitu 0 dan 1. Yang menghairankan, sifat ini sentiasa benar untuk jujukan panjang maksimum. Urutan mempunyai beberapa ciri huru-hara, tetapi ia tidak benar-benar huru-hara sama sekali: mereka mempunyai struktur yang jelas dan teratur.

Struktur semula jadi daftar anjakan maklum balas linear inilah yang menjadikannya tidak sesuai untuk kriptografi yang serius. Tetapi ia bagus untuk "atur atur unsur" asas dan kriptografi murah dan digunakan secara meluas untuk tujuan ini. Selalunya tugasnya hanyalah untuk "memutihkan" isyarat (seperti dalam "bunyi putih"). Kadang-kadang perlu untuk menghantar data dengan urutan panjang 0. Tetapi elektronik dalam kes ini boleh menjadi keliru jika "senyap" terlalu lama. Anda boleh mengelakkan masalah ini dengan merangkak data asal dengan menggabungkannya dengan urutan yang dijana oleh daftar anjakan. Inilah yang telah dilakukan dengan Wi-Fi, Bluetooth, USB, TV digital, internet, dll.

Kesan sampingan perebutan daftar anjakan ialah penyahkodan yang lebih kompleks, yang kadangkala digunakan untuk meningkatkan keselamatan (teknologi DVD menggunakan gabungan daftar anjakan 16 dan 24 bit untuk mengekod data; banyak telefon GSM menggunakan gabungan tiga daftar anjakan untuk mengekod semua isyarat ).

Saul mencipta asas matematik untuk semua ini, dan juga memperkenalkan beberapa tokoh penting kepada satu sama lain. Kembali pada tahun 1959, beliau bertemu dengan Irwin Jacobs, yang baru sahaja menerima Ph.D. daripada Institut Teknologi Massachusetts. Dia juga mengenali Andy Viterbi, yang bekerja di Makmal Propulsion Jet. Saul memperkenalkan mereka, dan pada tahun 1968 mereka mengasaskan sebuah syarikat bernama Linkabit untuk mengusahakan sistem pengekodan (kebanyakannya untuk tujuan ketenteraan).

Pada tahun 1985 Jacobs dan Viterbi mengasaskan syarikat lain bernama Qualcomm. Mereka tidak begitu baik pada mulanya, tetapi pada awal 1990-an, apabila mereka mula membuat komponen untuk menggunakan CDMA pada telefon bimbit, syarikat itu berkembang pesat.

Nah, di manakah daftar ini?

Adalah menghairankan bahawa kebanyakan orang tidak pernah mendengar tentang daftar anjakan dan pada masa yang sama berinteraksi dengan mereka setiap kali mereka menggunakan sistem komunikasi moden, komputer, dll. Sangat mudah untuk dikelirukan di sini, memandangkan urutan daftar yang sama muncul di belakang nama yang berbeza dan singkatan anjakan maklum balas linear (PN, pseudo hingar, M-, FSR, jujukan LFSR, MLS, SRS, PRBS, dll.).

Dalam telefon mudah alih, penggunaan urutan daftar anjakan telah berubah selama bertahun-tahun, kadang-kadang meningkat dan kadang-kadang berkurangan. rangkaian adalah berdasarkan TDMA, jadi mereka tidak menggunakan urutan daftar anjakan untuk mengekod data mereka, namun, CRC (Cyclic Redundancy Check) masih sering digunakan untuk menyemak blok data. rangkaian adalah pengguna terbesar CDMA, jadi urutan yang dihasilkan oleh daftar anjakan terlibat dalam penghantaran setiap bit. rangkaian biasanya menggunakan gabungan slot masa dan kekerapan yang tidak termasuk urutan daftar anjakan, walaupun CRC masih digunakan: contohnya, untuk berinteraksi dengan data integral apabila tetingkap frekuensi bertindih. mempunyai struktur yang lebih kompleks - dengan banyak antena menyesuaikan diri secara dinamik untuk menggunakan masa dan kekerapan slot yang optimum. Walau bagaimanapun, separuh daripada saluran mereka biasanya didedikasikan untuk isyarat "juruterbang" yang digunakan untuk memperoleh persekitaran radio tempatan; ia juga berdasarkan jujukan yang dihasilkan oleh daftar anjakan.

Pembuatan elektronik biasanya berusaha untuk mencapai kadar pemindahan data setinggi mungkin dengan penggunaan kuasa terendah, membolehkan bit mengatasi lantai hingar. Dan, sebagai peraturan, laluan ini membawa kepada automasi pengesanan ralat - dan oleh itu kepada penggunaan CRC (Cyclic Redundancy Check) dan, oleh itu, jujukan yang dijana oleh daftar anjakan. Ini terpakai kepada hampir semua jenis bas di dalam komputer (PCIe, SATA, dll.): menyediakan interaksi antara bahagian pemproses pusat, atau menerima data daripada peranti, atau menyambung ke paparan dengan HDMI. Dalam kes cakera atau memori, CRC dan kod lain berdasarkan jujukan yang dihasilkan oleh daftar anjakan juga hampir digunakan secara universal untuk beroperasi pada kelajuan maksimum.

Daftar Shift ada di mana-mana sehingga hampir mustahil untuk menganggarkan bilangan bit yang dihasilkannya. Terdapat kira-kira 10 bilion komputer, telefon kurang sedikit dan sejumlah besar peranti dalam IoT (Internet of Things) terbenam. Hampir setiap kereta di dunia (dan terdapat lebih satu bilion!) Mempunyai kira-kira 10 mikropemproses terbina dalam.

Pada kekerapan yang manakah daftar anjakan berfungsi? Dalam sistem komunikasi, terdapat frekuensi pembawa asas dalam jalur Hertz, serta "kadar cip" yang memberitahu seberapa pantas akses berbilang (kita bercakap tentang CDMA) dijalankan dalam jalur MHz. Sebaliknya, dalam bas di dalam komputer, semua data dipindahkan menggunakan daftar syif - dengan kadar pemindahan terbaik dalam julat hertz.

Terdapat sekurang-kurangnya 10 bilion talian komunikasi berjalan sekurang-kurangnya 1/10 bilion saat (kira-kira 3 tahun) yang menggunakan sekurang-kurangnya 1 bilion bit daripada daftar anjakan setiap saat, yang bermaksud bahawa pada hari ini, algoritma Sol telah digunakan sekurang-kurangnya octillion kali.

Adakah ini algoritma yang paling biasa digunakan? Saya rasa betul. Saya mengesyaki bahawa hanya operasi aritmetik boleh bersaing. Pemproses pada hari ini mampu melakukan trilion operasi aritmetik sesaat, dan operasi sedemikian diperlukan untuk hampir setiap bit yang dijana oleh komputer. Tetapi bagaimanakah aritmetik dilakukan? Pada tahap tertentu, ini hanyalah pelaksanaan elektronik digital.

Walau bagaimanapun, terdapat "idea algoritma" yang masih tidak dapat difahami oleh semua orang kecuali pereka mikropemproses. Apabila Babbage membuat enjin perbezaannya (lihat artikel tentang Habré "Merungkai kisah Ada Lovelace (pengaturcara pertama dalam sejarah)"), tanda sempang menjadi penghalang besar dalam melaksanakan operasi aritmetik (malah, daftar anjakan dengan maklum balas linear boleh dianggap sebagai sistem yang melakukan sesuatu seperti aritmetik tetapi tidak terbawa-bawa). Terdapat pokok pembiakan pembawa yang mengoptimumkan pembawa. Terdapat juga sedikit tweak (seperti algoritma Booth, pokok Wallace, dll.) yang mengurangkan bilangan operasi bit yang diperlukan untuk mencipta dalaman aritmetik. Tetapi, tidak seperti daftar anjakan maklum balas linear, tiada idea algoritma tunggal yang boleh digunakan hampir di mana-mana sahaja; oleh itu, saya berpendapat bahawa jujukan terpanjang yang mungkin dijana oleh daftar anjakan maklum balas linear menang di antara jujukan yang paling banyak digunakan.

Automata selular dan daftar anjakan dengan maklum balas tak linear

Walaupun ini mungkin tidak kelihatan jelas pada pandangan pertama, ternyata terdapat hubungan rapat antara daftar anjakan gelung tertutup dan automata selular, yang telah saya pelajari selama bertahun-tahun. Organisasi asas untuk daftar anjakan maklum balas adalah untuk mengira satu bit pada satu masa. Dalam automaton selular, terdapat satu baris sel, dan pada setiap langkah, semua sel dikemas kini secara selari, berdasarkan peraturan yang bergantung, contohnya, pada nilai jiran terdekat mereka.

Untuk melihat bagaimana ia berkaitan, kita perlu menjalankan daftar anjakan maklum balas saiz n, dan pada masa yang sama memaparkan keadaannya sahaja setiap n langkah-langkah; dengan kata lain, biarkan semua bit ditimpa sebelum muncul semula. Jika setiap langkah daftar anjakan maklum balas linear (di sini - dengan dua paip) dipaparkan, maka pada setiap langkah semuanya akan beralih ke kiri - dan itu sahaja. Tetapi jika anda membuat gambar dimampatkan, hanya menunjukkan setiap n langkah, corak akan kelihatan.

Ini adalah corak bersarang; dan gambar ini sangat serupa dengan yang boleh diperolehi jika automaton selular mengambil sel dan satu jirannya dan menambahkannya modulo 2 (XOR). Inilah yang berlaku kepada automaton selular jika ia menyusun selnya supaya berada dalam bulatan yang sama saiz dengan daftar anjakan di atas:

Pada mulanya, automata selular dan corak daftar anjakan ternyata sama. Apabila anda melihat gambar-gambar ini, ia menjadi kurang mengejutkan bahawa matematik daftar anjakan mempunyai kaitan dengan automata selular. Dan memandangkan pengulangan corak bersarang, menjadi jelas mengapa perlu ada teori matematik yang elegan bagi daftar anjakan.

Daftar anjakan biasa yang digunakan dalam amalan tidak mempamerkan corak yang berulang-ulang secara terang-terangan. Berikut ialah beberapa contoh daftar anjakan yang menjana urutan panjang maksimum. Hakikatnya ialah dahan-dahannya berjauhan, yang menjadikannya sukar untuk mencari kesan visual bersarang.

Sejauh manakah korespondensi antara daftar anjakan dan automata selular? Untuk automata selular, peraturan untuk menjana nilai sel baharu boleh menjadi apa sahaja yang anda suka. Dalam daftar anjakan maklum balas linear, mereka hendaklah sentiasa berdasarkan penambahan modulo 2 (atau XOR). Inilah yang dimaksudkan dengan bahagian "linear" dari "daftar anjakan maklum balas linear". Anda juga boleh menggunakan sebarang peraturan untuk menggabungkan nilai untuk daftar anjakan maklum balas bukan linear (NFSR).

Sesungguhnya, apabila Saul mengembangkan teorinya untuk daftar anjakan maklum balas linear, dia bermula dengan kes bukan linear. Apabila dia tiba di JPL pada tahun 1956, dia menerima makmal lengkap dengan rak untuk modul elektronik kecil. Saul berkata bahawa modul (setiap satu kira-kira saiz pek rokok) telah dibina untuk projek Bell Labs untuk melaksanakan operasi logik tertentu (DAN, ATAU, BUKAN, ...). Modul boleh digunakan bersama untuk melaksanakan mana-mana daftar anjakan maklum balas bukan linear yang diingini, menyampaikan kira-kira sejuta bit sesaat (Sol memberitahu saya bahawa seseorang cuba melakukan perkara yang sama dengan komputer tujuan umum, dan apa yang mengambil masa 1 saat apabila menggunakan modul perkakasan, memerlukan 6 minggu bekerja pada komputer tujuan umum).

Apabila Saul mula mengkaji daftar anjakan maklum balas linear, penemuan utama pertamanya ialah tempoh pengulangan. Dan dalam kes yang tidak linear, dia menumpukan sebahagian besar usahanya untuk cuba memahami perkara yang sama. Dia mengumpul semua jenis data eksperimen. Dia memberitahu saya bahawa dia juga menguji urutan panjang 245, yang mengambil masa setahun. Dia membuat ringkasan seperti gambar di bawah (perhatikan visualisasi jujukan yang ditunjukkan pada garis bentuk gelombang). Tetapi dia tidak pernah mengemukakan teori umum yang dia ada untuk daftar anjakan maklum balas linear.

Tidak mengejutkan, dia tidak dapat melakukannya. Sudah pada tahun 1950-an, hasil teori muncul (dalam kebanyakan kes berdasarkan idea pengiraan universal Turing) yang mana program, pada dasarnya, boleh melakukan ini. Saya tidak fikir Sol atau orang lain pernah menyangka bahawa fungsi yang sangat mudah (bukan linear) akan digunakan dalam daftar anjakan maklum balas bukan linear.

Hanya kemudiannya ia menjadi jelas betapa kompleksnya tingkah laku program yang sangat mudah sekalipun. Contoh kegemaran saya ialah peraturan 30 untuk automata selular, di mana nilai sel jiran digabungkan menggunakan fungsi yang boleh diwakili sebagai R + q + r + q * r mod 2(atau R XOR ( q ATAU r)). Hebatnya, Saul menganggap daftar anjakan maklum balas bukan linear berdasarkan fungsi yang serupa: R + G + s + q * r + q * s + r * s mod 2... Di sini, di bawah, adalah ilustrasi bagaimana fungsi Sol (yang boleh dianggap sebagai "peraturan 29070"), peraturan 30, dan beberapa peraturan lain yang serupa kelihatan dalam daftar anjakan:

Dan di sini mereka, tidak terhad kepada daftar saiz tetap, adalah seperti automata selular:

Sudah tentu, Saul tidak pernah mengambil gambar seperti ini (dan itu hampir mustahil untuk dilakukan pada tahun 1950-an). Sebaliknya, dia memberi tumpuan kepada tempoh pengulangan sebagai sejenis ciri kumulatif.

Saul tertanya-tanya sama ada daftar anjakan maklum balas tak linear boleh menjadi punca huru-hara. Daripada apa yang diketahui hari ini mengenai automata selular, jelas bahawa mereka boleh. Sebagai contoh, untuk mencipta rawak untuk Mathematica, kami telah menggunakan 30 peraturan automata selular selama 25 tahun (walaupun kami baru-baru ini meninggalkannya demi peraturan yang lebih cekap yang kami temui selepas mengkaji trilion kemungkinan).

Sol bercakap sedikit tentang penyulitan; walaupun saya rasa dia tidak bekerja untuk kerajaan lama. Dia memberitahu saya bahawa walaupun pada tahun 1959 dia menemui " serangan korelasi multidimensi pada jujukan tak linear"sementara dia" berhati-hati mengelak dakwaan bahawa program itu adalah untuk analisis kriptografi Intinya ialah peraturan 30 untuk automata selular (dan mungkin juga daftar anjakan maklum balas tak linear) boleh menjadi sistem kriptografi yang baik - walaupun kerana ia kelihatan setara dengan daftar anjakan maklum balas linear (yang tidak demikian), ia tidak pernah digunakan sebaik mungkin. .

Sebagai peminat, sejak beberapa dekad yang lalu saya telah cuba mengkaji semua pendahulu kerja saya mengenai automata selular satu dimensi. Automata selular dua dimensi tidak banyak dikaji, tetapi dalam kes automata satu dimensi, hanya satu kerja teori semata-mata ditemui. Saya rasa daftar anjakan maklum balas tak linear Solomon Golomb adalah paling hampir dengan apa yang saya akhirnya lakukan seperempat abad kemudian daripada apa-apa yang saya lihat.

Poliomino

Mendengar nama keluarga " Golomb ", ramai akan ingat tentang daftar syif. Namun, kebanyakan akan ingat tentang poliomio... Sol tidak mencipta poliomio, walaupun dia telah mencipta nama itu. Dia membuat sistematik apa yang sebelum ini hanya muncul dalam teka-teki yang berasingan.

Soalan utama yang Sol berminat untuk menjawab ialah bagaimana set poliomio boleh dianjurkan untuk meliputi kawasan tertentu. Kadang-kadang ia agak jelas, dan kadang-kadang agak sukar. Sol menerbitkan artikel pertamanya mengenai polyomino pada tahun 1954, tetapi Martin Gardner menjadikannya sangat popular pada tahun 1957 (dia menulis lajur mengenai permainan matematik dalam jurnal Amerika saintifik). Seperti yang dijelaskan Saul dalam pengenalan kepada bukunya pada tahun 1964, hasilnya adalah " aliran berterusan wartawan dari seluruh dunia dan dari semua lapisan masyarakat: pengerusi lembaga pengarah universiti terkemuka, penduduk biara yang tidak diketahui, banduan dari penjara terkenal ...".

Syarikat permainan juga mengambil perhatian tentang teka-teki baharu, dan dalam beberapa bulan tajuk utama seperti " teka-teki sensasi baru"diikuti dengan beberapa dekad teka-teki dan permainan berasaskan poliomino lain (tidak, lelaki botak jahat itu tidak kelihatan seperti Saul):

Saul menerbitkan artikel mengenai poliomio selama 50 tahun lagi selepas penerbitan pertama. Pada tahun 1961 beliau memperkenalkan "rep-tiles", yang boleh digunakan untuk mencipta corak fraktal ("Infin-tiles"). Tetapi hampir semua yang Sol lakukan dengan poliomio melibatkan penyelesaian masalah tertentu.

Saya tidak begitu berminat dengan spesifik polyomino; Saya berminat dengan fenomena yang lebih umum yang berkaitan dengannya. Nampaknya mudah untuk memutuskan sama ada anda boleh "membuka" keseluruhan satah dengan beberapa bentuk mudah. Tetapi dalam kes poliomio (serta semua permainan dan teka-teki berdasarkannya), menjadi jelas bahawa perkara-perkara tidak begitu mudah. Malah, pada tahun 1960-an telah terbukti bahawa masalah ini secara teorinya tidak dapat diselesaikan.

Sekiranya kita hanya berminat dalam kawasan yang terhad, maka, pada dasarnya, kita hanya boleh menyenaraikan semua kedudukan angka yang boleh difikirkan, dan kemudian melihat jika ia terletak sebagaimana mestinya. Walau bagaimanapun, jika kita berminat dengan infiniti, maka ini tidak boleh dilakukan. Mungkin seseorang akan mencari jalan untuk berjaya meletakkan sejuta keping, tetapi tidak ada jaminan bahawa keputusan ini boleh dilanjutkan lagi.

Ternyata ia mungkin kelihatan seperti mesin Turing yang berfungsi - atau automata selular. Anda bermula dengan barisan jubin. Kemudian persoalan sama ada jubin tak terhingga boleh dilakukan adalah bersamaan dengan persoalan sama ada tetapan boleh dilakukan untuk mesin Turing yang akan membolehkannya meneruskan dan meneruskan. Intinya ialah jika mesin Turing adalah universal (iaitu, ia boleh diprogramkan untuk melakukan apa-apa pengiraan yang mungkin), maka masalah terhenti untuknya mungkin tidak dapat diselesaikan, yang bermaksud bahawa masalah jubin juga tidak dapat diselesaikan.

Sudah tentu ini bergantung pada set bentuk asal. Persoalannya ialah betapa kompleksnya borang untuk mengekod pengiraan tujuan am dan membawa kepada masalah jubin yang tidak dapat diselesaikan. Solomon Golomb tahu tentang kesusasteraan mengenai topik ini, tetapi tidak begitu berminat dengannya.

Set poliomin yang kompleks dan rumit diketahui sebenarnya menyokong pengiraan tujuan umum. Tetapi bagaimana dengan set mudah? Adakah cukup mudah untuk terjumpanya secara tidak sengaja? Jika anda melihat semua sistem yang saya pelajari, maka set paling mudah ternyata mudah. Namun, sukar untuk mencarinya.

Tugas yang lebih mudah ialah mencari poliomio yang berjaya mengisi pesawat, walaupun hanya secara tidak berkala. Roger Penrose menemui contoh yang sesuai pada tahun 1994. Dalam buku saya Satu jenis sains baru Saya memberikan contoh yang lebih mudah dengan 3 poliomio:

Selebihnya cerita

Saul berusia awal tiga puluhan apabila dia mencapai kejayaan yang ketara dalam bidang daftar syif dan poliomio ... Dia seorang yang sangat aktif. Dia menulis beberapa ratus artikel, beberapa di antaranya berkembang pada kerja awalnya, ada yang menjawab soalan yang diajukan kepadanya, dan ada yang ditulis, nampaknya, hanya untuk keseronokan - untuk mengetahui perkara menarik tentang nombor, urutan, sistem kripto, dan lain-lain.

Daftar Shift dan poliomino adalah topik yang banyak (malah ia dibawa ke dalam kategori berasingan dalam klasifikasi AMS). Dalam dekad kebelakangan ini, mereka berdua menerima pusingan pembangunan baharu, apabila mereka mula menjalankan eksperimen komputer atas dasar mereka; Sol juga mengambil bahagian aktif dalam mereka. Namun, banyak persoalan masih belum terjawab. Dan jika matriks Hadamard yang besar boleh didapati untuk daftar anjakan dengan maklum balas linear, maka walaupun sekarang sedikit yang diketahui tentang daftar anjakan dengan maklum balas tak linear, apatah lagi semua poliomio tidak berkala dan eksotik lain.

Sol sentiasa berminat dengan teka-teki, baik teka-teki matematik dan perkataan. Untuk seketika, dia menjalankan lajur teka-teki untuk Los Angeles Times, dan selama 32 tahun menulis " Golomb berjudi kepada Majalah Alumni Johns Hopkins. Dia mengambil bahagian dalam ujian MegaIQ dan memenangi lawatan ke Rumah Putih apabila dia dan bosnya berada di kedudukan lima teratas di negara ini.

Dia melaburkan usaha yang besar dalam kerjanya di universiti: bukan sahaja mengajar pelajar dan menyelia pelajar siswazah dan memanjat tangga pentadbiran (presiden majlis universiti, naib naib rektor untuk penyelidikan, dll.), tetapi juga menyatakan pendapatnya mengenai pengurusan universiti secara keseluruhan (contohnya, menulis artikel bertajuk “Perundingan Fakulti: Ambil Keluar atau Tinggalkan?” Jawapan: Tidak, ia bagus untuk universiti!). Dia bekerja sebagai pemburu kepala di University of Southern California, dan sepanjang tempoh perkhidmatannya di sana, dia membantu universiti itu meningkat daripada ketidakjelasan ke kedudukan teratas program pendidikan.

Dan kemudian ada perundingan. Saul sangat teliti dan tidak mendedahkan apa yang dia lakukan untuk agensi kerajaan. Pada penghujung 1960-an, kecewa kerana semua orang kecuali dia menjual permainan poliomino, Saul mengasaskan syarikat yang dipanggil Recreational Technology, Inc. Keadaan tidak berjalan lancar, tetapi Saul bertemu dengan Alvin Berlekamp, ​​seorang profesor Berkeley dengan minat untuk teori pengekodan dan teka-teki. Selepas itu, mereka mengasaskan Cyclotomics (sebagai penghormatan kepada polinomial cyclotomic dalam bentuk x n- 1), yang akhirnya dijual kepada Kodak secara sekaligus (Berlekamp juga mencipta sistem perdagangan algoritma, yang kemudiannya dijual kepada Jim Simons dan yang menjadi titik permulaan untuk Renaissance Technologies - salah satu dana lindung nilai terbesar hari ini).

Lebih daripada 10,000 paten dalam satu cara atau yang lain berkaitan dengan kerja Sol, tetapi Sol sendiri hanya menerima satu paten kepada sistem kripto berdasarkan quasigroups - dan saya rasa dia tidak melakukan sedikit pun untuk mengkomersialkan kerjanya.

Sol bekerja selama bertahun-tahun dengan Technion, Institut Teknologi Israel. Dia bercakap tentang dirinya sebagai " Yahudi Ortodoks yang tidak beragama", tetapi pada masa yang sama kadang-kadang mengetuai seminar untuk pemula tentang Kitab Kejadian, dan juga bekerja pada menguraikan bahagian-bahagian Skrol Laut Mati (manuskrip Qumran).

Saul dan isterinya mengembara secara meluas, tetapi "pusat dunia" bagi Saul pastinya adalah pejabatnya di Los Angeles di University of Southern California, dan rumah yang dia dan isterinya tinggal selama hampir 60 tahun. Dia sentiasa dikelilingi oleh rakan-rakan dan pelajar. Dan dia mempunyai keluarga. Anak perempuannya Astrid memainkan peranan seorang pelajar dalam drama tentang Richard Feynman (dia berpose untuknya), dan dalam novel kawan saya sebagai salah satu watak. Beatrice telah menumpukan kerjayanya untuk menggunakan tahap ketepatan matematik kepada pelbagai jenis petunjuk perubatan dan diagnostik (penyakit berkaitan Perang Teluk, kesan statin, cegukan, dll.). Saya juga membuat sedikit sumbangan kepada kehidupan Beatrice dengan memperkenalkannya kepada lelaki yang kemudiannya akan menjadi suaminya - Terry Seinovski, salah seorang pengasas neurosains pengiraan moden.

Sol nampaknya terlibat dalam banyak acara, walaupun dia tidak terlalu menghuraikan butirannya. Dari semasa ke semasa saya ingin bercakap dengannya tentang sains dan matematik, tetapi dia lebih berminat untuk bercerita (selalunya sangat menarik) tentang kedua-dua individu dan organisasi (" Bolehkah anda percaya bahawa [pada tahun 1985], selepas bertahun-tahun tidak menghadiri persidangan, Claude Shannon hanya muncul tanpa diumumkan di bar pada persidangan tahunan mengenai teori maklumat?"; "adakah anda tahu berapa banyak yang mereka perlu bayar kepada ketua Institut Teknologi California untuk membawanya pergi ke Arab Saudi?", dan lain-lain.).

Mengimbas kembali, saya menyedari bahawa saya ingin menarik minat Saul dalam menyelesaikan beberapa soalan matematik yang dibangkitkan dalam kerja saya. Saya rasa saya tidak faham sejauh mana dia suka menyelesaikan masalah yang diajukan oleh orang lain. Walaupun sumbangannya yang besar kepada pembangunan infrastruktur dunia pengkomputeran, Sol sendiri tidak pernah serius menggunakan komputer. Dia sangat berbangga kerana dia boleh membuat pengiraan dalam kepalanya dengan mudah. Sehingga umur 70 tahun, dia tidak menggunakan e-mel dan tidak pernah menggunakan komputer di rumah, walaupun dia mempunyai telefon bimbit (dia hampir tidak pernah menerima e-mel biasa. Saya pernah menyebut bahawa kira-kira setahun yang lalu saya sedang mengkaji cerita itu. daripada Ada Lovelace; dia menjawab: " Kisah Ada Lovelace sebagai pengaturcara Babbage begitu meluas sehingga semua orang nampaknya mengambil mudah, namun saya tidak pernah melihat sumber mengenai subjek itu.").

Anak perempuan Sol telah menganjurkan pesta untuk ulang tahunnya yang ke-80 beberapa tahun lalu dan mencipta jemputan menarik ini:

Saul mempunyai masalah kesihatan tertentu, walaupun ini nampaknya tidak menjejaskan rentak hidupnya. Kesihatan isterinya semakin merosot, dan agak mendadak sejak beberapa minggu lalu. Pada hari Jumaat Sol pergi ke pejabatnya seperti biasa, dan pada malam Sabtu dia meninggal dunia dalam tidurnya. Isterinya Bo menyelamatkannya hanya dalam masa dua minggu dan meninggal dunia hanya dua hari sebelum ulang tahun perkahwinan mereka yang ke-60.

Walaupun Saul telah tiada, karyanya terus hidup dalam bahagian oktilonik dunia digital.

Selamat tinggal Sol. Dan daripada kami semua - terima kasih.



Urutan daftar anjakan digunakan dalam kedua-dua kriptografi dan teori pengekodan. Teori mereka dibangunkan dengan baik, sifir strim berdasarkan daftar anjakan adalah tenaga kerja kriptografi tentera jauh sebelum kemunculan elektronik.

Daftar anjakan dengan maklum balas (selepas ini РгСсОС) terdiri daripada dua bahagian: daftar anjakan dan fungsi maklum balas. Daftar anjakan ialah urutan bit. Bilangan bit ditentukan panjang daftar shift, jika panjangnya ialah n bit, maka daftar dipanggil daftar anjakan n-bit... Setiap kali bit perlu diambil, semua bit daftar anjakan dianjakkan ke kanan sebanyak 1 kedudukan. Bit paling kiri baharu ialah fungsi semua bit lain dalam daftar. Keluaran daftar anjakan ialah satu bit, biasanya paling tidak ketara. Tempoh daftar syif ialah panjang urutan yang terhasil sebelum permulaan pengulangannya.

Rajah 1. Daftar anjakan maklum balas

Daftar Shift menemui jalan masuk ke sifir strim dengan cepat, kerana ia mudah dilaksanakan menggunakan perkakasan digital. Pada tahun 1965, Ernst Selmer, ketua kriptografi kerajaan Norway, membangunkan teori urutan daftar anjakan. Solomon Golomb, seorang ahli matematik NSA, menulis sebuah buku yang menggariskan beberapa keputusannya dan hasil Selmer. Jenis daftar anjakan yang paling mudah dengan maklum balas ialah daftar anjakan maklum balas linear (selepas ini dirujuk sebagai LFSR atau PrCCLOC). Maklum balas daftar tersebut hanyalah XOR (modulo dua penambahan) daripada beberapa bit daftar, senarai bit ini dipanggil urutan ketuk. Daftar ini kadangkala dipanggil konfigurasi Fibbonacci. Disebabkan oleh kesederhanaan urutan maklum balas, teori matematik yang cukup maju boleh digunakan untuk analisis PrCcVOC. Dengan menganalisis jujukan output yang terhasil, anda boleh mengesahkan bahawa jujukan ini cukup rawak untuk selamat. PrCcLOC ialah daftar anjakan yang paling biasa digunakan dalam kriptografi.


Rajah 2. PrCsLOC Fibbonacci

Secara umum, PrCcLOC n-bit boleh berada dalam salah satu daripada N = 2 n -1 keadaan dalaman. Ini bermakna, secara teori, daftar sedemikian boleh menghasilkan urutan rawak semu dengan tempoh T = 2 n -1 bit. (Bilangan keadaan dalaman dan tempoh adalah sama dengan N = T maks = 2 n -1, kerana mengisi PrCcLOC dengan sifar akan menyebabkan daftar anjakan menghasilkan urutan sifar yang tidak terhingga, yang sama sekali tidak berguna). Hanya untuk jujukan tap-off tertentu, PrCcLOC akan melalui kitaran melalui semua 2 n -1 keadaan dalaman, PrCcLOC tersebut adalah PrCcLOC dengan tempoh maksimum... Hasil yang terhasil dipanggil M-jujukan.

Contoh ... Rajah di bawah menunjukkan PrCcLOC 4-bit yang diketuk daripada bit pertama dan keempat. Jika ia dimulakan dengan nilai 1111, maka sebelum pengulangan daftar akan menganggap keadaan dalaman berikut:

Anjakan nombor jam (keadaan dalaman)

Daftar negeri

Bit keluaran

Nilai awal

15 (kembali ke keadaan awal)

16 (nyatakan berulang)

Urutan keluaran akan menjadi rentetan bit yang paling kurang ketara: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 dengan tempoh T = 15, jumlah bilangan keadaan dalaman yang mungkin (kecuali sifar), N = 2 4 -1 = 16-1 = 15 = T maks, maka jujukan keluaran ialah jujukan M.

Untuk PrCcLOC tertentu mempunyai tempoh maksimum, polinomial yang terbentuk daripada jujukan cawangan dan pemalar 1 mestilah modulo primitif 2. Polinomial diwakili sebagai jumlah darjah, contohnya, polinomial darjah n diwakili sebagai ikut:

a n x n + a n-1 x n-1 +… + a 1 x 1 + a 0 x 0 = a n x n + a n-1 x n-1 +… + a 1 x + a 0 di mana a i = (0,1) untuk i = 1… n, a x i - menunjukkan digit.

Darjah polinomial ialah panjang daftar anjakan. Polinomial primitif darjah n ialah polinomial tak dapat dikurangkan yang membahagikan x 2n?1 +1, tetapi bukan pembahagi x d +1 untuk semua d yang merupakan pembahagi 2 n -1. Teori matematik yang sepadan boleh didapati di.

Secara amnya, tiada cara mudah untuk menjana polinomial primitif bagi modulo darjah tertentu 2. Cara paling mudah ialah memilih polinomial secara rawak dan semak sama ada ia primitif. Ini tidak mudah dan agak seperti menyemak sama ada nombor yang dipilih secara rawak bukanlah nombor yang mudah - tetapi banyak pakej perisian matematik dapat menyelesaikan masalah ini.

Beberapa, tetapi pastinya tidak semua, polinomial pelbagai darjah, mod primitif 2, diberikan di bawah. Sebagai contoh, entri

(32, 7, 5, 3, 2, 1, 0) bermakna polinomial berikut ialah mod primitif 2: x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Ini boleh digeneralisasikan dengan mudah untuk PrCCLOC dengan tempoh maksimum. Nombor pertama ialah panjang PrCcLOC. Nombor terakhir sentiasa 0 dan boleh diabaikan. Semua nombor, kecuali 0, nyatakan urutan jari, dikira dari tepi kiri daftar anjakan. Iaitu, ahli polinomial dengan darjah yang lebih rendah sepadan dengan kedudukan yang lebih dekat dengan tepi kanan daftar.

Meneruskan contoh, menulis (32, 7, 5, 3, 2, 1, 0) bermakna bahawa untuk daftar anjakan 32-bit yang diambil, bit baru, bit baru dijana dengan XORing tiga puluh saat, ketujuh, bit kelima, ketiga, kedua dan pertama. , PrCcLOC yang terhasil akan mempunyai panjang maksimum, berbasikal melalui 2 32 -1 nilai sehingga ia berulang.


Rajah 4.32-bit PrCcLOC dengan panjang maksimum

Pertimbangkan kod program PgCsLOC, di mana jujukan cawangan dicirikan oleh polinomial (32, 7, 5, 3, 2, 1, 0). Dalam bahasa C ia kelihatan seperti ini:

ShiftRegister panjang statik tidak ditandatangani = 1;

/ * Semuanya kecuali 0. * /

ShiftRegister = ((((ShiftRegister >> 31))

^ (ShiftRegister >> 6)

^ (ShiftRegister >> 4)

^ (ShiftRegister >> 2)

^ (ShiftRegister >> 1)

^ ShiftRegister))

| (ShiftRegister >> 1);

kembalikan ShiftRegister & 0x00000001;)

Jika daftar anjakan lebih panjang daripada perkataan komputer, kod menjadi lebih kompleks, tetapi tidak banyak. Lampiran B mengandungi jadual beberapa polinomial primitif modulo 2, kami akan menggunakannya pada masa hadapan untuk mengenal pasti beberapa sifat polinomial ini, serta dalam pelaksanaan perisian untuk menentukan jujukan cawangan.

Perlu diingatkan bahawa semua elemen jadual mempunyai bilangan pekali ganjil. Jadual panjang sedemikian disediakan untuk kerja selanjutnya dengan PrCcLOC, kerana PrCcLOC sering digunakan untuk kriptografi dengan sifir strim dan dalam penjana nombor rawak pseudo. Dalam kes kami, anda boleh menggunakan polinomial dengan tahap tertinggi paling banyak tujuh.

Jika p (x) adalah primitif, maka x n p (1 / x) juga primitif, jadi setiap elemen jadual sebenarnya mentakrifkan dua polinomial primitif. Sebagai contoh, jika (a, b, 0) adalah primitif, maka begitu juga (a, a-b, 0). Jika ia primitif (a, b, c, d, 0), maka ia juga primitif (a, a-d, a-c, a-b, 0). Secara matematik:

jika x a + x b +1 adalah primitif, maka x a + x a-b +1 juga primitif,

jika x a + x b + x c + x d +1 adalah primitif, maka x a + x a-d + x a-c + x a-b +1 juga primitif. Trinomial primitif dilaksanakan paling cepat dalam perisian, kerana untuk menjana bit baharu, hanya dua bit daftar anjakan perlu XOR (istilah sifar tidak diambil kira, iaitu x 0 = 1, lihat contoh di atas). Sesungguhnya, semua polinomial maklum balas yang ditunjukkan dalam jadual adalah jarang, iaitu, ia mempunyai sedikit pekali. Jarang sentiasa menjadi punca kelemahan, yang kadangkala cukup untuk memecahkan algoritma. Untuk algoritma kriptografi, adalah lebih baik untuk menggunakan polinomial primitif padat, yang mempunyai banyak pekali. Dengan menggunakan polinomial padat, terutamanya sebagai sebahagian daripada kunci, PsCLOC yang lebih pendek boleh digunakan.

Menjana polinomial primitif padat mod 2 bukanlah mudah. Secara umum, untuk menjana polinomial primitif darjah k, anda perlu mengetahui pemfaktoran 2 k -1.

Dengan sendirinya, PrCcLOC ialah penjana jujukan pseudo-rawak yang baik, tetapi ia mempunyai beberapa sifat bukan rawak (deterministik) yang tidak diingini. Bit berturut-turut adalah linear, menjadikannya tidak berguna untuk penyulitan. Untuk PrCLOC panjang n, keadaan dalaman ialah n bit keluaran sebelumnya bagi penjana. Walaupun skema maklum balas dirahsiakan, ia boleh ditentukan daripada bit keluaran 2n penjana menggunakan algoritma Berlekamp-Massey yang sangat cekap.

Di samping itu, nombor rawak besar yang dijana menggunakan bit bersebelahan jujukan ini sangat berkorelasi dan, untuk beberapa jenis aplikasi, tidak rawak sama sekali. Walaupun begitu, PgCsLOC sering digunakan untuk mencipta algoritma penyulitan sebagai komponen sistem dan algoritma penyulitan.

Daftar anjakan maklum balas terdiri daripada dua bahagian: daftar syif dan fungsi maklum balas.

Rajah 19. Daftar anjakan maklum balas.

Secara umum, daftar anjakan ialah urutan beberapa elemen cincin atau medan. Paling biasa digunakan sedikit daftar shift. Panjang daftar sedemikian dinyatakan dalam bilangan bit. Setiap kali bit diambil, semua bit daftar dialihkan ke kanan satu kedudukan. Bit baru yang paling penting dikira sebagai fungsi semua bit daftar lain. Keluaran biasanya bit paling tidak ketara. Tempoh daftar anjakan ialah panjang jujukan keluaran sebelum permulaan pengulangannya.

Jenis daftar anjakan yang paling mudah ialah daftar anjakan maklum balas linear (RSLOS atau LRS). Maklum balas ialah operasi XOR yang mudah pada beberapa bit daftar. Senarai bit ini ditakrifkan polinomial ciri dan dipanggil urutan selekoh... Ini kadangkala dipanggil Konfigurasi Fibonacci.

Rajah 20. Konfigurasi RLOS Fibonacci.

Dalam pelaksanaan perisian RSLOS, skema yang diubah suai digunakan: untuk menjana bit bererti baharu, dan bukannya menggunakan bit jujukan ketuk, operasi XOR dilakukan pada setiap bitnya dengan output penjana, menggantikan bit lama bagi urutan paip. Pengubahsuaian ini kadangkala dipanggil Konfigurasi Galois.

Rajah 21. Konfigurasi RSLOS Galois.

n-bit RSLOS boleh berada dalam salah satu daripada 2 n- 1 negeri dalaman. Ini bermakna, secara teori, daftar sedemikian boleh menghasilkan urutan pseudo-rawak dengan tempoh 2 n- 1 bit (padding dengan sifar sama sekali tidak berguna). Lulus semua 2 n- 1 keadaan dalaman hanya boleh dilakukan dengan urutan paip tertentu. Daftar sedemikian dipanggil RSLOS dengan tempoh maksimum. Untuk memastikan tempoh maksimum RSLOC, polinomial ciri adalah perlu primitif modulo 2. Darjah polinomial ialah panjang daftar anjakan. Polinomial primitif darjah n- memang begitu tidak dapat dikurangkan polinomial iaitu pembahagi tetapi bukan pembahagi x d+ 1 untuk semua d yang merupakan pembahagi 2 n- 1. (Apabila membincangkan polinomial, istilah nombor perdana digantikan dengan istilah polinomial tidak dapat dikurangkan). Polinomial ciri yang diberikan dalam angka RSLOS:



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

adalah modulo primitif 2. Tempoh daftar sedemikian akan menjadi maksimum, berbasikal melalui semua 2 32 - 1 nilai sehingga ia diulang. Yang paling biasa digunakan ialah polinomial yang dinipis, i.e. yang hanya mempunyai beberapa pekali. yang paling popular ialah trinomial.

Parameter penting penjana berdasarkan RSLOS ialah kerumitan linear... Ia ditakrifkan sebagai panjang n RLOS terpendek yang boleh mensimulasikan output penjana. Kerumitan linear adalah penting kerana dengan mudah Algoritma Berlenkamp-Massey anda boleh mencipta semula RSLOS sedemikian dengan menyemak hanya 2 n bit gamma. Dengan definisi RSLOS yang dikehendaki, sifir strim sebenarnya rosak.

Selain RSLOS, daftar anjakan dengan maklum balas tak linear, maklum balas bawa, dsb. juga digunakan.

Sebilangan penjana telah dibangunkan berdasarkan pendekatan teori nombor (penjana Bloom-Micali, RSA, BBS, mampatan, penjana aditif, dll.).

Perisian untuk sintesis algoritma kriptografi aliran telah dibangunkan dengan lebih terperinci dan dibandingkan dengan blok cryptoalgorithm. Namun begitu, untuk mencipta sifir strim, blok kriptoalgoritma sering digunakan dalam mod OFB atau CFB.