• Tidak ada hasil yang ditemukan

Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks"

Copied!
120
0
0

Teks penuh

(1)
(2)

BIODATA MAHASISWA

A. DATA MAHASISWA

1. Nama Lengkap : Syabrul Majid

2. Tempat dan Tanggal Lahir : Batang Hari, 26 Maret 1992

3. Agama : Islam

4. Jenis Kelamin : Laki-laki

5. NIM : 131421058

6. E-mail : majidadnese@gmail.com

7. Golongan Darah : O

8. Anak ke : 2 (dua) dari 4 (Empat) bersaudara 9. Departemen/Program Studi : S1 Ilmu Komputer

10.Alamat Rumah : Jl. Dr.Mansyur No 70 Medan 11.No. Telepon Rumah/HP : 085362050610

12.Asal SMA/SMK/MA : SMA Negeri 1 Danau Kembar 13.Tahun Lulus SMA/SMK/MA : 2010

14.Kodya/Kabupaten : Solok, Sumatera Barat

15.Alamat Sekolah : Jl. Panorama danau Kembar, Solok

16.Nilai NEM** : 48,00

3. Tempat dan Tanggal Lahir

- Ayah : Syahril, 07 September 1964

7. Jumlah Tanggungan Orangtua : 4 (Empat) Orang

8. Alamat Kantor : -

9. Alamat Rumah Orangtua : Jl. Batang Hari, Kecamatan Lembah Gumanti, Alahan Panjang, Kabupaten Solok, Sumatera Barat

10. No. Telepon/HP : 087868606468

Medan, 06 Januari 2016 Hormat Saya,

(3)

LISTING PROGRAM

FEALCtr::encrypt($pt, $pw, 256) ;

$decr = empty($_POST['decr']) ? $plain :

$chippertextkey = empty($_POST['enkey']) ?

$cipherkey : $enkripsi->_enkripsi($plainkey) ;

$plaintextkey = empty($_POST['dekey']) ? $pw :

$enkripsi->_dekripsi($cipherkey) ;

if(!isset($_SESSION['username'])) { header('location:login.php'); }

(4)

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8

<!--[if gt IE 8]><!-->

<html class="no-js"> <!--<![endif]-->

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL DALAM PENGAMANAN FILE TEKS</title>

<!-- Bootstrap -->

<link href="css/stylexFeal.css"

rel="stylesheet" /> <!-- canvas -->

</head> <header>

<section class="hero"> <div class="container">

<div class="row nav-wrapper">

<div class="col-md-6 col-sm-6 col-xs-6 text-right

navicon">

<p><a href="logout.php"> <img src="exit.png" width="50px" height="50px" alt="Exit"></a>

<div class="lg-container4">Proccess time :&nbsp;<?= round(microtime(true) - $timer, 3) ?>s</div></p>

<a id="trigger-overlay" class="nav_slide_button nav-toggle" // function to hide and show a navigation menu

(5)

var aMenu = document.getElementById(aMenu);

aMenu.style.display = (aMenu.style.display == "block") ? "none" : "block";

if (document.NamaForm.NamaSelection.value ==

"muncul"){document.getElementById('DivTampil').style.disp lay="inline"}

if (document.NamaForm.NamaSelection.value ==

"muncul"){document.getElementById('DivTampil2').style.dis play="none"}

if (document.NamaForm.NamaSelection.value ==

"hilang"){document.getElementById('DivTampil').style.disp lay="none"}

if (document.NamaForm.NamaSelection.value ==

"hilang"){document.getElementById('DivTampil2').style.dis play="inline"}

}

</script>

<div class="lg-container">

<h3><b>File and Text Encryption using FEAL </b></h3> <font color="black">

<table> <tr>

<td>Choose &nbsp; : </td>

<td><form name='NamaForm' method='post' action='#'>

<select style="width:500px" name='NamaSelection'

onchange='DisplayShowHide()'>

<table class="fixed-layout"

style="border-collapse:collapse;">

<form action="file-processor.php" method="post" enctype="multipart/form-data">

(6)

<td><select style="width:572px" name="aksi"> <option value="enc">Enkrypt</option> <option value="dec">Dekrypt</option> </select></br></td>

<tr><td><input type="text" name="pw" style="width:567px" size="62" placeholder="key">

<tr><td><input type="image" src="logo.png" width="50px" height="50px" alt="Submit button"></td>

</form>

<table class="fixed-layout"

style="border-collapse:collapse;"> <tr>

<td width="60"><span

style="width:70px">Plaintext:</span></td>

<td width="50"><textarea type="text" name="pt" style="width:500px"><? echo stripslashes($pt); ?></textarea></td>

</tr> <tr>

<td width="69">Key:</td>

<td><input type="text" name="pw" style="width:500px" value="<?= $pw ?>">

</div> </tr>

</table>

<table class="fixed-layout"

style="border-collapse:collapse;">

</td><tr><br>

<td width="69">Mode

<td><select name="Mode">

<option value="">Block CHiper</option> </select>

</td></table>

(7)

<td><button type="submit" name="encr"

style="width:70px" value="Encrypt

it">Encrypt</button></td>

<td><input type="text" name="cipher" style="width:500px" value="<?= $encr ?>"></td></br>

</tr>

<tr><td><button type="submit" name="decr"

style="width:70px" value="Decrypt

it">Decrypt</button></td>

<td><textarea name="plain"

style="width:500px" "\t"><? echo stripslashes($decr); ?></textarea>

<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>

</tr> <tr>

<td>g</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['g'] ?>"></td>

</tr>

<tr>

<td>y</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['y'] ?>"></td>

<input type="text" size="27" value="<?= $_SESSION['x'] ?>"></td>

(8)

<td>p</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>

</tr> </table> <table>

<b>Bilangan Acak Pengirim (k)</b>

<tr>

<td>k</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['k'] ?>"></td>

</tr> </table> <tr>

<td><input type='button'

style="width:227px" value='Bangkitkan Kunci'

onclick="javascript:location.href='key.php';"></td> name="plainkey" style="width:219px" placeholder="type key here"><?= $pw ?></td>

type="submit" name="enkey" value="Encrypt it">Encrypt</button></td>

(9)

<table> name="pw" size="20" value="<?= $plaintextkey ?>"></td>

</tr>

<link href="css/stylecov.css" rel="stylesheet" /> <link href="css/animate.css" rel="stylesheet"> <table>

<body bgcolor="#284666"> <div class="lg-container">

<h3 align="center" class="animated

fadeInDown">IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID <BR>ALGORITMA FEAL DAN ALGORITMA ELGAMAL <br> DALAM PENGAMANAN FILE TEKS </h3>

<h3 align="center" class="animated fadeInDown"> <br> SKRIPSI</h3>

<h3 align="center" class="animated fadeInDown"> <br> Syabrul Majid <br> 131421058</br> <br> <img position="center" src="img/Logo Fasilkom-TI.png" class="single_image"> </br> </h3>

<h3 align="center" class="animated

fadeInDown">FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI <br> PROGRAM STUDI SARJANA ILMU KOMPUTER</br> UNIVERSITAS SUMATERA UTARA </br> MEDAN</br>2015</br></h3>

</div>

(10)

<form action="proseslogin.php" method="post">

<center><input name="username" align="center" type="text" placeholder="username"><br>

<input name="password" align="center" type="password" placeholder="password">

<br><input type="submit" value="Login" /> </center>

$cekuser = mysql_query("SELECT * FROM user WHERE username = '$username'");

$cekpass = mysql_query("SELECT * FROM user WHERE username = '$pass'");

$jumlah = mysql_num_rows($cekuser); $hasil = mysql_fetch_array($cekpass); if($jumlah == 0)

