Sono curioso di questo. Ho visto questo thread:
Perché non dovremmo eseguire il rollover?
e questa risposta:
che conteneva questo commento, che aveva il secondo più alto numero di voti e che non può essere ignorato:
"The biggest problem I notice among beginning coders, is that they don't take security risks seriously. If I mention what kind of weaknesses some system has, the common response is rolling their eyes... The attacks are real and do happen, and if you can't even apply proper security at school then how's your application supposed to fare when it's live for hundreds of customers? :/ The only way to convince them is usually providing examples, and best of all a live demo. So if you have examples... I think it'd be a nice addition!"
Questo mi fa meraviglia, quindi. Il contesto di questa discussione riguardava il "rolling del proprio" software o algoritmo crittografico e perché questa è generalmente una cattiva idea a causa delle numerose vulnerabilità di sicurezza che si possono creare senza la competenza adeguata (e sembrava esserci essere un'aria strong che questo non si applica solo alla creazione dei propri cifrari di per sé ma anche implementando codici esistenti e controllati nel proprio codice) che possono rendere considerevolmente il prodotto meno sicuro di quanto dovrebbe essere o pubblicizzare. E la preoccupazione è, ovviamente, eminentemente ragionevole. Inoltre, la quantità di esperienza richiesta è apparentemente abbastanza grande - secondo una storia che ho sentito su questo molto, molto tempo fa, qualcuno ha detto una volta (penso fosse Bruce Schneier?) Che non avrebbero (approssimativo) "fiducia in nessuno cripto scritto da chiunque non avesse "guadagnato le proprie ossa" spendendo un sacco di codici rompentisi ".
Il problema, tuttavia, è che mentre capisco questo riguardo al software crittografico , il commento sopra solleva un punto che suggerisce che questo porta implicazioni che sono ampiamente più generali in quanto i problemi di sicurezza si applicano al software all , e quindi lo sviluppatore di qualsiasi software deve tenere conto della sicurezza indipendentemente da cosa sia, anche se è non esplicitamente crittografico o noi non scriviamo parti crittograficamente esplicite (ad esempio, consideriamo quanto spesso un buffer exploit si apre su vari software generici come i browser web e alcuni cracker lo colpiscono per infliggere danno, esp rubare informazioni e / o denaro). Sembra che, intuitivamente, vi sia un obbligo etico di base da parte di qualsiasi sviluppatore di software che sta per rilasciare il codice che verrà usato dal pubblico più ampio, per assicurati che soddisfi alcuni "ragionevoli" standard di sicurezza, anche se non è specificamente codice "sicurezza" . Se uno rilascia il codice uno sa può essere insicuro, allora si agisce in un modo che ancora, molto ragionevolmente , potrebbe essere interpretato come contenente una negligenza non etica.
Ed è qui che sono preoccupato. Perché, in definitiva, dal momento che non puoi semplicemente avere tutto software "pre-creato" - come allora quale sarebbe il punto di sviluppo di qualsiasi software - dovrai tirare almeno QUALCUNO di sicurezza- incorporare codice da solo . Devi devi eseguire il rollover , piaccia o no, e ciò significa che richiede expertise . Quindi la domanda è: se seguiamo il detto di non "lanciare il proprio" in quanto si applica al codice di sicurezza specificamente come la crittografia, MA dobbiamo il nostro codice come parte dello sviluppo di applicazioni ALL , quindi quanta esperienza in sicurezza ci serve come programmatore generale di applicazioni per soddisfare questo limite etico intuitivo? Sembra che l'importo debba essere "più di zero" ma (si spera!) "Inferiore a quello di un esperto di sicurezza informatica" del calibro che sviluppa gli algoritmi di crittografia attuali (come AES, ecc.) Che diventano standard mondiali. Ma qual è l'importo e qual è la fine di tale spettro più vicino e cos'è esattamente necessario per impararlo?