Il Security Support Provider Interface (SSPI) è un componente delle API di Windows che esegue operazioni relative alla sicurezza (come, ad esempio, l'autenticazione).
SSPI offre 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 alle applicazioni.
Providers
[modifica | modifica wikitesto]Windows include i seguenti SSP:
- 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 per poi ripiegare su NTLM. In Windows 7 e versioni successive viene introdotto NEGOExts, che negozia l'uso di SSP personalizzati installati e supportati sia sul client e sia 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
[modifica | modifica wikitesto]SSPI è una variante proprietaria di Generic Security Services Application Program Interface (GSSAPI) con estensioni e tipi di dati caratteristici di Windows. Viene fornita 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 connessione fisica con le implementazioni di Kerberos 5 di altri fornitori.
I token generati e accettati dalle SSPI sono per lo più compatibili con le applicazioni basate su 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 interoperabilità GSSAPI.
Un'altra differenza fondamentale tra la GSSAPI definita da IETF e la SSPI di Microsoft è il concetto di "impersonificazione". In tale 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 più o meno 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, nonché deve eseguire il controllo dell'accesso in modo specifico del client e dell'applicazione. Le implicazioni negative sulla sicurezza del concetto di impersonificazione sono prevenute in Windows Vista limitando l'impersonificazione a determinati account di servizio selezionati.[11] L'impersonificazione può essere implementata in un modello Unix/Linux usando seteuid
o chiamate di sistema correlate. Sebbene ciò implichi che un processo senza privilegi non può elevare i propri privilegi, significa anche che per sfruttare l'impersonificazione il processo deve essere eseguito nel contesto dell'account utente root.
Note
[modifica | modifica wikitesto]- ^ 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).