Artykuł przedstawia wybrane metody ochrony transmisji mediów strumieniowych. Jest to technika polegająca na przesyłaniu skompresowanych danych multimedialnych przez sieć w postaci strumienia pakietów przetwarzanych na bieżąco w odbiorniku, tzn. nie występuje potrzeba pobrania całego pliku przed rozpoczęciem odtwarzania. Znajduje ona zastosowanie w realizacji szeregu usług – wideo na życzenie, telewizja internetowa, wideokonferencja, telefonia VoIP, przeglądanie baz danych z obrazami medycznymi. W pierwszej części artykułu dokonano przeglądu algorytmów kryptograficznych powiązanych z kompresją danych, poświęcając najwięcej miejsca selektywnemu szyfrowaniu. W niniejszej części zostaną przedstawione opisy narzędzi dostarczających usług poufności, uwierzytelniania i integralności oraz kontroli dostępu obrazów i materiału wideo, a także implementacja standardów JPEG 2000, MPEG-4 oraz niektórych algorytmów szyfrowania wideo. Tematyka artykułu jest poruszana w źródłach poświęconych bezpiecznej transmisji multimedialnej.
1. Rozwiązania dostarczające poufności
1.1. Bezpieczna skalowalna transmisja strumieniowa i transkodowanie
W części ósmej specyfikacji JPEG2000 o nazwie Secure JPEG 2000 (JPSEC) zdefiniowano kilka rozwiązań oferujących usługę poufności. Jednym z nich jest bezpieczna skalowalna transmisja strumieniowa i transkodowanie (bezpieczny skalowalny streaming i transcoding – BSSiT) [WeAp03, WeAp04]. Zabezpieczony w nim strumień bitowy JPSEC jest adaptowany do dynamicznie zmieniających się warunków sieciowych lub pojemności odbiorników/klientów, bez wymogu deszyfrowania w węzłach pośredniczących. BSSiT jest realizowany poprzez obcinanie lub porzucanie zaszyfrowanych pakietów JPEG2000 (różnych od pakietów sieciowych) w węzłach pośredniczących, na podstawie wcześniejszej analizy ich nagłówków. Skutkuje to zmianami parametrów strumienia bitowego – redukcją przepływności bitowej/ szerokości pasma lub rozdzielczości.
Proces tworzenia zaszyfrowanych pakietów JPEG2000 został przedstawiony na rys. 1. Obejmuje on: analizę składni skalowalnych strumieni bitowych, pobranie wybranych segmentów danych, formowanie pól danych pakietów (łączenie segmentów, dodawanie losowego wektora inicjującego, dopełnianie długości), szyfrowanie pakietów, dołączanie nagłówków do pakietów. Analizowane są między innymi dane nagłówkowe w celu uzyskania informacji o użytych parametrach kodowania strumienia. Losowy wektor początkowy (Initial Vector, IV) jest stosowany do zróżnicowania wyników szyfrowania poszczególnych pakietów, natomiast dopełnianie – w celu osiągnięcia rozmiaru danych wejściowych wymaganego przez dany algorytm szyfrowania, przykładowo AES. Nagłówki pakietów nie są szyfrowane; zawierają informacje o punktach odcięcia oraz priorytetach pakietów.
W BSSiT nie stosuje się deszyfrowania strumienia JPSEC w węźle pośredniczącym, ponieważ jest to nieodpowiednie do systemu wymagającego gwarancji bezpieczeństwa w ujęciu od końca do końca. Z kolei tworzenie szyfrogramu w węzłach startowych może być uzyskane różnymi sposobami, a optymalna metoda stanowi wypośrodkowanie pomiędzy zakresem danych poddawanych szyfrowaniu a swobodą późniejszego transkodowania.
![](/images/old/stories/zdjecia_artykuly/1_2008/art5_1_2008/rys1.jpg)
Rys. 1. Tworzenie bezpiecznego skalowalnego pakietu [WeAp03]
Może ona polegać na szyfrowaniu segmentów JPEG2000, obejmujących nagłówki i ciała pakietów, oraz umieszczeniu markera SEC w głównym nagłówku strumienia kodowego, który to marker określa rodzaj zaszyfrowanych danych. Metadane mogą zawierać parametry związane zarówno z obrazem jak i strumieniem bitowym określonej Strefy Wpływów (Zone of Influence, ZOI), odzwierciedlające odpowiedniość między zaszyfrowanymi segmentami danych a właściwościami obrazu oraz wykorzystywane podczas bezpiecznego transkodowania strumienia kodowego JPSEC.
Łączne przetwarzanie nagłówków i ciał pakietów oraz wielu segmentów JPEG2000 wiąże się z mniej dokładną analizą składniową strumienia kodowego, posługiwaniem się ZOI, ukrywaniem granic pomiędzy indywidualnymi pakietami. Zmniejsza to złożoność szyfrowania/deszyfrowania, a także skomplikowanie oraz elastyczność transkodera w porównaniu z szyfrowaniem ograniczonym tylko do ciała pakietu.
Z kolei zastosowanie szyfrowania ograniczonego tylko do pól danych pakietów JPEG2000 wiąże się z większą swobodą adaptacji i ma bardzo niewielki wpływ na wydajność kompresji.
Szyfrowanie i bezpieczne transkodowanie można zastosować do zabezpieczenia strumienia kodowego JPEG2000, zawierającego segmenty danych uszeregowane w porządku RLCP (wiodące rozdzielczości i warstwy jakości).
Szyfrowane są kolejne segmenty danych, odpowiadające trzem rozdzielczościom. Nagłówek JPSEC definiuje trzy ZOI, które precyzują: rozdzielczość, segment strumienia bitowego i szablon szyfrowania (zbiór wartości parametrów procesu szyfrowania).
Rys. 2. Formowanie strumienia JPSEC przy rozmieszczeniu segmentów JPEG2000 w kolejności PCRL [WeAp04]
Transkoder analizuje nagłówek SEC, identyfikuje położenie segmentów danych odpowiadających określonym rozdzielczościom, które są porzucane lub zachowywane.
Jeżeli adaptacja ma być przeprowadzana według rozdzielczości takiej, jak powyżej, a segmenty danych są rozmieszczone w strumieniu kodowym JPEG2000 w innej kolejności, przykładowo PCRL, to w celu przeprowadzenia szyfrowania należy dodatkowo zmienić kolejność segmentów tak, aby były one ciągłe ze względu na rozdzielczość. Wymaga to wprowadzenia ZOI także w polu danych strumienia kodowego, zawierających parametry związane ze strumieniem bitowym oraz pakietami, które odzwierciedlają proces zmiany kolejności segmentów danych poprzez wskazanie granic między pakietami w obrębie segmentów. ZOI w polu danych JPSEC służy do odwrócenia zmian kolejności oraz prowadzenia bardziej dokładnego transkodowania. Z kolei znaczniki SEC mają ZOI z parametrami dotyczącymi obrazu oraz strumienia bitowego i są stosowane przy zgrubnej adaptacji.
BSSiT może być również użyty do zabezpieczania drobnoziarnistej skalowalności (Fine Granularity Scalability, FGS) [WeAp01, ZhYu05], funkcjonującej w ramach standardu MPEG-4, która zapewnia elastyczną adaptację do zmiennych warunków sieciowych lub różnych potrzeb aplikacji. Skompresowana sekwencja wideo tworzy strumień bitowy złożony z warstwy bazowej oraz wzbogacającej. Nieskalowalna część bazowa przenosi dane dotyczące niskich jakości i przepływności binarnych, natomiast składnik udoskonalający to dodatkowe dopełniające bity, prowadzące do otrzymania zbioru różnych, większych szybkości transmisji oraz wyższej jakości wideo. Fragment wzmacniającego strumienia bitowego jest uzyskiwany z różnicy pomiędzy zakodowaną warstwą bazową ramki a oryginalną ramką i zalicza się do niego rezydua ramek zakodowane w sposób gwarantujący skalowalność. Przy tworzeniu warstwy bazowej stosowane jest kodowanie predykcyjne z użyciem ramek typu I, P, B, a przy tworzeniu warstwy wzbogacającej – kodowanie bitplanów.
BSSiT w tym przypadku koduje i szyfruje obie warstwy do postaci pakietów reprezentujących różne priorytety, których nagłówki nie są szyfrowane oraz przechowują dane wpływające na kolejność porzucania. Jeśli dane warstwy wzmacniającej są transmitowane w obrębie pojedynczego pakietu, to implementuje się progresywne szyfrowanie, aby dane mogły być obcięte w dowolnym punkcie w celu osiągnięcia dokładnej redukcji szybkości bitowej przez transkoder. W przeciwnym wypadku używane są różne opcje pakietyzacji.
Ramka wzmacniająca może być kodowana w jeden strumień bitowy, który jest następnie segmentowany w pakiety. Wcześniejsze fragmenty strumienia posiadają wyższy priorytet. Redukcja przepływności jest osiągana poprzez porzucanie pakietów związanych z niższą jakością. Dokładniejsze dopasowanie szybkości bitowej jest osiągane poprzez obcięcie pakietu.
Innym sposobem jest podział danych uwydatniających na przestrzenne regiony. Każdy z nich jest skalowalnie kodowany do oddzielnych pakietów z użyciem technik progresywnego szyfrowania. Każdy pakiet odpowiada wtedy regionowi w ramce wideo i może być transkodowany przez obcięcie, stąd transkoder węzła sieciowego dokonuje dostrajania szybkości bitowej przez obcięcie przechodzącego przez niego zaszyfrowanego pakietu FGS.
Rys. 3. Tworzenie podpisu w trybie uwierzytelnienia stratnego [ZhQi04]; znaczenie skrótów: WT - transmisja falkowa (welvet transform), Q - kwantyzacja (quantization), ROI - obszar zainteresowania (region of interest), ECC - kod prewencji błędów (error correction code), PCB - bity kontroli parzystości (parity check bits)
Bezpieczny skalowalny streaming i transkodowanie znajdują potencjalne zastosowanie również w trójwymiarowym podpasmowym kodowaniu – procesie prowadzącym do uzyskania na bazie sekwencji wideo niezależnie dekodowalnych pakietów o równym priorytecie. Koder BSSiT szyfruje progresywnie każdy pakiet, z wyjątkiem nagłówków, które przechowują informacje o punktach odcięcia wykorzystywanych do realizacji transkodowania.
1.1.1. Wpływ warunków transmisji
W BSSiT ma miejsce adaptacja do warunków transmisji oraz pojemności odbiorników końcowych. Polega ona na zoptymalizowanym pod kątem wielkości wprowadzanych zniekształceń, wyrażonym za pośrednictwem błędu średniokwadratowego, transkodowaniu wielu pakietów, przeprowadzanym z zastosowaniem punktów obcięcia pakietów.
Jeżeli koder JPEG2000 używa trzech poziomów rozdzielczości i trzech warstw jakości na daną rozdzielczość, to przy wzroście odbieranej szybkości bitowej, wyrażonej poprzez liczbę bitów na piksel, wielkość MSE spada skokowo. Przy większych szybkościach bitowych osiąga się lepsze aproksymacje obrazów.
BSSiT charakteryzuje również narzut na tle oryginalnej szybkości kodowania, związany z nagłówkami oraz offsetami segmentów JPEG2000, który przy zastosowaniu szyfru AES maleje z 14 do 4% przy liczbie dekodowanych segmentów wynoszącej od 1 do 9, co wiąże się ze stałym rozmiarem nagłówków pakietów.
Podobne wyniki w zakresie MSE oraz narzutu występują, gdy zachodzi kodowanie ramek wideo w trzy rozdzielczości i dziewięć warstw jakości – MSE jest mniejszy o 100 jednostek.
Rys. 4. Sprawdzenie podpisu wygenerowanego w trybie uwierzytelniania stratnego [ZhQi04]; znaczenie wcześniej nie wyjaśnionych skrótów: InvQ - odwrotna kwantyzacja (inverted quantization), InvWT - odwrotna transformata falkowa (inverted wevelet transform)
Wpływ warunków transmisji jest zależny od wymienionych powyżej właściwości metod szyfrowania stosowanych przy tworzeniu pakietów BSSiT.
1.1.2. Szyfrowanie drobnoziarnistej skalowalności standardu MPEG-4
Szyfrowanie FGS nie powinno zaburzać zdolności adaptacyjnych i powinno umożliwiać ich realizację bez potrzeby zamiany szyfrogramu na tekst jawny. Dwa przykładowe algorytmy ochrony skalowalności zostały przedstawione w pracy pt. Scalable Protection for MPEG-4 Fine Granularity Scalability [ZhYu05].
Jeden z nich szyfruje strumień FGS w pojedynczą warstwę dostępową, zachowując jednak oryginalne właściwości skalowania oraz odporność na błędy w zaszyfrowanym strumieniu. Jest to osiągnięte poprzez szyfrowanie bezpośrednie lub selektywne warstwy bazowej i selektywne części wzmacniającej. Selektywne przetwarzanie warstwy podstawowej obejmuje wartości DC oraz bity znaków współczynników DCT, bity znaków i rezydua wektorów ruchu każdej płaszczyzny obiektu wideo (Video Object Plane, VOP). Z kolei bezpośrednie szyfrowanie nie dotyczy nagłówków VOP. W selektywnym szyfrowaniu warstwy wzbogacającej przetwarzane są wymienione elementy składni MPEG. Procesy te są wdrażane po działaniu kodera entropijnego , dlatego nie obniżają wydajności kodowania, natomiast zmniejszenie stopnia kompresji nie występuje lub jest pomijalnie małe. Propagacja błędów jest taka sama jak w nieprzetwarzanym FGS ze względu na zastosowanie szyfru strumieniowego. Mimo zaszyfrowania warstwy wzbogacającej wszelakie operacje skalowania są możliwe, ponieważ zachodzi pełna zgodność z formatem FGS MPEG-4.
Drugi algorytm szyfruje strumień FGS na wiele warstw jakości, rozróżnianych według wartości szczytowej stosunku sygnału do szumu (peak signal-to-noise ratio, PSNR) lub szybkości bitowej, przy czym płaszczyzny wyższe mają dostęp do swych niższych odpowiedników tego samego typu. Inaczej rzecz ujmując, jeżeli użytkownik chce uzyskać dostęp do danej warstwy jakości, to są do niego przesyłane klucze służące do odszyfrowania wspomnianej warstwy i jej niskojakościowych odpowiedników. W aplikacjach strumieniowych szczególnie przydatne są warstwy szybkości bitowej. Jeśli serwer strumieniowy posiada informacje o punktach granicznych pomiędzy poszczególnymi warstwami, to nie dochodzi do utraty pasma na przesyłanie dodatkowych danych, z których użytkownik i tak nie korzysta. Podstawowa część strumienia bitowego jest często nieszyfrowana i stanowi podgląd materiału wideo. Warstwę PSNR definiuje się jako grupę sąsiadujących płaszczyzn bitowych w każdym VOP wzbogacającym, natomiast warstwę szybkości bitowej tworzy zbiór przyległych pakietów wideo. Punkty rozróżnienia między obydwoma rodzajami warstw są określane na podstawie charakterystyki wideo lub potrzeb biznesowych. Specjalnymi, dodatkowymi markerami, umieszczonymi w nagłówku VOP, oznaczane są porcje danych podlegające jednoczesnemu szyfrowaniu, którymi są pakiety danych wideo. Podobnie jak w poprzednim algorytmie wydajność kompresji pozostaje zachowana, a narzut związany z dodatkowymi nagłówkami jest niewielki. Algorytm jest odporny na błędy i straty pakietów. Występuje jednak niewielki negatywny wpływ na szybkość przetwarzania. Poza tym możliwa jest skalowalność na poziomie pakietów bezpośrednio na zaszyfrowanym strumieniu bez potrzeby deszyfrowania i ponownego szyfrowania.
2. Rozwiązania prowadzące do osiągnięcia integralności i uwierzytelnienia
2.1. Bezpieczna skalowalna transmisja strumieniowa i transkodowanie (BSSiT)
BSSiT jest również narzędziem uwierzytelniania [WeAp04]. Algorytm uwierzytelnienia w standardzie JPEG2000, przykładowo HMAC, może być obliczony na segmentach danych odpowiadających trzem określonym rozdzielczościom obrazu, przed lub po wykonaniu szyfrowania. Rezultat działania kodu uwierzytelniającego jest obcinany w celu zmniejszenia narzutu związanego z użyciem tejże funkcji i zapisywany w znaczniku SEC.
2.2. Jednolita struktura uwierzytelniania dla obrazów JPEG2000
W pracy pt. A unified authentication framework for JPEG 2000 [ZhQi04] zaproponowano system, który charakteryzuje się możliwością doboru stopnia odporności uwierzytelnienia. Jest to osiągane za pomocą trybów uwierzytelnienia (kruche, bezstratne, stratne) oraz parametru LABR.
Najniższą przepływnością uwierzytelnienia (Lowest Authentication Bit Rate, LABR) jest przepływność, powyżej której wszystkie dane obrazu są chronione. Inaczej rzecz ujmując, obraz uważa się za autentyczny, jeżeli jest transkodowany do przepływności większej od LABR.
W trakcie kruchego uwierzytelniania, na podstawie wartości LABR i innych parametrów, ze strumienia kodowego JPEG 2000 wyodrębniane są części podlegające zabezpieczeniu. Następnie są one poddawane działaniu funkcji skrótu oraz podpisywane. Obraz jest uważany za sfałszowany, jeżeli w jego chronionej części zmianie uległ choćby pojedynczy bit. Stratne i bezstratne uwierzytelnianie posiada wyższy próg odporności na modyfikacje obrazu wprowadzane przez jego transkodowanie lub zmianę formatu w porównaniu z kruchym uwierzytelnianiem.
W stratnym uwierzytelnianiu proces kodowania blokowego (Embedded Block Coding with Optimal Truncation, EBCOT) znajduje dla każdego zakodowanego bloku te bitplany, których wartość jest wyższa niż LABR. Podejmowana jest decyzja, który poziom rozdzielczości jest odpowiedni do wydobycia właściwości obrazu, a który do umieszczenia znaku wodnego. Cecha obrazu jest kodowana, a bity kontroli parzystości otrzymanego słowa kodowego są stosowane jako ziarno do uzyskania znaku wodnego. Znak wodny jest następnie umieszczany w odpowiednim bloku zawartym w podpaśmie LH lub HH stosownego poziomu rozdzielczości. Dodatkowo właściwości ze wszystkich bloków są łączone i wynikowa sekwencja bitów jest haszowana, a następnie podpisywana. Parametrami wejściowymi przy operacji weryfikacji są: obraz JPEG2000, LABR, podpis i klucz publiczny. W strumieniu kodowym dla każdego bloku wyszukiwane są bitplany powyżej LABR, na bazie których podejmowana jest decyzja o przyporządkowaniu danego poziomu rozdzielczości do ekstrakcji właściwości lub znaku wodnego. Ekstrakcja cechy ma taką samą postać jak w procedurze podpisywania. Natomiast znak wodny jest uzyskiwany z każdego bloku w danym poziomie rozdzielczości. Właściwości i znaki wodne formułują słowa kodowe, na których jest obliczana funkcja skrótu. Potem podpis jest sprawdzany przy użyciu klucza publicznego.
Bezstratne uwierzytelnianie jest stosowane w aplikacjach wymagających odtworzenia oryginalnego obrazu, przykładowo w medycynie. Etapy są podobne do tych występujących w trybie stratnym, niewielkie różnice występują w module znakowania wodnego.
Opisane narzędzie znajduje zastosowanie także w dystrybucji i strumieniowaniu obrazu, obrazowaniu medycznym oraz militarnym, egzekwowaniu prawa, handlu przez Internet (e-commerce), elektronicznej Administracji Publicznej (e-government).
2.3. Metoda skalowalnego uwierzytelniania
Metoda skalowalnego uwierzytelniania [DeWu03] pozwala poszczególnym użytkownikom weryfikować autentyczność i integralność transkodowanych podobrazów otrzymywanych ze strumienia kodowego JPEG2000 zabezpieczonego pojedynczym podpisem. Zabiegi uwierzytelniania są wykonywane w celu potwierdzenia pochodzenia obrazu oraz wykrycia ewentualnych modyfikacji powstałych podczas transmisji. Główną zaletą metody jest uniknięcie potrzeby oddzielnego podpisywania poszczególnych części strumienia kodowego.
W procesie uwierzytelniania stosowane są drzewa Merklego (Rys. 5). Podpisywany jest korzeń drzewa. Parametry narzędzia są umieszczone w markerze SEC. Aby sprawdzić autentyczność otrzymanej części obrazu ni, użytkownik musi posiadać wartości funkcji skrótu siostrzanych węzłów, leżących na ścieżce od wspomnianej części obrazu do korzenia drzewa włącznie. Fragment strumienia kodowego obrazu jest uznawany za autentyczny, jeżeli obliczona wartość funkcji skrótu korzenia jest identyczna z przechowywaną przez użytkownika.
Algorytm uwierzytelnienia prowadzi do uzyskania podobrazów o różnych rozmiarach, co wywołuje różną zajętość pasma.
Podobrazy są wyodrębniane na podstawie określonych: rozdzielczości, warstw, komponentów, obrębów.
2.4. Uwierzytelnianie wideo MPEG-4
Uwierzytelnianie wideo może być realizowane poprzez zastosowanie znaku wodnego umieszczanego w obiektach [DaQi03], uzyskiwanego zarówno z pierwszoplanowych obiektów jak i tła. Po stronie odbiornika integralność pomiędzy obiektem i tłem jest weryfikowana poprzez porównanie wydobytego znaku wodnego z ponownie otrzymanym znakiem wodnym. Materiał jest autentyczny, jeśli obydwa znaki są identyczne. Metoda uwierzytelniania oraz znak wodny powinny być odporne na operacje przetwarzania wideo – translację, skalowanie, rotację, segmentację. Uzyskuje się to poprzez odpowiednie zaprojektowanie algorytmu znakowania wodnego oraz tolerowanie zmian wywołanych wymienionymi operacjami przez cechę obrazu. Algorytm znakowania wodnego jest oparty na wyborze i przekształcaniu współczynników DFT (dyskretnej transformaty Fouriera). Do ukrywania znaku wodnego używane są zależności pomiędzy podgrupami współczynników.
Rys. 5. Drzewo Merklego - wierzchołki odpowiadają składnikom strumienia bitowego [DeWu03]
3. Rozwiązania zapewniające kontrolę dostępu
3.1. Schemat elastycznej kontroli dostępu
Idea schematu elastycznej kontroli dostępu [DeWu03] jest podobna do rozwiązania przedstawionego w metodzie skalowalnego uwierzytelniania. W tym przypadku użytkownicy mają zróżnicowany dostęp do fragmentów zaszyfrowanego jednolicie strumienia kodowego.
Rys. 6. System znakowania wodnego stosowany przy uwierzytelnianiu wideo [DaQi03]
W schemacie stosowana jest koncepcja drzewa Sandhu. Korzeń drzewa wyposażony jest w główny klucz, służący do szyfrowania całego strumienia kodowego. W kolejnym etapie algorytmu generowane są iteracyjnie klucze dla węzłów rozdzielczości, poczynając od największej, z wykorzystaniem funkcji skrótu operujących na kluczu głównym oraz odpowiedniej stałej. Następnie dochodzi do tworzenia kluczy dla węzłów jakości na podstawie znajomości wartości kluczy rozdzielczości i stałej. Dla danej rozdzielczości oraz warstwy jakości generowane są klucze poszczególnych obrębów obrazu, które służą do zaszyfrowania pakietów JPEG 2000.
Żądanie użytkownika dotyczy podobrazu o określonych rozdzielczościach, warstwach lub zbiorach obrębów. Przykładowo, jeżeli użytkownik chce uzyskać obraz o zadanej rozdzielczości, to musi posiadać odpowiadający jej klucz oraz na jego podstawie obliczyć wartości kluczy mniejszych rozdzielczości, warstw jakości odpowiadających wszystkim posiadanym rozdzielczościom i w końcu dostępnych obrębów, a następnie deszyfrować odpowiednie pakiety JPEG 2000.
3.2. Skramblowanie w dziedzinie falkowej i strumienia bitowego
System składa się z trzech podstawowych komponentów: skramblowania, generatora liczb pseudolosowych i algorytmu szyfrowania [DuWe04]. Skramblowanie jest stosowane selektywnie w odniesieniu do skwantowanych współczynników transformaty falkowej lub strumienia kodowego. Poziom zniekształceń wprowadzanych w poszczególne części obrazu jest sterowany, co pozwala zrealizować kontrolę dostępu według rozdzielczości, jakości lub regionów zainteresowania. Dodatkowe zróżnicowanie jest osiągane poprzez użycie różnych kluczy szyfrujących.
Skramblowanie polega na pseudolosowym zmienianiu znaków współczynników falkowych należących do najbardziej znaczących bitplanów.
W drugim podejściu skramblowanie może przykładowo dotyczyć części strumienia kodowego przenoszących informacje o wysokich rozdzielczościach, co jest stosowane przy realizacji kontroli dostępu według rozdzielczości. Zmiany nie mogą obejmować znaczników strumienia. 64-bitowe ziarna generatorów PRNG są szyfrowane algorytmem RSA.
4. Przykładowe implementacje
Implementacje niektórych algorytmów szyfrowania wideo [UhPo05] występujących w literaturze zostały zintegrowane w koderze MPEG typu open-source o nazwie mpeg2enc, zawartym w pakiecie mjpgTools dostępnym na stronie http://sourceforge.net/projects/mjpgtools/. Wyniki działania wybranych algorytmów mogą być porównywane na stronie http://www.ganesh.org/book poprzez zadawanie rozmaitych parametrów wejściowych, w tym docelowych przepływności i obrazów testowych.
Rys. 7. Drzewo Sandhu stosowane w narzędziu kontroli dostępu [DeWu03]
Rekomendowane oprogramowanie dla JPEG2000 znajduje się w piątej części tegoż standardu o nazwie Reference Software. Obejmuje ono: JasPer w języku C (http://www.ece.uvic.ca/~mdadams/jasper/) oraz JJ2000 w Javie (http://jpeg2000.epfl.ch/). Obydwie implementacje zawierają kod źródłowy pierwszej części standardu i posiadają licencję typu freely available standards. Natomiast Kakadu (http://www.kakadusoftware.com/) jest komercyjna i wyposażona, oprócz pierwszej części standardu, w kilka użytecznych właściwości pochodzących z drugiej części, przykładowe aplikacje, w tym klient-serwer, obejmujące dziewiątą część standardu (protokół JPIP). Komercyjne oprogramowanie jest oferowane np. przez firmę Aware Inc. (http://www.aware.com/imaging/jpeg2000.htm).
Rys. 8. Skramblowanie w dziedzinie transformaty falkowej [DuWe04]
Czwarta część standardu JPEG2000 – Conformance testing – zawiera oprogramowanie służące do testowania zgodności strumienia kodowego z tym formatem.
W MPEG-4 jej odpowiednikiem jest czwarta część standardu, natomiast piąta to Reference Software. W implementacjach MPEG-4 występują ścisłe restrykcje w zakresie standaryzacji formatu strumienia bitowego oraz operacji dekodera, natomiast poszczególni producenci stosują dowolne rozwiązania koderów i dekoderów. Znanymi przykładami kodeków są: DivX, XviD, 3ivx D4, X.264, Windows Media Video 9, Nero Digital.
5. Podsumowanie
W drugiej części artykułu zawarto opisy narzędzi dostarczających usług poufności, uwierzytelniania i integralności oraz kontroli dostępu obrazów oraz materiału wideo. Niektóre z rozwiązań zostały tak zaprojektowane, że istnieje możliwość adaptacji zabezpieczeń do warunków transmisyjnych i pojemności terminali użytkowników. Dokonano analizy rozwiązań operujących na obrazie oraz wideo skompresowanych przy użyciu nowszych standardów, takich jak JPEG2000 czy MPEG-4/H.264.
Na końcu wspomniano o implementacjach standardów JPEG 2000, MPEG-4 oraz niektórych algorytmów szyfrowania wideo.
INSTYTUT TELEKOMUNIKACJI, WYDZIAŁ ELEKTRONIKI I TECHNIK INFORMACYJNYCH,
Literatura
[DaQi03] Dajun H., Qibin S., „A semi-fragile object based video authentication system.” ISCAS2003.
[DeWu03] Deng R., H., Wu Y., „Securing JPEG2000 Code- Streams.” Int. Workshop on Advanced Developments in Software and Systems Security (WADIS’03), December 2003.
[DuWe04] Dufaux F., We S., „JPSEC for Secure Imaging in JPEG 2000.” Procedings of SPIE – Volume 5558, November 2004.
[UhPo05] Uhl A., Pommer A., Image and Video Encryption. From Digital Rights Management to Secured Personal Communication, Springer, 2005.
[WeAp01] Wee S., Apostolopoulos J., „Secure scalable streaming enabling transcoding without decryption” IEEE International Conference on Image Processing, Thessaloniki, Greece, October 2001.
[WeAp03] Wee S., Apostolopoulos J., „Secure scalable streaming and secure transcoding with JPEG-2000.” IEEE International Conference on Image Processing, September 2003.
[WeAp04] Wee S., Apostolopoulos J., „Secure transcoding with JPSEC confidentiality and authentication.” Invited paper in Media Security Issues in Streaming and Mobile Applications, IEEE, ICIP 2004.
[ZhQi04] Zhang Z., Qiu G., „A unified authentication framework for JPEG 2000” in IEEE International Conference on Multimedia and Expo (ICME), 2004.
[ZhYu05] Zhu B., Yuan C., „Scalable Protection for MPEG-4 Fine Granularity Scalability”, IEEE Transactions on Multimedia, vol. 7, no. 2, April 2005.
Zabezpieczenia 1/2008