Дақ (шифр) - Speck (cipher)

Дақ
Дақ блоктарының шифры 0 indexing.svg
2 сөзден тұратын негізгі кестемен Speck-тің 3 туры
Жалпы
ДизайнерлерРэй Болиеу, Дуглас Шорс, Джейсон Смит, Стефан Трапман-Кларк, Брайан Уикс, Луи Вингерс NSA
Алғаш жарияланған2013
БайланыстыСаймон, Үш балық
Шифр бөлшектері
Негізгі өлшемдер64, 72, 96, 128, 144, 192 немесе 256 бит
Блок өлшемдері32, 48, 64, 96 немесе 128 бит
ҚұрылымARX
Дөңгелек22–34 (блок пен кілт өлшеміне байланысты)
Жылдамдық2.6 cpb (Жоқ 5.7 SSE ) Intel Xeon 5640 (Speck128 / 128)
Үздік көпшілік криптоанализ
Толық шифрларға шабуыл жасалмайды, бірақ дөңгелек нұсқаларға шабуыл жасалды. Дифференциалды криптоанализ көптеген нұсқалардың шамамен 70-75% дөңгелектерін қатал күшке қарағанда сәл тезірек бұза алады[1][2]; қараңыз # Криптанализ.

Дақ жеңіл салмақты отбасы блоктық шифрлар жариялаған Ұлттық қауіпсіздік агенттігі (NSA) 2013 жылғы маусымда.[3] Speck бағдарламалық жасақтаманы орындау үшін оңтайландырылған, ал оның алгоритмі, Саймон, аппараттық құралдар үшін оңтайландырылған. Дақ - бұл қосу – бұру – xor (ARX) шифры.

NSA Simon және Speck шифрларымен 2011 жылы жұмыс істей бастады. Агенттік АҚШ федералды үкіметіндегі кейбір агенттіктерге әр түрлі коллекцияларда жақсы жұмыс істейтін шифр қажет деп болжады. Интернет заттары қауіпсіздіктің қолайлы деңгейін сақтай отырып, құрылғылар.[4]

Шифр сипаттамасы

Дақ түрлі блоктық және кілт өлшемдерін қолдайды. Блок әрқашан екі сөзден тұрады, бірақ сөздердің мөлшері 16, 24, 32, 48 немесе 64 бит болуы мүмкін. Сәйкес кілт 2, 3 немесе 4 сөзден тұрады. Дөңгелек функция екі айналымнан тұрады, оң жақ сөзді сол сөзге қосып, пернені сол сөзге хорға келтіреді, содан кейін сол сөзді оң сөзге келтіреді. Раунд саны таңдалған параметрлерге байланысты, келесідей:[3]

Блок өлшемі (бит)Кілт өлшемі (бит)Дөңгелек
2×16 = 324×16 = 6422
2×24 = 483×24 = 7222
4×24 = 9623
2×32 = 643×32 = 9626
4×32 = 12827
2×48 = 962×48 = 9628
3×48 = 14429
2×64 = 1282×64 = 12832
3×64 = 19233
4×64 = 25634

The негізгі кесте негізгі блоктық шифр сияқты дөңгелек функцияны қолданады.

Анықтама коды

Төменде дизайнерлердің анықтамалық орындалуы келтірілген C, 128 биттік блок өлшемі мен кілті бар Speck нұсқасының, мұндағы key = (K [1], K [0]). Бұл оларға сәйкес келеді IACR ePrint.[3]

# қосу <stdint.h># ROR (x, r) ((x >> r) | (x << (64 - r)))) анықтау# ROL (x, r) ((x << r) | (x >> (64 - r))) анықтаңыз# R (x, y, k) (x = ROR (x, 8), x + = y, x ^ = k, y = ROL (y, 3), y ^ = x)# 32-РАУНДТАРДЫ анықтаңызжарамсыз шифрлау(uint64_t кт[2],             uint64_t const pt[2],                         uint64_t const Қ[2]){   uint64_t ж = pt[0], х = pt[1], б = Қ[0], а = Қ[1];   R(х, ж, б);   үшін (int мен = 0; мен < Дөңгелек - 1; мен++) {      R(а, б, мен);      R(х, ж, б);   }   кт[0] = ж;   кт[1] = х;}

Бұл код дөңгелек кілттерді есептейтінін ескеріңіз (негізгі кесте ) талап ету бойынша. Іс жүзінде, басқа блоктық шифрлар сияқты, дөңгелек кілттерді шифрланған немесе шифрланған әр блок үшін қайта есептеудің орнына дөңгелек кілттерді бір рет есептеп, оларды кэштеу жиі кездеседі. Авторлар атап өткендей, «кішігірім код өлшемі дизайнның басты мақсаты болғанын ескере отырып, дөңгелек функцияны қайта құру мағынасы болды. Бұл тәсіл микроконтроллерді жүзеге асыруға арналған дөңгелек кілт жасауға мүмкіндік береді, тек дөңгелек функциялық кодты, өте аз ROM-ды және кілт пен қарапайым мәтінді ұстап тұру үшін қажет көлемнен тыс жедел жадты пайдалану. « [5]

16 биттік сөздер үшін (Speck32) айналу 7 бит оңға және 2 бит солға тең; барлық басқа сөздердің өлшемдері үшін олар осы жерде көрсетілгендей 8 және 3 құрайды.

Егер кілт 2 сөзден көп болса, онда 2 немесе 3 болады а айналу кезінде қолданылатын мәндер.

Эндианс

Түпнұсқа Speck қағазында нақты жазылмаған өміршеңдік қарапайым мәтіндік блок шифр алгоритмінде қолданылатын екі сөз ретінде түсіндірілгенде, байт. Қағазда берілген тест векторлары үлкен тәртіпті ұсынады. Алайда, алгоритмнің авторлары кейбір іске асырушыларға кеңес берді[6] байттардың кіші тәртібі кілттер, қарапайым мәтіндер және шифрлық мәтіндер үшін қолданылуы керек, ал басқалар тәжірибені қабылдады.[7]

Өнімділік

Сәйкес ECRYPT ағын шифрларының эталондары (eBASC), Speck - жылдам және қысқа хабарламалар үшін қол жетімді жылдам шифрлардың бірі. Ұзын хабарламаларға арналған кейбір орташа қойылымдар (128-биттік, 128-блоктық өлшем): 1.99 бір байттағы циклдар (cpb) AMD Ryzen 7 1700-де; Intel Core i5-6600-де 1,27 cpb; Broadcom BCM2836 Cortex A7 жүйесінде 15.96 cpb.[8] Мысалы, ARMv7 платформа, Speck қарағанда шамамен 3 есе жылдам AES.[9]

8 биттік AVR микроконтроллерінде енгізілгенде, 64 биттік блоктармен және 128 биттік кілттермен Speck шифрлауы 192 байт Flash жұмсайды, уақытша айнымалылар 112 байт жедел жадты пайдаланады және блоктағы әр байтты шифрлау үшін 164 цикл қажет.[10]

20 Бұл ағын шифры салыстырмалы өнімділікпен, бірақ кейбір қосымшаларда ағын шифрларын қауіпсіз пайдалану қиын, онда Speck сияқты блоктық шифрлар жақсы жұмыс істейді. Бұл Google-ді Speck-ті Linux ядросының 4.17 нұсқасына енгізуге мәжбүр етті, оны төмен деңгейдегі дискілерді шифрлау мүмкіндігі ретінде ұсынуды жоспарлады Android жетіспейтін процессорлардағы баяу AES өнімділігі салдарынан шифрланбайтын құрылғылар AES нұсқаулары.[11][12] Кейінірек реакция мен алаңдаушылыққа байланысты Linux ядросынан спект алынып тасталды, ал Google-ге ауысты Adiantum алгоритмі орнына.[13][14][15]

Қауіпсіздік

