SlideShare uma empresa Scribd logo
1 de 33
1
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Philippe Prados
Aurélien Rambaux17 Juin 2013
Installer, gérer, sécuriser et utiliser
une clef privée dans Android
2
Infrastructure à clés publiques
Sauvegarder un certificat
Partager un certificat
Un scénario possible chez un client
Au menu
3
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Qu’est-ce ?
Infrastructure à clés publiques (PKI)
4
Fichier signé numériquement par une autorité
Equivalent à une carte d’identité
Authentification sur le mode « je possède »
Considéré comme plus sécurisé qu’un mot de passe
Sert de preuve juridique
Signature basé sur du chiffrement asymétrique
Qu’est-ce qu’un certificat numérique ?
5
Ce que je chiffre avec l’un…
… je le déchiffre avec l’autre
Une clé privée liée à une clé publique
6
Objectif d’une PKI :
Authentification mutuelle forte
Confidentialité
Non-répudiation
Pour les mobiles :
Gérer l’accès à un intranet
Gérer le vol de mobile
Infrastructure à clés publiques (PKI)
7
Comment sauver un certificat dans un espace sécurisé du
téléphone ?
Comment résister au vol du téléphone ?
Comment contrôler l’accès au certificat aux seules applications
autorisées ?
Comment distribuer le certificat aux terminaux
Dans cette session
8
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Comment sauvegarder un secret dans un
espace sécurisé du téléphone ?
Sauver un secret
9
Approche traditionnelle
Secure Element (SE)
Chiffrement du disque
Conteneur de certificats clients Android
KeyChain
Keystore
Approche mise en œuvre en mission
Comment sauvegarder un secret ?
10
Sauvegarder le certificat :
Non chiffré sur disque
Exploitable par analyse statique de disque
Chiffré sur disque
Mot de passe à demander encore et encore
Utiliser onSaveIntanceState() ou un extra de l’Intent
Gestion lourde
« Accessible » sur le disque
Chiffrer le disque du terminal
Pas garanti
Approche traditionnelle
11
SE : composant électronique communiquant via des trames
binaires
Disponible dans le terminal et/ou dans la carte SIM
Avantage d’un SE :
Mémorise clefs privées, accès VPN, générateurs de mots de passe
à usage unique…
Résiste aux attaques physiques
Implémente matériellement les algorithmes standards de
cryptographie (DES, AES, RSA)
Secure Element (SE) 1/2
12
Accessible via la couche NFC mais …
… impossible d’installer des application dans le SE
… impossible de communiquer avec par une application classique
Utilisé par Google Wallet
Secure Element (SE) 2/2
13
Limité à l’identification VPN et Wifi (< sdk 14)
Installation depuis la carte SD
L’effacement du certificat n’est pas physique !
Utilise le KeyStore Android
Conteneur de certificats clients
14
Pour les version d’Android supérieur à 14
Permet d’exploiter les certificats clients du terminal
Approche officielle : KeyChain
KeyChain.choosePrivateKeyAlias(this,
new KeyChainCallBack() {
@Override
public void alias(String alias) {
mAlias=alias;
}
},
new String[] {"RSA"}, // List of acceptable key types. null for any
null, // issuer, null for any
"internal.example.com", // host name of server requesting the cert
443, // port of server requesting the cert, -1 if
// unavailable
null); // alias to preselect, null if unavailable
15
La callback retourne le nom du certificat et
autorise l’application à l’utiliser
KeyChain…
KeyChain.getCertificateChain(this, mAlias);
KeyChain.getPrivateKey(this, mAlias);
16
Installation via API
KeyChain
Intent intent = KeyChain.createInstallIntent();
// Controle le nom du certificat
intent.putExtra(KeyChain.EXTRA_NAME, CERT_NAME);
intent.putExtra(KeyChain.EXTRA_PKCS12, out.toByteArray());
startActivityForResult(intent, RESULT_CODE);
17
KeyStore
Protégé par un mot de passe utilisateur
(version antérieure à 3.x)
Lié au verrouillage du téléphone (à partir
de la version 3.x)
Mais pas d’API officielle !
Ça n’empêche pas de jouer avec…
18
Récupérer la classe android.security.KeyStore
Changer le nom du package
Pour le débloquer :
Comment utiliser le KeyStore
put(), get(), byte[]
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
context.startActivity(
new Intent("android.credentials.UNLOCK"));
} else {
context.startActivity(
new Intent("com.android.credentials.UNLOCK"));
}
19
Simulation des API du KeyChain pour les versions antérieures
(sdk < 14)
Sur Github
Les certificats ne peuvent être partagées entre applications
Exploite le KeyStore 
https://github.com/pprados/android-keychain-backport
https://github.com/pprados/android-keychain-backport-androlib
android-keychain-backport
20
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Via AccountAuthenticator
Partager un certificat
21
Proposer un Account pour l’intranet
Il porte et distribue la clé privée aux
applications de confiance
Le besoin
22
<service
android:name=".CertificateAuthenticationService"
android:exported="true" >
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/certificate_authenticator" />
</service>
Le service…
23
<account-authenticator
xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="fr.prados.android.account.certificate"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/authenticator_certificate_label“
/>
La description du compte…
24
Normalement utilisé pour du OAuth…
… détourné pour communiquer le certificat par la
mAccountManagerCallback
Utilisation…
mAccountManager.invalidateAuthToken(mAccountType, mAuthToken);
mAccountManager.getAuthToken(
mAccount, // Account retrieved using getAccountsByType()
mAuthTokenType, // Auth scope
mOptions, // Authenticator-specific options
this, // Your activity
mAccountManagerCallback, // Callback
mHandler); // Callback called if an error occurs
HttpsURLConnection.setDefaultSSLSocketFactory(mSocketFactory);
25
Dans getAuth
Privilège de l’appelant
public static final String KEY_CALLER_UID =
(VERSION.SDK_INT>=VERSION_CODES.HONEYCOMB) ?
AccountManager.KEY_CALLER_UID : "callerUid";
public static final String KEY_CALLER_PID =
(VERSION.SDK_INT>=VERSION_CODES.HONEYCOMB) ?
AccountManager.KEY_CALLER_PID : "callerPid";
if (options == null)
return errorDenied();
int pid = options.getInt(KEY_CALLER_PID);
int uid = options.getInt(KEY_CALLER_UID);
if (mContext.checkPermission(PERMISSION, pid, uid) ==
PackageManager.PERMISSION_DENIED)
return errorDenied();
}
26
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Un scénario possible
27
Enrôlement de quelques centaines de terminaux
Gestion des CDD
Gestion d’oubli des terminaux
Grande facilité et souplesse de déploiement sans sacrifier la
sécurité
L’expérience utilisateur doit être la plus simple possible !
Contraintes de sécurité : un certificat pour un triplet
Employé
Téléphone (IMEI)
SIM
Objectif de la mission
28
Enregistrement des triplets dans le SI
L’utilisateur saisi son identifiant sur le
terminal
C’est tout !
Il récupère son certificat (clés privée et
publique)
Il est protégé et partagé dans le terminal
Notre approche
29
Requête vers le serveur avec l’identité de l’utilisateur
Le serveur génère le certificat et le chiffre avec <IMEI> +
<random>
<random> est envoyé par SMS
Le téléphone capable de déchiffrer prouve son identité (le triplet
est résolu)
Processus d’enrôlement
30
Expérience utilisateur simple
Seulement 2 écrans
31
La durée de vie du certificat peut être courte (CDD)
Facilité de déploiement
En cas de vol, ajout du certificat client dans la CRL
Un utilisateur peut avoir plusieurs devices
En cas d’oubli, génération d’un certificat temporaire
Pas chère !
Adaptable à la dernière version de Chrome
Avantages de la solution
32
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2013
50, avenue des Champs-Elysées
75008 Paris - FRANCE
Merci ! Des question ?
Philippe Prados
Aurélien Rambaux
G+ http://goo.gl/xljZS
arambaux@octo.com
33
Technologies de sauvegarde
des Secrets
Remarques
Sauvegarde dans le contexte de
l'application.
Les données ne sont pas chiffrées. Elles sont
vulnérables au vol du téléphone.
SE dans la carte à puce Inaccessible aux applications
SE dans le terminal Inaccessible aux applications
Chiffrement du disque Non obligatoire. Ne protège pas de vulnérabilités
des applications ou du téléphone allumé.
KeyStore Conteneur sécurisé mais non officiel. Il peut être
modifié dans les prochaines versions d'Android.
À ce jour, le meilleur endroit où sauver les secrets.
KeyChain Gestion officielle de gestion des certificats clients.
Non disponible avant l'API 14. Nous proposons
une librairie de compatibilité pour les versions
comprise entre 7 et 14.

Mais conteúdo relacionado

Destaque

2012 année du décollage du paiement sans contact ?
2012 année du décollage du paiement sans contact ?2012 année du décollage du paiement sans contact ?
2012 année du décollage du paiement sans contact ?Frederic Renaldo
 
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...Universidad Autónoma de Barcelona
 
Presentation
PresentationPresentation
Presentationamepcfa
 
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire La recherche sur les politiques et systèmes de santé : un ancrage nécessaire
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire Emilie Robert
 
Livre blanc Linkedin, nouveau territoire de communication
Livre blanc Linkedin, nouveau territoire de communicationLivre blanc Linkedin, nouveau territoire de communication
Livre blanc Linkedin, nouveau territoire de communicationAgence Double Numérique
 
Licencias creative commons
Licencias creative commonsLicencias creative commons
Licencias creative commonsJesus Valencia
 
Prix sfr jeunes_talents_2012_-_fi.she.s
Prix sfr jeunes_talents_2012_-_fi.she.sPrix sfr jeunes_talents_2012_-_fi.she.s
Prix sfr jeunes_talents_2012_-_fi.she.sWE DO MUSIC
 
Nuevos medios para la comunicación y el periodismo
Nuevos medios para la comunicación y el periodismoNuevos medios para la comunicación y el periodismo
Nuevos medios para la comunicación y el periodismoGobernabilidad
 
