WikiDer > Kichraytiruvchi generator
Yilda kriptografiya, qisqaruvchi generator shaklidir pseudorandom tasodifiy generator da foydalanish uchun mo'ljallangan oqim shifri. Kripto 1993-da nashr etilgan Don mischisi, Ugo Krawchikva Yishay Mansur.[1]
Kichraytiruvchi generator ikkitadan foydalanadi chiziqli teskari siljish registrlari. Ulardan biri A ketma-ketlik, chiquvchi bitlarni hosil qiladi, ikkinchisi esa S ketma-ketligi, ularning chiqishini boshqaradi. Ikkalasi ham A va S soatlangan; agar S bit 1, keyin the A bit chiqadi; agar S bit 0 ga teng A bit bekor qilinadi, hech narsa chiqmaydi va biz registrlarni yana soatlab tekshiramiz. Buning zararli tomoni shundaki, generatorning chiqish tezligi tartibsiz o'zgarib turadi va shunga qarab S holatiga ishora qiladi; bu muammoni chiqishni buferlash orqali bartaraf etish mumkin. LFSR tomonidan ishlab chiqarilgan tasodifiy ketma-ketlik xavfsiz tizimda oldindan aytib bo'lmaydiganlikni kafolatlay olmaydi va uning tasodifiyligini oshirish uchun turli usullar taklif qilingan [2]
Ushbu soddaligiga qaramay, teskari aloqa polinomlari maxfiy bo'lganda, to'liq qidirishdan yaxshiroq ma'lum hujumlar mavjud emas. Agar teskari aloqa polinomlari ma'lum bo'lsa, eng yaxshi ma'lum bo'lgan hujumdan kamroq talab qilinadi A • S ishlab chiqarish bitlari.[3]
Qiziqarli variant o'z-o'zidan qisqaradigan generator.
Python-dagi dastur
Ushbu misol pseudorandom bitstream ishlab chiqarish uchun ikkita Galois LFRS dan foydalanadi. Python kodi faylni yoki har qanday bytestreamni shifrlash va parolini ochish uchun ishlatilishi mumkin.
#! / usr / bin / env python3Import sys# ----------------------------------------------------------------------------# Crypto4o funktsiyalari shu erda boshlanadi# ----------------------------------------------------------------------------sinf GLFSR:    "" "Galois chiziqli teskari aloqa smenali registri." ""    def sherzod(o'zini o'zi, polinom, boshlang'ich_value):        chop etish "0x polinomdan foydalanish% X, boshlang'ich qiymati: 0x% X." % (polinom, boshlang'ich_value)        o'zini o'zi.polinom = polinom | 1        o'zini o'zi.ma'lumotlar = boshlang'ich_value        tmp = polinom        o'zini o'zi.niqob = 1        esa tmp != 0:            agar tmp & o'zini o'zi.niqob != 0:                tmp ^= o'zini o'zi.niqob            agar tmp == 0:                tanaffus            o'zini o'zi.niqob <<= 1    def keyingi_ davlat(o'zini o'zi):        o'zini o'zi.ma'lumotlar <<= 1        retval = 0        agar o'zini o'zi.ma'lumotlar & o'zini o'zi.niqob != 0:            retval = 1            o'zini o'zi.ma'lumotlar ^= o'zini o'zi.polinom        qaytish retvalsinf SPRNG:    def sherzod(o'zini o'zi, polinom_d, init_value_d, polnom_c, init_value_c):        chop etish "GLFSR D0:",        o'zini o'zi.shoxrux = GLFSR(polinom_d, init_value_d)        chop etish "GLFSR C0:",        o'zini o'zi.nilufar = GLFSR(polnom_c, init_value_c)    def keyingi_bayt(o'zini o'zi):        bayt = 0        bitposlar = 7        esa To'g'ri:            bit_d = o'zini o'zi.shoxrux.keyingi_ davlat()            bit_c = o'zini o'zi.nilufar.keyingi_ davlat()            agar bit_c != 0:                bit_r = bit_d                bayt |= bit_r << bitposlar                bitposlar -= 1                agar bitposlar < 0:                    tanaffus        qaytish bayt# ----------------------------------------------------------------------------# Crypto4o funktsiyalari shu erda tugaydi# ----------------------------------------------------------------------------def asosiy():    prng = SPRNG(        int(sys.argv[3], 16),        int(sys.argv[4], 16),        int(sys.argv[5], 16),        int(sys.argv[6], 16),    )    bilan ochiq(sys.argv[1], "rb") kabi f, ochiq(sys.argv[2], "wb") kabi g:        esa To'g'ri:            kirish_ch = f.o'qing(1)            agar kirish_ch == "":                tanaffus            tasodifiy_ch = prng.keyingi_bayt() & 0xFF            g.yozmoq(chr(ord(kirish_ch) ^ tasodifiy_ch))agar __name__ == "__main__":    asosiy()Shuningdek qarang
- BALIQ, (xavfli) oqim shifri qisqaradigan generator printsipiga asoslanadi
 - O'zgaruvchan qadam generatori, shunga o'xshash oqim shifri.
 
Adabiyotlar
- ^ D. Kopersmit, X. Kravich va Y. Mansur, “Kichraytiruvchi generator, "CRYPTO '93 da: Kriptologiyaning yutuqlari bo'yicha 13-yillik xalqaro kriptologiya konferentsiyasi materiallari, (Nyu-York, Nyu-York, AQSh), 22-39 betlar, Springer-Verlag Nyu-York, Inc., 1994
 - ^ Poorghanad, A. va boshq. Evolyutsion usullar yordamida yuqori sifatli soxta tasodifiy sonni yaratish IEEE, DOI: 10.1109 / CIS.2008.220.
 - ^ Kaballero-Gil, P. va boshq. Shrinking Generator uchun yangi hujum strategiyasi Axborot texnologiyalari bo'yicha tadqiqot va amaliyot jurnali, Jild 1, 331-335 betlar, 2008 yil dekabr.