logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Implementacja RSA na Xmega - jak uzyskać uint128_t?

rafauek 18 Wrz 2018 11:15 768 5
REKLAMA
  • #1 17446758
    rafauek
    Poziom 6  
    Witam,
    Potrzebuje wykorzystać liczbę 128 bitwą do implementacji Algorytmu RSA. W gwoli ścisłości, muszę wykorzystać RSA a uint64_t mnie nie zadowala. Jakiś pomysł na rozszerzenie typu do 128 bitów? Wykorzystuje aktualne Atmel studio z aktualnym toolchainem.
    Pozdrawiam
  • REKLAMA
  • #2 17446815
    chudybyk
    Poziom 31  
    Typ 128-bitowy w procesorku 8-bitowym? Nie tędy droga.
    Zmienne o takiej wielkości najlepiej reprezentować w postaci tablicy, struktury, a najlepiej klasy.
    Trzeba tylko napisać funkcje lub metody operujące na takiej strukturze danych i potem już z górki.
  • REKLAMA
  • REKLAMA
  • #4 17449759
    rafauek
    Poziom 6  
    Dziękuje za podpowiedź, co prawda po stronie Xmegi będe tylko szyfrował liczbę pseudolosową kluczem publicznym. Masterem w komunikacji ma być sterownik PLC i to on jest tu wąskim gardłem, gdyż podobnie jak w AVR, typy max tylko 64 bitowe. Już zabierałem się za budowę czegoś obszerniejszego (typu) jednak w głowie narodził mi się pomysł (pokrótce, robię swego rodzaju klucz sprzętowy uniemożliwiający skopiowanie maszyn przemysłowych) połączenia RSA z AES (zaszyfrowanie haseł AES poprzez RSA) co dało by praktycznie zerowe szanse na złamanie kodu bo klucz nie będzie jawnie przesłane przez medium komunikacyjne więc złamanie RSA i AES w wąskim zakresie czasowym regulowanym przez sterownik nawet przy szyfrowaniu tylko 128b jest według mnie bardzo bezpieczne (oczywiście jeżeli nikt nie dorwie się do programu sterownika).
    Kończąc moją chaotyczną wypowiedź, Xmega posiada sprzętowe AES 128b więc hasło jest 16 znakowe. Klucze RSA więc mieszczą się w 64 bitach... jeśli nic nie pomieszałem. Wychodzi więc na to że para RSA&AES będzie szybsza (w Xmega) od RSA z funkcjami skrótu.
  • REKLAMA
  • #5 17449925
    tmf
    VIP Zasłużony dla elektroda
    W teorii to wszystko pięknie wygląda. W praktyce siła takiego zabezpieczenia zależy nie tylko od teoretycznej złożoności algorytmu, ale także od jego implementacji sprzętowej. AES w XMEGA jest zaimplementowany szeregowo, dzięki czemu łatwo prześledzić jakie operacje sprzętowe wykonuje MCU. Widziałem artykuł o tym jak przy pomocy amperomierza za 400$ goście złamali kucz w XMEGA mierząc zmiany poboru prądu co umożłiwiło ustalenie kolejnych bitów klucza. Same lockbity uniemożliwiające odczyt FLASH w każdym procku też w praktyce niewiele gwarantują. Izraelskie firmy oferują odczyt FLASH z zabezpieczonych procków za ceny zaczynające się od 300$, więc niezby wygórowane. Zrobienie bezpiecznego systemu wymaga użycia zupełnie innych rozwiązań. Więc nie przesadzaj z tymi zabezpieczeniami, bo jeśli ktoś ma cel, żeby je złamać to to zrobi. Stąd warto stosować takie zabezpieczenia, które po twojej stronie nie wygenerują większych kosztów i problemów niż po stronie potencjalnego złodzieja.
  • #6 17450074
    chudybyk
    Poziom 31  
    Jak zrozumiałem, kolega chce szyfrować transmisję pomiędzy sterownikiem PLC a innymi elementami sieci przemysłowej. Szyfrowanie realizować będzie para układów montowana na końcach linii transmisyjnej.
    Jakiego typu to linia? Różnicowa skrętka, Ethernet?
    Domyślam się, że nie ma zagrożenia dla elementów końcowych linii, bo ewentualny haker wpiąłby się np. pomiędzy mastera a nasz szyfrator i wszystko byłoby do bani.
    Czy potrzebujemy koniecznie klucze asymetryczne? Czy musimy stosować skomplikowane metody szyfrowania wymagające całkiem sporej mocy obliczeniowej (jak na ATMega)?
    Jeśli nie ma obawy o włamanie do samych urządzeń szyfrujących, to zastosowałbym algorytm szyfrowania oparty na kluczu symatrycznym o wielkości np. 10kB. Wygenerować trzeba 10kB danych losowych i zapisać je do eepromu lub flasha, a następnie napisać program szyfrujący/deszyfrujący dane na podstawie kilku do kilkudziesięciu bajtów takiego klucza. Algorytm byłby szybki, trudny do złamania, bo trzeba by przechwycić naprawdę sporo danych, żeby odtworzyć klucz. Oczywiście ten sam klucz musi być w każdej parze nadajnik-odbiornik, za to dla każdej pary można generować inny.
REKLAMA