Protichybové kódy, komprese a jak bluffovat o kryptografii" Přednáška pro SČS Ing. Jakub Št astný, Ph.D. 1 1 FPGA Laboratoř/Laboratoř zpracování biologických signálů Katedra teorie obvodů, FEL ČVUT Technická 2, Praha 6, 166 27 21. května 2014
Osnova přednášky 1 Protichybové kódy Úvod Lineární kódy Příklady a aplikace 2 Komprese dat Bezeztrátové kompresní techniky Ztrátová komprese 3 Jak bluffovat o kryptografii 4 Řazení
Varování Pozor! Tato verze přednášky obsahuje materiál chráněný autorskými právy. Je určena pouze k internímu použití a vystavení na WWW stránkách Laboratoře biologických signálů, Katedry teorie obvodů ČVUT FEL, Praha! http://amber.feld.cvut.cz/fpga/prednasky/scs/scs.html
Doporučená literatura Jiří Adámek, Kódování. SNTL Praha 1989 Jan Hlavička,Diagnostika a spolehlivost. Praha, Vydavatelství ČVUT, 1998 Steven W. Smith, The Scientist and Engineer s Guide to Digital Signal Processing. Dostupné na www.dspguide.com
Úvod do bezpečnostních kódů
Aplikace, základní definice aplikace přenos dat v čase i prostoru tolerance poruch kódování: zobrazení K : A B, kde A zdrojová abeceda, znaky B kódová abeceda, znaky B množina vsech slov nad danou abecedou kód množina všech slov K(A) jednoznačně dekódovatelné: K : A B prosté zobrazení blokový kód všechna kódová slova mají stejnou délku n
Bezpečnostní kódy jistota bezpečnosti neexistuje umělé zvýšení redundance zabezpečení před šumem K(A) B příjem kódového slova x? příjem nekódového slova x / K(A) objevení chyby
Hammingova vzd. a vlastnosti kódu definici známe... DCv: dokažte že H.v. je metrika na kódu Kód s minimální H.v. d objevuje všechny t-násobné chyby pro t < d. Kód je schopen opravovat t-násobné chyby má li H.v. alespoň 2t + 1. příklad: opak. kód pro opravu dvojnásobné chyby 0 00000 1 11111 Opakovaci kod pro opravu dvojnasobne chyby 00000 00001 00011 00111 01111 11111 0 1 H.v.=5
Typy kódů blokové (n, k) kódy: k původních bitů zdrojové zprávy n k bitů redundance konvoluční kódy generované kódové slovo závisí jak na aktuálním slově, tak na určitém počtu předchozích zpráv terminologie SEC = Single Error Correcting DED = Double Error Detection SEC-DED? TED?
Systematický (n, k)kód k původních bitů zdrojové zprávy n k bitů redundance H.v. d n k + 1 (proč?) k bitu puv. zpravy n k bezp. informace
Lineární kódy aritmetika modulo 2 (1+1=?) blokový kód délky n je lineární iff kódová slova tvoří lineární podprostor prostoru T n, T = {0, 1} kódová slova lze vyjádřit jako množinu všech řešení soustavy rovnic, aplikace prostředků lineární algebry příklad: sudá parita K PE : v 1 v 2 v 3 v 4 x 1 x 2 x 3 x 4 x 5 x 1 x 2 x 3 x 4 = v 1 v 2 v 3 v 4 x 5 aby počet jedniček v celém slově byl sudý x 1 + x 2 + x 3 + x 4 + x 5 = 0
Lineární kódy příklad: opakovací kód délky 5 pro opravu dvojnásobné chyby 0 00000, 1 11111 soustava rovnic které vyhovují všechna kódová slova x 1 + x 2 = 0 (rce. 1) x 1 + x 3 = 0 (rce. 2) x 1 + x 4 = 0 (rce. 3) x 1 + x 5 = 0 (rce. 4) kódové slovo 00000 všechny rce. splněny OK kódové slovo 11111 všechny rce. splněny OK slovo 11011 rce. 2 neplatí chyba! slovo 10101 rce. 1 a 3 neplatí chyba! Opakovaci kod pro opravu dvojnasobne chyby 00000 00001 00011 00111 01111 11111 0 1 H.v.=5
LinKódy Kontrolní matice kódu H matice soustavy rovnic které vyhovují všechna kódová slova Hx = 0, H M n k,n pro (n, k) kód příklad: op.k. délky 5, 4 rc. 4 řádky,5 bitů 5 sloupců x 1 + x 2 = 0,x 1 + x 3 = 0,x 1 + x 4 = 0,x 1 + x 5 = 0 H = příklad: sudá parita délky 5 x 1 + x 2 + x 3 + x 4 + x 5 = 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 (1) H = [ 1 1 1 1 1 ] (2)
LinKódy Generující matice kódu G popisuje kódování, x = v T G báze kódového prostoru všechna kódová slova jsou LK slov z G pro H = [B E] je G = [E B T ] příklad: opakovací kód délky 5 G = [11111] příklad: sudá parita délky 5 G = 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 kóduji slovo v = [1101] T, x = v T G = [11011] T
LinKódy Oprava a detekce chyb vyšleme x, získáme w = x + e e chybový vektor Hw = H(w + e) = He pro e nekódový chybový vektor objevíme chybu a můžeme ji i opravit příklad: opakovací kód délky 5 H = 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 příjem slova w = [11111] T Hw = [0000], OK příjem slova w = [11011] T Hw = [0100], chyba!
Příklady a aplikace
Hammingovy kódy perfektní blokový kód pro opravu jednoduchých chyb třída blokových (2 m 1, 2 m m 1) kódů m = 3...(7, 4) m = 4...(15, 11) sloupce kontrolní matice jsou všechna nenulová slova dané délky příklad pro (7, 4) kód H = vyplatí se přeskupení do tvaru H = 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 (3) (4)
Příklad zabezpečení NAND Flash ST-Microelectronic, AN1823 App Note SEC-DED po bloku 256 byte Figure 4. Parity Generation for a 256 Byte Input Byte 0 Byte 1 Byte 2 Byte 3... Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0........................ LP0 LP1 LP0 LP1 LP02 LP03... LP14 Byte 252 Byte 253 Byte 254 Byte 255 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 LP0 LP1 LP0 LP1 LP02 LP03... LP15 CP1 CP0 CP1 CP0 CP1 CP0 CP1 CP0 CP3 CP2 CP3 CP2 CP5 CP4
Příklad zabezpečení NAND Flash ST-Microelectronic, AN1823 App Note SEC-DED po bloku 256 byte Hammingův kód (2070, 2048) Figure 4. Parity Generation for a 256 Byte Input Byte 0 Byte 1 Byte 2 Byte 3... Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0........................ LP0 LP1 LP0 LP1 LP02 LP03... LP14 Byte 252 Byte 253 Byte 254 Byte 255 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 LP0 LP1 LP0 LP1 LP02 LP03... LP15 CP1 CP0 CP1 CP0 CP1 CP0 CP1 CP0 CP3 CP2 CP3 CP2 CP5 CP4
Další aplikace RAM paměti výtěžnost výroby TMR systémy safe FSMs aritmetické kódy
Kontrolní součet jednoduchá technika detekce chyby v datech x s = x i mod2 N, nakonec x s = x s rychlý a snadný výpočet proti náhodné modifikaci ne proti úmyslné změně (vložení nul do dat, prohození pořadí slov, více chyb kde e i = 0). příklady aplikace selftest ROM (kontr. součet paměti), EEPROM s konfig. daty čipu RAM
Cyclic Redundancy Check kódy pro detekci a opravu chyb vstup tok dat libovolné velikosti výstup kontrolní součet" blok dat fixní velikost ochrana proti shlukům chyb matematika kolem CRC dosti komplexní, viz [Adámek] n-bitové CRC aplikované na blok dat libovolné délky detekuje jakýkoliv jeden shluk chyb o velikosti max. n s p = 1 2 n libovolný větší shluk chyb
Cyclic Redundancy Check definováno pomocí dělení polynomem výpočet pomocí jednoduchého obvodu normalizované polynomy s danými vlastnostmi př. x 8 + x 7 + x 6 + x 4 + x 2 + 1 počítáme vlastně zbytek po dělení polynomem víme, že x 8 + x 7 + x 6 + x 4 + x 2 + 1 0(modx 8 + x 7 + x 6 + x 4 + x 2 + 1) x 8 x 7 x 6 x 4 x 2 1(modx 8 + x 7 + x 6 + x 4 + x 2 + 1) sem příští rok obrázek CRC generátoru letos byl na vyžádání na tabuli
Komprese dat
Základní dělení bezeztrátová (lossless) spustitelný kód, textová data, numerické soubory,... pro daný soubor a algoritmus fixní kompresní poměr ztrátová (lossy) hudba, fotografie,... čím větší kompresní poměr, tím horší kvalita percepční komprese proč komprese? cena...
Run-Length Encoding nejjednodušší technika základ dalších metod JPG, MP3 data často obsahují sekvenci stejných slov 17 8 54 0 0 0 97 5 16 0 45 23 0 0 0 0 0... 17 8 54 0 3 97 5 16 0 1 45 23 0 5 komprimovat lze sekvence libovolných znaků řídící_znak opak_byte počet i jednoduchý výskyt řídícího znaku je pak kódován
Huffmanovo kódování základ daších metod JPG, MP3 prefixový kód: prefixem slova b 1 b 2 b 3...b n jsou... prefixové kódování: prosté a žádné slovo není prefixem jiného slova Zde jsem letos na tabuli dělal Huffmanův strom, příští rok jako slídu
Delta kódování pro spojité signály malé změny malé hodnoty, kvantování kombinuje se s Huffmanovým kódováním, nebo RLE
LZW Komprese Lempel-Ziv-Welch text, spustitelné kódy na 50% použití: NTFS, GIF,... (už ne)patentovaný algoritmus slovníkové komprese více viz http://www.dspguide.com/ch27/5.htm
Ztrátová komprese
Joint Photographers Expert group, 1992 transformační komprese JPG komprese základní myšlenka: po výpočtu spektra už si nejsou všechna data "rovna", NF složky jsou důležitější
1 rozklad obr. na čtverečky 8 8 JPG komprese postup 2 výpočet 2D DCT ze "čtverečků" 2D spektra
1 rozklad obr. na čtverečky 8 8 JPG komprese postup 2 výpočet 2D DCT ze "čtverečků" 2D spektra 3 aplikace kvantizační matice, vybrána podle kompresního poměru
JPG komprese postup 1 rozklad obr. na čtverečky 8 8 2 výpočet 2D DCT ze "čtverečků" 2D spektra 3 aplikace kvantizační matice 4 konverze 2D vzoru do lin. pole, VF komponenty blízké nule se dostanou za sebe" což je výhodné pro RLE kompresi
JPG komprese postup 1 rozklad obr. na čtverečky 8 8 2 výpočet 2D DCT ze "čtverečků" 2D spektra 3 aplikace kvantizační matice 4 konverze 2D vzoru do lin. pole 5 Run-Length Encoding 6 Huffman encoding
JPG komprese kompresní poměr
MP3 komprese psychoakustický model MPEG Layer III = MP3, SPL = Sound Pressure Level Zdroj: Audio Coding: An Introduction to Data Compression http://www.digitaltvdesignline.com/howto/hdrecording/202601553
MP3 komprese maskování ve frekvenci práh slyšitelnosti není fixní schováme q-šum tam, kde není slyšet Zdroj: Audio Coding: An Introduction to Data Compression http://www.digitaltvdesignline.com/howto/hdrecording/202601553
MP3 komprese maskování v čase maskování dokonce i před! tónem
MP3 komprese postup komprese 1 adaptivní segmentace 2 výpočet spektra 3 identifikace sluchově významných harmonických složek 4 výpočet práhu slyšitelnosti 5 odstranění všeho co není" slyšet Kompresní poměr až 10:1 Zdroj: Audio Coding: An Introduction to Data Compression http://www.digitaltvdesignline.com/howto/hdrecording/202601553
Jak bluffovat o kryptografii
Terminologie plaintext/otevřený text originální zpráva ciphertext/šiforvaný text zašifrovaná zpráva cipher/šifra algoritmus převádějící otevřený text na šifrovaný text key/klíč informace použitá šifrou a známá jen odesílateli a adresátovi cryptography/kryptografie hledání metod jak zajistit bezpečnost ŠT cryptanalysis/kryptoanalýza studium principů a metod jak se dozvědět OT bez znalosti klíče bloková šifra po blocích proudová šifra kontinuálně
K čemu je kryptografie autentizace uživatele autentizace dat (integrita a originalita původu) potvrzení původu utajení dat aplikace telekomunikace (GSM, etc.) multimédia (DRM, DVD, SAT TV) obecná komunikace (mail) bankovní sektor
Implementační vlastnosti šifer náklady na prolomení úměrné ceně kódované zprávy Freshness/novost pro stejný OT nikdy není stejný ŠT implementace bez postranních kanálů (časový útok, DPA, SPA) Kerckhoffův princip (Shannonova formulace): The enemy knows the system."
Symetrické šifry odesílatel i adresát používají stejný klíč rychlost nutnost distribuce klíčů pro n osob n(n 1) 2 klíčů DES, 3DES, BlowFish, IDEA, AES,... Figure is copied from http://commons.wikimedia.org/wiki/image:symetrick%c3%a1_%c5%a1ifra.png
Asymetrické šifry odesílatel a adresát mají odlišné klíče jednoduché předání klíče málo klíčů pomalost ověření pravosti klíče RSA,... Figure is copied from http://upload.wikimedia.org/wikipedia/commons/f/f9/public_key_encryption.svg
ekvivalent zaručeného podpisu Digitální podpis autenticita, nezfalšovatelnost, nezaměnitelnost a nepopiratelnost autorství dokumentu algoritmus podpisu podpisování odesílatel: 1 výpočet otisku (hash funkce) z dokumentu 2 zašifrování otisku soukromým klíčem a přiložení k dokumentu algoritmus podpisu ověření adresát: 1 dešifrování přiloženého otisku veřejným klíčem 2 výpočet skutečného otisku z dokumentu 3 srovnání obou, rovnají se potvrzení identity ověření původu veřejného klíče 1 cerfifikační autorita zašifruje veřejný klíč odesílatele svým privátním klíčem 2 adresát rozšifruje veřejný klíč odesílatele veřejným klíčem certifikační autority
Kvantová kryptografie pozorování mění stav objektu jistá detekce odposlechu distribuce klíče
Řazení dat
Základní pojmy třídění podle relace ekvivalence řazení podle relace uspořádání sekvenční/přímý přístup k datům přirozenost předřazená data se seřadí rychleji stabilita nemění se pořadí shodných položek prostorová a časová složitost (min. Nlog 2 N kroků) vnitřní vnější řazení dat řazení s přesunem bez přesunu položek (indexový soubor) existují hotové generické knihovny
Metody Bubble sort, Quick sort na tabuli" Merge sort rekurzivní skládání posloupností Radix sort řazení podle řádů Řazení s pomocí rozptylovacích funkcí Specielní paralelní algoritmy Shear sort, Bitonix sort atd...
Řazení výběrem maxima/minima řazení postupným vyhledáváním min/max hodnoty O(N 2 ) stabilní algoritmus
Řazení postupným zaměňováním řazení postupným vyhledáváním min/max hodnoty O(N 2 ) stabilní algoritmus procedure bubblesort(a : list of sortable items) n := length(a) do swapped := false n := n - 1 for each i in 0 to n do: if A[ i ] > A[ i + 1 ] then swap( A[ i ], A[ i + 1 ] ) swapped := true end if end for while swapped
QuickSort řazení technikou rozděl a panuj O(N log N) nestabilní algoritmus function quicksort(array) var list less, greater if length(array) 1 return array select a pivot value pivot from array for each x in array if x pivot then append x to less if x > pivot then append x to greater return concatenate(quicksort(less), pivot, quicksort(greater))