Tout d'abord, je ne me considérerais pas comme un expert en sécurité, mais j'ai été en mesure de répondre à cette question. Ce que j'ai découvert m'a un peu surpris: il n'existe pas de système complètement sécurisé . Eh bien, je suppose qu'un système complètement sécurisé serait celui où les serveurs sont tous éteints :)
Quelqu'un qui travaillait avec moi à l'époque a décrit la conception d'un système sécurisé en termes d' élever la barre aux intrus. Ainsi, chaque couche de sécurisation diminue la possibilité d'une attaque.
Par exemple, même si vous pouviez parfaitement sécuriser la clé privée, le système n'est pas complètement sécurisé. Mais, utiliser correctement les algorithmes de sécurité et être à jour avec les correctifs relève la barre. Mais, oui, un super ordinateur suffisamment puissant et disposant de suffisamment de temps peut casser le chiffrement. Je suis sûr que tout cela est compris, je vais donc revenir à la question.
La question est claire, je vais donc essayer d'aborder chacun de vos points:
Supposons que la clé est protégée par le modèle de sécurité du système de fichiers; mais qu'en est-il des superutilisateurs (malveillants) ou des plateformes qui n'offrent pas une telle fidélité?
Oui, si vous utilisez quelque chose comme Windows Key Store ou une clé privée TLS chiffrée par mot de passe, vous êtes exposé aux utilisateurs qui ont le mot de passe (ou l'accès) aux clés privées. Mais je pense que vous conviendrez que cela met la barre plus haut. Les listes de contrôle d'accès du système de fichiers (si elles sont implémentées correctement) offrent un assez bon niveau de protection. Et vous êtes en mesure de vérifier personnellement et de connaître vos super utilisateurs.
Ou la clé est codée en dur dans des binaires logiciels, mais elle pourrait toujours être décompilée et qu'en est-il des logiciels open source ou du code interprété?
Oui, j'ai vu des clés codées en dur dans les binaires. Encore une fois, cela élève un peu la barre. Quelqu'un qui attaque ce système (s'il s'agit de Java) doit comprendre que Java produit du code d'octets (etc.) et doit comprendre comment le décompiler et le lire. Si vous utilisez un langage qui écrit directement dans le code machine, vous pouvez voir que cela élève la barre un peu plus haut. Ce n'est pas une solution de sécurité idéale, mais pourrait fournir un certain niveau de protection.
Si la clé est générée, un tel algorithme devrait être déterministe (vraisemblablement), puis le même problème s'applique à la graine.
Oui, essentiellement, l'algorithme devient alors les informations de clé privée pour créer la clé privée. Il faudrait donc maintenant le protéger.
Donc, je pense que vous avez identifié un problème central avec toute politique de sécurité, la gestion des clés . La mise en place d'une politique de gestion des clés est essentielle pour fournir un système sécurisé. Et, c'est un sujet assez large .
La question est donc de savoir à quel point votre système (et, par conséquent, la clé privée) doit-il être sécurisé? À quelle hauteur, dans votre système, la barre doit-elle être relevée?
Maintenant, si vous êtes prêt à payer, il y a des gens qui proposent des solutions. Nous avons fini par utiliser un HSM (Hardware Security Module) . Il s'agit essentiellement d'un serveur inviolable qui contient une clé matérielle. Cette clé peut ensuite être utilisée pour créer d'autres clés utilisées pour le chiffrement. L'idée ici est que (si elle est configurée correctement), la clé ne quitte jamais le HSM. Coût HSM beaucoup . Mais dans certaines entreprises (la protection des données de carte de crédit, disons), le coût d'une violation est beaucoup plus élevé. Donc, il y a un équilibre.
De nombreux HSM utilisent des cartes-clés de maintenance et d'administration des fonctionnalités. Un quorum de cartes-clés (5 sur 9, disons) doit être physiquement inséré dans le serveur afin de changer une clé. Ainsi, cela élève la barre assez haut en n'autorisant une brèche que si un quorum de super utilisateurs collusion.
Il existe peut-être des solutions logicielles qui offrent des fonctionnalités similaires à un HSM, mais je ne suis pas au courant de ce qu'elles sont.
Je sais que cela ne fait que répondre à la question, mais j'espère que cela vous aidera.