Skocz do zawartości

Kryptografia w Simulinku


admunt1

Pomocna odpowiedź

Witam.

Doradźcie jak przesyłać informacje z wykorzystaniem szumu.

Chciałbym w Simulinku przesyłać informacje w szumie - przy czym szum chciałbym kontrować równaniami matematycznymi.

Ktoś spotkał się z takim przykładem w Simulinku ?

Szukałem w google pod hasłem cryptography simulink ale żadnych konkretów dla niewtajemniczonych.

Link do komentarza
Share on other sites

Napisz coś więcej o tym przesyłaniu. Jaką informację chcesz przesyłać (sygnał analogowy czy dane cyfrowe), jak będzie jej dużo (pasmo sygnału lub bit/s), dlaczego chcesz to robić, przez jakie medium i jak to będzie odbierane. Czy to ma być tylko symulacja, czy jednak kiedyś powstanie prawdziwy układ? Czemu ma służyć całe to ukrywanie w szumie i przeciwko czemu/komu się "zbroisz". No i oczywiście co wiesz o kryptografii i jak bardzo jesteś niewtajemniczony. Odpowiedzi bardzo pomogą w zredagowaniu jakichś porad. W przeciwnym wypadku możesz po prostu dostać listę książek do poczytania.

Link do komentarza
Share on other sites

Hej : )

Mam na uczelni dostęp do układów FPGA firmy Altera.

Dowiedziałem się, że współpracują one z Simulinkiem Matlaba jeśli budujemy układy z wykorzystaniem bibliotek Altera DSP, co oznacza że nie trzeba dużo umieć z programowania w VHDLu aby zbudować działający układ.

Dzięki temu spróbuje zbudować komunikację między dwoma modułami FPGA Altery i coś przesłać zakodowanego. Nowością w komunikacji w kodowaniu są tzw. układy chaotyczne zastępujące klasyczny szum. Testowałem w Simulinku wiele różnych modeli chaotycznych a nawet poddawałem je filtracji, przykład pod linkiem pod tematem GandalFa gdzie zastosowaliśmy filtr Kalmana do tłumienia oscylacji, które sam zrobiłem na podstawie równania różniczkowego :

https://forbot.pl/blog/artykuly/programowanie/filtr-kalmana-teorii-praktyki-1-id2855

Moja koncepcja kodowania informacji z wykorzystaniem chaosu jest jak poniżej:

Masz pomysł jak to zrobić w Simulinku ?

Link do komentarza
Share on other sites

Udało mi się złapać kilka dni wakacji - stąd moje opóźnienie, przepraszam.

Doświadczenia w Symulinku nie mam, więc tu Ci nie pomogę. Kryptografią zajmowała się moja firma przez wiele lat - coś niecoś pamiętam. To co chcesz zrobić, to proste szyfrowanie strumieniowe, gdzie kluczem jest ciąg losowych zer i jedynek. Zarówno nadawanie jak i odbieranie są trywialne: wystarczy zrobić XOR strumienia danych ze strumieniem szumu a po drugiej stronie jeszcze raz to samo. Wbrew pozorom jest to bardzo silne szyfrowanie i stosuje się je w jedynie w bardzo specyficznych wypadkach bowiem największym problemem jest tu dostarczenie stronie odbiorczej ciągu losowego identycznego z tym użytym przy nadawaniu. W warunkach "naturalnych" może to być np. płyta CD z nagranymi wieloma MB szumu cyfrowego uzyskanego z certyfikowanego generatora szumu opartego na zjawisku fizycznym (np. termicznego). Transporterem takiego medium może być np. kurier dyplomatyczny - sam domyśl się obszaru zastosowań.. Oczywiście są też prostsze metody, np. obie strony używają generatora pseudolosowego pracującego w tej samej sekwencji. Tutaj samą tajemnicą jest oczywiście konstrukcja tego generatora i jego ziarno, czyli stan początkowy. Znasz algorytm lub strukturę i stan - znasz przesyłane dane. Akurat zjawiska chaotyczne mają ostatnio dobrą prasę i od jakiegoś czasu są wykorzystywane do generacji szumu. Po niewielkich modyfikacjach szum taki spełnia całkiem dobrze wiele testów NIST. Poczytaj przede wszystkim o tzw. układzie Chua - to kanoniczny przykład "generatora chaosu" z dwoma atraktorami:

