Statico vs collegamento dinamico

1

Mi sono imbattuto nel sito di implementazione di DJB Curve25519 ( link ) e ho notato che afferma in riferimento al suo utilizzo:

You can and should include it in your own programs, rather than going to the effort of linking to a shared library; the compiled code is around 16 kilobytes, depending on the CPU

Suppongo che questo significhi legare staticamente la lib nel tuo programma che mi sembra strano dal punto di vista della sicurezza. Non sarebbe più sicuro che la tua libreria di codici crittografici fosse una lib condivisa, quindi se c'è una vulnerabilità di implementazione sarebbe molto più semplice correggerla invece di ricompilare tutti i programmi dipendenti?

    
posta Anthony Kraft 23.02.2016 - 22:10
fonte

2 risposte

2

L'uso di una libreria condivisa è una buona idea per ottenere correzioni di sicurezza senza dover ricompilare tutte le applicazioni che usano la libreria - ma questo vale solo se esiste effettivamente una libreria condivisa che molte applicazioni usano e questo viene mantenuto attivamente da qualcun altro.

In un mondo ideale, non avresti nemmeno scaricato il codice sorgente per l'implementazione di Curve25519. Dovresti utilizzare il pacchetto fornito dal sistema operativo che contiene la libreria condivisa. Se un bug dovesse essere trovato, verrebbe corretto a monte e il packager pubblicherebbe una nuova versione fissa, che l'applicazione (e altri che usano la libreria) trarrebbero automaticamente beneficio dalla correzione. Avrebbe vantaggi simili per le prestazioni (ad esempio se viene prodotta una nuova implementazione più rapida, ottimizzata per l'hardware corrente).

Tuttavia, un tale pacchetto non esiste per il momento. DJB non sembra intenzionato a mantenere un tale pacchetto, per qualsiasi versione di qualsiasi sistema operativo (in realtà è stato piuttosto veementemente opposto la maggior parte se non tutti i gestori di pacchetti funzionano, ha anche espresso dubbi sulle librerie condivise). Se usi il codice, allora tu lo stai importando nella tua applicazione, e lo sforzo di manutenzione, ovvero tenere traccia delle modifiche e propagare le versioni fisse, ricadrà esattamente sulle tue spalle. Anche se crei una libreria condivisa, sarà comunque la tua libreria condivisa, non condivisa con altre applicazioni. Si potrebbe anche collegare il codice in; non cambierà le cose per sicurezza, e sarà più semplice.

    
risposta data 24.02.2016 - 00:27
fonte
-1

Da una parte è più facile da aggiornare se viene rilevata una vulnerabilità, ma dall'altra parte è più facile aggiornare con una backdoor e ora la backdoor esiste a livello di sistema in qualsiasi binario che si collega dinamicamente ad essa.

    
risposta data 23.02.2016 - 22:12
fonte

Leggi altre domande sui tag