Sto utilizzando Arduino Uno e un Scheda nRF8001 di Adafruit per connettersi a un telefono Android tramite Bluetooth. Lo userò per bloccare e sbloccare un lucchetto e devo assicurarmi che solo i dispositivi verificati siano in grado di avviare il blocco e lo sblocco. Ho cercato intorno a un gruppo e ho difficoltà a trovare un chiaro esempio di cosa dovrei fare per verificare il dispositivo di connessione. Attualmente ho il Arduino collegato al blocco e ogni volta che il telefono Android si connette, è consentito bloccare e sbloccare.
Sono abbastanza nuovo per la crittografia e alcune indicazioni sarebbero utili. Da quello che ho letto, sembra che l'hashing MD5 sia rotto e non la soluzione corretta per il mio problema. Ho trovato SipHash e sembra essere la cosa più vicina di cui potrei avere bisogno. Il processo che avevo in mente è il seguente.
- Android tenta di connettersi ad Arduino
- Arduino vede la richiesta e invia una stringa casuale al dispositivo Android
- L'Android crittografa la stringa con una chiave segreta condivisa e la rimanda a Arduino
- L'Arduino decifra la stringa crittografata e verifica che corrisponda all'originale che ha inviato se lo fa va avanti e si connette / continua con il blocco o lo sblocco.
Sono sulla buona strada con SipHash e il processo sopra? C'è un modo migliore per farlo? Dopo aver cercato qui ho trovato alcune informazioni qui. Sembra che dovrei preoccuparmi degli attacchi man-in-the-middle e dello spoofing MAC. Vorrei solo controllare l'indirizzo MAC come verifica, ma da quello che ricordo, è molto facile falsificare gli indirizzi MAC. Qualsiasi aiuto sarebbe apprezzato.