Originariamente inviato da
MartinodF
Non so se qualcuno abbia scoperto le specifiche esatte, ti riporto quello che so io.
Ogni immagine di boot o recovery ha un header, normalmente, che contiene un certo numero di informazioni sull'immagine stessa (tipo la dimensione delle varie parti che contiene, ecc). In fondo a questo header Motorola ha aggiunto un nuovo campo, che contiene un hash (forse sha-1, o qualcosa di simile) di tutto il resto dell'immagine, escluso l'header. E' una possibilità citata anche nella documentazione "ufficiale" di queste immagini, ma mai utilizzata da nessuno prima d'ora.
L'hash è ovviamente crittografato, molto probabilmente con un sistema chiave pubblica / privata simile a quello degli update.zip. La chiave privata con cui motorola firma l'hash è diversa da Milestone italiani a tedeschi a francesi a sudamericani ecc, ma uguale tra tutti i Milestone italiani ad esempio.
Chi effettua il controllo è il bootloader. Prima di avviare il telefono in modalità normale o recovery, carica la relativa partizione boot o recovery e controlla che il contenuto corrisponda all'hash salvato, decifrandolo prima con la chiave pubblica. Se non corrisponde, il telefono non si avvia e rimane in modalità bootloader (quella schermata nera da cui scrivi le immagini sbf).
Basta cambiare un solo bit dopo l'header che l'immagine non parta più una volta scritta sul telefono. E' il motivo per cui non possiamo usare l'update.zip francese neanche aggirando il controllo fatto durante l'installazione. Anche scrivendo a mano la partizione, poi questa non si avvia.
Non abbiamo il codice del bootloader, Andrea e altri hanno provato a decompilarlo e studiare come funzioni ma non so se abbiano fatto progressi fino ad ora. Non abbiamo ovviamente la chiave privata di motorola per nessun paese, e per il momento non abbiamo recuperato neanche la chiave pubblica (che potrebbe essere nel bootloader o non so dove sul telefono).
Spero sia chiaro