Łańcuch bloków sposobem na nieuczciwych sprzedawców samochodów

in #polish4 years ago

Każdy kto kupił lub zamierza kupić samochód spotkał się z procederem nieuczciwego cofania liczników. Konstrukcja obecnie stosowanych liczników samochodowych nie stanowi wyzwania dla oszustów. Urządzenia do cofania liczników można zamówić na popularnych chińskich portalach. Możemy też zadzwonić po profesjonalistę który wykona usługę z dojazdem do klienta już za 100zł! Mam wrażenie że oszuści lepiej dbają o klienta niż służba zdrowia, która niestety nie oferuje takich udogodnień jak dojazd do klienta. Zaskoczył mnie fakt, że takich ogłoszeń nie musimy szukać w darkwebie, a znajdziemy je na każdym portalu ogłoszeniowym! Usługodawcy nawet nie kryją się ze swoimi intencjami i otwarcie używają słowa „cofanie licznika”.


Rys. 1. Ogłoszenie z portalu OLX


Technologia, nie człowiek

Tak długo jak będą istnieć techniczne możliwości cofania liczników tak długo będzie to dochodowy biznes. Producenci samochodów muszą opracować licznik którego cofnąć nie można. Jedyna technologia która uniemożliwia zmianę informacji wstecz to łańcuch bloków. Koncepcja jest dość prosta. W pamięci samochodu zapisywany jest przebieg samochodu lecz nie w postaci otwartego tekstu lecz szyfrogramu. Szyfrogram będzie możliwy do odszyfrowania tylko przez producenta. Właściciel będzie musiał skopiować zaszyfrowane bloki w których zapisany jest przebieg i wysłać je na serwer producenta. Producent rozszyfruje zapisane w nich informacji i potwierdzi że przebieg samochodu jest prawidłowy. Wyobrażam to sobie tak… w odpowiedni port wkładamy kartę SD, samochód kopiuje na nią dane o przebiegu a następnie dane z karty SD przesyłamy poprzez stronę internetową producenta na serwer producenta w celu weryfikacji przebiegu.

Implementacja

Poniżej przedstawiam moją koncepcję szyfrowanego łańcucha bloków który moim zdaniem z powodzeniem może zostać zaimplementowany w nowych samochodach.

Architektura klucza publicznego będzie niezbędna do utworzenia pary kluczy: klucz samochodu i klucz producenta. Para kluczy musi być niepowtarzalna dla każdego samochodu. Klucz samochodu jest przechowywany w pamięci licznika samochodu. Drugi z pary klucz producenta jest przechowywany na serwerze producenta i nie jest on znany właścicielowi samochodu.

Klucz samochodu służy do szyfrowania generowanych przez samochód podczas jazdy bloków. Klucz producenta służy do deszyfracji i weryfikacji przebiegu.

Pierwszy blok łańcucha musi zostać wygenerowany przez producenta i zapisany na serwerze producenta. W pamięci samochodu zostanie zapisany nie blok, lecz szyfrogram bloku zaszyfrowany kluczem samochodu. Zasada ta dotyczy każdego bloku wygenerowanego przez samochód. Takie rozwiązanie spowoduje że szyfrogram będzie mógł zdeszyforwać tylko producent przy pomocy znanemu tylko sobie kluczu producenta. Potrzebujemy jeszcze losowej wartości liczbowej którą roboczo nazwiemy IDx i będzie ona swoistym numerem seryjnym licznika. Wartość ta również nie jest znana właścicielowi samochodu a w pamięci licznika samochodowego znajduje się jedynie jej hash. Zadaniem tej zmiennej jest wykrycie usunięcia bloków z pamięci samochodu.

stanpoczątkowy.jpg

Rys. 2. Stan początkowy

Oczywiście w łańcuchu bloków można zapisać więcej informacji takich jak lokalizacja GPS, numer VIN, data utworzenia bloku itd. Jestem sceptyczny co do zapisywania danych GPS gdyż uważam to za zbytnią ingerencję w prywatność osoby która porusza się pojazdem. Na potrzebny omawianej problematyki wartości te nie mają znaczenia dlatego też zostaną one pominięte.

Znamy już wartości początkowe i możemy przejść do problemu zapisywania w łańcuchu bloków przebiegu samochodu. W pierwszej kolejności musimy przyjąć interwał tworzenia bloków. Przyjmijmy że będzie to 1 kilometr, a więc po przejechaniu każdego kolejnego kilometra licznik samochodu będzie tworzyć kolejny blok i zapisywać go w swojej pamięci. Może być to również wartość losowa. Algorytm oczywiście zwiększa wartość zmiennej liczbowej $StanLicznika o określony interwał. Tworzony blok zawiera informacje takie jak numer bloku, aktualny przebieg, hash szyfrogramu bloku poprzedniego oraz wartość ID. Po wygenerowaniu nowego bloku wartość ID jest nadpisywana wynikiem jednokierunkowej funkcji skrótu z wartości ID.

generowaniebloku.jpg

Rys. 3. Generowanie kolejnego bloku


Weryfikacja przebiegu

Weryfikacja przebiegu odbywa się na kilku etapach. Po pierwsze niezbędne jest zdeszyfrowanie wszystkich zaszyfrowanych bloków przy użyciu klucza producenta. Następnie producent weryfikuje:

  1. czy stan licznika w każdym bloku jest większy niż w bloku poprzednim
  2. czy każdy hash szyfrowamu bloku poprzedniego jest prawidłowy
  3. czy zmienna $ID jest prawidłowym hashem zmiennej $ID z bloku poprzedniego

Każda próba ingerencji w stan licznika poprzez zmianę wartości $StanLicznika, próba usunięcia bloków lub manipulacji przy zmiennej $ID zostanie wykrywa. Serwer producenta bez problemu wykryje nieprawidłowości w łańcuchu bloków. Negatywna weryfikacja przebiegu będzie oznaczała dla właściciela samochodu spory problem lecz ochroni potencjalnego nabywcę przed staniem się ofiarą oszustwa.

Słaby punkt

Dostrzegam jeden słaby punkt gdzie licznik samochodu wciąż pozostaje podatny na manipulacje. Jeśli właściciel samochodu wykona kopię łańcucha bloków wraz z wartościami wszystkich zmiennych a następnie przywróci ją to w rzeczywistości cofnie licznik w sposób niewykrywalny dla producenta. Jednak nie będzie to klasyczne cofnięcie licznika gdzie właściciel samochodu może cofnąć licznik o dowolną wartość. Chęć cofnięcia licznika będzie wymagać najpierw wykonania kopii zapasowej a także przechowywania tej kopii co jest pewnym utrudnieniem.

Jeśli połączymy technologię blockchain z obecnie stosowanymi metodami takimi jak spisywanie przebiegu podczas przeglądu technicznego na stacji kontroli pojazdów lub podczas rutynowej kontroli policji to praktycznie wyeliminujemy proceder cofania liczników.

Blockchain potrzebny od zaraz!

Życzę sobie i Wam abyście nigdy nie padli ofiarą oszustwa w postaci cofniętego licznika. Uważam że producenci samochodów są technologicznie gotowi na wdrożenie takiej technologii niewielkim kosztem. Mam też nieodparte wrażenie, że wdrożenie technologii łańcucha bloków w samochodach przyczyni się też do popularyzacji blockchaina w innych dziedzinach co odbije się pozytywnie na całym świecie krypto.