BEAN este un algoritm simetric de criptare a fluxului sincron bazat pe algoritmul Grain . Este un reprezentant al așa-numitelor cifruri „ușoare”, adică se concentrează pe implementarea hardware în interiorul dispozitivelor cu putere de calcul limitată, memorie redusă și consum redus de energie (de exemplu, etichete RFID sau rețele de senzori ). A fost propus în 2009 de Navi Kumar , Srikanta Oiha , Kritika Jain și Sangita Lal [1] .
În algoritmii de streaming simetric , criptarea (sau decriptarea) are loc prin gamma , adică „suprapunerea” unei secvențe aleatorii de biți (gamma) pe textul simplu (sau, respectiv, ciphertext). „Suprapunere” se referă la operația XOR pe biții gamma și text. Secvența de joc, numită și keystream (key stream), este obținută folosind generatoare de numere pseudoaleatoare [2] .
La fel ca Grain , BEAN constă din două registre de deplasare de 80 de biți și o funcție de ieșire. Dar în timp ce Grain folosește un registru de feedback liniar (LFSR) și un registru de funcție de feedback neliniar (NFSR), BEAN folosește două registre de deplasare cu feedback de transport (FCSR) [3] . LFSR este utilizat în Grain pentru perioada mai mare a secvenței și NFSR pentru neliniaritate. FCSR în BEAN combină ambele aceste proprietăți, rămânând la fel de compact la nivel hardware [4] .
În ambele registre, următorul bit care trebuie scris este egal cu suma modulo 2 a tuturor accesărilor celulelor registrului. O astfel de implementare se numește configurație Fibonacci . În timp ce în Grain, registrele sunt implementate conform configurației Galois , adică ultimul 79 de bit este scris neschimbat pe locul 0, iar suma modulo 2 a celei de-a 79-a celulă anterioară este scrisă în fiecare următor. celula [5] .
Ambele registre au o lungime de 80 de biți. Să le desemnăm ca FCSR-I și FCSR-II, iar stările lor pe ciclul --lea ca și respectiv [6] :
FCSR-I
Funcția de feedback FCSR-I este dată de un polinom primitiv de gradul 80 [7] :
adică actualizarea stării FCSR-I în ciclul următor arată astfel [6] :
FCSR II
În mod similar pentru FCSR-II, funcția de feedback [8] este:
Actualizare de stat [6] :
Funcția booleană este utilizată pentru a genera gama . Autorii algoritmului îl setează folosind o cutie S care ia 6 biți ca intrare (2 biți definesc un rând și 4 biți definesc o coloană) și returnează un cuvânt de 4 biți [9] . Dar, deoarece numai ultimul bit este luat din cuvânt, acesta poate fi reprezentat ca un polinom Zhegalkin [6] :
Biții gamma se găsesc după cum urmează [10] :
Astfel, doi biți sunt generați simultan într-un ciclu.
Inițializarea are loc prin încărcarea unei chei de 80 de biți în registrele FCSR-I și FCSR-II:
Registrele de transport sunt inițializate la zero: .
Apoi FCSR face 81 de cicluri inactiv, după care începe generarea gamma [11] .
BEAN atinge un echilibru bun între securitate, viteză și costul implementării. Grain poate genera doi biți gamma pe ceas folosind hardware suplimentar. În timp ce BEAN face față acestei sarcini fără echipamente suplimentare [12] .
Potrivit autorilor algoritmului [13] , generarea de biți folosind BEAN este în medie de 1,5 ori mai rapidă decât folosind Grain, iar memoria consumată este redusă cu 10%.
Un obiectiv important în dezvoltarea unui algoritm criptografic este acela de a obține un efect de avalanșă , adică atunci când un bit al cheii (text simplu) se schimbă, cel puțin jumătate din biții gama (text cifrat) se vor schimba. Pentru a compara BEAN și Grain, s-au luat 1.000.000 de chei aleatoare de 80 de biți și au fost generați 80 de biți de gamma pentru fiecare cheie folosind ambii algoritmi. Potrivit autorilor, în BEAN pentru 65,3% din chei, biții recepționați îndeplinesc condițiile efectului de avalanșă, în timp ce în Grain această pondere este de 63,1% [11] .
Algoritmul a fost testat și pe teste statistice NIST , care nu au arătat o abatere a fluxului de chei generat de la o secvență aleatorie [14] .
În 2011, Martin Agren și Martin Hell în articolul lor au subliniat neoptimalitatea funcției de inferență. Ei au propus un algoritm discriminator eficient pentru BEAN, precum și un algoritm de atac de recuperare cheie , care este ceva mai rapid decât căutarea exhaustivă ( comparativ cu căutarea exhaustivă în algoritmul propus ) și nu necesită multă memorie [15] .
În 2013, aceiași autori, în colaborare cu Hui Wong și Thomas Johansson, au descoperit noi corelații între biții cheie și biții gamma, conducând la un algoritm și mai eficient de atac de recuperare a cheii ( ). În plus, au fost propuse unele îmbunătățiri ale FCSR, precum și funcții de inferență mai eficiente care sunt rezistente la metodele de atac cunoscute [16] .
La fel ca mulți algoritmi de criptare „ușoare”, BEAN își poate găsi aplicația în etichetele RFID , rețelele de senzori fără fir , precum și în sistemele încorporate [17] .