Криптоанализ

Дизайнерлер Speck «жеңіл» шифр болса да, стандарттарға сәйкес әр блок пен кілт өлшемі үшін қауіпсіздікті қамтамасыз етуге арналған деп мәлімдейді. ашық мәтін (CPA) және таңдалған-шифрлық мәтін (CCA) шабуылдар. Қарсыласу байланысты шабуылдар сонымен қатар мақсат ретінде айтылды, бірақ онша маңызды емес, себебі сол модельдегі шабуылдар әдеттегі пайдалану жағдайлары үшін маңызды емес.[16]:2 Шабуылдарында қарсыласуға күш салынбаған белгілі-айырмашылықты шабуыл модель де емес, дизайнерлер де Speck-ті а ретінде пайдалануға бағаламады хэш функциясы.[3]:8

2018 жылғы жағдай бойынша кез-келген нұсқадағы толық спектальге сәтті шабуыл жасалмады. Саймон мен Спекке деген қызығушылықтың арқасында олар туралы 70-ке жуық криптоанализ мақалалары жарық көрді.[16]:10 Әдеттегідей қайталанатын шифрлар, қысқартылған дөңгелек нұсқалары сәтті шабуылға ұшырады. Стандартты шабуыл үлгісіндегі Speck-ке ең жақсы жарияланған шабуылдар (белгісіз кілтпен CPA / CCA) дифференциалды криптоанализ шабуылдар; бұл көптеген нұсқалардың шамамен 70-75% айналымынан өтеді, дегенмен бұл ең жақсы шабуылдар жылдамдыққа қарағанда жылдамырақ қатал күш.[1][2][16]:12 Дизайн тобы Speck-ті жобалағанда, олар дифференциалды шабуылдарды шектейтін шабуылдар деп тапты, яғни шабуылдардың ең көп раунды өтетін түрі; содан кейін олар қауіпсіздік маржасын ұқсас етіп қалдыру үшін раундтардың санын белгілейді AES-128 шамамен 30% құрайды.[16]:12–13

Speck-ке танымал шабуылдар (шабуылдың стандартты моделінде)
НұсқаДөңгелек шабуылдарУақыттың күрделілігіДеректердің күрделілігіҒарыштың күрделілігіШабуыл түрі
Speck128 / 25625/34 (74%)2253.352125.35222дифференциалды[1]
Speck128 / 19224/33 (73%)2189.352125.35222дифференциалды[1]
Speck128 / 12823/32 (72%)2125.352125.35222дифференциалды[1]
Speck96 / 14421/29 (72%)2143.94295.94222дифференциалды[1]
Speck96 / 9620/28 (71%)295.94295.94222дифференциалды[1]
Speck64 / 12820/27 (74%)2125.56261.56222дифференциалды[1]
Speck64 / 9619/26 (73%)293.56261.56222дифференциалды[1]
Спец 48/9617/23 (74%)295.8247.8222дифференциалды[2]
Спец 48/7216/22 (73%)271.8247.8222дифференциалды[2]
Speck32 / 6415/22 (68%)263.39231.39222дифференциалды[2]

Сияқты консервативті шифрлармен салыстырғанда Speck қауіпсіздік маржасы өте аз, яғни ең жақсы шабуылдар мен толық шифр арасындағы өте аз айналымдар үшін сынға алынды. ChaCha20.[17]Қауіпсіздік шегі аз шифрлар болашақтағы жетістіктермен бұзылуы ықтимал криптоанализ. Speck дизайнерлік тобы қажетсіз үлкен қауіпсіздік маржаларына, әсіресе жеңіл құрылғыларда нақты шығындар бар деп есептейді, жобалау кезеңінде криптоанализ шеңберлердің санын сәйкесінше орнатуға мүмкіндік берді және олар AES қауіпсіздік шегін мақсат етті.[16]:17

Дақ дөңгелек санауышын қамтиды негізгі кесте. Дизайнерлер бұны бұғаттау үшін енгізілгенін айтады слайд және айналмалы криптоанализ шабуылдар.[16]:16 Іздеу үшін айналмалы-XOR криптоанализі қолданылған ажыратқыштар Speck-тің дөңгелек нұсқаларына қарсы.[18] Авторлар өздерінің ажыратқыштарына негізделген кілттерді қалпына келтірудің стандартты шабуылдарын сипаттамағанымен, олардың белгілі бір кілтпен ерекшеленетін шабуыл үлгісіндегі Speck32 және Speck48-дегі ең жақсы ажыратқыштар. әлсіз кілт сыныптар оны ең жақсы дифференциалдық көрсеткіштерге қарағанда сәл көбірек айналдырады. Авторлардың бірі оның зерттеулері ресурстармен шектелген және айналмалы XOR ажыратқыштары көп айналымдарда болуы мүмкін екенін айтты.[19] Алайда криптоанализдің бұл түрі мынаны болжайды қатысты кілт немесе тіпті белгілі кілт шабуыл модельдері[18], типтік криптографиялық хаттамалар мен шешімдерде алаңдаушылық тудырмайды.[20]:8 Сондай-ақ, дизайнерлер Speck-тің белгілі бір-бірінен ерекшеленетін шабуылдарға қарсы тұруға арналмағанын айтады (олар шифрлардың құпиялылығына тікелей нұқсан келтірмейді).[3]:8

Дизайнерлер NSA криптоанализі алгоритмдерді әлсіз жақтары жоқ деп тапты және қауіпсіздік олардың ұзындықтарына сәйкес келеді деп мәлімдейді.[4]:2 Дизайн тобы олардың криптоанализінде Matsui алгоритмі және SAT / SMT еріткіштері сияқты стандартты техниканы қолдана отырып сызықтық және дифференциалды криптоанализ болғанын айтады, бірақ қолданылған әдістердің толық тізімі берілмеген.[16]:10 Speck дизайнерлері NSA шифрларын криптоанализдеу туралы толық мәлімет бермегені үшін сынға алынды.[19]

NSA Simon128 / 256 және Speck128 / 256-ны АҚШ-тың ұлттық қауіпсіздік жүйелерінде қолдануға рұқсат берді, дегенмен AES-256 шектеусіз қосымшаларға ұсынылады.[21]

Бүйірлік шабуылдар

Ан болу ARX ​​шифры, Speck пайдаланбайды S-қораптар немесе басқа іздеу кестелері; сондықтан ол табиғи түрде иммунитетке ие жедел-кэштік шабуылдар.[4]:12 Сияқты іздеу кестелерін қолданатын шифрлардан айырмашылығы бар AES, мұндай шабуылдарға осал екендігі көрсетілген. Дегенмен, көптеген блоктық шифрлар сияқты (AES-ті қоса алғанда), Speck осал болып табылады қуат талдауы егер аппараттық қарсы шаралар қабылданбаса, шабуылдар.[22][4]:12

Блок және кілт өлшемдері

Шифрлердің Speck тұқымдасына блок пен кілт өлшемдері бірдей варианттар кіреді AES (Speck128 / 128, Speck128 / 192 және Speck128 / 256), оған блок өлшемі 32 биттен төмен және кілт өлшемі 64 биттен төмен нұсқалар кіреді. Бұл кішігірім блоктар мен кілттердің өлшемдері жалпы пайдалану үшін қауіпті, өйткені олар мүмкіндік береді туған күніне жасалған шабуылдар және дөрекі шабуылдар, шифрдың ресми қауіпсіздігіне қарамастан.[23] Дизайнерлер бұл блоктар мен кілттердің өлшемдері ресурстарды шектейтін, одан да жақсы ешнәрсе мүмкін емес немесе өте аз көлемдегі мәліметтер ғана шифрланған құрылғыларға енгізілген деп мәлімдейді. жылы RFID хаттамалар.[4]:2–3 АҚШ-тың Ұлттық қауіпсіздік жүйелерінде 128-биттік блок өлшемі және 256-биттік кілт өлшемі бар нұсқа ғана қолдануға рұқсат етілген.[21]

