• Tidak ada hasil yang ditemukan

Enkripsi Data Menggunakan Algoritma Serpent

N/A
N/A
Protected

Academic year: 2021

Membagikan "Enkripsi Data Menggunakan Algoritma Serpent"

Copied!
9
0
0

Teks penuh

(1)

ENKRIPSI DATA MENGGUNAKAN

ALGORITMA SERPENT

Disusun Oleh :

Edi Permadi Budiono

Sudirman

Irfan Sa’di

Angga Tri Cahyono

UNIVERSITAS MARITIM RAJA ALI HAJI

FAKULTAS TEKNIK

Software Engineering

(2)

Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Scheiner dalam bukunya "Applied Cryptography", kriptografi adalah ilmu pengetahuan dan seni menjaga message-message agar tetap aman (secure). Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni:

Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan

tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami.

Data integrity (keutuhan data) yaitu layanan yang mampu

mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).

Authentication (keotentikan) yaitu layanan yang berhubungan

dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi.

Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah

suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).

Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi :

Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli).Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil

enkripsi.

Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi

(3)

Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah

ciphertext menjadi plaintext, sehingga berupa data awal/asli.

Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam

proses enkripsi dan dekripsi.

Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.

Gambar 2.1 Diagram proses enkripsi dan dekripsi

Peranan kunci sangatlah penting dalam proses enkripsi dan dekripsi (disamping pula algoritma yang digunakan) sehingga kerahasiaannya sangatlah penting, apabila kerahasiaannya terbongkar, maka isi dari pesan dapat diketahui.

Secara matematis, proses enkripsi merupakan pengoperasian fungsi E (enkripsi) menggunakan e (kunci enkripsi) pada M (plaintext) sehingga dihasilkan C (ciphertext), notasinya :

(4)

Sedangkan untuk proses dekripsi, merupakan pengoperasian fungsi D (dekripsi) menggunakan d (kunci dekripsi) pada C (ciphertext) sehingga dihasilkan M (plaintext), notasinya :

Dd(C) = M

Sehingga dari dua hubungan diatas berlaku :

Dd(Ee(M)) = M

Algoritma Simetri Serpent

Algoritma Serpent merupakan hasil kerjasama internasional yang melibatkan tiga negara Inggris, Israel, dan Norwegia melalui tiga buah universitasnya. Inggris dalam hal ini diwakili oleh Cambridge University sedangkan Israel diwakili oleh Haifa Israel dan Norwegia diwakili oleh University of Bergen. Algoritma ini dikembangkan oleh Ross Anderson dari Inggris, Eli Biham dari Israel, dan Lars Knudsen dari Norwegia.

Serpent merupakan algoritma cipher blok algoritma dengan 32 putaran jaringan Substitution-Permutation Network (SP-network) yang beroperasi pada empat word 32 bit, yang berarti ukuran bloknya adalah 128 bit. Untuk komputasi internal, semua nilai direpresentasikan dalam little-endian, di mana word pertama adalah least-significant word, dan word terakhir adalah most-significant word.

(5)

Serpent mendukung masukan kunci sepanjang 128 bit, 192 bit, dan 256 bit. Kenyataannya, dalam mekanisme penjadwalan kunci dibutuhkan kunci sepanjang 256 bit. Oleh karena itu, untuk masukan kunci sepanjang 128 bit dan 192 bit memerlukan mekanisme tambahan, yaitu padding. Padding menambahkan bit “1” pada bit terpenting (most significant bit) dan beberapa bit “0” sampai ukuran kunci mencapai 256 bit.

Untuk proses enkripsi, Serpent membutuhkan 32 upakunci 128 bit yang dinotasikan dengan K0, … , K32. Tahapan untuk mendapatkan ke-33 upakunci yaitu [SER09]:

1. Membagi kunci masukan K menjadi delapan bagian, masing-masing 32 bit yang dinotasikan dengan w-8, … , w-1

2. Membentuk 132 kunci antara (prekey) yang dinotasikan dengan w0, … , w131 melalui persamaan:

wi = (wi-8 wi-5 wi-3 wi-1 Ø i) <<< 11, Notasi Ø merupakan bagian kecil dari golden ratio ( + 1) / 2 atau 0x9e3779b9 dalam heksadesimal.

(6)

3. Membentuk 132 kunci putaran (round key) k0 sampai k131 yang dibentuk dari kunci antara yang dihasilkan dari proses sebelumnya dengan menggunakan S-boxes. S-boxes digunakan untuk mengubah kunci antara wi menjadi ki dengan ketentuan berikut ini :

{k0, k1, k2, k3} = S3 (w0, w1, w2, w3) {k4, k5, k6, k7} = S2 (w4, w5, w6, w7) {k8, k9, k10, k11} = S1 (w8, w8, w10, w11) {k12, k13, k14, k15} = S0 (w12, w13, w14, w15) . . . {k124, k125, k126, k127} = S4 (w124, w125, w126, w127) {k128, k129, k130, k131} = S3 (w128, w129, w130, w131)

