Bezpečnost Zingly a detaily protokolu PowerAuth 2.0

Preview:

Citation preview

Bezpečnost Zingly a detaily protokolu PowerAuth 2.0

Petr Dvořák CEO at Lime

E-mail: petr@lime-company.eu

Twitter: @joshis_tweets

Bezpečnost

Sdílejte přátelům a známým

Otázky lze klást v Q&A boxu

Odkaz na Slideshare v popisu videa

Záznam bude dostupný on-line

PowerAuth 2.0

Bezpečné úložiště / trezor

End-to-end šifrování komunikace

Open-source, komerční podpora

Více-faktorové podepisování

Autentizace mobilního bankovnictví

PowerAuth 2.0 - Procesy (pohledem single-bankingu)

Aktivace

Pohled ze strany uživatele

PowerAuth ServerZingly API Server

Internetové bankovnictví

Aktéři aktivačního procesu

PowerAuth ServerZingly API Server

Internetové bankovnictví

PowerAuth 2.0 Client

PowerAuth 2.0 Server

Master Front-End Application

Intermediate Server Application

Aktéři aktivačního procesu

Fáze 1: Inicializace aktivace v Internetbankingu

Fáze 2: Výměna public klíčů a derivace klíčů

PowerAuth ServerZingly API Server

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

server public

device private

PowerAuth 2.0 Server

activation id

device public

server private

ECDH(privA, pubB)

ECDH(privB, pubA)

ECDH(privA, pubB)

=

MASTER-SECRET

=

ECDH(privB, pubA)

PowerAuth ServerZingly API Server

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

server public

device private

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secretactivation id

PowerAuth 2.0 Client

server public

device private

ECDH

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secret

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry

KDF(AES)

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secret

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry

Keychain

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secret

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry

PBKDF2(PIN)

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secret

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry Touch ID

PowerAuth ServerZingly API Server

Internetové bankovnictví

master secret

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry

PowerAuth ServerZingly API Server

Internetové bankovnictví

possession

knowledge

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

device private

biometry

PowerAuth ServerZingly API Server

Internetové bankovnictví

transport

vault encryption

activation id

PowerAuth 2.0 Client

server public

C(device private)

possession

knowledge

biometry

PowerAuth ServerZingly API Server

Internetové bankovnictví

transportactivation id

PowerAuth 2.0 Client

server public

C(device private)

possession

knowledge

biometry

PowerAuth ServerZingly API Server

Internetové bankovnictví

PowerAuth 2.0 Server

activation id

device public

server private

1234567890

Fáze 3: Potvrzení aktivace v Internetbankingu

Podepisování dat

HMAC-SHA256, logický čas, nonce

Částečné ověřování faktorů

Číselná signatura vhodná k přepisu

Svázané s daty požadavku

Multi-faktorové signatury

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

• 1FA: possession , knowledge , biometry • 2FA: possession_knowledge , possession_biometry • 3FA: possession_knowledge_biometry

Typy PowerAuth 2.0 signatur

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge_biometry" pa_signature="12345678-12345678-12345678", pa_version="2.0"

Secure Vault

“Vault encryption” vydán po autentizaci

Přenos chráněn transportním klíčem

Bezpečné lokální úložiště

End-to-end šifrování

Jednorázové transportní klíče

Derivace z “master transport” klíče

Šifrování na aplikační úrovni

PowerAuth 2.0 a single-banking

PowerAuth 2.0 a multi-banking

Lze řešit různými způsoby

Ne kompromis v bezpečnosti či UX

Nové specifické problémy

Nechceme super-autoritu

Příklad: Práce s PIN kódem na jednom zařízení

PowerAuth Server

Zingly API Server

Banka A

Ban

kyUži

vate

Internetové bankovnictví

knowledge

activation id

PowerAuth 2.0 Client

PowerAuth Server

Zingly API Server

Banka A

Ban

kyUži

vate

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PowerAuth 2.0 Client

PIN(y)

knowledge knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PowerAuth 2.0 Client

PIN(y)

X = Y ?

knowledge knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PIN(?)

knowledge knowledge

Problém 1: Aplikace nezná PIN

PowerAuth Server

Zingly API Server

Banka A

Ban

kyUži

vate

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

knowledge knowledge

Problém 2: Pro X bank, N * X pokusů

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PIN(x)

knowledge knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PIN(x)

knowledge knowledge

S každou další bankou o trochu méně bezpečné

Problém 3: Synchronizace

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

activation id

PIN(x)

knowledge knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

activation id

PIN(x)

Nová platba

knowledge

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

knowledge

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

activation id

PIN(x)

Nová platba - neúspěšná autorizace

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Banka A Banka B

Ban

kyUži

vate

Internetové bankovnictví

Internetové bankovnictví

knowledge

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

activation id

PIN(x)

0 pokusů BLOCKED

5 pokusů ACTIVE

Řešení: Centrální komunikační hub a secure vault

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

léZ

ing

ly

Internetové bankovnictví

Internetové bankovnictví

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Uži

vate

knowledge

activation id

PowerAuth 2.0 Client

PIN(x)

knowledge

activation id

PIN(x)

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Uži

vate

léPowerAuth 2.0 Client

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

VAULT

knowledge

activation id

PIN(x)

activation id

PIN(x)

activation id

PIN(x)

knowledge knowledge

Centrální komunikační hub

Nevidí data (end-to-end šifrování)*

Nemusí být jen jeden “uber-hub”

Neukládá žádná data

Zvyšuje bezpečnost

* … trochu “nepohodlné” z pohledu API a náročné na CPU výkon, proto zatím neděláme

Děkuji

Petr Dvořák e-mail: petr@lime-company.eu twitter: @zinglyapp

http://powerauth.com/

24. 3.,16:00 - 17:00 Co musí banka udělat pro zapojení do Zingly

31.3., 15:00 - 16:00 Dopad multi-bankingu a otevřených bankovních API do obchodního fungování bank

Otázky? :-)

Petr Dvořák e-mail: petr@lime-company.eu twitter: @zinglyapp

http://powerauth.com/

Recommended