2012-05-14 1 views
2

Scénariotransfert de clé asymétrique pour Symmetric Vs chiffrement et signature sur appareil mobile

Un service Web SOAP fournit une interface pour récupérer des documents et des données. La sécurité est primordiale. WS-Security est utilisé et le client et le serveur chiffrent et signent l'intégralité de l'enveloppe SOAP.

Questions

Si la clé privée utilisée pour la signature être compilés dans l'application et stockées sur l'appareil ou doit-il fourni par le serveur en utilisant un protocole d'échange de clés (peut-être après l'authentification de l'utilisateur)?

La clé privée pour le décryptage doit-elle être stockée sur l'appareil ou fournie par le serveur?

Est-il réaliste d'avoir une clé unique pour chaque fichier qui doit être décrypté par le serveur (en cas de téléchargement depuis le client) ou décrypté par le client (en cas de téléchargement depuis le serveur)?

Répondre

1

Juste quelques suggestions:

-Vous devez considérer des clés symétriques intégrées dans quoi que ce soit en dehors de votre serveur en raison du public à l'ingénierie inverse (à savoir ne se soucient même pas chiffrer si la clé est dans la nature). -Vous devez utiliser une clé symétrique par session générée par un GNA sécurisé sur le client et transmise au serveur crypté avec la clé publique asymétrique globale. Les clés privées ont une durée de conservation. -Vous pouvez utiliser la clé de session pour tous les fichiers/flux transférés dans cette session, mais vous devez utiliser un code unique pour désactiver le chiffrement à clé symétrique pour chaque fichier. En fonction du mode de cryptage, l'utilisation de la même clé/nonce avec plusieurs flux peut vous rendre vulnérable à XOR sur les deux flux et récupérer un résultat condensé mais non crypté.

0

Le concept entier d'une clé privée est détruit s'il doit être transmis d'un périphérique à un autre. Chaque extrémité du canal de communication doit générer ses propres clés privées. Notez que cela ne signifie pas la compilation de clés privées dans un exécutable, car alors tout le monde avec l'exécutable partage une clé privée, ce qui n'est évidemment pas ce que vous voulez. Chaque périphérique doit utiliser un cryptographically secure source of random numbers pour générer sa propre paire de clés publique/privée. Les clés publiques peuvent ensuite être échangées en clair, vous pouvez les utiliser pour échanger des clés de session (qui peuvent être uniques pour chaque fichier), des clés privées peuvent être signées, et tout le monde est content. Mais rappelez-vous: Jamais, jamais des clés privées de code dur, et jamais, jamais les partager avec quelqu'un.

+0

Existe-t-il des bibliothèques standard pour iOS qui fournissent des nombres aléatoires cryptographiquement sécurisés ou fournissent une génération de paires de clés? Un rapide Google (https://www.google.co.uk/search?ix=aca&sourceid=chrome&ie=UTF-8&q=ios+private+key+pair+generation) n'a pas montré beaucoup. – Jack

+1

Je n'ai jamais fait de développement iOS, mais [this] (http://developer.apple.com/library/ios/#documentation/Security/Conceptual/Security_Overview/CryptographicServices/CryptographicServices.html#//apple_ref/doc/uid/TP30000976-CH3-SW1), et plus précisément [this] (http://developer.apple.com/library/ios/#documentation/Security/Reference/RandomizationReference/Reference/reference.html#//apple_ref/doc/uid/TP40007281) ressemble à ce dont vous avez besoin. –

Questions connexes