Qual è l'utilizzo di ASN.1 nel protocollo SSL e Qual è il rischio di utilizzarlo?

0

I sentito che ASN.1, che fa parte delle librerie SSL del browser, introduce il rischio potenziale di compromettere il nostro sistema anche se utilizziamo il no-script. ma cosa sta facendo esattamente ASN.1? Perché è necessario utilizzare qualcosa come ASN.1 per codificare / decodificare i dati (come testo o immagini o binari) per la crittografia / decrittografia che mette a rischio il nostro computer? perché SSL è un protocollo per la crittografia dei dati e l'invio su Internet.

Commento dell'utente20883: in Wikipedia su ASN.1 dice: Se vogliamo trasmettere questo:

myQuestion FooQuestion ::= {
trackingNumber     5,
question           "Anybody there?"

Lo cambiamo in questo modo:

30 — type tag indicating SEQUENCE
13 — length in octets of value that follows
   02 — type tag indicating INTEGER
   01 — length in octets of value that follows
      05 — value (5)
   16 — type tag indicating IA5String 
        (IA5 means the full 7-bit ISO 646 set, 
        including variants, but is generally US-ASCII)
   0e — length in octets of value that follows
      41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f 
         — value ("Anybody there?")

per rendere questo e inviare su TCP:

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

Ma io dico che se vogliamo inviare quel messaggio possiamo semplicemente usare UTF-8 o solo la codifica binaria per crittografare quel messaggio invece di cambiare messaggio a un software !!!

Possiamo semplicemente farlo per rendere il messaggio pronto per la crittografia AES:

myQuestion(space character}FooQuestion(space character}::=(space character}trackingNumber(space character}(space character}5,question(space character}(space character}"Anybody there?"

Aggiornamento: ora abbiamo un semplice blocco di dara da crittografare con AES direttamente e non abbiamo bisogno di rendere il nostro messaggio come codice shell !!! è solo un messaggio, ci piacciono gli altri messaggi che criptiamo sempre e non c'è bisogno di codifica o exploit ...

    
posta user20883 17.02.2013 - 22:15
fonte

2 risposte

7

È ASN.1 . ASN.1 è una sintassi generica per la descrizione di tipi di dati strutturati, insieme ad alcune regole di codifica che indicano come tali valori di dati devono essere codificati come sequenze di byte e decodificati. I certificati X.509 sono specificati per utilizzare ASN.1 con le regole di codifica "DER".

ASN.1 è piuttosto complesso e molto più complesso di quanto dovrebbe essere, a causa di una lunga storia di sviluppo guidato da una commissione. In particolare, include molti tipi di stringhe di caratteri distinti senza ragioni apparenti, ei suoi tipi di codifica delle date sono notevolmente inefficienti e difficili da gestire (e uno di essi è soggetto a Problemi Y2K , attualmente in programma per il 2050). Di fronte a questa complessità, gli sviluppatori hanno spesso trovato attraente l'idea di fare decodifica specializzata "solo per certificati", al fine di evitare l'arduo compito di implementare un decodificatore generico e sistematico (in particolare, è possibile ma non conveniente implementare un full-optional decodificatore ASN.1 generico in linguaggi come C che mancano di gestione automatica della memoria, ad esempio garbage collector ).

Facendo codice specializzato "a mano", per evitare il sovraccarico di un approccio sistematico, significa che lo sviluppatore dovrà pensare molto più a possibili problemi quando viene presentato con dati "anormali". Questo è un terreno fertile per le vulnerabilità (gli sviluppatori sono solo umani, dopo tutto) e questo è esattamente quello che è successo in OpenSSL .

(Anche altre librerie possono essere influenzate. Sto usando OpenSSL come esempio perché è molto diffuso, e anche perché è scritto in C, rendendo le conseguenze dei buffer overflow e degli errori use-after-free molto più pericolosi, fino a includere l'esecuzione arbitraria di codice. Nelle librerie in più linguaggi controllati, che controllano i confini dell'array e usano un GC, otterranno effetti meno gravi: un buffer overflow innesca un'eccezione, che è scomoda ma meno di una shell remota per un utente malintenzionato .)

    
risposta data 17.02.2013 - 22:37
fonte
1

Quindi, dalla tua domanda aggiornata, sembra che tu stia chiedendo:

Why would I use the existing encoding structure when I can design my own?

La semplice risposta è che nonostante ASN.1 abbia alcuni problemi, come ha sottolineato @Tom, sarà comunque molto meglio che progettare il tuo, a meno che tu non sappia davvero cosa stai facendo, dato che sei più che probabile per implementare le vulnerabilità quando si progetta il proprio codice.

    
risposta data 18.02.2013 - 08:52
fonte

Leggi altre domande sui tag