Perché un certificato digitale autofirmato (X.509) non può essere modificato?

3

Non ho esperienza nella firma del codice, ma stavo pensando a questo: come sai, ci sono vari strumenti per la generazione di certificati digitali autofirmati (come makecert da Windows o OpenSSL). Ora, sarebbe bello se uno sviluppatore di malware potesse firmare il codice del suo malware da una CA affidabile. Può solo firmarlo in due modi:

  1. Paga una CA attendibile per generare un certificato con il quale firmerà il suo malware;
  2. Crea un certificato autofirmato in cui, per ovvi motivi, l'autorità che rilascia il certificato è uguale al nome del soggetto

In particolare, il secondo punto riguarda la mia domanda: se l'algoritmo per generare un certificato digitale è noto , potrei scrivere il mio generatore di certificati per firmare la mia domanda, dove l'Emittente è un nome noto di CA; quindi aggiungo il certificato appena generato nell'Autorità di certificazione radice affidabile (nel sistema operativo Windows). Ora, quando qualcuno apre l'applicazione, il certificato viene installato nel TRCA e quindi il malware inizia. Il malware è firmato dal certificato che è stato appena aggiunto e sembra provenire da una fonte ben nota a causa del nome della CA. So che, se fosse possibile, la CA e tutta la roba della crittografia non esisterebbero e sarebbe molto semplice generare un certificato per conto mio in cui il releaser è una CA. Quindi la mia domanda è: perché non c'è modo di generare un certificato autofirmato in cui l'Emittente è diverso dall'oggetto?

    
posta Angelo 09.07.2013 - 14:51
fonte

3 risposte

3

Sì, puoi creare un certificato autofirmato con qualsiasi nome soggetto che desideri. È facilmente fattibile con strumenti gratuiti. Ottenere un certificato di firma con un nome soggetto falso firmato da un emittente vero e proprio è un'altra storia - prendono la verifica dell'identità in modo abbastanza serio.

Un'altra cosa che non è facile (in realtà ritenuta impossibile) è capire la chiave privata della CA legittima. Quindi, se stai simulando una CA, molto probabilmente finirai con la creazione di una nuova coppia di chiavi pubblica / privata e la firma. Qualsiasi entità che abbia fiducia in una determinata chiave pubblica NON si fida della tua CA falsa (true per l'archivio dei certificati MS).

Ciò che non puoi fare - facilmente - è modificare l'archivio di certificati attendibili su un computer a cui non hai già accesso. Questa non è un'operazione disponibile dalla maggior parte dei browser Web: richiede almeno l'accesso a livello utente, sebbene alcuni sistemi operativi possano essere ulteriormente limitati all'accesso a livello di amministratore. In sostanza, per estendere il regno della fiducia, tu devi esserti fidato di te stesso.

Il che pone la domanda: se hai accesso a questo livello a una macchina, perché preoccuparti di firmare il malware? Basta installarlo e risparmiarti il mal di testa delle firme dei codici.

Lì, comunque, ci sono due attacchi davvero interessanti in quest'area:

  • Ingegneria sociale - in molti casi, quando un utente naviga, il browser chiederà all'utente quando viene rilevata una CA sconosciuta - all'utente viene chiesto di fidarsi esplicitamente del firmatario e se l'utente ha la capacità, l'opzione è lì per installare il certificato CA come una CA affidabile. Quindi ... ci sono tutti i modi di configurare un sito per consigliare l'utente di fidarsi di te.

  • Se non è validato correttamente, hai un problema - il più famoso è stato FLAME , che utilizzava un certificato di firma Microsoft falso - non era convalidato correttamente e molti server, infatti, caricavano malware.

Non è l'attacco più semplice: devi conoscere davvero un prodotto e come sta facendo la convalida dei certificati per ottenere qualcosa del genere - ma una cattiva progettazione / implementazione può portare a difetti, quindi è soprattutto su quanto tempo l'utente malintenzionato può spendere trova il buco.

    
risposta data 09.07.2013 - 15:51
fonte
1

Questo è per definizione. Un certificato autofirmato è firmato dal soggetto stesso. Ciò significa che un certificato autofirmato è definito avendo la stessa voce di emittente e soggetto.

Quando chiedi un certificato in cui l'emittente è diverso dal soggetto, questo non è per definizione un certificato autofirmato.

Inoltre, sappi che non puoi falsificare l'emittente poiché il certificato è firmato dall'emittente e ciò significa che hai bisogno della chiave privata dell'emittente.

    
risposta data 09.07.2013 - 15:18
fonte
0

Non c'è nulla che ti impedisca di dire che sei qualcuno che vuoi in un certificato autofirmato. Ciò che lo mantiene sicuro è la firma stessa. Verisign non è identificato da esso dicendo nel testo che è firmato da Verisign. È identificato come Verisign perché i computer degli utenti sono dotati di un certificato radice attendibile per Verisign che viene utilizzato per verificare la firma che Verisign colloca sui certificati che firmano. Il testo è lì solo per aiutare a cercare il certificato sul client in modo che la firma possa essere verificata.

Quindi nel tuo caso in cui dici "I'm verisign" e firmi da solo, un client che tenta di convalidare la firma va a cercare la copia di fiducia del certificato di Verisign (perché è ciò che identifica il firmatario) per convalidare la firma e la convalida della firma fallisce perché non hai la chiave privata di Verisign.

    
risposta data 09.07.2013 - 17:15
fonte