Il nome strong elimina la necessità di impacchettare / confondere?

2

Sono nuovo alla programmazione .NET, e mi chiedo - dal punto di vista della sicurezza - se il strong schema di denominazione utilizzato negli assembly .NET rimuova completamente la necessità di altre tecniche comunemente usate come il confezionamento del codice assemblato?

Per essere chiari, sto parlando di applicazioni .NET in esecuzione sul lato client e il mio obiettivo è quello di assicurarsi che l'utente (client) non possa modificare l'applicazione. Questo è un problema comune per gli sviluppatori di software e giochi, e so che non può essere mitigato al 100%, ma sto cercando una soluzione che possa fermare la maggior parte dei cracker.

Se ho completamente frainteso l'uso di nomi forti, correggimi e indicami la giusta direzione:)

edit: dovrei anche menzionare che sono più interessato all'integrità dell'applicazione, non necessariamente mantenendo gli algoritmi hidden / secret .

Modificato per aggiungere risposta grazie a CodeInChaos

So Strong Names sembra totalmente rotto e non offre alcuna sicurezza - dato che l'attaccante ha accesso agli assembly su una macchina in cui è root. Spiegazione dei nomi affermati e . NET Framework-Rootkits spiegare questo.

Gli assembly in .NET Framework sono collocati in cartelle all'interno del GAC con nomi di cartelle corrispondenti alla firma quando firmati dall'autore originale. Le firme non vengono mai verificate, quindi se un utente malintenzionato sostituisce una DLL dal framework con la sua e la inserisce in una cartella "corretta", la DLL degli hacker verrà accettata come legittima. Ciò significa ovviamente che l'utente malintenzionato può modificare le funzioni nel framework utilizzato per la verifica dei nomi sicuri nelle applicazioni .NET e quindi consente a un utente malintenzionato di modificare le applicazioni .NET con il proprio codice.

    
posta efr4k 16.02.2012 - 10:06
fonte

1 risposta

2

È facile cambiare gli assembly firmati, è solo che non hanno una firma valida dall'autore originale in seguito.

La denominazione strong aiuta con il controllo delle versioni (in particolare richiesto per l'installazione nel GAC) ed è una funzionalità di sicurezza in determinati scenari di fiducia mista. Ma non aiuta molto le persone che hanno pieni diritti sulla comp in cui è in esecuzione il tuo programma.

    
risposta data 16.02.2012 - 10:56
fonte

Leggi altre domande sui tag