Pembentukan kunci putaran untuk tahap (1) sampai tahap (3) dapat digambarkan dalam gambar ini.

4. Membentuk kunci 128 bit Ki (untuk I € {0, … , 32}) dari 32 bit nilai kj dengan cara: Ki = {k4i, k4i+1, k4i+2,k4i+3}

(7)

5. Menerapkan IP pada upakunci yang dihasilkan untuk menempatkan bit-bitnya ke dalam urutan yang sesuai. Ki = IP (Ki)

Algoritma Serpent ini terdiri dari : 1. Initial Permutation (IP)

2. Terdiri dari 32 putaran, masing-masing terdiri dari sebuah operasi pengacakan kunci, operasi menggunakan S-Box, dan transformasi linear. Pada putaran terakhir, transformasi ini

digantikan dengan penambahan operasi pengacakan kunci. 3. Final Permutition (FP)

IP atau Initial Permutation diterapkan pada plainteks P menghasilkan B0, yang merupakan input dari putaran pertama, yaitu putaran-0 (putaran diberi nomor dari 0 sampai 31). Hasil dari putaran pertama (putaran-0) dinamakan B1, hasil putaran kedua (putaran-1) dinamakan B2, dan seterusnya sampai B32. Permutasi akhir akan menghasilkan cipherteks C.

Masing-masing fungsi putaran Ri (i = 0,...,31) hanya menggunakan sebuah S-Box ter-replikasi. Misalnya, R0 menggunakan S0, 32 copy yang diterapkan secara paralel, sehingga copy dari S0 menggunakan bit 0,1,2, dan 3 dari B0 ⊕ K0 sebagai input dan mengembalikan empat bit pertama dari vektor intermediate sebagai output, copy selanjutnya menerima masukan bit ke 4-7 dari B0 ⊕ K0 dan mengembalikan empat bit selanjutnya dari vektor intemediate, dan seterusnya. Vektor intermediate kemudian ditransformasi menggunakan linear transformasi, menghasilkan B1.

Contoh Implementasi Algoritma Serpent dalam Pemmrograman Java :

public class CryptoUtils {

public static void main(String arg[]) { try {

java.io.StreamTokenizer Input=new java.io.StreamTokenizer(System.in);

System.out.print("Masukkan kata yang akan dienkripsi : "); Input.nextToken();

String hash =

byteArrayToHexString(CryptoUtils.computeHash(Input.sval)); System.out.println("Hasil enkripsinya (hex string) : " + hash); boolean ok = true;

String inputHash = ""; while (ok) {

System.out.print("Sekarang coba masukkan pasword rahasianya : " );

Input.nextToken(); inputHash =

byteArrayToHexString(CryptoUtils.computeHash(Input.sval)); if (hash.equals(inputHash)){

System.out.println("Mantabb! benerr BOSS"); ok = false;

(8)

else

System.out.println("Salah Gan, coba lagi...!"); }

}

catch (Exception e){ e.printStackTrace(); }

}

public static byte[] computeHash(String x) throws Exception { java.security.MessageDigest d =null; d = java.security.MessageDigest.getInstance("SHA-1"); d.reset(); d.update(x.getBytes()); return d.digest(); }

public static String byteArrayToHexString(byte[] b){ StringBuffer sb = new StringBuffer(b.length * 2); for (int i = 0; i < b.length; i++){

int v = b[i] & 0xff; if (v < 16) { sb.append('0'); } sb.append(Integer.toHexString(v)); } return sb.toString().toUpperCase(); } }

(9)

Hasil Programnya : (Jika Benar)

Gambar

Gambar 2.1 Diagram proses enkripsi dan dekripsi

Referensi

Dokumen terkait

Dari hasil penelitian uji antidiare kombinasi ekstrak etanol kunyit, beluntas, salam dan jambu biji dengan metode proteksi dan transit intestinal yang diberikan per oral pada

Berdasarkan kesimpulan di atas, perlu kiranya diketahui beberapa saran sebagai berikut: (1) Sebagai pengambil kebijakan perlu kiranya mengapresiasi guru- guru

Dengan analisa SWOT dan IE-Matrix, disarankan beberapa hal, yaitu: strategi market intensive dilakukan melalui penetrasi pasar dan pengembangan pasar; mengembangkan

[r]

Namun demikian Pemerintah Kota Depok terus berupaya mengatasi keterbatasan-keterbatasan keuangan daerah dengan menyempurnakan manajemen keuangan, melakukan efisiensi dan

Kepala Dinas Penanaman Modal dan pelayanan Terpadu Satu Pintu Kota Banjarmasin3. Se

TAKEN TO LONG FOR WAITING FOOD ORDER (SLOW RESPON).. THERE IS A THING IN

Landasan pendidikan NU ini berikutnya diturunkan menjadi Anggaran Dasar NU sebagaimana terdapat pada Pasal IX Anggaran Dasar NU sebagai berikut “Di bidang pendidikan, pengajaran