The Obilí 128aproudová šifra byl poprvé určen na Symmetric Key Encryption Workshop (SKEW) v roce 2011[1] jako vylepšení předchůdce Grain 128, který přidal vylepšení zabezpečení a volitelné ověřování zpráv pomocí přístupu Encrypt & MAC. Jednou z důležitých vlastností Rodina obilí je, že propustnost může být zvýšena na úkor dalšího hardwaru. Grain 128a navrhl Martin Ågren,[1] Martin Hell, Thomas Johansson a Willi Meier.
Grain 128a se skládá ze dvou velkých částí: předvýstupní funkce a MAC. Funkce předvýstupu má vnitřní stav o velikosti 256 bitů, skládající se ze dvou registrů o velikosti 128 bitů: NLFSR a LFSR. MAC podporuje proměnné délky tagů w takové, že . Šifra používá 128bitový klíč.
Šifra podporuje dva režimy provozu: s autentizací nebo bez autentizace, která se konfiguruje pomocí dodávaného takové, že pokud pak je ověřování zprávy povoleno, a pokud ověřování zprávy je zakázáno.
Funkce před výstupem
Funkce předvýstupu se skládá ze dvou registrů o velikosti 128 bitů: NLFSR () a LFSR () spolu se 2 zpětnovazebními polynomy a a booleovská funkce .
Kromě zpětnovazebních polynomů funkce aktualizace pro NLFSR a LFSR jsou:
Předvýstupní proud () je definován jako:
Inicializace
Schéma ukazující postup spouštění předvýstupu, který přivádí předvýstupní proud zpět do funkcí a
Po inicializaci definujeme 96 bitů, kde určuje provozní režim.
Poslední 0 bit zajišťuje, že podobné páry klíč-IV ne vyrábět navzájem posunuté verze.
The NLFSR se inicializuje zkopírováním celého 128bitového klíče () do NLFSR:
pro
Spusťte stopování
Než může předvýstupní funkce začít vysílat svůj předvýstupní proud, je nutné jej zahřát 256krát, během této fáze se předvýstupní proud přivádí do zpětnovazebních polynomů a .
Klíčový stream
Klíčový proud () a funkce MAC v Grain 128a sdílejí stejný předvýstupní proud (). Protože ověřování je volitelné, naše definice streamu klíče závisí na .
Když je povoleno ověřování, funkce MAC používá první bity (kde je velikost značky) po inicializaci stopování po spuštění. Klíčový tok je poté přiřazen každý druhý bit kvůli sdílenému předvýstupnímu proudu.
Pokud je povoleno ověřování:
Pokud je ověřování zakázáno:
MAC
Pohled na zrno 128a
Grain 128a podporuje značky velikosti až 32 bitů, k tomu 2 registry velikosti je použit posuvný registr () a an akumulátor (). Vytvoření značky zprávy kde je délka jak musíme nastavit zajistit, aby a má různé značky a také znemožňuje generování značky, která po inicializaci zcela ignoruje vstup z posuvného registru.
Pro každý bit v akumulátoru jsme v čase trochu odsuzujeme v akumulátoru jako .
Inicializace
Pokud je povoleno ověřování, použije zrno 128a první bity předvýstupního proudu () pro inicializaci posuvného registru a akumulátoru. To se provádí pomocí:
Posuvný registr:
pro
Akumulátor:
pro
Generování značek
Posuvný registr:
Posuvný registr je napájen všemi lichými bity předvýstupního proudu ():
Akumulátor:
pro
Závěrečná značka
Když šifra dokončí L iterace, výsledná značka () je obsah akumulátoru: