Blockchiffer (Symetric Block Sypher) är ett krypteringssätt som kräver data (block) av en fast längd. En del av implementeringarna (ex 3DES) hanterar detta internt medans andra kräver separat hantering för detta. I exemplen endan använder vi Crypt::CBC (Cipher Block Chaining).
Advanced Encryption Standard (AES) är krypteringsalgoritm fastslagen av NIST den 26 november 2001. Standarden bygger på krypteringsalgoritmen Rijndael framtagen av Joan Daemen och Vincent Rijmen. Namnet Rijndael är en sammanslagning av deras namn. AES är ett symmetriskt blockkrypto konstruerad för att kunna använda krypteringsnycklar med längderna 128, 192 och 256 bit där varje variant benämns AES-128, AES-192, respektive AES-256.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 11,82 sek |
use Crypt::CBC; my $key="...a key of variable length..."; my $cipher = Crypt::CBC->new( -key => $key, -cipher => "Crypt::OpenSSL::AES" ); my $plaintext="Hello world!"; my $encrypted = $cipher->encrypt($plaintext); my $decrypted = $cipher->decrypt($encrypted);
use Crypt::CBC; use Crypt::Cipher::AES; my $key = "1234567890123456"; # length has to be valid key size for this cipher my $iv = "1234567890123456"; # 16 bytes my $cbc = Crypt::CBC->new( -cipher => "Cipher::AES", -key => $key, -iv => $iv, -keysize => 16, -header => "none" ); my $plaintext = "Hello world!"; my $encrypted = $cbc->encrypt($plaintext); my $decrypted = $cbc->decrypt($encrypted);
RSA var den första allmänt beskrivna algoritmen som använder asymmetrisk kryptering. RSA använder två nycklar, en offentlig nyckel och en privat/hemlig nyckel. Den publika nyckeln används för att kryptera meddelandet. Meddelandet kan sedan bara dekrypteras med hjälp av den hemliga nyckeln.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Asymmetric Sypher | 82.450 sek == 22,9 timmar |
use Crypt::RSA; my $rsa = new Crypt::RSA; my ($public, $private) = $rsa->keygen ( Identity => 'John Dow <john.doe@gmail.com>', Size => 1024, Password => 'Lorem ipsum', Verbosity => 1, ) or die $rsa->errstr(); my $plaintext="Hello world!"; my $encrypted = $rsa->encrypt ( Message => $plaintext, Key => $public, Armour => 1, ) || die $rsa->errstr(); my $decrypted = $rsa->decrypt ( Cyphertext => $encrypted, Key => $private, Armour => 1, ) || die $rsa->errstr(); my $signature = $rsa->sign ( Message => $encrypted, Key => $private ) || die $rsa->errstr(); my $verify = $rsa->verify ( Message => $encrypted, Signature => $signature, Key => $public ) || die $rsa->errstr();
RC5 utvecklades av Ronald Rivest för RSA 1994.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 43,03 sek |
use Crypt::RC5; my $key="...a key of variable length..."; my $rounds=5; my $plaintext = "Hello world!"; my $rc5 = Crypt::RC5->new($key, $rounds); my $encrypted = $rc5->encrypt($plaintext); my $decrypted = $rc5->decrypt($encrypted);
3DES / Tripple DES är en utökning av krypteringsalgoritmen DES (Data Encryption Standard). Den ger förbättrat skydd genom att kryptera samma data tre gånger med DES med olika krypteringsnycklar.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 93,69 sek |
use Crypt::TripleDES; my $des = new Crypt::TripleDES; my $plaintext = "Hello world!"; my $passphrase = "Lorem ipsum"; my $encrypted = $des->encrypt3($plaintext, $passphrase); my $decrypted = $des->decrypt3($encrypted, $passphrase);
DES (Data Encryption Standard) utvecklades i mitten av 1970-talet av IBM. DES betraktas numera som alldeles för svag för att användas i säkerhetssammanhang.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 0,39 sek |
use Crypt::CBC; use Crypt::DES; my $key="...a key of variable length..."; my $cipher = Crypt::CBC->new( -key => $key, -cipher => "Crypt::DES" ); my $plaintext = "Hello world!"; my $encrypted = $cipher->encrypt($plaintext); my $decrypted = $cipher->decrypt($encrypted);
Twofish är en krypteringsalgoritm utvecklad av Bruce Schneier. Det är en vidareutveckling av Blowfish med målet att kringå dess svagheter.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 25,24 sek |
use Crypt::CBC; use Crypt::Twofish; my $key="...a key of variable length..."; my $cipher = Crypt::CBC->new( -key => $key, -cipher => "Crypt::Twofish" ); my $plaintext="Hello world!"; my $encrypted = $cipher->encrypt($plaintext); my $decrypted = $cipher->decrypt($encrypted);
Blowfish är en krypteringmetod framtagen av Bruce Schneier som bygger på blockchiffer. Blowfish är därför opatenterat och vem som helst får använda det. Algoritmen används flitigt men har dock svagheterpå grund av en kategori svaga nycklar.
Säkerhetsgrad | Krypteringstyp | 100.000 iterationer |
---|---|---|
Symetric Block Sypher | 36,3 sek |
use Crypt::CBC; use Crypt::Blowfish; my $key="...a key of variable length..."; my $cipher = Crypt::CBC->new( -key => $key, -cipher => "Crypt::Blowfish" ); my $plaintext="Hello world!"; my $encrypted = $cipher->encrypt($plaintext); my $decrypted = $cipher->decrypt($encrypted);