Incidiendo en los presupuestos públicos para incrementar el financiamiento p...
 Incidiendo en los presupuestos públicos para incrementar el financiamiento p... Incidiendo en los presupuestos públicos para incrementar el financiamiento p...
Incidiendo en los presupuestos públicos para incrementar el financiamiento p...Gobernabilidad
 
Cfcshspecialerace2013
Cfcshspecialerace2013Cfcshspecialerace2013
Cfcshspecialerace2013genevieve38
 
déterminants possessifs
déterminants possessifsdéterminants possessifs
déterminants possessifsRuben Marques
 
Les pubs de Londres
Les pubs de LondresLes pubs de Londres
Les pubs de LondresEscrimeLiban
 
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...Universidad Autónoma de Barcelona
 
Marché saint jacques - présentation promoteur
Marché saint jacques - présentation promoteurMarché saint jacques - présentation promoteur
Marché saint jacques - présentation promoteurLouis-Alexandre Cazal
 

Destaque (20)

Rúbrica.asun
Rúbrica.asunRúbrica.asun
Rúbrica.asun
 
2012 année du décollage du paiement sans contact ?
2012 année du décollage du paiement sans contact ?2012 année du décollage du paiement sans contact ?
2012 année du décollage du paiement sans contact ?
 
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...
Comentario del Dictamen del Consejo de Garantías Estatutarias de la Generalit...
 
Presentation
PresentationPresentation
Presentation
 
Ensamble de un p cppt
Ensamble de un p cpptEnsamble de un p cppt
Ensamble de un p cppt
 
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire La recherche sur les politiques et systèmes de santé : un ancrage nécessaire
La recherche sur les politiques et systèmes de santé : un ancrage nécessaire
 
Livre blanc Linkedin, nouveau territoire de communication
Livre blanc Linkedin, nouveau territoire de communicationLivre blanc Linkedin, nouveau territoire de communication
Livre blanc Linkedin, nouveau territoire de communication
 
Le tourisme inclusif, l'approche du Centre International du Commerce
Le tourisme inclusif, l'approche du Centre International du CommerceLe tourisme inclusif, l'approche du Centre International du Commerce
Le tourisme inclusif, l'approche du Centre International du Commerce
 
Licencias creative commons
Licencias creative commonsLicencias creative commons
Licencias creative commons
 
Prix sfr jeunes_talents_2012_-_fi.she.s
Prix sfr jeunes_talents_2012_-_fi.she.sPrix sfr jeunes_talents_2012_-_fi.she.s
Prix sfr jeunes_talents_2012_-_fi.she.s
 
Projet Carrières
Projet CarrièresProjet Carrières
Projet Carrières
 
Presentacion e-Scout Fundación Balia
Presentacion e-Scout Fundación Balia Presentacion e-Scout Fundación Balia
Presentacion e-Scout Fundación Balia
 
Nuevos medios para la comunicación y el periodismo
Nuevos medios para la comunicación y el periodismoNuevos medios para la comunicación y el periodismo
Nuevos medios para la comunicación y el periodismo
 
Incidiendo en los presupuestos públicos para incrementar el financiamiento p...
 Incidiendo en los presupuestos públicos para incrementar el financiamiento p... Incidiendo en los presupuestos públicos para incrementar el financiamiento p...
