Les certificats de carte à puce en C#
Comment puis-je m'assurer de je suis l'accès aux Certificats de ma carte à puce et pas la forme de mon magasin de certificats personnels en c#?
et Comment puis-je faire mon RSACryptoProvider d'utiliser ma carte à puce, clé privée du certificat?
grâce
Wally
OriginalL'auteur | 2009-02-19
Vous devez vous connecter pour publier un commentaire.
Parfois, surtout si vous n'êtes pas à l'aide de la clé par défaut le nom du conteneur sur la carte à puce (recommandé par Microsoft), les certificats ne sont pas copiés magasin de certificats local. La solution est d'utiliser l'api de chiffrement pour accéder à la clé avec KP_CERTIFICATE, construire un certificat à partir de données extraites, et lui attribuer un nouveau RSACryptoServiceProvider construit à l'aide de votre propre nom de conteneur de clé.
Le pseudo-code C# suivant:
Vous ne pouvez stocker qu'à la partie publique du certificat de quelque part, et en les comparant parties publiques du certificat n'est pas suffisant pour prouver la possession de la clé privée. Par conséquent, vous avez besoin de la clé privée de l'accès à signer quelques données et de prouver que. Crypto fournisseur de parfois de rendre disponible de la clé privée dans le magasin de certificats automatiquement et parfois pas. Dans le cas où il n'est pas c'est la façon de l'obtenir.
Il y a un article où vous avez trouvé ce type de code? Votre code est un peu incomplète avec des variables non déclarées. Où est-il un C# article qui décrit ce processus de vérification de la validité des clés privées. J'ai toujours supposé que un simple contrôle de la validité de la certification à l'aide de X509Certificate pour vérifier si le hachage est une valeur de hachage de Certificat Client peut être suffisant, mais oui, je suppose qu'il peut être truquée avec un certificat auto-signé. Toute information serait utile.
Je ne comprends toujours pas pourquoi j'aurais besoin de vérifier les clés privées. L'API de C# ne doit pas renvoyer un ClientCertificate le même que l'original du certificat utilisé lors de l'inscription, si, en fait, la ClientCertificate variable a été truquée--le déchiffrement doit provoquer un certificat non valide pour apparaître dans le Contexte.ClientCertificate.
Salut, vous voudrez peut-être lire un peu sur public-privé de la cryptographie à clé... la Comparaison de hachage de la clé publique à une autre de hachage n'est pas suffisant pour prouver l'identité de clé publique est PUBLIQUE ( désolé pour les majuscules, ne peut pas le mettre en gras ici ), et par conséquent à la disposition de quiconque pour l'interception. Pour prouver l'identité, vous devez vous inscrire morceau de données avec la clé privée (dans les faits, le cryptage de hachage avec votre clé privée). Cette signature peut être vérifiée à l'aide de votre clé publique (à l'aide de déchiffrer le hachage et de la comparer avec les données). C'est la raison pour laquelle vous avez besoin de l'accès à la clé privée. Ou j'ai mal compris votre question?
OriginalL'auteur Željko Tanović
Vous aurez besoin de passer par votre Fournisseur de Services Cryptographiques (CSP) pour votre carte à puce. Sur Windows (2000, XP, et Vista) toutes les fois que vous insérez votre carte à puce dans un lecteur de carte à puce tous les certificats sont propogated à votre magasin de certificats personnels. Votre clé privée reste sur votre carte à puce. Ce que cela signifie est que si vous utilisez votre certificat (par exemple pour signer numériquement un e-mail), vous êtes invité à insérer votre carte à puce. Si votre carte à puce nécessite un code PIN vous sera demandé à l'entrée. La raison pour cela est qu'il y a un emplacement pour les applications de rechercher pour les certificats d'utilisateur, votre magasin de certificats personnels, de sorte que les applications n'ont pas à être réécrit seulement pour gérer les certificats sur des cartes à puce.
OriginalL'auteur Craig Delthony