Hoe ik aan mijn informatie kom is omdat ik werk voor NXP. Het feit al dat jij het hebt over een "CAN chip met 8 pinnetjes" zegt mij al genoeg dat wat jij zegt onzin is. Welke chip hebben we het over eigenlijk?
Een stand-alone CAN controller heeft iets meer pinnetjes als 8, een CAN transceiver KAN 8 pinnen hebben maar dat ik ook niet vast, zoals de TJA1051 zit in een SO8 maar pin 8 is not connected. Een microcontroller met een ingebouwde CAN controller en transceiver heeft maar 3 pinnetjes die zijn toegewijd aan CAN.
Dit is de NXP SJA1000 welke de originele Philips PCA82C200 opvolgt.
http://www.nxp.com/documents/data_sheet/SJA1000.pdf
Zoals je kan zien zit de SJA1000 in een DIP28 of SO28 package, die 28 staat voor 28 pinnetjes.
http://home.isr.uc.pt/~rui/str/PCA82C200.pdf
De originele Philips PCA82C200 zat in een DIL28 of SO28 package.
Waarom pak ik specifiek deze controllers? Omdat dit de eerste controllers op de markt waren en historisch nog steeds het meeste worden gebruikt in auto's omdat ze bewezen goed zijn.
Nou kan je er een willekeurige tranceiver bij pakken afhankelijk van je behoeftes, maar ik pak weer de meest gebruikte (historische redenen). De TJA1042.
http://www.nxp.com/documents/data_sheet/TJA1042.pdf
De TJA1042 zit in een SO8 package. Inderdaad 8 pinnetjes, maar ik ga ervan uit dat jij Vcc, GND, Vio en dat soort dingen niet mee gaat tellen naar pinnetjes die op het CAN netwerk zitten. Waar jij het over hebt is waarschijnlijk de STB (standby) pin welke in meeste toepassingen gewoon aan de ground zit maar waar nodig ook via een microcontroller gebruikt kan worden om de transceiver in standby mode te zetten. Als je microcontroller gehacked is kan je zeggen dat er "geen elektrisch contact is", maar dat is simpelweg niet het geval. Een gehackte microcontroller kan die pin gewoon sinken en tada. Dat er geen elektrisch contact is is ook niet helemaal waar maar goed, ik laat dat maar even.
Nou ga ik ook niet indepth uitleggen hoe CAN nou werk, maar aan de kant van het CAN netwerk heb je de CAN high en CAN low pinnen. Er is geen CAN tx en CAN rx. Aan de kant van de microcontroller heb je de Rx en Tx pinnen. Je kan niet zomaar een van die pinnen weglaten. De Rx en Tx aan de kant van de controller heb je nodig om je transceiver en controller te configureren. De CANh en CANl pinnen heb je altijd nodig. Zomaar 1 weg communicatie is niet mogelijk, niet op elektrisch niveau. De controller heeft wel een register die het wel mogelijk maakt om de controller in receive only te zetten, de controller zal dan wel berichten van het netwerk ontvangen maar zal verder geen berichten doorgeven aan de applicatie processor. Om te kunnen functioneren moet de CAN controller berichten blijven ontvangen. NMT, SYNC en EMCY berichten zijn van cruciaal belang om het netwerk werkende te houden en de controller moet deze altijd blijven ontvangen. Maar nogmaals, ook dat register kan je makkelijk om programmeren als je hardware gehackt is.
Je kan nou voordoen dat je lowlevel beveiliging hebt ingebouwd etc. etc. etc. maar dat soort beveiligingen zijn al vaker gehackt. Kijk maar naar de hardware gelockte bootloaders van sommige Android (Motorola bijvoorbeeld) fabrikanten. Gegeven de tijd worden deze altijd gehackt.
Wat jij bij TomTom hebt gezien is waarschijnlijk is een demo van een leverancier van dergelijke producten, maar de geschiedenis met mobiele telefoons leert al dat soort producten simpelweg niet werken. Er hoeft maar ergens een gaatje te zitten in de code van de fabrikant zelf en de gehele beveiliging wordt ongedaan gemaakt. Kijk maar naar wat er met de S3 is gebeurd met de Exynos exploit.
https://forum.xda-developers.com/showthread.php?t=2048511
Ook al zou je kernel niet te hacken zijn, op het moment dat een gebruiker malware installeert gaat je beveiliging er onderuit. De scenario welke ik hierboven heb geschetst wordt dan zeer reëel.
Wat je zegt over de pinnetjes is onzin, wat je zegt over DRM (raar dat je dat zo noemt want het is gewoon een certificate signed rootfs) is deels waar maar was het niet voor het feit dat dat makelijk te kraken is en ook nog eens bewezen niet werkt.
[Reactie gewijzigd door Verwijderd op 23 juli 2024 20:30]