http://www.chuacircuits.com/howtobuild1.php

http://www.cmp.caltech.edu/~mcc/chaos_new/Chua.html

Jego analogowa budowa jest zaskakująco prosta a wiem, że na pewno są realizacje w FPGA:

http://goo.gl/vxaYZi

Oczywiście możesz zrobić rozwiązanie pośrednie, np. programową symulację działania tego układu poprzez rozwiązywanie równań różniczkowych dokładnie tak, jak czyni to każdy symulator klasy SPICE. Wystarczy np. spojrzeć na kod JS na stronach prezentujących działanie online tego układu.

Ten prosty układ analogowy poprzez uzupełnienie o sprytny komparator może być źródłem szumu cyfrowego a co ciekawsze po zbudowaniu dwóch takich układów można je wzajemnie synchronizować uzyskując generację takiego samego przebiegu losowego po jednej i po drugiej stronie kanału transmisyjnego. I masz już swoje szyfrowanie "chaosem". W przypadku użycia układu Chua "kluczem kryptograficznym" są tu oczywiście parametry układu (wartości elementów RLC) oraz jego zmienne stanu czyli stan początkowy (napięcia i/lub prądy) - to musisz przekazać stronie odbiorczej w jakiś inny, zaszyfrowany sposób 🙂 lub po prostu umówić się a priori.

Zrobienie takiego systemu w Symulinku nie powinno być problemem choć moim zdaniem nie jest to dobre narzędzie do przenoszenia projektów do FPGA. Poza tym nie bardzo rozumiem po co chcesz to zrobić. Wystarczająco dobrymi do hobbystycznych zastosowań generatorami szumu cyfrowego są ogólnie znane algorytmy szyfrowania blokowego np. (3)DES lub AES lub funkcje hashujące typu SHA. Zapętlone w trybie XOR i "zasiane" jakimś losowym ziarnem dają dobre ciągi, mają o wiele prostsze (i szybsze) implementacje cyfrowe no i są dostępne z półki. Nie wspominając już o trywialnych (ale też duuużo słabszych kryptograficznie) rejestrach LFSR.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Czy jest istotna różnica w szyfrowaniu jeśli zamiast szumu białego, czy liczb losowych itp. zastosuje szum z wykorzystaniem chaosu ?

Czy podniesie to bezpieczeństwo informacji ?

Szum chaotyczny wytwarzam za pomocą równań różniczkowych, które zawierają stałe współczynniki.

W zależności od ich wartości można wytworzyć trzy stany:

1. chaotyczny

2. asymptotycznie stabilny – brak drgań chaotycznych, przebieg okresowy

3. cykl graniczny – praca na granicy stabilności

Czy to można wykorzystać w kryptografii ?

Link do komentarza
Share on other sites

Wygląda na to, że zanim zaczniesz robić cokolwiek w tej dziedzinie powinieneś podbudować się teoretycznie. Po prostu kryptografia i kryptologia posługują się pewnymi pojęciami oraz wymagają pewnego minimum wiedzy teoretycznej których nie posiadasz - widzę to z Twoich postów i pytań. Proponuję zacząć od cegły "Kryptografia dla praktyków" autorstwa Bruce Schneier'a. Tam dostaniesz porządną dawkę słownictwa a po przeczytaniu będziesz rozumiał przynajmniej podstawowe mechanizmy i mógł zadawać dobre pytania.

