rosalba

Il blog di Rosalba Fiore [Microsoft Certified Trainer]
posts - 398, comments - 583, trackbacks - 4693

My Links

News

Article Categories

Archives

Post Categories

Image Galleries

Al primo posto

Alcune delle Donne Attive

Alcuni dei ferri del mestiere di una MCT

Certificazioni Informatiche

elearning...funziona solo in alcuni casi!!!

Eventi

Gli MCT nel mondo

La mia zone

Link tecnici

Link un pò così

Panoramica altre Community

Post-it Articoli e post di MCT, MVP ect

Windows Vista

[70-340] RSA

In questo post non mi soffermerò sulla crittografia asimmetrica, ricordo solo che  il principio ha una solida base matematica che lo giustifica. Il primo e più famoso algoritmo è l'RSA dalle iniziali di Ron Rivest, Adi Shamir e Len Adleman del MIT. Storicamente prima di essere brevettato dal MIT fu ideato dal matematico britannico Clifford Cocks (piccola nota a margine.. le scoperte matematiche pure non possono essere brevettate sono considerate patrimonio dell'umanità..) quindi io lo chiamerei CRSA...

La classe del .Net che si occupa di tutte queste problematiche è l'AsymmetricAlgorithm e della quale ne abbiamo due implementazioni:

  • RSACryptoServiceProvider: q uesta è proprio l'implementazione dell'algoritmo RSA. Ha alcune proprietà caratteristiche che si occupano del get e del set:
    • PersistKeyInCsp
    • UseMachineKeyStore
  • DSACryptoServiceProvider

Tra i metodi della RSACryptoServiceProvider c'è la FromXmlString che ci permette d'importare la key pair da una stringa XML.

Bello l'XML ma  Microsoft ci avvisa che:

"Mantenere una stringa XML contenente una chiave privata in una posizione non protetta è una minaccia alla protezione. La protezione dell'applicazione può essere compromessa se una terza parte non autorizzata può accedere alla chiave privata. Per mantenere una chiave privata in modo sicuro, utilizzare un contenitore di chiavi protetto. Per ulteriori informazioni sul mantenimento delle chiavi private in un contenitore di chiavi, vedere Procedura: archiviare chiavi asimmetriche in un contenitore di chiavi"

 

Ma come "inviamo al mondo" la nostra chiave pubblica ...

RSACryptoServiceProvider mrsa=new RSACryptoServiceProvider();

RSAParameters publicKey=mrsa.ExportParameters(false);

(nota abbiamo il FromXmlString ci sarà anche contrario... certo

RSACryptoServiceProvider.ToXmlString(true);)

 

Rapidamente vediamo ( i dettagli nella procedura indicata sopra) che una volta create le chivi private occorre aggiungere:

  • un oggetto CspParameters
  • specificare la proprietà CspParameters.KeyContainerName
  • passare al RSACryptoServiceProvider il CspParameters creato
  • e settare a true la proprietà PersistKeyInCsp dell'istanza del RSACryptoServiceProvider

Vista l'ora vado a dormire ...la prossima volta vedremo qualcosa sul data padding

Print | posted on venerdì 18 maggio 2007 01:12 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET