L'offuscamento è "obbligatorio" quando si verifica una delle seguenti tre situazioni:
- L'applicazione fa qualcosa di intrinsecamente debole come l'incorporamento di un valore segreto nel codice sorgente.
- Il progettista dell'applicazione vuole "sentirsi sicuro" ed è sufficientemente incompetente in crittografia in modo che l'offuscamento fornisca quel sentimento (l'ignoranza è beatitudine).
- Il fornitore dell'applicazione vuole proteggere la sua "proprietà intellettuale". L'offuscamento del codice non impedirà infine alle fotocopiatrici di capire come funziona il codice, ma potrebbe ritardare i loro sforzi di reverse engineering di pochi giorni (non molto più di questo); ancora più importante, l'offuscamento è un modo per rendere ovvio che i contenuti del codice non sono pensati per l'ispezione esterna, il che aiuta ad ottenere la qualificazione legale del reverse engineering vietato in alcune giurisdizioni.
Rimuovere e / o offuscare OpenSSL non è di grande aiuto se l'applicazione incorpora i segreti o tenta di fare "protezione del contenuto"; lo sforzo è comunque senza speranza (è il caso 1). Per quanto riguarda il caso 3, non c'è alcuna proprietà intellettuale da proteggere in AES perché AES è già pubblico, e non è la proprietà del venditore per cominciare. Tuttavia, offuscare OpenSSL (o rimuoverlo e rimpiazzarlo con un'implementazione fatta in casa, o qualsiasi altro incantesimo rituale) può aiutare molto il progettista a dormire la notte; se è quello che serve per renderlo felice ...
L'idea alla base è che, nonostante ciò che alcune persone credono fermamente o affermano, l'offuscamento non funziona. Beh, non interrompe il codice, il software funziona ancora dopo l'offuscamento; ma non aumenta la sicurezza tecnica contro il reverse-engineering e non migliora la protezione del contenuto. L'unico punto che può rendere l'offuscamento una decisione razionale è qualificazione legale ; e quello non si applica a OpenSSL, che è già open-source.