Security Support Provider Interface
Il Security Support Provider Interface (SSPI) è un componente dell'API di Windows che esegue operazioni relative alla sicurezza (come, ad esempio, l'autenticazione).
SSPI funziona come un'interfaccia comune a diversi Security Support Provider (SSP)[1]: un Security Support Provider è una libreria a collegamento dinamico (DLL) che rende uno o più pacchetti di sicurezza disponibili per le app.
Providers
I seguenti SSP sono inclusi in Windows:
- NTLMSSP (msv1_0.dll) – Introdotto in Windows NT 3.51. Fornisce l'autenticazione di verifica/risposta NTLM per i domini Windows precedenti a Windows 2000 e per i sistemi che non fanno parte di un dominio.[2]
- Kerberos (kerberos.dll) – Introdotto in Windows 2000 e aggiornato in Windows Vista per supportare la crittografia AES.[3] Esegue l'autenticazione per i domini Windows in Windows 2000 e versioni successive.[4]
- NegotiateSSP (secur32.dll) – Introdotto in Windows 2000. Fornisce funzionalità di accesso singolo, a volte denominata autenticazione integrata di Windows (soprattutto nel contesto di IIS).[5] Prima di Windows 7, è stato provato Kerberos prima di ripiegare su NTLM. In Windows 7 e versioni successive viene introdotto NEGOExts, che negozia l'uso di SSP personalizzati installati che sono supportati sul client e sul server per l'autenticazione.
- Secure Channel (schannel.dll) – Introdotto in Windows 2000 e aggiornato in Windows Vista per supportare una crittografia AES più avanzata e ECC[6] Questo provider utilizza i record SSL/TLS per crittografare i payload di dati.
- TLS/SSL – SSP di crittografia a chiave pubblica che fornisce crittografia e comunicazione sicura per l'autenticazione di client e server su Internet.[7] Aggiornato in Windows 7 per supportare TLS 1.2.
- Digest SSP (wdigest.dll) – Introdotto in Windows XP. Fornisce l'autenticazione HTTP e SASL basata su challenge/response tra sistemi Windows e non Windows in cui Kerberos non è disponibile.[8]
- CredSSP (credssp.dll) – Introdotto in Windows Vista e disponibile su Windows XP SP3. Fornisce Single Sign-On e autenticazione a livello di rete per servizi di desktop remoto.[9]
- Autenticazione con password distribuita (DPA, msapsspc.dll) – Introdotta in Windows 2000. Fornisce l'autenticazione Internet tramite certificati digitali.[10]
- Crittografia a chiave pubblica da utente a utente (PKU2U, pku2u.dll) – Introdotto in Windows 7. Fornisce l'autenticazione peer-to-peer utilizzando certificati digitali tra sistemi che non fanno parte di un dominio.
Confronto
SSPI è una variante proprietaria di Generic Security Services Application Program Interface (GSSAPI) con estensioni e tipi di dati caratteristici di Windows. Viene fornito con Windows NT 3.51 e Windows 95 con NTLMSSP. Per Windows 2000 è stata aggiunta un'implementazione di Kerberos 5, utilizzando formati di token conformi allo standard di protocollo ufficiale RFC 1964 (il meccanismo Kerberos 5 GSSAPI) e fornendo interoperabilità a livello di cavo con le implementazioni di Kerberos 5 di altri fornitori.
I token generati e accettati da SSPI sono per lo più compatibili con GSS-API, quindi un client SSPI su Windows potrebbe essere in grado di autenticarsi con un server GSS-API su Unix a seconda delle circostanze specifiche.
Un difetto significativo di SSPI è la sua mancanza di channel binding, che rende impossibile una certa interoperabilità GSSAPI.
Un'altra differenza fondamentale tra la GSSAPI definita da IETF e la SSPI di Microsoft è il concetto di "impersonificazione". In questo modello, un server può funzionare con tutti i privilegi del client autenticato, in modo che il sistema operativo esegua tutte le verifiche di controllo degli accessi, ad esempio quando si aprono nuovi file. Il fatto che si tratti di meno o più privilegi rispetto a quello dell'account di servizio originale dipende interamente dal client. Nel modello tradizionale (GSSAPI), quando un server viene eseguito con un account di servizio, non può elevare i propri privilegi e deve eseguire il controllo dell'accesso in modo specifico del client e dell'applicazione. Le ovvie implicazioni negative sulla sicurezza del concetto di rappresentazione vengono impedite in Windows Vista limitando la rappresentazione agli account di servizio selezionati.[11] La rappresentazione può essere implementata in un modello Unix/Linux usando seteuid
o chiamate di sistema correlate. Sebbene ciò significhi che un processo senza privilegi non può elevare i propri privilegi, significa anche che per sfruttare la rappresentazione il processo deve essere eseguito nel contesto dell'account utente root.
Note
- ^ SSP Packages Provided by Microsoft
- ^ User Authentication - Security (Windows 2000 Resource Kit Documentation) : MSDN
- ^ Kerberos Enhancements in Windows Vista: MSDN
- ^ Windows 2000 Kerberos Authentication
- ^ Windows Server 2008 R2 and Windows Server 2008 Documentations, https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/cc755284(v=ws.10) . URL consultato il 5 agosto 2020.
- ^ TLS/SSL Cryptographic Enhancements in Windows Vista
- ^ Secure Channel: SSP Packages Provided by Microsoft
- ^ Microsoft Digest SSP: SSP Packages provided by Microsoft
- ^ Credential Security Service Provider and SSO for Terminal Services Logon
- ^ DCOM Technical Overview: Security on the Internet
- ^ Windows Service Hardening: AskPerf blog, su blogs.technet.com. URL consultato il 4 marzo 2022 (archiviato dall'url originale il 2 aprile 2010).