J'ai creusé ces derniers jours au stockage des données sensibles. Si je stocke ces données dans une base de données, je pense que la pratique générale acceptée est de stocker des données sensibles cryptées, pour diverses raisons hors de la portée de cette question.
Cependant, les données de cryptage signifie que je dois gérer les "secrets" à ces données. J'ai vu 2 chemins principaux pour cela (dans le Java World), des clés ou des HSMS. Ma première question est, existe-t-il d'autres alternatives valides (dans le Java= World)?
Il existe plusieurs formats de kingstore que je peux utiliser en Java, pour n'en nommer que quelques-uns:
J'ai vu très peu d'informations sur la sécurité d'un magasin de clés. J'ai pensé que j'avais accès à un keyStore et quand je regarde le Java API car tous les clés sont protégés par un mot de passe, je pourrais simplement brute la force du magasin de clé, aussi bien sûr C'est. La deuxième question devient alors que cela est-il généralement accepté de pratique que, étant donné que les clés sont sur différents systèmes que les données cryptées et, car elles sont protégées par mot de passe, cela est "assez sécurisé" pour les conditions de vie réelles? Qu'en est-il du stockage du Mot de passe au magasin de clés? Y a-t-il des pratiques acceptées là-bas? Par exemple, le stocker dans un autre système? L'avoir entré manuellement sur le démarrage de l'application? L'avoir dans un fichier protégé par le système d'exploitation où seule l'application a lu accès à celui-ci?
La prochaine question concerne HSMS. Depuis que je peux brutter les clés de force, ce qui m'empêche de faire exactement la même chose à un HSM? Temps? Devoir être connecté au système distant car il n'y a pas de fichier pour moi de copier et de travailler à distance?
La dernière question est que quelqu'un a une idée de ce qui est considéré comme suffisamment sûr en termes de gestion secrète? Je suppose que cela varie en fonction du type d'information crypté avec le secret. De ce que j'ai lu ailleurs, KeyStores semble assez bon pour que la plupart des scénarios typiques et HSMS soient nécessaires dans des scénarios très de niche, pour les CAS, les gouvernements et similaires.
Toute idée appréciée.
De manière générale, les principaux magasins ne sont que des "formats" différents pour stocker des clés et des métadonnées. À ma connaissance, il n'y a aucune différence de sécurité majeure entre eux. Pensez-y comme quelque chose de similaire à coder une image comme JPEG ou PNG ou GIF. Différences subtiles, mais finalement, elles stockent des images.
Vous avez à juste titre choisi des parties du problème de la gestion clé en général et j'espère que vous commencerez à apprécier pourquoi cela pourrait être compliqué. Vous avez donc crypté des données avec une clé, la clé stockée à l'intérieur du magasin de clés, protégée avec une phrase secrète, la phrase secrète stockée ... vous voyez où cela va? À la fin de cette chaîne, il y a une information relativement petite que si vous l'obtenez - vous pouvez à peu près casser toute la chaîne. Cela vous donnera probablement accès à toutes les données. De même, même si vous résolvez ce problème particulier, la clé du cryptage/du déchiffrement/la signature doit être Utilisé. c'est-à-dire chargé dans un programme qui l'utilise pour gérer les données. Lorsqu'il est chargé dans la mémoire, il est à certains égards accessible à la CPU et potentiellement d'autres programmes fonctionnant sur les mêmes systèmes. Si l'un d'entre eux est compromis, votre clé peut être extraite de la mémoire. Même s'il est stocké sous forme cryptée.
Ceci est plus ou moins où HSMS entrez. Sans HSM, vous êtes limité de votre capacité à stocker des clés de manière sécurisée, et de pouvoir effectuer des opérations cryptographiques en mémoire sans exposition de la clé. HSMS 'Masquer' La clé d'un stockage (généralement physiquement protégé) et effectuez des opérations de crypto à l'intérieur de cette zone protégée. Ils fonctionnent de manière à empêcher l'accès des autres programmes ou du système d'exploitation. Tous ceux qui voient sont l'entrée/la sortie de ce HSM. HSMS varie également en termes de niveau d'assurance qu'ils fournissent. FIPS-14 est l'une des normes couvrant différents niveaux d'assurance/résilience. Certains HSMS offrent également un certain degré de gestion clé/autorisation pour vous. Par exemple, ils peuvent "accorder" de cryptage à certains utilisateurs, mais d'autres utilisateurs seront également en mesure de déchiffrer des données. Ils peuvent limiter le nombre d'opérations de crypto par utilisateur/groupe, et ils peuvent être configurés pour verrouiller après plusieurs tentatives infructueuses. C'est quelque chose que pas de keyStore ne peut faire.
Donc, tandis que vous avez raison de noter que les clés (et les opérations de cryptographie en mémoire) sont généralement "assez bonnes". Dans certaines circonstances, il pourrait être préférable d'utiliser quelque chose encore plus sûr. Tout dépend de la valeur des données, du niveau perçu de la protection actuelle, du coût d'une protection supplémentaire à l'aide de logiciels uniquement, à l'aide de HSM ou d'autres outils, ainsi que le profil de menace pour ces données (qui le souhaite, à quel point ils sont capables, combien vont-ils investir pour le faire etc.).