Crypto Android. Trusted Execution Environment. TrustZone

Похожие документы
Esercitazione 2 Certificati

Truecrypt. Alfredo De Santis. Aprile Dipartimento di Informatica Università di Salerno.

Converte una chiave di al più 14 word a 32 bit (K-array) in un array di 18 sottochiavi a 32 bit (P-array) Genera 4 S-box, ognuna con 256 word a 32 bit

Sicurezza del File System

logaritmo discreto come funzione unidirezionale

DESlock+ Crittografia Dati

Istruzioni per cifrare i file

Elementi di Sicurezza e Privatezza Lezione 20 PGP cont d - Esercizi

GNU Privacy Guard - GnuPG/GPG

Crittografia per la sicurezza dei dati

FIRMA DIGITALE E CIFRATURA

Cifrare FileSystem in Linux

AHD DVR. Manuale d uso rapido

Privacy e firma digitale

Linux la gestione dei dischi

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

WP5. 9 Settembre Paolo Veronesi (INFN CNAF)

Identificazione, Autenticazione e Firma Digitale. Firma digitale...

Firma Remota Aruba --- Attivazione account di firma remota ed utilizzo ---

I Boot Loader: LiLo & Grub

Firma digitale con RSA

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1

DikeX IC Lite Manuale Utente InfoCert. Manuale Utente DikeIC InfoCert

Horizone Server IN00B02WEB. Horizone PDK

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

Crittografia a chiave pubblica

Il computer P R O F. L O R E N Z O P A R I S I

Sistema operativo. Avere un architettura multi-core è un vantaggio

Sistema Operativo (Software di base)

MSAck Hacklab. MSAck is prouds to announce: Metti al sicuro i tuoi dati: cifrali! MSAck::Hacklab C4Occupata WarmUp Hackit 0x0D

Ridimensionare un disco virtuale Come ridimensionare un disco virtuale in parallels senza perdere i dati in esso contenuti.

20/04/2017 MANUALE DI ISTRUZIONI DELL APPLICAZIONE ENTRATEL-MULTIFILE VERSIONE 1.0.6

Cifratura Simmetrica con OpenSSL

Il computer P R O F. L O R E N Z O P A R I S I

Cliens Redigo Versione Aggiornamento al manuale.

La firma digitale e la posta elettronica certificata

Corso di Sistemi Operativi I/II. Introduzione a Linux. Il File System. Ruggero Donida Labati

Come installare e lanciare il Software di trasmissione (OBS) per trasmettere in HD

RSA in OpenSSL. Alfredo De Santis. Marzo Dipartimento di Informatica Università di Salerno.

Sistema operativo & file system 1

XAMPP - Cos'è e installazione in locale

Firma Digitale Procedura Rinnovo

La memoria secondaria

Il computer P R O F. L O R E N Z O P A R I S I

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

Cifrari a blocchi. Esercizi con OpenSSL. Alfredo De Santis. Marzo Dipartimento di Informatica Università di Salerno

Installazione del driver Custom PostScript o del driver della stampante PCL per Windows

Guida alla stampa e alla scansione per dispositivi mobili per Brother iprint&scan (Android )

Dal sistema operativo all' hardware

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1.

Informatica di base 6/ed

Guida all'installazione di Ubuntu 10.10

MODELLO UNICO SOCIETA DI CAPITALI 2010

Telematico Digitale. Note di Installazione

Sicurezza e Crittografia

LA GESTIONE DELLA I/O

Server LDAP. File Server. Domain Controller. Installazione di una piattaforma Linux Alessandro Brusò 24/05/2012

Sicurezza nelle applicazioni multimediali: lezione 5, funzioni di hash. Funzioni crittografiche di hash

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza di rete)

Token USB V1 - Guida rapida

Транскрипт:

SMix richiede un vettore di lunghezza N. Visto che la memoria è costosa, implementare Scrypt in hardware è costoso [?] Trusted Execution Environment TrustZone I Trusted Execution Environment (TEE) sono ambienti di esecuzione isolati dalle altre applicazioni e sistemi operativi Solitamente implementati come processori separati fisicamente dal processore primario Poichè sono intoccabili dalle applicazioni, si può utilizzare un TEE per operazioni crittografiche isolate persino dal kernel di sistema Spesso includono in hardware chiavi uniche, in modo da garantire che solo un preciso processore possa decifrare i dati TrustZone è l implementazione del concetto di TEE in processori ARM Si definiscono due domini di esecuzione: RichOS, dove viene eseguito il sistema operativo classico TrustOS, dove viene eseguito un firmware sicuro, spesso impresso in hardware TrustZone usa stesso processore fisico, stesso ISA ma due aree di memoria completamente isolate per i due domini