Incidiendo en los presupuestos públicos para incrementar el financiamiento p...
 
Cfcshspecialerace2013
Cfcshspecialerace2013Cfcshspecialerace2013
Cfcshspecialerace2013
 
Pinterest
PinterestPinterest
Pinterest
 
déterminants possessifs
déterminants possessifsdéterminants possessifs
déterminants possessifs
 
Les pubs de Londres
Les pubs de LondresLes pubs de Londres
Les pubs de Londres
 
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...
Sobre la Recomendación de una garantía de empleo juvenil y otros medidas de f...
 
Marché saint jacques - présentation promoteur
Marché saint jacques - présentation promoteurMarché saint jacques - présentation promoteur
Marché saint jacques - présentation promoteur
 

Semelhante a PKI Android : Installer, gérer, sécuriser et utiliser un secret

Strong Authentication with PKI
Strong Authentication with PKIStrong Authentication with PKI
Strong Authentication with PKISylvain Maret
 
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...Identity Days
 
Exec protect armored office
Exec protect armored officeExec protect armored office
Exec protect armored officeNis
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...Microsoft Technet France
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...Microsoft
 
Windows 10: vers la fin des mots de passe ?
Windows 10: vers la fin des mots de passe ?Windows 10: vers la fin des mots de passe ?
Windows 10: vers la fin des mots de passe ?Microsoft Technet France
 
Sécurité Communications par Daniel Fages 25/07/2012
Sécurité Communications par Daniel Fages 25/07/2012Sécurité Communications par Daniel Fages 25/07/2012
Sécurité Communications par Daniel Fages 25/07/2012Paris Android User Group
 
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...Microsoft Technet France
 
Sécurités & Annuaires
Sécurités & AnnuairesSécurités & Annuaires
Sécurités & AnnuairesPaulin CHOUDJA
 
Sécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterSécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterOCTO Technology
 
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...Identity Days
 
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7Microsoft Technet France
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC ! SecludIT
 
OCTO - Sécurité android
OCTO - Sécurité androidOCTO - Sécurité android
OCTO - Sécurité androidOCTO Technology
 
Smart Card Logon / Biométrie / PKINIT / Match on Card
Smart Card Logon / Biométrie / PKINIT / Match on CardSmart Card Logon / Biométrie / PKINIT / Match on Card
Smart Card Logon / Biométrie / PKINIT / Match on CardSylvain Maret
 
Cours Authentication Manager RSA
Cours Authentication Manager RSACours Authentication Manager RSA
Cours Authentication Manager RSASylvain Maret
 

Semelhante a PKI Android : Installer, gérer, sécuriser et utiliser un secret (20)

Strong Authentication with PKI
Strong Authentication with PKIStrong Authentication with PKI
Strong Authentication with PKI
 
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...
Identity Days 2020 - Mettre en oeuvre AD-CS en respectant les meilleures prat...
 
Exec protect armored office
Exec protect armored officeExec protect armored office
Exec protect armored office
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
 
Windows 10: vers la fin des mots de passe ?
Windows 10: vers la fin des mots de passe ?Windows 10: vers la fin des mots de passe ?
Windows 10: vers la fin des mots de passe ?
 
Sécurité Communications par Daniel Fages 25/07/2012
Sécurité Communications par Daniel Fages 25/07/2012Sécurité Communications par Daniel Fages 25/07/2012
Sécurité Communications par Daniel Fages 25/07/2012
 
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...
Tester la sécurité de votre annuaire Active Directory : top 10 des menaces et...
 
Windows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécuritéWindows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécurité
 
Windows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécuritéWindows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécurité
 
Sécurités & Annuaires
Sécurités & AnnuairesSécurités & Annuaires
Sécurités & Annuaires
 
Sécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterSécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiter
 
Sécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francaisSécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francais
 
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...
Identity Days 2020 - Gestion des identités au sein du Modern Workplace Cas d...
 
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7
Retour d’expérience sur la prise en charge des cartes à puce dans Windows 7
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC !
 
SSL.pdf
SSL.pdfSSL.pdf
SSL.pdf
 
OCTO - Sécurité android
OCTO - Sécurité androidOCTO - Sécurité android
OCTO - Sécurité android
 
Smart Card Logon / Biométrie / PKINIT / Match on Card
Smart Card Logon / Biométrie / PKINIT / Match on CardSmart Card Logon / Biométrie / PKINIT / Match on Card
Smart Card Logon / Biométrie / PKINIT / Match on Card
 
