Comment effectuer l'épinglage SSL dans les applications iOS
Publié: 2020-02-24Dès que les gens sortent de chez eux, ils partent à la recherche de réseaux Wi-Fi ouverts . Qu'ils attendent à l'aéroport ou qu'ils soient assis dans un café, l'objectif principal est de trouver une connexion Wi-Fi ouverte .
Effrayé, les pirates sont également sur la même quête. Eux aussi attendent que les utilisateurs lancent une demande de connexion sur le réseau ouvert avant de mettre leur cerveau de phishing en marche et de les priver de leurs données sensibles ou pire, de l'argent de leur compte bancaire.
Bien que HTTPS soit efficace dans une certaine mesure, il s'agit d'un protocole SSL qui est connu pour sécuriser les utilisateurs en étant incassable et largement sécurisé. Mais les attaques Man-In-The-Middle (MITM) ont également trouvé des moyens de contourner cela.
C'est là que la technique SSL Pinning entre en jeu comme l'une des meilleures pratiques de sécurité des applications mobiles . En ce qui concerne spécifiquement les plates-formes, il s'agit de la solution de sécurité idéale pour les applications iPhone qui fait un travail incroyable pour résoudre le problème.
Dans cet article, nous allons examiner les types et les processus d'intégration de l'épinglage SSL dans les applications iOS pour empêcher ces attaques Man In The Middle. Un processus qui fait partie intégrante de la pratique de test de sécurité mobile de l'OWASP .
Types de méthode d'épinglage des certificats SSL
Il existe principalement deux méthodes pour le test d'épinglage SSL, comme indiqué ci-dessous :
- Épingler le certificat - Vous pouvez télécharger le certificat du serveur et les regrouper dans l'application. Lors de l'exécution, l'application compare le certificat du serveur à ceux que vous avez intégrés.
- Épingler la clé publique – Vous pouvez récupérer la clé publique du certificat dans le code sous forme de chaîne. Lors de l'exécution, l'application compare la clé publique du certificat à celle qui est codée en dur dans le code.
Le choix entre les deux méthodes iOS d'épinglage SSL dépend de la configuration de votre serveur et de vos besoins individuels. Lorsque vous choisissez la première option, vous devrez télécharger l'application lorsque le serveur changera de certificat ou elle cessera de fonctionner. Lorsque vous choisissez la deuxième option, vous risquez d'enfreindre la politique de rotation des clés car la clé publique ne changera pas.
Examinons maintenant les étapes pour implémenter l'épinglage SSL dans votre application iOS.
*Remarque : Les étapes mentionnées ci-dessous suivent le processus d'épinglage de certificat iOS avec Swift.
Comment implémenter l'épinglage SSL dans votre application iOS
1. NSURLSession
Dans le cas de NSURLSession, la principale méthode de gestion de l'épinglage SSL est URLSession:didReceiveChallenge:completionHandler:delegate. Les développeurs devront définir la classe pour qu'elle soit conforme URLSessionDelegate et coller cette fonction dans la classe :
La fonction « demanderait des informations d'identification au délégué en réponse à une demande d'authentification du serveur distant ». Le développeur de l'application iPhone comparera ensuite les certificats du serveur avec celui enregistré dans l'ensemble d'applications. Si les deux certificats sont trouvés identiques, l'authentification le laissera passer et le client pourra se connecter au serveur.
2. Épinglage du certificat Alamofire
Alamofire est l'une des bibliothèques les plus célèbres pour la mise en réseau HTTP en langage Swift. Il est livré avec la fonctionnalité intégrée pour l'épinglage SSL dans iOS Swift et est extrêmement facile à utiliser. Voici comment créer une application iOS sécurisée avec l'épinglage de certificat Alamofire.
Problèmes courants associés à la mise en œuvre de l'épinglage SSL et comment les résoudre
Les experts en assurance qualité des agences de développement d'applications réputées testent régulièrement les applications mobiles pour détecter les vulnérabilités de sécurité, y compris la pénétration complète du réseau. Mais il existe de nombreuses agences de test d'applications qui ne se concentrent pas sur ces domaines avec le même enthousiasme. Ils semblent réticents lors de la mise en œuvre de cette solution de sécurité iPhone particulière dans leurs applications.
Voici quelques-unes des raisons courantes derrière cela -
- L'un des plus gros inconvénients de l' épinglage SSL dans l'application iOS est sa mise en œuvre. Le processus est complexe et peut forcer les développeurs à écrire le code encore et encore et compliquer le processus de création d'applications .
- L'épinglage des certificats SSL iOS qui sont susceptibles de changer régulièrement peut obliger les développeurs à mettre à jour le fichier binaire de l'application à chaque changement de certificat.
- De multiples efforts doivent être déployés pour protéger les moyens de contourner la vérification SSL iOS.
Notant les répercussions que l'absence de la scène peut entraîner, voici comment certains pièges courants sont évités par une société de développement d'applications iPhone fiable .
Tester la broche
Contrairement aux tests d'application réguliers où vous testez si tout fonctionne ou non, la méthode du test d'épinglage SSL consiste à vérifier si quelque chose échoue. Vous devrez vous concentrer sur le test que l'application annule les connexions potentiellement compromises. Si l'application permet la communication avec un seul point de terminaison, le test sera aussi simple que d'envoyer la requête GET à un état arbitraire. Idéalement, dans ce cas, l'application doit annuler la connexion et la demande doit échouer.
Gérer le changement de certificat
Le renouvellement d'un certificat de domaine conserve la paire de clés publique/privée, mais ce n'est pas toujours le cas. Mais si vous planifiez correctement le cycle de mise à jour, vous pourrez éviter les temps d'arrêt pour les utilisateurs finaux.
Avant que le certificat SSL iOS ne soit activé sur le site Web, vous devez l'épingler dans l'application, en plus du certificat actuellement actif, puis publier une mise à jour. Lorsque nous suivons cette étape chez Appinventiv pour créer une application iOS sécurisée , nous effectuons temporairement un test rapide avec le nouveau certificat et testons l'application avec les deux certificats épinglés.
FAQ sur l'épinglage SSL dans les applications iOS
1. Où stocker les données sensibles dans une application iOS ?
Les données sensibles de l'application doivent toujours être stockées dans iCloud ou Keychain dans iOS ou même dans la base de données après un cryptage approprié.
2. Comment fonctionne SSL ?
L'épinglage SSL est l'un des conseils de sécurité des applications iOS les plus courants . Mais pour comprendre ce que cela signifie, vous devez d'abord savoir comment fonctionne SSL.
- Un navigateur tente de se connecter à un site Web sécurisé par SSL. Le navigateur demande alors au serveur Web de s'identifier.
- Le serveur Web envoie alors au navigateur sa copie du certificat SSL.
- Le navigateur vérifie si le certificat SSL doit être approuvé. Si c'est possible, un message est envoyé au serveur Web.
- Le serveur Web renvoie alors un accusé de réception pour commencer la session cryptée SSL.
- Les données cryptées sont ensuite finalement partagées entre le navigateur et le serveur Web.
Mettre fin aux pensées
Bien que l'épinglage SSL soit considéré comme sécurisé et largement utilisé chaque fois que le chiffrement est nécessaire, une autre couche de protection est toujours la bienvenue lors de la création d'applications à haut risque. L'épinglage SSL vous permet de vérifier l'identité du serveur en plus de la vérification de la chaîne de confiance SSL.
Avec l'épinglage SSL, vous pouvez refuser toutes les connexions sauf celles avec le serveur désigné dont nous avons enregistré le certificat SSL dans notre bundle local. Un inconvénient potentiel est que vous devez mettre à jour l'application chaque fois que la clé SSL du serveur est modifiée.
Si vous envisagez également de lancer une application iOS avec épinglage SSL, consulter la meilleure société de développement d'applications iOS peut être un bon début .