Android Disk Encryption Android è una specifica per un sistema operativo pensato per l utilizzo mobile [?] AOSP (Android Open Source Project) è un implementazione di Android rilasciata sotto Apache 2.0 Per questo studio ci siamo concentrati su come Android cifri il disco e gestisca l autentificazione delle applicazioni nella AOSP 6.0.1b Android permette, dalla versione 3.0, la cifratura del disco di sistema Android 5.0 ha modificato alcuni punti dell algoritmo utilizzato Il codice relativo alla cifratura del disco è in singolo file, cryptofs.c Key generation Android opera a livello di blocchi direttamente nel kernel Il device è cifrato al primo avvio di sistema Trasparente alle applicazioni e all utente Non può funzionare su file system che non usano un approccio a blocchi Ufficialmente supporta solo etx4 e f2f [?] Ogni blocco è cifrato in maniera indipendente con la stessa chiave (DEK) [?] AES-CBC a 128 bit IV = AES128 ( SHA256(DEK), SN) Come viene generato DEK? Insieme a DEK viene generato anche un salt (S) Nessun check sulla presenza e sulla qualità di /dev/urandom...

Key store Key store algorithm DEK è salvata su disco, ma non in chiaro: è cifrata da una chiave che dipende Dalla password dell utente Questo permette all utente di cambiare periodicamente la propria password senza dover cifrare nuovamente l intero disco Dalla chiave hardware del TEE del processore In questa maniera solo il device che ha cifrato il disco può decifrarlo Viene generata IK1, a 256 bit, come SCRYPT della password utente e di S Se l utente non possiede una password, default password IK1 viene esteso a 256 byte con il formato 00 IK1 00... 00 IK1 esteso viene cifrato con la chiave privata del TEE, generando IK2 Genero IK3, a 256 bit, come SCRYPT di IK2 ed S I primi 128 bit di IK3 sono KEK, gli altri 128 bit sono IV Cifro DEK con AES128 CBC, usando KEK ed IV Considerazioni e curiosità Android Application Certificate Durante i test e lo studio del codice son sorti diversi punti e curiosità: Android, per ridurre il tempo di cifratura iniziale, cifra solo i blocchi attivi nella partizione DEK è generata tramite /dev/urandom, ergo viene generata dal kernel linux sottostante Android Visto che DEK è spesso generata al primo boot del sistema, sarebbe interessante studiare come si comporta il generatore su più dispositivi della stessa famiglia Le applicazioni Android son distribuite tramite un file.apk Ogni applicazione Android DEVE possedere un certificato In mancanza di un certificato, non si può installare l applicazione I certificati certificano non solo il codice, ma anche i metadati e tutte le risorse nell apk Android utilizza RSA 2048 e SHA1

Fonti note e non note Facendo una rapida ricerca, il flag viene controllato solo in un punto del codice Android presenta un flag che consente di installare applicazioni da fonti non note. Alcune domande sorgono spontanee: Chi sono le fonti note? Come capisce che un applicazione arriva da una fonte nota? Dal codice notiamo che, prima di iniziare l installazione, controlla solo se l applicazione è un applicazione di sistema Questo significa che, in qualche modo, le app di sistema sono le fonti note Solo le app di sistema possono iniziare il processo di installazione. Questo permette ai produttori di costruire un proprio store di applicazioni per i loro utenti Sta poi allo store ed al suo produttore introdurre eventuali controlli sull identità degli sviluppatori Ma allora a cosa serve firmare le applicazioni? E possibile installare un update per un app solo se firmato con la stessa chiave RSA E possibile specificare canali sicuri tra le applicazioni, in cui un app comunica solo con una che possiede una determinata firma Solo app firmate dalla stessa chiave possono essere eseguite dallo stesso processo

Giochiamo un po Considerazioni e curiosità Abbiamo provato a giocare con Android ed i suoi certificati E stato estremamente semplice realizzare uno script che rimuovesse la firma originale e firmasse l applicazione con la nostra chiave Abbiamo potuto installare la nostra fakeapp sul sistema Abbiamo poi generato un certificato scaduto e abbiamo firmato l applicazione Android ha installato l applicazione senza dare un avviso del problema Come visto, il sistema di app signing su Android non serve tanto a garantire l identità dello svilluppatore, quanto a garantire che solo lo sviluppatore di un app possa rilasciarne update Approccio totalmente diverso alla concorrenza Il controllo dei certificati è da parte del produttore del dispositivo E estremamente semplice rimuovere la firma di un.apk e firmarlo con un proprio certificato Android accetta anche certificati scaduti senza dare alcun segnale References [1] Colin Percival, Stronger key derivation via sequential memory-hard functions, 2009. [2] Google Inc., Android 6.0 Compatibility Definition, 16 ottobre 2015. [3] Android Full Disk Encryption, Web. 21 gennaio 2016. https://source.android.com/security/encryption/ [4] Android App Signing, Web. 21 gennaio 2016. https://developer.android.com/tools/publishing/appsigning.html