Posts mit dem Label Cryptography werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Cryptography werden angezeigt. Alle Posts anzeigen

Mittwoch, 29. Oktober 2008

Freie Cryptography API

Eine freie Cryptography API, inkl. OpenPGP, ohne jegliche Lizenzeinschränkungen mit der Ausnahme das License Informations File weiterzugeben. Hört sich zu gut an um wahr zu sein? :)

The Legion of the Bouncy Castle - Bouncy Castle Cryptography API

Features:
  • Generation and parsing of PKCS-12 files.
  • X.509: Generators and parsers for V1 and V3 certificates, V2 CRLs and attribute certificates.
  • PBE algorithms supported by PBEUtil: PBEwithMD2andDES-CBC, PBEwithMD2andRC2-CBC, PBEwithMD5andDES-CBC, PBEwithMD5andRC2-CBC, PBEwithSHA1andDES-CBC, PBEwithSHA1andRC2-CBC, PBEwithSHA-1and128bitRC4, PBEwithSHA-1and40bitRC4, PBEwithSHA-1and3-keyDESEDE-CBC, PBEwithSHA-1and2-keyDESEDE-CBC, PBEwithSHA-1and128bitRC2-CBC, PBEwithSHA-1and40bitRC2-CBC, PBEwithHmacSHA-1, PBEwithHmacSHA-224, PBEwithHmacSHA-256, PBEwithHmacRIPEMD128, PBEwithHmacRIPEMD160, and PBEwithHmacRIPEMD256.
  • Signature algorithms supported by SignerUtilities: MD2withRSA, MD4withRSA, MD5withRSA, RIPEMD128withRSA, RIPEMD160withECDSA, RIPEMD160withRSA, RIPEMD256withRSA, SHA-1withRSA, SHA-224withRSA, SHA-256withRSAandMGF1, SHA-384withRSAandMGF1, SHA-512withRSAandMGF1, SHA-1withDSA, and SHA-1withECDSA.
  • Symmetric key algorithms: AES, Blowfish, Camellia, CAST5, CAST6, DESede, DES, GOST28147, HC-128, HC-256, IDEA, ISAAC, NaccacheStern, Noekeon, RC2, RC4, RC5-32, RC5-64, RC6, Rijndael, Salsa20, SEED, Serpent, Skipjack, TEA/XTEA, Twofish and VMPC.
  • Symmetric key modes: CBC, CFB, CTS, GOFB, OFB, OpenPGPCFB, and SIC (or CTR).
  • Symmetric key paddings: ISO10126d2, ISO7816d4, PKCS-5/7, TBC, X.923, and Zero Byte.
  • Asymmetric key algorithms: RSA (with blinding), ElGamal, DSA, and ECDSA.
  • Asymmetric key paddings/encodings: ISO9796d1, OAEP, and PKCS-1.
  • AEAD block cipher modes: CCM, EAX, and GCM.
  • Digests: GOST3411, MD2, MD4, MD5, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, Tiger, and Whirlpool.
  • Signer mechanisms: DSA, ECDSA, ECGOST3410, GOST3410, ISO9796d2, PSS, RSA.
  • Key Agreement: Diffie-Hellman and EC-DH.
  • Macs: CBCBlockCipher, CFBBlockCipher, GOST28147, HMac, ISO9797 Alg. 3, and VMPCMAC.
  • PBE generators: PKCS-12, and PKCS-5 - schemes 1 and 2.
  • OpenPGP (RFC 2440)
  • Cryptographic Message Syntax (CMS, RFC 3852), including streaming API.
  • Online Certificate Status Protocol (OCSP, RFC 2560).
  • Time Stamp Protocol (TSP, RFC 3161).
  • Elliptic Curve Cryptography (support for F2m and Fp curves).
  • Reading/writing of PEM files, including RSA and DSA keys, with a variety of encryptions. 
  • Mittwoch, 7. Mai 2008

    Witzig bis nützliche MD5-Seite

    Unter http://md5.rednoize.com/ kann man sich recht einfach Texte mit MD5 codieren und decodieren lassen. Nicht nur von Zeit zu Zeit ganz brauchbar sondern auch in der Aufmachung eine witzige Idee.
    Daran angelehnt habe ich mir die Mühe gemacht, und mal eine erste Version eines SearchPlugins für Firefox erstellt. Wie üblich: Nutzung auf eigene Gefahr, keine Gewährleistung, Garantie, Rücknahme o.ä. Updates vorbehalten.
    Zu finden hier

    Freitag, 25. April 2008

    Links SSH und SFTP in C#

    Wie im vorherigen schon erwähnt beschäftige ich mich gerade mit SFTP und SSH. Leider gibt es nicht viel an Vorlagen in C#, darum trage ich mal alles zusammen, was ich an interessantem gefunden habe.

    Erstmal auf ein Phänomen das ich oft treffe, SFTP und FTPS werden brachial durcheinandergeschmissen. Daher kurz:
    SFTP - ein Paketbasiertes Protokoll das auf SSH aufsetzt
    FTPS - ein Komandobasiertes Protokoll das auf FTP aufsetzt und einen SSL verschlüsselten Kanal verwendet

    Weitere Infos gibt es übersichtlich hier: http://winscp.net/eng/docs/protocols#protocol_comparison
    und hier: http://searchsecurity.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid14_gci1232457,00.html

    Daraus ergeben sich 2 Umstände:
    1. FTPS ist schneller als SFTP
    2. Die FTP Beispiel Implementierung von Mircosoft funktioniert nicht für SFTP (es ist ein anderes Basis Protokoll!)

    FTP sendet Daten (auch Passwörter) unverschlüsselt durchs Web zum Server, darum kann man mit FTPS eine SSL Verbindung etablieren, die diesen Verkehr verschlüsselt. Unter Unix is SSH etabliert und hier muss ich auf einen SFTP Server zugreifen. Doch dummerweise ist gerade SSH in .NET nicht implementiert von Microsoft.

    Schnell will ich die Liste der kommerziellen Produkte abhaken, dazu hab ich zwei interessante Links gefunden:
    - http://www.trilead.com/Products/Trilead-SSH/ (scheint aus JAVAs Ganymed hervorgegangen zu sein)
    - http://www.eldos.com/sbb/sftpcompare.php (wobei dieser Vergleich mit etwas Vorsicht zu geniessen ist da schließlich Eldos sein Produkt besonders pushen möchte, dennoch ein erster Überblick und Startpunkt)

    Nun was gibt es auf der Open Source Seite? Da sieht es ein wenig arg düster aus irgendwie:
    - Granados - Der japanische Hersteller Routrek bietet eine Open Source Implementierung von SSH unter der liberalen Apache License zur Verfügung: http://www.routrek.co.jp/en/product/varaterm/granados.html
    - SharpSsh - Der israelische Entwickler Tamir Gal hat einen Port von Jsch programmiert und stellt dies unter der ebenfalls liberalen BSD License zur Verfügung: http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh
    Dazu hat er noch einen Beitrag auf Codeproject verfasst.
    - SharpSsh bedient sich dabei der GPL freien Kryptographie Libraries von Mentalis: http://www.mentalis.org/soft/projects/crypto/

    Eine Recherche via Googles Codesearch endete darin, dass alle von mir gefundenen Implementierungen auf Tamir Gals Port aufsetzen.

    SSH Testserver aufsetzen

    Ich muss gerade einen SFTP/SCP Client coden und da mir der Kunde keinen Server zum testen für den Anfang zur Verfügung stellt, brauch ich einen auf die schnelle in meiner Entwicklungs VM.

    Nach ein wenig googeln findet man sshwindows eine OpenSSH Umsetzung, diese Implementierung setzt auf den UNIX Emulator cygwin in abgespeckter Form auf (wer gcc verwendet dürfte den kennen) und hat vollen SSH(1+2)/SCP/SFTP Support. Der letzte Stand ist vom Juli/2004 und wird leider nicht mehr gewartet seit dem. Wer etwas mehr up-to-date benötigt kann sich auf OpenSSH nach einer aktuelleren Windows Implementierung umsehen.

    sshwindows ist simpel in Installation und Konfiguration und reicht für meine einfachen Testzwecke aus (es dauert länger diesen Blogeintrag zu schreiben, als es zu konfigurieren...).

    Die Installation ist straight forward, danach hat man im Startmenu (respektiver docs Unterverzeichnis) einen Quick Start Guide.

    Hier nochmal kurz, für einen lokalen User (domain user ist fast identisch, siehe Quick Start Guide)
    - Command Prompt öffnen
    - In das bin Verzeichnis der OpenSSH Installation wechseln
    - eingeben: "mkgroup -l >> ..\etc\group"
    - eingeben (Beispiel Administrator User): "mkpasswd -l -u Administrator >> ..\etc\passwd"
    - Server starten mit: "net start opensshd"

    Für das starten hab ich mir eine kleine Batch Datei geschrieben:

       1:  :: change to the OpenSSH bin dir
       2:  @ECHO OFF
       3:   
       4:  CD C:\OpenSSH\bin
       5:   
       6:  ECHO.
       7:   
       8:  :: start SFTP
       9:  net start opensshd
      10:   
      11:  :END

    Jetzt ist der lokale Administrator User als Login eingerichtet mit den Windows Credentials für unseren Test SFTP Server. Anmerkung: Um ihn nun zu verwenden mußte ich den Rechner erst neu starten, ansonsten scheiterte der Login mit einem Error!

    Als Testclient hab ich FileZilla verwendet. Nach der Installation, einfach:
    Host: localhost
    User: Administrator
    Password: <windows password>
    Port: 22
    eingeben und Quickconnect.

    Jetzt liegt das FTP Verzeichnis noch etwas sehr hässlich im Home Verzeichnis des Administrators (also z.B. je nach verwendetem Windows: C:\Documents and Settings\Administrator\).

    Das kann man auch sehr schnell und einfach anpassen:
    Im Verzeichnis \etc liegt die Datei passwd. Im Texteditior findet man ziemlich nahe am Schluss den Eintrag: /home/Administrator den habe ich ersetzt durch z.B.: /cygdrive/c/FTPDir (cygdrive/c/ ist die Deklaration das Windows C:\ zu verwenden)