Aritmetika s velkými čísly na čipové kartě



Podobné dokumenty
PROTOKOL O LABORATORNÍM CVIČENÍ

Základy číslicové techniky z, zk

. Určete hodnotu neznámé x tak, aby

Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl Tematická oblast ELEKTRONIKA

Neuropočítače. podnět. vnímání (senzory)

12. Booleova algebra, logická funkce určitá a neurčitá, realizace logických funkcí, binární kódy pro algebraické operace.

Aritmetické operace a obvody pro jejich realizaci

Karnaughovy mapy. Pravdivostní tabulka pro tři vstupní proměnné by mohla vypadat například takto:

KOMBINAČNÍ LOGICKÉ OBVODY

SIM karty a bezpečnost v mobilních sítích

2.7 Binární sčítačka Úkol měření:

Multimetr: METEX M386OD (použití jako voltmetr V) METEX M389OD (použití jako voltmetr V nebo ampérmetr A)

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

GRAFICKÉ ROZHRANÍ V MATLABU PRO ŘÍZENÍ DIGITÁLNÍHO DETEKTORU PROSTŘEDNICTVÍM RS232 LINKY

5. Maticová algebra, typy matic, inverzní matice, determinant.

1. 5. Minimalizace logické funkce a implementace do cílového programovatelného obvodu CPLD

STRUKTURA POČÍTAČŮ JIŘÍ HRONEK, JIŘÍ MAZURA KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. lorencz@fel.cvut.cz

12. Bezpečnost počítačových sítí

Kódy pro detekci a opravu chyb. INP 2008 FIT VUT v Brně

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Použití čipových karet v IT úřadu

Struktura a architektura počítačů (BI-SAP) 5

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

Úvod do programování 7. hodina

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

PROTOKOL O LABORATORNÍM CVIČENÍ

SČÍTAČKA, LOGICKÉ OBVODY ÚVOD TEORIE

Číselnésoustavy, sčítáníasčítačky

Y36SAP - aritmetika. Osnova

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

Architektura počítače

Postranními kanály k tajemství čipových karet

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

evodníky Univerzita Tomáše Bati ve Zlíně Ústav elektrotechniky a měření Přednáška č. 14 Milan Adámek adamek@fai.utb.cz U5 A

Vizuální programovací jazyk

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Booleova algebra. ZákonyBooleovy algebry Vyjádření logických funkcí

Aplikovaná informatika

Dělení. Demonstrační cvičení 8 INP

Matematika v kryptografii. Doc. Ing. Karel Burda, CSc. FEKT VUT v Brně

Laboratorní zdroj - 6. část

Predispozice pro výuku IKT (2015/2016)

Operace ALU. INP 2008 FIT VUT v Brně

Rozdílová dokumentace k ovládání IS KARAT.net

OKsmart a správa karet v systému OKbase

Signálové a mezisystémové převodníky

Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Struktura a architektura počítačů (BI-SAP) 6

HLEDÁNÍ WIEFERICHOVÝCH PRVOČÍSEL. 1. Úvod

ILUSTRAÈNÍ TEST LIBERECKÝ KRAJ

2.8 Kodéry a Rekodéry

FASTPort. Nová sběrnice pro připojení inteligentních karet* k osmibitovým počítačům. aneb. Jak připojit koprocesor

Programové vybavení OKsmart pro využití čipových karet

Vedení a technologie: Výhody videokomunikace pro středně velké podniky

ÚAMT FEKT VUT. mikroprocesor Rabbit. Diplomová prá ce. Tomá škreuzwieser. Brno

Experimentální hodnocení kvality algoritmů

Způsoby realizace této funkce:

Čísla, reprezentace, zjednodušené výpočty

Analyzátor, minimalizátor kombinačních logických obvodů

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

METODICKÉ LISTY. výstup projektu Vzdělávací středisko pro další vzdělávání pedagogických pracovníků v Sokolově

Čísla a číselné soustavy.

PA159 - Bezpečnostní aspekty

Směry rozvoje v oblasti ochrany informací KS - 7

Logické proměnné a logické funkce

Kód uchazeče ID:... Varianta: 14

Kvantová informatika pro komunikace v budoucnosti

Přehled učiva matematiky 7. ročník ZŠ

4. Elektronické logické členy. Elektronické obvody pro logické členy

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Dodatek č. 3 ke školnímu vzdělávacímu programu. Strojírenství. (platné znění k )

Obsah DÍL 1. Předmluva 11

Krokové motory. Klady a zápory

Binární logika Osnova kurzu

Hardwarová realizace konečných automatů

Digitální identita. zlý pán nebo dobrý sluha? Martin Jelínek, ASKON INTERNATIONAL s.r.o.

Rekurze - tvorba a zápis algoritmů v jazyce Pascal

MONITORING A ANALÝZA KVALITY ELEKTŘINY

Zdroj:

TECHNICKÁ UNIVERZITA V LIBERCI EKONOMICKÁ FAKULTA. VZOR PŘIJÍMACÍ ZKOUŠKY DO NAVAZUJÍCÍHO STUDIA Obor: Manažerská informatika

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Y36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.

1. Programování PLC. Programovatelné automaty II - 1 -

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace

Obrázek č. 7.0 a/ regulační smyčka s regulátorem, ovladačem, regulovaným systémem a měřicím členem b/ zjednodušené schéma regulace

Základní pojmy a historie výpočetní techniky

Inteligentní SZT budou prvky smart grid uplatnitelné také v teplárenství?

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, Booleova algebra, De Morganovy zákony Student

Architektury CISC a RISC, uplatnění v personálních počítačích

Netradiční sbírka z fyziky II

TECHNICKÝ MANUÁL. Obj. č.:

Modulární aritmetika, Malá Fermatova věta.

Transkript:

Aritmetika s velkými čísly na čipové kartě Ivo Rosol ředitel divize vývoje OKsystem s.r.o. Praha, 23.5.2013 Spojujeme software, technologie a služby

Čísla v kryptografii V kryptografii se zásadně pracuje s celými čísly, jejichž velikost, v závislosti na typu kryptografie, může být ve stovkách, nebo tisících bitů. S čísly této velikosti se provádí základní aritmetické operace sčítání, odčítání, násobení a umocňování a to běžné, nebo častěji modulární. V počítači jsou čísla reprezentována v binární podobě a procesory počítačů umí pracovat pouze s omezenou množinou typů celých čísel, například s 8, 16, 32 nebo 64 bitovými celými čísly. Programovací jazyky zpravidla nabízejí stejné základní celočíselné datové typy, delší čísla je nutné reprezentovat ve formě pole a aritmetiku realizovat nad polem čísel. Pokud takové operace příslušný programovací jazyk, nebo knihovna nepodporuje, je nutné tyto výpočty realizovat programem. 2

Obsah přednášky V přednášce budou ukázány některé algoritmy, vhodné pro aritmetiku s velkými čísly na smart kartách. Budou ukázány výsledky porovnání platforem čipových karet Java card,.net a Multos při provádění výpočtů kryptografických primitiv odečítání, násobení, modulární násobení a mocnění s velkými čísly. Práce byly realizovány v rámci realizace projektu výzkumu a vývoje TAČR, program ALFA - Systém pro kryptografickou ochranu elektronické identity, který zpracovává OKsystem společně s VUT Brno. 3

R&D projekt ANAUT 4

Sčítání Nejprve si ukážeme základní stavební kámen všech výpočtů binární sčítačku, a její využití pro součet vícebitových čísel. Použití jednobitové sčítačky vede na problém postupného šíření přenosu do vyšších řádů, procesory proto využívají vícebitové sčítačky, nebo sofistikované metody urychlení přenosu. 5

Binární jednobitová polosčítačka Jednobitová polosčítačka s přenosem do vyššího řádu Pravdivostní tabulka A 0 B 0 S 0 C 1 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 S 0 = A 0 * B 0 + A 0 * B 0 = A B C 1 = A 0 * B 0 6

Optimalizovaná polosčítačka Operace se dá realizovat pomocí pouze 4 hradel NAND (místo 5 hradel), pokud se výraz upraví tak, aby byl mezivýsledek negace (A * B) použit dvakrát. S = A B + A B = = A B + 0 + 0 + A B = = A B + B B + A A + A B = = A + B B + A + B A = = A B B + B A A = = A B B B A A 7

Úplná jednobitová sčítačka Úplná jednobitová sčítačka ze 2 polosčítaček Úplnou jednobitovou sčítačku lze sestavit (neoptimálně) ze 2 polosčítaček. Součet S 1 získám kaskádovým sečtením S 01 =A 0 +B 0 v první polosčítačce a následným přičtením přenosu C 0 v druhé polosčítačce. Přenos C 1 se generuje, pokud je přenos C 01 ze součtu bitů, nebo je přenos C 02 ze součtu přenosu a součtu bitů: 8

Úplná jednobitová sčítačka (optimální) Pravdivostní tabulka úplné sčítačky Karnaughova mapa pro součet S 1 A 0 B 0 C 0 S 1 C 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 S 1 = A 0 *B 0 *C 0 + A 0 *B 0 *C 0 + A 0 *B 0 * C 0 + A 0 *B 0 * C 0 Karnaughova mapa pro přenos C 1 C 1 = B 0 *C 0 + A 0 *C 0 + A 0 *B 0 9

Bez Karnaughovy mapy je minimalizace pracnější C 1 = A 0*B 0 *C 0 + A 0 *B 0*C 0 + A 0 *B 0 *C 0 + A 0 *B 0 *C 0 = = A 0*B 0 *C 0 + A 0 *(B 0*C 0 + B 0 *C 0 + B 0 *C 0 ) = = A 0*B 0 *C 0 + A 0 *(B 0*C 0 + B 0 *C 0 + B 0 *C 0 + B 0 *C 0 ) = /přičteno B 0 *C 0, protože A + A =A = A 0*B 0 *C 0 + A 0 *((B 0 + B 0 )*C 0 + B 0 *(C 0 + C 0 )) = / vytknuto = A 0*B 0 *C 0 + A 0 *(C 0 + B 0 ) = / protože B + B = 1 = A 0*B 0 *C 0 + A 0 *C 0 + A 0 *B 0 = = (A 0*B 0 + A 0 )*C 0 + A 0 *B 0 = / protože ((A *B + A) = (B + A) = B 0 *C 0 + A 0 *C 0 + A 0 *B 0 10

Vícebitová sčítačka s šířením přenosu Dochází k šíření přenosu z nižších řádů k vyšším. Správný součet je k dispozici až po ustálení přenosů. 11

Vícebitová sčítačka s predikcí přenosu Predikce (urychlení) přenosu spočívá v převodu na dvouúrovňový kombinační obvod (součet součinů). Princip spočívá ve vyjádření výstupního přenosu v i-tém řádu pomocí i-tých a nížších bitů sčítanců a vstupního přenosu v 0-tém řádu. Složitost obvodu rychle roste s počtem bitů sčítanců. C i+1 = A i *B i + C i *(A i +B i ) C 1 = A 0 *B 0 + C 0 *(A 0 +B 0 ) C 2 = A 1 *B 1 + C 1 *(A 1 +B 1 ) C 2 = A 1 *B 1 + (A 0 *B 0 + C 0 *(A 0 +B 0 ))*(A 1 +B 1 ) C 2 = A 1 *B 1 + A 0 *B 0 *(A 1 +B 1 )+ C 0 *(A 0 +B 0 )*(A 1 +B 1 ) C 3 = A 2 *B 2 + C 2 *(A 2 +B 2 ) C 3 = A 2 *B 2 + (A 1 *B 1 + A 0 *B 0 *(A 1 +B 1 )+ C 0 *(A 0 +B 0 )*(A 1 +B 1 ))*(A 2 +B 2 ) / dosazeno za C 2 C 3 = A 2 *B 2 + A 1 *B 1 *(A 2 +B 2 ) + A 0 *B 0 *(A 1 +B 1 )*(A 2 +B 2 ) + C 0 *(A 0 +B 0 )*(A 1 +B 1 )*(A 2 +B 2 ) / roznásobeno C 4 = A 3 *B 3 + C 3 *(A 3 +B 3 ) C 4 = A 3 *B 3 + (A 2 *B 2 + A 1 *B 1 *(A 2 +B 2 ) + A 0 *B 0 *(A 1 +B 1 )*(A 2 +B 2 ) + C 0 *(A 0 +B 0 )*(A 1 +B 1 )*(A 2 +B 2 ))*(A 3 +B 3 ) C 4 = A 3 *B 3 + A 2 *B 2 *(A 3 +B 3 ) + A 1 *B 1 *(A 2 +B 2 )*(A 3 +B 3 ) + A 0 *B 0 *(A 1 +B 1 )*(A 2 +B 2 )*(A 3 +B 3 ) + C 0 *(A 0 +B 0 )*(A 1 +B 1 )*(A 2 +B 2 )*(A 3 +B 3 ) 12

Vícebitová sčítačka s predikcí přenosu Výrazy pro C 1, C 2, C 3 a C 4 realizujeme jako dvouúrovňový kombinační obvod, neboť je závislý pouze na okamžité hodnotě A i, B i a C 0 S 0 S 1 S 2 S 3 A 0 B 0 Sčítačka A S B A 1 B 1 Sčítačka A S B A 2 B 2 Sčítačka A S B A 3 B 3 Sčítačka A S B C 0 C i C i C i C i A 3 B 3 C 4 C 4 A 2 B 2 A 1 B 1 A 0 B 0 Predikce přenosu C 3 C 2 C 1 C 0 13

Kuličková dřevěná binární sčítačka Web: http://woodgears.ca/marbleadd/ video: http://www.youtube.com/watch?feature=player_embedded&v=gcdshwmhf4a 14

Násobení Zatímco binární jednobitová násobička je jednodušší než sčítačka (aritmetický součin dvou bitů má stejnou hodnotu jako jejich logický součin, přenos při jednobitovém násobení nevzniká), násobení vícebitových čísel je časově náročnější. Program pro násobení může teoreticky využít takzvaný školský algoritmus pro násobení, jeho efektivita je však úměrná n 2. Naštěstí existují účinnější metody, ukázán bude Karatsubův algoritmus pro násobení velkých čísel. V praxi se také často využívá Combův algoritmus, který optimalizuje přenosy do vyšších řádů. 15

Školský algoritmus Násobení dvou n-ciferných čísel vyžaduje n x n násobení jednociferných čísel a součty mezivýsledků. Ve dvojkové soustavě vede školský algoritmus na jednoduché operace pro každý bit s hodnotou 1 v násobiteli se bity násobence posunou na odpovídající pozici a přičtou k mezivýsledku. Školský algoritmus příklad: 8 9 * 2 3 2 _ 6 _ 7 1 _ 7 _ 8 2 _ 0 _ 4 7 V tomto případě jsou 4 přenosy při násobení a 2 přenosy při sčítání mezivýsledků, celkem 6 přenosů Při implementaci není nutné si pamatovat jednotlivé dílčí násobky a sčítat je na závěr, místo toho je možné jednotlivé sloupce (řády) sčítat průběžně a pamatovat si přenosy. 16

Combův algoritmus Combův algoritmus spočívá v optimalizaci implementačních detailů školského násobení. Ruší přenosy při násobení (každý přenos je přičítání hodnoty přenosu s výsledkem násobení ve vyšším řádu) a tyto přenosy realizuje až při závěrečném sčítání mezivýsledků vzniklých při násobení jednotlivými řády násobitele. Aby nebylo nutné používat přenosy při násobení jednotlivými ciframi násobitele, zapamatují se jednotlivé mezivýsledky v plné hodnotě (nikoli jen cifra u řádu jednotek a přenos). Combův algoritmus příklad: 8 9 * 2 3 2 4 2 7 1 6 1 8 2 _ 0 _ 4 7 V tomto případě je 0 přenosů při násobení a pouze 2 přenosy při sčítání mezivýsledků (ale větší počet sčítanců) 17

Combův algoritmus větší příklad 35782 *78339 2803126098 3 5 7 8 2 Násobenec * 7 8 3 3 9 Násobitel + 2 7 4 5 6 3 7 2 1 8 Mezivýsledek + 0 9 1 5 2 1 2 4 0 6 Mezivýsledek + 0 9 1 5 2 1 2 4 0 6 Mezivýsledek + 2 4 4 0 5 6 6 4 1 6 Mezivýsledek + 2 1 3 5 4 9 5 6 1 4 Mezivýsledek + 0 2 3 4 3 2 2 0 0 Přenos 1 3 5 7 9 9 7 5 2 48 sčítání = 2 8 0 3 1 2 6 0 9 8 Výsledek Při správné implementaci je Combův algoritmus o cca 30% výkonnější než školský algoritmus 18

Karatsubův algoritmus Vhodný pro velmi velká čísla, efektivní pro čísla větší než 500 bitů (kvůli sčítání a režii rekurze) Anatolij Alexejevič Karatsuba, žák Andreje Kolmogorova, který na přednášce tvrdil, že násobení dvou n-ciferných čísel vyžaduje n 2 násobení. O týden později Karatsuba předložil algoritmus, který asymptoticky vyžaduje pouze N násobení: N 3 log 2 n 3 n log 2 3 19

Karatsubův algoritmus 1/3 A je n-ciferné číslo (např. A = 15321) B je n-ciferné číslo (např. B = 5762) A i B vyjádříme jako součet dvou částí vyššího řádu a nižšího řádu, s polovičním počtem cifer. Z je základ číselné soustavy, m = n / 2 (celočíselně) A = A 1 *Z m + A 0 (A = 15321 = 153 * 10 2 + 21) B = B 1 *Z m + B 0 (B = 5762 = 57 * 10 2 + 62) A*B = (A 1 *Z m + A 0 )*(B 1 *Z m + B 0 ) = A 1 *B 1 *Z 2m + (A 1 *B 0 + A 0 *B 1 )* Z m + A 0 *B 0 Označíme: k 0 = A 0 *B 0 k 1 = A 1 *B 0 + A 0 *B 1 k 2 = A 1 *B 1 A*B = k 2 * Z 2m + k 1 * Z m + k 0 Pro výpočet k 0, k 1, k 2 jsou potřeba 4 násobení s čísly s polovičním počtem cifer, tedy zůstává stejný počet jednociferných násobení 4* (n/2) 2 jako ve školském algoritmu. Z m a Z 2m pouze označují řád mezivýsledků a ve skutečnosti se nepočítají, pouze se dělá řádový posun při sčítání mezivýsledků. 20

Karatsubův algoritmus 2/3 Karatsubův trik, kdy již dříve spočtené násobky použiju pro výpočet k 1, kde jsou 2 násobení: k 1 = A 1 *B 0 + A 0 *B 1 = = (A 1 + A 0 )*(B 1 + B 0 ) - A 1 *B 1 - A 0 *B 0 = = (A 1 + A 0 )*(B 1 + B 0 ) - k 2 - k 0 Zde je jenom jedno násobení, protože výraz k 2 = A 1 *B 1 a výraz k 0 = A 0 *B 0 již byly spočítány. Celkem jsou pouze 3 násobení s (přibližně) polovičním počtem cifer. Přibývají ovšem 2 sčítání. Algoritmus se použije rekurzivně ve výrazech pro výpočet koeficientů k 0, k 1, k 2 21

Karatsubův algoritmus 3/3 - příklad A: 15321 B: 5762 A*B = 88 279 602 Z = 10, n = 5, m = n/2 = 2 A: 15321 = 153 * 10 2 + 21 B: 5762 = 57 * 10 2 + 62 k 0 = A 0 *B 0 = 21 * 62 = (Kartasuba rekurze) 1302 k 2 = A 1 *B 1 = 153 * 57 = (Kartasuba rekurze) 8721 k 1 = (A 1 + A 0 )*(B 1 + B 0 ) - k 2 - k 0 = = (153 + 21)*(57+62) - 8721-1302 = = (174 * 119) (Kartasuba rekurze) 20706-10023 = 10683 A*B = k 2 * Z 2m + k 1 * Z m + k 0 = 8721*10 2*2 + 10683*10 2 + 1302 = 88 279 602 Poznámky: V binární soustavě se 32 bitovými celými čísly se výhodně volí Z = 2 31 a rekurze pokračuje, dokud délka činitelů neklesne na 1 bit. Rekurze není k dispozici na čipových kartách a převod na iteraci je implementačně náročný. 22

Modulární násobení - RSA tunel RSA tunel se používá pro modulární násobení v případě, že je k dispozici RSA koprocesor, který rychle spočítá modulární mocninu. Ze známého vztahu: (A + B) 2 = A 2 + 2AA + B 2 Vyplývá (všechny operace jsou modulární): A B = (A + B)2 A 2 B 2 2 Pro výpočet součinu je tedy potřeba spočítat 3 druhé mocniny (a součet modulárně dělit 2). Poznámky: pokud je modul n větší než A*B, tak lze RSA tunel použít i pro násobení (nemodulární) modul n nemusí být ve tvaru n=p*q, kde p a q jsou prvočísla, neboť nevyužíváme algoritmus RSA, pouze koprocesor. Modul se volí ve tvaru 100000000000000000..000000000001 (liché n s potřebným počtem bitů a s minimálním počtem jedniček). V závislosti na implementaci RSA na čipové kartě nemusí být možné použít mocninu s veřejným klíčem, protože velikost veřejného exponentu bývá implementačně omezená (často se používá hodnota 65 537). V tomto případě je nutné použít mocninu s privátním klíčem. Některé implementace počítají mocninu s privátním klíčem výhradně s využitím CRT (čínský teorém o zbytku). Pak nelze zvolit libovolný modul a RSA tunel není použitelný pro násobení. 23

RSA tunel modulární dělení 2 Modulární dělení 2: Pro x<n, n liché, platí: x x 2 mod n = 2 x + n 2 x sudé x má nnnnnžší bbb = 0 x liché (x + n má nnnnnžší bbb = 0) 9 9+11 Příklad: mmm 11 = = 10 2 2 Zkouška: 10 + 10 mmm 11 = 20 mmm 11 = 9 24

RSA tunel 2 Dokonce lze součin spočítat pouze pomocí 2 druhých mocnin: (A + B) 2 (A B) 2 = A 2 + 2AA + B 2 A 2 + 2AA A 2 = 4AA A B = A + B 2 A B 2 4 Modulární dělení 4 se provádí pomocí dvojnásobného dělení 2, dle předchozího příkladu. Reálná výkonnost RSA a RSA 2 tunelu je na čipových kartách srovnatelná. Úspora výpočtu jedné mocniny je eliminována opakovaným modulárním dělením 2. 25

Prostá mocnina čísla Dvojkové umocňování zprava. Základní myšlenkou je rozepsání exponentu jako součtu jeho jednotlivých řádů a následné převedení na součin jednotlivých mocnin, podle známých vztahů: Z (A+B) = Z A *Z B a Z (A*B) = (Z A ) B Kde a i je 0 nebo 1 Zde jsme označili mezivýsledek M i = Z 2i e = i=n 1 a i 2 i i=0 i=n 1 Z e = Z i=n 1 i=0 a i2 i a i = Z 2i = M(i) a i i=0 Ve výše uvedeném vztahu je podstatné průběžné počítání a uchování mezivýsledku Z 2i a jeho opětovné použití v dalším výpočtu. i=n 1 i=0 M i + 1 = Z 2(i+1) = Z 2i 2 = Z 2i 2 = M(i) 2 Tedy v kroku (i+1) předchozí mezivýsledek M i umocníme na druhou a opět uložíme M(i + 1). Pokud a i+1 = 1, tak mezivýsledek a vynásobíme s řetězovým součinem. Pokud a i = 0, neděláme nic násobení jedničkou. Zvětšíme i a přejdeme do vyššího řádu. Počet operací (druhá mocnina mezivýsledku, tedy násobení mezivýsledku sama se sebou) je pouze log 2 n. 26

Modulární mocnina čísla V modulární aritmetice platí (mimo jiné): (a*b) mod n = [(a mod n) * (b mod n)] mod n Proto lze modulární mocninu počítat stejně jako prostou mocninu iterací umocňování zprava, každý mezivýsledek redukujeme (mod n), stejně jako každé násobení. i=n 1 Z e mmm n = Z 2i a i i=0 mmm n Montgomeryho algoritmus se používá pro redukci (mod n), pokud je nutné redukovat velmi velké číslo. 27

Grafy z implementace algoritmů na různých platformách Byly testovány následující platformy programovatelných čipových karet: Java Card (Gemalto TOP IM, Oberthur Id One v7).net card (Gemalto) Multos (ML2-80k, ML3-36k) Všechny karty měly kontaktní rozhraní. Měření byla zatížena malou systematickou chybou spočívající v započtení doby komunikace 1 APDU s kartou k době výpočtu. 28

Násobení Na jednotlivých platformách byla porovnána: Školní metoda Combova metoda RSA tunel RSA 2 tunel Porovnání bylo provedeno pro délky činitelů použitých v algoritmu ProveAtt (1024 a 2048 bitů) Karatsubova metoda nebyla použita (rekurze). Pro každou platformu byl vybrán nejrychlejší algoritmus a platformy byly porovnány. 29

Násobení porovnání algoritmů 30

Násobení porovnání platforem (nejlepší algoritmy) 31

Modulární násobení porovnání platforem 32

Modulární mocnění 33

Odečítání 34

Generování náhodných čísel 35

Teoretická doba výpočtu celého algoritmu 36

Zhodnocení Celkovým vítězem pro implementaci protokolů ANAUT je platforma Multos, především díky knihovní podpoře násobení polí čísel. Gemalto.NET má výkonný 32 bitový procesor ale relativně málo výkonný RSA koprocesor. Gemalto TOP IM ztrácí především v modulárním mocnění málo výkonný RSA koprocesor. Zhodnocení Smart karty mají podporu pro algoritmus RSA ve formě RSA koprocesoru (samozřejmě i ECC, AES, DES). Tato podpora nestačí pro komplikovanější kryptografické algoritmy, i když ji lze zneužít pro některé výpočty. Univerzálně použitelná kryptografická smart karta by měla mít knihovní podporu pro běžnou a modulární aritmetiku s poli čísel. Tomu se blíží (u nás málo známý a málo používaný) systém Multos, který jsme vybrali pro implementaci ANAUT. 37

OKsystem s.r.o. Na Pankráci 125 140 21 Praha 4 tel: +420 236 072 111 www.oksystem.cz www.oksystem.com www.getbabel.com www.okbase.cz www.oksmart.cz Otázky? Děkuji za pozornost Ivo Rosol rosol@oksystem.cz 38