Devo implementare un sistema in cui i dispositivi Android si collegano a un server centrale e devono registrarsi con account utente diversi, quindi ho deciso di creare un accoppiamento dance simile a quello che può essere osservato in bluetooth abbinamento, o software come l'accoppiamento remoto apple con la libreria itunes. Sto cercando informazioni su quali algoritmi di crittografia possono essere utilizzati durante questa comunicazione utilizzando un canale di comunicazione separato per la chiave di crittografia. L'algoritmo che ho pensato avrebbe seguito questi passaggi:
- Il dispositivo si accende e chiama un server fisso per annuncia stesso.
- Il dispositivo mostra alcuni numeri casuali sullo schermo (ad esempio 392582).
- L'utente deve accedere al server con un browser Web nel suo account e digitare la sequenza numerica vista sul dispositivo (potrebbe essere eseguita sul dispositivo Android stesso).
Durante il passaggio 1 il client comunicava al server tramite SSL. Il numero mostrato all'utente nel passaggio 2 sarebbe parte di una stringa predeterminata statica più lunga che verrebbe sottoposta a hash. Il server e il client scambiano l'hash e verificano che sia lo stesso. Se lo è, significa che l'associazione è OK. Alcune domande mi perseguitano:
- In realtà questo suono o i dispositivi di parsing sono fatti in altri modi?
- Sto usando MD5 hashing abbastanza per questo o dovrei usare altri hash?
- Quale durata e scadenza devono avere il codice dello schermo per evitare collisioni con altri potenziali utenti?
- Quali perfezionamenti possono essere fatti per migliorare l'autenticità della connessione? Ho però intenzione di sostituire la stringa statica più lunga predefinita con l'hash con una stringa casuale. Il client invierà il seme del generatore di numeri casuali durante il primo passaggio. Un uomo nel mezzo avrebbe ancora capito, ma questo ridurrebbe le collisioni di hash con altri utenti?
- Mi manca il gergo tecnico di sicurezza, forse questo è un processo ben studiato e ci sono tonnellate di articoli su wikipedia su di esso? Le informazioni su wikipedia sull'associazione / associazione bluetooth non forniscono troppi dettagli tecnici sull'implementazione. Dove dovrei cercare?