arcanum - client side encryption based file storage service

19

Upload: yashin-mehaboobe

Post on 26-May-2015

257 views

Category:

Technology


1 download

DESCRIPTION

Presentation given at Kaspersky Cyberconference MEA round.

TRANSCRIPT

Page 1: Arcanum - Client side encryption based file storage service
Page 2: Arcanum - Client side encryption based file storage service

INTRODUCTION

#whoami

• Yashin Mehaboobe

• Independent Security Researcher, Student

• Speaker – Nullcon, c0c0n, Toorcon and HITB

Page 3: Arcanum - Client side encryption based file storage service

CURRENT SITUATION

• Systems such as dropbox or box does not allow secure transfer of files

• Easy and secure transfer of files need technical knowledge

• The layman does not understand concepts such as PGP and asymmetric encryption

Page 4: Arcanum - Client side encryption based file storage service

4

WHAT IS ARCANUM?

•An asymmetric encryption based file storage service.

• Intended to allow the sharing of files between clients securely.

•The client handles encryption as well as decryption.

•The server merely handles file storage and user management.

•This ensures that even if the server is compromised, the user data is not.

•The server extends a REST based API to clients.

Page 5: Arcanum - Client side encryption based file storage service

5

MODULES

Client side Handles encryption,decryption and key generation

Server side Handles file storage and user management

Page 6: Arcanum - Client side encryption based file storage service

6

CLIENT SIDE - OVERVIEW

•Completely handles encryption, decryption as well as user credential storage.

•Communicates with the server over HTTP

•The private key is stored locally while public key is sent to the server.

•Connection is SSL secured

•Authentication is HTTP Basic Authentication

Page 7: Arcanum - Client side encryption based file storage service

7

CLIENT SIDE - REGISTRATION

•During registration a RSA 2048 bit public/private keypair is generated

•The public key is sent to the server while the private key is stored locally

•The username, password and email is also sent to the server.

•APIs used: /create/ for registration

Page 8: Arcanum - Client side encryption based file storage service

8

CLIENT SIDE - SENDING

•Sending file: Get the public key of the user to send to Generate AES Key Encrypt file with the generated AES Key Encrypt AES Key with RSA Public Key Prepend encrypted AES key with encrypted file Send file to server

•APIs used: GET /send/username to get the public key POST /send/username to send the file

Page 9: Arcanum - Client side encryption based file storage service

9

CLIENT SIDE - RECEIVING

•Receiving file: Fetch file from server Decrypt AES key using RSA private key (locally stored) Decrypt rest of the file using AES key.

•APIs used: GET /receive/all to get list of files GET /receive/number to fetch a particular file

Page 10: Arcanum - Client side encryption based file storage service

10

SERVER SIDE

•Uses a bucket file storage system

•Database used is sqlite3

•Passwords are stored as MD5 hashes

•Exposes a REST API so the clients can be easily created.

•Created using flask, sqlalchemy and restful.

Page 11: Arcanum - Client side encryption based file storage service

11

ENCRYPTION

• Handled by Keyczar

• AES-256 for symmetric encryption

• RSA 2048 for asymmetric

• HMAC for data integrity

• SSL for security in transit

Page 12: Arcanum - Client side encryption based file storage service

12

LOGIN

Page 13: Arcanum - Client side encryption based file storage service

13

REGISTRATION

Page 14: Arcanum - Client side encryption based file storage service

14

SEND TAB

Page 15: Arcanum - Client side encryption based file storage service

15

RECEIVE TAB

Page 16: Arcanum - Client side encryption based file storage service

16

TODO

• Web interface (partially done)

• Change to digest authentication

• Encrypt local keys

Page 17: Arcanum - Client side encryption based file storage service

17

REQUIREMENTS

•Python 2.7

•Server: flask,flask-httpauth,ofs,pairtree

•Client: requests, keyczar, pyqt

•Minimum requirements:• 512 MB RAM• Dual core processor• Atleast 1 GB storage.

Page 18: Arcanum - Client side encryption based file storage service

18

WRAPPING UP

• Code is available at:• https://github.com/sp3ctr3/arcanum-server• https://github.com/sp3ctr3/arcanum-client

• Completely functional• Multiplatform• Further clients are being developed

Page 19: Arcanum - Client side encryption based file storage service

THANK YOU

11-13 марта, 2014Korea University, Seoul, Korea