Na szybko odpiszę Ci tak: jest ogromna różnica między zjawiskami losowymi typu rzut monetą czy szum termiczny a zjawiskami chaotycznymi typu układ Chua czy pogoda. Pierwsze z nich są rzeczywiście losowe tj. brakuje jakichkolwiek korelacji między kolejnymi zdarzeniami. Te drugie są deterministyczne, ale z uwagi na swoją złożoność, czułość na warunki początkowe oraz ograniczoność naszych metod obserwacji tylko "wyglądają" na losowe. Gdyby pogoda była zjawiskiem losowym nie mielibyśmy szans przewidzieć co się stanie nie tylko za dwa dni, ale także za 5 minut a tak nie jest. Podobnie w układzie Chua: możesz z dużym prawdopodobieństwem przewidzieć jakie będą zmienne stanu za pół okresu, ale już za 20 będzie bardzo trudno. Dzieje się tak właśnie dlatego, że w systemie chaotycznym niewielkie (niemierzalne lub niedostrzegalne) różnice stanu potęgują się z czasem i doprowadzają do nieprzewidzianego zachowania w bardziej odległej przyszłości. To nie jest losowość w sensie kryptograficznym i z tego powodu zjawiska te mogą być tylko w ograniczonym stopniu tutaj używane. Jest rzeczą oczywistą, że dobra jakość szumu użytego do Twojego szyfrowania strumieniowego jest warunkiem kluczowym. Jeżeli atakujący będzie w stanie przewidzieć wartość następnych bitów tego szumu na podstawie poprzednich, cały algorytm się załamuje. I teraz dochodzimy do metod określania jakości szumu. Poczytaj o testach szumu NIST - to wiele ustandaryzowanych algorytmów matematycznych, od bardzo prostych do całkiem skomplikowanych i pomysłowych, które dają liczbowe wyniki określające jakość wygenerowanego szumu, choćby tutaj:

http://csrc.nist.gov/publications/drafts/800-90/draft-sp800-90b.pdf

Wbrew pozorom dobry szum nie może być idealnie symetryczny (np. tyle samo jedynek co zer lub tyle samo różnych ciągów bitowych). Takie przebiegi dają właśnie generatory pseudolosowe i od razu można to poznać w wynikach. To je dyskwalifikuje w przedbiegach.

Powiem Ci tylko, że zrobienie dobrego generatora szumu spełniającego wyśrubowane wymagania kwalifikowanej kryptografii (takiej dla dorosłych a nie do amatorskich zabaw) jest bardzo trudne. Nawet dysponując dobrym źródłem fizycznym trzeba być doświadczonym elektronikiem "analogowym" by po roku prac dostać coś, co zaczyna spełniać oczekiwania. Takie układy nie są publikowane a schematów z pewnością nie znajdziesz w sieci. Wszystko co możesz ściągnąć za darmo to zabawki.

Z kolei wszelkie algorytmy komputerowe, wszystko jedno czy symulujące działanie rzeczywistego układu analogowego (np. Chua), różne generatory pseudolosowe itp są tylko deterministycznymi algorytmami i jako takie mają słabe zastosowanie. Oczywiście można poprawiać ich wyniki wieloma metodami matematycznymi, ale zawsze te same dane wejściowe dadzą te same dane na wyjściu - o tym trzeba pamiętać.

Są miejsca w kryptografii w których bez liczb rzeczywiście losowych ani rusz. Żaden poważny kryptosystem nie obejdzie się bez ukrytego gdzieś we wnętrzu, pilnie chronionego i testowanego na bieżąco specjalnymi algorytmami (to bardzo ważne) centralnego źródła dobrego szumu. Tego szumu nie musi być dużo, bo metoda przez Ciebie zaproponowana jest - jak już pisałem - wyjątkowa i ograniczona. Liczby naprawdę losowe potrzebne są jako posiew generatorów, jako ziarno do poszukiwania liczb pierwszych (klucze w kryptografii asymetrycznej) lub też jako klucze sesyjne w systemach symetrycznych. Zjawiska chaotyczne? No może, są już takie próby, ale na pewno nie wprost tylko po porządnej obróbce. Moim zdaniem to na razie ciekawostka.

