• Tidak ada hasil yang ditemukan

Studi Algoritma RIJNDAEL Dalam Sistem Keamanan Data

N/A
N/A
Protected

Academic year: 2016

Membagikan "Studi Algoritma RIJNDAEL Dalam Sistem Keamanan Data"

Copied!
83
0
0

Teks penuh

(1)

SKRIPSI

EKO SATRIA

051411010

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

EKO SATRIA

051411010

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul : STUDI ALGORITMA RIJNDAEL

DALAM SISTEM KEAMANAN DATA

Kategori : SKRIPSI

Nama : EKO SATRIA

Nomor Induk Mahasiswa : 051411010

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan,

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dra. Mardiningsih, M.Si. Syahriol Sitorus, S.Si, M.IT.

NIP. 131803344 NIP. 132174687

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU Ketua,

(4)

PERNYATAAN

STUDI ALGORITMA RIJNDAEL DALAM SISTEM KEAMANAN DATA

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan,

(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpahan rahmat dan karunia-Nya skripsi ini berhasil diselesaikan dalam waktu yang telah direncanakan.

(6)

ABSTRAK

Algoritma kriptografi bernama Rijndael didesain oleh Vincent Rijmen dan John Daemen asal Belgia yang keluar sebagai pemenang kontes algoritma kriptografi sebagai pengganti DES yang diadakan oleh NIST (National Institutes of Standards and Technology) milik pemerintah Amerika Serikat pada 26 November 2001. Algoritma Rijndael inilah yang kemudian dikenal dengan Advanced Encryption Standard (AES). Setelah mengalami beberapa proses standardisasi oleh NIST, Rijndael kemudian diadopsi menjadi standard algoritma kriptografi secara resmi pada 22 Mei 2002.

Tugas akhir ini membahas tentang studi dan implementasi Algoritma Rijndael untuk menyandikan data yang disimpan dalam media penyimpanan dan dalam pengimplementasinya menggunakan bahasa pemrograman Microsoft Visual Basic 6.0.

(7)

THE STUDY OF THE ALGORITHM RIJNDAEL IN THE SECURITY SYSTEM OF THE DATA

ABSTRACT

The cryptography algorithm named Rijndael was designed by Vincent Rijmen and John Daemen from Belgium that went out as the winner of the contest of the cryptography algorithm as the replacement Des that was held by NIST (National Institutes of Standards and Technology) property of the United States government on November 26 2001. This Rijndael algorithm that afterwards was known with Advanced Encryption Standard (AES). After experiencing several processes of the standardisation by NIST, Rijndael was afterwards adopted to standard the cryptography algorithm officially on May 22 2002.

(8)

DAFTAR ISI

2.3.3 Teknik Permutasi atau Teknik Transposisi 16

2.4 Teknik-teknik Kriptanalisis 17

2.5Algoritma Rijndael 22

2.6 Keamanan Rijndael 32

3.2Implementasi Algoritma Rijndael 36

3.2.1 Pembentukan Kotak Substitusi (S-Box) 36

3.2.2 Proses MixColumns 39

3.2.3 Proses Enkripsi 39

(9)

3.3 Flowchart Program 47

3.4 Implementasi 48

3.5 RijndaelUntuk Integritas Data 54

BAB 4 KESIMPULAN DAN SARAN

4.1 Kesimpulan 60

4.2 Saran 61

DAFTAR PUSTAKA 62

(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Proses enkripsi dan dekripsi 10

Gambar 2.2 Algoritma simetri 11

Gambar 2.3 Algoritma tak simetri 13

Gambar 2.4 Permutasi 16

Gambar 2.5 Serangan kriptografi man-in-the middle 19

Gambar 2.6 Diagram proses enkripsi dan proses dekripsi 24

Gambar 2.7 Transformasi SubByte dengan S-Box 25

Gambar 2.8 Proses SubBytes 25

Gambar 2.9 Hasil SubBytes 25

Gambar 2.10 Transformasi Shiftrows 26

Gambar 2.11 Proses transformasi Shiftrows 27

Gambar 2.12 Hasil dari ShiftRows 28

Gambar 2.13 Operasi MixColumns 28

Gambar 2.14 Hasil keseluruhan MixColumns 28

Gambar 2.15 Transformasi AddRoundKey 28

Gambar 2.16 Hasil AddRoundKey 29

Gambar 2.17 Proses ekspansi kunci 30

Gambar 2.18 Proses algoritma Rijndael 31

Gambar 3.1 Flowchart aplikasi enkripsi dan dekripsi algoritma Rijndael 47

Gambar 3.2 Form utama 48

Gambar 3.3 Hasil enkripsi teks 49

Gambar 3.4 Hasil dekripsi teks 49

Gambar 3.5 Enkripsi file 50

Gambar 3.6 Dekripsi file 50

Gambar 3.7 Hasil file enkripsi 51

(11)

DAFTAR TABEL

Halaman

Tabel 2.1 Subtitusi 15

Tabel 2.2 Teknik blok 16

Tabel 2.3 Versi-versi AES 22

Tabel 2.4 S-Box Rijndael 24

(12)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Data merupakan salah satu aset penting dalam kelangsungan hidup perusahaan mana

pun, instansi-instansi pemerintahan, maupun institusi-institusi pendidikan.

Penyimpanan data memerlukan berbagai macam pertimbangan, terutama dari segi

keamanannya dan kerahasiaannya.

Dalam menjaga keamanan data terdapat sebuah metode pengamanan data yang

dikenal dengan nama kriptografi. Kriptografi merupakan salah satu metode

pengamanan data yang dapat digunakan untuk menjaga kerahasiaan data, keaslian

data serta keaslian pengirim.

Kriptografi adalah ilmu yang berguna untuk mengacak (kata yang lebih tepat

adalah masking) data sedemikian rupa sehingga tidak bisa dibaca oleh pihak ke tiga.

Tentu saja data yang diacak harus bisa dikembalikan ke bentuk semula oleh pihak

yang berwenang.

Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari

teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi

seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data

.

Data yang ingin diacak biasanya disebut Plainteks (Plaintext). Data diacak

dengan menggunakan Kunci Enkripsi (Encryption Key). Proses pengacakan itu sendiri

disebut Enkripsi (Encryption). Plainteks yang telah diacak disebut Cipherteks

(13)

Dekripsi (Decryption). Kunci yang digunakan pada tahap Dekripsi disebut Kunci

Dekripsi (Decryption Key).

2 (Dua) tipe dasar dari teknologi kriptografi adalah symmetric key

(secret/private key) cryptography dan asymmetric (public key) cryptography. Pada

symmetric key cryptography, baik pengirim maupun penerima memiliki kunci rahasia

yang umum. Pada asymmetric key cryptography, pengirim dan penerima

masing-masing berbagi kunci publik.

Algoritma kriptografi yang baik akan memerlukan waktu yang lama untuk

memecahkan data yang telah disandikan. Seiring dengan perkembangan teknologi

komputer, dunia teknologi informasi membutuhkan algoritma kriptografi yang lebih

kuat dan aman.

Algoritma kriptografi bernama Rijndael yang didesain oleh Vincent Rijmen dan

John Daemen asal Belgia sebagai pemenang kontes algoritma kriptografi pengganti

DES yang diadakan oleh NIST (National Institutes of Standards and Technology)

milik pemerintah Amerika Serikat pada 26 November 2001. Algoritma Rijndael inilah

yang kemudian dikenal dengan Advanced Encryption Standard (AES). Setelah

mengalami beberapa proses standardisasi oleh NIST, Rijndael kemudian diadopsi

menjadi standard algoritma kriptografi secara resmi pada 22 Mei 2002.

1.2Perumusan Masalah

Bagaimana menganalisa dan mengimplementasikan algoritma Rijndael dalam

menjaga keamanan data agar pihak yang tidak berwenang atau Kriptanalisis tidak

dapat memecahkan data yang telah diacak sehingga keamanan dan kerahasian data

(14)

1.3Pembatasan Masalah

Dalam perancangan sistem keamanan data menggunakan algoritma Rijndael

dilakukan beberapa batasan sebagai berikut:

1. Metode yang digunakan menggunakan algoritma Rijndael.

2. Dalam pengamanan data hanya sebatas integritas data.

3. Dalam pengamanan data file yang dapat diproses file-file yang ada pada

Microsoft Office, file berekstensi exe, rtf, txt.

4. Dalam perancangan dan menerapkan algoritma Rijndael dengan

menggunakan bahasa pemrograman Visual Basic 6.0.

1.4 Tujuan Penelitian

Tujuan penelitian menganalisa dan mengimplentasikan algoritma Rijndael dalam

sistem pengamanan data.

1.5 Kontribusi Penelitian

Manfaat penelitian ini untuk menambah pengetahuan dan wawasan penulis tentang

kriptografi khususnya enkripsi dan dekripsi di dalam pengamanan dan kerahasiaan

(15)

1.6 Metode Penelitian

Penelitian ini dilakukan dengan langkah-langkah sebagi berikut:

1. Melakukan studi literatur mengenai algoritma Rijndael baik pada beberapa

buku, makalah, maupun artikel-artikel yang ada pada situs-situs internet yang

berhubungan dengan algoritma Rijndael.

2. Menganalisa proses enkripsi dan dekripsi pada algoritma Rijndael.

3. Melakukan perancangan dan menerapkan algoritma Rijndael dengan

menggunakan bahasa pemrograman Visual Basic 6.0.

1.7Tinjauan Pustaka

Dalam tulisan ini, penulis memanfaatkan buku-buku yang dapat dipergunakan untuk

menjelaskan teori-teori pemecahan masalah atau dasar pemikiran untuk menjelaskan

masalah yang dibahas.

(Andi, 2003) dalam bukunya ”Memahami Model Enkripsi dan Security Data”,

berkaitan dengan masalah yang terjadi dan perlunya pengamanan terhadap data yang

ada dalam komputer, lingkup keamanan data dari suatu sistem komputer mencakup

hal-hal yang tidak saja berkaitan dengan:

1. Keamanan fisik, komputer harus diletakkan pada tempat yang dapat

dikontrol, karena kemungkinan penyalahgunaan dapat terjadi (user yang

tidak disiplin meninggalkan komputer dalam keadaan hidup sehingga

orang tidak berhak dapat menggunakan fasilitas komputer tersebut).

2. Keamanan akses, apabila seluruh akses sistem komputer secara

administrasi harus dikontrol dan terdokumentasi, maka suatu

(16)

3. Keamanan file atau data, apabila file atau data yang sensitif dan bersifat

rahasia, maka diperlukan tingkat akses dan bahkan dapat dibuatkan suatu

kode sandi tertentu. Jika file atau data tersebut dicuri, maka isi

informasinya tidak mudah didapatkan.

4. Keamanan jaringan, dengan pemanfaatan jaringan publik, data yang

ditransmisikan dalam jaringan harus aman dari kemungkinan dapat

diketahui isi informasinya sehingga untuk informasi yang sensitif harus

dibuatkan kode sandi tertenru untuk pengamanannya pada saat transmisi.

(Dony Ariyus, 2006) dalam bukunya “Kriptografi Keamanan Data dan

Komunikasi“, kriptografi berasal dari bahasa Yunani, menurut bahasa dibagi menjadi

2 (dua) yaitu kripto dan graphia, kripto berarti secret (rahasia) dan graphia berarti

writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni untuk

menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain.

Algoritma adalah urutan langkah-langkah logis untuk penyelesaian masalah yang

disusun secara sistematis. Algoritma kriptografi merupakan langkah-langkah logis

untuk menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut.

Algoritma kriptografi terdiri dari 3 (tiga) fungsi dasar yaitu:

1. Enkripsi, merupakan hal yang sangat penting dalam kriptografi yang

merupakan pengaman data yang dikirimkan terjaga rahasianya. Pesan asli

disebut plaintext yang dirubah menjadi kode-kode yang tidak dimengerti.

Enkripsi bisa diartikan dengan cipher.

2. Deskripsi, merupakan kebalikan dari enkripsi, pesan yang telah dienkripsi

dikembalikan kebentuk asalnya (plaintext) disebut dengan deskripsi pesan.

3. Kunci, yang dimaksud disini adalah kunci yang dipakai untuk melakukan

enkripsi dan dekripsi, kunci terbagi 2 (dua) bagian yaitu kunci pribadi (private

(17)

(Rinaldi Munir, 2006) dalam bukunya “Kriptografi“, Rijndael menggunakan

substitusi dan permutasi, dan sejumlah putaran (cipher berulang) setiap putaran

menggunakan kunci internal yang berbeda (kunci setiap putaran disebut round key).

Joan Daemen & Vincent Rijmen, dalam artikel yang berjudul A Specification

for Rijndael, the AES Algorithm, menjelaskan input dan output dari algoritma AES

terdiri dari urutan data sebesar 128 bit. Urutan data yang sudah terbentuk dalam satu

kelompok 128 bit tersebut disebut juga sebagai blok data atau plaintext yang nantinya

akan dienkripsi menjadi chipertext. Chiper key dari AES terdiri dari key dengan

panjang 128 bit, 192 bit, atau 256 bit.

Federal Information Processing Standards Publication 197, dalam artikel

yang berjudul Announcing the ADVANCED ENCRYPTION STANDARD (AES),

menjelaskan pada algoritma AES, jumlah blok input, blok output dan state adalah

128 bit. Dengan besar data 128 bit, berarti Nb=4 yang menunjukkan panjang data tiap

baris adalah 4 byte. Dengan blok input atau blok data sebesar 128 bit, key yang

digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok

input. Chiper key pada algoritma AES bisa menggunakan kunci dengan panjang

128 bit, 192 bit atau 256 bit. Perbedaan panjang kunci akan mempengaruhi jumlah

(18)

BAB 2

LANDASAN TEORI

2.1 Teori Dasar Kriptografi

Kriptografi (cryptography) berasal dari bahasa Yunani “cryptos” artinya “secret”

(rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti

“secret writing” (tulisan rahasia). Ada beberapa definisi kriptografi yang telah

dikemukakan di dalam beberapa literatur. Definisi yang dipakai di dalam buku-buku

yang lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan

seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk

yang tidak dapat dimengerti lagi maknanya. Definisi ini mungkin cocok pada masa

lalu di mana kriptografi digunakan untuk keamanan komunikasi penting seperti

komunikasi di kalangan militer, diplomat dan mata-mata. Namun saat ini kriptografi

lebih dari sekedar privacy, tetapi juga tujuan data integrity, authentication dan non

repudiation.

Ada 4 (empat) tujuan mendasar dari ilmu kriptografi ini yang juga merupakan

aspek keamanan informasi yaitu:

1. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga

agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.

Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan

menjadi cipherteks.

2. Integritas data (data integrity), adalah layanan yang menjamin bahwa pesan

(19)

Dengan kata lain, aspek keamanan ini dapat diungkapkan sebagai pertanyaan:

“Apakah pesan yang diterima masih asli atau tidak mengalami perubahan?”.

Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk

mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain

penyisipan, penghapusan, dan pensubstitusian data lain ke dalam pesan yang

sebenarnya.

3. Otentikasi (authentication), adalah layanan yang berhubungan dengan

identifikasi, baik mengindentifikasi kebenaran pihak-pihak yang

berkomunikasi (user authentication atau entity authentication) maupun

mengindentifikasi kebenaran sumber pesan (data origin authencation).

Pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain

sehingga dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran

komunikasi juga harus diotentikasi asalnya. Dengan kata lain, aspek keamanan

ini dapat diungkapkan sebagai pertanyaan: “Apakah pesan yang diterima

benar-benar berasal dari pengirim yang benar?”.

4. Nirpenyangkal (non-repudiation), adalah layanan untuk mencegah entitas

yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan

menyangkal melakukan pengiriman atau penerima pesan menyangkal telah

menerima pesan.

2.2 Algoritma Kriptografi

Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan

dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi.

Beberapa cipher memerlukan algoritma yang berbeda untuk enciphering dan

dechiphering.

Keamanan algoritma kriptografi sering diukur dari banyaknya kerja yang

dibutuhkan untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci

(20)

lama waktu yang dibutuhkan, maka semakin kuat algoritma tersebut dan semakin

aman digunakan untuk menyandikan pesan.

Algoritma kriptografi terdiri dari fungsi dasar yaitu:

1. Enkripsi, merupakan hal yang sangat penting dalam kriptografi yang

merupakan pengamanan data yang dikirimkan terjaga rahasianya, pesan asli

disebut plainteks yang dirubah menjadi kode-kode yang tidak dimengerti.

Enkripsi bisa diartikan dengan cipher atau kode.

2. Dekripsi, merupakan kebalikan dari enkripsi, pesan yang telah dienkripsi

dikembalikan kebentuk asalnya (plainteks) disebut dengan dekripsi pesan.

Algoritma yang digunakan untuk dekripsi tentu berbeda dengan yang

digunakan untuk enkripsi.

3. Kunci, yang dimaksud di sini adalah kunci yang dipakai untuk melakukan

enkripsi dan dekripsi, kunci terbagi jadi 2 (dua) bagian yaitu kunci pribadi

(private key) dan kunci umum (public key).

Konsep matematis yang mendasari kriptografi adalah relasi antara 2 (dua)

buah himpunan yaitu himpunan yang berisi elemen-elemen plainteks dan himpunan

yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan

elemen-elemen antar kedua himpunan tersebut. Misalkan P menyatakan plainteks dan

C menyatakan cipherteks, maka fungsi enkripsi E memetakan P ke C,

E(P)=C (2.1)

Dan fungsi dekripsi D memetakan C ke P,

(21)

Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka

kesama berikut harus benar,

D(E(P))=P (2.3)

Kriptografi modern menggunakan kunci, yang dalam hal ini algoritma tidak

lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci adalah parameter

yang digunakan untuk transformasi enciphering dan dechipering. Kunci biasanya

berupa string atau deretan bilangan. Jika menggunakan kunci K, maka fungsi enkripsi

dan dekripsi dapat ditulis sebagai

EK(P)=C dan DK(C)=P (2.4)

dan ke dua fungsi ini memenuhi

DK(EK(P))=P (2.5)

Gambar dibawah memperlihatkan skema enkripsi dan dekripsi dengan

menggunakan kunci.

Gambar 2.1 Proses enkripsi dan dekripsi

2.2.1 Algoritma Simetri

Algoritma ini juga sering disebut dengan algoritma klasik, karena memakai kunci

yang sama untuk kegiatan enkripsi dan dekripsinya. Mengirim pesan dengan

menggunakan algoritma ini, penerima pesan harus diberitahukan kunci dari pesan

Enkripsi Dekripsi

Plainteks Cipherteks Plainteks

(22)

tersebut agar bisa mendekripsi pesan yang dikirim. Keamanan dari pesan yang

menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh

orang lain, maka orang tersebut bisa melakukan enkripsi dan dekripsi terhadap pesan

tersebut.

Secara umum, cipher yang termasuk ke dalam kriptografi simetri beroperasi

dalam mode blok (block cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan

terhadap satu blok data yang berukuran tertentu, atau beroperasi dalam mode aliran

(stream cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap 1 bit atau

1 byte data. Aplikasi kriptografi simetri yang utama adalah melindungi kerahasiaan

data yang dikirim melalui saluran tidak aman dan melindungi kerahasiaan data yang

disimpan pada media yang tidak aman. Kelemahan dari sistem ini adalah baik

pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga

pengirim pesan harus mencari cara yang aman untuk memberitahukan kunci kepada

penerima pesan.

Gambar 2.2 Algoritma simetri

Namun, di samping kelemahan tersebut, kriptografi simetri memiliki

keuntungan juga. Keuntungan menggunakan kriptografi simetri ini adalah kecepatan

operasinya yang sangat baik. Dibandingkan dengan kriptografi tak simetri, kriptografi

simetri memiliki kecepatan operasi yang jauh lebih cepat. Kelebihan kriptografi kunci

simetri:

1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi dan

dekripsi membutuhkan waktu yang singkat.

2. Ukuran kunci simetri relatif pendek. Algoritma kriptografi simetri dapat

digunakan untuk membangkitkan bilangan acak.

Enkripsi Dekripsi

Plainteks Cipherteks Plainteks

(23)

3. Algoritma kriptografi simetri dapat disusun untuk menghasilkan cipher

yang lebih kuat.

4. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang

diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan

saja.

Kelemahan kriptografi kunci simetri:

1. Kunci simetri harus dikirim melalui saluran yang aman. 2 (dua) entitas

yang berkomunikasi harus menjaga kerahasiaan kunci ini.

2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.

2.2.2 Algoritma Tak Simetri

Algoritma tak simetri sering juga disebut dengan algoritma kunci publik, dengan arti

kata kunci yang digunakan untuk melakukan enkripsi dan dekripsinya berbeda. Pada

algoritma tak simetri kunci terbagi menjadi 2 (dua) bagian:

1. Kunci umum (public key) adalah kunci yang boleh semua orang tahu

(dipublikasikan).

2. Kunci pribadi (private key) adalah kunci yang dirahasiakan (hanya boleh

diketahui oleh satu orang).

Kunci-kunci tersebut saling berhubungan satu dengan yang lainnya. Dengan kunci

publik orang dapat mengenkripsi pesan tapi tidak bisa mendekripsinya, hanya orang

yang memiliki kunci pribadi yang dapat mendekripsi pesan tersebut. Algoritma tak

(24)

Gambar 2.3 Algoritma tak simetri

Kelebihan kriptografi kunci tak simetri:

1. Hanya kunci pribadi yang perlu dijaga kerahasiaannya oleh setiap entitas

yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin).

Tidak ada kebutuhan mengirim kunci pribadi sebagaimana pada sistem

simetri.

2. Pasangan kunci publik dan kunci pribadi tidak perlu diubah, bahkan dalam

periode waktu yang panjang.

3. Dapat digunakan untuk mengamankan pengiriman kunci simetri.

4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda

tangan digital pada pesan.

Kelemahan kriptografi kunci tak simetri:

1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri,

karena enkripsi dan dekripsi menggunakan bilangan yang besar dan

melibatkan operasi perpangkatan yang besar.

2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat

kali ukuran plainteks).

3. Ukuran kunci relatif besar daripada ukuran kunci simetri.

Enkripsi Dekripsi

Plainteks Cipherteks Plainteks

(25)

4. Jika kunci publik diketahui secara luas dan dapat digunakan setiap orang,

maka cipherteks tidak memberikan informasi mengenai otentikasi

pengirim.

5. Tidak ada algoritma kunci publik yang terbukti aman.

Aplikasi kriptografi kunci publik dapat dibagi menjadi 3 (tiga) kategori, yaitu:

1. Kerahasiaan data. Seperti pada kriptografi kunci simetri, kriptografi kunci

publik dapat digunakan untuk menjaga kerahasiaan data (provide

confidentiality/secrecy) melalui mekanisme enkripsi dan dekripsi. Contoh

algoritma untuk aplikasi ini adalah RSA, Knapsack, Rabin, ElGamal, Elliptic

Curve Cryptography (ECC).

2. Tanda-tangan digital. Tanda-tangan digital (digital signature) dengan

menggunakan algoritma kriptografi kunci publik dapat digunakan untuk

membuktikan otentikasi pesan maupun otentikasi pengirim (provide

authentication). Contoh algoritmanya untuk aplikasi ini adalah RSA, DSA dan

ElGamal.

3. Pertukaran kunci (key exchange). Algoritma kriptografi kunci publik dapat digunakan untuk pengiriman kunci simetri (session keys). Contoh

algoritmanya adalah RSA dan Diffie-Hellman.

2.2.3 Fungsi Hash (Hash Function)

Fungsi hash sering disebut dengan fungsi hash satu arah (one way function), message

digest, fingerprint, fungsi kompresi dan Message Authentication Code (MAC), hal ini

merupakan suatu fungsi matematika yang mengambil input panjang variabel dan

mengubahnya kedalam urutan biner dengan panjang yang tetap. Fungsi hash biasanya

(26)

suatu tanda yang menandakan bahwa pesan tersebut benar-benar dari orang yang

diinginkan.

2.3 Teknik Dasar Kriptografi

Berikut ini dicontohkan metode atau cipher yang menjadi dasar dalam melakukan

proses enkripsi dan dekripsi pada suatu data.

2.3.1 Metode Substitusi

Metode ini berkerja dengan menukar 1 karakter yang lain. Langkah pertama adalah

membuat suatu tabel substitusi. Tidak ada aturan khusus dalam membuat tabel

substitusi, dapat dibuat sesuai keinginan, dengan catatan bahwa penerima pesan

memiliki tabel yang sama untuk keperluan dekripsi. Semakin acak tabel substitusi

maka semakin sulit pemecahan cipherteks. Salah satu contoh teknik ini adalah Caesar

cipher.

Tabel 2.1 Subtitusi

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

Plaintext : METODE SUBSTITUSI

Ciphertext : QIXSHI WYFWXMXYWM

2.3.2 Teknik Blok

Sistem enkripsi kadang membagi plainteks menjadi blok-blok yang terdiri atas

beberapa karakter yang kemudian dienkripsikan secara independen. Contoh plainteks

yang dienkripsikan dengan menggunakan teknik blok adalah: V W X Y Z

(27)

Tabel 2.2 Teknik blok

E P K I Blok 1

N S R Blok 2

K I I Blok 3

R D P Blok 4

I E S Blok 5

Dengan menggunakan teknik blok dipilih jumlah lajur dan kolom untuk

penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan

teknik ini. Plainteks dituliskan secara vertikal ke bawah berurutan pada lajur, dan

dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Cipherteksnya adalah

hasil pembacaan plainteks secara horizontal berurutan sesuai dengan bloknya. Jadi

cipherteks yang dihasilkan dengan teknik ini adalah “EPEKINSR KII RDP IES”.

Plainteks dapat pula ditulis secara horizontal dan cipherteksnya adalah hasil

pembacaan secara vertikal.

2.3.3 Teknik Permutasi atau Teknik Transposisi

Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu. Prinsipnya

adalah berlawanan dengan teknik substitusi. Dalam teknik substitusi, karakter berada

posisi yang tetap tetapi identitasnya yang diacak. Pada teknik permutasi, identitas

karakternya tetap, namun posisinya yang diacak sebelum dilakukan permutasi,

umumnya plainteks dibagi menjadi blok-blok dengan panjang yang sama. Contoh:

(28)

2.4 Teknik-teknik Kriptanalisis

Terdapat beberapa teknik dalam melakukan kriptanalisis, tergantung kepada akses

yang dimiliki oleh kriptanalis, apakah melalui cipherteks, plainteks, ataupun aspek

lain dari sistem kriptografi. Berikut adalah beberapa tipe penyerangan yang umum

dipakai untuk memecahkan sandi:

1. Known-Plaintext Analysis

Dengan prosedur ini, kriptanalis mengetahui sebagian isi plainteks dari cipherteks

yang berhasil didapatkan. Menggunakan informasi yang ada ini, kriptanalis berusaha

untuk mencari kunci yang digunakan untuk menghasilkan cipherteks.

Pesan-pesan yang memiliki format terstruktur memberikan peluang kepada

kriptanalis untuk menebak plainteks dari cipherteks yang bersesuaian. Contoh dari

pesan-pesan terstruktur ini adalah email dengan kolom from, to, subject, kemudian

salam penutup dan pembuka pada surat seperti ”dengan hormat”, salam dan lainnya.

Linear Cryptanalysis adalah salah satu algoritma yang termasuk ke dalam

serangan known-plaintext. Linear Cryptanalysis diperkenalkan oleh Mitsuru Matsui

pada tahun 1993. Pada algoritma ini penyerang akan mempelajari fungsi linear yang

merepresentasikan hubungan antara cipherteks dan plainteks untuk mendapatkan

kunci. Algoritma berbasis XOR, termasuk ke dalam algortima enkripsi atau dekripsi

yang tidak aman karena dapat dipecahkan menggunakan linear cryptanalysis.

2. Chosen-Plaintext Analysis

Kriptanalis telah dapat menghasilkan plainteks dari cipherteks yang ada, namun

kuncinya sendiri belum ditemukan. Pada serangan jenis ini kriptanalis dapat memilih

plainteks tertentu untuk dienkripsikan, yaitu plainteks yang lebih mengarahkan

(29)

Kriptanalis berusaha untuk menemukan kunci pembangun cipherteks dengan

membandingkan keseluruhan cipherteks dengan plainteks yang ada. Teknik enkripsi

RSA (Rivest Shanir Adleman) telah terbukti dapat dipecahkan menggunakan teknik

analisis ini.

Differential Analysis adalah sebuah teknik yang dikembangkan oleh Eli Biham

dan Adi Shamir. Teknik ini memberikan suatu cara untuk menemukan beberapa bit

kunci dari plainteks dan cipherteks yang tersedia, dengan begitu jumlah kemungkinan

kunci yang akan dicoba pada exhaustive key search atau brute force attack dapat

berkurang drastis, mengurangi waktu kalkulasi. Differential Analysis secara garis

besar membahas pola lengkap dari bit-bit mana saja yang berubah dan tidak berubah

pada proses pengubahan input menjadi output.

3. Ciphertext-Only Analysis

Pada teknik ini, kriptanalis hanya berbekal cipherteks saja, tanpa adanya pengetahuan

mengenai plainteks. Teknik ini membutuhkan akurasi yang tinggi dalam melakukan

penaksiran mengenai bagaimana sebuah pesan dapat disandikan.

Teknik ini dapat bekerja lebih baik dengan dukungan adanya pengetahuan

tambahan mengenai teks. Apabila plainteks ditulis dalam bahasa Inggris, maka

kriptanalis dapat menghitung frekuensi huruf dari chiperteks kemudian

membandingkannya dengan frekuensi rata-rata huruf pada teks berbahasa Inggris.

Namun cara penghitungan frekuensi huruf seperti ini hanya bekerja untuk

plainteks yang didekripsi menggunakan teknik substitusi satu ke satu. Algoritma

kriptografi modern memiliki daya tahan yang lebih tinggi terhadap jenis serangan

(30)

4. Man-In-The-Middle Attack

Penyerang, yang dalam hal ini adalah kriptanalis, masuk ke dalam saluran komunikasi

antara ke dua pihak yang akan saling bertukar kunci mereka. Penyerang menempatkan

dirinya sedemikian sehingga ke dua pihak tadi merasa bahwa mereka saling bertukar

kunci, namun sebenarnya penyeranglah memberikan kunci-kunci yang nantinya

digunakan oleh pihak-pihak tadi.

Gambar 2.5 Serangan kriptografi man-in-the middle

Teknik ini dapat dipatahkan dengan menggunakan kombinasi fungsi hash dan

algoritma kunci publik. B dapat memeriksa apakah kunci publik yang diterima benar,

dengan cara memeriksa sidik jari (fingerprint). Sidik jari ini adalah suatu fungsi hash

dari kunci publik tersebut yang diberikan melalui jalur yang berbeda dengan

pengiriman kunci publik. Sidik jari digunakan karena ukurannya yang lebih kecil

dibandingkan dengan kunci publik sehingga lebih mudah ditentukan nilai

kebenarannya.

Cara lain untuk mematahkan serangan tipe ini adalah dengan menyimpan

kunci publik dalam suatu basis data online yang menjamin kebenaran dari kunci

publik. Suatu CA (Certificate Authority) atau server kunci publik dapat memberikan

keyakinan pada pengguna, pada saat mereka menyimpan kunci bahwa kunci tersebut

bernilai benar.

5. Timing/Differential Power Analysis

Sangat berguna digunakan melawan smartcard, yang menghitung perbedaan

konsumsi elektrik dalam jangka waktu tertentu ketika microchip melakukan

(31)

mengenai perhitungan pembangkitan kunci yang digunakan dalam algoritma enkripsi

dan fungsi-fungsi pengamanan lainnya. Teknik ini dapat dicegah dengan

menggunakan random noise ketika melakukan enkripsi, atau mengacak alur fungsi

sehingga lebih sulit untuk melacak fluktuasi tenaga listrik yang terpakai. Tipe analisis

ini dikembangkan oleh Paul Kocher dari Cryptography Research. Penyerangan seperti

ini umumnya terlepas dari jenis algoritma kriptografi yang digunakan.

6. Correlation

Saling terkaitnya antara kunci dengan hasil pengenkripsian merupakan sumber utama

yang akan digunakan oleh kriptanalis. Pada kasus yang paling mudah, kunci justru

secara tidak sengaja terbocorkan oleh sistem kriptografinya sendiri. Untuk kasus yang

lebih kompleks, dicari keterhubungan antara informasi yang dapat diperoleh mengenai

kriptosistem dan informasi mengenai perkiraan kunci. Ide mengenai keterhubungan

merupakan ide dasar pada kriptosistem.

7. Kesalahan Dalam Kriptosistem

Kesalahan dalam kriptosistem dapat digunakan dalam kriptanalisis dan bahkan dapat

membocorkan kuncinya sendiri. Kesalahan tersebut dapat dimanfaatkan dalam

kriptanalisis. Kesalahan disini dapat juga berupa kelemahan dari fungsi matematis

yang digunakan oleh algoritma enkripsi dekripsi atau pemilihan kunci lemah.

Algoritma RSA merupakan contoh algoritma yang memiliki kesalahan yang dapat

diserang.

8. Rubber-Hose Cryptanalysis

Serangan jenis ini dapat dikatakan sebagai serangan yang paling efektif dan dapat

langsung memberikan hasil. Serangan ini berupa serangan langsung kepada pihak

(32)

Rubber-hose attack didasarkan pada teori bahwa manusia yang berada di

bawah tekanan akan menjadi lebih lemah. Di lain pihak, komputer tidak mengalami

stress (di bawah tekanan) sehingga tidak akan terpengaruh dengan serangan semacam

ini. Pada serangan ini, pihak ke tiga akan mengirimkan surat gelap, mengancam atau

bahkan menyiksa hingga pihak pengirim mau memberikan kunci atau bahkan

langsung memberikan plainteks yang besangkutan.

Serangan jenis ini tidak memandang tipe algoritma enkripsi dekripsi, serangan

ini bekerja untuk mematahkan seluruh algoritma enkripsi dekripsi. Karena alasan

inilah rubber-hose attack disebut sebagai serangan paling efektif. Terdapat beberapa

cara efektif untuk menghadapi serangan jenis ini, antara lain:

1. Tetap tenang dan gunakan steganografi.

2. Pindah di luar jangkauan pihak-pihak lawan, misalnya di luar negeri.

3. Tingkatkan ketahanan fisik.

4. Untuk menghindari serangan secara sosial. Menjauhlah dari orang-orang

terdekat dan jangan bina hubungan dekat (teman) baru.

5. Gunakan multipart key yang membutuhkan lebih dari satu orang untuk

melakukan enkripsi dekripsi terhadap informasi.

6. Gunakan One-Time Pad di mana tidak mungkin memecahkan cipherteks tanpa

menggunakan kunci, karena sifatnya yang terlalu panjang (sama dengan

plainteks).

9. Serangan Terhadap Atau Menggunakan Hardware Dari Cryptosystem

Serangan jenis ini merupakan serangan jenis baru yang diprediksikan akan semakin

(33)

Serangan ini didasarkan kepada perhitungan rinci dari proses enkripsi yang dilakukan

oleh suatu perangkat kripto. Dari informasi ini akan diperoleh informasi mengenai

perhitungan kunci yang digunakan. Serangan jenis ini bersifat independen terhadap

algoritma kriptografi yang digunakan oleh mobile crypto devices yang bersangkutan.

2.5 Algoritma Rijndael

Algoritma Rijndael menggunakan substitusi, permutasi dan sejumlah putaran yang

dikenakan pada tiap blok yang akan dienkripsi dekripsi. Untuk setiap putarannya,

Rijndael menggunakan kunci yang berbeda. Kunci setiap putaran disebut round key.

Rijndael beroperasi dalam orientasi byte sehingga memungkinkan untuk implementasi

algoritma yang efisien ke dalam software dan hardware. Ukuran blok untuk algoritma

Rijndael adalah 128 bit (16 byte).

Rijndael mendukung panjang kunci 128 bit sampai 256 bit dengan step 32 bit.

Panjang kunci dan ukuran blok dapat dipilih secara independen. Setiap blok dienkripsi

dalam sejumlah putaran tertentu.

Karena AES menetapkan panjang kunci adalah 128, 192, dan 256, maka

dikenal AES 128, AES 192, dan AES 256.

Tabel 2.3 Versi-versi AES

Panjang Kunci

(Nk)

Ukuran blok

(Nb)

Jumlah Round

(Nr)

AES – 128 4 4 10

AES – 192 6 4 12

(34)

Algoritma Rijndael mempunyai 3 (tiga) parameter:

1. Plainteks adalah array yang berukuran 16-byte, yang berisi data masukan.

2. Cipherteks adalah array yang berukuran 16-byte, yang berisi hasil enkripsi.

3. Kunci adalah array yang berukuran 16-byte, yang berisi kunci cipher (disebut

juga chiper key).

Garis besar algoritma Rijndael yang beroperasi pada blok 128 bit dengan kunci

128 bit adalah sebagai berikut:

5. AddRoundKey, melakukan XOR antara state awal (plainteks) dengan chiper

key. Tahap ini disebut juga initial round.

6. Putaran sebanyak Nr–1 kali. Proses yang dilakukan pada setiap putaran

adalah:

a. SubBytes adalah substitusi byte dengan menggunakan tabel substitusi

(S-Box).

b. ShiftRows adalah pergeseran baris-baris array state secara wrapping.

c. MixColumns adalah mengacak data di masing-masing kolom array

state.

d. AddRoundKey adalah melakukan XOR antara state sekarang round key.

7. Final round, proses untuk putaran terakhir:

a. SubBytes

b. ShiftRows

(35)

AddRoundKey

SubBytes ShiftRows MixColumns AddRoundKey

SubBytes ShiftRows AddRoundKey

Cipher Text Plain Text

AddRoundKey InvShiftRows

InvSubBytes

AddRoundKey InvMixColumns

InvShiftRows InvSubBytes

AddRoundKey

Plain Text Cipher Text

Garis besar algoritma Rijndael diperlihatkan pada gambar diagram di bawah ini.

Gambar 2.6 Diagram proses enkripsi dan proses dekripsi

1. Transformasi SubBytes

Transformasi SubBytes memetakan setiap byte dari array state dengan menggunakan

tabel substitusi S-Box. Tidak seperti DES yang mempunyai S-Box berbeda pada setiap

putaran, Rijndael hanya mempunyai satu buah. Tabel yang digunakan adalah:

(36)

Cara pensubstitusian adalah sebagai berikut: jika setiap byte pada array state

S[r,c]=xy, xy adalah digit heksadesimal dari nilai S[r,c], maka nilai substitusinya,

dinyatakan dengan S’[r,c], adalah elemen di dalam S-Box yang merupakan

perpotongan baris x dengan kolom y.

Gambar 2.7 Transformasi SubByte dengan S-Box

Gambar 2.8 Proses SubBytes

(37)

2. Transformasi ShiftRows

Transformasi ShiftRows melakukan pergeseran secara wrapping pada 3 (tiga) baris

terakhir dari array state. Jumlah pergeseran bergantung pada nilai baris r. Baris r=1

digeser sejauh 1 byte, baris r=2 digeser sejauh 2 byte, dan baris r=3 digeser sejauh 3

byte. Baris r=0 tidak digeser.

Gambar 2.10 Transformasi Shiftrows Geser baris ke-1:

Hasil pergeseran baris ke-1 dan geser baris ke-2:

(38)

Hasil pergeseran baris ke-2 dan geser baris ke-3:

Gambar 2.11 Proses transformasi Shiftrows

3. Tranformasi MixColumns

Transformasi MixColumns mengalikan setiap kolom dari array state dengan polinom

a(x)mod(x4+1). Setiap kolom diperlakukan sebagai polinom 4-suku pada GF(28).

Polinom a(x) yang ditetapkan adalah:

a(x)={03}x3+{01}x2+{01}x+{02} (2.6)

Transformasi ini dinyatakan sebagai perkalian matrik:

(39)

Gambar 2.12 Hasil dari ShiftRows

Gambar 2.13 Operasi MixColumns

Gambar 2.14 Hasil keseluruhan MixColumns

4. Transformasi AddRoundKey

Transformasi ini melakukan operasi XOR terhadap sebuah round key dengan array

state, dan hasilnya disimpan di array state.

(40)

Gambar 2.16 Hasil AddRoundKey

5. Ekspansi Kunci

Algoritma Rijndael melaksanakan cipher key dan membuat suatu ekspansi kunci

untuk menghasilkan suatu key schedule. Jika ekspansi kunci yang

diperlukan Rijndael Nb(Nr+1) word, sehingga bisa digunakan AES 128 bit,

maka 4(10+1)=40 word=44x32 bit=1408 bit subkey. Ekspansi dari 128 menjadi

1408 bit subkey, proses ini disebut dengan key schedule. Subkey ini diperlukan karena

setiap round merupakan suatu inisial dari Nb word untuk Nr=0 dan Nb untuk Nr=1,3

untuk Nr= 2,....,11 Nb untuk Nr=10, dari operasi ini akan didapatkan schedule kunci

(41)
(42)

Contoh dari keseluruhan proses Algoritma Rijndael

(43)

2.6 Keamanan Rijndael

Untuk Rijndael, tipe serangan square attacks cukup menjadi dikenal sebagai serangan

terbaik terhadap Rijndael. Square attacks adalah serangan yang memanfaatkan

struktur orientasi byte. Algoritma ini bekerja dengan baik pada square cipher yang

bekerja dalam 6 putaran.

Apabila Rijndael dengan kunci sepanjang 128 bit, maka serangan ini lebih

cepat dari pada exhaustive search hingga 6 kali iterasi Rijndael.

Namun, untuk AES jelas bahwa serangan ini tidak mungkin dipraktekkan

karena jumlah putaran pada Rijndael, mengakibatkan batas keamanan untuk algoritma

ini menjadi lebih besar.

Pada tahun 2002 melalui suatu proses pengujian yang sifatnya teoritis

ditemukan bahwa AES mungkin dapat dijebol atau dipecahkan. Metode attack ini

dinamakan “XLS Attack“.

Serangan ini pertama kali dipublikasikan oleh Nicolas Courtois dan Josep

Pieprzyk dalam makalah mereka yang berjudul “Cryptanalysis of Block Ciphers with

Overdefined Systems of Equations”. Teknik ini diklaim dapat memecahkan AES lebih

cepat dari cara exhaustive search. XSL attack mengandalkan pada keberhasilan

menganalisis subsistem internal dari cipher untuk menurunkan persamaan kuadrat

secara simultan. Kumpulan persamaan ini umumnya sangat besar. Contohnya pada

128 bit AES terdapat 8000 persamaan dengan jumlah variabel 1600. Metode untuk

memecahkan persamaan ini disebut XSL (eXtended Sparse Linearisation). Jika

persamaan tersebut dapat dipecahkan, maka kunci dapat diperoleh.

Jika Pemecahan persamaan tersebut menjadi masalah, maka ditemukan

persamaan yang bersifat MQ(Multivariate quadratic). Persamaan MQ merupakan

permasalahan yang bersifat NP-hard (Non Polinomial). XSL attack membutuhkan

algoritma yang efisien untuk menyelesaikan MQ. Salah satu teknik untuk

(44)

persamaan kuadrat menjadi variabel yang independen yang akan menghasilkan

persamaan linear dengan menggunakan algoritma seperti Gaussian elimination.

Tahun 2000, Courtois mengajukan algoritma untuk MQ yang bernama

XL(eXtended Linearisastion). Algoritma ini meningkatkan jumlah persamaan dengan

mengalikan dengan monomial derajat tertentu. Algoritma ini akan menghasilkan suatu

bentuk struktur yang disebut XSL. Algoritma XSL dibentuk dari algoritma XL dengan

(45)

BAB 3

PEMBAHASAN

3.1 Analisis Desain Rijndael

Daemen dalam disertasinya, Rijndael didesain berdasarkan wide trail strategy.

Strategi ini mengusulkan agar cipher terdiri dari tiga komponen utama:

1. Pencampuran kunci

Bertujuan agar keamanan algoritma tidak terletak pada dirahasiakannya

algoritma, melainkan pada kerahasiaan kunci.

2. Transformasi nonlinear

Bertujuan agar bila diketahui keluaran, maka tidak dapat diketahui

masukannya. Hal ini dapat dilakukan dengan kotak-S.

3. Transformasi linear

Bertujuan agar sebanyak mungkin transformasi nonlinear yang aktif. Dengan

memisahkan transformasi linear dengan non linear, diharapkan dapat

mendesain transformasi nonlinear terbebas dari transformasi linear dan

sebaliknya.

3.1.1 Kotak Substitusi (S-Box)

S-Box pada Rijndael didesain dengan rumusan matematika untuk menghilangkan

(46)

GF(28) dikarenakan ketahanan operasi ini terhadap analisis sandi linear dan

diferensial. Berikut ini adalah ringkasan kriteria S-Box:

a. Invertibility (untuk dekripsi).

b. Minimisasi korelasi antara kombinasi linear bit-bit masukan dan kombinasi

linear bit-bit keluaran (menahan ASL).

c. Minimisasi nilai terbesar pada tabel XOR (menahan ASD).

d. Kompleksitas ekspresi aljabar pada GF(28) (diperoleh dengan tambahan L

untuk menghalangi interpolation attack).

e. Kesederhanaan deskripsi (mudah analisisnya).

3.1.2 Operasi MixColumns

Bersama dengan operasi ShiftRows, MixColumns merupakan transformasi linear yang

bertujuan untuk menyebarkan pengaruh transformasi nonlinear ke sebanyak mungkin

komponen nonlinear di ronde selanjutnya. Apabila ShiftRows bertujuan menyebarkan

pada arah baris, maka MixColumns bertujuan menyebarkan ke arah kolom. Dengan

perpaduan dua operasi ini, diperolehlah difusi yang sangat baik.

3.1.3 Ekspansi Kunci

Subkey pada tiap ronde dapat diperoleh dari rumus:

W[i]=W[i-6]⊕W[i-1]

(47)

F merupakan fungsi penggunaan kotak-S dan penambahan konstanta ronde.

Penjadwalan kunci dapat diimplementasikan tanpa eksplisit menggunakan array W.

Jika jumlah yang tersedia kecil, maka kunci per ronde dapat dihitung on-the-fly dan

hanya membutuhkan buffer sebesar 64 byte. Ini berarti bahwa mengetahui 4 word (64

byte) berurutan dari kunci terekspansi akan dapat membangkitkan seluruh tabel

subkey. Konstanta per ronde menghilangkan sifat simetri.

3.2 Implementasi Algoritma Rijndael

Implementasi Algoritma Rijndael dirancang dalam bahasa pemrograman

Visual Basic 6.0. Berikut tahap implementasi algoritma Rijndael.

1. Pembentukan Kotak Substitusi (S-Box)

2. Proses MixColumns

3. Proses enkripsi

4. Proses dekripsi

3.2.1 Pembentukan Kotak Substitusi (S-Box)

Kotak substitusi (untuk ByteSub) dibentuk dari fungsi inversi perkalian pada GF(28)

dan kemudian ditambahkan operasi XOR terhadap fungsi affine (semacam fungsi

linear). Berikut implementasi kotak substitusi ke dalam bahasa pemrograman.

ltab(0) = 0

ltab(1) = 0 ltab(3) = 1 ptab(0) = 1 ptab(1) = 3

For i = 2 To 255 'ptab(i) = ptab(i - 1) Xor Xtime(ptab(i - 1)) If (ptab(i - 1) And &H80) Then

ptab(i) = ptab(i - 1) Xor ((ptab(i - 1) And 127) * 2) Xor &H1B

Else

ptab(i) = ptab(i - 1) Xor (ptab(i - 1) * 2) End If

(48)
(49)

If y = 0 Then s(3) = 0 s(2) = 0 s(1) = 0 s(0) = 0 Else

s(3) = ptab((CLng(ltab(&HB)) + CLng(ltab(y))) Mod 255) s(2) = ptab((CLng(ltab(&HD)) + CLng(ltab(y))) Mod 255) s(1) = ptab((CLng(ltab(&H9)) + CLng(ltab(y))) Mod 255) s(0) = ptab((CLng(ltab(&HE)) + CLng(ltab(y))) Mod 255) End If

CopyMemory s(4), s(0), 4& CopyMemory Td0(i), s(0), 4& CopyMemory Td1(i), s(3), 4& CopyMemory Td2(i), s(2), 4& CopyMemory Td3(i), s(1), 4& Next i

Implementasi S-Box kunci ekspansi dalam bahasa pemrograman.

rco(0)=&H1&:rco(1)=&H2&:rco(2)=&H4&:rco(3)=&H8&:rco(4)=&H10&

rco(5)=&H20&:rco(6)=&H40&:rco(7)=&H80&:rco(8)=&H1B&:rco(9) = &H36&

#If SUPPORT_LEVEL Then

rco(10)=&H6C&:rco(11)=&HD8&:rco(12)=&HAB&:rco(13)=&H4D&:rco(14)=&H9A& rco(15)=&H2F&:rco(16)=&H5E&:rco(17)=&HBC&:rco(18)=&H63&:rco(19)=&HC6& rco(20)=&H97&:rco(21)=&H35&:rco(22)=&H6A&:rco(23)=&HD4&:rco(24)=&HB3& rco(25)=&H7D&:rco(26)=&HFA&:rco(27)=&HEF&:rco(28)=&HC5&

(50)

3.2.2 Proses MixColumns

Operasi ini merupakan suatu operasi dari penambahan kunci dengan operasi XOR.

Berikut implementasi operasi MixColumns ke dalam bahasa pemrograman.

i = 4

Dalam proses enkripsi ini terdapat proses enkripsi teks dan enkripsi file.

1. Proses enkripsi teks

(51)

For i = 1 To Nr - 1 'Nr is number of rounds

(Te4(s(10)) And &HFF0000) Xor (Te4(s(15)) And &HFF000000) Xor fkey(k + 0)

t1 = (Te4(s(4)) And &HFF&) Xor (Te4(s(9)) And &HFF00&) Xor

(Te4(s(14)) And &HFF0000) Xor (Te4(s(3)) And &HFF000000) Xor fkey(k + 1)

t2 = (Te4(s(8)) And &HFF&) Xor (Te4(s(13)) And &HFF00&) Xor (Te4(s(2)) And &HFF0000) Xor (Te4(s(7)) And &HFF000000) Xor fkey(k + 2)

t3 = (Te4(s(12)) And &HFF&) Xor (Te4(s(1)) And &HFF00&) Xor

(Te4(s(6)) And &HFF0000) Xor (Te4(s(11)) And &HFF000000) Xor fkey(k + 3)

2. Proses enkripsi file

Public Function FileEncrypt(PlaintextFileName As String, CiphertextFileName As String, BlockBits As Long) As Long #Else

Public Function FileEncrypt(PlaintextFileName As String, CiphertextFileName As String) As Long

#End If

#If SUPPORT_LEVEL = 0 Then

(52)

Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #If SUPPORT_LEVEL = 2 Then Case 160: BlockSize = 20 Case 224: BlockSize = 28 #End If

Case Else: Err.Raise 1, , "cRijndael.FileEncrypt - Illegal BlockBits value"

End Select

MaxBlocks = MaxFileChunkSize \ BlockSize #End If

n = FileLen(PlaintextFileName) #If SUPPORT_LEVEL Then

m = ((n + BlockSize) \ BlockSize) * BlockSize #Else

m = (n + BlockSize) And (-BlockSize) 'BlockSize=16 specific #End If

FileNum = FreeFile

Open PlaintextFileName For Binary Access Read As FileNum FileNum2 = FreeFile

Open CiphertextFileName For Binary Access Write As FileNum2

'For large files, encrypt in pieces no larger than

(53)

Next i

(54)

3.2.4 Proses Dekripsi

Dalam proses dekripsi ini terdapat proses dekripsi teks dan dekripsi file.

1. Proses dekripsi teks

Public Sub BlockDecrypt(plaintext() As Byte, ciphertext() As Byte, p As Long, q As Long)

t0 = (Td4(s(0)) And &HFF&) Xor (Td4(s(13)) And &HFF00&) Xor

(Td4(s(10)) And &HFF0000) Xor (Td4(s(7)) And &HFF000000) Xor rkey(k + 0)

t1 = (Td4(s(4)) And &HFF&) Xor (Td4(s(1)) And &HFF00&) Xor

(55)

t2 = (Td4(s(8)) And &HFF&) Xor (Td4(s(5)) And &HFF00&) Xor

(Td4(s(2)) And &HFF0000) Xor (Td4(s(15)) And &HFF000000) Xor rkey(k + 2)

t3 = (Td4(s(12)) And &HFF&) Xor (Td4(s(9)) And &HFF00&) Xor (Td4(s(6)) And &HFF0000) Xor (Td4(s(3)) And &HFF000000) Xor rkey(k + 3)

2. Proses dekripsi file

Public Function FileDecrypt(PlaintextFileName As String, CiphertextFileName As String, BlockBits As Long) As Long #Else

Public Function FileDecrypt(PlaintextFileName As String, CiphertextFileName As String) As Long

#End If

#If SUPPORT_LEVEL = 0 Then

Const BlockSize As Long = 16 'bytes

Const MaxBlocks As Long = MaxFileChunkSize \ BlockSize #Else #If SUPPORT_LEVEL = 2 Then Case 160: BlockSize = 20 Case 224: BlockSize = 28 #End If

Case Else: Err.Raise 1, , "cRijndael.FileDecrypt - Illegal BlockBits value"

End Select

MaxBlocks = MaxFileChunkSize \ BlockSize #End If

(56)

MsgBox "File Size Error - ciphertext file not a multiple of

Open PlaintextFileName For Binary Access Write As FileNum2

'For large files, decrypt in pieces no larger than

(57)

For i = 0 To m - BlockSize Step BlockSize

#If SUPPORT_LEVEL = 2 Then Case 160 file." & vbCrLf & "Wrong key, keysize, or blocksize?"

#Else

MsgBox "warning - incorrect length field in decrypted file." & vbCrLf & "Wrong key or keysize?"

(58)

3.3 Flowchart Program

Adapun flowchart dari aplikasi enkripsi dan dekripsi adalah sebagai berikut:

Gambar 3.1 Flowchart aplikasi enkripsi dan dekripsi algoritma Rijndael Mulai

Tampilan Form Utama

Pilih Proses

File

Teks

Input teks

Masukan Kunci

Pilih Ukuran Blok Ya

Tidak

Pilih Panjang Kunci

File Enkripsi

Enkripsi Ya

Tidak

Dekripsi

Dekripsi

Input file

Output teks/file

Ya

Tidak Ya

Tidak

Proses

(59)

3.4 Implementasi

Implementasi algoritma Rijndael dibuat menggunakan Microsoft Visual Basic 6.0.

Aplikasi terdiri enkripsi dekripsi teks dan enkripsi dekripsi file.

Gambar 3.2 Form utama

Peletakan enkripsi dekripsi teks dan enkripsi dekripsi file diletakan bersama

pada 1 (satu) form dan hanya dipisahkan menggunakan frame yang masing-masing

didalamnya terdapat tombol encrypt dan decrypt. Sebelum melakukan enkripsi dan

dekripsi baik itu teks atau file diharuskan melakukan pengisian key dan melakukan

pilihan block size dan key size yang mana secara default nya berada pada posisi 128

(60)

Gambar 3.3 Hasil enkripsi teks

Gambar 3.4 Hasil dekripsi teks

Pada enkripsi dekripsi teks telah disedia frame untuk pengisian plainteks yang

diinginkan. Jika ingin melakukan enkripsi dekripsi teks yang baru, maka dapat

(61)

Gambar 3.5 Enkripsi file

Gambar 3.6 Dekripsi file

Pada enkripsi dekripsi file, file yang dapat dienkripsi ialah file-file yang

terdapat dalam sistem komputer seperti file yang ada pada Microsoft Office, file exe,

(62)

telah dienkripsi akan berekstensi aes dan untuk melihat hasil dari enkripsi file tersebut

dapat dilihat menggunakan notepad.

Gambar 3.7 Hasil file enkripsi

Pada aplikasi hasil percobaan program yang dilakukan untuk lama proses

enkripsi dengan ukuran file yang berbeda dan dilakukan perbandingan dengan

algoritma 3DES. Percobaan aplikasi menggunakan komputer dengan spesifikasi

sebagai berikut:

1. Pentium IV 1,8Ghz

2. Memori DDR 1024Mb

3. Hard disk 160Gb

(63)

Tabel 3.1 Waktu Proses Enkripsi Algoritma Rijndael dan 3DES

No. Nama File Ukuran File Sumber Lama Proses (Detik)

KiloByte 3DES Rijndael

Waktu Proses Enkripsi Algoritma Rijndael dan 3DES

0

49 71 185 238 461 486 524 552 553 1170 3600 3896

Kilo Byte

(64)

Tabel 3.2 Waktu Proses Dekripsi Algoritma Rijndael dan 3DES

No. Nama File Ukuran File Sumber Lama Proses (Detik)

KiloByte 3DES Rijndael

1 Ferarri.jpg 486 0,14 0,75

2 Yamaha.jpg 461 0,11 0,75

3 AES6.pdf 238 0,11 0,39

4 Memory.pdf 185 0,08 0,28

5 Cilok putih.exe 552 0,17 0,84

6 Peanut.exe 553 0,14 0,81

7 Landasan Matematika.ppt 71 0,05 0,13 8 Slide proposal.ppt 524 0,12 0,87

9 Anlsis.doc 49 0,05 0,08

10 Bingkai.doc 1170 0,22 1,76

11 Cokelat, bendera.mp3 3896 0,58 5,67 12 Peterpan – Kota mati.mp3 3600 0,50 5,59

Waktu Proses Dekripsi Algoritma Rijndael dan 3DES

0 1 2 3 4 5 6

49 71 185 238 461 486 524 552 553 1170 3600 3896

Kilo Byte

D

e

ti

k

3Des

Rijndael

(65)

3.5 Rijndael Untuk Integritas Data

Pada saat mengirimkan pesan dan agar pesan yang dikirimkan tersebut sampai di

tujuan dengan aman serta tidak mengalami campur tangan pihak lain. Pesan tersebut

akan melalui berbagai jenis komputer, router atau gateway dan melintasi berbagai

macam media fisik komunikasi. Tujuannya adalah mencegah terjadinya perubahan

pesan ketika sedang dalam proses transmisi data terhadap pesan yang dikirimkan

maupun pesan yang diterima. Jika seorang penyadap melakukan perubahan data, maka

penyadap tersebut akan memperoleh pesan-pesan yang terenkripsi saja sehingga tidak

mencerminkan isi pesan yang sebenarnya.

Jika menginginkan isi pesan tetap terjaga keasliannya (tidak diubah oleh orang

yang tidak berhak), maka struktur Rijndael dapat mengakomendasikan banyak blok

dan kunci dengan penukaran pada nomor putaran. Berikut contoh proses enkripsi dan

dekripsi teks dengan melakukan perubahan pada kunci, cipherteks ataupun pada

ke duanya.

Contoh 1

Plainteks : november

Kunci : 123456

Cipherteks : 0D62F43FAE816AC1392158D47F3EC911

Perubahan yang dilakukan dengan cara mengubah pada kunci.

Cipherteks : 0D62F43FAE816AC1392158D47F3EC911

Kunci : 123455

Plainteks : ˆ GÊ®r'` t2 ÓL8

Perubahan yang dilakukan dengan cara mengubah pada cipherteks.

Cipherteks : 1D62F43FAE816AC1392158D47F3EC911

Kunci : 123456

(66)

Perubahan yang dilakukan dengan cara mengubah pada cipherteks dan kunci

Cipherteks : 1D62F43FAE816AC1392158D47F3EC911

Kunci : 123457

Plainteks : Ÿz B ¸ Ÿâ-bþú|

Contoh 2

Plainteks : universitas

Kunci : abcd

Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76C

Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.

Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76C

Kunci : abcde

Plainteks : ÅRKM õåÿdQJ?Ü7üå

Perubahan yang dilakukan dengan cara mengubah pada cipherteks.

Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76A

Kunci : abcd

Plainteks : × ^»¼Ü«‚š¨2ûµÀ><

Perubahan yang dilakukan dengan cara mengubah pada cipherteks dan kunci

Cipherteks : 85BBC9CAE6EFC0B9D84E84A69AE1A76A

Kunci : abcc

Plainteks : «.!o=ëGšók=jëñ³V

Contoh enkripsi dan enkripsi berupa file dengan melakukan perubahan pada kuncinya

Contoh 1

File : anlis.doc

Kunci : 1234

(67)

anlsis.doc

anlsis.doc.aes

Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.

Cipherteks : anlsis.doc.aes

Kunci : 12345

(68)

anlsis.doc.aes

anlsis.doc

Contoh 2

File : Landasan Matematika Untuk Kriptografi.ppt

Kunci : mipa

(69)

Landasan Matematika Untuk Kriptografi.ppt

Landasan Matematika Untuk Kriptografi.ppt.aes

Setelah dilakukan perubahan dengan cara melakukan perubahan pada kunci.

Cipherteks : Landasan Matematika Untuk Kriptografi.ppt.aes

Kunci : usu

(70)

Landasan Matematika Untuk Kriptografi.ppt.aes

Untuk file yang berekstensi ppt atau file berbentuk Microsoft Power Point jika ada

perubahan kunci, maka hasilnya tidak akan terbaca lagi oleh Microsoft Power Point

dan dianggap file tersebut rusak.

Jika terjadi perbedaan, maka disimpulkan ada modifikasi terhadap isi pesan.

Aplikasi ini didasarkan pada kenyataan bahwa perubahan kunci akan menyebabkan

perubahan data pada saat akan dikembalikan pada bentuk semula dan hasilnya akan

berbeda dengan aslinya (plainteks). Dengan kata lain, Rijndael sangat peka terhadap

(71)

BAB 4

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Dari analisa dan hasil implementasi algoritma Rijndael dapat diambil kesimpulan

sebagai berikut:

1. Dari hasil uji coba yang dilakukan antara algoritma Rijndael dan algoritma

3DES, algoritma Rijndael memiliki waktu enkripsi dan dekripsi sedikit lebih

lama.

2. Algoritma Rijndael sangat peka terhadap perubahan sekecil apapun pada data

masukan, ini didasarkan pada kenyataan bahwa perubahan kunci akan

menyebabkan perubahan data pada saat dikembalikan pada bentuk semula.

3. Algoritma Rijndael mempunyai panjang kunci paling sedikit 128 bit, ini

menyebabkan algoritma Rijndael tahan terhadap serangan exhaustive key

search.

4. Untuk setiap putarannya, Rijndael menggunakan kunci yang berbeda. Kunci

(72)

4.2 Saran

Saran yang dapat penulis ambil adalah:

1. Pembaca yang ingin melakukan enkripsi dan dekripsi baik berupa file ataupun

teks perlu mempertimbangkan faktor kelebihan maupun kekurang dari suatu

algoritma yang akan digunakan agar file atau teks terjaga keamanan dan

kerahasiaannya.

2. Diharapkan kepada Pembaca yang melakukan proses enkripsi dan dekripsi file

ataupun teks untuk menggunakan kunci yang lebih panjang dan lebih variatif

antara huruf dan angka ataupun kombinasi karakter berupa kode ASCII yang

akan lebih menyulitkan pemecahan cipherteks oleh kriptanalis.

3. Dalam mengimplementasikan algoritma Rijndael ini hanya dalam cakupan

kecil dan sangat mendasar yang menggunakan bahasa pemograman Microsoft

(73)

DAFTAR PUSTAKA

Ariyus, Dony. 2006. Kriptografi Keamanan Data dan Komunikasi. Yogyakarta: Graha Ilmu

Andi, 2003. Memahami Model Enkripsi dan Security Data. Semarang: Andi Yogyakarta

Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika Bandung

Kurniawan, Yusuf. 2004. Kriptografi Keamanan Internet dan Jaringan Komputer. Bandung: Informatika.

Joan Daemen & Vincent Rijmen. A Specification for Rijndael, the AES Algorithm.

Federal Information Processing Standards Publication 197, 2001. “Announcing the ADVANCED ENCRYPTION STANDARD (AES)” hal. 1-51.

(74)

LAMPIRAN: LISTING PROGRAM

Option Explicit

#Const SUPPORT_LEVEL = 2

Private m_Rijndael As New cRijndael

Public Property Let Status(TheStatus As String) If Len(TheStatus) = 0 Then

Private Sub DisplayString(TheTextBox As TextBox, ByVal TheString As String)

(75)

End If

Debug.Assert j = UBound(data2) + 1 HexDisplay = data2

End If

End Function

(76)

End Select

Private Function GetPassword() As Byte() Dim data() As Byte

If Check1.Value = 0 Then

data = StrConv(txtPassword.Text, vbFromUnicode) ReDim Preserve data(31)

Else

If HexDisplayRev(txtPassword.Text, data) <> (cboKeySize.ItemData(cboKeySize.ListIndex) \ 8) Then

data = StrConv(txtPassword.Text, vbFromUnicode)

(77)

#If SUPPORT_LEVEL Then UBound(ciphertext) + 1, BlockBits \ 8)

Status = ""

BlockBits = cboBlockSize.ItemData(cboBlockSize.ListIndex) pass = GetPassword BlockBits) <> 0 Then

(78)

DisplayString Text1, HexDisplay(plaintext, UBound(plaintext) + 1, BlockBits \ 8)

End If ...", "*.aes|*.aes|*.*|*.*", FileName & ".aes")

If Len(FileName2) <> 0 Then progress " & lblStatus.Caption

Status = "" End If

'MsgBox " complete" & vbCrLf & vbCrLf & " With time progress " & lblStatus.Caption

End If End If

(79)

Private Sub cmdFileDecrypt_Click() FileName2 = Left$(FileName, Len(FileName) - 4)

FileName2 = FileDialog(Me, True, "Save Decrypted Data As progress " & lblStatus.Caption

(80)

Text1FontName = Text1.FontName

cboBlockSize.AddItem "128 Bit"

cboBlockSize.ItemData(cboBlockSize.NewIndex) = 128 #If SUPPORT_LEVEL = 0 Then

cboBlockSize.Enabled = False #Else

#If SUPPORT_LEVEL = 2 Then

cboBlockSize.AddItem "160 Bit"

cboBlockSize.ItemData(cboBlockSize.NewIndex) = 160 cmdSizeTest.Visible = True

#End If

cboBlockSize.AddItem "192 Bit"

cboBlockSize.ItemData(cboBlockSize.NewIndex) = 192 #If SUPPORT_LEVEL = 2 Then

cboBlockSize.AddItem "224 Bit"

cboBlockSize.ItemData(cboBlockSize.NewIndex) = 224 #End If

cboBlockSize.AddItem "256 Bit"

cboBlockSize.ItemData(cboBlockSize.NewIndex) = 256 #End If

cboKeySize.AddItem "128 Bit"

cboKeySize.ItemData(cboKeySize.NewIndex) = 128 #If SUPPORT_LEVEL = 2 Then

cboKeySize.AddItem "160 Bit"

cboKeySize.ItemData(cboKeySize.NewIndex) = 160 #End If

cboKeySize.AddItem "192 Bit"

cboKeySize.ItemData(cboKeySize.NewIndex) = 192 #If SUPPORT_LEVEL = 2 Then

cboKeySize.AddItem "224 Bit"

cboKeySize.ItemData(cboKeySize.NewIndex) = 224 #End If

cboKeySize.AddItem "256 Bit"

cboKeySize.ItemData(cboKeySize.NewIndex) = 256 cboBlockSize.ListIndex = 0

cboKeySize.ListIndex = 0 txtPassword = ""

Status = ""

End Sub

Gambar

Tabel 2.1 Subtitusi   Tabel 3.1 Waktu Proses Enkripsi Algoritma Tabel 3.2 Waktu Proses Dekripsi Algoritma Tabel 2.4 Tabel 2.3 Versi-versi AES Tabel 2.2 Teknik blok                  S-Box Rijndael      Rijndael dan 3DES  Rijndael dan 3DES
Gambar dibawah memperlihatkan skema enkripsi dan dekripsi dengan
Gambar 2.2 Algoritma simetri
Gambar 2.3 Algoritma tak simetri
+7

Referensi

Dokumen terkait

Selanjutnya apabila kita berbi- cara dengan berbahasa dengan tumpuan pada la- wan tutur misalnya agar orang yang kita ajak berbicara tidak tersinggung agar lawan bicara

Pengujian pada system yang ter-overclock dengan menggunakan VGA Nvidia GeForce 9800GTX+ dapat mengimbangi hasil dari VGA yang menggukan ATI RADEON HD 5800 karena

Dengan memperhatikan kondisi yang seperti di atas, maka pemerintah mengeluarkan kebijakan program yang merupakan penegembangan sistem perlindungan sosial yang dapat meringankan

Jadi pemberian serifikat halal bertujuan untuk memberikan kepastian hukum dan perlindungan bagi konsumen muslim dari produk pangan yang tidak bersertifikat halal dapat

Internet sudah eksis di pedesaan melalui program-program pemerintah seperti PLIK, CAP dan MPLIK.Melalui survey pada Komunitas yang menjadi anggota penerima Program

SURYA PRATAMA WIJAYA KUSUMA SLEMAN 29-12-2003 Laki-laki Tidak Kawin Cucu menganggur... SARWITI SLEMAN 31-12-1930 Laki-laki Nikah Kepala

Karakteristik permukiman desa-desa pesisir sepanjang Pantai Selatan Jawa di Kabupaten Kulonprogo menunjuk- kan pola mengelompok (clustered) ber- bentuk linear sejajar garis

Jika perawat merasa bahwa mereka memiliki peluang untuk mendapatkan pelatihan dan pengembangan, maka tidak hanya membantu memastikan bahwa perawat memiliki keterampilan