Ho un dispositivo Linux che effettuerà chiamate periodiche a un server API, ad esempio ogni volta che il sistema si avvia. Ogni volta quindi dovrebbe autenticarsi e poi fare le sue cose.
Posso memorizzare il nome utente / password in un file .config
o creare un pubblico id_rsa.pub
SSH-key.
La mia domanda è questa: perché l'autorizzazione SSH è considerata migliore? Voglio dire se qualcuno ottiene l'accesso alla mia macchina Linux, quindi possono leggere sia il nome utente / password O la chiave SSH e possono quindi copiare queste informazioni sul proprio laptop.
Mi sto perdendo qualcosa qui? Nota Queste username / password sono tutte generate da me e saranno tutte stringhe a 256 bit casuali. Quindi il ragionamento tipico delle persone useranno password deboli e prevedibili non si applica qui.
Aggiorna
E riguardo il seguente approccio:
Hai un numero seme, che sarà un md5
di qualcosa. Questo valore è memorizzato sul server e su ogni macchina.
Ora, durante l'autenticazione, un client invierà due stringhe,
str1 = md5(timestamp + random());
str2 = md5(str1 + seed);
Il server riceverà questi due numeri e ricalcolerà di conseguenza str2
da str1
. Se str2_from_server == str2
, viene generato e inviato un token. Questo token scadrà con un uso o dopo un periodo di tempo.
I token verranno salvati in una coppia chiave / valore di tabella di str1 str2 token
e non potranno più essere riutilizzati (realisticamente, questa tabella verrà cancellata di tanto in tanto in modo che non cresca all'infinito).
Questo è superiore / inferiore a SSH?