{

echo 'Username Belum Terdaftar!'; echo '<a href="login.php">Back</a>'; }

else {

(11)

echo "<script

(12)

private static function subBytes($s, $Nb) {

private static function shiftRows($s, $Nb) {

private static function mixColumns($s, $Nb) {

(13)

$Nb = 4;

private static function subWord($w) {

(14)

0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,

0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,

0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,

0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,

0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,

0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,

0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,

0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,

0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,

0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,

0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,

0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,

0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,

0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,

0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,

0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);

(15)
(16)

Norctr.class.php

<?php

Class FEALCtr extends FEAL {

public static function encrypt($plaintext, $password, $nBits) ord(substr($password, $i, 1)) & 0xff;

$key = FEAL::cipher($pwBytes, self::urs($nonceMs, $i * 8) & 0xff;

for ($i = 0; $i < 2; $i++) $counterBlock[$i + 2] = self::urs($nonceRnd, $i * 8) & 0xff;

for ($i = 0; $i < 4; $i++) $counterBlock[$i + 4] = self::urs($nonceSec, $i * 8) & 0xff;

$ctrTxt = '';

for ($i = 0; $i < 8; $i++) $ctrTxt .= chr($counterBlock[$i]);

$keySchedule = FEAL::keyExpansion($key);

$blockCount = ceil(strlen($plaintext) /

(17)

$cipherCntr = FEAL::cipher($counterBlock, $keySchedule);

$blockLength = $b < $blockCount - 1 ? $blockSize : (strlen($plaintext) - 1) % $blockSize + 1; $cipherByte = array();

for ($i = 0; $i < $blockLength; $i++) {

$cipherByte[$i] = $cipherCntr[$i] ^

ord(substr($plaintext, $b * $blockSize + $i, 1));

$cipherByte[$i] = chr($cipherByte[$i]);

public static function decrypt($ciphertext,

$password, $nBits) ord(substr($password, $i, 1)) & 0xff;

(18)

$nBlocks = ceil((strlen($ciphertext) - 8) / $blockSize);

$ct = array();

for ($b = 0; $b < $nBlocks; $b++) $ct[$b] = substr($ciphertext, 8 + $b * $blockSize, 16);

(19)

}

$key = new elgamal(0,0,0,0,0); $key->_key(258);

FEALCtr::encrypt($pt, $pw, 256) ;

$decr = empty($_POST['decr']) ? $plain :

FEALCtr::decrypt($cipher, $pw, 256);

$enkripsi = new

(20)

$dekripsi = new

$chippertextkey = empty($_POST['enkey']) ?

$cipherkey : $enkripsi->_enkripsi($pw) ;

$plaintextkey = empty($_POST['dekey']) ? $plainkey

<!--[if gt IE 8]><!-->

<html class="no-js"> <!--<![endif]-->

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID <br> ALGORITMA FEAL DAN ALGORITMA ELGAMAL <br> DALAM PENGAMANAN FILE TEKS</title>

<!-- Bootstrap -->

<link href="css/stylexFeal.css"

rel="stylesheet" /> <!-- canvas -->

</head> <header>

<section class="hero"> <div class="container">

<div class="row nav-wrapper">

<div class="col-md-6 col-sm-6 col-xs-6 text-right

(21)

<a id="trigger-overlay" class="nav_slide_button nav-// function to hide and show a navigation menu

function showHide(aMenu) {

var aMenu = document.getElementById(aMenu);

aMenu.style.display = (aMenu.style.display == "block") ? "none" : "block";

if (document.NamaForm.NamaSelection.value ==

"muncul"){document.getElementById('DivTampil').style.disp lay="inline"}

if (document.NamaForm.NamaSelection.value ==

"muncul"){document.getElementById('DivTampil2').style.dis play="none"}

if (document.NamaForm.NamaSelection.value ==

"hilang"){document.getElementById('DivTampil').style.disp lay="none"}

if (document.NamaForm.NamaSelection.value ==

"hilang"){document.getElementById('DivTampil2').style.dis

<td>Choose &nbsp; : </td>

<td><form name='NamaForm' method='post' action='#'>

<select style="width:500px" name='NamaSelection'

(22)

</table>

<div id='DivTampil' style='display:none'> <p>

<table class="fixed-layout"

style="border-collapse:collapse;">

<form action="file-processor.php" method="post" enctype="multipart/form-data">

<tr><td><input type="text" name="pw" style="width:770px" size="62" placeholder="key">

<tr><td><input type="image" src="logo.png" width="50px" height="50px" alt="Submit button"></td>

</form>

<table class="fixed-layout"

style="border-collapse:collapse;"> <tr>

<td width="60"><span

style="width:70px">Plaintext:</span></td>

<td width="50"><textarea type="text" name="pt" style="width:500px"><? echo stripslashes($pt); ?></textarea></td>

</tr> <tr>

<td width="69">Key:</td>

<td><input type="text" name="pw" style="width:500px" value="<?= $pw ?>">

(23)

<tr>

width='150'>p</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['p'] ?>"></td>

</tr> <tr>

<td>g</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['g'] ?>"></td>

</tr> <tr> <tr>

<td>y</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['y'] ?>"></td> type="text" rows="10" cols="60" value="<?= $_SESSION['x'] ?>"></td>

</tr> <tr>

<td>p</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['p'] ?>"></td> type="text" rows="10" cols="60" value="<?= $_SESSION['k'] ?>"></td>

</tr> <tr>

<td colspan='2'><input

type='button' value='Bangkitkan Kunci'

onclick="javascript:location.href='key.php';"></td> </tr>

(24)

<td width='150' type="text" name="pw" rows="10" cols="60"><? echo stripslashes($pw); ?></td>

</tr>

</tr>

</table>

(25)

<td><button

type="submit" name="enkey" value="Encrypt it">Encrypt</button></td>

<td><input type="text" name="cipherkey" size="79" value="<?= $chippertextkey ?>" "/t"></td> name="plainkey" size="79" value="<?= $plaintextkey, $del2 ?>"></td>

<table class="fixed-layout"

style="border-collapse:collapse;">

</td><tr><br>

<td width="69">Mode

<td><select name="Mode">

<option value="">Block CHiper</option> </select>

</td></table>

<table height="164"> <br><tr>

<td><button type="submit" name="encr"

style="width:70px" value="Encrypt

it">Encrypt</button></td>

<td><input type="text" name="cipher" style="width:500px" value="<?= $encr ?>"></td></br>

(26)

<tr><td><button type="submit" name="decr"

style="width:70px" value="Decrypt

it">Decrypt</button></td>

<td><textarea name="plain"

style="width:500px" "\t"><? echo stripslashes($decr); ?></textarea>

private function _p($batas){

(27)

return $this->_p($batas); }

}

private function _g(){

return rand(1,$this->p - 1); }

private function _x(){

return rand(1,$this->p - 1); }

return rand(1,$this->p - 2); }

public function _rekursifMod($basis,$pangkat,$mod){ if ($pangkat <= 2)

return ((pow($basis,$pangkat)) % $mod); else{

>_rekursifMod($basis,$b1,$mod)) *

($this->_rekursifMod($basis,$b2,$mod))) % $mod); }

}

(28)

$chipperText = "";

for ($i=0;$i<(strlen($ascii));$i+=3){ $tmp = substr($ascii,$i,3);

if (strlen($tmp)==1) $tmp = "00".$tmp; if (strlen($tmp)==2) $tmp = "0".$tmp;

$r = $this->_rekursifMod($this->g,$this->k,$this->p);

$s =

((($this->_rekursifMod($this- >y,$this->k,$this->p))*($this->_rekursifMod($tmp,1,$this->p))) % $this->p);

$chipperText .= $r." ".$s." "; }

return $chipperText; }

public function _dekripsi($chipperText){ $t = explode(" ",$chipperText); $ascii = ""; if (strlen($b)==1) $b = "00".$b; if (strlen($b)==2) $b = "0".$b;

(29)

$text .= chr($bil);

$targetFile = basename( $_FILES["fName"]["name"]); //option aksi

'r');//membuka file hasil upload

$pt = fread($fh, 2097152); fclose($fh);

$encr = rtrim($_POST["fName"]) ? $cipher : FEALCtr::encrypt($pt, $pw, 256) ;

(30)

$success=false;

<header><link href="css/stylepro.css" rel="stylesheet" /> </header>

<body bgcolor="#284666">

<p> <a href="index.php"> <img src="back.png" width="50px" height="50px" alt="Back"></a>

<a href="logout.php"> <img src="exit.png" width="50px" height="50px" alt="Exit"></p></a>

<div class="lg-container">

<h2>Succes Proccess:</h2> <h3><br><i><u><?= $targetFile ?></u></i></h3>

<a download href="<?= $target_dir.$targetFile ?>" style="text-decoration:none">

<center><br><img src="download.png" width="50px" height="50px" alt="Home" >

</br>

<br>Save File</center></br></a> </div>

(31)

DAFTAR PUSTAKA

[1] Bofandra. 2009. Implementasi Data Encryption Standart untuk Enkripsi Dekripsi Berkas PDF. Makalah. Bandung: Institut Teknologi Bandung. [2] Fitri, S. 2009. Implementasi Algoritma Kriptografi ElGamal dan WATERMARK

dengan Metode LSB Pada Citra. Skripsi. Yogyakarta: Sekolah Tinggi manajemen Informatika Dan Komputer.

[3] T, Semuil, Wijaya, M. C. 2009. Pengamanan Data menggunakan Metoda

Enkripsi Simetri dengan Algoritma FEAL. Jurnal. Bandung: Universitas Kristen Maranatha.

[4] Prasetiyo, B. 2013. Kombinasi Steganografi Bit Matching dan Kriptografi

ElGamal untuk Pengamanan Data . Tesis. Semarang: Universitas Diponegoro.

[5] Mollin, R. A. 2002. RSA and PublicKey Cryptography. Florida: Chapman &

Hall/CRC.

[6] Mollin, R. A. 2007. An Introduction to Cryptography. Edisi ke-2. Florida:

Chapman & Hall/CRC.

[7] Mollin, R. A. 2008. Fundamental Number Theory with Applications. Edisi ke-2.

Florida: Chapman & Hall/CRC.

[8] Munir, Rinaldi. 2006. Kriptografi. Bandung: Penerbit Informatika.

[9] Paar, Christof dan Pelzl, Jan. 2010. Understanding Cryptography. Berlin:

Springer-Verlag.

[10] Schneier, Bruce. 1996. Applied Cryptography. Edisi ke-2. New Jersey: John

Wiley & Sons, Inc.

[11] Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and

Source Code in C. Edisi ke-2. New Jersey: John Wiley & Sons, Inc. [12] Sudarmono. 2016. Aplikasi Algoritma ElGamal dan Cryptanalis menggunakan

teori Probabilitas Pada Kartu ATM. Skripsi. Skripsi: Universitas Sebelas Maret.

[13] Zaki S. 2011. Program Aplikasi Kemanan Citra Dengan Algoritma ElGamal

(32)

[14] Kak, A. 2015. Blok Cipher and Data Encription Standart. Lecture Notes. India:

Purdue University.

[15] Knine, L.L. 2009. A new Variant of FEAL Strem Cipher. Journal: Engineering

And Technology.

[16] Dawson, E. Gustafson, H. Henricksen, M. Millian, B. 2002. Evaluation of FEAL

Stream Cipher. Australia, Queensland University of Technology. [17] Menezes, Oorcshot, and Vanstone, 1996, Handbook of Applied Cryptography,

CRC Press, Inc. USA.

[18] Bilham E, Carmeli Y, 2014, An Improvement of Linear Cryptanalysis with

Addition Operation with Applications To FEAL-8X, Computer Science Department – Israel Institute of Technology, Israel.

[19] Biswas S, Chellappa, 2011, Face Recognition from Still Images dan Video,

(33)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1Analisis Sistem

Analisis merupakan rekayasa perangkat lunak yang menjadi penghubung antara

penglokasian perangkat lunak tingkat sistem dan perancangan perangkat lunak, dalam

hal ini perancangan interface program aplikasi ini untuk proses enkripsi maupun

dekripsi pesan/data, memungkinkan perekayasa sistem menentukan fungsi dan kerja

perangkat lunak, menunjukkan interface perangkat lunak dengan elemen sistem yang

lain, dan membangun batasan yang harus dipenuhi oleh perangkat lunak.

Ketika berbicara tentang program aplikasi tentu tidak terlepas dari komponen

interface dan user. Dalam interface sendiri terdapat berbagai elemen yang membangunnya agar dapat aplikasi tersebut berfungsi. Didalam program aplikasi

terdapat arsitektur, basis data (database), dan desain prosedural yang mendukung

dalam program aplikasi tersebut sampai benar-benar digunakan dengan baik. User

merupakan instruktor dalam aplikasi tersebut sehingga dapat berjalan sesui dengan

tujuan aplikasi tersebut dibuat.

3.2Analisis Masalah

Dalam distribusi data antar pengguna membutuhkan jaminan keamanan dimana data

yang dikirim tidak diganggu seperti dicuri, dihapus dimodifikasi maupun dirusak

sehingga membutuhkan suatu teknik untuk pengamannya. Kriptografi merupakan

salah satu teknik untuk mengamankan data dengan cara mengubah bentuk data

menjadi bentuk yang tidak dapat dikenali sehingga pihak asing hanya dapat

(34)

Implementation Algorithm Hybrid FEAL

and ElGamal

Seluruh masalah yang timbul dapat disajikan dalam sebuah diagram Ishikawa seperti

pada gambar 3.1 dibawah ini:

Gambar 3.1 Diagram Ishikawa pada implementasi Algoritma hybrid FEAL dan Elgamal dalam pengamanan Data Teks

3.2.1 Analisis persyaratan (Requirement Analysis)

Analisis persyaratan sebuah sistem dikelompokkan kedalam dua bagian secara garis

besar yaitu:

1. Analisis persyaratan fungsional

Persyaratan fungsional merupakan segala sesuatu yang harus di miliki oleh

sistem agar sistem berjalan sesui dengan fungsinya dan dapat dimaksimalkan.

Enkripsi dan dekripsi dilakukan dengan algoritma hybrid FEAL dan ElGamal

dimana kunci FEAL sebagai kriptografi simetri dijadikan kunci ElGamal yang

diketahui sebagai algoritma asimetris sehingga terbentuknya kriptografi

hybrid. Kunci dibangkitkan dengan pembangkit bilangan prima dengan metode Lehmann (Lehmann Prime Generator).

2. Analisis persyaratan Non-Fungsional

Persyaratan non fungsional adalah persyaratan apa yang harus dilakukan

(35)

stakeholder sebuah sistem. Persyaratan non fungsional meliputi performa mudah untuk di pelajari dan di implementasikan, hemat biaya dan waktu

dokumen dan kontrol terhadap sistem tersebut.

a. Sistem dapat diubah antara karakter ke desimal dengan menggunakan tabel

ASCII dan juga sebaliknya dengan benar, sehingga tidak ada perbedaan

hasil dekripsi dengan cara informasi asli.

b. Waktu pengesekusian untuk enkripsi dari FEAL dan menjadi kunci juga

pada ElGamal.

3.3Analisis Proses

3.3.1 Proses sistem dengan use case diagrams

Pemodelan sistem dilakukan bertujuan untuk memodelkan hasil analisis sistem yang

dirancang. Pemodelan hasil analisis sistem yang dirancang menggunakan use case

diagrams.

Use case diagram menggambarkan apa saja aktifitas yang dilakukan oleh suatu sistem dari sudut pandang pengamatan luar. Yang menjadi persoalan itu apa yang

dilakukan dan bagimana melakukannya. Use case diagram lebih dekat kaitannya

dengan kejadian-kejadian. Kejadian (scenario) merupakan contoh apa saja yang

terjadi ketika seseorang berinteraksi dengan sistem.

Berdasarkan analisis kebutuhan sistem beberapa hal yang harus dipenuhi oleh sistem,

yaitu:

1. Sistem harus dapat membangkitkan kunci public dan kunci private yang akan

digunakan dalam proses enkripsi dan dekripsi.

2. Sistem harus dapat melakukan enkripsi data, kemudian sistem juga harus dapat

mendeksripsikan ciphertext kedalam bentuk teks yang bisa dibaca.

3. Sistem harus dapat berinteraksi data atu informasi yang telah disiapkan

kedalam sistem.

(36)

Gambar 3.2 Use case Algoritma hybrid FEAL dan ElGamal

Dari use case diatas tampak bahwa penerima membangkitkan kunci public dan

private, kemudian kunci public diberikan kepada siapa saja yang ingin mengirim data atau informasi kepadanya. Sedangkan kunci private hanya diketaui antara pengirim

dan penerima saja dan tidak boleh diketahi oleh orang lain. Setelah pengirim

mendapatkan kunci public, kemudian pengirim melakukan proses enkripsi. Setelah

data di enkripsi maka pengirim dapat mengirimkan dengan aman melaui transfer data.

Dan penerima akan mendekripsikan dengan mengetahui kunci private yang diberiakan

oleh si pengirim. Pada tabel dibawah ini disajikan tabel dokumentasi naratif untuk use

(37)

Tabel 3.1 Dokumentasi naratif program enkripsi dan dekripsi Algoritma FEAL dan

ElGamal

Nama use case Program enkripsi

Actor Penerima dan pengirm pesan

Deskripsi Use case mendeskripsikan bagaimana proses yang terjadi anatara suatu proses yang lain dan atara proses pengirim

dan penerima

Pre-condition Data atau informasi yang yang dikirim berupa txt

Typical cuourse of event

Aksi aktor Respons sistem

Langkah ke-1: penerima

menjalankan program

Langkah ke-2: Sistem akan

memuat modul-modul pada

menu utama

Langkah ke-3: Penerima

akan membangkitkan

kunci dari menu utama

Langkah ke-4: sistem

kemudian membangkitkan

kunci public dan private

Langkah ke-5: penrima

akan menyimpan kunci,

kemudian membagikan

kunci public kepada setiap

orang yang ingin

mengirim data dan atau

informasi kepadanya

Langkah ke 6: Pengirim

kemudian menjalankan

program dan melakukan

proses enkripsi dan

memberikan kepada penerima

dengan memberitahukan kunci

private.

Alternative curse

Aksi aktor Respons sistem

Memberikan kunci hybrid

Jika kunci hybrid belum berjalan maka kembali ke

enkripsi semula

Post kondition Data atau informasi yang dikirim si pengirim kepada penerima sampai tanpa dikatehui oleh orang lain

Pada tabel yang disajikan diatas menjelaskan use case program enkripsi dan deksripsi

(38)

pre condition, serta action dari pengguna dan sistem yang telah dibuat. Dengan penyajian tabel diatas dapat diketahui bagaimana cara penggunaan program dan

langkah-langkah dalam menggunakan program.

Pada use case dapat di lihat beberapa aksi yang dilakukan oleh aktor, yaitu bangkitkan

kunci, enkripsi dan dekripsi. Untuk menjelaskan kertiga proses dapat digambarkan

dengan diagram activity dari setiap proses. Untuk menjelaskan proses bangkitkan

kunci, maka berikut akan dibuatkan dokumentasi naratif untuk use case bangkitkan

kunci:

Tabel 3.2 Proses pembangkitan Kunci

Nama use case Bangkitkan kunci

Aktor Penerima

Deskripsi use case

Use case mendekripsikan bagaimana penerima menggunakan sistem untuk membangkitkan sebuah kunci private dan public

algoritma FEAL dan ElGamal

Pre-condition Penerima belum memiliki kunci private dan public

Typical course of event

Aksi Aktor Respon sistem

Langkah 1:

penerima

menginputkan

sebuah bilangan

Langkah 2: sistem mencheck apakah

bilangan tersebut prima atau komposit.

Jika prima maka bilangan tersebut akan

di cetak dan jika tidak akan digenerate

sebuah bilangan prima.

Langkah 3:

Penerima

menginputkan

bilangan prima

Langkah 4: sistem akan

membangkitkan sebuah kunci private

dan public.

Langkah 6: kunci akan di simpan di

(39)

Alternative course Aksi aktor Respons sistem

- -

Post kondition Kunci telah dibangkitkan dan di simpan di sistem

Merujuk pada tabel diatas dapat dijelaskan bahawa use case membangkitkan

kunci secara detail dimana terdapat aktor, pre-condition, post-condition serta action

dari user dan system. Dengan tabel diatas dapat diketahui apa saja action yang

dilakukan pengguna dan sistem pada suatu pembangkitan kunci pada algoritma FEAL

dan ElGamal.

Pada proses enkripsi dan penyisipan, maka hal pertama yang dilakukan sistem adalah

memerika apakah data atau informasi yang akan disiapkan ada atau tidak, kemudian

sistem juga mengecek kunci public dan kunci private. Pada proses enkripsi, maka

setiap karakter data atu informasi (data .*txt) akan diubah kedalam bentuk desimal

menggunakan kode ASCII. Setelah diubah ke bentuk desimal, maka dilakukan proses

enkripsi dengan menggunakan algoritma ElGamal.

Tabel 3.3 Proses Enkripsi ElGamal

Nama use case Eknkripsi

Aktor Recipient

Dekripsi Use case ini berfungsi untuk melakukan enkripsi dengan algoritma FEAL, kemuadian hasil enkripsi FEAL tersebut

dijadikan kunci untuk algoritma ElGamal

Pre-condition Data dalam bentuk txt

Aksi aktor Respons sistem

Typical course of event

Langkah 1: pengirim melakukan input

(40)

-

langkah 4: sistem

akan mencetak

ciphertext

Alternative course Aksi aktor Respons system

- -

Post condition

Data telah di enkripsi, dimana informasi teks dilihat dalam

bentuk ciphertext dan tidak mungki dipahami dalam kata yang

memiliki sebuah makna

Dari tabel diatas dapat dipahami bahwa use case dalam proses enkripsi dimana

terdapat aktor, pre condition, post condition dari user dan system. Dengan

memperhatikan tabel diatas dapat diketahui action yang dilakukan user dan proses

yang terjadi proses enkripsi.

3.3.2 Proses sistem dengan Sequence diagrams

Sequence diagram adalah suatu diagram yang mengambarkan interaksi antara actor

dan sistem pada use case scenario diagram ini sangat membantu melihat pesan hight

level yang masuk dan keluar dari sistem (Bentley, Whitten, 2007).

Garis penuh menunjukkan input yang dilakukan oleh user pada algoritma Hybrid

FEAL dan ElGamal, sedangkan garis yang putus-putus yang mengarah ke bagian user

menunjukkan output yang dihasilkan oleh system. Tiap-tiap inputan yang terjadi

memiliki activation bars yang menunjukkan proses enkripsi dan dekripsi yang

dialakukan oleh users dan system. Pada sequence diagram dapat dijelaskan pada

(41)

Gambar 3.3 Proses Enkripsi dan Dekripsi dengan sequence diagram Algoritma Hybrid

FEAL dan ElGamal

3.3.3 Proses sistem dengan Activity diagrams

Activity diagram merupakan suatu diagram yang digunakan untuk menggambarkan aliran proses usaha secara grafis, langkah-langkah dari suatu use-case atau logika dari

suatu tingkah laku objek dan metode dari suatu sistem yang akan dibangun (Bentley,

Whitten, 2007).

Node bulat bewarna hitam ditengah menunjukkan mulai dan proses akhir pesan.

Sistem ini dibagi menjadi dua bagian yang terpisah untuk menunjukkan atau

(42)

merupakan aktivity diagram dalam penelitian ini yang ditunjukkan pada gambar 3.5

dibawah ini:

(43)

3.3.4 Flow chart Pembangkitan Kunci Algoritma ElGamal

Dibawah ini merupakan proses pembangkitan kunci dari algoritma FEAL dan

ElGamal. Pembangkitan kunci dapat dilihat dari gambar 3.5 dibawah ini:

Gambar 3.5 Flowchart Pembangkitan Kunci Algoritma FEAL dan ElGamal

3.3.5 Flow chart Enkripsi Algoritma FEAL dan ElGamal

Pada proses ini setiap elemen pada Algoritma Hybrid FEAL dan ElGamal akan

dijelaskan dimana kunci akan dibangkitkan dan dimodulokan dengan n. Hasil proses

enkripsi berupa ciphertext. Gambar 3. 6 merupakan Enkripsi AlGoritma FEAL untuk

(44)

Gambar 3.6 Flowchart Enkripsi Algoritma FEAL

Pada proses pada gambar 3.6 merupakan proses dalam pengambilan kunci private dari

algoritma ElGamal, Selanjutna maka akan di generate bilangan prima dalam

pengambilan kunci public ElGamal, selanjutnya ciphertext FEAL dijadikan kunci

(45)

Gambar 3.7 Flowchart Ekripsi Algoritma ElGamal

Dari gambar 3.7 Diatas dapat di jelaskan bahwa yang dilakukan pertama adalah input

file teks yaitu dari ciphertext dari algoritma FEAL, setelah itu sistem akan

menampilkan isi ciphetext. Sistem akan menampilkan kasil enkripsi berupa ciphertext

dari algoritma ElGamal, proses enkripsi selesai, ciphertext ditampilkan.

3.3.6 Flow chart Dekripsi Algoritma FEAL dan ElGamal

Proses dekripsi merupakan pengembalian ciphertext ke plaintext (pesan asli). Untuk

(46)

Gambar 3.8 Proses Dekripsi ElGamal

Pada gambar 3.8 dapat diketahui bahwa hasil dekripsi ElGamal diperoleh dari dekripsi

dari ciphertext sebelumnya dan pengambilan ciphertext FEAL sebagai kunci private.

3.4Perancangan Sistem

Berdasrkan hasil analisis proses yang berlangsung dalam sistem diperoleh gambaran

yang akan di implementasikan pada sistem. Berasarkan Gambaran ini dilakukan

perancangan antarmuka pengguna dan perancangan, dimana akan diimplentasikan

(47)

3.4.1 Perancangan Antar Muka

Pada penelitian ini penulis mencoba menjadikan mozilla firefox sebagai tool yang

digunakan untuk tampilan antarmuka dari program aplikasi. Pada aplikasi main page

dapat dilihat pada gambar 3.9 dibawah ini:

Gambar 3.9 Halaman Utama Program Aplikasi

Berdasarkan gambar 3.9, dimana terdapat halaman utama dari program aplikasi yang dirancang. Selanjutnya, Untuk lebih jelasnya dapat dijelaskan pada tabel 3.4 dibawah ini :

Tabel 3.4 Deskripsi dari Halaman Utama

No Nama Komponen Keterangan

1 Komponen ke-1 Yaitu Halaman identitas dari penulis

2 Komponen ke 2

Yaitu dimulainya program yang memuat tentang enkripsi dan Dekripsi dari Algoritma hybrid FEAL dan ElGamal

IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL

DALAM PENGAMANAN FILE TEKS

SKRIPSI

SYABUL MAJID 131421058

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2015

START

1

(48)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Setelah dilakukan analisis dan perancangan pada bab 3, proses selanjutnya adalah

implementasi yang telah dibuat pada landasan matematik dan desain logika pada

tahap sebelumnya di bab 3 tersebut.

Implementasi sistem merupakan hasil analisis dan perancangan sistem kedalam

sebuah bahasa pemograman. Implementasi sistem pada penelitian tugas akhir ini

dibangun menggunakan bahasa pemograman PHP. Bahasa PHP merupakan bahasa

open source dan berjalan di web browser mozilla firefox.

4.1.1 Halaman Utama (Main Page)

Pada main page ini merupakan page yang pertama kali muncul saat aplikasi

dijalankan. Halaman ini terdiri dari tools button yang sebagai jalan pintas dalam

enkripsi dan dekripsi algoritma hybrid yaitu algoritma FEAL dan ElGamal. Halaman

utama dapat dilihat dalam gambar 4.1 dibawah ini:

(49)

4.1.2 Form key Generator

Form key generator merupakan form untuk membangkitkan bilangan prima, p, g dan

y. Dimana kita akan mendaptkan kunci public dan kunci private. Form ini dapat dilihat pada gambar 4.2 berikut ini:

Gambar 4.2 Key Generator algoritma ElGamal

4.1.3 Pengambilan kunci dari algoritma FEAL (Hasil proses enkripsi dan Hasil dekripsi algoritma FEAL)

a. Hasil Proses enkripsi algoritma FEAL

Pada proses ini akan algoritma FEAL melakukan enkripsi yang bertujuan untuk

mengubah plaintext menjadi ciphertext. Pada proses ini algoritma FEAL juga

melakukan enkripsi biasa yaitu memasukkan plaintext dan key kemudian

menghasilkan output ciphertext. Pada enkripsi algoritma FEAL proses ini akan

(50)

Gambar 4.3 Proses enkripsi algoritma FEAL

Pada proses ini plaintext yaitu berupa karakter dalam bentuk kalimat “target januari 2016!” menghasilkan ciphertext berupa karakter

xACwCLvCjVbrMmlWYS/6SBwRBFdmyn6ERguy6w==” dimana jumlah karakter ciphertext lebih panjang dari plaintext.

b. Hasil Proses Dekripsi algoritma FEAL

Pada proses ini merupakan proses mengembalikan proses ciphertext menjadi plaintext

pada algoritma FEAL. Pada proses ini walaupun pada ciphertext menghasilkan

karakter yang berbeda-beda ketika di generate, namun decrypt akan menghasilkan

karakter sama dengan plaintext sebelumnya asalkan key yang sebelumnya sama.

Untuk proses dekripsi algoritma FEAL dapat dijelaskan pada gambar 4.4 berikut

(51)

Gambar 4.4 Dekripsi pada algoritma FEAL

4.1.4 Implementasi dan pengujian Algoritma Hybrid FEAL dan ElGamal (Hasil Proses Enkripsi dan Hasil Dekripsi algoritma ElGamal dengan mengambil ciphertext FEAL sebagai Key ElGamal)

a. Proses Enkripsi algoritma Elgamal dengan key ciphertext FEAL sebagai key private FEAL

Pada proses ini algoritma ini algoritma ElGamal membutuhkan ciphertext FEAL

sebagai kunci private ElGamal, maka berdasarkan kasus ini ditarik kesimpulan bahwa

Hybrid Cryptosistem dimana menggabung dua algoritma enkrispi simetris (algoritma FEAL) menjadi key algoritma ElGamal. Untuk implementasi dalam sistem dapat

(52)

Gambar 4.5 Enkripsi Algoritma ElGamal

Berasarkan gambar maka dapat dikatui bahwa key ciphertxt algoritma FEAL diambil

untuk menjadi private key algoritma ElGamal. Dimana ciphertext pada (sub bab 4.1.3

point a) dengan ciphertext

xACwCLvCjVbrMmlWYS/6SBwRBFdmyn6ERguy6w==

menjadi key algoritma ElGamal. Elgamal sebagai kunci asimetris yang memiliki

kunci public dan kunci private maka kunci private diambil dari ciphertext algoritma

FEAL penggabungan hal ini penulis sebut sebagai hybrid cryptosystem

.

Dalam ciphertext ElGamal maka dapat di sajikan ciphertex dalam bentuk decimal

yaitu:

“669 598 669 231 669 45 669 623 669 1377 669 1367 669 457 669 814 669 447 669 1196 669 437 669 35 669 251 669 638 669 995 669 231 669 834 669 45 669 1196

669 1407 669 1176 669 50 669 1387 669 1216 669 809 669 437 669 603 669 1216

669 1362 669 824 669 603 669 598 669 613 669 1397 669 236 669 1216 669 1206

(53)

b. Proses Dekripsi algoritma Elgamal dengan key ciphertext FEAL sebagai key private FEAL

Pada proses dekripsi yaitu pembalikan ciphertext menjadi plaintext. Dalam Hybrid

Cryptosystem dalam penelitian tugas akhir ini yaitu dimasukkan key FEAL dan

dilakukan Generate Decrypt algoritma ElGamal. Untuk hasil proses decryption maka

dapat dilihat dalam gambar 4.6 dan 4.7 berikut dibawah ini:

Contoh 1:

Gambar 4.6 Dekripsi ElGamal dengan menggunakan Hybrid FEAL

Dari pengujian dan bersarkan gambar diatas maka dapat disimpulkan bahwa plaintext

ElGamal yang yaitu ciphertxt FEAL merupakan karakter yang sama dengan plaintext

FEAL yaitu:

(54)

Contoh 2:

Contoh dekripsi algoritma ElGamal dengan menggunakan Key Algoritma FEAL pada (sub bab 4.3 point a yaitu “12345”)

Gambar 4.7 proses Dekripsi Algoritma ElGamal contoh ke-2

Pada gambar 4.7 diatas merupakan generate decrypt dari algoritma ElGalam dengan

menggunakan key FEAL “12345” mengasilkan ciphertext

“669 834 669 251 669 452 669 1397 669 1015 669 834 669 20 669 447 669 251 669

1211 669 1025 669 251 669 452 669 256 669 20 669 412 669 30 669 221 669 1176

669 211”

(55)

4.2Hasil Implementasi Sistem

4.2.1 Uji coba panjang kunci dan panjang karakter plaintext proses enkripsi dan dekripsi algoritma FEAL dan ElGamal

a. Uji ke-1 (time 0.858 s)

Uji ke-1 dilakukan dengan panjang karakter sebanyak 40 karakter dan panjang

kunci 10 dengan plaintext “syabrul majid ekstensi ilmu komputer usu” dan key yaitu “1234567890” yaitu dapat dilihat pada gambar 4.8 berikut dibawah ini:

Gambar 4.8 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

Key ElGamal dengan panjang plaintext 40 dan panjang key 10

Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.

(56)

Gambar 4.9 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL time

0.858s

b. Uji ke-2 (time 1.899 s)

Uji ke-2 dilakukan dengan panjang karakter sebanyak 91 karakter dan panjang

kunci 21 dengan plaintext “syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058” dan key yaitu

“1234567890qwertyuiopa” yaitu dapat dilihat pada gambar 4.10 berikut dibawah ini:

Gambar 4.10 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

(57)

Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.

Dapat dilihat pada gambar 4.11 berikut dibawah ini:

Gambar 4.11 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL

time 1.899s

c. Uji ke-3 (time 5.097s)

Uji ke-3 dilakukan dengan panjang karakter sebanyak 193 karakter dan panjang

kunci 51 dengan plaintext

“syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058 dengan judul skripsi "IMPLEMENTASI DAN ANALISIS

KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL

DALAM PENGAMANAN FILE TEKS tahun 2016 medan"” dan key yaitu

(58)

Gambar 4.12 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

Key ElGamal dengan panjang plaintext 193 dan panjang key 51

Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.

Dalam proses enkripsi, dapat dilihat pada gambar 4.13 berikut dibawah ini:

Gambar 4.13 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL

(59)

d. Uji ke-4 (time 7.758 s)

Uji ke-4 dilakukan dengan panjang karakter sebanyak 366 karakter dan panjang

kunci 51 dengan plaintext

“syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058 dengan judul skripsi "IMPLEMENTASI DAN ANALISIS

KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL

DALAM PENGAMANAN FILE TEKS tahun 2016 medan" Dosen Pembimbing 1.

Bapak Muhammad M. Andri Budiman, ST, MCompSc, MEM dan dosen Pembimbing 2.

Ibu Dian Rachmawati, S.Si, M.Kom” dan key yaitu

“1234567890qwertyuiopasdfghjklzxcvbnmasdfgghjklzxcvb” yaitu dapat dilihat pada gambar 4.14 berikut dibawah ini:

Gambar 4.14 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

Key ElGamal dengan panjang plaintext 329 dan panjang key 51

Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.

(60)

Gambar 4.15 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL

time 7.758s

e. Uji ke-5 (time 23.829s)

Uji ke-5 dilakukan dengan panjang karakter sebanyak 1135 karakter dan panjang

kunci 70 dengan plaintext

(61)

Kata Kunci : Kriptografi, simetris, asimetris, FEAL (Fast Data Enchiperment Algorithm),

ElGamal, Hybrid Cryptosystem, Lehmann Prime Generator

dan key yaitu “1234567890qwertyuiopasdfghjklzxcvbnmasdfgghjklzxcvb” yaitu dapat dilihat pada gambar 4.14 berikut dibawah ini:

Gambar 4.16 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

(62)

Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.

Dalam proses enkripsi, dapat dilihat pada gambar 4.13 berikut dibawah ini:

Gambar 4.17 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk

Key ElGamal dengan panjang plaintext 1135 dan panjang key 51

Hasil Uji coba implentasi dari algoritma Hybrid FEAL dan ElGamal dapat diketahui

dari melihat tabel 4.1berikut dibawah ini:

Tabel 4.1 Hasil ujicoba Enkripsi dari 5 kali percobaan dengan beragam panjang key

dan plaintext

Uji coba ke- Panjang Plaintext (karakter) Panjang key Waktu / s

1 40 10 0.858

2 91 21 1.899

3 193 51 5.097

(63)

5 1.135 51 23.829

Dapat dilihat dari gambar 4.15 dalam bentuk diagram garis dibawah ini:

Gambar 4.18 Tingkatan jumlah panjang karakter dalam Algoritma Hybrid FEAL dan

ElGamal

Dari diagram diatas dapat diketaui bahwa semakin panjang karakter plaintex dan key

maka waktu yang dibutuhkan semakin lama. Begitupun juga untuk dekripsi pesan

dalam pengamanan data Hybrid Cryptosystem Algoritma FEAL dan ElGamal.

Dimana semakin panjang key dan plaintext yang dimasukkan maka waktu yang

dibutuhkan akan semakin lama yaitu dapat dilihat pada gambar 4.18 diatas dimana

jumlah waktu dengan plaintext terlihat signifikan. Waktu dalam 1135 karakter pesan

termasuk spasi membutuhkan waktu 23.82 Sekon , berbeda dengan plaintext yang

(64)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Algoritma kriptografi FEAL merupakan sebuah metode penyandian data

dengan algoritma simetris, sedangkan algoritma algoritma ElGamal

merupakan gabungan antara algoritma simetris dan asimetris dengan memakai

FEAL sebagau kunci dari ElGamal maka disebut hybrid Cryptosystem.

2. FEAL menerima masukan berupa 64-bit plaintext dan 64-bit kunci, dan

menghasilkan 64-bit ciphertext. FEAL memiliki fungsi f yang sederhana,

dengan menggunakan operasi XOR didalamnya, hal ini membuat FEAL

menjadi algoritma sederhana dan memiliki proses yang cepat. Sedangkan

proses dekripsi yang terjadi pada FEAL menggunakan proses yang sama

dengan proses enkripsi.

3. Semakin panjang ukuran dan file yang di enkripsi semakin besar berpengaruh

terhadap waktu dalam enkripsi dan dekripsinya. Satuan waktu yang digunakan

dalam skripsi ini adalah satuan waktu dalam sekon/detik.

4. Dalam tugas akhir ini perancangan aplikasi telah mampu memenuhi syarat dan

kelayakan dalam enkripsi Hybrid Algoritma FEAL dan ElGamal, serta mampu

dalam proses enkripsi dan dekripsi pesan baik berupa karakter maupun berupa

dokumen *txt, *rtf.

5. Dalam aplikasi yang telah dibangun file teks yang telah dilakukan enkripsi

menjadi cipherteks khususnya dalam algoritma FEAL sebagi kunci memiliki

panjang karakter yang lebih panjang dari plaintext, dan digunakan dalam key

untuk Algoritma ElGamal. Dan dalam Algoritma dibagi menjadi Blok-blok

yang berupa bilangan desimal.

6. Semakin panjang plaintext baik berupa karakter maupun file teks berupa *.txt,

(65)

5.2 Saran

Saran-saran yang ingin disampaikan oleh penulis setelah menyelesaikan penelitian

sederhana dalam skripsi ini adalah sebagai berikut:

1. Sebaiknya mengadakan penilitian lebih lanjut tentang perfomasi kekuatan dari

Hybrid FEAL dan ElGamal.

2. Aplikasi ini berupa pesan teks, bagi yang ingin mengembangkan aplikasi lebih

lanjut penulis berharap dikembangkan dalam bentuk image seperti “*.png, *.jpg, *.bmp”. Maupun teks yang memiliki ukuran lebih besar seperti *.pdf.

3. Key enkripsi dalam aplikasi ini hanya sekali pakai maka, sebaiknya ditambah fasilitas penyimpanan key, sehingga key-key yeng telah dipakai memiliki

(66)

BAB 2

TINJAUAN PUSTAKA

3.1. Latar Belakang

3.1.1. Pengertian Kriptografi

Kriptografi berasal dari kata kripto dan grafi. Kripto berarti menyembunyikan, dan

grafi yaitu ilmu. Kriptografi (cryptography) adalah suatu ilmu yang mempelajari suatu

sistem penyandian untuk menjamin kerahasiaan dan keamanan data. Orang yang

melakukan disebut Criptographer. Kriptografi merupakan ilmu yang mempelajari

teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti

kerahasiaan data, keabsahan data, dan integritas data serta autentifikasi data (Menezes,

1996)

Sisem kriptografi klasik umumnya menggunakan metode subtitusi atau transposisi

dan telah digunakan jauh sebelum komputer ditemukan. Terdapat beberapa komponen

utama dalam sistem kriptografi yaitu:

Secara umum, istilah kriptografi yang sering digunakan adalah (Munir, 2006):

1. Pesan

Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya,

pesan sering juga disebut dengan plaintext atau teks jelas (cleartext). Plaintext

merupakan suatu pesan bermakna yang akan diproses menggunakan algoritma

kriptografi.

2. Ciphertext

Cipertext atau di sebut dengan cryptosystem merupakan pesan yang telah tersandi. Pesan dalam bentuk ciphertext tidak dapat dibaca karena berisi

(67)

3. Enkripsi

Enkripsi merupakan proses penyandian plaintext menjadi ciphertext atau

disebut sebagai enciphering. Enkripsi dilakukan dengan tujuan agar plaintext

tersebut tidak dapat dibaca oleh pihak yang tidak memiliki otoritas

(wewenang).

4. Dekripsi

Dekripsi merupakan proses pengembalian ciphertext menjadi plaintext semula

atau di sebut deciphering. Dekripsi dilakukan ketika pesan telah sampai

kepada pihak yang dituju.

5. Kunci (key).

Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan

dekripsi. Kunci dapat juga berupa string atau deretan bilangan. Keamanan

suatu algoritma kriptografi biasanya tergantug kepada kerahasiaan penyebaran

key.

6. Kriptosistem (cryptosystem)

Cryptosystem adalah perangkat keras atau implementasi perangkat lunak kriptografi yang diperlukan atau mentranformasi sebuah pesan asli menjadi

ciphertext atau juga sebaliknya.

3.1.2. Jenis Kriptografi

Menurut (Munir, 2006) terdapat dua jenis algoritma kriptografi berdasarkan jenis

kunci yang digunakan, yaitu:

1. Algoritma Kriptografi Simetri (Konvensional) / Symetric Cryptosystem

2. Algoritma Kriptografi Asimetri (Kunci Publik) / Assymetric Cryptosystem

1. Kriptografi Simetri / Symetric Cryptosystem

Konsep dasar dari kriptografi simetri adalah kunci yang digunakan untuk enkripsi

merupakan kunci yang sama dengan kunci untuk dekripsi. Istilah lain untuk

kriptografi simetri adalah kriptografi kunci privat (private-key cryptography).

Kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional

(68)

dekripsi yang kuncinya harus dirahasiakan. Dan contoh disini yang diambil adalah

DES (Data Encrpytion Standart), Blowfish, IDEA. Dua kategori yang termasuk

algoritma simetri adalah algoritma blok cipher dan stream cipher. Proses enkripsi

dan dekripsi dapat dilihat pada gambar 2.1 dibawah ini:

Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem

a. Block Cipher

Algoritma block cipher adalah algoritma yang masukan dan keluarannya

berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode

operasi enkripsi block cipher.

1. Data Encryption Standard (DES) 2. AES (Advanced Encryption Standard)

3. Blowfish

b. Stream Cipher

Stream cipher (cipher aliran) adalah cipher yang berasal dari hasil XOR antara bit plaintext dengan setip bit kuncinya. Stream cipher sangat rawan terhadap

attack dan pembalikan kunci. Beberapa model algoritma stream cipher adalah antara lain:

1. One Time Pad (OTP) 2. Rivest Code 4 (RC4)

Kelebihan algoritma simetri adalah:

a. Proses enkripsi dekripsi kriptografi simetri membutuhkan waktu yang relatif

singkat.

b. Ukuran kunci yang relatif pendek.

c. Otentifikasi pengiriman pesan langsung diketahui dari ciphertext yang diterima

(69)

Kekurangan kriptografi simetri adalah:

a. Kunci simetri harus dikirim melalui saluran komunikasi yang aman dan kedua

entitas yang berkomunikasi harus menjaga kerahasiaan kunci.

b. Kunci harus sering diubah, setiap kali melaksanakan komunikasi.

2. Kriptografi Asimetri / Symetric Cryptosystem

Konsep dasar kriptografi asimetri sering juga disebut dengan algoritma kunci publik

(plaintext key), dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan

dekripsi berbeda. Pada algoritma simetri kunci dibagi dua bagian, yaitu:

1. Kunci umum (public key): kunci yang boleh dikataui oleh semua orang / kunci

dipublikasikan.

2. Kunci rahasia (private key): kunci yang dirahasiakan / hanya diketui oleh

pengirim dan penerima pesan saja.

Kunci-kunci tersebut berhubungan satu dengan yang lain. Dengan kunci

plaintext orang dapat mengenkripsi pesan tapi tidak bisa mendekripsikannya. Hanya orang yang memiliki kunci rahasia yang dapat di dekripsi pesan tersebut. Algoritma

asimetri dapat mengirim pesan dengan lebih aman dari algoritma simetri.

Dalam kriptografi asimetris digunakan dua buah kunci yang berbeda dalam

proses enkripsi dan dekripsi lagi. Salah satu disebut kunci publik (plaintext key) dapat

dipublikasikan. Sedangkan kunci yang lain disebut kunci privat (private key) yang

harus dirahasiakan. Misalnya bila A mengirim pesan kepada B, A dapat menyandikan

pesannya menggunakan kunci plaintext B, dan bila B ingin membaca pesan tersebut,

maka Si B tersebut perlu mendekripsikan dengan kunci privatnya. Dengan demikian

kedua belah pihak dapat menjamin asal pesan serta keaslian pesan tersebut, karena

adanya mekasnisme ini. Contoh dari sistem ini antara lain RSA Scheme dan Merkie

Hellman Scheme. Proses enkripsi dan dekripsi pada algoritma asimetri dapat dilihat

(70)

Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem

3.1.3. Tujuan Kriptografi

Ditinjau dari tujuan kriptografi sendiri adalah sebagai berikut (Menezes, Oorschot dan

Vanstone, 1996):

1. Kerahasiaan (confidentialy)

Merupakan layanan yang bertujuan untuk mendaga agar pesan tidak dapat

dibaca oleh pihak-pihak yang tidak memiliki otoritas (wewenang). Dalam

kriptografi layanan ini dapat direalisasikan dengan menyandikan pesan

ciphertext. Misalnya kata “majid” dapat disandikan dengan “abcde”. Istilah lain yang serupa dengan confidentialy adalah secrecy dan privacy.

2. Integritas data (data integrity)

Merupakan layanan yang menjamin bahwa pesan asli masih uth atau belum

dimanipulasi selama proses pengiriman. Dengan kata lain, aspek keamanan ini dapat diungkap sebagai pertanyaan “ apakah pesan yang diterima masih asli atau sudah di lakukan modifikasi”.

3. Otentifikasi (autentification)

Merupakan layanan yang berhubungan dengan identifikasi, baik

mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user autentification atau entity autentification). Dua pihak yang saling berkomunikasi harus dapat mengidentifikasi satu sama yang lainnya sehingga

si penerima memastikan sumber pesan.

4. Non-repudiation

Merupakan layanan untuk mencegah entitas yang berkomunikasi melakukan

penyangkalan, yaitu si pengirim pesan menyangkal melakukan pengiriman

(71)

3.1.4. Serangan Terhadap Kriptografi

Attack (serangan) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis untuk menemukan kunci atau plaintext ke ciphertext dalam suatu sistem kriptogafi.

Kriptanalis akan berusaha untuk menemukan plaintext dari ciphertext tanpa memiliki

akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang

digunakan dalam menemukan kunci, serangan dapat dibagi menjadi exahaustive atau

brute force attack dan analytical attack (Fitria, 2007).

Exhaustive atau brute force attack merupakan serangan untuk mendapatkan plaintext dai ciphertext dengan mencoba satu persatu kombinasi atau kemungkinan kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi

yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plaintext dan

ciphertext.

a. Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi

atas dua macam, yaitu serangan pasif dan serangan aktif:

1. Serangan aktif

Pada serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi

sistem untuk keuntungan pribadinya. Misalnya penyerang mengubah aliran pesan

seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan

potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang

tersimpan, dan sebagainya.

2. Serangan pasif

Pada proses ini, penyerang tidak terlibat dalam komunikasi antara pengirim dan

penerima pesan, namun penyerang menyadap semua pertukaran pesan antara

kedua entitas tersebut, tujuan utamanya adalah untuk mendapatkan sebanyak

(72)

2.1.5 Teknik Enkripsi dan Dekripsi

a. Teknik Subtitusi

Teknik subtitusi akan diganti suatu kode dengan kode yang lain, degan menggunakan

tabel subtitusi. Dapat ditampilkan dalam tabel dibawah ini. Dapat dilihat pada tabel

2.1 dibawah ini:

Tabel 2.1 Teknik subtitusi

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

M A J I D ! @ # $ % ^ & * ( ) S Y 4 B R U L 0 1 2 3

Tabel subtitusi diatas dibuat secara acak, misalkan huruf A akan diganti dengan huruf M, dan huruf B diganti dengan huruf A begitu seterusnya. Misalkan kata “ENKRIPSI” akan dienkripsi dengan teknik subtitusi dengan tabel diatas menjadi “D(^4$SBS”. Untuk memperoleh kata “ENKRIPSI” kembali maka dilakukan pula melihat tabel subtitusi diatas.

b. Teknik Blocking

Teknik blocking yaitu membagi pesan plaintext kedalam blok-blok pesan yang kemudian akan di enkripsi secara independen. Misalkan kalimat “TEKNIK BLOCKING ENCRYPTION METHODE ” akan dibagi kedalam blok-blok sebagai berikut. Dapat dilihat pada tabel 2.2 dibawah ini:

Tabel 2.2 Teknik Blocking

T K C space Y N H

E space K E P space O

K B I N T M D

N L N C I E E

Gambar

Gambar 3.1 Diagram Ishikawa pada implementasi Algoritma hybrid FEAL dan  Elgamal dalam pengamanan Data Teks
Gambar 3.2 Use case Algoritma hybrid FEAL dan ElGamal
Tabel 3.1 Dokumentasi naratif program enkripsi dan dekripsi Algoritma FEAL dan
Gambar 3.3 Proses Enkripsi dan Dekripsi dengan sequence diagram Algoritma Hybrid
+7

Referensi

Dokumen terkait

Narasumber yang dipilih penulis adalah dua orang perawat yang telah bekerja lebih dari lima tahun di Panti Lansia Santa Anna dan dua orang lansia yang tinggal di Panti Lansia Santa

Tujuan dari paper ini adalah untuk memperlihatkan bagaimana pemimpin NU, Abdurrahman Wahid (selanjutnya ditulis Gus Dur), menggunakan wacana dialog antaragama sebagai: pertama

Dalam masingmasing kategori terdapat beberapa masalah yang dihadapi oleh user, dan tiap user dapat membagi masalah yang dihadapinya dengan menyesuaikan topik yang sudah dibuat

Peningkatan Teknologi Petanian Meningkatkan Pendapatan Petani Terwujudnya pembangunan ekonomi yang berbasiskan agroindustri Berkembangnya usaha mikro, kecil, menengah dan

Pengelompokkan yang dilakukan ialah dengan membentuk suatu database, yang merupakan kumpulan dari tabel-tabel yang saling berelasi, dan merupakan wadah dimana data-data tersebut

Secara umum disimpulkan bahwa pencapaian target terhadap beberapa indikator yang dicantumkan dalam RPJMD Kabupaten Padang Pariaman Tahun 2010 2015 khususnya untuk

Di jaman teknologi yang serba cepat ini beberapa bank telah membuat layanan informasi untuk memenuhi kebutuhan akan informasi baik untuk kalangan intern maupun ekstern dalam hal

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