Skifteregister med carry shift register ( FCSR ) er et shift register af bitord , en aritmetisk analog til et lineært feedback skifteregister , adskiller sig fra det ved tilstedeværelsen af et carry register. Det bruges til at generere pseudo-tilfældige bitsekvenser og blev også brugt til at oprette F-FCSR- strømchifferet .
I 1994 blev skiftregistret med carry feedback opfundet af Goresky og Klapper Ecuyer L'og)Coutureengelsk(Couture,ZamanogMarsagliaafuafhængigt, samt engelsk L'Ecuyer ). Desuden ønskede Clapper og Goresky at bruge det til krypteringsanalyse af summeringsgeneratoren. På den anden side sigtede Marsaglia, Zaman, Couture, L'Ecuer efter at finde en god tilfældig talgenerator til at løse problemer, såsom at bruge quasi-Monte Carlo-metoden . [en]
FCSR har et skifteregister, en feedbackfunktion og et bæreregister. Længden af skifteregisteret er antallet af bits. Når en bit skal udtrækkes, forskydes alle bits i skifteregisteret én position til højre. [2]
I stedet for at XORinge alle bits i tapsekvensen, tilføjes disse bit til hinanden og til indholdet af bæreregisteret. Resultatet bliver et nyt beat. Resultatet divideret med bliver det nye indhold i carry-registret. [3]
— værdien af transportregistret
— ny tilstand i registret
— ny værdi af transportregistret
Overvej et eksempel på et 3-bit register med tryk i første og anden position. Lad dens begyndelsesværdi være , og det indledende indhold af bæreregisteret være lig med . Udgangen vil være den yderste højre bit af skifteregisteret . Yderligere tilstande i registret er vist i tabellen nedenfor:
Trinnummer | skifteregister | Medbring register |
---|---|---|
0 | 0 | |
en | 0 | |
2 | 0 | |
3 | 0 | |
fire | 0 | |
5 | 0 | |
6 | en | |
7 | en | |
otte | en | |
9 | en | |
ti | en | |
elleve | 0 |
Den endelige interne tilstand (inklusive indholdet af bæreregisteret) er den samme som den anden interne tilstand. Fra dette øjeblik gentages sekvensen cyklisk med en periode lig med . Det er også værd at nævne, at bæreregistret ikke er en smule , men et tal. Dens størrelse skal være mindst , hvor er antallet af grene. I eksemplet er der kun tre grene, så bæreregisteret er en-bit. Hvis der var fire grene, ville bæreregisteret bestå af to bit og kunne antage værdierne eller . [3]
I modsætning til LFSR er der en forsinkelse for FCSR, før den går ind i den cykliske tilstand, det vil sige, den begynder at generere en cyklisk gentagelsessekvens. Afhængigt af den valgte starttilstand er 4 forskellige tilfælde mulige: [3]
Empirisk kan du kontrollere, hvordan en bestemt begyndelsestilstand ender. Skal køre FCSR i et stykke tid. (Hvis er den oprindelige mængde hukommelse og er antallet af grene, så er cyklusser tilstrækkelige.) Hvis outputstrømmen degenererer til en uendelig sekvens af nuller og ener pr. bit, hvor er længden af FCSR, så bør denne starttilstand ikke blive brugt. [3]
Det er også værd at bemærke, at et sæt FCSR -baserede generatornøgler vil være svage, da FCSR'ens begyndelsestilstand svarer til strømchifferens nøgle. [3]
Den maksimale FCSR-periode er, hvor er et helt tal for forbindelsen. Dette tal definerer grene og er defineret som:
- skal være et primtal, hvor 2 er en primitiv rod . [3] [1]
Ligesom LFSR-analyse er baseret på tilføjelse af primitive mod 2-polynomier, er FCSR-analyse baseret på tilføjelse af tal, kaldet 2-adic . I en verden af 2-adiske numre er der analoger til alt. På samme måde som lineær kompleksitet er defineret, kan 2-adisk kompleksitet også defineres. Der er også en 2-adic-analog til Berlekamp-Massey-algoritmen . Det betyder, at antallet af mulige stream-cifre er mindst fordoblet. Alt, hvad der kan gøres med LFSR, kan gøres med FCSR. [3]
Galois-konfigurationen består af:
På tidspunktet t ændres tilstanden som følger:
1. , for alle , med og og hvor repræsenterer feedback-bitten.
2. Status opdateres: , for alle og , for alle . [4] [5]
Fibonacci-konfigurationen består af:
Staten ændrer sig som følger:
1 .;
2. opdateringstilstand: , . [4] [5]
Hovedartikel: Stop-go-generator
Den bruger tre skifteregistre af forskellig længde. Her styrer Register-1 klokfrekvensen for 2. og 3. register, det vil sige, Register-2 ændrer sin tilstand, når output fra Register-1 er lig med én, og Register-3 - når output fra Register-1 er lig med nul. [3]
Disse registre bruger FCSR'er i stedet for nogle LFSR'er, og XOR-operationen kan erstattes med en carry-add.
Hovedartikel: Gollmann Cascade
Dette kredsløb er en forbedret version af stop-go generatoren. Den består af en sekvens af registre, hvor clocking af hver af dem styres af det foregående register. Hvis udgangen af Register-1 på det tidspunkt er 1, klokkes register-2. Hvis outputtet af Register-2 på tidspunktet er 1, bliver Register-3 klokket, og så videre. Udgangen af det sidste register er udgangen af generatoren. [3]
Der er to måder at bruge FCSR i kaskadeoscillatorer:
Disse generatorer bruger et variabelt antal FCSR'er og/eller LFSR'er og en række funktioner, der kombinerer registre. XOR-operationen ødelægger FCSR'ens algebraiske egenskaber, så det giver mening at bruge denne operation til at kombinere dem. [3]
Skifteregistre med carry-feedback kan tjene som grundlag for at skabe forskellige generatorer (hvoraf nogle er beskrevet ovenfor), samt forskellige stream-cifre.
Hovedartikel: F-FCSR .
F-FCSR er en familie af strømcifre baseret på brugen af et carry feedback shift register (FCSR) med et lineært outputfilter. 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 afnoteret fra eSTREAM.