Стандарттау күштері мен қайшылықтар

Саймон мен Спекті стандарттаудың алғашқы әрекеттері орындалмады Халықаралық стандарттау ұйымы процесс талап еткен супер-көпшілік және шифрлар қабылданған жоқ.[24][19] Германия, Жапония және Израиль сияқты ISO елдеріне сарапшылар, соның ішінде NSA стандарттау жөніндегі әрекеттерге қарсы болды Саймон және Speck шифрлары, NSA шифрлардың пайдаланылатын әлсіз жақтарын біле отырып, оларды стандарттауға итермелейді деп алаңдайды. Бұл ұстаным шифрлардың әлсіздігінің ішінара дәлелдемелеріне, жаңа шифрларды стандарттаудың айқын қажеттілігінің болмауына және NSA-ның артқы қақпаны құру мен ілгерілетуге бұрынғы қатысуына негізделген. Dual_EC_DRBG криптографиялық алгоритм.[25]

Қауіптілікке жауап ретінде NSA әлемнің жетекші криптографтарының 70-тен астам қауіпсіздік құжаттары NSA-ның алгоритмдердің қауіпсіздігі туралы тұжырымын қолдайтынын және NSA өзінің немесе басқа біреудің мүмкіндік беретін криптаналитикалық әдістер туралы білмейтіндігін растады деп мәлімдеді. Саймонды немесе Спекты пайдалану[26][дәйексөз қажет ]

Шифрларды стандарттау бойынша алғашқы әрекеттер сәтсіз аяқталғаннан кейін, ISO басқа жұмыс топтарында Simon мен Speck стандарттады. 2018 жылдың қазан айынан бастап Simon and Speck шифрлары RFID әуе интерфейсі стандартының, ISO / 29167-21 (Simon үшін) және ISO / 29167-22 (Speck үшін) халықаралық стандарттарының бөлігі ретінде ISO стандартталған. оларды коммерциялық ұйымдар пайдалану үшін қол жетімді.[дәйексөз қажет ]

7 тамызда, 2018, Speck жойылды Linux ядросы 4.20 толығымен босатыңыз.[15]

