7
votes

Je dois * stocker des informations d'identification tierces dans ma base de données. meilleur moyen?

Mon application doit lire une URL SSL d'une tierce partie. Comment stocker le mieux les informations d'identification tierces dans ma propre base de données, qui protège les tierces pouvant être compromises? Considérez la sécurité absolue et la pratique. Haçon à sens unique Les informations d'identification ne sont pas utiles car je dois restaurer des informations d'identification au texte en clair pour l'appel SSL. J'utilise Python sur Google App Moteur et mon app authentifie avec Google Credentials.

  • chiffrer des informations d'identification en utilisant par ex. AES et sauvegarder la clé de cryptage ailleurs (déplace simplement le problème), ou Dérivez-le de la CIDÉRALES ET GARDER LE SECRET D'ALGORITHM (déplace simplement le problème)
  • chiffrer des informations d'identification à l'aide d'un chiffre de flux synchrone , dérive l'entropie (non) de Les informations d'identification et Gardez le secret d'algorithme (déplace simplement le problème)
  • sur une application Web distincte dédiée à stocker des informations d'identification tierces, fournissez une URL SSL pour recevoir les informations d'identification tierces, cette URL est accessible avec Google Critings (identique à mon application) et peut utiliser AuthSub ou quelque chose pour transférer une autorisation à la autre application Web. Cela semble plus sécurisé car il est difficile de pirater une webApp simple de manière triviale et si mon application principale complexe est compromise, les références de tiers ne sont pas exposées.

    Que pensez-vous de toutes les approches?


4 commentaires

On ne sait pas ce que tu demandes? Une URL SSL est là pour chiffrer les informations d'identification envoyées dessus.


J'ai peur de stocker les informations d'identification externes dans ma base de données


Je ne vois pas comment la troisième approche ne bouge pas le problème également. Cela vient de le déplacer vers une autre application, au lieu de la même application.


convenu, mais cela sandule la dangereuse des choses dans une application simple, beaucoup plus difficile à pirater que mes applications compliquées et buggy ... Je cherche un compromis raisonnable


4 Réponses :


2
votes

C'est une tâche difficile et aucune approche vous évitera la peine de vous assurer qu'il n'y a pas de lien faible. Pour commencer, je ne saurais pas si l'hébergement sur Google est le meilleur moyen d'y aller, car vous serez conforme au contrôle (je ne sais vraiment pas si l'App moteur est conçu avec le niveau de sécurité requis à l'esprit, vous devriez trouver que out) et ne peut probablement pas faire de test de pénétration (que vous devriez.)

Avoir une petite application distincte est probablement une bonne idée, mais cela ne vous empêche pas de devoir crypter d'une manière ou d'une autre les informations d'identification elles-mêmes dans cette application plus petite. Cela vous achète simplement votre simplicité, ce qui permet à son tour des choses plus faciles à analyser.

I Personnellement, j'essaierais de concevoir l'application afin que la clé change de manière aléatoire après chaque utilisation, ayant une sorte de APPROCHE UNE TEMPS . Vous ne spécifiez pas l'application dans suffisamment de détails pour voir si cela est réalisable.


0 commentaires

2
votes

Si vous avez besoin de stocker inversion des informations d'identification, il n'y a tout simplement aucune solution. Utilisez des AES et gardez la clé secrète sous la garde armée bien rémunérée.

Si votre utilisation de Windows, je vérifierais le credit * API Win32 (advapi32.dll), il vous permettrait au moins de vous permettre au moins de la gestion de la clé de Patch à Windows SysKey où TPM et une phrase secrète de démarrage peuvent fournir une protection contre les compromis de bas niveau (disque volé lecteurs)

Évidemment si votre application ou le contexte de sécurité dans lequel il fonctionne est compromis, aucune de ces réponses ne serait beaucoup d'aide.


0 commentaires

3
votes

Comment les informations d'identification sont-elles utilisées? Si leur utilisation n'est déclenchée que par le propriétaire d'origine (par exemple, vous stockez un numéro de carte bancaire et qu'ils font leur 2e achat), ils peuvent fournir un mot de passe à ce point qui est utilisé comme clé de cryptage. Vous n'avez alors jamais besoin de stocker cette clé localement et que le contenu de la base de données est seul est inutile à un attaquant.


1 commentaires

Les crédits sont invoqués lorsque mon application reçoit un courrier électronique (vraiment SMS) d'une adresse enregistrée, puis mon application répond à cette adresse. Donc, je suis sûr qu'ils doivent être stockés.



2
votes

Un livre décent qui couvre ce type de situation est cryptographie dans la base de données .


0 commentaires