В криптографії функція губки (англ. sponge construction або sponge function) належить до класу алгоритмів із кінцевим внутрішнім станом, на вхід якого надходить двійковий рядок довільної довжини, і який повертає двійковий рядок також довільної довжини f:{0,1}^n →{0,1}^*. Губка є узагальненням як геш-функцій, так і потокових і блочний шифрів, генераторів псевдовипадкових чисел, що мають довільну довжину вхідних даних.
Структура
Губка — це ітеративна конструкція для створення функції з довільною довжиною на вході й довільної довжини на виході на основі перетворень f. Губка має внутрішній стан S — з даними фіксованого розміру b (біт). При цьому дані розділені на 2 частини — перша S1 розміру r, а друга S2 — розміру c. Значення r називається бітовою швидкістю, а значення з — потужністю => b = r + c.
На фазі ініціалізації, блок даних розміру b заповнюється нулями, а вхідні дані M розбиваються на блоки розміру r. Подальша робота губки проводиться в 2 етапи:
- * У фазі «вбирання» (англ. absorbing), виконується операція XOR чергового блоку вихідного повідомлення з першою частиною стану S1 розміру r (біт), решта S2 стану ємністю c залишається недоторканою. Результат поміщається в S1, а потім стан S обробляється функцією f — багатораундовою безключовою псевдовипадковою перестановкою, і так повторюється до вичерпання блоків вихідного повідомлення.
- * У фазі «вичавлювання» (англ. squeezing), стан S подається на функцію f, після чого частина S1 подається на вихід. Ці дії повторюються, поки не буде отримана послідовність потрібної довжини (наприклад, довжини геша).
Останні біти c залежать від вхідних блоків лише опосередковано й не виводяться в ході фази «вичавлювання» (squeezing).
Застосування
Генератор псевдовипадкових чисел, оснований на функції губки.
Моделювання ГПВЧ із змінними вхідними даними
Визначимо ГПВЧ із змінними вихідними даними як об'єкт зі станом, який підтримує два типи запитів, в будь-якому порядку:
- Запит подачі, feed (σ) — подає початкове значення, що складається з непорожніх рядків σ ϵ , в стан ГПСЧ;
- Запит прийняття, fetch (l) — доручає ГПСЧ повернути l біт.
Тоді вихідний матеріал (англ. seeding material), що подається на вхід генератора — це конкатенація σ, отриманих у всіх запитах подачі.
Неформально, вимоги до ГПВЧ із змінними вихідними даними можуть бути визначені наступним чином: По-перше, його вихід (тобто відповіді на запити подачі) повинен залежати від усіх вихідних матеріалів. По-друге, для зловмисника, який знає вихідний матеріал, але спостерігав частину виведення, має бути неможливим зробити висновок про решту виходу.
Визначено ідеальну ГПВЧ конструкцію, яка використовує випадковий оракул. Таку конструкцію можна описати наступним чином. Вона зберігає як стан послідовність всіх запитів подачі й прийняття, які вона отримала, складаючи історію h. При отриманні запиту подачі feed (σ), вона оновлює історію підключенням цього запиту. При отриманні запиту прийняття fetch (l), вона подає випадковому оракулу рядок, який своєю чергою шифрує історію рядком і повертає біти від z до z + l-1 своєї відповіді, де z — число запитуваних біт в запиті подачі. Отже, конкатенація відповідей на запити подачі — лише відповідь випадкового оракула на одноразовий запит. Таку конструкцію можна назвати режимом, який зберігає історію, з функцією шифрування e (h). Визначення режиму із збереженням історії, отже, сходиться до визначення цієї функції шифрування.
Так як вихід ГПВЧ повинен залежати від всього отриманого вихідного матеріалу, функція e (h), яка шифрується, повинна бути ін'єктиною із вихідним матеріалом. Іншими словами, для будь-яких двох послідовностей запитів з різним вихідним матеріалом, два відображення e (h) повинні бути різні. Це явище називається повнотою вихідного матеріалу (англ. seed-completeness). У функції шифрування з повним вихідним матеріалом на запит прийняття, будуть видані різні відповіді на різні вхідні рядки. Звідси випливає, що ГПВЧ повертає незалежні біти. Таким чином, пропонується наступне визначення ідеального ГПВЧ із змінними вхідними даними.
Ідеальний ГПВЧ із змінними вхідними даними — це режим, який зберігає історію, називається випадковим оракулом, з функцією шифрування e (h) з повним вихідним матеріалом.
Створення ГПВЧ з використанням функції губки
Природно буде включений запит подачі в фазу «вбирання», а запит прийняття в фазу «вичавлювання». Однак виконання функції губки має тільки одну фазу вбирання (один вхід), за якою слідує одна фаза «вичавлювання» (тобто один вихід довільної довжини) і вона не може бути використана для виробництва багаторазових фаз. Ці труднощі можна обійти. Досить вважати, що кожен раз як псевдовипадкові біти прийняті, інше виконання функції губки запитується з іншим входом.
При побудові функції губки, вхідне повідомлення m ϵ має бути поділено на блоки з r бітів і заповнене. Функція, яка робить це позначається так: p (m) функцію, припускається, що ця функція додає тільки біти після m. Якщо є потреба повторно використовувати стан губки, для якої вхідним рядком було повідомлення m1 і для якої вихідні біти були «вичавлені» при l> 0, то стан функції губки в цій точці такий, якщо б часткове повідомлення m'1 = р(m1) || 0r(⌈l/r⌉-1) було «впитано». Нульові блоки складають додаткові ітерації через фази стиснення. Перезапуск губки з цієї точки означає, що вхідним буде повідомлення m2, для якого m'1 є префіксним.
Щоб визначити ГПСЧ формально, потрібно вказати функцію шифрування e (h) з повним вихідним матеріалом, що відображає послідовність запитів подачі й прийняття. Вихід е (h) використовується в якості входу для функції губки.
На практиці ідея полягає в тому, щоб не викликати функцію губки з усією е (h) кожен раз, як отримуємо запит прийняття. Замість цього, конструкція використовує функцію губки каскадним чином, повторно використовуючи стан, як описано. Щоб дозволити повторне використання стану, функція губки е (h) повинна бути такою, що якщо h’ = h || fetch(l) || feed(σ), то p(e(h)) || 0r(⌈l/r⌉-1) — префікс e(h’).
Щоб зв'язати конструкцію з практичною реалізацією, необхідна конструкція з двома обмеженнями. Перше обмеження — обмеження на довжину запитів вихідного значення. Для фіксованого цілого k вимагається, щоб довжина вихідного матеріалу σв при будь-якому запиті подачі feed (σ) була така, що | p (σ) | = Kr. Іншими словами, після заповнення, вихідний матеріал покриває рівно k блоків по r біт. Друге обмеження в тому, що першим запитом повинен бути запит подачі.
Конструкція є конструкцією з урахуванням станів (stateful), якщо її стан складається з mε N біт, прийнятих з моменту останнього запиту подачі. При започаткування нового виконання функції губки, потрібно задати m = 0. Його позначено, як е рядок, відображення е (h) запитів, доданих до історії h.
- Якщо прийшов запит fetch (l): Виконання відтворює l вихідних бітів, «вичавлюючи» їх з функції губки. Формально е буде адаптована під час наступного запиту подачі.
Значення m змінено: m = m + l.
- Якщо прийшов запит feed (σ): Формально цей запит подачі викликає запит до функції губки з е в якості вхідних даних. Якщо це не перший запит, то е оновлено тільки до останнього запиту подачі. Таким чином, результати запитів отримання з моменту останнього запиту подачі повинні бути включені в е, як якщо б е раніше «вбиралася». Спочатку е стає рівною p (e), щоб імітувати заповнення при перемиканні на фазу «вичавлювання» після попереднього запиту подачі. Тоді ⌈m \ r⌉ -1 блоків по r нулів додаються до e для обліку додаткових викликів функції f на випадок повторних запитів подачі. Тепер m скидається: m = 0. (Це частина впливає тільки на ті — нічого не повинно змінитися у виконанні).
Потім «всотується» σ. Формально це виражається шляхом додавання σ до е.
Нарешті, виконання перемикає функцію губки на фазу «вичавлювання». Це означає, що «ввібрані» дані повинна бути заповнені й перестановка f застосована до стану. (Формально, це не змінює е, бо заповнення за визначенням виконується при перемиканні на фазу віджимання).
Обмеження на фіксований розмір запитів подачі не є обов'язковим і може бути видалене. Для забезпечення змінної довжини вихідного матеріалу й збереження повноти вихідного матеріалу, повинні бути введені деякі форми заповнення всередині функції шифрування, щоб переконатися, що кордони вихідного матеріалу можуть бути ідентифіковані. Крім того, доведеться додати спосіб відрізняти блоки з нульовим початковим матеріалом від нульових блоків. Це може бути зроблено, наприклад, постановкою 1 в кожен блок, що містить вихідний матеріал.
Обмеження першого запиту, що є запитом подачі, може бути видалено, бо не має сенсу генерувати псевдовипадкові біти без першої подачі вихідного матеріалу. Якщо перший запит — це прийняття, то виконання відразу заповнює (символом нового рядка) вхід, перемикає функції губки на фазу «вичавлювання» і виробляє вихідні біти за допомогою «вичавлювання». Формально в наступному запиті подачі, це повинно бути враховано в е привласненням е значення р (порожній рядок) ||0r([m=r]-1).
Реалізації алгоритму
Примітки
- Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche. Sponge Functions. Ecrypt Hash Workshop 2007.
- Хэш-функция Keccak и конструкция Sponge как универсальный криптопримитив
- Boutin, Chad (2 жовтня 2012). NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition. NIST. Процитовано 4 жовтня 2012.
Посилання
- Sponge Functions Ecrypt Hash Workshop 2007.
- Хэш-функция Keccak и конструкция Sponge как универсальный криптопримитив
- NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V kriptografiyi funkciya gubki angl sponge construction abo sponge function nalezhit do klasu algoritmiv iz kincevim vnutrishnim stanom na vhid yakogo nadhodit dvijkovij ryadok dovilnoyi dovzhini i yakij povertaye dvijkovij ryadok takozh dovilnoyi dovzhini f 0 1 n 0 1 Gubka ye uzagalnennyam yak gesh funkcij tak i potokovih i blochnij shifriv generatoriv psevdovipadkovih chisel sho mayut dovilnu dovzhinu vhidnih danih StrukturaGubka ce iterativna konstrukciya dlya stvorennya funkciyi z dovilnoyu dovzhinoyu na vhodi j dovilnoyi dovzhini na vihodi na osnovi peretvoren f Gubka maye vnutrishnij stan S z danimi fiksovanogo rozmiru b bit Pri comu dani rozdileni na 2 chastini persha S1 rozmiru r a druga S2 rozmiru c Znachennya r nazivayetsya bitovoyu shvidkistyu a znachennya z potuzhnistyu gt b r c Na fazi inicializaciyi blok danih rozmiru b zapovnyuyetsya nulyami a vhidni dani M rozbivayutsya na bloki rozmiru r Podalsha robota gubki provoditsya v 2 etapi U fazi vbirannya angl absorbing vikonuyetsya operaciya XOR chergovogo bloku vihidnogo povidomlennya z pershoyu chastinoyu stanu S1 rozmiru r bit reshta S2 stanu yemnistyu c zalishayetsya nedotorkanoyu Rezultat pomishayetsya v S1 a potim stan S obroblyayetsya funkciyeyu f bagatoraundovoyu bezklyuchovoyu psevdovipadkovoyu perestanovkoyu i tak povtoryuyetsya do vicherpannya blokiv vihidnogo povidomlennya U fazi vichavlyuvannya angl squeezing stan S podayetsya na funkciyu f pislya chogo chastina S1 podayetsya na vihid Ci diyi povtoryuyutsya poki ne bude otrimana poslidovnist potribnoyi dovzhini napriklad dovzhini gesha Ostanni biti c zalezhat vid vhidnih blokiv lishe oposeredkovano j ne vivodyatsya v hodi fazi vichavlyuvannya squeezing ZastosuvannyaGenerator psevdovipadkovih chisel osnovanij na funkciyi gubki Modelyuvannya GPVCh iz zminnimi vhidnimi danimi Viznachimo GPVCh iz zminnimi vihidnimi danimi yak ob yekt zi stanom yakij pidtrimuye dva tipi zapitiv v bud yakomu poryadku Zapit podachi feed s podaye pochatkove znachennya sho skladayetsya z neporozhnih ryadkiv s ϵ Z 2 displaystyle Z 2 v stan GPSCh Zapit prijnyattya fetch l doruchaye GPSCh povernuti l bit Todi vihidnij material angl seeding material sho podayetsya na vhid generatora ce konkatenaciya s otrimanih u vsih zapitah podachi Neformalno vimogi do GPVCh iz zminnimi vihidnimi danimi mozhut buti viznacheni nastupnim chinom Po pershe jogo vihid tobto vidpovidi na zapiti podachi povinen zalezhati vid usih vihidnih materialiv Po druge dlya zlovmisnika yakij znaye vihidnij material ale sposterigav chastinu vivedennya maye buti nemozhlivim zrobiti visnovok pro reshtu vihodu Viznacheno idealnu GPVCh konstrukciyu yaka vikoristovuye vipadkovij orakul Taku konstrukciyu mozhna opisati nastupnim chinom Vona zberigaye yak stan poslidovnist vsih zapitiv podachi j prijnyattya yaki vona otrimala skladayuchi istoriyu h Pri otrimanni zapitu podachi feed s vona onovlyuye istoriyu pidklyuchennyam cogo zapitu Pri otrimanni zapitu prijnyattya fetch l vona podaye vipadkovomu orakulu ryadok yakij svoyeyu chergoyu shifruye istoriyu ryadkom i povertaye biti vid z do z l 1 svoyeyi vidpovidi de z chislo zapituvanih bit v zapiti podachi Otzhe konkatenaciya vidpovidej na zapiti podachi lishe vidpovid vipadkovogo orakula na odnorazovij zapit Taku konstrukciyu mozhna nazvati rezhimom yakij zberigaye istoriyu z funkciyeyu shifruvannya e h Viznachennya rezhimu iz zberezhennyam istoriyi otzhe shoditsya do viznachennya ciyeyi funkciyi shifruvannya Tak yak vihid GPVCh povinen zalezhati vid vsogo otrimanogo vihidnogo materialu funkciya e h yaka shifruyetsya povinna buti in yektinoyu iz vihidnim materialom Inshimi slovami dlya bud yakih dvoh poslidovnostej zapitiv z riznim vihidnim materialom dva vidobrazhennya e h povinni buti rizni Ce yavishe nazivayetsya povnotoyu vihidnogo materialu angl seed completeness U funkciyi shifruvannya z povnim vihidnim materialom na zapit prijnyattya budut vidani rizni vidpovidi na rizni vhidni ryadki Zvidsi viplivaye sho GPVCh povertaye nezalezhni biti Takim chinom proponuyetsya nastupne viznachennya idealnogo GPVCh iz zminnimi vhidnimi danimi Idealnij GPVCh iz zminnimi vhidnimi danimi ce rezhim yakij zberigaye istoriyu nazivayetsya vipadkovim orakulom z funkciyeyu shifruvannya e h z povnim vihidnim materialom Stvorennya GPVCh z vikoristannyam funkciyi gubki Prirodno bude vklyuchenij zapit podachi v fazu vbirannya a zapit prijnyattya v fazu vichavlyuvannya Odnak vikonannya funkciyi gubki maye tilki odnu fazu vbirannya odin vhid za yakoyu sliduye odna faza vichavlyuvannya tobto odin vihid dovilnoyi dovzhini i vona ne mozhe buti vikoristana dlya virobnictva bagatorazovih faz Ci trudnoshi mozhna obijti Dosit vvazhati sho kozhen raz yak psevdovipadkovi biti prijnyati inshe vikonannya funkciyi gubki zapituyetsya z inshim vhodom Pri pobudovi funkciyi gubki vhidne povidomlennya m ϵ Z 2 displaystyle Z 2 maye buti podileno na bloki z r bitiv i zapovnene Funkciya yaka robit ce poznachayetsya tak p m funkciyu pripuskayetsya sho cya funkciya dodaye tilki biti pislya m Yaksho ye potreba povtorno vikoristovuvati stan gubki dlya yakoyi vhidnim ryadkom bulo povidomlennya m1 i dlya yakoyi vihidni biti buli vichavleni pri l gt 0 to stan funkciyi gubki v cij tochci takij yaksho b chastkove povidomlennya m 1 r m1 0r l r 1 bulo vpitano Nulovi bloki skladayut dodatkovi iteraciyi cherez fazi stisnennya Perezapusk gubki z ciyeyi tochki oznachaye sho vhidnim bude povidomlennya m2 dlya yakogo m 1 ye prefiksnim Shob viznachiti GPSCh formalno potribno vkazati funkciyu shifruvannya e h z povnim vihidnim materialom sho vidobrazhaye poslidovnist zapitiv podachi j prijnyattya Vihid e h vikoristovuyetsya v yakosti vhodu dlya funkciyi gubki Na praktici ideya polyagaye v tomu shob ne viklikati funkciyu gubki z usiyeyu e h kozhen raz yak otrimuyemo zapit prijnyattya Zamist cogo konstrukciya vikoristovuye funkciyu gubki kaskadnim chinom povtorno vikoristovuyuchi stan yak opisano Shob dozvoliti povtorne vikoristannya stanu funkciya gubki e h povinna buti takoyu sho yaksho h h fetch l feed s to p e h 0r l r 1 prefiks e h Shob zv yazati konstrukciyu z praktichnoyu realizaciyeyu neobhidna konstrukciya z dvoma obmezhennyami Pershe obmezhennya obmezhennya na dovzhinu zapitiv vihidnogo znachennya Dlya fiksovanogo cilogo k vimagayetsya shob dovzhina vihidnogo materialu sv pri bud yakomu zapiti podachi feed s bula taka sho p s Kr Inshimi slovami pislya zapovnennya vihidnij material pokrivaye rivno k blokiv po r bit Druge obmezhennya v tomu sho pershim zapitom povinen buti zapit podachi Konstrukciya ye konstrukciyeyu z urahuvannyam staniv stateful yaksho yiyi stan skladayetsya z me N bit prijnyatih z momentu ostannogo zapitu podachi Pri zapochatkuvannya novogo vikonannya funkciyi gubki potribno zadati m 0 Jogo poznacheno yak e ryadok vidobrazhennya e h zapitiv dodanih do istoriyi h Yaksho prijshov zapit fetch l Vikonannya vidtvoryuye l vihidnih bitiv vichavlyuyuchi yih z funkciyi gubki Formalno e bude adaptovana pid chas nastupnogo zapitu podachi Znachennya m zmineno m m l Yaksho prijshov zapit feed s Formalno cej zapit podachi viklikaye zapit do funkciyi gubki z e v yakosti vhidnih danih Yaksho ce ne pershij zapit to e onovleno tilki do ostannogo zapitu podachi Takim chinom rezultati zapitiv otrimannya z momentu ostannogo zapitu podachi povinni buti vklyucheni v e yak yaksho b e ranishe vbiralasya Spochatku e staye rivnoyu p e shob imituvati zapovnennya pri peremikanni na fazu vichavlyuvannya pislya poperednogo zapitu podachi Todi m r 1 blokiv po r nuliv dodayutsya do e dlya obliku dodatkovih viklikiv funkciyi f na vipadok povtornih zapitiv podachi Teper m skidayetsya m 0 Ce chastina vplivaye tilki na ti nichogo ne povinno zminitisya u vikonanni Potim vsotuyetsya s Formalno ce virazhayetsya shlyahom dodavannya s do e Nareshti vikonannya peremikaye funkciyu gubki na fazu vichavlyuvannya Ce oznachaye sho vvibrani dani povinna buti zapovneni j perestanovka f zastosovana do stanu Formalno ce ne zminyuye e bo zapovnennya za viznachennyam vikonuyetsya pri peremikanni na fazu vidzhimannya Obmezhennya na fiksovanij rozmir zapitiv podachi ne ye obov yazkovim i mozhe buti vidalene Dlya zabezpechennya zminnoyi dovzhini vihidnogo materialu j zberezhennya povnoti vihidnogo materialu povinni buti vvedeni deyaki formi zapovnennya vseredini funkciyi shifruvannya shob perekonatisya sho kordoni vihidnogo materialu mozhut buti identifikovani Krim togo dovedetsya dodati sposib vidriznyati bloki z nulovim pochatkovim materialom vid nulovih blokiv Ce mozhe buti zrobleno napriklad postanovkoyu 1 v kozhen blok sho mistit vihidnij material Obmezhennya pershogo zapitu sho ye zapitom podachi mozhe buti vidaleno bo ne maye sensu generuvati psevdovipadkovi biti bez pershoyi podachi vihidnogo materialu Yaksho pershij zapit ce prijnyattya to vikonannya vidrazu zapovnyuye simvolom novogo ryadka vhid peremikaye funkciyi gubki na fazu vichavlyuvannya i viroblyaye vihidni biti za dopomogoyu vichavlyuvannya Formalno v nastupnomu zapiti podachi ce povinno buti vrahovano v e privlasnennyam e znachennya r porozhnij ryadok 0r m r 1 Realizaciyi algoritmuKeccakPrimitkiGuido Bertoni Joan Daemen Michael Peeters and Gilles Van Assche Sponge Functions Ecrypt Hash Workshop 2007 Hesh funkciya Keccak i konstrukciya Sponge kak universalnyj kriptoprimitiv Boutin Chad 2 zhovtnya 2012 NIST Selects Winner of Secure Hash Algorithm SHA 3 Competition NIST Procitovano 4 zhovtnya 2012 PosilannyaSponge Functions Ecrypt Hash Workshop 2007 Hesh funkciya Keccak i konstrukciya Sponge kak universalnyj kriptoprimitiv NIST Selects Winner of Secure Hash Algorithm SHA 3 Competition