-
Notifications
You must be signed in to change notification settings - Fork 2
Diskusjon
Hvis Arduinomon skal bli et kommersielt produkt ønsker vi selvfølgelig ikke at brukerne skal bli skadelig avhengige. Selv om Arduinomonen ikke er et spill i den forstand, men heller kanskje noe nærmere relatert til samlekort, vil det å motvirke spillavhengighet være en viktig ting å forsøke å unngå. Noen måter dette kan bli gjort på er gjennom typ påtvungne pauser, noe som allerede er implementert (man må vente 10 sekunder mellom hver gang man kan forsøke å fange en Pokémon). Et energisystem kunne også vært passende i fremtiden, der man beholdt fordelen av å at spilleren kan oppnå framgang over kort tid, men at mye spilling over lengre tid har avtagende resultater.
Med de funksjonene som er implementert til nå er det ikke mye annet vi får gjort for å forebygge spillavhengighet, og det er heller ikke mye som kan forårsake avhengighet. Men hvis vi skulle solgt produktet måtte vi ha lagt til mer funksjonalitet, som kanskje muligheten til å bytte Pokémon, en sjanse for å fange en shiny versjon av Pokémon, mulighet til å kjempe mot andre spillere med de Pokémon man har fanget osv. Dette vil gi flere grunnen til at forbrukerne kan bli avhengige av produktet og vi føler det er viktig å i alle fall ha dette i bakhodet hvis produktet skulle videreutvikles.
I dette prosjektet eksisterer det tre potensielle risikoer i sikkerheten som kan potensielt utnyttes til et eller annet dårlig formål:
- Wi-fi sniffing
- API / Database
- Arduinoen
Trafikken som Arduino'en sender til telefonen er kryptert ved hjelp av en microchip ved navn ATECC608A. Krypteringen er ment for bruk i IoT tilfeller hovedsakelig, men tilbyr mer enn nok sikkerhet i vårt tilfelle. Microchippen støtter følgende kryptering: ECC P256 (ECDH and ECDSA), SHA256, AES-GCM. Hvem som helst som er koblet på samme nettverk som Arduino'en kan fange opp den krypterte trafikken, men dette oppnår lite. Teoretisk så kan en angriper fange opp trafikken, for å så sende trafikken gjennom en proxy som dekrypterer SSL/TLS sikkerheten dersom de har tilgang til selve SSL/TLS nøkkelen. Selve routerenheten som i vårt tilfelle sannsynligvis er en smarttelefon som man er koblet til via et Wi-Fi hotspot, har ikke mer innsyn i trafikken som sendes enn hvilken som helst annen person som er koblet til nettverket og overvåker det med wireshark.
Om målet til en angriper er å stanse funksjonen til Arduinomon så kan man gjøre dette på et par måter. Blant disse kan man forhindre kommunikasjonen mellom Arduino'en og API'et. Dette kan utføres ved hjelp av et "denial-of-service angrep" for å krasje det lokale API'et eller database serveren. Man kan også prøve å hacke databasen. En populær måte å få tilgang til database er SQL injection, noe vi går nærmere på i neste avsnitt.
Selve maskinen som kjører database serveren kan også komme under angrep, men det er ikke veldig relevant å inkludere det her
I et teoretisk tilfelle der vi har lansert et produkt basert på hva vi viser fram i dette prosjektet, så kan man ved hjelp av legitimasjon til Arduino'ene vi selger utføre ett "SQL injection" angrep. Dette kan resultere i tilgang til hele databasen, eller så kan man eventuelt slette den om motivet til angriperen er sabotasje. Dette kan utføres ved å veldig enkelt endre en linje i koden.
char INSERT_DATA[] = "INSERT INTO arduinomon.catches (pokemon_id) VALUES (%d)";
Om vi sletter teksten etter = tegnet, og skriver: "DROP DATABASE arduinomon";
så databasen i teorien blitt slettet. Iallfall inntil den blir gjenopprettet.
Selvfølgelig, dersom Arduinomon blir ett kommersielt produkt så vil koden bli betydelig refaktorisert til den grad det er hensiktsmessig å lansere ett legitimt produkt for salg. Slike svakheter som er nevnt ville blitt satt fokus på, og betydelig kvalitetssjekket før produksjon.