Crypt::SEED version 0.01
========================
Crypt::SEED provides the Perl community with the SEED encryption
algorithm which has been made by Korean Information Security Agency.
- About SEED (Quoted from an old document)
SEED is a symmetric encryption algorithm developed by KISA (Korea
Information Security Agency) and a group of experts since 1998. The
input/output block size and key length of SEED is 128-bits. SEED has
the 16-round Feistel structure. A 128-bit input is divided into two
64-bit blocks and the right 64-bit block is an input to the round
function, with a 64-bit subkey generated from the key scheduling.
SEED is easily implemented in various software and hardware because
it takes less memory to implement than other algorithms and generates
keys without degrading the security of the algorithm. In particular,
it can be effectively adopted in a computing environment with a
restricted resources, such as mobile devices and smart cards.
SEED is robust against known attacks including DC (Differential
cryptanalysis), LC (Linear cryptanalysis), and related key attacks.
SEED has gone through wide public scrutinizing procedures. It has
been evaluated and is considered cryptographically secure by credible
organizations such as ISO/IEC JTC 1/SC 27 and Japan CRYPTREC
(Cryptography Research and Evaluation Committees)
[ISOSEED][CRYPTREC].
SEED encryption/decryption uses a 'round key' which translated from a user key.
Whenever you add user keys to the module using new or addKey or addKeys, the
module will translate them to round keys and store them inside the module
with user keys. (Of course, in hash)
And, whenever you use the user key with encrypt, decrypt methods, the module
look for the matching round key from inside the module to do real job.
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
EXTRA Test Script
The package contains extra testing script `filetest.pl'.
You can use this script to verify two or more system decrypt imported data
from others using the same user key used for the previous encryption.
Run this script as below at sending system after you have installed whole package:
$ perl filetest.pl S
and then you will have an encrypted file 'crypt_remote.sed' in the current directory.
Send the file to other remote system which have installed the same module already.
In the remote system, run
$ perl filetest.pl
Cipher O.K.
Recovered O.K.
$
And if you find two O.K lines, it's O.K. Otherwise, something went wrong.
Be careful, however, to keep exactly the same version of filetest.pl on both system.
ENDIAN Matters.
This module contains codes affected by endian in SEED_KISA.c file,
the bytes order of multibyte data type such as integer, long, short, etc.
In almost all cases, the Makefile.PL file will handle this
matter for you.
But, test-failure cases are on which systems which have neither `Little Endian'
nore `Big Endian'.
In this cases, you may have to edit the SEED_KISA.c file by yourself to
modify `EndianChange' macro `#define'd.
If you have tested on such a system, please let me know how-to.
Notes
This module has been tested successfully against the following:
Linux 2.6.24.2 (x86)
Win32 XP (x86) with Camelbox Perl 5.10.x
SunOS 5.5.1 sparc SUNW,Ultra-Enterprise with Perl 5.8.0 (Big endian)
AIX 5.3 with Perl 5.8.2 (Big endian)
DEPENDENCIES
None.
COPYRIGHT AND LICENCE
Copyright (C) 2008 Jongpil Jeon. Perl "Artistic License" applied.
- Actually I don't care the `right'.