La firma con un nome sicuro (coppia di chiavi memorizzata in un file .snk) è (tra gli altri) significato per protect against forging assemblies.In che modo la firma con un nome sicuro protegge contro la creazione di un insieme di assiemi?
Ad esempio: Spedisco il mio assembly firmato con un nome sicuro, quindi un altro sviluppatore usa il mio assembly e quindi il suo assembly ora contiene un riferimento al mio, menzionando la chiave pubblica della mia coppia di chiavi. Alcuni utenti installano l'assembly dello sviluppatore e il mio assembly e utilizza felicemente il codice dello sviluppatore. Se qualcun altro tenta di produrre un assembly che assomiglia a una mia versione e convincere l'utente che si tratta di un "aggiornamento che vale la pena installare" che l'assembly forgiato non verrà caricato perché controllo la mia coppia di chiavi e quell'assemblaggio forgiato non è firmato con la stessa coppia di chiavi . Va bene, d'accordo.
Ma che cosa impedisce a una parte malintenzionata di falsificare sia il mio assembly che l'assembly dipendente dell'altro sviluppatore e "spedirlo" entrambi? Prendono il mio assemblaggio e l'assemblaggio di quello sviluppatore, manomette entrambi, firmano la versione contraffatta del mio assembly con qualunque chiave, quindi aggiungono un riferimento ad esso nella versione contraffatta dell'assembly dipendente, firmano anche quest'ultimo e inviano entrambi. Intendo "spedire" malmente due assiemi non dovrebbe essere molto più difficile di "spedire" un assemblaggio.
In che modo la firma con i nomi sicuri protegge da falsificare più assiemi?
Bene, nome forte anche all'assemblaggio. Continua a tirare quella stringa e finirai con l'EXE. Se l'attaccante può rimpiazzare anche quello, non ha più senso usare nomi forti. –
@Hans Passant: Penso che tu abbia ragione.Potresti aggiungere questo come risposta? – sharptooth