ALGEBRAICZNE ASPEKTY KRYPTOGRAFII LISTA 2: Kodowanie grupowe.
Niech A = {a1, ..., an} b¸edzie sko´nczonym alfabetem i LA b¸edzie j¸ezykiem nad A. Niech LB b¸edzie j¸ezykiem nad alfabetem B. Niech S ⊆ LA b¸edzie zbiorem komunikat´ow i 1-1-funkcja E : S → LB b¸edzie kodowaniem zbioru S w j¸ezyku LB. Funkcja D : LB → S (je´sli istnieje) jest odpowiednim dekodowaniem, je´sli D(E(¯a)) =
¯
a. Rozpatrzmy nast¸epuj¸acy schemat:
¯
a → E(¯a) → ...kana l...transmisyjny... → ¯b0 → D(¯b0)
¯b = E(¯a) := kod s lowa ¯a;
T : LB → LB:= funkcja b l¸edu;
¯b0 = T (E(¯a)) := kod komunikatu wyj´sciowego;
D(¯b0) := komunikat wyj´sciowy.
Kody blokowe. Niech A = {0, 1} = B. Niech Zn2 b¸edzie grup¸a wszystkich ci¸ag´ow (0,1)-warto´sciowych d lugo´sci n wzgl¸edem dodawania w Z2. (m, n)-Kodowaniem blokowym (r´ownomiernym) (m ≤ n) nazywamy funkcj¸e E : Zm2 → Zn2. Funkcja E ma rozsz- erzenie do funkcji kodowania zbioru wszystkich s l´ow o d lugo´sci postaci m · k w j¸ezyku L{0,1}.
Niech Γ b¸edzie zbiorem funkcji b l¸edu T : Zn2 → Zn2. Kodowanie E umo˙zliwia wykrycie b l¸ed´ow zbioru Γ, je´sli dla ka˙zdej funkcji T ∈ Γ, warunek T (E(¯a)) 6= E(¯a) implikuje T (E(¯a)) 6= E(¯b) dla wszystkich ¯b ∈ Zm2 .
Kodowanie E umo˙zliwia korygowanie b l¸ed´ow zbioru Γ, je´sli istnieje funkcja D : Zn2 → Zm2 taka, ˙ze dla ka˙zdej T ∈ Γ zachodzi D(T (E(¯a))) = ¯a, gdzie ¯a ∈ Zm2 . Okre´sla to funkcj¸e dekodowania na zbiorze wszystkich s l´ow 0-1-ynkowych 1. Dlatego dalej m´owimy, ˙ze D jest funkcj¸a dekodowania.
Dla ¯a ∈ Zn2 definiujemy wag¸e w(¯a) jako ilo´s´c jedynek w ¯a. Odleg lo´sci¸a mi¸edzy wektorami d(¯a, ¯b) nazywamy wag¸e w(¯a + ¯b).
Niech Γk b¸edzie zbiorem wszystkich funkcji b l¸edu T : Zn2 → Zn2 produkuj¸acych nie wi¸ecej ni˙z k b l¸ed´ow: d(¯a, T (¯a)) ≤ k.
Uwaga 2.1. Kodowanie E umo˙zliwia wykrycie b l¸ed´ow ka˙zdej funkcji T ∈ Γk (zbioru Γk) wtedy i tylko wtedy gdy dla dowolnych ¯a, ¯b ∈ Zm2 d(E(¯a), E(¯b)) ≥ k + 1.
Funkcja kodowania E umo˙zliwia korygowanie b l¸ed´ow ka˙zdej funkcji T ∈ Γk(zbioru Γk) wtedy i tylko wtedy gdy dla dowolnych ¯a, ¯b ∈ Zm2 , d(E(¯a), E(¯b)) ≥ 2k + 1. 2
1. Niech funkcja (m,m+1)-kodowania jest okre´slona w nast¸epuj¸acy spos´ob: E(a1...am)
= (a1, ..., am, am+1) gdzie am+1 = 0, je´sli Σi=1m ai jest parzysta i am+1 = 1, je´sli Σmi=1ai jest nieparzysta. Dla jakich k kodowanie E umo˙zliwia wykrycie b l¸ed´ow funkcji zbioru Γk?
1W spos´ob oczywisty rozszerzamy funkcj¸e D na wektory o d lugo´sci podzielnej przez n. Na pozosta le wektory D mo˙ze by´c rozszerzona w spos´ob trywialny, odwzorowuj¸ac je w wektor zerowy.
1
2. Niech funkcja (1,3)-kodowania jest okre´slona w nast¸epuj¸acy spos´ob: E(0) = (000) i E(1) = (111). Znale´z´c funkcj¸e dekodowania koryguj¸ac¸a wszystkie b l¸edy zbioru Γ1.
Kodowanie blokowe E nazywamy kodowaniem grupowym, je´sli E(Zm2 ), zbi´or s l´ow kodowych, tworzy podgrup¸e grupy Zn2 wzgl¸edem dodawania w Z2.
Uwaga 2.2. W kodowaniu grupowym minimalna odleg lo´s´c pomi¸edzy wektorami zbioru E(Zm2 ) jest r´owna minimalnej wadze nietrywialnego wektora tego zbioru. 2
3. Udowodni´c, ˙ze w kodowaniu grupowym minimalna odleg lo´s´c pomi¸edzy wek- torami zbioru H = E(Zm2 ) jest osi¸agalna dla ka˙zdego wektora tego zbioru:
∀¯b ∈ H∃¯c ∈ H(d(¯b, ¯c) jest minimalna).
Funkcja kodowania E jest kodowaniem macierzowym je´sli dla pewnej (m × n)- macierzy C (o wsp´o lczynnikach ze zbioru Z2) wiersz E(¯a) jest r´owny ¯a · C.
4. Pokaza´c, ˙ze kodowanie macierzowe jest kodowaniem grupowym.
5. Dla nast¸epuj¸acych macierzy wskaza´c dla jakich k odpowiednie kodowanie umo˙zliwia wykrycie b l¸ed´ow i korygowanie b l¸ed´ow.
1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1
,
"
1 0 1 0 1 0 1 1 1 0
#
6. M´owimy, ˙ze kodowania E i E0 : Zm2 → Zn2 s¸a r´ownowa˙zne, je´sli istnieje bijekcja E(Zm2 ) → E0(Zm2 ) zachowuj¸aca odleg lo´s´c mi¸edzy s lowami kodowymi. Wykaza´c, ˙ze w wyniku (a) dowolnej permutacji wierszy macierzy koduj¸acej C, (b) permutacji kolumn macierzy C, (c) dodania do pewnego wiersza innego pomno˙zonego przez sta l¸a - otrzymamy now¸a macierz generuj¸aca kodowanie r´ownowa˙zne z kodowaniem macierzy C.
Niech funkcja kodowania E : Zm2 → Zn2 jest okre´slona przez (m × n)-macierz C. Macierz C∗ wymiaru n × (n − m) nazywa si¸e macierz¸a sprawdzania parzysto´sci (macierz¸a kontroln¸a), je´sli C · C∗ = 0 i kolumny macierzy C∗ s¸a liniowo niezale˙zne.
Uwaga 2.3. Dla ka˙zdej macierzy koduj¸acej C istnieje macierz sprawdzania parzysto´sci C∗. Wtedy dla ka˙zdego s lowa kodowego ¯w zachodzi ¯w · C∗ = ¯0. Wtedy minimalna waga niezerowego s lowa kodowego jest r´owna najmniejszej liczbie wierszy macierzy C∗, kt´ore po dodaniu do siebie daj¸a ¯0. 2
7. Znale´z´c macierze sprawdzania parzysto´sci dla macierzy kodowych zadania 5.
Funkcja kodowania E : Zm2 → Zn2 nazywa si¸e kodowaniem wielomianowym, je´sli dla pewnego g(x) ∈ Z2[x] (nazywanego wielomianem generuj¸acym) je´sli E(¯a) = ¯b, to bnxn−1+ ... + b1 = g(x) · (amxm−1+ ... + a1). (zak ladamy, ˙ze je´sli g(x) = gkxk+ ... + g0, to g0 6= 0 6= gk).
Uwaga 2.4. Kodowanie wielomianowe jest kodowaniem macierzowym. Je´sli wielomian generuj¸acy ma posta´c g(x) = gkxk + ... + g0, to odpowiednia macierz (m × (m + k)) jest r´owna :
2
g0 g1 g2 .. .. gk 0 .. .. 0 0 g0 g1 .. .. .. gk 0 .. 0 .. .. .. .. .. .. .. .. .. ..
0 .. .. .. g0 .. .. .. .. gk
2
8. Znale´z´c macierze dla wielomian´ow generuj¸acych: 1 + x i 1 + x + x2.
Uwaga 2.5. Minimalny odst¸ep mi¸edzy dwoma s lowami kodowymi jest r´owny minimalnej wadze w(a(x) · g(x)) dla ¯a ∈ Zm2 \ {¯0} (przez a(x) oznaczamy wielomian amxm−1+ ... + a1)). 2
Twierdzenie 2.6. Je´sli wielomian g(x) nie jest dzielnikiem ˙zadnego wielomianu postaci xk− 1, gdzie k < n, to dla (m,n)-kodowania generowanego przez wielomian g(x) minimalny odst¸ep mi¸edzy s lowami kodowymi jest r´owny 3. 2
Wielomian g(x) stopnia k nad Zp nazywamy pierwotnym, je´sli g(x)|(xm− 1) dla m = pk−1 i dla ˙zadnego innego mniejszego m. Wtedy pk−1 nazywamy wyk ladnikiem wielomianu g(x).
9. Pokaza´c, ˙ze x3 + x2 + 1 (wielomian generuj¸acy (4,7)-kod Hamminga) jest wielomianem pierwotnym.
Twierdzenie 2.7. Je´sli wielomian g(x) = (1 + x)h(x) nad Z2 generuje (m,n)- kodowanie E(¯z), i h(x) ma wyk ladnik > n, to dowolna kombinacja dw´och b l¸ed´ow pojedy´nczych lub podw´ojnych (s¸asiaduj¸acych) mo˙ze by´c wykryta. 2
W ka˙zdej warstwie podgrupy H = E(Zm2 ) ≤ Zn2 wybieramy element o najmniejszej wadze ¯c, g l´owny reprezentant warstwy (zak ladamy, ˙ze ¯0 reprezentuje H). Wtedy ka˙zdy wektor ¯z zbioru Zn2 ma jednoznaczne przedstawienie w postaci ¯cz+ ¯h, gdzie ¯h ∈ H i
¯
cz jest reprezentantem g l´ownym warstwy ¯z + H.
Dekodowanie D(¯z) = E−1(¯z − ¯cz) nazywamy dekodowaniem poprzez g l´ownych reprezentant´ow warstw.
Uwaga 2.8. W dekodowaniu poprzez g l´ownych reprezentant´ow warstw mini- malna odleg lo´s´c od ¯z do elementu zbioru H jest r´owna w(¯cz). 2
10. Niech C∗ b¸edzie macierz¸a sprawdzania parzysto´sci. Iloczyn ¯w · C∗ nazywa si¸e syndromem s lowa ¯w ∈ Zn2.
(a) Pokaza´c, ˙ze istnieje naturalna bijekcja mi¸edzy zbiorem syndrom´ow a g l´ownymi reprezentantami warstw.
(b) Wykaza´c, ˙ze warstwa, kt´orej syndromem jest ¯v, zawiera wektor o wadze r wtedy i tylko wtedy gdy pewna kombinacja r wierszy macierzy C∗ jest r´owna ¯v.
(m, n)-Kodowanie E koryguj¸ace b l¸edy o wadze k, nazywa si¸e doskona lym, je´sli istnieje funkcja dekodowania D : Zn2 → Zm2 taka, ˙ze dla ka˙zdego ¯a ∈ Zm2 zachodzi
D−1(¯a) = {¯b : d(¯b, E(¯a)) ≤ k}.
Wtedy minimalna odleg lo´s´c od ka˙zdego ¯z ∈ Zn2 do elementu zbioru H jest ≤ k.
3
11. Pokaza´c, ˙ze parametry kodowania doskona lego spe lniaj¸a r´owno´s´c 1 + n + ... + (nk) = 2n−m.
12. W przypadku k = 1 kodowanie jest doskona le wtedy i tylko wtedy gdy g l´owni reprezentanci warstw maj¸a wag¸e 1.
Kod Hamminga (kodowanie doskona le dla k = 1). Niech r b¸edzie dowoln¸a liczb¸a naturaln¸a i niech m := 2r − 1 − r i n := 2r − 1. Wtedy zachodzi r´owno´s´c zadania 11: 1 + n = 2r = 2n−m.
Dodatni¸a liczb¸e i ≤ n przedstawiamy w systemie dw´ojkowym jako wektor αi1αi2...αir
(zak ladaj¸ac i = αi1+ αi22 + ... + αir2r−1). Niech macierz C∗ (kt´ora b¸edzie pe lni´c rol¸e macierzy sprawdzania parzysto´sci) b¸edzie okre´slona w nast¸epuj¸acy spos´ob:
α11 α12 .. .. .. α1r α21 α22 .. .. .. α2r .. .. .. .. .. ..
αn1 αnr .. .. .. αnr
Wycinaj¸ac w C∗ wszystkie wiersze o numerach 2i (tzn. zawieraj¸ace dok ladnie jedn¸a jedynk¸e) otrzymujemy macierz pomocnicz¸a M . Niech ν(i) b¸edzie numerem i-go wier- sza macierzy M w macierzy C∗.
Macierz kodowania C definiujemy w nast¸epuj¸acy spos´ob: jako 2i−1-t¸a kolumn¸e macierzy C bierzemy i-t¸a kolumn¸e macierzy M . W pozosta lych m (= n − r) kolum- nach macierzy C umieszczamy po kolei m-wektory postaci ¯ei = (0, ..., 0, 1, 0, ..., 0) (gwarantuje to, ˙ze wiersze macierzy C s¸a liniowo niezale˙zne). Latwo wida´c, ˙ze wektor
¯
ei b¸edzie znajdowa l si¸e w C na miejscu ν(i).
Dla sprawdzenia r´owno´sci C · C∗ = 0, rozwa˙zmy iloczyn i-go wiersza ¯c macierzy C i k-ej kolumny ¯c∗ macierzy C∗. Poniewa˙z pierwszy niezerowy element w ¯c∗ znajduje si¸e na miejscu 2k−1 (tzn. = α2k−1,k) a pozosta le elementy o numerach postaci 2j s¸a r´owne 0, otrzymujemy
¯
c¯c∗ = αν(i),k · 1 + 1 · αν(i),k = 0.
Funkcja dekodowania powy˙zszego kodu jest okre´slona w nast¸epuj¸acy spos´ob. Dla
¯b ∈ Zn2 obliczamy syndrom ¯b · C∗, kt´ory b¸ed¸ac ci¸agiem z Zr2, jest postaci¸a dw´ojkow¸a pewnej liczby j ∈ {1, 2, ..., n}. Wtedy wektor (b1, ..., bj + 1, bj+1, ..., bn) ma trywialny syndrom (tzn. jest wektorem kodowym). Ci¸ag wsp´o lrz¸ednych, numery kt´orych nie s¸a pot¸egami dw´ojki, definiuje wektor - wynik dekodowania.
Opisany spos´ob dekodowania pokazuje, ˙ze kodowanie Hamminga jest doskona le.
13. Stosuj¸ac (4,7)-kod Hamminga otrzymali´smy s lowo 0111110. Zak ladaj¸ac wyst¸apienie nie wi¸ecej ni˙z jednego b l¸edu, znale´z´c s lowo transmitowane.
14. Zbudowa´c (11,15)-kod Hamminga.
4