Blocco dell'accesso a una libreria di classi (C #)

3

Mi è stato affidato il compito di progettare una libreria di classi che detesto davvero costruire. È fondamentalmente un'enorme backdoor della nostra sicurezza software. L'idea era che sarebbe stato accessibile solo da un terminale su un sistema chiuso. Ho intenzione di bloccare il mio codice con una password, ma c'è un modo per assicurarmi che i miei file binari della libreria non possano essere aggiunti a un progetto senza password (o qualcosa del genere)?

Non sto cercando una spiegazione completa, poiché probabilmente questo non è il supporto corretto per una cosa del genere. Sono più alla ricerca di ciò che gli argomenti dovrebbero essere oggetto di ricerca. La mia ricerca-fu non si è ancora presentata molto, quindi sto cercando altre parole chiave che possano portarmi nella giusta direzione. Un libro o un sito web specifico sarebbe ancora meglio.

Ovviamente, offuscare il più possibile il mio codice sarà anche una pratica di sicurezza che intendo impiegare. Se questa è la mia pratica "best-case" per proteggere il mio codice, così sia. Speravo in qualcosa di più, però.

    
posta InterstellarProbe 15.08.2018 - 23:04
fonte

4 risposte

7

Come soluzione è possibile aggiungere codice nella routine di inizializzazione della classe che fondamentalmente controllerebbe determinate condizioni e fallirebbe se le condizioni non fossero soddisfatte. Ad esempio, controlla se un determinato certificato è installato sulla macchina su cui è in esecuzione il codice:

link

    
risposta data 15.08.2018 - 23:53
fonte
5

IMHO ti stai avvicinando dal lato sbagliato.

The idea was that it would only be accessible from one terminal on a closed system

Quindi assicurati che tutto il software installato su quel sistema sia accessibile solo da personale autorizzato. Assicurati che nessuno possa "rubare" la lib da quel terminale chiudendo eventuali buchi come porte USB, accesso illimitato al file system, upload illimitato di file.

Assicurati anche che il codice sorgente di tale libreria sia disponibile solo per te e altri sviluppatori autorizzati.

Quando lo fai, non avrai bisogno di un approccio non sicuro come una protezione con password con credenziali hard-encoded.

    
risposta data 16.08.2018 - 08:00
fonte
1

.. a class library ... basically a huge backdoor to our software security.

Hai sollevato queste preoccupazioni con i responsabili della sicurezza?

The idea was that it would only be accessible from one terminal on a closed system.

Una libreria può essere utilizzata in qualsiasi applicazione, da qualsiasi luogo.

I plan to lock my code with a password

... che inserisce tale password in Source Control riducendola quindi a un'altra variabile String.

... is there a way to make sure that my library binary files cannot be added to a project without a password (or something to that effect)?

Non facilmente. Se non altro, stai entrando in un'area Licensing l'uso di quella libreria.

Se questa funzionalità deve essere utilizzata in una sola applicazione da una sola macchina e presuppone che i Responsabili della sicurezza non sprechino l'intera idea in fiamme (che probabilmente dovrebbero) e fai devi scriverlo, quindi incorporare la funzionalità direttamente nell'applicazione di destinazione. Non creare affatto una libreria, impedendo quindi che venga riutilizzata.

    
risposta data 16.08.2018 - 13:02
fonte
1

Sembra che tu stia tentando di "sicurezza attraverso l'oscurità". Hai ragione ad essere molto scettico su questa idea, perché non funziona. Invece dovresti pensare all'autenticazione e all'autorizzazione. Come faccio ad autenticare gli utenti in modo tale da sapere chi sta tentando un'operazione? Come autorizzo gli utenti a eseguire alcune operazioni e non altre?

Questo è un problema molto vecchio e oggi ci sono soluzioni note in uso. Se le risorse protette sono di grande valore, esaminare l'autenticazione a due fattori utilizzando generatori di chiavi monouso (ad esempio Yubikey). Esistono diverse soluzioni open source per il mantenimento dei dati di autorizzazione.

    
risposta data 16.08.2018 - 18:57
fonte

Leggi altre domande sui tag