Come posso dimostrare che il mio software è sicuro per coloro che sono interessati a installarlo?

6

Ho scritto un programma di blocco delle password per Microsoft Windows che crittografa i suoi contenuti sul computer locale. L'unico modo per ottenere i dati è con la chiave di crittografia che l'utente conosce. Utilizza le API esistenti nel sistema operativo per eseguire la crittografia.

Penso che sia sicuro e non abbia scritto backdoor in esso, ma non ho alcuna trazione nel distribuirlo perché le persone non si fidano che una tale applicazione non sia backdoor o crittografato in modo sicuro.

Che cosa posso fare per assicurare correttamente ai potenziali utenti che il software è sicuro da usare?

    
posta János Tigyi 02.03.2016 - 17:28
fonte

3 risposte

14

Dimostrare è una parola strong, e ad essere onesti, non è la parola che stai cercando. Quello che vuoi veramente è la fiducia. Desiderate che gli utenti (o i potenziali utenti, in questo caso) si fidino del fatto che il vostro software sia abbastanza sicuro da essere utilizzato per proteggere i dati più sensibili. Ci sono diversi modi in cui puoi farlo.

  • Apri il software. Se gli utenti hanno la possibilità di rivedere il codice sorgente, è più probabile che gli utenti tecnici si fidino di esso, anche se mai fanno riesaminano il codice sorgente, o in molti casi non sono nemmeno qualificati per rivedere il codice sorgente .
  • Ottieni un parere indipendente da una terza parte qualificata. In altre parole, un controllo che fornisce al tuo software un certificato di buona salute.

  • Presentazione professionale. Se il tuo software si trova su un sito web che sembra costruito da un amatore nel suo tempo libero, molte persone lo ascolteranno con tale qualità per tutte le sue caratteristiche, inclusa la sicurezza. Se è presentato professionalmente e sembra essere supportato da qualcuno professionale, correttamente o meno, la gente ci penserà più in alto. Tale è la psicologia.

Ultimamente, la tua più grande sfida probabilmente non è nella tua offerta in sé, ma nella competizione. C'è un sacco di software di gestione password là fuori. Il vostro bisogno non deve solo apparire di alta qualità e sicuro, ma almeno altrettanto di alta qualità e sicuro come il loro.

    
risposta data 02.03.2016 - 23:03
fonte
5

Se sei serio nel fornire prove di sicurezza (esiterei ad usare la parola "prova"), quindi per il mercato statunitense, il NIST Cryptographic Module Validation Program (CMVP) è ciò di cui avresti bisogno.

Tieni presente che ottenere la convalida è un processo lungo, arduo e costoso e potrebbe richiedere investimenti e cambiamenti significativi.

Tieni presente che se passi, non solo ricevi pubblicità gratuita da il governo degli Stati Uniti , ma il tuo prodotto è quindi idoneo per l'acquisto da agenzie e aziende che devono utilizzare solo prodotti convalidati FIPS 140-2.

Oltre a ciò, un audit di terze parti attendibile e pubblico sarebbe almeno una prova; ti costerà, ma non tanto quanto farlo convalidare.

    
risposta data 03.03.2016 - 04:36
fonte
1

Non sarai in grado di convincere i potenziali utenti che la tua app di gestione delle password è sicura e affidabile senza specificare dettagli sufficienti dell'architettura in modo che gli utenti possano prendere una decisione informata.

Prima di tutto, devi dire quale algoritmo di crittografia viene utilizzato e la forza chiave. Speriamo che, qualunque cosa sia, è attuale e generalmente accettata come infrangibile contro le tattiche moderne.

Devi anche parlare di come il tuo codice gestisce la decrittografia dei dati. Sulla piattaforma Windows si ha la classe SecureString che fa un lavoro ragionevolmente buono per evitare che i dati non crittografati vengano archiviati in memoria in testo normale e / o in memoria più a lungo del necessario. Non sarebbe positivo se gli utenti scoprissero che se l'app interrompe i dati si trova nel file di crash dump in testo in chiaro.

I dettagli del test di penetrazione che è stato fatto dovrebbero essere forniti insieme ai dettagli. Idealmente, dovresti sollecitare i tester competenti per la penetrazione a battere la tua app per rivelare eventuali punti deboli. Quali difese attive ha l'app contro i metodi di attacco comuni, ad es. rileverà e rifiuterà di funzionare se è in esecuzione una delle app di keylogger più comuni?

Infine, non dimenticare l'elemento umano. Cosa succede quando l'utente dimentica la chiave, o più probabilmente se l'app in qualche modo corrompe o perde la metà? C'è una funzione di recupero? Qual è il processo intorno a questo? Se i dati sono semplicemente andati via senza alcun modo di recuperarli, questo non verrà abbracciato molto bene. Se c'è un processo per recuperare i dati, allora quel processo deve essere esaminato attentamente. Non sarà bello se riuscirò a recuperare i dati crittografati semplicemente trovando la madre del mio obiettivo su Facebook e conoscendo il nome da nubile.

Non tentare di scoraggiare, ma è molto rischioso commercializzare un'app di questa natura. Sarai in competizione con aziende che sono state in questo business da decenni e hanno le risorse per assumere le migliori menti al mondo per sviluppare e / o testare il prodotto.

Anche se potessi farlo, avresti comunque bisogno di una dichiarazione di non responsabilità legale molto rigorosa per proteggerti dalla responsabilità. Che cosa succede se ti svegliassi una mattina ed è finita la notizia che le classi di crittografia in .Net sono state sfruttate in un modo che rende la tua app vulnerabile? Potresti aver fatto tutto esattamente nel tuo codice e nei processi di supporto, ma sei dipendente dalle librerie di classi al di fuori del tuo controllo diretto.

    
risposta data 07.03.2016 - 21:05
fonte

Leggi altre domande sui tag