Differenza tra schemi di progettazione sicuri e una linea guida generica per la codifica?

3

Esiste una differenza tra schemi di progettazione sicuri e una linea guida generica per la codifica da cui è possibile derivare una guida di codifica specifica per la tecnologia?

Modelli come "autenticazione", "sessioni sicure" o "convalida dell'input" sono schemi sicuri e dovrebbero anche essere indirizzati all'interno di una guida di codifica.

Quindi c'è una differenza o è solo un'altra definizione per lo stesso "contenuto"?

    
posta Th0mas 17.06.2014 - 16:22
fonte

2 risposte

4

Ci sono diverse varianti terminologiche lì intorno, quindi non ci sarà una risposta assoluta.

Direi che "un modello di progettazione sicuro" è un'espressione che verrà utilizzata da persone che credono che gli sviluppatori siano una specie di scimmia che può raggiungere la sicurezza se resa sufficientemente obbediente da regole formali rigorose. Mentre le "linee guida per la codifica" sarebbero utilizzate da persone più realistiche che hanno capito che gli sviluppatori sono meglio allettati con "empowerment" (e banane) e possono ottenere un livello di sicurezza accettabile se offrono una guida. Un requisito fondamentale per la sicurezza è che le persone capiscano cosa stanno facendo.

    
risposta data 17.06.2014 - 16:34
fonte
1

Il termine "modello di progettazione della sicurezza" di solito significa una pratica di progettazione che, se applicata correttamente, garantisce che una proprietà di sicurezza sia valida. Ad esempio, il marchio :

A Trademark in computer security is a contract between code that verifies security properties of an object and code that requires that an object have certain security properties. As such it is useful in ensuring secure information flow. In object-oriented languages, trademarking is analogous to signing of data but can often be implemented without cryptography.

Quindi uno sviluppatore può marcare un oggetto e usare il nascondiglio delle informazioni per assicurarsi che altri moduli non possano falsificare il marchio. Quindi un cliente può essere sicuro che la presenza del marchio (a volte semplice come instanceof ) implica che la proprietà sia valida al runtime.

Ad esempio, l'output di un disinfettante HTML e un modello HTML che disinfetta tutti gli input potrebbero essere marchi registrati come HTML sicuro. Il codice downstream potrebbe controllare il marchio per distinguere tra il contenuto che deve ancora essere trattato con sospetto da quello che è originato all'interno del sistema o che è stato filtrato all'ingresso nel dominio di sicurezza.

Al contrario, una linea guida per la codifica potrebbe essere

When you need to verify that a security property, like well-formedness or provenance, holds, either use one of the validator libraries written by our security engineers, or check that the input has a trademark so that you know the property was checked upstream.

Il modello spiega come progettare un oggetto o un modulo con determinate proprietà di sicurezza e le linee guida indicano i client che richiedono quella proprietà in modo da mantenerla nel loro codice.

I pattern spiegano la relazione tra invarianti e decisioni di progettazione / API, mentre le linee guida stabiliscono quali pratiche usare e amp; quando gli sviluppatori possono coordinare efficacemente il proprio lavoro.

Quando si lavora in un linguaggio orientato agli oggetti con una scarsa informazione, il marchio di un oggetto è più duro, quindi una linea guida per la codifica potrebbe essere

Don't forge trademarks or the secure kernel team will hunt you down.

che non difende l'uso di un modello di progettazione sicuro, ma quando viene seguito migliora la sicurezza del sistema prevenendo gli abusi delle funzionalità linguistiche che violano i contratti di sicurezza.

    
risposta data 17.07.2014 - 17:46
fonte

Leggi altre domande sui tag