Question

Je dois établir une connexion SSL 2 voies HTTPS de mon application iPhone au serveur du client. Cependant, je ne vois aucun moyen sûr de livrer les certificats côté client à l'application (il est une application e-banking, donc la sécurité est vraiment un problème). D'après ce que je l'ai trouvé à ce jour la seule façon que l'application serait en mesure d'accéder au certificat est de fournir une pré-bundeled avec l'application elle-même, ou d'exposer une URL à partir de laquelle il pourrait être tiré par les cheveux (IPhone application avec certs SSL client ).

La chose est que ni de ces deux façons d'éviter une tierce partie pour obtenir le certificat, qui si elle est acceptée comme un risque élimine le besoin de SSL 2 voies (puisque tout le monde peut avoir le certificat client).

L'ensemble du Protocole de sécurité devrait ressembler à ceci:
- HTTPS 2 voies SSL pour authentifier l'application
- OTP (jeton) enregistrement de l'utilisateur sur la base (paire de clé côté client généré au niveau de cette étape)
- SOAP / XML-Signature WSS (demandes signées par les clés générées précédemment)

Toute idée sur la façon d'établir la première couche de sécurité (HTTPS)?

Était-ce utile?

La solution

Ok, donc de répondre à ma propre question ...

Il est avéré que la sécurité n'a pas d'échelle de mesure fixe. Les exigences de sécurité sont satisfaits tant que le prix pour le freinage du système est nettement supérieur au prix que l'on pourrait obtenir pour le faire.

Dans ma situation, nous parlons de système e-banking, mais avec un peu de faibles limites mensuelles (quelques milliers de dollars). Comme je l'ai mentionné dans ma question il y aurait une autre couche de sécurité au-dessus du HTTPS qui mettra en vedette WSS XML Signatures. Le processus d'enregistrement de l'utilisateur et l'acceptation de la sa clé publique est également fait en plusieurs étapes. Dans la première étape, l'utilisateur envoie son numéro de téléphone avec une morue récupérée en quelque sorte de mon client. Ensuite, un SMS est envoyé à l'utilisateur avec un code de confirmation. L'utilisateur entre le code de confirmation dans un calculateur OTP qui produirait le code OTP qui identifiera l'utilisateur. Ensuite, la clé publique est envoyée au serveur ensemble avec le code OTP. De là, à chaque demande serait signée par la contrepartie privée de la clé publique envoyée au plus tôt le serveur.

Alors la plus grande faiblesse de l'ensemble du processus est celle d'un reverse engineering l'application et récupère le certificat client utilisé pour la SLL. Le seul problème découlant de ce que quelqu'un pourrait observer les opérations des utilisateurs. Toutefois, pour quelqu'un pour faire une transaction dont il aurait besoin clé privée, qui est généré, crypté et stocké dans le trousseau de l'utilisateur. Et le prix pour freiner ce niveau de sécurité est très élevé.

Nous réfléchirons en plus sur la façon de protéger les données des utilisateurs à un niveau supérieur (par exemple en utilisant WSS chiffrement), mais pour la chose début I nous sommes bien avec la solution actuelle.

une opinion?

ce qui a trait

Autres conseils

https ne fonctionne pas vraiment de cette façon. En un mot, vous connectez à un serveur sécurisé où les certificats sont signés par une autorité bien connue.

Si vous utilisez des classes Apples (iPhone) pour cela, ils n'acceptera des certificats « de bons ». En bien, je veux dire ce que Apple considère comme acceptable. Si vous ne les utilisez pas (il existe des alternatives dans le SDK), vous ne serez pas en mesure de se connecter (sauf, peut-être, dans le cas où vous avez des développeurs une « entreprise » licence - mais je ne peux pas dire que, avec 100% de certitude que je ne l'ai pas assez regardé cette licence pour être sûr)

Pour continuer, utilisez votre connexion https à votre site Web signé correctement et instituer une sorte de connexion avec construit dans le nom d'utilisateur / mot de passe, ou un défi / réponse en fonction de l'identifiant unique de l'iPhone (par exemple) et échanger des clés à l'aide cette connexion.

Notez que cela signifie que votre application aura à la requête de nouveaux certificats à (chaque connexion / toutes les connexions X / tous les mois / Application des intervalles spécifiés) pour les maintenir à jour. Vous pouvez ensuite utiliser ces certificats pour se connecter au serveur plus sécurisé.

[modifier]

Vérifier ce post - peuvent avoir plus d'informations sur ce que vous êtes demandant de faire

[/ edit]

[Edit2]

S'il vous plaît noter que la demande est iphone, pas OSX - approbation app store est un problème

[/ Edit2]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top