Jedná se o síťovou autentizační vrstvu, kterou si stále velké množství lidí plete s crypt interface (lokální autentizační metody). V současnosti poskytuje pár desítek metod, ale je zde jeden závažný problém. Díky množství metod a vývoji kryptografie je náročné porovnat míru bezpečnosti jednotlivých metod. Dalším nepříjemným faktem je obtížnost vůbec dohledat porovnání bezpečnosti těchto metod. Tento článek má za účel takové porovnání nabídnout.
Nejčastější otázka, k čemu mi ten SASL vlastně je. Je to jednoduché. Jedná se o jeden ze základních mechanismů poskytujících nástroje k ověřování uživatelů. Původně se používal hlavně pro účely poštovních serverů, tedy zajišťoval autentizaci POP3, IMAP4 a SMTP protokolu. A i nadále se tu používá. Později byl tento protokol implementován pro ověřování do protokolů jako je LDAP (adresářové služby), XMPP (komunikační nástroje), ale je možné ho využít i na dalších místech. Jednou z mnoha méně známých možností je například jeho podpora v někteých implementacích VNC (Virtual Network Computing), což je program pro přístup ke vzdálené ploše.
Co k němu říct dalšího? Dle Wikipedie se jedná o ‘...obecnou metodu pro ověřování v protokolech klient/server. Jejím hlavním účelem je ověřování klientů na serverech. SASL má několik ověřovacích mechanismů pro výměnu ověřovacích informací (obvykle označené jako přihlašovací údaje) a ověřovací systém pro uložení informací o uživatelích. Ověřovací mechanismus SASL řídí výzvy a odpovědi mezi klientem a serverem a to, jak by měly být kódovány při přenosu. Ověřovací systém označuje to, jak server ukládá a ověřuje data.‘ Použité metody jsou standardizované dle IETF (RFC 2222, RFC 4422 a podpůrné RFC 2245, RFC 2595, RFC 2831, RFC 4505, RFC 4616, RFC 5801, RFC 6631, RFC 7677) mají vlastní registry algoritmů IANA a otevřenou implementaci. Implementovány jsou například v rámci Cyrus SASL, GNU SASL, Java SASL a dalších knihovnách.
Důvodem pro vznik byla krajně neuspokojivá situace při ověřování uživatelů poštovních systémů. Přestože v té době existovaly už více rozvinuté mechanismy, zpravidla se pro přístup k poště využívaly algoritmy jako je PAP, CHAP, MSCHAP, případně další mechanismy jako je APOP. Tyto mechanismy jsou součástí úvodního článku.
První verze SASL, ale ještě ne pod tímto označením, vznikla v roce 1993 na Carnegie Mellon University jako projekt Cyrus (Kýrós). Tento projekt byl pojmenován po perském králi Kýrovi Velikém, který byl historicky známý svým systémem královských cest a poštovních kurýrů, což výrazně podpořilo ekonomiku země (Kýrem se patrně později inspirovali i Římané). Systém poštovních kurýrů lze do jisté míry považovat za předchůdce komunikačních systémů. Cílem tohoto projektu bylo vytvořit univerzální autentizační rámec a oddělit autentizační mechanismy od komunikačních protokolů, jako autoři se nejčastěji udávají Rob Siemborski a John Gardiner Myers. Autorem původní specifikace byl právě J. G. Myers, ta byla později schválena IETF jako RFC 2222. Uvedená doporučení byla v souladu s návrhem, drobné rozdíly dané formalizací algoritmů byly v Cyrus SASLv1 dopracovány. Po necelých deseti letech došlo k první významné změně, nový dokument vytvořili Alexey Melnikov a Kurta D. Zeileng (RFC 4422) a vznikl SASLv2.
Mezi první a druhou verzí SASL jsou základní rozdíly, které je možné shrnout několika větami do následujícího odstavce. SASLv1 měl monolitickou strukturu, kterou bylo obtížné rozšiřovat a několik vestavěných mechanismů (Anonymous, LOGIN, PLAIN a dále Digest-MD5, CRAM-MD5). Druhá verze měla architekturu modulární, je zde podpora pro metody GSSAPI, EXTERNAL a SCRAM. Zatímco první verze podporovala hlavně protokoly pro poštovní služby, jako je IMAP, POP3, SMTP a později i LDAP, druhá verze se snaží být univerzálním rozhraním. Jsou zde i další rozdíly, například první verze nepodporovala zajištění integrity, podporovala pouze kryptografické mechanismy poplatné době vzniku a podobně.
V rámci rozboru se používají následující termíny a způsoby hodnocení, které specifikují výhody a nevýhody jednotlivých algoritmů.
- Channel Binding je technologie zajišťující vazbu mezi autentizačním mechanismem a komunikačním protokolem. Cílem je chránit spojení před únosem, nebo alespoň zajistit základní ověření na počátku spojení.
- Realms znamená oblast, v IT světě označuje například DNS doménu nebo nebo doménu služeb, ve které je poskytována určitá služba.
- Kryptoprimitiva poskytují přehled používaných algoritmů. Zmíněny jsou z dnešního pohledu zastaralé mechanismy, které jsou na současné úrovni akceptovatelné a které budou výhledově bezpečné.
- Počet stran specifikuje kolik stran se účastní ověření uživatele. U běžných mechanismů dochází k ověření na cílovém serveru (tedy klient a server), ale existují mechanismy, kde ověření zajišťuje třetí strana (klient, autentizační server a server služby). V takovém případě pak dochází buď k poskytnutí ověřené identifikace uživatele cílovému serveru (zpravidla token), případně token může obsahovat i autorizační informace (kam všude má uživatel přístup).
- PQC/QRC informují, zda je mechanismus odolný kvantovým počítačům (Post Quantum Cryptography nebo Quantum Resistant Cryptography)
- ZKP. Pod tímto pojmem jsou myšleny Zero Knowledge Protokoly. Ve zkratce se jedná o protokol, který v průběhu informace dovolí ověření hesla bez poskytnutí informací, které by mohly vést k jeho odhalení.
- Podpora crypt je víceméně doplňková informace a více na toto téma je v samostatném odstavci.
- Tokenizace úzce souvisí s počtem komunikujících stran, ale není podmínkou.
- Jedinečnost popisuje přenášené autentizační informace. Ta by měla být jedinečná (neopakovatelná), náhodná a nepředvídatelná. Zajistit splnění všech třech parametrů je obtížné.
- Ochrana informací o účtu (Credentials) je důležitou součástí autentizace. Ve valné většině dochází k ochraně hesla, ale objevují se algoritmy schopné chránit i jméno uživatele, případně oblast (realms)
- Ochrana proti Replay je dnes víceméně základní součástí autentizace. Při každém přihlášení musí dojít k použití ověření takovým způsobem, aby nebylo možné uvedenou informaci znovu použít. V jiném případě může útočník informaci zachytit a přihlásit se.
- Ochrana proti Relay je podstatně náročnější disciplínou. Pro zajištění ochrany před předáním informace (příkladem může být server útočníka vydávající se za server poskytovatele) musí být zajištěna kontrola kam se uživatel připojuje, tedy musí dojít k oboustrannému ověření. Tato technologie je bohužel velice málo používána.
- Ochrana proti únosu (Hijack) spočívá v navázání autentizačních informací na komunikační kanál. Cílem je chránit před možností unést spojení na stroj útočníka. Opět, tyto metody nejsou často používány ke škodě vlastníků. Velice úzce souvisí s Channel Binding, bohužel se nejedná o synonyma.
- Ochrana proti padělání (Forge) do jisté míry zahrnuje předchozí termíny. Jedná se o ochranu před útočníkem, který má za cíl padělat přihlášení uživatele.
- Podpora MFA je dnes součástí mantry, která má zajistit vyšší bezpečnost. To je pravdivé v případě použití různých komunikačních kanálů (OOB - Out of band), ale diskutabilní v případě použití jediného.
- Ochrana integrity spočívá v implementaci některé z MAC technologií (Message Authenticity Code), tedy kryptografický kontrolní součet. Mimo termínu MAC se používá termín MIC (Message Integrity Check), ICV (Integrity Code Verification)
- Použitá ochrana kanálu – autentizační kanál používá interní šifrování, volitelné transportní šifrování, používá povinně transportní šifrování, nebo používá šifrování mezi koncovými body (E2EE, zpravidla nad transportním šifrováním jako ochranu před SSL inspekcí)
Na první pohled je mezi SASL a crypt jednoduchý vztah, výstupy některých funkcí mohou vypadat podobně. Proč je ale nelze zaměnit? Mohou mít podobný výstup, tedy identifikátor, počet rund, sůl, výstupní hash … tím ale veškerá podoba končí. Mezi těmito dvěma metodami není žádný vztah, pro některé algoritmy je ale možné na straně serveru použít ověření proti lokální databázi hesel v ve formě zajišťované metodou crypt (více k tomuto tématu v článku "Ukládání hesel pomocí Crypt interface"). Jedná se o metody PLAIN, LOGIN, CRAM-MD5 a za určitých podmínek např. GS2/GSS-API/SPNEGO/Kerberos, případně EXTERNAL nebo OTP. Ostatní algoritmy uvedený postup nepodporují a i u těchto metod je nutné chápat jak přesně pracují a zda je možné tyto mechanismy použít. Případně, zda nebude jejich nasazení implementačně a architektonicky závislé. Z uvedeného důvodu je tak často podstatně bezpečnější nechat mechanismus SASL používat vlastní databázi, která není se systémovou nijak spojena.
Při inicializaci spojení je zvolena konkrétní metoda, na základě této volby probíhá další ověřování uživatele. Volba probíhá zasláním následujících informací:
AUTHENTICATE SASL [Metoda]
Mechanismus | Rok | OID (pokud je) | Použití | Reference |
9798-M-DSA-SHA1 | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
9798-M-ECDSA-SHA1 | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
9798-M-RSA-SHA1-ENC | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
9798-U-DSA-SHA1 | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
9798-U-ECDSA-SHA1 | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
9798-U-RSA-SHA1-ENC | 2008 | Obecné | RFC3163 ISO/IEC 9798-3:2008 |
|
ANONYMOUS | 1999 | Obecné | RFC4505 | |
CRAM-MD5 | 1997 | Omezené | RFC2195 | |
DIGEST-MD5 | 1999 | 1.2.840.113549.2.5 (nepřesné) | Zastaralé | RFC6331 |
EAP-AES128 | 2010 | Obecné | RFC7055 | |
EAP-AES128-PLUS | 2014 | Obecné | RFC7055 | |
ECDH-X25519-CHALLENGE | 2015 | Omezené | https://github.com/atheme/atheme | |
ECDSA-NIST256P-CHALLENGE | 2010 | Omezené | https://github.com/kaniini/ecdsatool | |
EXTERNAL | 2006 | Obecné | RFC4422 | |
GS2-* | 2006 | Obecné | RFC5801 | |
GS2-KRB5 | 2006 | Obecné | RFC5801 | |
GS2-KRB5-PLUS | 2006 | Obecné | RFC5801 | |
GSS-SPNEGO | 2003 | Omezené | MS-SPNG | |
GSSAPI | 1993 | 1.2.840.113554.1.2.2 | Obecné | RFC4752 |
KERBEROS_V4 | 1983 | 1.3.6.1.5.1 | Zastaralé | RFC2222 |
KERBEROS_V5 | 1993 | 1.2.840.113554.1.2.2 (Kerberos) 1.2.840.48018.1.2.2 (Microsoft) 1.3.6.1.5.2.5 (nepřesné) | Obecné | Draft-josefsson-sasl-kerberos5-01 |
LOGIN | 1998 | Zastaralé | draft-murchison-sasl-login | |
NMAS_AUTHEN | 2000 | Omezené | NMAS | |
NMAS_LOGIN | 2000 | Omezené | NMAS | |
NMAS-SAMBA-AUTH | 2000 | Omezené | NMAS | |
NTLM | 1996 | Omezené | MS-NLMP | |
OAUTH10A | 2010 | Obecné | RFC7628 | |
OAUTHBEARER | 2012 | Obecné | RFC7628 | |
OPENID20 | 2007 | 1.3.6.1.5.5.16 | Obecné | RFC6616 |
OTP | 1998 | Obecné | RFC2444 | |
PASSDSS | 1997 | Zastaralé | RFC2222 | |
PLAIN | 1997 | Obecné | RFC4616 | |
Compuserve RPA | 1986? | Zastaralé | N/A | |
SAML20 | 2005 | 1.3.6.1.5.5.17 | Obecné | RFC6595 |
SCRAM-SHA-1 | 2010 | 1.3.6.1.5.5.14 | Obecné | RFC5802 RFC7677 |
SCRAM-SHA-1-PLUS | 2010 | 1.3.6.1.5.5.14 | Obecné | RFC5802 RFC7677 |
SCRAM-SHA-256 | 2018 | 1.3.6.1.5.5.18 | Obecné | RFC7677 |
SCRAM-SHA-256-PLUS | 2018 | 1.3.6.1.5.5.18 | Obecné | RFC7677 |
SECURID | 1987 | Obecné | RFC2808 | |
SKEY | 1984 | Zastaralé | RFC2444 | |
SPNEGO | 2003 | 1.3.6.1.5.5.2 | Nepoužívat | RFC5801 |
SPNEGO-PLUS | 2003 | Nepoužívat | RFC5801 | |
SRP | 2000 | Nepoužívat | RFC2945 | |
SXOVER-PLUS | 2006 | Obecné | Draft-vanrein-diameter-sasl-07 | |
XOAUTH | 2009 | Zastaralé | N/A | |
XOAUTH2 | 2010 | Zastaralé | N/A |
Uvedené metody mají vcelku komplikované vazby, dané jejich návrhem a obecnou funkcí.
Kerberos. Patrně nejjednodušší metodou je Kerberos, který možné brát jako samostatný autentizační mechanismus.
GSSAPI (Generic Security Services Application Programming Interface) není vlastně nic jiného, než rozhraní pro autentizaci, kde je nejčastějším protokolem právě Kerberos. Důvod byl vcelku prozaický, dodnes neexistuje standardizované rozhraní pro Kerberos a uvedené rozhraní zajišťuje GSSAPI. Časem uvedené API začalo podporovat i metodu SPNEGO. Využití v SASL je zajímavé tím, že SASL je API, které zde využívá další API.
SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) je mechanismus z prostředí operačních systémů Microsoft, který využíval NTLM (přeaněji NTLMv1 a NTLMv2) a Kerberos pro autentizaci proti Active Directory. V prostředí Microsoft je SPNEGO součástí SSPI (API pro SPNEGO a další mechanismy), SPNEGO může využívat GSSAPI jako jeden z mechanismů. Zároveň GSSAPI může SPNEGO používat jako jeden ze svých mechanismů. Je to trochu zamotané, ale tak to bylo navrženo.
GS2 (Generic Security Service Mechanism for SASL) využívá GSSAPI jako rozhraní pro autentizaci, Kerberos je zde jedním z možných autentizačních mechanismů.
Mimo níže uvedené metody se používaly ještě další způsoby ověřování. Zpravidla záleželo na způsobu komunikace, tedy zda byly využívány sériové linky (UUCP, SLIP, PPP …) nebo čisté síťové spojení přes TCP/IP. Uvedené metody jsou zastaralé a jejich využitelnost je obtížná, jsou uvedeny pouze z dokumentačních důvodů.
PAP (Password Authentication Protocol)
Jedná se prakticky o metodu BASIC (viz. dále), kdy klient odesílá na server žádost o ověření nešifrovaným způsobem.
CHAP (Challenge Autentication Protocol)
Jedná se o mírné vylepšení metody, kdy klient odesílá požadavek o přihlášení uživatele, server mu na odpověď poskytne výzvu a klient odpovídá hashí na ID zprávy, heslem a výzvou.
Server → Client: CS
Client → Server: MD5(ID||Password||CS)
APOP (Auhtentization before POP)
Jedná se o protokol specifický pouze pro POP3, tedy protokol určený pro stahování pošty.
Server → Client: CS
Client → Server: MD5(Password||CS)
Vlastní SASL metody, které jsou součástí přehledu obsahují vždy část věnující se popisu algoritmu, kryptografickému zápisu a zhodnocení. V současnosti má většina uvedených algoritmů spíše historický význam, proto je nutné zvážit význam jejich nasazení v produkčním prostředí.
9798-U-algoritmus je algoritmus pro jednosměrné (Unilateral) ověření pomocí certifikátů, kdy se ověřuje klient proti serveru, ale nedochází k ověření serveru. Autentizační algoritmus dovoluje využití algoritmů DSA, ECDSA a RSA.
Server → Client: Challenge SA
Client → Server: TokenC(CA||Client Certificate||DSA-
SA, CA – Náhodná výzva serveru a klienta, musí se jednat o jedinečnou hodnotu.
Channel Binding: Ne
Realms: Ano
Kryptoprimitiva: Zastaralá (SHA1, DSA), výběhová (RSA)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Ne
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ano
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
9798-M-algoritmus je algoritmus pro obousměrné (Mutual) ověření pomocí certifikátů, kdy se ověřuje jak klient proti serveru tak server vůči klientu. Autentizační algoritmus dovoluje využití algoritmů DSA, ECDSA a RSA.
Server → Client: Challenge SA
Client → Server: TokenC(CA||Client Certificate||DSA-
Server → Client: TokenS(SB||Server Certificate||DSA-
SA, SB, CA - Náhodná výzva serveru a klienta, musí se jednat o jedinečnou hodnotu.
IS, IC - Identifikátor serveru a identifikátor klienta
Channel Binding: Ne
Realms: Ano
Kryptoprimitiva: Zastaralá (SHA1, DSA), výběhová (RSA)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Ne
Ochrana proti Replay: Ano
Ochrana proti Relay: Ano
Ochrana proti Hijack: Ano
Ochrana proti Forge: Ano
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
Anonymní spojení bez hesla, podmínkou je volba jména anonymous.
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Ne
Účastníků autentizace: ?
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ne
Ochrana credentials: Ne
Ochrana proti Replay: Ne
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Ne
Jedná se o textovou informaci o uživatelském jménu a heslu. Uvedené informace jsou zasílány v otevřeném textu (PLAIN), bez jakékoliv ochrany. Použití transportního šifrování je sice nezbytnou, ale nikoliv dostatečnou metodou ochrany, protože v případě SSL inspekce dochází k získání těchto autentizačních informací.
Client → Server: (username||0x00h||password||0x00h)
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Ne
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ano
Tokenizace: Ne
Jedinečnost: Ne
Ochrana credentials: Ne
Ochrana proti Replay: Ne
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Ne, nezbytné
Jedná se opět o textovou informaci o uživatelském jménu a heslu. V tomto případě se jedná o dvě výměny mezi serverem a klientem, klient odesílá kódovaná data. Uvedené informace pouze zakódované pomocí BASE64 (kódování 4B do 6B tak, aby byly výsledkem vždy tisknutelné znaky z rozsahu 7-bit ASCII), ale jinak bez jakékoliv ochrany. Použití transportního šifrování je sice nezbytnou, ale opět nedostatečnou metodou ochrany, protože v případě SSL inspekce je také možné získat autentizační informace.
Podobnou metodou přihlašování je metoda BASIC u webových serverů, kde je ale řetězec "username:password" zakódován pomocí BASE64 a zaslán jako odpověď na autentizační požadavek serveru.
Server → Client: Username:
Client → Server: Base64(username)
Server → Client: Password:
Client → Server: Base64(password)
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Ne
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ano
Tokenizace: Ne
Jedinečnost: Ne
Ochrana credentials: Ne
Ochrana proti Replay: Ne
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Ne, nezbytné
Jednoduchá ochrana přihlašovacích informací na základě náhodné výzvy a hash algoritmu MD5. Klient a server sdílí heslo nebo hash hesla, v tomto případě je uvažováno heslo.
Server → Client: CS
Client → Server: HMAC-MD5(Password, CS)
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Zastaralá (MD5)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Může být využito
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Heslo
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
Jednoduchá ochrana přihlašovacích informací na základě náhodné výzvy a hash algoritmu MD5. Klient a server sdílí heslo nebo hash hesla, v tomto případě je uvažováno heslo.
Server → Client: CS
Client → Server: MD5(MD5(username||realm||password)||CS||CC)||CS||Auth)||CC
Kde pro přihlašování se užívá : Auth=method||URI
Pro integritu je užití podobné: Auth=MD5(message)
Channel Binding: Ne
Realms: Ano
Kryptoprimitiva: Zastaralá (MD5)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Heslo
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
Password-based Secure Device Authentication je mechanismus pro ověření uživatele vytvořený za pomoci DES algoritmu. Existuje jak ve verzi PASSDSS-DES-1 tak ve verzi PASSDSS-3DES-1 a sloužil pro ověření pomocí SSH klíčů založených na algoritmu DSA. Na začátku došlo k výměně informací, které byly podepsány DSA klíči pro zajištění důvěryhodnosti. Přenášená informace byla využita pro odvození kílčového materiálu, který byl šifrován uživatelským heslem. Při tvorbě autentizační informace došlo u zprávy k tvorbě neúplného kontrolního součtu otevřeného textu, šifrován je celý výsledek včetně MAC. Struktura algoritmu je z dnešního pohledu komplikovaná.
Client: SharedSecret=DHPublicKeyClient=gPrivKeyClient
Server: SharedSecret=DHPublicKeyServer=gPrivKeyClient
Client → Server: Request
Server → Client: DSA Public KeyServer||DSASignature(KeyServer,CServer)
Client → Server: DSA Public KeyClient||DSASignature(KeyClient,CClient)
Client:
- K=Public KeyServerPrivKeyClient
- cs-encryption-iv = SHA1( K || "A" || H )
- sc-encryption-iv = SHA1( K || "B" || H )
- cs-encryption-key-1 = SHA1( K || "C" || H )
- cs-encryption-key-2 = SHA1( K || cs-encryption-key-1 )
- cs-encryption-key = cs-encryption-key-1 || cs-encryption-key-2
- sc-encryption-key-1 = SHA1( K || "D" || H )
- sc-encryption-key-2 = SHA1( K || sc-encryption-key-1 )
- sc-encryption-key = sc-encryption-key-1 || sc-encryption-key-2
- cs-integrity-key = SHA1( K || "E" || H )
- sc-integrity-key = SHA1( K || "F" || H )
- data=AuthID||DSA Public KeyClient||DSA Public KeyServer||mask||buffer)
- MAC=HMAC-SHA-1(cs-integrity-key, data)
Client → Server: Enc-3DES-CBC(cs-encryption-key, mask||buffer||passphrase, IV=cs-encryption-iv)||MAC
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Zastaralá (DES, 3DES, SHA-1, DSA, DH)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Heslo
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
Compuserve Remote Passphrase Authentication je proprietární mechanismus z poloviny 80. let. Původně byl používán pro ověření uživatelů do sítě CompuServe, díky tomuto mechanismu a širokému rozšíření byl později zahrnut do SASL knihovny. V současnosti je již na ústupu, jeho bezpečnostní vlastnosti jsou ze současného pohledu nedostatečné.
Client → Server: Request||Username
Server → Client: List of identities
Client → Server: ID||Username||Service
Server → Client: CServer||Timestamp
Client → Server: CClient
Client → Server: ResponseClient=MD5(Password 128b||Padding 48B||Username||Service||ID||CClient||CServer||Timestamp||Password 128b)
Server → Client: ResponseServer=MD5(Service Password 128b||Padding 48B||Username||Service||ID||CClient||CServer||Timestamp||ResponseServer||Service Password 128b)
Channel Binding: Ne
Realms: Ano
Kryptoprimitiva: Zastaralá (MD5)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ne
Podpora crypt interface: Ne
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Heslo
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ne
Ochrana proti Forge: Ne
Podpora MFA: Ne
Ochrana integrity: Ne
Typ šifrování: Interní
Secure Remote Password patří starší, ale velice kvalitní autentizační mechanismy v rámci návrhu původního SASL. Využívá modulární aritmetiku pro šifrování jednorázového výstupu hesla. Tento mechanismus může být stále na některých platformám dostupný jako SRP nebo PAKE a přes jeho stáří vyniká kvalitou. Z dnešního pohledu mu je možné vytknout některé detaily, v současnosti bych doporučil jeho nahrazení algoritmem OPAQUE, SESPAKE (RFC 8133), SPAKE2+ (RFC 9383). Bohužel uvedené algoritmy nejsou v rámci SASL dostupné.
Client:
- Random R
- A=gR mod p
Client → Server: Username||A
Server:
- Random R
- Salt S ze souboru s uloženými hesly
- Validátor V je výsledek jednosměrného uložení hesla
- B=(V+gQ) mod p
Server → Client: B||S
Client:
- Password
- H=SHA-1(S||SHA-1(Username|":"|Password))
- T=(B-gH)(R+Username*H) mod p
- W=SHA-1_Interleave(T)
- M=SHA-1(SHA-1(p) xor SHA-1(g)||SHA-1(Username)||S||A||B||W)
Client → Server: M||K
Server: Z=H(A||M||K)
Channel Binding: Ne
Realms: Ne
Kryptoprimitiva: Zastaralá (SHA-1)
Účastníků autentizace: 2
PQC/QRC: Ne
ZKP: Ano
Podpora crypt interface: Možná
Tokenizace: Ne
Jedinečnost: Ano
Ochrana credentials: Heslo
Ochrana proti Replay: Ano
Ochrana proti Relay: Ne
Ochrana proti Hijack: Ano
Ochrana proti Forge: Ano
Podpora MFA: Ne
Ochrana integrity: Ano
Typ šifrování: Interní
Tento díl se věnoval hlavně historii a základním mechanismům, které jsou spojeny s historií autentizačních mechanismů. Do této historie byly zahrnuty mechanismy využívající asymetrické kryptografie z prvních míst seznamu. V dalších dílech budou rozebrány ostatní mechanismy využívající architekturu klient-server. Ostatní mechanismy, které využívají více stran budou rozebrány v dalších dílech. Pokračování je v článku SASL díl druhý.
1. Úvodní ustanovení
1.1. Tyto všeobecné obchodní podmínky jsou, není-li ve smlouvě písemně dohodnuto jinak, nedílnou součástí všech smluv týkajících školení, pořádaných nebo poskytovaných školitelem, Jan Dušátko, IČ 434 797 66, DIČ 7208253041, se sídlem Pod Harfou 938/58, Praha 9, zapsané u Úřadu městské části Praha 9 (dále jen „školitel“).2. Vznik smlouvy přihlášením ke kurzu
2.1. Přihláškou se rozumí jednostranný úkon objednatele adresovaný školiteli prostřednictvím datové schránky s identifikací euxesuf, e-mailu na adresu register@cryptosession.cz nebo register@cryptosession.info, internetových stránek cryptosession.cz, cryptosession.info nebo kontaktním telefonem +420 602 427 840.3. Zánik smlouvy zrušením přihlášky
3.1. Přihláška může být objednatelem zrušena pomocí e-mailu, nebo pomocí datové schránky.4. Cena a platební podmínky
4.1. Odesláním přihlášky objednatel akceptuje smluvní cenu (dále jen účastnický poplatek) uvedenou u daného kurzu.5. Podmínky školení
5.1. Školitel je povinnen informovat objednatele 14 dní dopředu o místě a času školení, včetně termínu zahájení a ukončení denního programu.6. Reklamace
6.1. Pokud je účastník hrubě nespokojen s průběhem kurzu, je školitel o této informaci vyrozuměn.7. Autorská práva k poskytnutým materiálům
7.1. Školicí materiály poskytnuté školitelem v rámci konání školení splňují znaky autorského díla dle zákona č. 121/2000 Sb.8. Zodpovědnost
8.1. Školitel nepřebírá odpovědnost za nedostatky ve službách kterékoliv třetí strany, kterou využívá při školeních.9. Platnost podmínek
9.1 Tyto všeobecné obchodní podmínky jsou platné a účinné od 1. října 2024.Informace o sběru a zpravování osobních údajů
Zpracovatel Jan Dušátko (dále jen „Správce“), dle nařízení Evropského parlamentu a Rady (EU) č. 2016/679 o ochraně fyzických osob v souvislosti se zpracováním osobních údajů a o volném pohybu těchto údajů a o zrušení směrnice 95/46/ES (obecné nařízení o ochraně osobních údajů, dále jen „Nařízení“) zpracovává osobní údaje. Dále jsou rozepsané jednotlivé osobní údaje, které jsou součástí zpracování při konkrétních aktivitách u této webové prezentace a v rámci obchodního styku.Informace o záznamech přístupu na webovou prezentaci
Tento web nesbírá žádné cookies. Stránka nepoužívá ani žádné analytické scripty třetích stran (sociální sítě, cloud provideři). Z těchto důvodů je také nabízena volba pro zobrazení mapy formou odkazu, kde primárním zdrojem je OpenStreet a alternativy pak často používané Mapy společnosti Seznam, a.s., případně Google Maps společnosti Google LLC Inc. Využití jakéhokoliv z těchto zdrojů je zcela na libovůli uživatelů těchto stránek. Správce nenese odpovědnost za sběr dat realizovaný těmito společnostmi, neposkytuje jim data o uživatelích a na sběru dat nespolupracuje.Informace o kontaktování provozovatele stránek
Formulář pro kontaktování provozovatele stránek (správce) obsahuje následující osobní údaje: jméno, příjmení, e-mail. Tyto údaje jsou určeny jen a pouze pro tuto komunikaci, odpovídající oslovení uživatele a jsou udržovány po dobu nezbytnou k naplnění účelu, maximálně pak po dobu jednoho roku, pokud si uživatel neurčí jinak.Informace o objednávkovém formuláři
Pro případ zájmu o objednávku formulář obsahuje více údajů, tj. jméno, příjmení, e-mail a kontaktní údaje na organizaci. Tyto údaje jsou určeny jen a pouze pro tuto komunikaci, odpovídající oslovení uživatele a jsou udržovány po dobu jednoho roku, pokud si uživatel neurčí jinak. V případě, kdy na základě této objednávky dojde k uzavření obchodního vztahu, budou nadále správcem udržovány pouze informace vyžadované českými zákony na základě obchodních vztahů (název a adresa společnosti, číslo bankovního účtu, typ kurzu a jeho cena).Informace o dokumentu o absolovování kurzu
V rámci kurzu je vydán zpracovatelem dokument o absolovování kurzu. Tento dokument obsahuje následující údaje: jméno a příjmení studenta, název a datum absolovování kurzu a jméno zaměstnavatele. Uvedené informace se následně používají pro tvorbu lineárního stromu hashí (nemodifikovatelný záznam). Tato databáze obsahuje pouze informace o poskytnutých jménech a názvech společností, které mohou a a nemusí odpovídat realitě a je udržován zpracovatelem pro případné opětovné vystavení nebo ověření vydání dokumentu.Práva subjektu osobních údajů
Zákazník nebo návštěvník tohoto webu má možnost požádat o informace o zpracování osobních údajů, právo požadovat přístup k osobním údajům, případně právo požádat o opravu nebo výmaz veškerých dat, které by o něm byly vedeny. V případě výmazu tento požadavek není možné splnit pouze pokud se nejedná o data nezbytně nutná v rámci obchodního styku. Zákazník nebo návštěvník webu má dále právo na vysvětlení týkající se zpracování jeho osobních údajů, pokud tento zjistí nebo se domnívá, že zpracování je prováděno v rozporu s ochranou jeho soukromého a osobního života nebo v rozporu s platnými právními předpisy a právo požadovat odstranění takto vzniklého stavu a zajištění nápravy.