2010-03-27 6 views
0

Hé les gars, j'ai travaillé sur un espace de noms p2p pour certains de mes programmes. J'ai créé un système pour crypter/décrypter les paquets envoyés/reçus avec la classe. J'utilisais le système de clé privée publique de base: 1) crypter les données avec le cryptage symétrique 2) crypter la clé symétrique avec RSA. Ensuite, faites le contraire lorsque vous décryptez ..Vérifiez le noeud p2p

Je me demandais cependant, comment voulez-vous vérifier si le paquet venait d'où il a dit qu'il était. J'allais utiliser un système de certificat de base (où vous crypter avec votre clé privée RSA, puis ils le décrypter avec votre clé publique), mais je ne sais pas comment faire cela avec C#. J'utilise la classe RSACryptoServiceProvider.

Est-ce que quelqu'un sait comment faire cela? Merci, Max

+2

Hm, qui se produit lorsque vous avez une seule autre question ouverte – Ben

Répondre

1

Le protocole standard pour l'envoi sécurisé de paquets est SSL/TLS. Les RFC pour TLS et DTLS (et a fix for a recent flaw) sont la voie à suivre. Ils devraient également être considérés comme une ressource pour ceux qui apprennent et qui cherchent des idées.

Il semble que vous êtes à la recherche d'un MAC. Un ensemble très efficace de primitives cryptographiques qui exécutent à la fois le chiffrement et le MACing sont les chiffrements AEAD, voir par exemple CCM et GCM modes de chiffrement par bloc.

Je ne crois pas que .NET prenne en charge les chiffrements AEAD. Vous pouvez également utiliser l'algorithme HMAC qui est pris en charge dans .NET plus lent mais parfaitement adéquat, ou vous pouvez utiliser le bouncycastle C# library qui prend en charge les chiffrements AEAD.

+0

Merci pour la réponse, mais je ne suis pas beaucoup plus d'un cryptographe, pourriez-vous « muet vers le bas » un peu pour moi;) je besoin d'un moyen pour qu'un ordinateur sache qu'un paquet provient de l'expéditeur, il le dit. Un MAC ne fonctionnerait pas (j'ai pu le comprendre pour la plupart), j'envoie déjà des hachages md5. Merci, Max – Ben

+0

Raison de plus pour utiliser une solution en conserve comme SSL. Je pense que c'est trop difficile de se calmer. Cela nécessite une étude avant d'être compris. Peut-être que quelqu'un d'autre peut faire mieux. –

+0

Je suis désolé d'avoir complètement oublié cette question, mais j'aimerais quand même une réponse. En lisant la définition d'un MAC, j'ai réalisé que ce n'était pas ce dont j'avais besoin. J'ai besoin d'un certificat, que je peux générer à partir d'une clé RSA prédéfinie (en utilisant la classe RSACryptoServiceProvider mentionnée précédemment) – Ben