Penso che questo non sia possibile in base alla progettazione. Quando è stato inventato l'USB, è stato creato per rimpiazzare metodi di comunicazione ingombranti come cavi paralleli e seriali, interfacce proprietarie con cavo e spina standardizzati. Dovrebbe inoltre risolvere i problemi di programmazione standardizzando il modello di driver del livello inferiore in modo che i driver possano essere programmati più facilmente.
Infine direi che USB esiste a causa delle sue funzionalità hotplug. Questo di sicuro è una delle caratteristiche più comode dei computer moderni. Ricordo che dolore nel culo sarebbe se avessi dimenticato di collegare la tastiera all'avvio (ad esempio il server): alcuni di essi necessitavano di un completo riavvio per rilevare la tastiera PS / 2.
Nessuno pensava ai problemi di sicurezza in quel momento. Le chiavette USB non esistevano e tutti i dispositivi collegati all'USB erano più o meno stupidi. Quindi USB non usa metodi standardizzati di firmware lampeggiante o rileva comportamenti "illegali".
Un hub USB è un dispositivo davvero stupido: gestisce l'inserimento hot-plug di un nuovo dispositivo nella comunicazione (AFAIK interrompendo brevemente tutti gli altri) e la rimozione. Può vedere quali sono i requisiti di alimentazione di un dispositivo e proibire a un nuovo dispositivo di diventare online se attinge troppa energia. Questo è principalmente tutto, e va bene così: possono essere economici e molto veloci.
Un hub USB non ispezionerà i dati che stanno passando, né il controller. Semplicemente non è progettato per farlo, e questo non è scritto in alcuna specifica. Si potrebbe obiettare ora che limitare l'uso della porta per consentire solo certe classi potrebbe essere compatibile con le specifiche BUT: Anche i dispositivi di classe sono complicati: pensate a un trasmettitore wireless per mouse / tastiera combinato. Apparirà come multi-dispositivo, esponendo sia un mouse che un componente HID. La maggior parte di essi può essere eseguita con driver di base del sistema operativo, ma può anche essere utilizzata con software specifici del fornitore per consentire funzionalità avanzate quali tasti funzione aggiuntivi o alte velocità DPI. Adoro il mio mouse da gioco Roccat per havin 3200 dpi per esempio. Quindi, dopo essere stato registrato come dispositivo di classe, in qualche modo cambia modalità se sul PC è installato il driver corretto.
Tutte le altre cose devono essere gestite dal sistema operativo. Permettere il caricamento di un driver o meno è completamente nelle mani del nucleo del SO. Sul mercato è disponibile un software per controllare l'utilizzo delle porte USB che potrebbero comportarsi nel modo desiderato.
IMHO cerchi di risolvere il problema sbagliato: se sei preoccupato per la sicurezza USB, dovresti semplicemente spegnere tutte le porte USB o trovare / richiedere il software operativo che possa raggiungere i criteri che desideri a livello di sistema operativo. Linux, ad esempio, potrebbe essere limitato a utilizzare solo i driver cvertain USB tramite un kernel personalizzato.