F-FCSR er en familie af strømcifre baseret på brugen af et carry feedback shift register (FCSR) med et lineært filter ved udgangen. Idéen til chifferen blev foreslået af Terry Berger, François Arnault og Cédric Larade. F-FCSR blev indsendt til eSTREAM- konkurrencen , blev inkluderet på listen over vindere af konkurrencen i april 2008, men senere blev en kryptografisk svaghed afsløret, og i september 2008 blev F-FCSR udelukket fra eSTREAM-listen.
Ideen om at bruge et carry feedback shift register (FCSR) til at skabe et streamingfilter blev først foreslået af Clapper og Goreski i 1994 [1] . Senere udviklede de en algoritme til sådan en chiffer [1] . Én FCSR uden tilslutning af en linjekomponent kan ikke bruges som stream-chiffer, da den let dekrypteres.
I 2002 blev en selvsynkroniserende stream-chiffer baseret på den kombinerede brug af FCSR og LFSR [2] foreslået . Det blev senere udsat for et krypteringsvalgsangreb [3] .
I 2005 foreslog Arnaud og Berger ideen om at bruge FCSR og et lineært filter sammen for at skabe en stream-chiffer, som blev kaldt F-FCSR (Filtered FCSR) [4] . Senere foreslog de 4 algoritmer, der implementerer denne idé: F-FCSR-SF1, F-FCSR-SF, F-FCSR-DF1 og F-FCSR-DF8 [5] . De første to brugte statiske filtre, de sidste to brugte nøglespecifikke filtre. Senere blev svagheden af alle disse algoritmer mod forskellige typer angreb afsløret [6] .
I 2005 indsendte Terry Berger, François Arnol og Cédric Laradoud to F-FCSR [7] -baserede cifre til eSTREAM-konkurrencen: F-FCSR-H for hardware og F-FCSR-8 for software. Som et resultat af efterfølgende test blev der fundet sårbarheder i de indledende versioner af F-FCSR-H og F-FCSR-8 [8] , som senere blev rettet i versionerne F-FCSR-H v.2 og F-FCSR-16 [9] . En forbedret version af F-FCSR-H v.2 blev finalist til eSTREAM [10] . Men efter opdagelsen af sårbarheden [11] blev den udelukket fra eSTREAM-porteføljen (rev.1) [12] .
Navn | Hovedregisterlængde _ |
Initialisering | Filter | Antal bits ved filterudgangen |
---|---|---|---|---|
F-FCSR-8 | 128 | 64/128 cyklusser (afhængig af IV) |
Afhænger af nøglen | otte |
F-FCSR-H | 160 | 160 barer | Statisk | otte |
F-FCSR-8.2 | 256 | 258 barer | Afhænger af nøglen | 16 |
F-FCSR-16 | 256 | 16 + 258 takter | Statisk | 16 |
F-FCSR-H v.2 | 160 | 20 + 162 barer | Statisk | otte |
FCSR er implementeret i to konfigurationer: Galois og Fibbonacci. F-FCSR bruger Galois-konfigurationen, fordi den er mere effektiv. Følgende notation introduceres:
Hvis (m, c) er FCSR-tilstanden på tidspunktet t 0 , , , så er den binære repræsentation af p/q, hvor p = m + 2c.
FCSR eksempelq = -347, d = 174 = (10101110) 2 , n = 8, l = 4.
Outputfiltreringsfunktionen er defineret af masken ( ) En outputbit er defineret som følger:
I betragtning af svagheden af tidligere F-FCSR-versioner på grund af svag initial bitblanding i hovedregistret, er initialiseringsproceduren i F-FCSR-H v.2 og F-FCSR-16 som følger:
Oprindeligt fundne sårbarheder i F-FCSR-8 og F-FCSR-H forbundet med et lille antal cyklusser under initialisering blev rettet i F-FCSR-16 og F-FCSR-H v.2. I 2008 beskrev og udførte Martin Hell og Thomas Joansson et angreb på F-FCSR, der kunne afsløre FCSRs tilstand.
Filtreringsfunktionen er lineær, så F-FCSR's kryptografiske styrke bestemmes af ikke-lineariteten af FCSR, som opstår på grund af tilstedeværelsen af carry-registret, så systemet skal lineariseres ved at maksimere antallet af nuller i carry Tilmeld. Overvej en situation, hvor tilstanden for transportregistret i 20 cyklusser vil være som følger:
C(t) = C(t + 1)= … = C(t + 19) = (Сl -1 , …, С 0 ) = (0, 0, . . . , 0, 1) (*)
Hvis tilbagekoblingsbitten er 0, forbliver bits i bæreregisteret, der er 0, 0, og dem, der er 1, bliver 0 med sandsynlighed 1/2. For at (*) skal opstå, kræves der omtrent på hinanden følgende nuller i feedbackbitten. .
Ved antagelse (*) afhænger hovedregistrets tilstande M(t + 1), …, M(t + 19) lineært af M(t) , og vi kender denne afhængighed.
Lad os betegne outputbytes z(t), z(t + 1), …, z(t + 19) .
Lad os udtrykke z(t), z(t + 1), … , z(t + 19) i form af bitværdierne i hovedregisteret på tidspunktet t: M(t) = (m 0 … m 159 ) .
Vi får 20 ligninger med 20 ubekendte , hvor :
…
På samme måde får vi ligningssystemer afhængig af , hvor osv. I alt 8 systemer med 20 ligninger med 20 ubekendte.
Vi bruger følgende notation: , ,
… .
Lad os betegne vektoren
Så kan systemerne skrives på formen , hvor er en kendt matrix bestemt af filtreringsfunktionen. Algoritmen til at finde hovedregisterets tilstand under forudsætningen (*) kan beskrives som følger:
Ovenstående angreb kræver 226 bytes chiffertekst . Det er muligt at forbedre angrebet, hvilket kræver 2 24,3 bytes. Et lignende angreb kunne anvendes på F-FCSR-16.
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |