The Sibyl: NoConName 2013

49
Client-side password Encryption Pedro Fortuny & Carlos Amieva (& Rafael Casado “in absentia”)

Transcript of The Sibyl: NoConName 2013

Page 1: The Sibyl: NoConName 2013

Client-side passwordEncryption

Pedro Fortuny & Carlos Amieva(& Rafael Casado “in absentia”)

Page 2: The Sibyl: NoConName 2013

Client-side passwordEncryption

No worries, James, let the sysadmin deal with the problem.

Page 3: The Sibyl: NoConName 2013

Client-side passwordEncryption

Honestly:

Page 4: The Sibyl: NoConName 2013

Client-side passwordEncryption

Honestly:

Can you trust your sysadmin?

Page 5: The Sibyl: NoConName 2013

Client-side passwordEncryption

Honestly:

Can you trust your sysadmin?

I mean

Page 6: The Sibyl: NoConName 2013

Client-side passwordEncryption

Honestly:

Can you trust your sysadmin?

Page 7: The Sibyl: NoConName 2013

really?

Client-side passwordEncryption

Honestly:

Can you trust your sysadmin?

Page 8: The Sibyl: NoConName 2013

Client-side passwordEncryption

I said really

Page 9: The Sibyl: NoConName 2013

Client-side passwordEncryption

We need

Page 10: The Sibyl: NoConName 2013

Client-side passwordEncryption

Ways to minimize data exposure to the sysadmin

We need

Page 11: The Sibyl: NoConName 2013

Client-side passwordEncryption

Ways to minimize data exposure to the sysadmin

We need

One step

Page 12: The Sibyl: NoConName 2013

Client-side passwordEncryption

Ways to minimize data exposure to the sysadmin

We need

One step

Protecting passwords from local access / MITM

Page 13: The Sibyl: NoConName 2013

Client-side passwordEncryption

The Sibyl v2.0

Page 14: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

State of affairs 2013 - blind trust

Page 15: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL, this is SAFE, oooohh!

State of affairs 2013 - blind trust

Page 16: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL, this is SAFE, oooohh!

I use scrypt, I’m no fool

State of affairs 2013 - blind trust

Page 17: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL, this is SAFE, oooohh!

zorg:~# a=`pidof mysql`zorg:~# strace -p $a -e crypt -f

I use scrypt, I’m no fool

State of affairs 2013 - blind trust

Page 18: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL, this is SAFE, oooohh!

zorg:~# a=`pidof mysql`zorg:~# strace -p $a -e crypt -f

[pregnant silence]

I use scrypt, I’m no fool

State of affairs 2013 - blind trust

Page 19: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL, this is SAFE, oooohh!

zorg:~# a=`pidof mysql`zorg:~# strace -p $a -e crypt -f

[pid 9] crypt(“patata”,“$7$21212104040SaLt.$”)

[pregnant silence]

I use scrypt, I’m no fool

State of affairs 2013 - blind trust

Page 20: The Sibyl: NoConName 2013

Client-side passwordEncryption

Do youreallythinkhackersdo NOTusestrace?

Page 21: The Sibyl: NoConName 2013

Client-side passwordEncryption

BUTYour sysadmin is

good[assumming you have not been rooted]

(tm)

Page 22: The Sibyl: NoConName 2013

Client-side passwordEncryption

BUTYour sysadmin is

good[assumming you have not been rooted]

(tm)

Trust in me...

Page 23: The Sibyl: NoConName 2013

Client-side passwordEncryption

Can do better

Page 24: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL - but “trust in me...”

Page 25: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL - but “trust in me...”

Store “RSA(scrypt(pwd))” on the server

Page 26: The Sibyl: NoConName 2013

Client-side passwordEncryption

Client

Server

TLS/SSL - but “trust in me...”

Store “RSA(scrypt(pwd))” on the server

Sibyl

RSA channel

Use a hardware module to authenticate

Page 27: The Sibyl: NoConName 2013

Client-side passwordEncryption

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Page 28: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Page 29: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

only storesPUB0(hash)

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Page 30: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

hash=scrypt(pwd) is runon the client side

only storesPUB0(hash)

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Page 31: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

hash=scrypt(pwd) is runon the client side

msg=PUBi(hash)

only storesPUB0(hash)

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Page 32: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

hash=scrypt(pwd) is runon the client side

msg=PUBi(hash)

only storesPUB0(hash)

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Priv(PUB0(hash))==

Priv(PUBi(hash))Login?

Page 33: The Sibyl: NoConName 2013

Client-side passwordEncryption

[Priv, Pub] RSA pair

hash=scrypt(pwd) is runon the client side

msg=PUBi(hash)

only storesPUB0(hash)

Only the Sibly can answer this

TLS/SSL - but “trust in me...”Client

[Pub key]

Server

Sibyl

Priv(PUB0(hash))==

Priv(PUBi(hash))Login?

Page 34: The Sibyl: NoConName 2013

Client-side passwordEncryption

There is no encryptionperformed

on the server

Page 35: The Sibyl: NoConName 2013

Client-side passwordEncryption

The Sibyl can becompletely dumb

[not yet implemented]⇒ no access to the priv. key

Page 36: The Sibyl: NoConName 2013

Client-side passwordEncryption

The sysadmin has noway to MITM or whatever

Trustless pwd management

Page 37: The Sibyl: NoConName 2013

Client-side passwordEncryption

Isn’t it better to trustpeople, Charlie Brown?

Page 38: The Sibyl: NoConName 2013

Client-side passwordEncryption

Isn’t it better to trustpeople, Charlie Brown?

No, Lucy, no...

Page 39: The Sibyl: NoConName 2013

Client-side passwordEncryption

Details[...]

skip if necessary

Page 40: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibyl

Page 41: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

Page 42: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

Page 43: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

Page 44: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

[V1,V2]

Page 45: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

[V1,V2]

decrypt(v1)==?

decrypt(v2)

Page 46: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

[V1,V2]

decrypt(v1)==?

decrypt(v2)yes/no

Page 47: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

[V1,V2]

decrypt(v1)==?

decrypt(v2)yes/no

grant/deny

Page 48: The Sibyl: NoConName 2013

Client-side passwordEncryption

client server sibylV1=RSAi(pwd)

[login,V1]

V2=RSA0(pass)(stored)

[V1,V2]

decrypt(v1)==?

decrypt(v2)yes/no

grant/deny

much gorier

(alreadydone)

Page 49: The Sibyl: NoConName 2013

⚠Client-side password

Encryption

Thank you

And don’t forget tohave a nice meal

??