Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

CAPICOM One

Geschrieben von: Christoph Wille
Kategorie: Sicherheit

Relativ unbemerkt hat Microsoft im Vorjahr CAPICOM - einen COM Client für das CryptoAPI - im "Windschatten" von Windows XP released. Dabei handelt sich um ein Set sehr nützlicher kryptographischer Komponenten, die in jeder Programmiersprache mit Automation Unterstützung verwendet werden können - von Visual Basic bis hin zur kleinen Verwandtschaft in ASP, VBScript.

CAPICOM bietet Komponenten zur Ver- und Entschlüsselung (in der Version 1.0 sind nur symmetrische Algorithmen mit dabei), Komponenten zur Signierung von Daten und der bequemen Handhabung von Zertifikaten (mit und ohne User Interface, je nach Wunsch). Im heutigen Artikel beschränke ich mich auf Ver- und Entschlüsselung, da dies speziell für ASP ein größeres Anwendungsgebiet findet.

Installation

Der erste Schritt ist der Download des CAPICOM Redistributables als Teil des Platform SDK's. Von der Downloadseite holen wir uns ein selbstextrahierendes Archiv, das die Datei capicom.dll im x86 Unterverzeichnis des Zielverzeichnisses speichert. Diese capicom.dll kopiert man in system32 Verzeichnis, und führt dann noch folgenden Befehl aus:

regsvr32 capicom.dll 

Wenn man Anwendungen verteilt, kann man diese DLL in das Setup aufnehmen, und am Zielrechner automatisch registrieren lassen.

Verschlüsseln von Daten

CAPICOM ist erfolgreich installiert - nun heißt es, sich mit den neuen Komponenten vertraut zu machen. Was ist da besser, als ein kleines Beispiel zu programmieren: es soll Text mit Triple-DES verschlüsseln, und an den Client ausgeben. Daß dies wirklich leicht implementiert werden kann, zeigt der Sourcecode von encrypt.asp:

<%
Const CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0 ' Use RSA RC2 encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1 ' Use RSA RC4 encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_DES = 2 ' Use DES encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. 

strTestMessage = "Hello World!"
strPassphrase = "A#0x?\$dE<"	' NIEMALS die Passphrase "herumliegen" lassen

Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData")
xEncrypt.Content = strTestMessage
xEncrypt.SetSecret strPassphrase
xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_3DES
strEncryptedMsg = xEncrypt.Encrypt()

Response.Write strEncryptedMsg
%>

Zuerst erstellt man das Objekt, weist den zu verschlüsselnden Text der Eigenschaft Content zu, setzt das Secret mittels SetSecret Methode, und dann müßte man nur noch Encrypt aufrufen. Um festzulegen, mittels welchem Algorithmus verschlüsselt wird, bedient man sich der Algorithm Eigenschaft, die ein gleichnamiges Objekt liefert, das die Name Eigenschaft besitzt - und hier kann man dann aus vier Algorithmen wählen: RC2, RC4, DES und Triple-DES.

Wer jemals in das normale C API des CryptoAPI hineingeschnuppert hat, der wird ob der leichten Verwendbarkeit entzückt sein. Und es wird auch nicht schwieriger, wenn man einstellen will, welche Schlüssellänge für den jeweiligen Algorithmus verwendet werden soll. Ein paar Konstanten mehr, sonst nichts, wie der Code in highencpack.asp demonstriert:

<%
Const CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0 ' Use RSA RC2 encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1 ' Use RSA RC4 encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_DES = 2 ' Use DES encryption. 
Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. 

Const CAPICOM_KEY_LENGTH_MAXIMUM = 0 ' Use the maximum key length available...
Const CAPICOM_KEY_LENGTH_40_BITS = 1 ' Use 40-bit keys. 
Const CAPICOM_KEY_LENGTH_56_BITS = 2 ' Use 56-bit keys if available. 
Const CAPICOM_KEY_LENGTH_128_BITS = 3 ' Use 128-bit keys if available 

strTestMessage = "Hello World!"
strPassphrase = "A#0x?\$dE<"	' NIEMALS die Passphrase "herumliegen" lassen

Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData")
xEncrypt.Content = strTestMessage
xEncrypt.SetSecret strPassphrase

' Key lengths for DES and 3DES encryption are standard and the key length 
' property is ignored when these algorithms are used. 
xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4
xEncrypt.Algorithm.KeyLength = CAPICOM_KEY_LENGTH_128_BITS

strEncryptedMsg = xEncrypt.Encrypt()

Response.Write strEncryptedMsg
%>

Entschlüsseln

Fast selbstverständlich funktioniert das Entschlüsseln ähnlich einfach wie das Verschlüsseln. Der Unterschied ist, daß man die Funktion Decrypt mit dem Ciphertext "füttern" muß, und bei der Content Eigenschaft kommt dann der Plaintext wieder heraus (decrypt.asp):

<%
Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. 

strCipherText = "MGoGCSsGAQQBgjdYA6BdMFsGCisGAQQBgjdYAwGgTTBLAgMBAAACAmYDAgIAwAQI" & vbCrlf & _
   "JZjDl4H5hRIEEOdot2WroaM35Vr5FVAl/e8EIL7qaJJeuMBQC4625aKdH8u8hgd5" & vbCrlf & _
   "rsyBD3jAok7fbdCG"

strPassphrase = "A#0x?\$dE<"	' NIEMALS die Passphrase "herumliegen" lassen

Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData")
xEncrypt.SetSecret strPassphrase
xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_3DES
xEncrypt.Decrypt(strCipherText)
strPlainText = xEncrypt.Content

Response.Write strPlainText
%>

Zur Auflösung - es kommt natürlich "Hello World!" beim Client an.

Schlußbemerkung

Ver- und Entschlüsseln ist nur ein Feature von CAPICOM - ein sehr nützliches. Für eine Besprechung der weiteren Features empfehle ich die Links am Ende dieses Artikels.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Aber bitte mit Rijndael
Benutzerverwaltung leicht gemacht: Teil 1
Passwörter mit SHA1 absichern
Passwörter speichern - aber richtig!
PGP-Verschlüsselung bei Dateien
Unknackbare Verschlüsselung mit Onetime Pads
Ver- und entschlüsseln von Texten mit PGP

Links zu anderen Sites

CAPICOM Dokumentation
Introducing CAPICOM
Platform SDK Redistributable: CAPICOM 1.0A

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.