ALGORITMA TEA (Tiny Encryption Algorithm)

DESKRIPSI ALGORITMA TEA

Tiny Encription Algorithm (TEA) merupakan suatu algoritma sandi yang diciptakan oleh David Wheeler dan Roger Needham dari Computer Loboratory, Cambridge Univercity, England pada bulan November 1994. Algoritma ini merupakan algoritma penyandian block cipher yang dirancang untuk penggunaan memory yang seminimal mungkin dengan kecepatan proses yang maksimal.

Berikut ini diberikan source code TEA dalam bahasa C, dengan k[0]-k[3]. Dan data dalam v[0] dan v[1]

Encode Routine

void encrypt(unsigned long* v, unsigned long* k) {

unsigned long v0=v[0], v1=v[1], sum=0, i; /* set up */

unsigned long delta=0x9e3779b9; /* a key schedule constant */

unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key*/

for (i=0; i < 32; i++) { /* basic cycle start */

sum += delta;

v0 += (v1<<4)+k0 ^ v1+sum ^ (v1>>5)+k1;

v1 += (v0<<4)+k2 ^ v0+sum ^ (v0>>5)+k3; /* end cycle*/

}

v[0]=v0; v[1]=v1;

}

Decode Routine

void decrypt(unsigned long* v, unsigned long* k) {

unsigned long v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */

unsigned long delta=0x9e3779b9; /* a key schedule constant */

unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */

for(i=0; i<32; i++) { /* basic cycle start */

v1 -= (v0 << 4)+k2 ^ v0+sum ^ (v0 >> 5)+k3;

v0 -= (v1 << 4)+k0 ^ v1+sum ^ (v1 >> 5)+k1;

sum -= delta; /* end cycle */

}

v[0]=v0; v[1]=v1;

}

System penyandian TEA menggunakan proses feistel network dengan menambahkan fungsi matematik berupa penambahan dan pengurangan sebagai operator pembalik selain XOR. Hal ini dimaksudkan untuk menciptakan sifat non linearitas. Pergeseran dua arah (ke kiri dan ke kanan) menyebabkan semua bit kunci dan data bercampur secara berulang ulang.

TEA memproses 64 bit input sekali waktu dan menghasilkan 64 bit output. TEA menyimpan 64 bit input kedalam L0 dan R0 masing masing 32 bit. Sedangkan 128 bit kunci disimpan kedalam k[0], k[1], k[2], dan k[3] yang masing masing berisi 32 bit. Diharapkan teknik ini cukup dapat mencegah penggunaan teknik exshautive search secara efektif. Hasil outputnya akan disimpan dalam L16 dan R16.

Bilangan delta berasal dari golden number, digunakan delta=(√5 -1)231. Suatu ilangan delta ganda yang berbeda digunakan dalam setiap roundnya sehingga tidak ada bit dari perkalian yang tidak berubah secara teratur. Berbeda dengan sruktur feistel yang semula hanya mengoperasikan satu sisi yaitu sisi sebelah kanan dengan sebuah fungsi F, pada algoritma TEA kedua sisi dioperasikan dengan sebuah fungsi yang sama.

Proses diawali dengan input bit teks terang sebanyak 64 bit. Kemudian 64 bit teks terang tersebut dibagi, yaitu dua. Sisi kiri (L0) sebanyak 32 bit dan sisi kanan (R0) sebanyak 32 bit. Setiap bagian teks terang akan dioperasikan sendiri-sendiri. R0 (z) akan digeser kekiri sebanyak empat (4) kali dan ditambahkan dengan kunci k[0]. Sementara itu z ditambah dengan sum (delta) yang merupakan konstanta. Hasil penambahan ini di XOR kan dengan penambahan sebelumnya. Kemudian di XOR kan dengan hasil penambahan antara Z yang digeser kekenan sebanyak lima (5) kali dengan kunci k[1]. Hasil tersebut kemudian ditambahkan dengan L0 (y) yang akan menjadi R1.

Sisi sebelah kiri akan mengalami proses yang sama dengan sisi sebelah kanan. L0 (y) akan digeser kekiri sebanyak empat (4) kali lalu ditambahkan dengan kunci k[2]. Sementara itu , Y ditambah dengan sum (delta). Hasil penambahan ini di XOR kan dengan penambahan sebelumnya. Kemudian di XOR kan dengan hasil penambahan antara Y yang digeser ke kanan sebanyak lima (5) kali dengan unci k[3]. Hasil tersebut kemudian ditambahkan dengan R0 (Z) yang akan menjadi L1.

pergeseran (shift)

    Blok teks terang pada kedua sisi yang masing masing sebanyak 32 bit akan digeser kekiri sebanyak empat (4) kali dan digeser ke kanan sebanyak lima (5) kali.

    Penambahan

      Setelah digeser kekiri stsu kekanan, maka Y dan Z yang sedah digeser akan ditambahkan dengan kunci k[0]-k[3]. Sedangkan Y dan Z awal akan ditambahkan dengan sum (delta).

      peng-XOR-an

        Setelah dioperasikan dengan penambahan pada masingmasing register maka akan dilakukan peng XOR an dengan rumus untuk satu round adalah sebagai berikut :

        y = y + (((z<<4)+k[0])^z+sum^((z>>5)+k[1]))

        z = z + (((y<<4)+k[2]^y+sum^((y>>5)+k[3]))

        dalam hal ini sum=sum+delta.

        Hasil penyandian dalam satu cycle satu blok teks terang 64 bit menjadi 64 bit teks sandi adalah dengan menggabungkan y dan z. Untuk penyandian pada cycle berikutnya y dan z ditukar posisinya, sehingga y1 menjadi z1 dan z1 menjadi y1 terus dilanjutkan proses seperti langkah-langkah diatas sampai dengan 16 cycle (32 round).

        1. Key Schedule

        Pada algoritma TEA, key schedulenya sangat sederhana. Yaitu kunci k[0] dan k[1] konstan digunakan ntuk round ganjil sedangkan kunci k[2] dan k[3] konstan digunakan untuk round genap.

        5. Dekripsi

        Dalam proses delripsi dama halnya seperti dapa proses penyandian yang berbasis feistel cipher lainnya. Yaitu pada prinsipnya adalah sama pada saat proses enkripsi. Namun hal yang berbeda adah penggunaan teks sandi sebagai input dan kunci yang digunakan urutannya dibalik. Pada proses dekripsi semua round ganjil menggunakan k[1] terlebih dahulu kemudian k[0], demikian juga dengan semua round genap digunakan k[3] terlebih dahulu kemudian k[2].

        Pada rumus enkripsi diketahui :

        L0 = L0 + f ( R0 , k[0], k[1], sum )

        R0 = R0 + f ( L0, k[2], k[3], sum )

        Sehingga untuk proses dekripsi digunakan rumus :

        L0 = L0 + f ( R0 , k[1], k[0], sum )

        R0 = R0 + f ( L0, k[3], k[2], sum )

        2 Tanggapan

        1. thanks alot,,,,,
          i hope you can show it more!!!!

        2. abang,
          ijin tulisannya di jadiin bahan referensi yah bang…
          lg ada tugas bikin desain block….hehehe

          thengkyu…

        Tinggalkan Balasan

        Isikan data di bawah atau klik salah satu ikon untuk log in:

        Logo WordPress.com

        You are commenting using your WordPress.com account. Logout /  Ubah )

        Foto Google+

        You are commenting using your Google+ account. Logout /  Ubah )

        Gambar Twitter

        You are commenting using your Twitter account. Logout /  Ubah )

        Foto Facebook

        You are commenting using your Facebook account. Logout /  Ubah )

        Connecting to %s

        %d blogger menyukai ini: