Slide 1

Slide 1 text

ZERO KNOWLEDGE ARCHITECTURES for mobile applications

Slide 2

Slide 2 text

@vixentael Mobile Tech Lead Feel free to reach me with any mobile security questions. I do check my inbox :)

Slide 3

Slide 3 text

Let’s play a game

Slide 4

Slide 4 text

Sensitive data – ? @vixentael

Slide 5

Slide 5 text

E2EE – ? @vixentael

Slide 6

Slide 6 text

GDPR – ? @vixentael

Slide 7

Slide 7 text

GDPR – ? Equifax – ? @vixentael

Slide 8

Slide 8 text

#mobiconf @vixentael

Slide 9

Slide 9 text

Where we are

Slide 10

Slide 10 text

We have sensitive data @vixentael

Slide 11

Slide 11 text

We have sensitive data We put it to the “cloud” @vixentael

Slide 12

Slide 12 text

We put it to the “cloud”

Slide 13

Slide 13 text

We put it to the “cloud” Everything runs on smbd’s software, on smbd’s computer, is maintained by someone else @vixentael

Slide 14

Slide 14 text

We have sensitive data We put it to the “cloud” Everything runs on smbd’s software, on smbd’s computer, is maintained by someone else @vixentael

Slide 15

Slide 15 text

Do we trust them? @vixentael

Slide 16

Slide 16 text

Do we trust them? Do we want to trust them? @vixentael

Slide 17

Slide 17 text

– NO.

Slide 18

Slide 18 text

We don’t want. @vixentael

Slide 19

Slide 19 text

to know how secure cloud is We don’t want @vixentael

Slide 20

Slide 20 text

to trust other ppl’s software, computers, and maintenance practices - to know how secure cloud is We don’t want @vixentael

Slide 21

Slide 21 text

to think about sensitive data leakage - to trust other people’s software, computers, and maintenance practices - to know how secure cloud is We don’t want @vixentael

Slide 22

Slide 22 text

- to think about sensitive data leakage - to trust other people’s software, computers, and maintenance practices - to know how secure cloud is We don’t want @vixentael

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

We don’t want to share sensitive data.

Slide 25

Slide 25 text

We don’t want to share sensitive data, but we must

Slide 26

Slide 26 text

medical records credit history ? } @vixentael

Slide 27

Slide 27 text

your data, managed by someone medical records credit history = @vixentael

Slide 28

Slide 28 text

– Need control.

Slide 29

Slide 29 text

Control access to the sensitive data during storing and sharing. @vixentael

Slide 30

Slide 30 text

How? Control access to the sensitive data during storing and sharing. @vixentael

Slide 31

Slide 31 text

– Encryption.

Slide 32

Slide 32 text

Messaging End-to-End Encryption @vixentael

Slide 33

Slide 33 text

Authentication Zero Knowledge Proof https://www.cossacklabs.com/zero- knowledge-protocols-without-magic.html @vixentael

Slide 34

Slide 34 text

Data ??? - store encrypted - share with others - manage access to parties @vixentael

Slide 35

Slide 35 text

– Zero Knowledge Architectures

Slide 36

Slide 36 text

ZKA is a design principle that enables software to provide services over protected client data without having an unencrypted access to it. @vixentael

Slide 37

Slide 37 text

e2ee clients ZKA includes @vixentael

Slide 38

Slide 38 text

e2ee clients all operations are on encrypted data: – control access to data from different users – CRUD – search (in encrypted data) ZKA includes @vixentael

Slide 39

Slide 39 text

ZKA is already solved for specific use-cases or in a naive ways @vixentael

Slide 40

Slide 40 text

Sharing encrypted data: naive approach – duplications – key management problems @vixentael

Slide 41

Slide 41 text

give access to certain blocks of data to exact users https://github.com/cossacklabs/ hermes-core Our take @vixentael

Slide 42

Slide 42 text

- Why me?

Slide 43

Slide 43 text

ZKA relies on trust to the client @vixentael

Slide 44

Slide 44 text

ZKA relies on trust to the client Mobile runs code safely* @vixentael

Slide 45

Slide 45 text

ZKA relies on trust to the client Mobile stores keys safely* Mobile runs code safely* @vixentael

Slide 46

Slide 46 text

Mobile stores keys safely* ZKA relies on trust to the client Mobile runs code safely* Mobile is a good client Brent @vixentael

Slide 47

Slide 47 text

– Meanwhile in the real world…

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

{ "personal_data": { "name": "Cat", "surname": "Black", "age": 25, "home_address": "large box in living room", "birth_date": "01/04/1992" }, "credit_rating": 8.7, "transactions": [{ "operation": "credit", "bank": "CatBank1", "amount": "2000", "currency": "eur", "date": "02/10/2017" }, { "operation": "credit", "bank": "CatBank2", "amount": "500", "currency": "eur", "date": "14/02/2015" } ] } @vixentael

Slide 50

Slide 50 text

{ "personal_data": { "name": "Cat", "surname": "Black", "age": 25, "home_address": "large box in living room", "birth_date": "01/04/1992" }, "credit_rating": 8.7, "transactions": [{ "operation": "credit", "bank": "CatBank1", "amount": "2000", "currency": "eur", "date": "02/10/2017" }, { "operation": "credit", "bank": "CatBank2", "amount": "500", "currency": "eur", "date": "14/02/2015" } ] } personal data @vixentael

Slide 51

Slide 51 text

protected data { "personal_data": { "name": "Cat", "surname": "Black", "age": 25, "home_address": "large box in living room", "birth_date": "01/04/1992" }, "credit_rating": 8.7, "transactions": [{ "operation": "credit", "bank": "CatBank1", "amount": "2000", "currency": "eur", "date": "02/10/2017" }, { "operation": "credit", "bank": "CatBank2", "amount": "500", "currency": "eur", "date": "14/02/2015" } ] } @vixentael

Slide 52

Slide 52 text

{ "personal_data": { "name": "Cat", "surname": "Black", "age": 25, "home_address": "large box in living room", "birth_date": "01/04/1992" }, "credit_rating": 8.7, "transactions": [{ "operation": "credit", "bank": "CatBank1", "amount": "2000", "currency": "eur", "date": "02/10/2017" }, { "operation": "credit", "bank": "CatBank2", "amount": "500", "currency": "eur", "date": "14/02/2015" } ] } really-really protected data @vixentael

Slide 53

Slide 53 text

you bank credit bureau @vixentael

Slide 54

Slide 54 text

you bank credit bureau @vixentael

Slide 55

Slide 55 text

you bank credit bureau @vixentael

Slide 56

Slide 56 text

you bank credit bureau @vixentael

Slide 57

Slide 57 text

you bank credit bureau @vixentael

Slide 58

Slide 58 text

you bank credit bureau @vixentael

Slide 59

Slide 59 text

you bank credit bureau what could possibly go wrong? @vixentael

Slide 60

Slide 60 text

leakage from – your data is available everywhere Risks @vixentael

Slide 61

Slide 61 text

leakage from – your data is available everywhere Risks encrypt data with one shared ? leak one key – leak everything @vixentael

Slide 62

Slide 62 text

B&B can accumulate extra data about you. Risks @vixentael

Slide 63

Slide 63 text

B&B can judge you by things you haven’t done. Risks @vixentael

Slide 64

Slide 64 text

B&B can record requests about people they don’t know. Risks @vixentael

Slide 65

Slide 65 text

How ZKA can help?

Slide 66

Slide 66 text

{ "personal_data": { "name": "Cat", "surname": "Black", "age": 25, "home_address": "large box in living room", "birth_date": "01/04/1992" }, "credit_rating": 8.7, "transactions": [{ "operation": "credit", "bank": "CatBank1", "amount": "2000", "currency": "eur", "date": "02/10/2017" }, { "operation": "credit", "bank": "CatBank2", "amount": "500", "currency": "eur", "date": "14/02/2015" } ] } RW RO RO, customer verification RW @vixentael

Slide 67

Slide 67 text

access to data blocks encrypted controlled by owner @vixentael

Slide 68

Slide 68 text

stores encrypted updates only credit score owns, controls access RW only their transactions access revoked @vixentael

Slide 69

Slide 69 text

- Key wrapping storage keys user keys How to build it? @vixentael blocks

Slide 70

Slide 70 text

- Key wrapping - Manage privileges How to build it? @vixentael

Slide 71

Slide 71 text

- Key wrapping - Manage privileges - Control requests How to build it? @vixentael

Slide 72

Slide 72 text

- Key wrapping - Manage privileges - Control requests - Mitigate remaining attacks How to build it? @vixentael

Slide 73

Slide 73 text

leakage → privileges → replay → other? → Mitigating the risks: @vixentael

Slide 74

Slide 74 text

leakage → it’s encrypted privileges → replay → other? → Mitigating the risks: @vixentael

Slide 75

Slide 75 text

leakage → it’s encrypted privileges → it’s encrypted replay → other? → Mitigating the risks: @vixentael

Slide 76

Slide 76 text

leakage → it’s encrypted privileges → it’s encrypted replay → ZKP (it’s encrypted ;) other? → Mitigating the risks: @vixentael

Slide 77

Slide 77 text

leakage → it’s encrypted privileges → it’s encrypted replay → ZKP (it’s encrypted ;) other? → tiny attack surface Mitigating the risks: @vixentael

Slide 78

Slide 78 text

ZKA elsewhere

Slide 79

Slide 79 text

shared audit logs complex docs, spreadsheets config files file system document store protection @vixentael

Slide 80

Slide 80 text

Is it difficult to implement?

Slide 81

Slide 81 text

Signal https://github.com/WhisperSystems/ SignalProtocolKit/blob/master/AxolotlKit/Classes/ Sessions/SessionBuilder.m @vixentael

Slide 82

Slide 82 text

Swift Alps Demo https://github.com/cossacklabs/theswiftalpsdemo/ blob/master/ios-project/SwiftAlpsSecDemo/ SwiftAlpsSecDemo/SessionDemo.swift github.com/ cossacklabs/themis @vixentael

Slide 83

Slide 83 text

Hermes github.com/cossacklabs/ hermes-core ODING IN PROGRESS CODING IN PROG @vixentael

Slide 84

Slide 84 text

Other examples https://tahoe-lafs.org/trac/tahoe-lafs The Least-Authority File Store https://tresorit.com/zerokit ZeroKit from Tresorit @vixentael

Slide 85

Slide 85 text

Recap

Slide 86

Slide 86 text

1. We know a lot about data protection and peer-to-peer communication. 2. Collaborating on data exposes more advanced risks. One key is not enough. 3. ZKA helps against advanced risks. 4. Sooner or later, everything will be collaborative. 5. Learn ZKA in advance! @vixentael

Slide 87

Slide 87 text

Links 1 https://clipperz.is/blog/2007/08/24/anatomy_zero_knowledge_web_application/ Anatomy of a Zero-Knowledge Web Application, 2007 https://www.cossacklabs.com/zero-knowledge-protocols-without-magic.html Zero Knowledge Protocols Without Magic https://brainsware.at/blog/9-zero-knowledge-saas Why We Develop Zero Knowledge Software

Slide 88

Slide 88 text

Links 2 https://spideroak.com/articles/why-we-will-no-longer-use-the-phrase-zero- knowledge-to-describe-our-software/ Why We Will No Longer Use the Phrase Zero Knowledge to Describe Our Software https://medium.com/@cossacklabs/eli5-end-to-end-encryption-ae46821db74f Explain Like I’m 5: End-to-end Encryption https://keybase.io/blog/encrypted-git-for-everyone Keybase launches encrypted git

Slide 89

Slide 89 text

My other security slides https://github.com/ vixentael/my-talks

Slide 90

Slide 90 text

@vixentael Mobile Tech Lead Feel free to reach me with any mobile security questions. I do check my inbox :)

Slide 91

Slide 91 text

Image credits www.flaticon.com freepik, linector, switficons, pixelperfect, smashicons Authors: