Analýza SASL, první díl

Rozbor SASL, první díl

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.

Co je to SASL (Simple Authentication and Security Layer)

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.

Historie SASL

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.

Rozdíly mezi verzemi

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ě.

Přehled termínologie

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í)

Vztah SASL a crypt interface

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řehled SASL metod, které jsou součástí rozboru

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]


MechanismusRokOID (pokud je)PoužitíReference
9798-M-DSA-SHA12008ObecnéRFC3163
ISO/IEC 9798-3:2008
9798-M-ECDSA-SHA12008ObecnéRFC3163
ISO/IEC 9798-3:2008
9798-M-RSA-SHA1-ENC2008ObecnéRFC3163
ISO/IEC 9798-3:2008
9798-U-DSA-SHA12008ObecnéRFC3163
ISO/IEC 9798-3:2008
9798-U-ECDSA-SHA12008ObecnéRFC3163
ISO/IEC 9798-3:2008
9798-U-RSA-SHA1-ENC2008ObecnéRFC3163
ISO/IEC 9798-3:2008
ANONYMOUS1999ObecnéRFC4505
CRAM-MD51997OmezenéRFC2195
DIGEST-MD519991.2.840.113549.2.5 (nepřesné)ZastaraléRFC6331
EAP-AES1282010ObecnéRFC7055
EAP-AES128-PLUS2014ObecnéRFC7055
ECDH-X25519-CHALLENGE2015Omezenéhttps://github.com/atheme/atheme
ECDSA-NIST256P-CHALLENGE2010Omezenéhttps://github.com/kaniini/ecdsatool
EXTERNAL2006ObecnéRFC4422
GS2-*2006ObecnéRFC5801
GS2-KRB52006ObecnéRFC5801
GS2-KRB5-PLUS2006ObecnéRFC5801
GSS-SPNEGO2003OmezenéMS-SPNG
GSSAPI19931.2.840.113554.1.2.2ObecnéRFC4752
KERBEROS_V419831.3.6.1.5.1ZastaraléRFC2222
KERBEROS_V519931.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
LOGIN1998Zastaralédraft-murchison-sasl-login
NMAS_AUTHEN2000OmezenéNMAS
NMAS_LOGIN2000OmezenéNMAS
NMAS-SAMBA-AUTH2000OmezenéNMAS
NTLM1996OmezenéMS-NLMP
OAUTH10A2010ObecnéRFC7628
OAUTHBEARER2012ObecnéRFC7628
OPENID2020071.3.6.1.5.5.16ObecnéRFC6616
OTP1998ObecnéRFC2444
PASSDSS1997ZastaraléRFC2222
PLAIN1997ObecnéRFC4616
Compuserve RPA1986?ZastaraléN/A
SAML2020051.3.6.1.5.5.17ObecnéRFC6595
SCRAM-SHA-120101.3.6.1.5.5.14ObecnéRFC5802 RFC7677
SCRAM-SHA-1-PLUS20101.3.6.1.5.5.14ObecnéRFC5802 RFC7677
SCRAM-SHA-25620181.3.6.1.5.5.18ObecnéRFC7677
SCRAM-SHA-256-PLUS20181.3.6.1.5.5.18ObecnéRFC7677
SECURID1987ObecnéRFC2808
SKEY1984ZastaraléRFC2444
SPNEGO20031.3.6.1.5.5.2NepoužívatRFC5801
SPNEGO-PLUS2003NepoužívatRFC5801
SRP2000NepoužívatRFC2945
SXOVER-PLUS2006ObecnéDraft-vanrein-diameter-sasl-07
XOAUTH2009ZastaraléN/A
XOAUTH22010ZastaraléN/A

Vysvětlení vztahů mezi GS2, GSSAPI, SPNEGO a Kerberos

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ů.

Nekompletní přehled metod (předchůdci SASL)

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)

Rozbor metod

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-DSA-SHA1, 9798-U-ECDSA-SHA1, 9798-U-RSA-SHA1-ENC

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))

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-DSA-SHA1, 9798-M-ECDSA-SHA1, 9798-M-RSA-SHA1-ENC

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-(SA||CA)||Optional IC)
Server → Client: TokenS(SB||Server Certificate||DSA-(SA||CA||SB)||Optional IS)

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í


Anonymous

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


PLAIN

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é


LOGIN

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é


CRAM-MD5

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í


DIGEST-MD5

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í


PASSDSS

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 RPA (non-standard)

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í


SRP

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í

Přehled

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ý.

Reference:

  1. Cyrus SASL
    Zdroj: https://www.cyrusimap.org
  2. GNU SASL
    Zdroj: https://www.gnu.org
  3. Dovecot SASL
    Zdroj: https://wiki.dovecot.org
  4. Java SASL
    Zdroj: https://www.oracle.com
  5. ISO/IEC 9798-3 Authentication SASL Mechanism
    Zdroj: https://www.ietf.org/
  6. Anonymous Simple Authentication and Security Layer (SASL) Mechanism
    Zdroj: https://www.ietf.org/
  7. RFC Draft The LOGIN SASL Mechanism
    Zdroj: https://www.ietf.org/
  8. IMAP/POP AUTHorize Extension for Simple Challenge/Response
    Zdroj: https://www.ietf.org/
  9. Moving DIGEST-MD5 to Historic
    Zdroj: https://www.ietf.org/
  10. Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) Extension
    Zdroj: https://www.microsoft.com/
  11. NT LAN Manager (NTLM) Authentication Protocol
    Zdroj: https://www.microsoft.com/
  12. Novell Modular Authentication Service (Microfocus, originally by Novell)
    Zdroj: https://www.microfocus.com/
  13. RFC draft Realm Crossover for SASL and GSS-API via Diameter
    Zdroj: https://www.ietf.org/
  14. The Secure Remote Password Authentication and Key Exchange Mechanism
    Zdroj: https://www.ietf.org/
  15. The OPAQUE Augmented PAKE Protocol
    Zdroj: https://www.iacr.org/
  16. DSS Secured Password Authentication
    Zdroj: https://www.ietf.org/
  17. Compuserve Remote Password Authentication
    Zdroj: https://github.com/
  18. RFC draft A Kerberos 5 SASL Mechanism
    Zdroj: https://www.ietf.org/
  19. Towards pluggable GSS-API modules
    Zdroj: https://blog.josefsson.org

Autor článku:

Jan Dušátko
Jan Dušátko

Jan Dušátko se počítačům a počítačové bezpečnosti věnuje již skoro čtvrt století. V oblasti kryptografie spolupracoval s předními odborníky např. s Vlastimilem Klímou, či Tomášem Rosou. V tuto chvíli pracuje jako bezpečnostní konzultant, jeho hlavní náplní jsou témata související s kryptografií, bezpečností, e-mailovou komunikací a linuxovými systémy.

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“).
1.2. Smluvními stranami ve všeobecných obchodních podmínkách jsou míněni školitel a objednatel, kdy objednatel může být zároveň zprostředkovatelem smluvního vztahu.
1.3. Záležitosti, které nejsou upravené těmito obchodními podmínkami, se řeší podle Občanského zákoníků, tj. zákon č. 89/2012 Sb.

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.
2.2. Odesláním přihlášky objednatel souhlasí s těmito všeobecnými podmínkami a prohlašuje, že se s nimi seznámil.
2.3. Přihláška se považuje za přijatou momentem potvrzení (stadnardně do 2 pracovních dní) školitelem nebo zprostředkovatelem. Toto potvrzení je zasláno do datové schránky nebo na kontaktní e-mail.
2.4. Standardní doba pro přihlášení je nejpozději 14 pracovních dní před konáním vzdělávací akce, pokud není uvedeno jinak. V případě fyzické nepodnikající osoby musí být objednávka alespoň 28 pracovních dní před konáním vzdělávací akce.
2.5. Na jednu přihláškou lze přihlásit i více než jednoho účastníka.
2.6. Pokud je více než 10 účastníků od jednoho objednatele, je možné se domluvit na školení v místě sídla zprostředkovatele nebo objednatele.
2.7. Přihlášky jsou přijímány a zpracovávány v pořadí, v jakém došly poskytovateli. Poskytovatel neprodleně informuje objednatele o všech skutečnostech. Těmi se míní naplnění kapacity, příliš nízký počet účastníků, nebo jiný závažný důvod, jako je nemoc lektora nebo zásah vyšší moci. Objednateli bude v tomto případě nabídnut nový termín, případně účast na jiné vzdělávací akci. V případě, že objednatel nebude s přesunutím či účastí na jiné nabídnuté vzdělávací akci souhlasit, poskytovatel mu vrátí účastnický poplatek. Nedostatečný účastníků je oznámen objednateli alespoň 14 dní před začátkem plánovaného termínu.
2.8. Smlouva mezi poskytovatelem a objednatelem vzniká odesláním potvrzení poskytovatelem objednateli.
2.9. Smlouvu lze změnit nebo zrušit pouze za splnění zákonných předpokladů a pouze písemně.

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.
3.2. Zákazník má právo stornovat svoji přihlášku na kurz 14 dní před konáním kurzu bez jakýchkoliv poplatků. Pokud se jedná o kratší dobu, dochází k následné změně. V intervalu 7-13 dní je účtován administrativní poplatek 10%, storno účasti v kratším intervalu než 7 dní pak poplatek 25%. V případě storna přihlášky nebo objednávky ze strany zákazníka je nabízena možnost účasti zákazníka v náhradním termínu bez dalšího poplatku. Právo na zrušení přihlášky zaniká realizací objednaného školení.
3.3. Při zrušení přihlášky školitelem náleží objednateli plná náhrada za neuskutečněnou akci.
3.4. Objednatel má právo žádat náhradní termín nebo náhradní školení. V takovém případě bude objednatel informován o všech otevřených kurzech. Náhradní termín si nelze vymáhat ani vynucovat, závisí na aktuální dostupnosti kurzu. Pokud má náhradní školení nižší cenu, objednatel doplatí rozdíl. Pokud má náhradní školení nižší cenu, školitel vrátí rozdíl cen školení objednateli.

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.
4.2. V případě více účastníků přihlášených jednou přihláškou je možná sleva.
4.3. Účastnický poplatek musí být uhrazen na bankovní účet společnosti vedený u Komerční banky č. 78-7768770207/0100. Při platbě je nutné uvést variabilní symbol, který je uveden na faktuře, odeslané objednateli školitelem.
4.4. Účastnický poplatek zahrnuje náklady poskytovatele včetně školicích materiálů. Poskytovatel je plátce DPH.
4.5. Účastnický poplatek je objednatel povinen uhradit do 14 pracovních dní od přijetí faktury, pokud nebylo samostatnou smlouvou uvedeno jinak.
4.6. Pokud se přihlášená osoba neúčastní školení a nedošlo k jiné domluvě, je její neúčast považována za storno příhlášku v intervalu kratším než 7 dní, tj. školiteli náleží odměna ve výši 25% z ceny kurzu. Přeplatek je vrácen do 14 dní na platební účet odesílatele, ze kterého byly prostředky odeslány. Platba na jiné číslo účtu není možná.
4.7. Nejdéle do 5 pracovních dní od začátku školení bude školitelem vystavena faktura, která bude dle dohody odeslána e-mailem nebo datovou schránkou.

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.
5.2. Pokud objednatel není studentem kurzu, je povinnen zajistit distribuci těchto informací koncovým účastníkům. Za nesplnění těchto podmínek školitel nenese odpovědnost.
5.2. Standardně školení probíhá v čase od 9:00 do 17:00 na předem určeném místě.
5.3. Školitel může být dle aktuálních podmínek k dispozici od 8:00 do 9:00 a následně od 17:00 do 18:00 pro dotazy účastníků.
5.4. Na konci školení je koncovým uživatelům předán certifikát o absolovování.
5.5. Na konci školení koncoví uživatelé vyhodnocují přístup lektora a mají se vyjádřit k ohodnocení jeho prezentace, způsobu přednesení a ohodnotit významn poskytnutých informací.

6. Reklamace

6.1. Pokud je účastník hrubě nespokojen s průběhem kurzu, je školitel o této informaci vyrozuměn.
6.2. Důvody nespokojenosti jsou ten samý den zapsány do protokolu ve dvou kopiích. Jedna je předána objednateli a jednu má školitel.
6.3. Vyjádření k reklamaci bude podáno e-mailem do dvou týdnů. Následně do jednoho týdne bude domluven způsob řešení.
6.4. Nespokojenost zákazníka může být důvodem k rozvázání další spolupráce, nebo finanční kompenzaci až do výše ceny školení po odečtení nákladů.

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.
7.2. Žádný ze školicích materiálů ani jeho část nesmí být bez předchozího písemného souhlasu školitele jakýmkoli způsobem dále zpracovávána, rozmnožována, rozšiřována nebo využívána k dalším prezentacím nebo školením.

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.
8.2. Školitel nepřebírá odpovědnost za zranění, škody a ztráty, vzniklé účastníkům vzdělávacích akcí, nebo které byly účastníky způsobeny. Takové náklady, způsobené uvedenými okolnostmi, ponese výhradně účastník vzdělávací akce.

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.
Přestože je sběr dat všudypřítomný, provoz tohoto webu si zakládá na právu na soukromí každého uživatele. Z uvedeného důvodu sběr informací o uživatelích probíhá v naprosto nezbytné míře a to jen v případě, kdy se uživatel rozhodne kontaktovat provozovatele. Jakýkoliv další sběr a zpracování dat považujeme za neetický.

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.
Logování přístupů probíhá pouze na úrovni systému, důvodem je identifikace případných technických nebo bezpečnostních problémů. Dalšími důvody jsou přehledové statistiky přístupů. V této oblasti se nesbírají ani nesledují žádné konkrétní údaje a všechny záznamy o přístupech jsou po třech měsících mazány.

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.
Zákazník/návštěvník tohoto webu dále může požadovat omezení zpracování nebo vznést námitku proti zpracování údajů a má právo kdykoliv písemně svůj souhlas se zpracováním osobních údajů odvolat, aniž by tím byla dotčena zákonnost jejich zpracování předcházející takovému odvolání. Pro tyto účel slouží kontaktní e-mail adresa support@cryptosession.cz
Zákazník/návštěvník má právo podat stížnost proti zpracování osobních údajů u dozorového úřadu, kterým je Úřad pro ochranu osobních údajů.

404

Nemohu nalézt vámi požadovanou stránku, nebo to někdo přehnal se šifrováním.

Váš požadavek nemohu nalézt