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 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, prova Kerberos prima di ricadere 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 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 molto specifici 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 tutti i controlli di controllo degli accessi, ad esempio quando si aprono nuovi file. Il fatto che si tratti di meno privilegi o di 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).