Cours Authentication Manager RSA
Cours Authentication Manager RSACours Authentication Manager RSA
Cours Authentication Manager RSA
 

PKI Android : Installer, gérer, sécuriser et utiliser un secret

  • 1. 1 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Philippe Prados Aurélien Rambaux17 Juin 2013 Installer, gérer, sécuriser et utiliser une clef privée dans Android
  • 2. 2 Infrastructure à clés publiques Sauvegarder un certificat Partager un certificat Un scénario possible chez un client Au menu
  • 3. 3 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Qu’est-ce ? Infrastructure à clés publiques (PKI)
  • 4. 4 Fichier signé numériquement par une autorité Equivalent à une carte d’identité Authentification sur le mode « je possède » Considéré comme plus sécurisé qu’un mot de passe Sert de preuve juridique Signature basé sur du chiffrement asymétrique Qu’est-ce qu’un certificat numérique ?
  • 5. 5 Ce que je chiffre avec l’un… … je le déchiffre avec l’autre Une clé privée liée à une clé publique
  • 6. 6 Objectif d’une PKI : Authentification mutuelle forte Confidentialité Non-répudiation Pour les mobiles : Gérer l’accès à un intranet Gérer le vol de mobile Infrastructure à clés publiques (PKI)
  • 7. 7 Comment sauver un certificat dans un espace sécurisé du téléphone ? Comment résister au vol du téléphone ? Comment contrôler l’accès au certificat aux seules applications autorisées ? Comment distribuer le certificat aux terminaux Dans cette session
  • 8. 8 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Comment sauvegarder un secret dans un espace sécurisé du téléphone ? Sauver un secret
  • 9. 9 Approche traditionnelle Secure Element (SE) Chiffrement du disque Conteneur de certificats clients Android KeyChain Keystore Approche mise en œuvre en mission Comment sauvegarder un secret ?
  • 10. 10 Sauvegarder le certificat : Non chiffré sur disque Exploitable par analyse statique de disque Chiffré sur disque Mot de passe à demander encore et encore Utiliser onSaveIntanceState() ou un extra de l’Intent Gestion lourde « Accessible » sur le disque Chiffrer le disque du terminal Pas garanti Approche traditionnelle
  • 11. 11 SE : composant électronique communiquant via des trames binaires Disponible dans le terminal et/ou dans la carte SIM Avantage d’un SE : Mémorise clefs privées, accès VPN, générateurs de mots de passe à usage unique… Résiste aux attaques physiques Implémente matériellement les algorithmes standards de cryptographie (DES, AES, RSA) Secure Element (SE) 1/2
  • 12. 12 Accessible via la couche NFC mais … … impossible d’installer des application dans le SE … impossible de communiquer avec par une application classique Utilisé par Google Wallet Secure Element (SE) 2/2
  • 13. 13 Limité à l’identification VPN et Wifi (< sdk 14) Installation depuis la carte SD L’effacement du certificat n’est pas physique ! Utilise le KeyStore Android Conteneur de certificats clients
  • 14. 14 Pour les version d’Android supérieur à 14 Permet d’exploiter les certificats clients du terminal Approche officielle : KeyChain KeyChain.choosePrivateKeyAlias(this, new KeyChainCallBack() { @Override public void alias(String alias) { mAlias=alias; } }, new String[] {"RSA"}, // List of acceptable key types. null for any null, // issuer, null for any "internal.example.com", // host name of server requesting the cert 443, // port of server requesting the cert, -1 if // unavailable null); // alias to preselect, null if unavailable
  • 15. 15 La callback retourne le nom du certificat et autorise l’application à l’utiliser KeyChain… KeyChain.getCertificateChain(this, mAlias); KeyChain.getPrivateKey(this, mAlias);
  • 16. 16 Installation via API KeyChain Intent intent = KeyChain.createInstallIntent(); // Controle le nom du certificat intent.putExtra(KeyChain.EXTRA_NAME, CERT_NAME); intent.putExtra(KeyChain.EXTRA_PKCS12, out.toByteArray()); startActivityForResult(intent, RESULT_CODE);
  • 17. 17 KeyStore Protégé par un mot de passe utilisateur (version antérieure à 3.x) Lié au verrouillage du téléphone (à partir de la version 3.x) Mais pas d’API officielle ! Ça n’empêche pas de jouer avec…
  • 18. 18 Récupérer la classe android.security.KeyStore Changer le nom du package Pour le débloquer : Comment utiliser le KeyStore put(), get(), byte[] if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { context.startActivity( new Intent("android.credentials.UNLOCK")); } else { context.startActivity( new Intent("com.android.credentials.UNLOCK")); }
  • 19. 19 Simulation des API du KeyChain pour les versions antérieures (sdk < 14) Sur Github Les certificats ne peuvent être partagées entre applications Exploite le KeyStore  https://github.com/pprados/android-keychain-backport https://github.com/pprados/android-keychain-backport-androlib android-keychain-backport
  • 20. 20 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Via AccountAuthenticator Partager un certificat
  • 21. 21 Proposer un Account pour l’intranet Il porte et distribue la clé privée aux applications de confiance Le besoin
  • 22. 22 <service android:name=".CertificateAuthenticationService" android:exported="true" > <intent-filter> <action android:name="android.accounts.AccountAuthenticator" /> </intent-filter> <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/certificate_authenticator" /> </service> Le service…
  • 24. 24 Normalement utilisé pour du OAuth… … détourné pour communiquer le certificat par la mAccountManagerCallback Utilisation… mAccountManager.invalidateAuthToken(mAccountType, mAuthToken); mAccountManager.getAuthToken( mAccount, // Account retrieved using getAccountsByType() mAuthTokenType, // Auth scope mOptions, // Authenticator-specific options this, // Your activity mAccountManagerCallback, // Callback mHandler); // Callback called if an error occurs HttpsURLConnection.setDefaultSSLSocketFactory(mSocketFactory);
  • 25. 25 Dans getAuth Privilège de l’appelant public static final String KEY_CALLER_UID = (VERSION.SDK_INT>=VERSION_CODES.HONEYCOMB) ? AccountManager.KEY_CALLER_UID : "callerUid"; public static final String KEY_CALLER_PID = (VERSION.SDK_INT>=VERSION_CODES.HONEYCOMB) ? AccountManager.KEY_CALLER_PID : "callerPid"; if (options == null) return errorDenied(); int pid = options.getInt(KEY_CALLER_PID); int uid = options.getInt(KEY_CALLER_UID); if (mContext.checkPermission(PERMISSION, pid, uid) == PackageManager.PERMISSION_DENIED) return errorDenied(); }
  • 26. 26 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Un scénario possible
  • 27. 27 Enrôlement de quelques centaines de terminaux Gestion des CDD Gestion d’oubli des terminaux Grande facilité et souplesse de déploiement sans sacrifier la sécurité L’expérience utilisateur doit être la plus simple possible ! Contraintes de sécurité : un certificat pour un triplet Employé Téléphone (IMEI) SIM Objectif de la mission
  • 28. 28 Enregistrement des triplets dans le SI L’utilisateur saisi son identifiant sur le terminal C’est tout ! Il récupère son certificat (clés privée et publique) Il est protégé et partagé dans le terminal Notre approche
  • 29. 29 Requête vers le serveur avec l’identité de l’utilisateur Le serveur génère le certificat et le chiffre avec <IMEI> + <random> <random> est envoyé par SMS Le téléphone capable de déchiffrer prouve son identité (le triplet est résolu) Processus d’enrôlement
  • 31. 31 La durée de vie du certificat peut être courte (CDD) Facilité de déploiement En cas de vol, ajout du certificat client dans la CRL Un utilisateur peut avoir plusieurs devices En cas d’oubli, génération d’un certificat temporaire Pas chère ! Adaptable à la dernière version de Chrome Avantages de la solution
  • 32. 32 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2013 50, avenue des Champs-Elysées 75008 Paris - FRANCE Merci ! Des question ? Philippe Prados Aurélien Rambaux G+ http://goo.gl/xljZS arambaux@octo.com
  • 33. 33 Technologies de sauvegarde des Secrets Remarques Sauvegarde dans le contexte de l'application. Les données ne sont pas chiffrées. Elles sont vulnérables au vol du téléphone. SE dans la carte à puce Inaccessible aux applications SE dans le terminal Inaccessible aux applications Chiffrement du disque Non obligatoire. Ne protège pas de vulnérabilités des applications ou du téléphone allumé. KeyStore Conteneur sécurisé mais non officiel. Il peut être modifié dans les prochaines versions d'Android. À ce jour, le meilleur endroit où sauver les secrets. KeyChain Gestion officielle de gestion des certificats clients. Non disponible avant l'API 14. Nous proposons une librairie de compatibilité pour les versions comprise entre 7 et 14.