Questa potrebbe essere una domanda stupida, ma ...
Perché il software cruciale per la sicurezza è scritto in linguaggi come C e C ++? Capisco perché, per esempio, un sistema embedded potrebbe aver bisogno di un linguaggio di basso livello per sfruttare al massimo le risorse limitate, ma sembra sciocco scrivere software di sicurezza in linguaggi di basso livello.
Te lo chiedo perché ogni volta che vado su debian.org e guardo le ultime correzioni di sicurezza, la vasta maggioranza di esse riguarda problemi di sicurezza della memoria, che compaiono solo in lingue non sicure come C e C ++. Ad esempio, per quanto riguarda la cattiva reputazione di Java, immagino che il 90% delle patch di sicurezza su OpenSSL sarebbe completamente inutile. Se venisse usato un linguaggio di livello superiore come Scala o Lisp, suppongo che sarebbe ancora più facile ottenere le cose sicure. Incasinare gli array nel peggiore dei casi porterà a un errore di runtime.
Il motivo dell'utilizzo di C / C ++ è evitare gli attacchi ai canali laterali? Potrei immaginare alcune proprietà di una chiave che interferisce con l'esecuzione di un garbage collector conservatore (come Boehm) e che conduce ad attacchi temporali, ma nessun linguaggio di livello superiore usa comunque i garbage collector non sicuri.