eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProblem z szyfrowaniem komunikacji między mcu
Ilość wypowiedzi w tym wątku: 46

  • 1. Data: 2013-07-22 23:07:01
    Temat: Problem z szyfrowaniem komunikacji między mcu
    Od: Marek <f...@f...com>

    Mam jakieś zaćmienie, problem może nie do końca z tematki grupy ale
    w końcu dotyczy obszaru mikrokontrolerów więc zaryzukuję. Dwa mcu
    komunikują się ze soba (UART), jeden wysyła polecenie (komunikat)
    drugiemu, ten drugi wykonuje robotę w zależności od polecenia,
    komunikacja jest w jedną stronę (mcu1->mcu2) i wg schematu: polecenie
    -> wykonanie. Chciałbym zaszyfrować komunikację między tymi dwoma
    mcu, aby nie można było podsłuchać komunikatu i go później
    "podrzucić" do mcu2 wpinając się w uart. Założenie jest takie, że oba
    mcu maja "w sobie" klucz, wybieram jakis dowolny cipher. I tu pojawia
    się problem, bo generalnie szyfrownaie nic nie daje, bo: mcu 1
    szyfruje polecenie X, dajac zaszyfrowany strumień, powiedzmy
    "Gk16w123clh3RZdYbGZc8g", 2 mcu mając ten sam klucz deszyfruje
    "Gk16w123clh3RZdYbGZc8g" dostając polecenie X i je wykonuje. Teraz
    wystarczy "udawać" mcu1 i wysłać do mcu2 po prostu
    "Gk16w123clh3RZdYbGZc8g", które zostanie odszyfrowane i spowoduje
    wykonanie polecenia X. Jak w miarę prosty sposób uniemożliwić taki
    atak? Wyobrażam sobie, że mcu2 może pierwszy nawiązywać komunikację i
    stowrzyć "dialog", który (jeśli będzie prawidłowy) oznaczać będzie,
    że druga strona ma prawidłowy klucz, czyli jest zaufana. Ale można
    wyobrazić sobie, że będzie można całą sekwencje odpowiedzi mcu1
    podrzucic na podstawie analizy statytycznej (np. wcześniej snifująć
    komunkację), liczba możliwych kombinacji jesty wielka ale skończona,
    więc nadal problem istnieje...

    --
    Marek


  • 2. Data: 2013-07-22 23:10:08
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: Jakub Rakus <s...@o...pl>

    W dniu 22.07.2013 23:07, Marek pisze:
    > Mam jakieś zaćmienie, problem może nie do końca z tematki grupy ale w
    > końcu dotyczy obszaru mikrokontrolerów więc zaryzukuję. Dwa mcu
    > komunikują się ze soba (UART), jeden wysyła polecenie (komunikat)
    > drugiemu, ten drugi wykonuje robotę w zależności od polecenia,
    > komunikacja jest w jedną stronę (mcu1->mcu2) i wg schematu: polecenie ->
    > wykonanie. Chciałbym zaszyfrować komunikację między tymi dwoma mcu, aby
    > nie można było podsłuchać komunikatu i go później "podrzucić" do mcu2
    > wpinając się w uart.

    Poczytaj o funkcjach haszujących.

    --
    Pozdrawiam
    Jakub Rakus


  • 3. Data: 2013-07-22 23:34:47
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: Michoo <m...@v...pl>

    On 22.07.2013 23:07, Marek wrote:
    > I tu pojawia się problem, bo
    > generalnie szyfrownaie nic nie daje, bo: mcu 1 szyfruje polecenie X,
    > dajac zaszyfrowany strumień, powiedzmy "Gk16w123clh3RZdYbGZc8g", 2 mcu
    > mając ten sam klucz deszyfruje "Gk16w123clh3RZdYbGZc8g" dostając
    > polecenie X i je wykonuje. Teraz wystarczy "udawać" mcu1 i wysłać do
    > mcu2 po prostu "Gk16w123clh3RZdYbGZc8g",

    google: replay attack

    > Wyobrażam sobie, że mcu2 może pierwszy nawiązywać komunikację
    > i stowrzyć "dialog", który (jeśli będzie prawidłowy) oznaczać będzie, że
    > druga strona ma prawidłowy klucz, czyli jest zaufana.

    Rozwiązań jest wiele - możesz umieszczać timestamp o ile jest wspólny,
    możesz przesyłać numer sekwencyjny i zapisywać go po obu stronach.
    Możesz zignorować problem bo może go tak naprawdę nie ma...

    --
    Pozdrawiam
    Michoo


  • 4. Data: 2013-07-23 00:43:54
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: Marek <f...@f...com>

    On Mon, 22 Jul 2013 23:34:47 +0200, Michoo <m...@v...pl> wrote:
    > google: replay attack

    O właśnie tego szukałem, dziękuję.


    > Rozwiązań jest wiele - możesz umieszczać timestamp o ile jest
    wspólny,
    > możesz przesyłać numer sekwencyjny i zapisywać go po obu stronach.

    Czyli nie da się przeprowadzić bezpiecznej komunikacji TYLKO w jedną
    stronę (polecenie -> wykonanie) bez stosowania wzajemnej
    synchronizacji (nr sekwencyjne/jednorazowe kody/timestampy itp),

    --
    Marek


  • 5. Data: 2013-07-23 01:39:10
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: sundayman <s...@p...onet.pl>

    może coś w tę stronę
    http://en.wikipedia.org/wiki/KeeLoq


  • 6. Data: 2013-07-23 02:00:22
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: LeonKame <k...@l...com>

    W dniu 2013-07-22 23:07, Marek pisze:
    > Mam jakieś zaćmienie, problem może nie do końca z tematki grupy ale w
    > końcu dotyczy obszaru mikrokontrolerów więc zaryzukuję. Dwa mcu
    > komunikują się ze soba (UART), jeden wysyła polecenie (komunikat)
    > drugiemu, ten drugi wykonuje robotę w zależności od polecenia,
    > komunikacja jest w jedną stronę (mcu1->mcu2) i wg schematu: polecenie ->
    > wykonanie. Chciałbym zaszyfrować komunikację między tymi dwoma mcu, aby
    > nie można było podsłuchać komunikatu i go później "podrzucić" do mcu2
    > wpinając się w uart. Założenie jest takie, że oba mcu maja "w sobie"
    > klucz, wybieram jakis dowolny cipher. I tu pojawia się problem, bo
    > generalnie szyfrownaie nic nie daje, bo: mcu 1 szyfruje polecenie X,
    > dajac zaszyfrowany strumień, powiedzmy "Gk16w123clh3RZdYbGZc8g", 2 mcu
    > mając ten sam klucz deszyfruje "Gk16w123clh3RZdYbGZc8g" dostając
    > polecenie X i je wykonuje. Teraz wystarczy "udawać" mcu1 i wysłać do
    > mcu2 po prostu "Gk16w123clh3RZdYbGZc8g", które zostanie odszyfrowane i
    > spowoduje wykonanie polecenia X. Jak w miarę prosty sposób uniemożliwić
    > taki atak? Wyobrażam sobie, że mcu2 może pierwszy nawiązywać komunikację
    > i stowrzyć "dialog", który (jeśli będzie prawidłowy) oznaczać będzie, że
    > druga strona ma prawidłowy klucz, czyli jest zaufana. Ale można
    > wyobrazić sobie, że będzie można całą sekwencje odpowiedzi mcu1
    > podrzucic na podstawie analizy statytycznej (np. wcześniej snifująć
    > komunkację), liczba możliwych kombinacji jesty wielka ale skończona,
    > więc nadal problem istnieje...
    >


    Szyfrujesz okreslonym ciagiem kluczy, w takim wypadku jesli bylo by
    powtorzenie tego samego ciagu to mcu2 odrzuca jako nieautoryzowane i już.







    "Simply the best"


  • 7. Data: 2013-07-23 04:37:43
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: JDX <j...@o...pl>

    Tak mi się przypomniało z dawnych czasów walk ze stosem protokołów
    powiązanych z PPP:
    https://en.wikipedia.org/wiki/Challenge-Handshake_Au
    thentication_Protocol.
    Powinno się nadać po odpowiednim "przycięciu" do danego zastosowania.


  • 8. Data: 2013-07-23 08:33:16
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: g...@s...invalid (Adam Wysocki)

    Marek <f...@f...com> wrote:

    > Jak w miarę prosty sposób uniemożliwić taki atak?

    Niech razem z poleceniem (przed zaszyfrowaniem) przesyłany będzie numer
    sekwencyjny, powiedzmy seq. Bez szyfrowania wyglądałoby to tak:

    seq=1 polecenie
    seq=2 polecenie
    seq=3 polecenie

    itd.

    MCU2 ma zapisany numer sekwencyjny, którego się spodziewa (o 1 większy, niż
    ostatnio odebrany). Jeżeli dostanie numer mniejszy, to ignoruje polecenie.
    Jeżeli identyczny, to OK. Jeżeli większy... to już zależy od Ciebie, możesz
    zrobić np. okno resynchronizacji, tak żeby umożliwić zgubienie X komunikatów,
    czyli jeżeli MCU2 spodziewa się np. seq=4, a dostanie seq=10, to sprawdza czy
    10-4 mieści się w jakimś założonym zakresie i jeżeli tak, to wykonuje polecenie
    i ustawia spodziewany numer na 11.

    Z tego co pamiętam podobnie jest to zrobione w KeeLoq.

    --
    "zanim nastala era internetu, kazdy wiejski glupek siedzial w swojej wiosce"
    http://www.chmurka.net/


  • 9. Data: 2013-07-23 10:06:31
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: Piotr Gałka <p...@c...pl>


    Użytkownik "Adam Wysocki" <g...@s...invalid> napisał w wiadomości
    news:gof.pme.1374561196@news.chmurka.net...
    >
    > Niech razem z poleceniem (przed zaszyfrowaniem) przesyłany będzie numer
    > sekwencyjny, powiedzmy seq. Bez szyfrowania wyglądałoby to tak:
    >
    > seq=1 polecenie
    > seq=2 polecenie
    > seq=3 polecenie
    >
    > itd.
    >
    > MCU2 ma zapisany numer sekwencyjny, którego się spodziewa (o 1 większy,
    > niż
    > ostatnio odebrany). Jeżeli dostanie numer mniejszy, to ignoruje polecenie.
    > Jeżeli identyczny, to OK. Jeżeli większy... to już zależy od Ciebie,
    > możesz
    > zrobić np. okno resynchronizacji, tak żeby umożliwić zgubienie X
    > komunikatów,
    > czyli jeżeli MCU2 spodziewa się np. seq=4, a dostanie seq=10, to sprawdza
    > czy
    > 10-4 mieści się w jakimś założonym zakresie i jeżeli tak, to wykonuje
    > polecenie
    > i ustawia spodziewany numer na 11.
    >
    > Z tego co pamiętam podobnie jest to zrobione w KeeLoq.
    >
    Widzisz jakiś problem w tym, że ktoś, kto podsłucha transmisję w której jest
    seq=3 nada następną w której jest seq=4 ?
    P.G.


  • 10. Data: 2013-07-23 10:17:26
    Temat: Re: Problem z szyfrowaniem komunikacji między mcu
    Od: Michoo <m...@v...pl>

    On 23.07.2013 00:43, Marek wrote:
    > On Mon, 22 Jul 2013 23:34:47 +0200, Michoo <m...@v...pl> wrote:
    >
    >> Rozwiązań jest wiele - możesz umieszczać timestamp o ile jest
    > wspólny,
    >> możesz przesyłać numer sekwencyjny i zapisywać go po obu stronach.
    >
    > Czyli nie da się przeprowadzić bezpiecznej komunikacji TYLKO w jedną
    > stronę (polecenie -> wykonanie) bez stosowania wzajemnej synchronizacji
    > (nr sekwencyjne/jednorazowe kody/timestampy itp),
    >

    Niestety nie. (Można wprawdzie robić "sec-by-obscurity" np doklejając
    przed szyfrowaniem trochę losowego śmiecia tak aby zaszyfrowany ciąg był
    za każdym razem inny istnieje ryzyko, że atakujący spróbuje wysłać ciąg
    bez odkodowania i ze zdziwieniem stwierdzi, że to działa.)

    Zauważ tylko, że numer sekwencyjny jest rozwiązaniem prostym a
    jednocześnie wymaga synchronizacji jedynie na początku(a wtedy
    umieszczasz choćby klucze w obu procesorach). W czasie pracy odbiornik
    musi tylko sprawdzać, czy aktualny serial jest większy od ostatniego i
    jeżeli tak to go sobie zapisywać - komunikacja w jedną stronę wystarcza.
    Musisz oczywiście mieć jakieś sumy kontrolne, żeby odkodowanie śmieci
    (np z powodu zakłóceń) nie spowodowało padu komunikacji.

    --
    Pozdrawiam
    Michoo

strony : [ 1 ] . 2 ... 5


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: