CZ294898B6 - Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) - Google Patents
Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) Download PDFInfo
- Publication number
- CZ294898B6 CZ294898B6 CZ20024116A CZ20024116A CZ294898B6 CZ 294898 B6 CZ294898 B6 CZ 294898B6 CZ 20024116 A CZ20024116 A CZ 20024116A CZ 20024116 A CZ20024116 A CZ 20024116A CZ 294898 B6 CZ294898 B6 CZ 294898B6
- Authority
- CZ
- Czechia
- Prior art keywords
- register
- registers
- counter
- contents
- values
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/721—Modular inversion, reciprocal or quotient calculation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
Abstract
Podstata vynálezu spočívá ve vytvoření zapojení pro efektivní generování multiplikativní inverze nad konečným tělesem GF(p), kde p je prvočíslo, tj. generováním modulární inverze. Zapojení je upraveno pro binární vykonávání operací v procesu generování modulární inverze, a to vzhledem k co nejmenšímu počtu operací sčítání, odečítání a posuvu. Postup realizovaný navrženým zapojením odstraňuje redundantní operace pro konverzi lichých a záporných hodnot, které jsou prováděny u dosavadních postupů. K tomu se využívá reprezentace záporných čísel v doplňkovém kódu, posun hodnot doleva v řídicí části rozšířeného Euklidova algoritmu a nová definice hlídacích a řídicích podmínek provádění postupu. Minimalizování počtu operací sčítání a odečítání je žádoucí v případě počítání s velkými čísly, která se vyskytují v kryptografii.ŕ
Description
Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p)
Oblast techniky
Vynález se týká zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p), kde p je prvočíslo, odvozené z rozšířeného Euklidova algoritmu pro výpočet největšího společného dělitele. Vynález má význam ve kryptografických výpočtech, zejména v kryptografíckých hardwarových aplikacích a embedded systémech, např. SMART kartách.
Dosavadní stav techniky
Základní aritmické operace modulární aritmetiky, tj. sčítání, odečítání, násobení a modulární inverze, kde modul je prvočíslo, jsou přirozenou a neoddělitelnou součástí kryptografíckých algoritmů jako například šifrovací operace vRSA algoritmech, kryptografíckých algoritmů požadovaných v US Govemment Digital Signatuře Standard (NIST) a taktéž v současnosti často používané kryptografii využívající eliptických křivek.
Multiplikativní inverze nad konečným tělesem GF(p), kde p je prvočíslo, má zvláště důležitý význam ve výpočtech operací sbody na eliptických křivkách definovaných nad konečným tělesem GF(p) a při akceleraci exponenciálních operací.
Multiplikativní inverze nad konečným tělesem GF(p), tj. modulární inverze celého čísla q z <1, p-l> modulo p, kde p je prvočíslo, je definována jako celé číslo b z <1, p -1> takové, že platí q.b a 1 (mod p), často zapisované jako b = q'1 mod p. Nejpoužívanější přístupy pro generování modulární inverze je jednak tzv. klasická inverze podle Knutha a lze ji najít v publikaci D. E. Knuth: „The Art of Computer Programming 2, Seminumerical Algorithms, Addison-Wesley, Reading, Mass. Third edition (1998)“ a jednak způsob generování modulární inverze založený na tzv. Montgomeryho modulární inverzi, který lze najít v publikaci B. S. Kaliski Jr.: „The Montgomery Inverze and Its Application. IEEE Transaction on Computers 44 No. 8 (1995)“. Oba tyto přístupy vycházejí z rozšířeného Euklidova algoritmu. Využívají binárních operací sčítání, odečítání a dělení respektive násobení dvěma, přičemž operace dělení dvěma respektive násobení dvěma je operací posunu o jedno místo doprava respektive doleva pro binární reprezentaci dělence respektive činitele. Tyto vlastnosti u obou přístupů umožňují jejich snadnou hardwarovou implementaci.
Při generování tzv. klasické modulární inverze se průběžně podle algoritmu provádí půlení hodnot jejich posunem vpravo, a to jak sudých, tak lichých. Tato operace se provádí tak, že v případě liché hodnoty je tato hodnota nejdříve převedena na sudou přičtením hodnoty modulu p, která je prvočíselná a tudíž lichá a následně je proveden posun vpravo. Pokud se vyskytne v průběhu generování záporná hodnota v důsledku odečítání, je převedena na kladnou přičtením hodnoty p, což představuje operaci převodu záporného čísla na kladné modul p.
V případě generování modulární inverze s použitím Montgomeryho algoritmu je půlení, tj. dělení dvěma v průběhu vykonávání Euklidova algoritmu odložené do druhé fáze algoritmu. V této druhé fázi jsou vykonávána půlení modulo p, a to tak, že liché hodnoty jsou opět nejdříve převedeny na sudé přičtením hodnoty p.
Výše uvedené způsoby generování modulární inverze vykazují některé nevýhody. V případě tzv. klasického generování je to hlavně velký počet testů typů „větší/menší než“, které v podstatě představují operaci odečítání. V případě záporných hodnot je prováděn jejich převod na kladné hodnoty a v případě výskytu lichých hodnot v procesu působení je prováděn jejich převod na sudé hodnoty. Obě operace představují opět operaci sčítání.
-1 CZ 294898 B6
V případě generování modulární inverze s využitím Montgomeryho metody jsou nevýhodami redundantní operace posuvu ve druhé fázi generování, operace sčítání v případě převodu lichých čísel na suché při vykonávání odloženého půlení ve druhé fázi generování a velký počet testů typů „větší/menší než“ představujících operaci odečítání.
Podstata vynálezu
Výše uvedené nedostatky odstraňuje zapojení pro generování multiplikativní inverze b = q’1 mod p nad konečným tělesem GP(p) podle předkládaného vynález, kde (p) je prvočíslo větší než (q) kde (q) je celé kladné číslo větší nezjedná.
Podstatou předkládaného vynálezu je, že zapojení sestává z řídicí a výpočetní jednotky, která je propojena s prvním až pátým n-bitovým registrem pro datovou a řídicí sběrnici, která současně tyto registry propojuje navzájem. Dále je řídicí a výpočetní jednotka propojena druhou řídicí datovou sběrnici s prvním e-bitovým čítačem a s druhým e-bitovým čítačem, kde e = [log2n] a kde pro počet bitů n platí, že 2n l > p. Dále platí, že n-bitové hodnoty proměnných obsažené v prvním až pátém registru v celém průběhu generování multiplikativní inverze jsou reprezentované v doplňkovém kódu a nejméně významový bit LSB je v nich umístěn při inicializaci úplně vpravo. Inicializační počáteční stavy prvního až pátého registru vyvolané pomocí příslušných proměnných (p) a (q) jsou nastaveny tak, že inicializační počáteční stav prvního registru je nastaven na hodnotu (p), druhého registru na hodnotu (q), třetího registru na hodnotu 0, čtvrtého registru na hodnotu 1 a pátého registru na hodnotu p. Inicializační stavy prvního a druhého čítače jsou nastaveny na hodnotu 0, přičemž první a druhý registr jsou upraveny jen pro posun doleva se zabezpečením proti přetečení jejich obsahu při posuvu. Při každém jejich posunu vlevo po inicializaci jsou první a druhý čítač upraveny pro inkrementování a srovnávání jejích obsahů, a to tak, že počet posunů vlevo obsahů prvního respektive druhého registru je obsažený v prvním respektive ve druhém čítači. Třetí registr je upraven pro současný posuv doleva s prvním registrem pro případ, kdy je hodnota obsažená v prvním čítači větší nebo rovná hodnotě obsažená ve druhém čítači. Pro ostatní případy hodnot těchto čítačů je při posunu prvního registru doleva upraven čtvrtý registr pro posun doprava. Zároveň na tento čtvrtý registr upraven pro současný posuv doleva s druhým registrem v případě, že hodnota obsažená v druhém čítači je větší nebo rovná než hodnota obsažená v prvním čítači. Pro ostatní případy hodnot těchto čítačů je při posunu druhého registru doleva upraven třetí registr pro posun doprava. Řídicí a výpočetní jednotka je v případě zastavení posuvu obsahů prvního a druhého registru doleva v důsledku zamezení přetečení těchto obsahů upravena při dosažení stejného významnějšího bitu prvního a druhého registru pro provedení odečtení obsahů prvního a druhého registru a třetího a čtvrtého registru a při dosažení různého nejvýznamnějšího bitu prvního a druhého registruje upravena pro provedení sčítání těchto obsahů, a to vždy tak, že prvním zdrojovým a zároveň cílovým registrem je vždy ten registr, jehož původní obsah je méně posunut doleva. V případě stejného počtu posunů je prvním zdrojovým a zároveň cílovým registrem první a třetí registr. Řídicí a výpočetní jednotka je upravena pro zastavení operací sčítání, odčítání a posuvu v prvním až pátém registru pokud se při těchto operacích v prvním nebo druhém registru objeví hodnota 1 nebo -1 reprezentovaná v doplňkovém kódu a posunutá doleva o hodnotu obsaženou v prvním nebo druhém čítači a pro indikování skutečnosti, že třetí respektive čtvrtý registr obsahuje hodnotu generované multiplikativní inverze b = q'1 mod p ve tvaru b, -b, (b - p) nebo (p - b), a to v závislosti na znaménkách hodnot obsažených v prvním respektive druhém registru a ve třetím respektive čtvrtém registru.
Výhodou tohoto způsobu generování multiplikativní inverze je, že operace působení hodnot v řídicí části, kterou představují první a druhý registr, a řízené části, kterou představují třetí a čtvrtý registr, jsou zaměněny za operace násobení a tím je eliminován případ nutnosti přičítání modulu p v případě lichého čísla tak, jak je to u dosavadních metod. Výhodou oproti používaným postupům je také použití doplňkového kódu pro reprezentaci záporných Čísel, která se nepřevádějí na kladná a tím se eliminují operace převodu reprezentující sčítání. Další předností je
-2CZ 294898 B6 zjednodušení provádění operace porovnávání dvou čísel na operaci porovnání hodnot příslušných bitů daných hodnot. V průběhu generování multiplikativní inverze se porovnávají také vzájemné posuny hodnot v registrech řídicí části a pomocí tohoto srovnání se řídí výběr registru pro zápis vypočtených hodnot v průběhu generování multiplikativní inverze. Vzhledem k výše uvedeným výhodám je předkládaný způsob podstatně rychlejší než dosud známé postupy generování multiplikativní inverze, a to hlavně v případě velkých čísel používaných v kryptografii. Efektivnost předkládaného postupuje založená na provádění co nejmenšího počtů operací sčítání a odečítání potřebných na generování modulární inverze, u kterých časová náročnost jejich provedení roste přibližně s logaritmem, o základu dva, počtu bitů potřebných pro binární reprezentaci prvočíselného modula p.
Přehled obrázků na výkresech
Příklad provedení vynálezu bude dále podrobněji popsán pomocí přiložených výkresů, kde na obr. 1 je vývojový diagram znázorňující postup generování multiplikativní inverze nad konečným tělesem GF(p), na obr. 2 je tabulka která demonstruje generování modulární inverze na konkrétním příkladě a na obr. 3 je schéma základního zapojení k provádění tohoto způsobu generování modulární inverze.
Příklad provedení vynálezu
Příklad zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p), pro kterou platí b = q'1 mod p, kde (p) je prvočíslo větší než (q) a kde (q) je celé kladné číslo větší než jedna je uveden na obr. 3. Toto zapojení sestává z řídicí a výpočetní jednotky CU, která je propojena s prvním až pátým n-bitovým registrem Ra, Ry, Rr, Rs, Rm první datovou a řídicí sběrnici Bb Řídicí sběrnice Bj současně tyto registry propojuje navzájem. Řídicí a výpočetní jednotka CU je dále propojena druhou řídicí a datovou sběrnici B? s prvním e-bitovým čítačem Ca a s druhým ebitovým čítačem Cy, kde e = [log2n] a kde počet bitů n platí, že 2n^‘ > p. Rovněž pak platí, že nbitové hodnoty proměnných obsažené v prvním až pátém registru R^, RY, Rr, Rž, R™ v celém průběhu generování multiplikativní inverze jsou reprezentované v doplňkovém kódu a nejméně významový bit LSB je v nich umístěn při inicializaci úplně vpravo. Inicializační počáteční stavy prvního až pátého registru Ra, Ry, Rr, Rs, Rm vyvolané pomocí příslušných proměnných p a q jsou nastaveny tak, že inicializační počáteční stav prvního registru Ra je nastaven na hodnotu p, druhého registru RY na hodnotu 1 a pátého registru Rm na hodnotu p. Inicializační stav prvního čítače C„ a druhého čítače Cx jsou nastaveny na hodnotu 0, přičemž první a druhý registr Ra, Ry, jsou upraveny jen pro posuv doleva se zabezpečením proti přetečení jejich obsahu při posuvu. Při každém jejich posuvu vlevo po inicializaci jsou první a druhý čítač C„, CY, upraveny pro inkrementování a srovnávání jejich obsahů, a to tak, že počet posunů vlevo obsahů prvního registru R„ respektive druhého registru Ry je obsažený v prvním čítači C„ respektive ve druhém čítači Cy. Třetí registr R, je upraven pro současný posuv doleva s prvním registrem R„ pro případ, kdy je hodnota obsažená v prvním čítači C„ větší nebo rovná hodnotě obsažené ve druhém čítači Cy. Pro ostatní případy hodnot těchto čítačů je při posunu prvního registru R„ doleva upraven čtvrtý registr Rs pro posun doprava. Zároveň je tento čtvrtý registr R; upraven pro současný posuv doleva s druhým registrem Cs v případě, že hodnota obsažená v druhém čítači Cv je větší nebo rovná než hodnota obsažená v prvním čítači Ca. Pro ostatní případy hodnot těchto čítačů je při posunu druhého registru Ry doleva upraven třetí registr Rr pro posun doprava. Řídicí a výpočetní jednotka CU je v případě zastavení posuvu obsahů prvního a druhého registru Ra, Rv doleva v důsledku zamezení přetečení těchto obsahů upravena při dosažení stejného nejvýznamnějšího bitu prvního a druhého registru Ra, RY pro provedení odečtení obsahů prvního a druhého registru Ra, Ry a třetího a čtvrtého registru Rr, Rs a při dosažení různého nejvýznamnějšího bitu prvního a druhého registru Ra, Ry je řídicí a výpočetní jednotka CU upravena pro provedení sčítání těchto obsahů, a to vždy tak, že prvním zdrojovým a zároveň cílovým registrem je vždy ten registr, jehož původní obsah je méně posunut doleva a v případě stejného počtu posunů je prvním
-3 CZ 294898 B6 zdrojovým a zároveň cílovým registrem první a třetí registr Ru, R,. Řídicí výpočetní jednotka CU je ještě upravena pro zastavení operací sčítání, odčítání a posuvu v prvním až pátém registru Ru, Rv, Rr, Rs, Rm pokud se při těchto operacích v prvním nebo druhém registru Ru, RY objeví hodnota 1 nebo -1 reprezentovaná v doplňkovém kódu a posunutá doleva o hodnotu obsaženou v prvním nebo druhém čítači C„, Cx a pro indikování skutečnosti, že třetí registr Rr respektive čtvrtý registr Rs obsahuje hodnotu generované multiplikativní inverze b = q'1 mod p ve tvaru b, -b, (b - p) nebo (p - b), a to v závislosti na znaménkách hodnot obsažených v prvním registru R„ respektive ve druhém registru, Rx a ve třetím registru R; respektive ve čtvrtém registru Rs.
Způsob generování multiplikativní inverze nad konečným tělesem GF(p) prováděný zapojením podle předkládaného vynálezu bude dále popsán ve formě jednotlivých kroků podle vývojového diagramu z obr. 1. Vychází se z toho, že je dáno celé kladné číslo q větší než jedna a prvočíslo p větší než q. Potom k číslu q existuje multiplikativní inverze b = q'1 mod p, pro kterou platí q.b = 1 (mod p).
Nechť u, v, r, s, m jsou n bitové proměnné jejichž hodnoty v doplňkovém kódu jsou obsaženy v první až pátém n bitovém registru Ru, Rv, Rr, Rx, Rm, kde pro počet bitů n platí vztah 2’1 > p. Dále nechť Cu a Cy jsou první a druhý e bitový čítač, kde e = [log2n], a jejich obsah reprezentující hodnoty e bitových proměnných cu a cv. Generování multiplikativní inverze b k číslu q modulo p lze vyjádřit následujícím postupem. Nejprve se inicializují v prvním až pátém registru Ru, Ry, Rr, Ry, Rm a prvním a druhém čítači C„ a Cv počáteční stavy pomocí příslušných n bitových proměnných p a q tak, že platí:
u: = D (p), v: = D (q), r: = D (0), s: = D (1), m: = D (p), cu: = 0, cv: = 0, kde označení D(x) představuje obraz příslušného čísla x v doplňkovém kódu a platí, že v prvním až pátém registru Řu, Rv, Rr, Rs a Rm je umístěn nejméně významný bit LSB vpravo. Jakmile je ukončena tato inicializace, která představuje krok 0, postoupí se za krok 1 do kroku 11. Krok 1 představuje testování hodnot n bitových proměnných u a v prvního a druhého registru R„ a Rx. Pokud se hodnota proměnné u nebo hodnota proměnné v rovná 1 nebo -1, vyjádřená v doplňkovém kódu posunutá o hodnotu cu míst doleva pro u nebo posunutá o hodnotu cv míst doleva pro v proces pokročí do kroku 2, který bude popsán dále, jinak se pokračuje krokem 11. V kroku H se zjišťuje hodnota dvou nejvíce významných bitů prvního registru Ry. Jsou-li tyto dva nejvíce významné bity nulové nebo jsou nenulové a současně alespoň jeden ze zbývajících bitů je nenulový, potom se pokračuje krokem 111, jinak proces přejde do kroku 12. V kroku 111 se porovnávají vzájemné velikosti hodnot e bitových proměnných cu a cv. Pokud se zjistí, že mezi nimi platí vztah cu > cv, potom proces přechází do kroku 1111, jinak do kroku 1112. V kroku 1111 se provede jednobitový posun obsahu prvního a třetího registru R„ a Rr doleva, což znamená, že se hodnoty proměnných u a r zdvojnásobí, a současně se inkrementuje obsah prvního čítače Cu, což představuje zvětšení hodnoty proměnné cu o jednu. Po tomto kroku 1111 následuje návrat do kroku 1, čímž dochází k opětnému testování podmínky z kroku 1.
Pokud proces postoupil do kroku 1112, provede se posun obsahu prvního registru R„ o jeden bit doleva a zároveň se provede jednobitový posun čtvrtého registru Rs doprava, tedy zdvojnásobí se hodnota proměnné u a naopak hodnota proměnné s se sníží na polovinu. Zároveň se inkrementuje obsah prvního čítače Cu, tedy hodnota cu se zvětší o jednu. Následuje opět návrat do kroku 1, tedy dochází k opětnému testování podmínky z kroku 1.
Pokud proces postoupil z kroku 11 přímo do kroku 12, pak se v tomto kroku testuje obsah druhého registru Ry. Když jsou hodnoty dvou nejvíce významných bitů druhého registru Rv nulové, nebo jsou nenulové a současně alespoň jeden ze zbývajících bitů je nenulový, potom proces postoupí do kroku 121, jinak přejde do kroku 13. V kroku 121 se opět porovnávají
-4CZ 294898 B6 vzájemné velikosti hodnot e bitových proměnných cu a cv. Pokud se zjistí, že mezi nimi platí vztah cv > cu, potom se přechází do kroku 1211, jinak proces pokračuje krokem 1212. V kroku 1211 se provede jednobitový posun obsahu druhého a čtvrtého registru Ry a R^doleva, což znamená, že se hodnoty proměnných v a s zdvojnásobí, a současně se inkrementuje obsah druhého čítače Cv, což představuje zvětšení hodnoty proměnné cv o jednu. Po tomto kroku 1211 následuje návrat do kroku 1, za účelem opětného testování podmínky z kroku £. Potom proces postoupil do kroku 1212, provede se posun obsahu druhého registru Ry o jeden bit doleva a zároveň se provede jednobitový posun třetího registru Rr doprava, tedy zdvojnásobí se hodnota proměnné v a naopak hodnota proměnné r se sníží na polovinu. Zároveň se inkrementuje obsah druhého čítače Cy, tedy hodnota cv se zvětší o jednu. Následuje opět návrat do kroku 1 za účelem testování podmínky z kroku 1.
Pokud proces v kroku 12 přešel přímo do kroku 13, pak se testuje hodnota nejvíce významného bitu prvního registru R„ a nejvíce významného bitu druhého registru Ry. Když mají nejvíce významný bit prvního registru R„ a nejvíce významných bit druhého registru Ry stejnou hodnotu, potom proces postoupí do kroku 131, jinak se pokračuje v kroku 14. V kroku 131 se porovnávají hodnoty e bitových proměnných cu a cv. Pokud se zjistí, že mezi nimi platí vztah cv > cu, potom se přechází do kroku 1311, jinak proces pokračuje krokem 1312. V kroku 1311 se odečte obsah druhého registru Ry od obsahu prvního registru R„ a výsledek se uloží v doplňkovém kódu do prvního registru R„. Zároveň se odečte obsah čtvrtého registru R; od obsahu třetího registru R; a výsledek se uloží v doplňkovém kódu do třetího registru Rr, načež nastává návrat do kroku 1 znamenající testování podmínky z kroku £. Pokud se přešlo z kroku 131 do kroku 1312, pak se v tomto kroku 1312 odečte obsah prvního registru Ra od obsahu druhého registru Rv a výsledek se uloží v doplňkovém kódu do druhého registru Ry a také se odečte obsah třetího registru Rr od obsahu čtvrtého registru Rs a výsledek se uloží v doplňkovém kódu do čtvrtého registru Rs, načež následuje testování podmínek kroku £ návratem do tohoto kroku 1.
Pokud proces postoupil z kroku 13 přímo do kroku 14, a bylo zde zjištěno, že mezi hodnotami e bitovými proměnnými cu a cv platí vztah cv > cu, přejde proces do kroku 141, jinak pokračuje krokem £42. V kroku 141 se sečte obsah druhého registru RY a obsah prvního registru Ru a výsledek se uloží v doplňkovém kódu do prvního registru R, a také se sečte obsah čtvrtého registru Rs a obsah třetího registru I£ a výsledek se uloží v doplňkovém kódu do třetího registru Rp, načež nastane návrat do kroku £. Pokud se postoupilo přímo do kroku 142, sečtou se obsahy prvního a druhého registru R„ a RY a výsledek se uloží v doplňkovém kódu do druhého registru Rv a také se sečtou obsahy třetího a čtvrtého registru Rr a Rs a výsledek se uloží v doplňkovém kódu do čtvrtého registru Rš, načež se proces navrací do kroku £.
Pokud se z kroku 1 postoupilo do kroku 2 testuje se nyní, zda poslední zápis byl proveden do druhého a čtvrtého registru Ry a Rs, tedy zda hodnota proměnné v je rovná 1 nebo -1, reprezentovaná v doplňkovém kódu, posunutá o cv míst doleva. Pokud ano, přejde proces do kroku 21, jinak se pokračuje krokem 3. V kroku 21 se provede zápis obsahu čtvrtého registru Rs do třetího registru R,, a nejvíce významných bit druhého registru Ry se zapíše na místo nejvíce významného bitu prvního registru R„, načež se pokračuje v kroku 3.
Když se v kroku 3 zjistí, že nejvíce významný bit prvního registru R„ je nenulový, přejde se do kroku 31, jinak se přejde do kroku 4. V kroku 31 se testuje hodnota nejvíce významného bitu třetího registru Rr a když se zjistí, že je nenulová, potom se pokračuje v kroku 311, jinak se pokračuje v kroku 312. V kroku 311 se zneguje obsah třetího registru R; a výsledek se opět uloží v doplňkovém kódu do registru Rj, načež proces pokračuje krokem 5. Pokud se z kroku 31 pokračuje krokem 312, pak se odečte hodnota třetího registru R; od hodnoty pátého registru R™ a výsledek se uloží v doplňkovém kódu do třetího registru !£. Poté se přejde do kroku 5.
Je-li v kroku 4 nejvíce významný bit třetího registru Rt je nenulový, přechází proces do kroku 41, jinak přejde do kroku 5. V kroku 41 se přičte k obsahu třetího registru Rj hodnota obsahu pátého registru R™ a výsledek se uloží v doplňkovém kódu do třetího registru Rr. Nyní se přejde do
-5CZ 294898 B6 kroku 5, kde se zjistí obsah třetího registru R, a zjištěná hodnota je multiplikativní inverze b = q-’ mod p.
Tabulka na obr. 2 demonstruje generování modulární inverze na konkrétním příkladě, kde inicializační hodnoty jsou p = 13, q = 10. Výpočet probíhá dle popsaného postupu. V prvním sloupci je uveden krok prováděné aritmetické operace a testu dle označení z obr. 1. Ve druhém sloupci je pořadové číslo aritmetické operace, které mění obsah registrů. V případě nulté operace jedná se jen o inicializaci tj. načtení daných hodnot. Ve třetím respektive ve čtvrtém sloupci jsou uvedené hodnoty proměnných obsažené v registrech a čítačích po aritmetické operaci v dekadické respektive binární reprezentaci, kde horní pravý index v závorce označuje pořadové číslo aritmetické operace. Poslední sloupec uvádí provádění aritmetické operace. V případě testů je v prvním sloupci uvedena posloupnost provedených testu. V případě testů je v prvním sloupci uvedena posloupnost provedených testu. Tyto testy nevykonávají žádnou aritmetickou operaci s následnou změnou obsahu registrů. Výsledek celého postupu generování modulární inverze je uveden v posledním řádku s tím, že platí b = 101 mod 13 = 4, nebo 4.10 s 1 (mod 13).
Průmyslová využitelnost
Multiplikativní inverze nad konečným GF(p) má zvláště důležitý význam ve výpočtech prováděných v kryptografii např. při operacích s body na eliptických křivkách definovaných nad konečným tělesem GF(p) nebo při akceleraci exponenciálních operací. Při současném nebývalém rozvoji informačních technologií je kryptografie v popředí zájmu v ekonomické oblasti a také v zájmu národních a zejména mezinárodních institucí pro ochranu dat. Předmětem vynálezu je zapojení, kterým lze realizovat generování modulární inverze efektivněji než doposud používanými způsoby. Zapojení může být využito v oblasti kryptografických hardwarových aplikací a embeddech systémech, například ve SMART kartách a samozřejmě všude, kde je potřebný rychlý a efektivný výpočet modulární inverze.
Claims (1)
- PATENTOVÉ NÁROKY1. Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p), pro kterou platí b = q'1 mod p, kde (p) je prvočíslo větší než (q) a kde (q) je celé kladné číslo větší než jedna, vyznačující se tím, že sestává z řídicí a výpočetní jednotky (CU), která je propojena s prvním až pátým n-bitovým registrem (Ru, Rv, R,., Rs, Rm) první datovou a řídicí sběrnicí (B]), která současně tyto registry propojuje navzájem, a dále je řídicí a výpočetní jednotka (CU) propojena druhou řídicí a datovou sběrnici (B2) s prvním e-bitovým čítačem (Cu) a s druhým e-bitovým čítačem (Cv), kde e = [log2n] a kde pro počet bitů n platí, že 2n-1 > p a dále platí, že n-bitové hodnoty proměnných obsažené v prvním až pátém registru (Ru, Rv, Rr, Rs, Rm) v celém průběhu generování multiplikativní inverze jsou reprezentované v doplňkovém kódu a nejméně významný bit (LSB) je v nich umístěn při inicializaci úplně vpravo a inicializační počáteční stavy prvního až pátého registru (Ru, Rv, Rr, Rs, Rm) vyvolané pomocí příslušných proměnných (p) a (q) jsou nastaveny tak, že inicializační počáteční stav prvního registru (Ru) je nastaven na hodnotu (p), druhého registru (Rv) na hodnotu (q), třetího registru (Rr) na hodnotu 0, čtvrtého registru (Rs) na hodnotu 1 a pátého registru (Rm) na hodnotu p a inicializační stavy prvního čítače (Cu) a druhého čítače (Cv) jsou nastaveny na hodnotu 0, přičemž první a druhý registr (Ru, Rv) jsou upraveny jen pro posuv doleva se zabezpečením proti přetečení jejich obsahu při posuvu a při každém jejich posunu vlevo po inicializaci jsou první a druhý čítač (Cu, Cv) upraveny pro inkrementování a srovnávání jejích obsahů, a to tak, že počet posunů vlevo obsahů prvního registru (Ru) respektive druhého registru (Rv) je obsažený v prvním čítači (Cu) respektive ve druhém čítači (Cv) a třetí registr (Rr) je upraven pro současný posuv doleva s prvním registrem-6CZ 294898 B6 (Ru) pro případ, kdy je hodnota obsažená v prvním čítači (Cu) větší nebo rovná hodnotě obsažené ve druhém čítači (Cv) a pro ostatní případy hodnot těchto čítačů je při posunu prvního registru (Ru) doleva upraven čtvrtý registr (Rs) pro posun doprava, a zároveň je tento čtvrtý registr (Rs) upraven pro současný posuv doleva a druhým registrem (Cv) v případě, že hodnota obsažená v druhém čítači (Cv) je větší nebo rovná než hodnota obsažená v prvním čítači (Cu) a pro ostatní případy hodnot těchto čítačů je při posunu druhého registru (Rv) doleva upraven třetí registr (Rr) pro posun doprava, přičemž řídicí a výpočetní jednotka (CU) je v případě zastavení posuvu obsahů prvního a druhého registru (Ru, Rv) doleva v důsledku zamezení přetečení těchto obsahů upravena při dosažení stejného nejvýznamnějšího bitu prvního a druhého registru (Ru, Rv) pro provedení odečtení obsahů prvního a druhého registru (Ru, Rv) a třetího a čtvrtého registru (Rr, Rs) a při dosažení různého významnějšího bitu prvního a druhého registru (Ru, Rv) je upravena pro provedení sčítání těchto obsahů, a to vždy tak, že prvním zdrojovým a zároveň cílovým registrem je vždy ten registr, jehož původní obsah je méně posunut doleva a v případě stejného počtu posunů je prvním zdrojovým a zároveň cílovým registrem první a třetí registr (Ru, Rr), přičemž a konečně je řídicí a výpočetní jednotka (CU) upravena pro zastavení operací sčítání a posuvu v prvním až pátém registru (Ru, Rv, Rr, Rs, Rm) pokud se při těchto operacích v prvním nebo druhém registru (Ru, Rv) objeví hodnota 1 nebo -1 reprezentovaná v doplňkovém kódu a posunutá doleva o hodnotu obsaženou v prvním nebo druhém čítači (Cu, Cv) a pro indikování skutečnosti, že třetí registr (Rr) respektive čtvrtý registr (Rs) obsahuje hodnotu generované multiplikativní inverze b = q’1 mod p ve tvaru b, -b, (b - p) nebo (p - b), a to v závislosti na znaménkách hodnot obsažených v prvním respektive druhém registru (Ru, Rv) ve třetím respektive čtvrtém registru (Rr, Rs).
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CZ20024116A CZ294898B6 (cs) | 2002-12-16 | 2002-12-16 | Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) |
| US10/535,808 US7574469B2 (en) | 2002-12-16 | 2003-12-15 | Method for generating the multiplicative inverse in a finite field GF(p) |
| PCT/CZ2003/000071 WO2004055664A1 (en) | 2002-12-16 | 2003-12-15 | A method for generating the multiplicative inverse in a finite field gf(p) |
| AU2003302942A AU2003302942A1 (en) | 2002-12-16 | 2003-12-15 | A method for generating the multiplicative inverse in a finite field gf(p) |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CZ20024116A CZ294898B6 (cs) | 2002-12-16 | 2002-12-16 | Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CZ20024116A3 CZ20024116A3 (en) | 2004-08-18 |
| CZ294898B6 true CZ294898B6 (cs) | 2005-04-13 |
Family
ID=32514467
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CZ20024116A CZ294898B6 (cs) | 2002-12-16 | 2002-12-16 | Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US7574469B2 (cs) |
| AU (1) | AU2003302942A1 (cs) |
| CZ (1) | CZ294898B6 (cs) |
| WO (1) | WO2004055664A1 (cs) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9769227B2 (en) | 2014-09-24 | 2017-09-19 | Microsoft Technology Licensing, Llc | Presentation of computing environment on multiple devices |
| US10025684B2 (en) | 2014-09-24 | 2018-07-17 | Microsoft Technology Licensing, Llc | Lending target device resources to host device computing environment |
| US10635296B2 (en) | 2014-09-24 | 2020-04-28 | Microsoft Technology Licensing, Llc | Partitioned application presentation across devices |
| US9678640B2 (en) | 2014-09-24 | 2017-06-13 | Microsoft Technology Licensing, Llc | View management architecture |
| US10448111B2 (en) | 2014-09-24 | 2019-10-15 | Microsoft Technology Licensing, Llc | Content projection |
| US9860306B2 (en) | 2014-09-24 | 2018-01-02 | Microsoft Technology Licensing, Llc | Component-specific application presentation histories |
| US11029921B2 (en) | 2019-02-14 | 2021-06-08 | International Business Machines Corporation | Performing processing using hardware counters in a computer system |
| CN112099761B (zh) * | 2020-08-27 | 2022-09-02 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| IL135247A0 (en) * | 2000-03-23 | 2003-06-24 | Cipherit Ltd | Method and apparatus for the calculation of modular multiplicative inverses |
| US7346159B2 (en) * | 2002-05-01 | 2008-03-18 | Sun Microsystems, Inc. | Generic modular multiplier using partial reduction |
-
2002
- 2002-12-16 CZ CZ20024116A patent/CZ294898B6/cs unknown
-
2003
- 2003-12-15 US US10/535,808 patent/US7574469B2/en not_active Expired - Lifetime
- 2003-12-15 WO PCT/CZ2003/000071 patent/WO2004055664A1/en active Application Filing
- 2003-12-15 AU AU2003302942A patent/AU2003302942A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| AU2003302942A1 (en) | 2004-07-09 |
| US20070244949A1 (en) | 2007-10-18 |
| US7574469B2 (en) | 2009-08-11 |
| CZ20024116A3 (en) | 2004-08-18 |
| WO2004055664A1 (en) | 2004-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2722411B2 (ja) | モンゴメリ法によるモジュラリダクションの実施方法 | |
| EP0801345B1 (en) | Circuit for modulo multiplication and exponentiation arithmetic | |
| US6349318B1 (en) | Arithmetic processor for finite field and module integer arithmetic operations | |
| JP2722413B2 (ja) | モンゴメリ法によるモジュラ乗算の実施方法 | |
| EP0917047B1 (en) | Apparatus for modular inversion for information security | |
| US5261001A (en) | Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands | |
| EP0717350A2 (en) | High-speed division and square root calculation unit | |
| Lórencz | New algorithm for classical modular inverse | |
| JP3615622B2 (ja) | マイクロコンピュータ | |
| Koç et al. | Fast algorithm for modular reduction | |
| CZ294898B6 (cs) | Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p) | |
| US6341299B1 (en) | Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed | |
| US6963644B1 (en) | Multi-word arithmetic device for faster computation of cryptosystem calculations | |
| US20060133603A1 (en) | Integer division method which is secure against covert channel attacks | |
| US6424987B1 (en) | Method for the implementation of a specific modular multiplication operation relating to the montgomery method | |
| KR20210147070A (ko) | 다중 입력 부동 소수점 가산기 | |
| US6163790A (en) | Modular arithmetic coprocessor comprising an integer division circuit | |
| US7672990B2 (en) | Digital computation method involving euclidean division | |
| US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
| Lórencz et al. | Subtraction-free almost Montgomery inverse algorithm | |
| US6275837B1 (en) | Method for the implementation of an elementary modular operation according to the Montgomery method | |
| Monfared et al. | Secure and efficient exponentiation architectures using Gaussian normal basis | |
| US20070016635A1 (en) | Inversion calculations | |
| JPS63221426A (ja) | GF(2▲上m▼)のガロア体に属する元の乗算装置 | |
| SU898423A1 (ru) | Устройство дл делени двоичных чисел |