EDIT: Jeśli masz wątpliwości co do jakości szumu generowanego przez Twoje algorytmy, nic prostszego jak zebrać odpowiednio dużo bitów (czasem trzeba naprawdę dużo, nie zdziw się) i przepuścić je przez testy. Obowiązkowy zestaw masz opisany np. tutaj:

http://csrc.nist.gov/publications/nistpubs/800-22-rev1a/SP800-22rev1a.pdf

Link do komentarza
Share on other sites

Hej : )

Bardzo solidnie odpisałeś, postaram się zrobić z tego użytek.

Przyznaje, że o kryptografii wiem tyle o ile ; )

Z książek jeśli coś jeszcze możesz polecić to chętnie.

Z układów chaotycznych testowałem przebiegi modeli jak: Ikeda, Vander Pola, Chua, Rosslera i inne.

Wklepywałem wzory w zapisie różniczkowym do Simulinka i sprawdzałem zachowanie przebiegów czasowych w różnych wariantach. Używam do zapisu równań - pochodną niecałkowitego rzędu, ale po tym co napisałeś to nie jestem w stanie stwierdzić, czy poziom chaosu jest WYSOKI ; )

Czy i jak to można to ocenić ?

Korzystam w wykresów fazowych i jeśli jest kilka atraktorów i bardzo wiele pętli fazowych to wydaje mi się, że chaos jest na bardzo wysokim poziomie ale nie potrafię tego ocenić czy na bardzo dużym.

Mam dostęp do układów FPGA Altery. Oprogramowanie współpracuje z Simulinkiem wiec mam szanse przeniesienie softu z symulatora na realnie mierzalne przebiegi i może wysłać je zakodowane między dwoma modułami.

Na razie utknąłem na Simulinku z kryptografią, ale już układy chaotyczne mam przetestowane.

Link do komentarza
Share on other sites

Na Twoim miejscu zastanowiłbym się na spokojnie co chcę zrobić. Zabawy chaosem to jedno, kryptografia i jej metody to drugie a aplikacje w prawdziwych systemach to trzecie. Nie wiem co Cię interesuje ani jaki jest rzeczywisty cel Twoich prac, ale prawda jest taka, że kryptografia nie potrzebuje układów chaotycznych jako takich. Potrzebuje długich liczb pierwszych i dobrych ciągów losowych. Tam mogą znaleźć zastosowanie różne źródła fizyczne, ew. poprawiane funkcjami dekorelującymi i na bieżąco testowane podstawowymi testami FIPS a cała reszta to masa dobrze znanych algorytmów. Inne są potrzebne do szybkiego szyfrowania blokowego dużych ilości danych, inne do uzgadniania kluczy sesyjnych, inne do dystrybucji kluczy, inne do uwierzytelniania stron a inne do liczenia skrótów. To bardzo rozległa dziedzina w której od zawsze ścierają się metody ukrywania danych z próbami łamania zabezpieczeń. Aby jeszcze skomplikować sytuację, chyba w każdym kraju (u nas także) kryptografia od pewnego poziomu jest uważana za narzędzie równie niebezpieczne jak np. broń i jako takie jej stosowanie w produktach komercyjnych podlega odpowiedniej ustawie o obrocie takimi produktami. Moim zdaniem przed zanurzeniem się w tę działkę warto znać też rozporządzenie RM nr 1625:

http://isap.sejm.gov.pl/DetailsServlet?id=WDU20011451625

gdzie wyraźnie podano jakie długości klucza w algorytmach symetrycznych i asymetrycznych podlegają koncesjonowaniu. Wbrew pozorom to wcale nie są jakieś kosmiczne długości. A koncesja na takie rzeczy to obowiązkowa kancelaria tajna w firmie, przeszkoleni ludzie z dopuszczeniami, strefa chroniona, certyfikowany system teleinformatyczny... itd.

Przeczytaj książkę Schneiera (nalegam) a potem zastanów się co chcesz robić i po co.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.