Әдебиеттер тізімі

  1. ^ а б c г. e f ж сағ мен Линг, ән; Хуанг, Чжанцзе; Ян, Цяньцянь (2016-06-30). «ARX блоктық шифрларын SPECK және LEA-ға қолданумен автоматты түрде дифференциалды талдау» (PDF). Алынған 2018-05-06.
  2. ^ а б c г. e Ли, ХоЧанг; Ким, Сеоджин; Кан, Хёнгхуль; Хонг, Дукжо; Sung, Jaechul; Хонг, Сеохи (ақпан 2018). «SAT Solver көмегімен ARX негізіндегі шифр үшін дифференциалдардың шамамен ықтималдығын есептеу». Кореяның ақпараттық қауіпсіздік және криптология институтының журналы (корей тілінде). 28 (1): 15–24. дои:10.13089 / JKIISC.2018.28.1.15.
  3. ^ а б c г. e Болиеу, Рэй; Шорс, Дуглас; Смит, Джейсон; Терапевт-Кларк, Стефан; Апта, Брайан; Wingers, Louis (2013-06-19). «Жеңіл блокты шифрлардың SIMON және SPECK отбасылары». Алынған 2016-09-20.
  4. ^ а б c г. e Болиеу, Рэй; Шорс, Дуглас; Смит, Джейсон; Терапевт-Кларк, Стефан; Апта, Брайан; Вингер, Луис (2015-07-09). «Саймон мен дақ: Интернет заттары үшін шифрларды бұғаттау» (PDF). Алынған 2017-11-23.
  5. ^ «Саймон мен Спектың дизайны мен талдауы туралы ескертпелер» (PDF). eprint.iacr.org. Алынған 2018-04-26.
  6. ^ «Re: [PATCH 0/5] крипто: дақтарды қолдау». www.mail-archive.com. Алынған 2018-04-12.
  7. ^ «SPECK - Крипто ++ Wiki». www.cryptopp.com. Алынған 2018-04-12.
  8. ^ «ECRYPT ағын шифрларын салыстыру». Алынған 22 маусым 2017.
  9. ^ «Linux криптографиясы - Re: [PATCH v2 0/5] крипто: дақтарды қолдау». www.spinics.net. Алынған 2018-08-06.
  10. ^ «AVR 8-биттік микроконтроллерлердегі Simon and Speck Block Ciphers» (PDF). Алынған 25 қыркүйек 2017.
  11. ^ «crypto: speck - Speck блок шифрына қолдау қосу». 2018-02-14. Алынған 2019-01-11.
  12. ^ «Linux ядроларындағы NSA-ның шифрлау алгоритмі 4.17 қолданушыларды мазалайды | Бұл FOSS». Бұл FOSS. 2018-08-04. Алынған 2018-08-06.
  13. ^ «Дауларды шешетін шифрлау коды шынымен Linux ядросынан - Phoronix-тен алынып тасталады». www.phoronix.com. 2018-09-04. Алынған 2018-12-08.
  14. ^ «Adiantum Linux-тің 4.21-інде Google кезіндегі дақтарды ауыстыру үшін кезекте тұр». www.phoronix.com. 2018-11-29. Алынған 2019-01-11.
  15. ^ а б «kernel / git / herbert / cryptodev-2.6.git - Crypto API Dev». git.kernel.org. Алынған 2018-12-08.
  16. ^ а б c г. e f ж «Саймон мен Спектың дизайны мен талдауы туралы ескертпелер» (PDF). 2018-01-19. Алынған 2018-06-13.
  17. ^ Бернштейн, Даниэл Дж. [@Hashbreaker] (2016-04-12). «NSA Simon + Speck-тің 70% сынған дұрыс деп мәлімдейді» (Твит). Алынған 2018-06-13 - арқылы Twitter.
  18. ^ а б Лю, Юнвен; Де Витте, Гленн; Ранеа, Адриан; Ашур, Томер (2017). «Айналмалы-XOR кректанализін қысқартылған SPECK» (PDF). Алынған 2018-06-13.
  19. ^ а б c Ашур, Томер. «[PATCH v2 0/5] крипто: дақтарды қолдау».
  20. ^ Бернштейн, Даниэл Дж. (2015-04-27). «Salsa20 қауіпсіздігі» (PDF). Алынған 2018-06-13.
  21. ^ а б Ұлттық қауіпсіздік агенттігі (2016-11-18). «Ақпаратты қамтамасыз ету қажеттіліктерінің эволюциясын қолдау алгоритмдері».
  22. ^ Гамаараччи, Хасинду; Ганегода, Харша; Рагель, Рошан (2017-07-20). «Корреляциялық қуатты талдау шабуылын пайдаланып, Speck криптожүйесін бұзу». Шри-Ланканың Ұлттық ғылыми қорының журналы. 45 (4): 393–404. дои:10.4038 / jnsfsr.v45i4.8233. Алынған 2018-06-13.
  23. ^ Бхаргаван, Картикеян; Leurent, Gaëtan (2016). 64 биттік блоктық шифрлардың практикалық (ішкі) қауіпсіздігі туралы: HTTP-де TLS және OpenVPN арқылы соқтығысу шабуылдары (PDF). Компьютерлік және коммуникациялық қауіпсіздік бойынша ACM конференциясы. 456-467 бет. дои:10.1145/2976749.2978423.
  24. ^ Спек пен Симонның ISO стандарттаудан бас тартуының себептерін түсіндіреді
  25. ^ «АҚШ-тың сенімсіз одақтастары шпиондық агенттікті шифрлау күресінен бас тартуға мәжбүр етеді».
  26. ^ Саймон және дақ туралы ақпарат