2009-05-08 3 views

risposta

11

Forte nome firma ha diversi scopi (anche se non per la protezione effettiva contro la manomissione con il programma, come è errore comune) - nel tuo caso l'utilizzo di una chiave forte per identificare in modo univoco (e verifica) una versione specifica di un assembly specifico, richiesto dal GAC. L'altro utilizzo, che impedisce lo spoofing da parte di altri assembly, non sembra necessario in questo caso (correggimi se sbaglio). Per questo motivo, credo che sia perfettamente accettabile lasciare la chiave aperta (non protetta da password) e includere il file nel controllo del codice sorgente. Per quanto posso vedere, non fermerai nulla che non vuoi con la password che protegge la chiave. (Tuttavia, se potessi fornire maggiori dettagli sul contesto di sicurezza, potrei dover rivedere tale visualizzazione.)

Inoltre, vedere this MSDN article per una discussione approfondita su come utilizzare correttamente la firma dei nomi forti in generale.

+1

Potresti approfondire questo malinteso sulla protezione contro la manomissione di un assemblaggio? Questo non mi sembra corretto (vedi http://stackoverflow.com/questions/369248/can-strong-naming-an-assembly-be-used-to-verify-the-assembly-author/369477#369477), ma forse mi manca qualcosa? Tuttavia, con un solo nome forte, ovviamente non è possibile verificare l'autorità (che avrebbe bisogno di un meccanismo di certificato come Authenticode). –

+0

@divo: cosa non è corretto, esattamente? Il problema con la firma di una chiave forte è che non è possibile verificare l'origine della chiave pubblica, in modo che possa essere rigenerata da un altro autore e comunque essere d'accordo con l'asseritamente (che può essere manomesso). Se pensi che la risposta collegata non sia d'accordo con la mia (sono fiducioso che non lo sia), allora prova a rileggerla attentamente (insieme alla risposta di Mehrdad, che è anche buona). Ci sono alcune sottigliezze che non sono affatto facili da capire. – Noldorin

2

Direi includere una chiave di "sviluppo" nel controllo del codice sorgente, per rendere più facile la costruzione ed evitare di costringere le persone a fare i conti con la creazione e l'uso della propria chiave. La chiave nel controllo del codice sorgente è priva di significato per la sicurezza, dal momento che chiunque può firmare con esso. Se le persone vogliono firmare la loro build del tuo progetto open-source, possono sostituire la loro chiave che possono gestire in qualsiasi modo.

È anche possibile fornire build per il download, firmati con una chiave protetta (che non si fornisce a nessuno), ma per le persone che desiderano utilizzare questi file binari dovrebbero avere fiducia in te. Sei affidabile? :)