uji tingkat kerandoman bit pada enkripsi data

81
i UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA ENCRYPTION STANDARD Zamzamiah PROGRAM STUDI MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2010 M/1431 H

Upload: phungtuong

Post on 12-Jan-2017

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

i

UJI TINGKAT KERANDOMAN BIT

PADA ENKRIPSI DATA ENCRYPTION STANDARD

Zamzamiah

PROGRAM STUDI MATEMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI

SYARIF HIDAYATULLAH

JAKARTA

2010 M/1431 H

Page 2: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

ii

UJI TINGKAT KERANDOMAN BIT

PADA ENKRIPSI DATA ENCRYPTION STANDARD

Skripsi

Sebagai Salah Satu Syarat untuk Memperoleh

Gelar Sarjana Sains

Fakultas Sains dan Teknologi

Universitas Islam Negeri Syarif Hidayatullah Jakarta

Oleh :

Zamzamiah

103094029748

PROGRAM STUDI MATEMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI

SYARIF HIDAYATULLAH

JAKARTA

2010 M / 1431 H

Page 3: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

iii

PENGESAHAN UJIAN

Skripsi yang berjudul “ Uji Tingkat Kerandoman Bit pada Enkripsi

Data Encryption Standard”, yang ditulis oleh Zamzamiah, NIM 103094029748

telah diujikan dan dinyatakan lulus dalam siding Munaqosyah Fakultas Sains dan

Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta, pada tanggal 30

Agustus 2010. Skripsi ini telah diterima sebagai salah satu syarat untuk

memperoleh gelar strata satu (S1) pada Program Studi Matematika.

Menyetujui :

Penguji I, Penguji II, Taufik Edy S, M.ScTech Suma’innah NIP. 19790530 200604 1002 NIP. 150 408 699 Pembimbing I, Pembimbing II, Hermawan S, M.Kom Yanne Irene, M.Si NIP. 19740623 1993121 001 NIP. 19741231 2005012 018

Mengetahui :

Dekan Fakultas Sains dan Teknoligi, Ketua Program Studi Matematika, Dr.Syopiansyah Jaya Putra, M.Sis Yanne Irene, M.Si NIP. 19680117 2001121 001 NIP. 19741231 200501 2018

Page 4: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

iv

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-

BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN

SEBAGAI SKRIPSI ATAU SKRIPSI PADA PERGURUAN TINGGI ATAU

LEMBAGA MANAPUN.

Jakarta, Agustus 2010 Zamzamiah 103094029748

Page 5: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

v

Sesungguhnya perjalanan menuntut ilmu

Tidaklah sunyi dari rasa lelah

Karena bahwasanya menuntut ilmu itu

Perkara yang lebih besar dan lebih utama

Dari peperangan menurut para ulama

Barang siapa yang sabar di dalam menuntut ilmu

Maka ia akan memperoleh kelezatan ilmu

Yang mengalahkan

Semua kelezatan-kelezatan dunia

(Dikutip dari perkataan Nabi Musa AS.)

Skripsi ini kupersembahkan

Untuk Aku beserta keluargaku

Semoga Allah menjadikan kami orang-orang yang selalu haus akan ilmu

Amin….

Page 6: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

vi

ABSTRAK

Aspek keamanan data telah menjadi aspek yang sangat penting dari suatu

sistem informasi. Salah satu cara menjaga keamanan dan kerahasiaan data tersebut

yaitu dengan digunakannya algoritma kriptografi untuk melakukan penyandian

data. Salah satu jenis algoritma kriptografi yang paling popular adalah algoritma

DES (Data Encrytion Standard).

Untuk mengetahui tingkat kerandoman barisan binari pada ciperteks

algoritma DES dapat dilakukan dengan menggunakan deretan uji NIST . Deretan

uji NIST tersebut merupakan sebuah paket uji statistik yang mengandung 16 uji.

Diantaranya adalah uji frekuensi monobit, uji frekuensi dengan sebuah blok, uji

run, uji kumulatif sums (cumsum), dan sebagainya.

Kata Kunci: random, bit, DES, enkripsi

Page 7: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

vii

ABSTRACK

The security aspect data becoming an important aspect from one system

information. Another one is to take savety and keep secret the data with used

algorithm cryptographic to share data. Another kind of algorithm cryptographic

the most popular is algoritm DES (Data Encryption Standard).

To know level of randomness binary formation in ciphertext algoritm DES

can do with use test line of NIST. The line formation of NIST is one packet

statistical test than include 16 test. Between that is frequency test (monobit),

frequency test within a block, run test, cumulative sums test (cumsum), and etc .

Key word: random, bit, DES, encryption

Page 8: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

viii

KATA PENGANTAR

Alhamdulillah, penulis panjatkan rasa syukur pada Allah swt. yang

senantiasa memberikan rahmat dan hidayah-Nya sehingga penulis dapat

menyelesikan skripsi ini. Skripsi ini berjudul “Uji Kerandoman Bit Pada Enkripsi

DES (Data Enkription Standard)”.

Pada kesempatan ini penulis ingin mengucapkan terima kasih yang tak

terhingga dan memberikan penghargaan yang sebesar-besarnya kepada:

1. Dr. Syopiansyah Jaya Putra, M.Sis, Dekan Fakultsa Sains dan Teknologi.

2. Yanne Irene, M.Si., Ketua Program Studi Matematika, Suma’inna, M.Si.,

Sekretaris Ketua Program Studi Matematika yang senantiasa memberikan

nasehat dan bimbingan selama penulis kuliah di prodi Matematika.

3. Hermawan Setiawan, M.Si. selaku pembimbing I dan Yanne Irene, M.Si

selaku pembimbing II yang memberikan banyak ilmu, waktu, pengarahan

dan bimbingan, serta dorongan semangatkepada penulis.

4. Kelurga besar dosen Program Studi Matematika yang telah memberikan

banyak ilmu yang sangat bermanfaatkepada penulis.

5. Ayah dan ibu serta kakak-kakakku yang telah memberikan dorongan

kepada penulis dalam menyelesaikan skipsi ini.

6. Teman-teman serta semua pihak yang secara langsung maupun tidak

langsung membantu penulisan skipsi ini.

Page 9: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

ix

Penulis menyadari , masih banyak kekurangan pada penulisan skripsi ini.

Oleh karena itu, penulis mengharapkan kritik dan saran yang membangun dari

para pembaca.

Penulis berharap semoga skripsi ini dapat bermanfaat khususnya bagi penulis

dan pembaca pada umumnya.

Jakarta, Agustus 2010

Penulis

Page 10: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

x

DAFTAR ISI

Halaman

HALAMAN JUDUL ................................................................................... i

PENGESAHAN PENGUJI ........................................................................... ii

PERNYATAAN ........................................................................................... iii

PERSEMBAHAN DAN MOTTO ................................................................ iv

ABSTRAK .................................................................................................... v

ABSTRACK ................................................................................................. vi

KATA PENGANTAR .................................................................................. vii

DAFTAR ISI ................................................................................................. ix

DAFTAR LAMPIRAN ................................................................................. xi

BAB I PENDAHULUAN ...................................................................... 1

1.1 Latar Belakang .................................................................... 1

1.2 Rumusan Masalah ............................................................... 2

1.3 Tujuan Penelitian ................................................................ 2

1.4 Batasan Masalah ................................................................. 3

1.5 Manfaat Penelitian .............................................................. 3

BAB II LANDASAN TEORI .................................................................. 4

2.1 Kriptografi dan Algoritma Kriptografi ............................... 4

2.2 Data Encryption Standard (DES) ......................................... 6

2.3 Bentuk-bentuk Uji Statistik ................................................. 11

2.4 Hipotesis, Nilai Kritikal dan Level Signifikan ................... 14

2.5 Deskripsi Teknisi dari Uji-uji ............................................ 15

2.5.1 Uji Frekuensi (Monobit) ......................................... 16

Page 11: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

xi

2.5.2 Uji Frekuensi Within a Block .................................. 16

2.5.3 Uji Run .................................................................... 17

BAB III PENGUMPULAN DAN PENGOLAHAN DATA .................... 19

3.1 Kerandoman (Randomnes) ................................................. 19

3.2 Pengambilan Data ............................................................... 19

3.3 Pengolahan Data ................................................................. 20

3.3.1 Uji Frekuensi (Monobit) ......................................... 20

3.3.2 Uji Frekuensi dalam Sebuah Blok ......................... 21

3.3.3 Uji Run .................................................................... 23

BAB IV UJI KERANDOMAN BIT PADA DES ..................................... 26

4.1 Analisis Hasil ...................................................................... 26

4.1.1 Uji Kerandoman Bit dengan Uji Statistik Monobit 27

4.1.2 Uji Kerandoman Bit dengan Uji Statistik Frekuensi

dalam Sebuah Blok ................................................... 28

4.1.3 Uji Kerandoman Bit dengan Uji Statistik Run ....... 29

BAB V KESIMPULAN DAN SARAN ................................................... 31

5.1 Kesimpulan ......................................................................... 31

5.2 Saran ................................................................................... 32

REFERENSI ................................................................................................. 33

LAMPIRAN..................................................................................................... 34

Page 12: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

xii

DAFTAR LAMPIRAN

Halaman

Lampiran 1 : Plainteks dan Chiperteks dengan Menggunakan Kunci yang

Sama ...................................................................................... 35

Lampiran 2 : Program Enkripsi dan Dekripsi Algoritma DES ................... 42

Lampiran 3 : Tabel ASCII (American Standard Code for Information

Interchange) ......................................................................... 56

Lampiran 4 : Tabel P-value Barisan Binari pada Plainteks dan Ciperteks… 64

Page 13: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

1

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi komputer dan telekomunikasi yang cukup pesat saat

ini cukup berpengaruh pada penggunaan informasi. Kemampuan untuk mengakses

dan menyediakan informasi secara cepat dan akurat menjadi sangat penting bagi

sebuah organisasi komersial (perusahaan), perguruan tinggi (akademis), lembaga

pemerintah (birokrasi), maupun individual (pribadi).

Seiring dengan perkembangan teknologi komunikasi dan penyimpanan data

dengan menggunakan komputer, memungkinkan pengiriman data jarak jauh yang

relatif murah dan cepat. Salah satunya yaitu dengan menggunakan internet,

jaringan tersebut menyediakan berbagai macam layanan komunikasi. Saat ini

penggunaan internet sangat marak digunakan oleh masyarakat, hal ini disebabkan

oleh berbagai macam layanan yang ditawarkan oleh internet tersebut salah satunya

yaitu dalam pengiriman pesan, namun seiring dengan itu semua masalah pun

bermunculan. Salah satunya dalam bidang keamanan dan kerahasiaan data atau

pesan yang disampaikan melalui media komunikasi.

Hal itu menjadi faktor pendorong bagaimana kita dapat menjaga agar pesan

atau informasi yang dikirim tetap terjaga kerahasiaannya. Banyak orang yang

kemudian menyiasatinya dengan cara mengubah bentuk pesan atau informasi yang

disampaikan ke dalam sebuah pesan yang tidak dapat dibaca oleh orang yang tidak

Page 14: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

2

berhak. Saat ini lebih dikenal dengan proses enkripsi. Enkripsi adalah Suatu

teknik untuk membuat pesan menjadi tidak dapat dibaca dan proses yang

merupakan kebalikan dari enkripsi disebut sebagai dekripsi[9].

Pada proses enkripsi atau deskripsi tersebut pesan yang dikirim akan

ditransformasikan ke dalam bentuk barisan binari dan akan menghasilkan pesan

yang berupa cipherteks yang mengandung barisan binari pula. Dalam ilmu

kriptografi kerandoman pada barisan binari juga berpengaruh terhadap keamanan

dan kerahasian sebuah data atau pesan. Maka pada penulisan skripsi ini penulis

ingin mengetahui apakah barisan binari pada cipherteks yang dihasilkan oleh hasil

enkripsi pada algoritma DES merupakan barisan yang random.

1.2 Rumusan Masalah

Masalah yang akan dibahas pada penelitian ini adalah menguji tingkat

kerandoman bit atau tingkat keacakan pada hasil enkripsi DES.

1.3 Tujuan Penelitian

Tujuan penelitian ini adalah melakukan pengujian tingkat kerandoman bit atau

tingkat keacakan pada barisan binari ciperteks hasil enkripsi pada algoritma DES.

Page 15: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

3

1.4 Batasan Masalah

Penelitian tugas akhir ini dibatasi hanya pada ciperteks hasil enkripsi pada

algoritma DES dengan menggunakan beberapa uji statistik yang telah ditetapkan

oleh NIST.

1.5 Manfaat Penelitian

Manfaat dari penelitian ini, kita dapat mengetahui bahwa jika barisan binari

pada ciperteks hasil enkripsi tersebut random maka data atau informasi yang kita

informasikan tetap terjaga keamanan dan kerahasiannya. Sehingga algoritma DES

tersebut masih dapat digunakan baik oleh organisasi komersial, akademis ataupun

secara individual.

Page 16: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

4

BAB II

LANDASAN TEORI

2.1 Kriptografi dan Algoritma Kriptografi

Kriptografi berasal dari bahasa yunani, menurut bahasa kriptografi dibagi

menjadi 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 satu tempat ke tempat

yang lain[1].

Algoritma ditinjau dari asal usul kata, Algoritma muncul di dalam kamus

Webster sampai akhir tahun 1957 hanya menemukan kata algorism yang

mempunyai arti proses perhitungan dengan bahasa Arab. Algoritma berasal dari

nama penulis buku Arab yang terkenal yaitu Abu Ja’far Muhammad ibnu Musa al-

Khuarizmi. Kata algorism lambat laut menjadi algorithm.

Dalam terminologinya Algoritma adalah urutan langkah-langkah logis untuk

menyelesaikan masalah yang disusun secara sistematis[3]. Algoritma kriptografi

merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-

orang yang tidak berhak atas tersebut. Algoritma kriptografi terdiri dari tiga fungsi

dasar yaitu:

a. Enkripsi: Enkripsi dapat diartikan cipher atau kode. Enkripsi juga dapat

diartikan dengan proses untuk merubah plainteks menjadi cipherteks.

Page 17: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

5

b. Dekripsi: Dekripsi merupakan kebalikan dari enkripsi, pesan yang telah

dienkripsi dikembalikan kebentuk asalnya (plaintext).

c. Kunci: Kunci yang dimaksud adalah kunci yang dipakai untuk melakukan

enkripsi dan dekripsi, kunci terbagi menjadi dua bagian kunci pribadi

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

Algoritma kriptografi dibagi menjadi tiga bagian berdasarkan dari kunci yang

dipakainya[4]:

1. Algoritma Simetri

Algoritma ini sering disebut dengan algoritma klasik, karena memakai

kunci yang sama untuk kegiatan enkripsi dan dekripsinya. Algoritma yang

menggunakan kunci simetri diantaranya; Data Encryption Standard

(DES), RC2, RC4, RC5, RC6, International Data Encryption Algorithm

(IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), A5,

dan lain sebagainya.

2. Algoritma Asimetri

Algoritma Asimetri sering disebut dengan algoritma kunci _inary. Pada

algoritma asimetri kunci terbagi menjadi dua bagian:

a. Kunci umum (public key): kunci yang semua orang boleh tahu

(dipublikasikan). Algoritma yang menggunakan kunci _inary

diantaranya: Digital Signature Algorithm (DSA), RSA, Diffie-Hellman

(DH), Elliptic Curve Cryptography (ECC), dan lain sebagainya.

Page 18: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

6

b. Kunci pribadi (Private key): kunci yang dirahasiakan (hanya boleh

diketahui satu orang).

3. Hash Function (Fungsi Hash)

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 input matematika

yang mengambil input panjang _inary_e dan mengubahnya ke dalam

urutan panjang _inary yang tetap. Fungsi hash biasanya digunakan untuk

membuat sidik jari dari suatu pesan.

2.2 Data Encryption Standard (DES)

Data Encryption Standard (DES) ditetapkan oleh FIPS sebagai suatu

algoritma kriptografi yang telah disetujui dan digunakan oleh FIPS 140-1. DES

dipublikasikan dalam rangka menyediakan sebuah gambaran komplit dari

sebuah algoritma matematika untuk mengenkrip dan mendekrip informasi kode

biner. Data Encryption Standard (DES) diadopsi tahun 1977 oleh National

Bureau of Standard, sekarang National Institute of Standards and Technology

(NIST) sebagai Federal Information Processing Standard 46 (FIPS PUB 46).

Algoritma itu sendiri ditujukan sebagai Data Encryption Algorithm (DEA). Pada

DES, data dienkripsi dalam 64-bit blok-blok dengan menggunakan sebuah kunci

56-bit. Algoritma perubahan input 64-bit dalam sebuah deretan langkah sampai

Page 19: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

7

keluaran 64-bit. Dengan langkah dan kunci yang sama digunakan sebagai proses

kebalikan dari enkripsi (dekripsi).

Pada awal tahun 1960-an, IBM mengadakan sebuah projek penelitian yang

memegang peranan penting dalam kriptografi komputer oleh Horst Feistel.

Projek tersebut telah ditandatangani pada tahun 1971, pada perkembangan

terakhir algoritma tersebut ditandai dengan LUCIFER, yang telah dijual kepada

L1oyd’s of London untuk digunakan dalam sistem penarikan uang . LUCIFER

adalah chiper blok Feistel yang beroperasi pada blok-blok 64-bit menggunakan

kunci berukuran 128-bit. Karena hasil yang diciptakan oleh projek LUCIFER

memberikan harapan , IBM telah memulai sebuah usaha untuk mengembangkan

sebuah produk enkripsi komersial yang dapat dipasarkan yang lebih ideal yang

dapat dilaksanakan pada single chip. Usaha tersebut dikepalai oleh Walter

Tuchman dan Carl Meyer, usaha itu tidak hanya meliputi para peneliti dari IBM

saja tapi juga konsultan dari pihak luar serta penasehat teknikal dari NSA. Hasil

dari usaha ini merupakan penghalusan dari versi LUCIFER yang lebih resisten

terhadap kriptanalisis dengan meredusi ukuran kunci menjadi 56-bit yang sesuai

dengan single chip.

Pada tahun1973, National Bureau of Standard memerlukan chipper standar

nasional. IBM telah mengajukkan hasil dari projek Tuchman-Mayer. Algoritma

yang ditujukkan ini jauh lebih baik dan telah diadopsi pada tahun 1977 sebagai

Data Encryption Standard.

Page 20: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

8

Operasi Mode-mode pada Blok Chiper

Algoritma DES adalah dasar pembentukan blok untuk memberikan

keamanan data. Empat mode operasi yang telah dikembangkan untuk DES.

Empat mode ini sebenarnya diperuntukkan untuk melindungi semua

kemungkinan aplikasi-aplikasi yang digunakan untuk mengenkripsi dengan

menggunakan model DES. Akan tetapi, NIST telah mengembangkan daftar

mode-mode yang telah direkomendasikan menjadi lima mode. Mode-mode

tersebut adalah[7]:

1. Mode Electronic Code Book (ECB)

Mode ECB suatu blok cipher yang panjang dibagi dalam bentuk sequence

binary menjadi satu blok tanpa mempengaruhi blok-blok yang lain, tiap blok

terdiri dari 64 bit atau 128 bit, setiap blok dienkripsi dengan menggunakan

kunci yang sama. Pada mode ini untuk pesan yang lebih panjang dari 64 bit

prosedur yang digunakan adalah dengan membagi pesan menjadi blok-blok

dengan panjang 64 bit dan menambahkannya pada blok terakhir jika

dibutuhkan. Sifat yang paling mendasar pada mode ECB adalah blok

plainteks yang sama akan dikodekan menjadi cipherteks yang sama.

Sehingga kelemahan pada mode ini yaitu penukaran pesan yang sedang

dikirim sudah bisa diterka apa kira-kira isi pesan tersebut.

2. Mode Cipher Blok Chaining (CBC)

Sistem dari mode CBC adalah plaintext yang sama akan dienkripsi ke dalam

bentuk cipher yang berbeda, disebabkan blok cipher yang satu tidak

Page 21: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

9

berhubungan dengan blok cipher yang lain. Melainkan tergantung pada

cipher sebelumnya. Pada mode CBC, input untuk enkripsi merupakan hasil

dari XOR antara plainteks dengan cipherteks sebelumnya dan menggunakan

kunci yang sama pada setiap blok. Bentuk formal dari mode CBC yaitu:

C1 = Ek (IV ⊕ P1)

P1 = IV ⊕ Dk+ (C1)

dengan C1 = cipherteks ke-1

Ek= enkripsi

Dk= dekripsi

P1 = plainteks ke-1

IV = initialization vector

3. Mode Cipher Feed Back (CFB)

Metode ini digunakan untuk melakukan enkripsi pada stream cipher, mode

ini tidak memerlukan padding bit (tambahan bit) karena jumlah panjang blok

sama dengan panjang plainteks yang ada. Mode ini bekerja pada sistem

waktu nyata. Pada metode ini, input diproses 8 bit setiap kali enkripsi

dilakukan. Cipherteks sebelumnya digunakan sebagai bagian input dari

algoritma enkripsi untuk menghasilkan keluaran acak. Keluaran ini diambil 8

bit paling kirinya untuk di-XOR-kan dengan plainteks sepanjang 8 bit untuk

menghasilkan cipherteks berikutnya.

Page 22: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

10

Enkripsi terdiri dari input yang lama digeser ke kiri sejauh 8 bit.

Kekosongan 8 bit ini akan diisi oleh text cipher sebelumnya. Input enkripsi

mula-mula adalah Initialization Vector (IV). Salah satu kerugian mode CFB

adalah perambatan kesalahan. Jika satu blok cipher mengalami kesalahan

ketika di saluran, maka blok-blok berikutnya akan terpengaruh. Secara

matematis, CFB dapat dinyatakan sebagai berikut:

Ci = Pi ⊕ Ek ( Ci-1)

Pi = Ci ⊕ Ek (Ci-1)

dengan Ci = cipherteks ke-i

Ek = enkripsi

Dk = dekripsi

Pi = plainteks ke-i

4. Mode Output Feed Back (OFB)

Mode OFB tidak mempengaruhi blok yang lain jika terjadi error, satu bit

yang error pada cipherteks hanya akan mempengaruhi satu bit plainteks pada

terjadinya proses dekripsi. Mode OFB sring digunakan untuk mengenkripsi

pengiriman satelit.

Page 23: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

11

5. Mode Counter (CTR)

Nilai counter dalam proses enkripsi harus berbeda untuk setiap blok

plainteks. Counter adalah beberapa nilai awal lalu ditambahkan dengan 1

untuk setiap subbarisan blok (modulo 2b, dimana b merupakan ukuran blok).

Untuk proses enkripsi, counter dienkripsi lalu di XOR-kan blok plainteks

untuk memperoleh blok cipherteks. Untuk proses dekripsi digunakan barisan

nilai counter yang sama, stiap counter yang telah dienkripsi dan di-XOR-kan

dengan blok cipherteks untuk memperoleh kembali blok plainteks yang

sesuai.

2.3 Bentuk-bentuk Uji Statistik

Pada proses pengujian kerandoman pada barisan binari bentuk–bentuk uji

statistik yang digunakan antara lain sebagai berikut[5]:

a. Fungsi Standar Normal (Distribusi Kumulatif)

Fungsi standar normal (distribusi kumulatif) merupakan fungsi normal

untuk mean μ = 0 dan varian σ2 = 1, secara matematis dapat dituliskan

sebagai berikut:

∫∞−

−=Φz

u duez 2/2

21)(π

Page 24: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

12

di mana π = 3.14159

z = Variabel random Z dengan N(0,1)

(Z memilki distribusi normal dengan mean μ = 0

dan varian σ2 = 1)

u = Variabel pengintegrasi ( dengan u =( x – μ) / σ)

)(zΦ = Fungsi distributif kumulatif normal standar dari z

b. Fungsi Gamma

dtezz tz∫∞

−−=Γ0

1)(

di mana t = variabel random

z = parameter (merupakan bilangan bulat positif)

Γ (z) = Fungsi gamma pada z

c. Fungsi Gamma Tidak Komplit

∫ −−

Γ≡

Γ≡

x at dtteaa

xaxaP0

1

)(1

)(),(),( γ

dengan P(a,0) = 0 dan P(a,∞) = 1

di mana P(a,x) = fungsi gamma tidak komplit

a = nilai parameter

x = nilai parameter

Page 25: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

13

d. Distribusi Chi-Square

∑ −= )/)((2iii eeoχ

di mana: oi = frekuensi kejadian

ei = frequensi observasi dalam satu waktu tertentu secara

berturut-turut

e. Distribusi Normal Standar

z = (x – μ)/σ2

di mana: x = sampel nilai uji statistik.

μ = nilai mean pada uji statistik

σ2= nilai varian pada uji statistic

f. Teorema Central Limit

Definisi Teorema Central Limit adalah jika X1, X2, …, Xn adalah contoh

random dari sebuah distribusi normal dengan mean μ dan varian σ2,

variabel random,

dxeaP xa

nnXX

nn 2/

21 2

1lim −

∞−

−++

∞→ ∫=≤πσ

μΛ

Jika ∑ ==

n

i in XS1

, di mana X1, X2, …, Xn adalah distribusi yang

independent dan identik dengan probabilitas 1, Sn /n akan konvergen ke

Page 26: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

14

E[Xi], di mana teorema central limit menyatakan bahwa Sn mempunyai

asimtotik distribusi normal sebagai n→∞

2.4 Hipotesis, Nilai Kritikal, dan Level Signifikan

Analisis hipotesis uji statistik kerandoman bit pada DES adalah:

Hipotesis null (H0) adalah bentuk barisan yang di ujikan random

Hipotesis alternatif (Ha ) adalah bentuk barisan yang di ujikan tidak random

Untuk setiap uji yang digunakan akan menghasilkan sebuah keputusan atau

kesimpulan dimana apakah hipotesis null tersebut diterima atau ditolak, artinya

apakah generator itu menghasilkan nilai yang random atau tidak dari input

barisan yang telah dihasilkan.

Nilai kritikal adalah nilai yang terdapat pada daerah penolakan pada

hipotesis.

Jika data yang di ujikan random maka kesimpulan untuk menolak H0 atau

presentase terjadinya bahwa data tersebut tidak random kecil disebut tipe error I.

Probabilitas dari tipe error I disebut level signifikan. Nilai level signifikan (α)

yang lazim digunakan adalah 0.01. Level signifikan (α) pada uji statistik

hipotesis H0 adalah probabilitas H0 di tolak pada hal H0 tersebut bernilai

benar[9].

Page 27: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

15

2.5 Deskripsi Teknis dari Uji-uji

Deretan uji NIST yaitu sebuah paket statistik yang mengandung 16 uji. Di

mana uji-uji tersebut dikembangkan untuk menguji kerandoman barisan binari

(panjang berubah-ubah) yang dihasilkan oleh hardware dan software dengan

input dari hasil kerandoman pada kriptografi atau pseudorandom number

generator. [5] menyatakan ada16 uji:

1. The Frequency (Monobit) Test

2. Frequency Test within a Block

3. The Runs Test

4. Test for Longest-Run-of-Ones in a Block

5. The Binary Matrix Rank Test

6. The Discrete Fourier Transform (Spectral) Test

7. The Non-Overlapping Tempate Matching Test

8. The Overlapping Tempate Matching Test

9. Maurer’s “Universal Statistical” Test

10. The Lempel-Ziv Copression Test

11. The Linear Complexity Test

12. The Serial Test

13. The Aproximate Entropy Test

14. The Cumulative Sums (Cumsums) Test

15. The Random Excurtions Test

16. The Random Excurtions Variant Test

Page 28: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

16

2.5.1 Uji Frekuensi (Monobit)

Uji ini diperoleh dari teorema Central Limit untuk random walk,

nn XXS ++= Λ1 . Berdasarkan teorema Central Limit:

∫∞−

∞→≡Φ=≤

zu

nS

nduezzP n 2/

21 2

)()(limπ

Secara tidak langsung menyatakan bahwa, untuk z positif:

1)(2||

−Φ=⎟⎟⎠

⎞⎜⎜⎝

⎛≤ zz

nS

P n

Berdasarkan dasar pengujian pada statistik n

Ss n= , menaksir

nilai observnya nXXobss n /)( 1 ++= Κ , dan maka dapat dihitung

P-value adalah ( )[ ] ( )2/)()(12 obsserfcobss =Φ− , di mana erfc

adalah komplemen dari fungsi error.

duezerfcz

u∫∞

−=22)(

π …………………………(1)

2.5.2 Uji Frequensi Within a Block

Parameter pada uji ini adalah M dan N, jadi bahwa n = MN, n

adalah original string yang dipartisi menjadi N substring, setiap

panjang M. untuk setiap substring ini, probabilitas satu(1) diuji dengan

frekuensi relatif observ 1, iπ , i = 1, . . . , N. Sum

Page 29: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

17

χ2 [ ]2

1214)( ∑ −=

N

iMobs π

di bawah hipotesis kerandoman yang memiliki distribusi χ2

dengan derajat kebebasan N.

Didapat P-value yaitu

)2.......(..............................2

)(,2

)2/(2)2/(2

)(

12/

2/)(

12/2/

22

⎟⎟⎠

⎞⎜⎜⎝

⎛=

Γ=

Γ

∫∫∞

Χ

−−∞

Χ

−−

obsNigamc

N

duue

N

duueobs

Nu

Nobs

Nu

χ

2.5.3 Uji Runs ( Runs Test)

Uji runs merupakan salah satu uji nonparametrik. Runs

didefinisikan sebagai substring yang angka 1-nya berturut-turut dan

angka 0-nya berturut-turut dan untuk menentukan apakah pergerakan

(osilasi) antara setiap substring yang bersifat homogen tersebut bersifat

cepat atau lambat.

Uji spesifik di sini didasarkan pada distribusi total bilangan runs.

Di mana ∑= j njεπ (dengan π mendekati 0.5:

n2

21 ≤−π ).

)()1(

)1(2lim zz

nVP n

nΦ=⎟⎟

⎞⎜⎜⎝

⎛≤

−−−

∞→ ππ

Page 30: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

18

Untuk menaksir Vn, didefinisikan untuk k = 1, . . . , n-1, r(k) = 0

jika 1+=∈∈ kk dan r(k) = 1 jika 1+≠∈∈ kk . Maka ∑ −

=+=

1

11)(n

kn krV .

Didapat P-value adalah

⎟⎟⎠

⎞⎜⎜⎝

−−

)1(22)1(2)(

ππ

ππ

nnobsV

erfc n …………………….(3)

Jika nilai dari Vn besar mengindikasikan bahwa proses osilasi pada

string ∈juga besar. Jika nilai Vn kecil maka proses osilasi juga kecil.

Page 31: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

19

BAB III

PENGUMPULAN DAN PENGOLAHAN DATA

3.1 Kerandoman (Randomnes)

Sebuah barisan binari random dengan panjang k akan menghasilkan sebuah

barisan binari dengan panjang l >> k yang merupakan barisan yang random pula.

Barisan input yang dibangkitkan disebut dengan bibit sedangkan outputnya

disebut dengan barisan pseudorandom bit. Sebuah mekanisme pokok untuk

menghasilkan data yang benar-benar random disebut dengan Random Number

Generator (RNG).

Barisan random binari merupakan sebuah barisan bit dimana untuk setiap

bit “ 0 ” atau “ 1 ” memiliki probabilitas ½ dan nilai untuk setiap bit adalah

saling bebas antara bit yang satu dengan bit-bit yang lain dalam sebuah barisan

dengan kata lain bahwa untuk setiap bitnya tidak dapat diprediksikan[5].

3.2 Pengambilan Data

Data yang diujikan merupakan data plainteks dan chiperteks hasil enkripsi

pada algoritma DES (Data Encryption Standard) yang diambil dari surat kabar

“Berita Kota, hal. 3 dan 4, Senin, 23-02- 2009”. .

Page 32: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

20

3.3 Pengolahan Data

3.3.1 Uji Frekuensi (Monobit)

Tujuaan dari uji frequensi (monobit) adalah menentukan apakah

barisan bilangan jumlah antara binari 0 dan 1 sama atau benar-benar

merupakan deretan yang random.

Frequensi(n), di mana:

n : adalah panjang bit string.

ε : adalah barisan bit-bit yang telah dibangkitkan oleh uji RNG

atau PRNG, nεεεε ,,, 21 Κ=

Sobs : Jumlah nilai absolut pada Xi (dimana Xi = 2εi -1 = ± 1) dalam

suatu barisan dibagi dengan akar dari panjang suatu barisan.

Langkah-langkah pengujian

a. Ubah ke ± 1: 0 dan 1 pada input barisan (ε) diubah ke nilai

-1 dan +1 dan keduanya dijumlahkan bersama sehingga

menghasilkan Sn = X1 + X2 + …+ Xn, dimana Xi = 2εi – 1

Contoh: Jika ε = 1011010101, maka n = 10

Sn = 1 + (-1) + 1 + 1 + (-1) + 1 + (-1) + 1 + (-1) + 1 = 2

b. Menghitung uji statistik Sobs = |Sn| / n .

Sobs = 10

|2| = 0.632455532

Page 33: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

21

c. Menghitung P-value = erfc ⎟⎠

⎞⎜⎝

⎛2

obsS, dimana erfc adalah

fungsi error yang melengkapi.

P-value = erfc ⎟⎠

⎞⎜⎝

⎛2

632455532.0 = 0.527089

d. Kaidah keputusan (pada level 1%), jika P-value yang

dihitung kurang dari 0.01 maka disimpulkan bahwa barisan

tersebut tidak random. Sebaliknya, disimpulkan bahwa

barisan itu random[5].

Kesimpulan: karena P-value ≥ 0.01 yaitu 0.527089 ≥ 0.01,

maka disimpulkan bahwa barisan tersebut adalah random.

3.3.2 Uji Frekuensi dalam Sebuah Blok

Tujuan dari pengujian ini adalah untuk menentukan apakah

frekuensi 1 dalam sebuah M-bit blok adalah kira-kira M/2, yang

diharapkan dibawah sebuah asumsi kerandoman.

Blok frequensi (M,n), di mana:

M : adalah merupakan panjang sebuah blok.

n : adalah panjang bit string.

ε : adalah barisan bit-bit yang telah dibangkitkan oleh uji

RNG atau PRNG, nεεεε ,,, 21 Λ= .

Page 34: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

22

2χ : sebuah ukuran bagaimana satu bagian diobservasi dengan

baik dengan diberikan M-bit blok pada bagian yang

diharapkan (1/2).

Distribusi yang digunakan pada uji ini adalah distribusi

Langkah-langkah pengujian:

a. Partisi barisan input menjadi N = [n / M] blok-blok yang

tidak overlapping, buang bit yang tidak terpakai.

Contoh: jika n = 10, M = 3 dan ε = 0110011010

N = 33

10=⎥⎦

⎤⎢⎣⎡=⎥⎦

⎤⎢⎣⎡

Mn , dimana 3 bloknya ( N = 3) adalah

011, 001, 101, dan sisa bit terakhir pada barisan

dihilangkan.

b. Tentukan proporsi πi pada setiap M-bit blok menggunakan

persamaan:

NiuntukM

jMiM

ji ≤≤

+−=∑= 1,

)1(1ε

π

3 3

(1 1)31 1 1 2 3

10 1 1 2

3 3 3 3 3

j jj jε ε

ε ε επ− +

= = + + + += = = = =∑ ∑

3 3

(2 1)3 31 1 4 5 6

20 0 1 1

3 3 3 3 3

j jj jε ε

ε ε επ− + +

= = + + + += = = = =∑ ∑

Page 35: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

23

3 3

(3 1)3 61 1 7 8 9

31 0 1 2

3 3 3 3 3

j jj jε ε

ε ε επ− + +

= = + + + += = = = =∑ ∑

Hitung statistik 2χ : 2χ (obs) = 4M∑=

−N

ti

1

22

1 )(π

( ) ( ) ( )( ) 134)( 22

13

222

13

122

13

22 =−+−+−××=obsχ

c. Hitung P-value =igamc(N/2, 2χ (obs)/2), dimana igamc

adalah fungsi gamma tidak lengkap untuk Q(a, x).

P-value = igamc ( ) 801252.0, 21

23 =

d. Kaidah keputusan (pada level 1%), jika P-value yang

dihitung < 0.01 maka disimpulkan bahwa barisan tersebut

tidak random. Sebaliknya , disimpulkan bahwa barisan itu

random.

Karena P-value ≥0.01, yaitu 0.801252 ≥ 0.01, maka

disimpulkan bahwa barisan tersebut adalah random.

3.3.3 Uji Runs

Uji ini merupakan total bilangan runs dalam sebuah barisan,

dimana sebuah run adalah sebuah barisan bit-bit yang identik yang

tidak terputus-putus. Panjang k sebuah run terdiri dari tepat k bit-bit

yang identik dan sebelum dan sesudahnya dibatasi dengan sebuah bit

dengan nilai yang berlawanan. Tujuan dari uji ini adalah untuk

Page 36: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

24

menentukan apakah panjang dari variasi satu dan nol pada bilangan

runs merupakan barisan yang random.

Runs(n), di mana:

n : panjang bit string

ε : adalah barisan bit-bit yang telah dibangkitkan oleh uji

RNG atau PRNG, ini ada sebagai struktur global pada

waktu pemanggilan fungsi; nεεεε ,,, 21 Λ= .

Vn(obs) : total bilangan runs (yaitu total bilangan nol runs

ditambah dengan total bilangan satu-runs) jarak

lintasan semua n bit-bit.

Uji statistik pada uji ini menggunakan distribusi 2χ

Langkah-langkah pengujian

a. Hitung pre-tes bagian π satu dalam barisan input:

nj j∑

π

Contoh: jika ε = 1001101011, maka n= 10

nj j∑

π

1 2 3 4 5 6 7 8 9 10

1 0 0 1 1 0 1 0 1 1 6 310 10 5

nε ε ε ε ε ε ε ε ε επ + + + + + + + + +

=

+ + + + + + + + += = =

Page 37: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

25

b. Tentukan jika prasyarat uji frequensi telah dilalui: jika

dapat ditunjukan |π – 1/2| τ≥ , maka uji runs tidak

dapat dilakukan (yaitu uji harus tidak run). Jika uji

tidak aplikabel, maka P-value adalah hinpunan

0.0000, di mana τ = 2 / n .

63246.010

2 ≈=τ , maka |π -1/2| = |3/5 –1/2| =

0.1, karena 0.1< τ , dan uji adalah tidak run.

c. Hitung uji statistik ∑ −

=+=

1

11)()( n

kn krobsV , di mana

r(k) = 0 jika 1+= kk εε dan r(k) = 1 jika sebaliknya.

Karena ε = 1001101011, maka

V10(obs ) = (1+0+1+0+1+1+1+1+0)+1=7

d. Hitung P-value = erfc ⎟⎟⎠

⎞⎜⎜⎝

−−

)1(22)1(2)(

ππ

ππ

nnobsVn

P-Value =erfc( )( )( )⎟

⎟⎠

⎞⎜⎜⎝

−••••

−••−

53

53

53

53

11022

11027= 0.147232

e. Kaidah keputusan (pada level 1%), jika P-value <

0,01 maka barisan adalah tidak random, dan

sebaliknya.

Karena P-value ≥ 0.01, yaitu 0.147232 ≥ 0.01, maka

disimpulkan bahwa barisan adalah random.

Page 38: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

26

BAB IV

UJI KERANDOMAN BIT PADA DES

Pada bab ini akan dijelaskan analisis data yang dihasilkan setelah proses

enkripsi. Analisis ini dilakukan untuk mengetahui kerandoman dari suatu barisan

bit pada barisan input dan output pada DES. Barisan bit yang digunakan terdiri

dari beberapa kata, satu kalimat, dan satu paragraf dengan jumlah bilangan binar

yang berbeda akan tetapi menggunakan kunci yang sama. Pengujian pertama yang

dilakukan adalah uji monobit, kemudian uji frequensi within a block, uji run, dan

uji cumulative sum (cumsum).

4.1 Analisis Hasil

Untuk mengetahui kerandoman bit pada input dan output proses enkripsi

algoritma DES, plainteks maupun chiperteks ditransformasikan ke dalam bentuk

hexadesimal kemudian ditransformasikan kembali ke dalam bentuk bilangan

binari.

Plainteks yang akan digunakan untuk proses enkripsi diberikan pada lampiran 1.

Page 39: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

27

4.1.1 Uji kerandoman Bit dengan Uji Statistik Monobit

Nilai Probabilitas (P-value) pada uji statistik kerandoman bit dengan

menggunakan uji monobit dapat dilihat pada lamp. 4.

Dalam pengambilan keputusan kriteria yang digunakan adalah sebagai

berikut:

Jika P-value < α (0.01), maka Ho ditolak

Jika P-value ≥ α(0.01), maka Ho diterima

Berdasarkan tabel P-value pada uji monobit untuk data input

(plainteks) 81.67% barisan binarinya merupakan barisan yang random.

Sedangkan untuk data output (chiperteks) 98.33% barisan binarinya

merupakan barisan yang random.

Dari data hasil yang didapat bahwa rata-rata untuk barisan binari pada

data input (plainteks) dan output (chiperteks) yang merupakan hasil

enkripsi pada DES dengan panjang barisan bit 64 memiliki P-value yang

cukup besar dan mendekati 1. Hal ini menunjukkan bahwa tingkat

kesamaan antara barisan binari 1 dan 0 cukup besar. Sedangkan untuk data

dengan input satu kalimat dan satu paragraf sebagian besar juga memiliki

tingkat kesamaan antara binari 1 dan 0-nya dan sebagian memiliki tingkat

kesamaan yang kecil antara binari 1 dan 0-nya.

Pada data input tingkat kesamaan terbesar terjadi pada barisan input

yang memiliki nilai P-value 1 yang berarti bahwa jumlah barisan binari 1

dan 0 sama. Sedangkan tingkat kesamaan terkecil untuk data input yaitu

Page 40: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

28

pada barisan binari dengan P-value 0.0002 yang menandakan bahwa

terjadinya perbedaan yang cukup besar antara jumlah barisan binari 1 dan

0, hal ini memungkinkan terjadinya lebih besarnya jumlah binari 1

daripada 0 dalam suatu barisan bit ataupun sebaliknya.

Untuk barisan bit yang merupakan hasil output proses enkripsi pada

DES terlihat bahwa tingkat kesamaan tertinggi terjadi pada barisan bit

dengan P-value 0.8700. Pada hasil output enkripsi tingkat kesamaan

terkecil antara barisan binari 1 dan 0 terjadi pada P-value 0.0016, hal ini

menunjukkan bahwa pada chiperteks hasil enkripsi pada DES terdapat

ketidaksamaan pada barisan binari antara binari 1 dan binari 0. Pada hasil

output enkripsi tidak terjadi perbedaan jumlah antara binari 1 dan 0 yang

cukup besar.

4.1.2 Uji Kerandoman Bit dengan Frekuensi dengan Sebuah Blok

Nilai Probabilitas (P-value) pada uji statistik kerandoman bit dengan

uji frekuensi within a block dapat dilihat pada lamp. 4.

Dalam pengambilan keputusan kriteria yang digunakan adalah sebagai

berikut:

Jika P-value < α (0.01), maka Ho ditolak

Jika P-value ≥ α(0.01), maka Ho diterima

Page 41: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

29

Berdasarkan tabel P-value pada uji frekuensi dengan sebuah blok untuk

data input (plainteks) maupun data output (chiperteks) 100% barisan

binarinya merupakan barisan yang random.

Dari data hasil yang didapat pada lampiran 4 untuk data input

(plainteks) P-value terbesar adalah 0.9988 dengan nilai uji statistik 210.

tingkat P-value terkecil adalah 0.0173 dengan nilai uji statistik adalah 30.

Untuk hasil output enkripsi (chiperteks) DES didapat nilai terbesar P-

value adalah 0.9876 dengan nilai uji statistik terkecil adalah 8. Nilai P-

value terkecil adalah 0.0110 dengan nilai statistik 167.

4.1.3 UJi Kerandoman Bit dengan Uji Statistik Run

Nilai Probabilitas (P-value) pada uji statistik kerandoman bit dengan

uji run dapat dilihat pada lamp. 4.

Dalam pengambilan keputusan kriteria yang digunakan adalah sebagai

berikut:

Jika P-value < α (0.01), maka Ho ditolak

Jika P-value ≥ α(0.01), maka Ho diterima

Berdasarkan tabel P-value pada uji run untuk data input (plainteks)

80% barisan binarinya merupakan barisan yang random sedangkan data

output (chiperteks) 100% barisan binarinya merupakan barisan yang

random.

Page 42: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

30

Berdasarkan data hail yang didapat pada lamp. 4 diketahui bahwa

untuk data input (plainteks) terdapat ketidak randoman yang terbesar

terjadi pada data input (plainteks) satu paragraf dengan nilai uji statistik

636 dan 612 dan P-value 0.0003.

Untuk data hasil output (chiperteks) proses enkripsi DES berdasarkan

nilai P-value untuk barisan binari yang diujikan adalah random.

Kerandoman terbesar terjadi pada P-value 0.9750 dengan nilai uji statistik

32 dengan jumlah data 64.

.

Page 43: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

31

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Analisis kerandoman yang dilakukan pada barisan binari input (plainteks)

dan output (chiperteks) pada proses enkripsi kriptografi dengan menggunakan

algoritma DES (Data Encryption Standard) . Dapat disimpulkan bahwa nilai p-

value untuk uji monobit pada barisan binari pada input (plainteks) merupakan

barisan yang random. Untuk output hasil enkripsi pada algoritma DES

berdasarkan nilai p-value didapat bahwa barisan binari yang dihasilkan

merupakan barisan yang random, dengan tingkat kesamaan antara binari 1 dan 0

lebih besar dari barisan binari pada data input .

Pada uji frekuensi within a block didapat bahwa barisan binari input

(plainteks) dan output yang diujikan merupakan barisan yang random. Dimana,

pada barisan binari output frekuensi binari 1 lebih sedikit dibandingkan dengan

frekuensi 1 pada barisan binari input.

Nilai p-value untuk uji run pada barisan input (plainteks) pada sebagian

data merupakan barisan yang random untuk data yang kecil, sedangkan untuk

data yang besar barisan binarinya merupakan barisan yang tidak random. Untuk

output hasil enkripsi pada algoritma DES berdasarkan nilai p-value didapat

bahwa barisan binari yang dihasilkan merupakan barisan yang random.

Page 44: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

32

5.2 Saran

Penulis mengharapakan hasil analisis yang diperoleh dapat dijadikan

argument yang cukup bagi pengguna algoritma DES, bahawa algoritma DES

layak digunakan sebagai media di dalam mengamankan data atau informasi jika

dipandang dari segi kerandoman bit pada output hasil enkripsi (chiperteks).

Terdapat 16 deretan uji NIST untuk melakukan pengujian terhadap

kerandoman suatu barisan bit, sebaiknya dilakukan uji-uji yang lain dan uji

kerandoman narisan bit pada algoritma selain DES seperti RSA dan lain-lain

untuk penelitian penelitian lebih lanjut.

Page 45: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

33

REFERENSI

[1] Ariyus, Dony. Kriptografi Keamanan Data dan Komunikasi. Graha

Ilmu: September 2005.

[2] Hogg, Robert V. and Allen T. Craig. Introduction to Mathematical

Statistics. New Jersey: Prentice-Hall, inc. 1995.

[3] Komputer, Wahana. Memahami Model Enkripsi dan Security Data.

Yogyakarta: ANDI OFFSET. 2003.

[4] Munir, Rinaldi. Kriptografi. Bandung: Penerbit Informatika.2005.

[5] NIST. A Statistical Test Suite for Random and Pseudorandom Number

Generators for Cryptographic Application. United State of America:

2001.

[6] Raharjo, Budi. Keamanan Sistem Informasi Berbasis Internet.

Jakarta-Bandung: PT.INDOCISC-PT. Insan Infonesia. 1998-2002.

[7] Wagstaff, Samuel S. Crytanalysis of Number Theoretic Chiper. New

York: Champman & Hall/CRC. 2003.

[8] http://www.google.com/dosen/aji/computer_security/bab_2. html,

[11/03/07 01:14:35 AM]

[9] http://www.google.com/kriptografi. pdf,

[01/15/08 11:27:10 AM]

Page 46: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

34

LAMPIRAN

Page 47: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

35

Lampiran 1 Plainteks dan Chiperteks dengan Menggunakan Kunci yang Sama

Kunci (Teks)

Browser

Kunci (Heksadesimal)

42726F77736572

Plainteks Delapan Huruf dalam Bentuk Teks

1. resolusi

2. Marcella

3. dilansir

4. memasang

5. berpesan

Plainteks Satu Kalimat dalam Bentuk Teks

1. Puluhan aset milik Pemprov DkI Jakarta terancam lepas.

2. Manfaat ASI sangat luar biasa.

3. Manusia tak boleh dikotak-kotakkan.

4. Penetapan perolehan kursi dilkukan antara 19-20 Mei.

5. Pemerintah Bekasi Alokasikan Rp 3 miliar untuk pasien gakin.

Plainteks Satu Paragrap dalam Bentuk Teks

1. Pasien gakin tinggal masuk.Biaya rumah sakitnya ditanggung APBD. Satu

oaring pasien mendapat subsidi Rp 4 juta.

Page 48: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

36

2. Dalam rangka memperingati Hari Kartini pada 21 April 2009, polisi wanita

(polwan) yang bertugas di Samsat Kota Depok mengenakan kebaya. Para

polwan tersebut ditempatkan dipintu masuk kantor Samsat Kota Depok.

3. Menurut Maswadi, SBY akan lebih nyaman jika berkoalisi dengan Partai

Golkar. Jika Partai Golkar dan Demokrat berkoalisi maka akan berat bagi

capres lain.

4. Persijap Jepara mengklaim menderita kerugian Rp 600 juta. Jumlah ini

muncul akibat siaran lamgsung televisi dari tiga pertandingan home

terarikhir.

5. Toyota F1 membuat keputusan mengejutkan. Tim bermarkas di cologne,

Jerman, itu menyatakan mundur dari ajang balap jet darat tahun depan.

Plainteks Delapan Huruf yang Dikonfirmasi ke dalam Bentuk

Heksadesimal

1. 7265736F6C757369

2. 4D617263656C6C61

3. 64696C616E736972

4. 6D656D6173616E67

5. 626572706573616E

Plainteks Satu Kalimat yang Dikonfirmasi ke dalam Bentuk Heksadesimal

1. 4D616E66616174004153490773616E676174086C7561720A62696173612E

Page 49: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

37

2. 4D616E757369610074616B07626F6C65680864696B6F74616B2D6B6F74

616B6B616E2E

3. 50656E65746170616E007065726F6C6568616E076B757273690864696C61

6B756B616E0A616E746172610D31392D3230204D65692E

4. 50656D6572696E7461680042656B61736907616C6F6B73696B616E08527

00A330D6D696C69617220756E74756B0070617369656E0767616B696E2

E

5. 496E766573746F72006D61736968076D656E616E74696B616E0870656E6

7756D756D616E0A5468650D46656420736F616C0073756B750762756E6

7612E

Plainteks Satu Paragraf yang Dikonfirmasi ke dalam Bentuk Heksadesimal

1. 50617369656E0067616B696E0774696E6767616C086D6173756B2E0A426

96179610D72756D61682073616B69746E796100646974616E67677566E67

0741425042442E08536174750A6F72616E670D70617369656E206D656E6

461706174007375627369646907527008340A6A7574612E

2. 44616C616D0072616E676B61076D656D706572696E67617469084861726

90A4B617274696E690D7061646120323100417072696C07323030392C08

706F6C6973690A77616E6974610D28706F6C77616E292079616E6700626

57274756761730764690853616D7361740A4B6F74610D4465706F6B206D

656E67656E616B616E006B65626179612E075061726108706F6C77616E0

A74657273656275740D646974656D7061746B616E2064690070696E7475

Page 50: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

38

076D6173756B084B616E746F720A53616D7361740D4B6F746120446570

6F6B2E

3. 4D656E757274004D6173776164692C0753425908616B616E0A6C6562696

80D6E79616D616E206A696B61006265726B6F616C6973690764656E676

16E085061727461690A476F6C6B61722E0D4A696B612050617274616900

44656D6F6B7261740764616E085061727461690A476F6C6B61720D62657

26B6F616C697369206D616B6100616B616E07626572617408626167690A

6361707265730D6C61696E2E

4. 50657273696A6170004A6570617261076D656E676B6C61696D086D656E

6465726974610A6B6572756769616E0D527020363030006A7574612E074

A756D6C616808696E690A6D756E63756C0D616B6962617420736961726

16E006C616E6773756E670774656C657669736908646172690A746967610

D70657274616E64696E67616E20686F6D6500746572616B6869722E

5. 546F796F7461004631076D656D62756174086B657075747573616E0A6D6

56E67656A75746B616E2E0D54696D206265726D61726B6173006469074

36F6C6F676E652C084A65726D616E2C0A6974750D6D656E796174616B

616E206D756E647572006461726907616A616E670862616C61700A6A657

40D646172617420746168756E00646570616E2E

Chiperteks Delapan Huruf dalam Bentuk Heksadesimal

1. 0783EE6182FF646B

2. 80879566A3618EF4

3. 0E131A132F0CE08F

Page 51: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

39

4. 41007C4E13F43FAC

5. D0E6A963CFE8E7AE

Chiperteks Satu Kalimat dalam Bentuk Heksadesimal

1. 9A3112F8B5148A58F077679402C55320544AB5D4CCA81755387452A56

5D996E5D5E0ABAB2F8FDDFA335B81B0780A02187BBBD9C724285E6

8

2. 16A0162DDE5D164E88FAA32F52364627D71C279A6E67C20B88650BD

70763FB0C

3. 733C580CE6B3ECC48B34B1CDB3E53990E04E49FC80F34B96E529F850

5E7B03F5

4. 084BD7CFD7F23C09CFF80EB3CF7912A996A7639CBF06052D41FE983

EC0DBEE75F10C29B124BC390F6ACA9E951EE2DB0229A3D09D8E62

A857

5. A053258314DFD28AFCF364F9B2577C0C98BA8DA41203EC00E65008D

16B3EF62F4FB27914FD30EA5F37B2B46BF2CA6143833F0120DB25DD

6C01BC5E9EEDB0

Ciperteks Satu Paragraf dalam Bentuk Heksadesimal

1. 8C54492A84AB1977DB792FF2A6BF5FB2D09D2FC7D86DAEF69F0E8F

9F199EA6B5BB26C1A0B7D954E99F9A7715BC7D221462DACCBD2FB

800CC0CF9E6626FC59503CB348FABA2435CBF2EF9D0DBE4871F8245

Page 52: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

40

257BCCEC27D895061CC288D7C62A2A67209A421DC8D42AED1BAE0

2E3D3E5FC

2. 45F14E17E27732F95E32381AEA6447257319F78CAB30B078CC7F78C0F

C5FBB0190D2DD26438A7A553159D58C1524C0DD57DE00236E002E91

EFCB58CFFA8F1877F822BB6AEF1A13242C899EA9630801100E049B01

1BC5CF70C9DE855936C4036914EE2DB9675D8F7178D5B309ED00C91

66370C47A1861D19C2110D97E5D888989B032CAD06803F72024E0B9E

99BE231C9D296392F9BC2EEB15BF87C1C06B92A5252B54A70E2F6080

03E8A4FDDCE3A5D7B229F93A7A94DC73417C13AD6D95B1E13F1A0

B0FD25F0A8DDA4702AC8721F4F66140E1E5421BAB23CB

3. F75D0AF9047D669182631E02A6793B0A9E0CC2843D1B9AE8A807E0A

AAB0C5F432A6B0C67C76D0C84A714339CEC2B68D3B7217A9FFC617

1710E7667394C92BBD57F7DF271A1082C421E2F88EE5A223CA1C3CF0

7BE370C397994E83F630716F7C000A0D1B099584DC47F7DF271A1082

C4222AC476049E54F500A5F0E9A368FEDDB406DF1EF4045741F85217

0211B177E08C7F853EF3C78FC722E7965ACF4CA568A

4. EE0777C99D3E6747EF18351BEB31450C19CBB1D07D7649AE6D8A76B

B1B9A4180644BBF3DC83934F9BBE2A084B88D3BCE17B8F98DB2385

5C38689B774FDF10E9B0564C234F17E102AAFA5BC42C34DA0E09377

AE404E7DD18C0D9BD5B2D4868B2F4C311C7D5C87EA1B4C3226E498

35CC3DE7D8E4CFE27773405D410E2156C0AAC1E8F7B6CF1699581E5

3803E7440B4CC140E1E5421BAB23CB

Page 53: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

41

5. 7B529DBD4D7EF7BB0DD2E8E044FA6B99CD12B4BADD0EAB7229ED

441C04FE8F3E93516E572558D6F955D33F37E3B01CFC036EEF8AA396

C3D99D44EDE50CC566D4312E00A1D1A5EC2A0E98298840DF9BFC38

285E434F6F532F33EB51CD86B4AA85C3A498F9E2E134744E3D1AD4B

97B80778513F3C31E3AB9C47F764C9BBFC7D95F10CC1432A793EB31

F

Page 54: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

42

Lampiran 2 Program Enkripsi dan Dekripsi Algoritma DES /********************************************** *********************************************** DES Encrypt 0.0.2 by Sean Kane - http://celtickane.com Coder's note: the concept and general instructions to construct this program were taken from http://www.aci.net/kalliste/des.htm. All the DES encryption used is based off this website. Additionally, the general coding design of des_round was modeled after the a DES Javascript example (http://www.cs.eku.edu/faculty/styer/460/Encrypt/JS-DES.html) ********************************************** *********************************************/ //todo: check goto's on interface #define debug_mode 0 #define super_debug 0 #define TRUE 1 #define FALSE 0 //Header file includes #include <stdio.h> #include <iostream.h> #include <stdlib.h> //exit() #include <string.h> //strlen() #include <conio.h> //getch() #include <math.h> //pow() //Primary function prototypes (directly relate to DES) void des_encrypt (int bufMsgBin[ ],int bufKeyBin[ ],char do_encrypt,int buffer_out[ ] ); void des_round(int bufferL[ ], int prev_bufferL[ ], int bufferR[ ], int prev_bufferR[ ], int bufferK[ ], int round); void permutate(int buffer[ ], int pt_list[ ], int pt_list_count, int outbits, int buffer_out[ ]); void leftshift(int buffer[ ], int num_shifts, int buffer_out[ ]); //Supplementary function prototypes void verifylength(char buffer[ ], int length); void chr2bin(char buffer_ascii[ ], int buffer_bin[ ]); void hex2bin(char buffer_hex[ ], int buffer_bin[ ]); void print_binary(char title[ ], int buffer[ ], int size, int spacing, char sameline); //Permutation tables int pt_pc1[ ] = 57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4; #define pt_pc1_count 56 int pt_pc2[ ] = 14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32; #define pt_pc2_count 48

Page 55: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

43

int pt_ip[ ] = 58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7; #define pt_ip_count 64 int pt_ebit[ ] = 32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1; #define pt_ebit_count 48 int pt_p[ ] = 16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25; #define pt_p_count 32 int pt_ip_1[ ] = 40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25; #define pt_ip_1_count 64 //s transformation tables int pt_s[8][4][16] = //S1 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8, 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0, 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13, //S2 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10, 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9, //S3 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12, //S4 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14, //S5 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3, //S6 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13, //S7 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,

Page 56: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

44

//S8 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11 ; int main() char bufMsgHex[16], bufMsgAscii[8]; //Message variables int bufMsgBin[64], bufKeyBin[64]; //Binary variables char bufKeyHex[16], bufKeyAscii[8]; //Key variables int bufOutputBin[64], bufOutputHex[16], bufOutputAscii[8]; char chrPrompt, chrSecPrompt; int i,j; //The first thing we're concerned about is getting the user input //All the main() function does is process the initial input, parse it //into the data that we want, then call a function that will encrypt for(;;) printf("(E)ncrypt, (D)ecrypt, (Q)uit: "); chrPrompt = getchar(); switch( chrPrompt ) //********************************************** //Interface for encryption //********************************************** case 'e': case 'E': //Get the message from the user fflush(stdin); //clear the garbage out of the input buffer printf("Is the message in (H)exidecimal or (A)scii? "); gReevalEMsg: //If they didn't type in H or A...make them do it again chrSecPrompt = getchar(); switch( chrSecPrompt ) case 'h': case 'H': gEReenterMsgHex: printf("Enter 16-digit hexidecimal message: "); scanf("%16s", bufMsgHex); verifylength(bufMsgHex,16); //Let's verify all the digits are hexidecimal... for(i=0;i<16;i++) if( !(((bufMsgHex[i]>47) && (bufMsgHex[i]<58)) || ((bufMsgHex[i]>64) && (bufMsgHex[i]<71)) || ((bufMsgHex[i]>96) && (bufMsgHex[i]<103)))) printf("Hexidecimal numbers may only contain numbers 0-9 and letters A-F\n"); goto gReenterKeyHex; hex2bin(bufKeyHex,bufKeyBin); break; case 'a': case 'A': printf("Enter 8-digit ascii message: "); scanf("%8s", bufKeyAscii);

Page 57: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

45

verifylength(bufKeyAscii,8); chr2bin(bufMsgAscii,bufMsgBin); break; default: printf("Please type H or A:"); fflush(stdin); goto gReevalEMsg; break; if(debug_mode) print_binary("Message binary: ",bufMsgBin,64,8, FALSE); //Get the key from the user fflush(stdin); //clear the garbage out of the input buffer printf("Is the key in (H)exidecimal or (A)scii? "); gReevalEKey: //If they didn't type in H or A...make them do it again chrSecPrompt = getchar(); switch( chrSecPrompt ) case 'h': case 'H': gReenterKeyHex: printf("Enter 16-digit hexidecimal key: "); scanf("%16s", bufKeyHex); verifylength(bufKeyHex,16); //Let's verify all the digits are hexidecimal... for(i=0;i<16;i++) if( !(((bufKeyHex[i]>47) && (bufKeyHex[i]<58)) || ((bufKeyHex[i]>64) && (bufKeyHex[i]<71)) || ((bufKeyHex[i]>96) && (bufKeyHex[i]<103)))) printf("Hexidecimal numbers may only contain numbers 0-9 and letters A-F\n"); goto gReenterKeyHex; hex2bin(bufKeyHex,bufKeyBin); break; case 'a': case 'A': printf("Enter 8-digit ascii key: "); scanf("%8s", bufKeyAscii); verifylength(bufKeyAscii,8); chr2bin(bufKeyAscii,bufKeyBin); break; default: printf("Please type H or A:"); fflush(stdin); goto gReevalEKey; break; if(debug_mode) print_binary("Key binary: ",bufKeyBin,64,8, FALSE); des_encrypt(bufMsgBin,bufKeyBin,TRUE,bufOutputBin); //Convert bufEncrypted to hex and ascii printf("Hexidecimal output: "); for(i=0;i<16;i++) j = bufOutputBin[i*4] * 8 + bufOutputBin[i*4+1] * 4 + bufOutputBin[i*4+2] * 2 + bufOutputBin[i*4+3]; bufOutputHex[i] = j; printf("%x",bufOutputHex[i]);

Page 58: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

46

printf("\n"); break; //********************************************** //Interface for decryption //********************************************** case 'd': case 'D': //Get the message from the user fflush(stdin); //clear the garbage out of the input buffer printf("Is the ciphertext in (H)exidecimal or (A)scii? "); gReevalDMsg: //If they didn't type in H or A...make them do it again chrSecPrompt = getchar(); switch( chrSecPrompt ) case 'h': case 'H': gDReenterMsgHex: printf("Enter 16-digit hexidecimal ciphertext: "); scanf("%16s", bufMsgHex); verifylength(bufMsgHex,16); //Let's verify all the digits are hexidecimal... for(i=0;i<16;i++) if( !(((bufMsgHex[i]>47) && (bufMsgHex[i]<58)) || ((bufMsgHex[i]>64) && (bufMsgHex[i]<71)) || ((bufMsgHex[i]>96) && (bufMsgHex[i]<103)))) printf("Hexidecimal numbers may only contain numbers 0-9 and letters A-F\n"); goto gDReenterMsgHex; hex2bin(bufMsgHex,bufMsgBin); break; case 'a': case 'A': printf("Enter 8-digit ascii ciphertext: "); scanf("%8s", bufMsgAscii); verifylength(bufMsgAscii,8); chr2bin(bufMsgAscii,bufMsgBin); break; default: printf("Please type H or A:"); fflush(stdin); goto gReevalDMsg; break; if(debug_mode) print_binary("Ciphertext binary: ",bufMsgBin,64,8, FALSE); //Get the key from the user fflush(stdin); //clear the garbage out of the input buffer printf("Is the key in (H)exidecimal or (A)scii? "); gReevalDKey: //If they didn't type in H or A...make them do it again chrSecPrompt = getchar(); switch( chrSecPrompt ) case 'h': case 'H': gDReenterKeyHex: printf("Enter 16-digit hexidecimal key: "); scanf("%16s", bufKeyHex); verifylength(bufKeyHex,16); //Let's verify all the digits are hexidecimal...

Page 59: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

47

for(i=0;i<16;i++) if( !(((bufKeyHex[i]>47) && (bufKeyHex[i]<58)) || ((bufKeyHex[i]>64) && (bufKeyHex[i]<71)) || ((bufKeyHex[i]>96) && (bufKeyHex[i]<103)))) printf("Hexidecimal numbers may only contain numbers 0-9 and letters A-F\n"); goto gDReenterKeyHex; hex2bin(bufKeyHex,bufKeyBin); break; case 'a': case 'A': printf("Enter 8-digit ascii key: "); scanf("%8s", bufKeyAscii); verifylength(bufKeyAscii,8); chr2bin(bufKeyAscii,bufKeyBin); break; default: printf("Please type H or A:"); fflush(stdin); goto gReevalDKey; break; if(debug_mode) print_binary("Key binary: ",bufKeyBin,64,8, FALSE); des_encrypt(bufMsgBin,bufKeyBin,FALSE,bufOutputBin); //Output as hex and ascii printf("Hexidecimal output: "); for(i=0;i<16;i++) j = bufOutputBin[i*4] * 8 + bufOutputBin[i*4+1] * 4 + bufOutputBin[i*4+2] * 2 + bufOutputBin[i*4+3]; bufOutputHex[i] = j; printf("%x",bufOutputHex[i]); printf("\nAscii output: "); for(i=0;i<8;i++) j = bufOutputBin[i*8] * 128 + bufOutputBin[i*8+1] * 64 + bufOutputBin[i*8+2] * 32 + bufOutputBin[i*8+3] * 16 + bufOutputBin[i*8+4] * 8 + bufOutputBin[i*8+5] * 4 + bufOutputBin[i*8+6] * 2 + bufOutputBin[i*8+7]; bufOutputAscii[i] = j; printf("%c",bufOutputAscii[i]); printf("\n"); break; case 'q': case 'Q': exit(1); break; default: fflush(stdin); //clear the garbage out of the input buffer printf("Please type E, D, or Q\n"); break; //end select fflush(stdin); //end for getch(); return 0;

Page 60: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

48

//********************************************** //Primary functions -- directly relate to DES encryption //********************************************** void des_encrypt(int bufMsgBin, int bufKeyBin, char do_encrypt, int buffer_out) //buffer_out will contain the encrypted phrase int bufKeyBin56[56], bufKeyC16[17][28], bufKeyD16[17][28], bufKeyCD56[17][56], bufKeyCD48[17][48]; //Key variables int bufMsgBinIP[64], bufMsgBinL[17][32], bufMsgBinR[17][32], bufMsgBinRL[17][64]; int i,j; //********************************************** //Step 1: Encode the 64-bit key //********************************************** //*********************** //Step 1.1: permutate the 64-bit key into a 56-bit key using table pc_1 [verified] //*********************** permutate(bufKeyBin,pt_pc1,pt_pc1_count,56,bufKeyBin56); if(debug_mode) print_binary("After permutating the key with table pc_1: ",bufKeyBin56,56,7, FALSE); //*********************** //Step 1.2: split the 64-bit key into 2, 28-bit keys //*********************** for(i=0;i<28;i++) bufKeyC16[0][i] = bufKeyBin56[i]; for(i=28;i<56;i++) bufKeyD16[0][i-28] = bufKeyBin56[i]; if(debug_mode) printf("After splitting the key from 56-bit to 2, 28-bits:\n"); print_binary("C[0]: ",bufKeyC16[0],28,7,FALSE); print_binary("D[0]: ",bufKeyD16[0],28,7,FALSE); //*********************** //Step 1.3: make 16 CD subkeys, each left shift 1 or 2, then concatenate CD //*********************** if(debug_mode) printf("\nAfter left-shifting the key and concatenation: \n"); for(i=0;i<=16;i++) if ( i==0 ) //don't do stuff to it... for(j=0;j<28;j++) //Concatenate half of it bufKeyCD56[i][j] = bufKeyC16[i][j]; for(j=0;j<28;j++) //Concatenate the other half bufKeyCD56[i][j+28] = bufKeyD16[i][j]; goto skipshifts; if( (i==1) || (i==2) || (i==9) || (i==16) ) leftshift(bufKeyC16[i-1],1,bufKeyC16[i]); for(j=0;j<28;j++) //Concatenate half of it bufKeyCD56[i][j] = bufKeyC16[i][j]; leftshift(bufKeyD16[i-1],1,bufKeyD16[i]); for(j=0;j<28;j++) //Concatenate the other half bufKeyCD56[i][j+28] = bufKeyD16[i][j];

Page 61: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

49

else leftshift(bufKeyC16[i-1],2,bufKeyC16[i]); for(j=0;j<28;j++) //Concatenate half of it bufKeyCD56[i][j] = bufKeyC16[i][j]; leftshift(bufKeyD16[i-1],2,bufKeyD16[i]); for(j=0;j<28;j++) //Concatenate the other half bufKeyCD56[i][j+28] = bufKeyD16[i][j]; skipshifts: if(debug_mode) printf("CD[%2d] - ",i); for(j=0;j<56;j++) printf("%d",bufKeyCD56[i][j]); if(((j+1) % 7) == 0) printf(" "); printf("\n"); //*********************** //Step 1.4: permutate CD[1-16] using table pc_2 //*********************** if(debug_mode) printf("\nAfter permutating the key with table pc_2: \n"); for(i=1;i<=16;i++) permutate(bufKeyCD56[i],pt_pc2,pt_pc2_count,48,bufKeyCD48[i]); if(debug_mode) printf("CD[%2d] - ",i); for(j=0;j<48;j++) printf("%d",bufKeyCD48[i][j]); if(((j+1) % 6) == 0) printf(" "); printf("\n"); //*********************** //End of Step 1 //We've completed all the changes to the key that we need to. //In step 2, we'll deal with the plaintext message //*********************** //********************************************** //Step 2: Encode the 64-bit plaintext data //********************************************** //*********************** //Step 2.1: permutate the 64-bit plaintext message into //an encrypted 64-bit data message using table IP //*********************** permutate(bufMsgBin,pt_ip,pt_ip_count,64,bufMsgBinIP); if(debug_mode) print_binary("After permutating the message with table IP: ",bufMsgBinIP,64,8,FALSE); //*********************** //Step 2.3: split up the permutated message into a 32-bit left and right section

Page 62: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

50

//*********************** for(i=0;i<32;i++) (do_encrypt) ? bufMsgBinL[0][i] = bufMsgBinIP[i] : bufMsgBinL[17][i] = bufMsgBinIP[i]; //We do 17 for decryption for(i=32;i<64;i++) (do_encrypt) ? bufMsgBinR[0][i-32] = bufMsgBinIP[i] : bufMsgBinR[17][i-32] = bufMsgBinIP[i]; //Decryption if(debug_mode) printf("After splitting the message into L and R: \n"); print_binary("L[0]",bufMsgBinL[0],32,8,FALSE); print_binary("R[0]",bufMsgBinR[0],32,8,FALSE); //*********************** //Step 2.4: Run through 16 des rounds //Note: This is the ONLY place where decryption is different than encryption //*********************** //Encrypting or decrypting? if (do_encrypt) //Encrypting... for(i=1;i<=16;i++) des_round(bufMsgBinL[i],bufMsgBinL[i-1],bufMsgBinR[i],bufMsgBinR[i-1],bufKeyCD48[i],i); else //Decrypting...just do the reverse of encrypting for(i=16;i>=1;i--) des_round(bufMsgBinL[i],bufMsgBinL[i+1],bufMsgBinR[i],bufMsgBinR[i+1],bufKeyCD48[i],(17-i)); //*********************** //Step 2.5: Concatenate L and R...but reverse the order, so it's RL instead of LR //*********************** for(i=0;i<17;i++) for(j=0;j<32;j++) bufMsgBinRL[i][j] = bufMsgBinR[i][j]; for(j=0;j<32;j++) bufMsgBinRL[i][j+32] = bufMsgBinL[i][j]; if(debug_mode) printf("After concatenation of L and R in reverse order: \n"); print_binary("RL[16]",bufMsgBinRL[16],64,8,FALSE); //*********************** //Step 2.6: permutate RL[16] using table ip_1 //*********************** (do_encrypt) ? permutate(bufMsgBinRL[16],pt_ip_1,pt_ip_1_count,64,buffer_out) : permutate(bufMsgBinRL[1],pt_ip_1,pt_ip_1_count,64,buffer_out); if(debug_mode)

Page 63: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

51

print_binary("Final output",buffer_out,64,8,FALSE); //The function that called this function should use buffer_out and parse it itself... //The output (buffer_out) is a 64-bit, binary variable void des_round(int bufferL, int prev_bufferL, int bufferR, int prev_bufferR, int bufferK, int round) //We should be accepting L[i], R[i-1], and key[i] -- if we're decrypting, we'll taken R[i+1] int bufferR48[48], bufferXOR48[48], bufferS32[32], bufferP32[32]; int intRows, intCols, tempDec; //Variables for the s-tables int i; //*********************** //Step 3.1: L[i] = R[i-1] //*********************** for(i=0;i<32;i++) bufferL[i] = prev_bufferR[i]; //*********************** //Step 3.2: permutate R from 32-bits to 48-bits (matches key) using table ebit //*********************** permutate(prev_bufferR,pt_ebit,pt_ebit_count,48,bufferR48); //*********************** //Step 3.3: XOR bufferR48 and the key //*********************** for(i=0;i<48;i++) bufferXOR48[i] = bufferR48[i] ^ bufferK[i]; if(super_debug) printf("After permutating R with ebit and XORing it with the key:"); print_binary("R[*]",bufferR48,48,6,FALSE); print_binary("K[*]",bufferK,48,6,FALSE); print_binary("R XOR K",bufferXOR48,48,6,FALSE); printf("\n"); //************ //Substep 3.4 - Split the current 48-bit message into 6-bits, which uses tables S1 through S8 to convert into 8, 4-bit message //************ //Grab the first and sixth bits, convert them to decimal, then add them -- this equals our rows for(i=0;i<8;i++) //Figure out the row and column of the s-box we'll use intRows = (bufferXOR48[6*i] *2) + bufferXOR48[6*i+5]; intCols = (bufferXOR48[6*i+1]*8) + (bufferXOR48[6*i+2]*4) + (bufferXOR48[6*i+3]*2) + (bufferXOR48[6*i+4]*1); //Find the new values and place them into tempDec, mess with them, then put them into bufMsgS32 tempDec = pt_s[i][intRows][intCols]; //Convert tempDec into binary and place it into bufMsgS32, four bits at a time //1st bit if (tempDec < 8) (bufferS32[4*i] = 0);

Page 64: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

52

else bufferS32[4*i] = 1; tempDec = tempDec-8; //2nd bit if (tempDec < 4) (bufferS32[4*i+1] = 0); else bufferS32[4*i+1] = 1; tempDec = tempDec-4; //3rd bit if (tempDec < 2) (bufferS32[4*i+2] = 0); else bufferS32[4*i+2] = 1; tempDec = tempDec-2; //4th bit if (tempDec == 1) (bufferS32[4*i+3] = 1); else bufferS32[4*i+3] = 0; if(super_debug) printf("After permutating with X boxes into 32-bits:"); print_binary("R[32-bit]",bufferS32,32,4,FALSE); printf("\n"); //************ //Substep 3.5 - Permutate the 32-bit message using table P //************ permutate(bufferS32,pt_p,pt_p_count,32,bufferP32); if(super_debug) printf("After permutating with table P:"); print_binary("R=",bufferP32,32,8,TRUE); printf("\n"); //************ //Substep 3.6 - XOR bufferP32 with prev_bufferL to return the bufferR value //************ for(i=0;i<32;i++) bufferR[i] = prev_bufferL[i] ^ bufferP32[i]; if(super_debug) printf("After XORing bufferP32 with bufferL[i-1]"); print_binary("R=",bufferR,32,8,TRUE); printf("\n"); if(debug_mode) printf("\nRound %d Summary",round); print_binary("L[i] = ",bufferL,32,8,TRUE); print_binary("R[i] = ",bufferR,32,8,TRUE); void permutate(int buffer, int pt_list, int pt_list_count, int outbits, int buffer_out) int i, newpos; //reset all bits of buffer_out to 0's for(i=0;i<outbits;i++) buffer_out[i] = 0; //permutate for(i=0;i<pt_list_count;i++)

Page 65: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

53

newpos = pt_list[i] -1; buffer_out[i] = buffer[newpos]; void leftshift(int buffer, int num_shifts, int buffer_out) int i, j; j = num_shifts; //shift buffer for(i=0;i<28;i++) buffer_out[i] = buffer[j]; j++; if(j == 28) j=0;

Page 66: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

54

//********************************************** //Supplementary functions -- not essential to DES, but used //********************************************** void verifylength(char buffer, int length) //If a string is too short, buffer it with 0's int i; if( strlen(buffer) != length) for(i=(strlen(buffer));i<length;i++) buffer[i] = '0'; buffer[length] = '\0'; //terminating character void hex2bin(char buffer_hex, int buffer_bin) int j, digit, curarray=0; for(j=0;j<16;j++) //cycle through buffer_hex digit = buffer_hex[j]; //We'll work on one 'digit' at a time //Now, if it's a number, it will be between 48 and 57 (0 to 9 respectively) if( (digit>47) && (digit<58) ) //it's a number...convert it to 0-9 rather than 48-57 (ascii) digit = digit - 48; //Turn A-F into 10-15 switch ( digit) case 'A': case 'a': digit = 10; break; case 'B': case 'b': digit = 11; break; case 'C': case 'c': digit = 12; break; case 'D': case 'd': digit = 13; break; case 'E': case 'e': digit = 14; break; case 'F': case 'f': digit = 15; break; //All that's left is to convert the hex numbers into binary digits (4 binary per 1 hex) //First bit if (digit >= 8) buffer_bin[curarray] = 1; digit = digit -8; else buffer_bin[curarray] = 0; curarray++; //Second bit if (digit >= 4) buffer_bin[curarray] = 1; digit = digit -4; else buffer_bin[curarray] = 0; curarray++; //Third bit if (digit >= 2) buffer_bin[curarray] = 1; digit = digit -2; else buffer_bin[curarray] = 0; curarray++; //Fourth bit if (digit == 1) buffer_bin[curarray] = 1;

Page 67: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

55

else buffer_bin[curarray] = 0; curarray++; //next j void chr2bin(char buffer_ascii, int buffer_bin) int i, j, k, temp[8], highpower, leading0, curarray=0; char letter; for(j=0;j<8;j++) //cycle through buffer_ascii k=0; letter = buffer_ascii[j]; //we'll work on 'letter' for a while //find the highest possible power for(i=0;;i++) if(pow(2,i) > letter) highpower = i; break; for(i=highpower;i!=-1;i--) if(letter>=pow(2,i)) letter = letter - pow(2,i); temp[k] = 1; else temp[k] = 0; k++; leading0 = 8 - k; //Put on the number of leading zeros we need to... for(k=0;k<leading0;k++) buffer_bin[curarray] = 0; curarray++; //Add in the read of the array to buffer_bin for(k=0;k<(8-leading0);k++) buffer_bin[curarray] = temp[k]; curarray++; //next j void print_binary(char title[ ], int buffer, int size, int spacing, char sameline) int i; printf("\n%s",title); if(sameline != TRUE) printf("\n"); for(i=0;i<size;i++) printf("%d",buffer[i]); if (((i+1)%spacing)==0) printf(" "); printf("\n");

Page 68: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

56

Lampiran 3. Tabel ASCII (American Standard Code for Information Interchange)

TABEL ASCII

Desimal Karakter Binary Heksadesimal

000 00000000 00 001 00000001 01 002 00000010 02 003 ♥ 00000011 03 004 ♦ 00000100 04 005 ♣ 00000101 05 006 ♠ 00000110 06 007 00000111 07 008 00001000 08 009 00001001 09 010 00001010 0A 011 00001011 0B 012 00001100 0C 013 00001101 0D 014 00001110 0E 015 00001111 0F 016 00010000 10 017 00010001 11 018 00010010 12 019 ‼ 00010011 13 020 ¶ 00010100 14 021 § 00010101 15 022 00010110 16 023 00010111 17 024 ↑ 00011000 18 025 ↓ 00011001 19 026 → 00011010 1A 027 ← 00011011 1B 028 ∟ 00011100 1C 029 ↔ 00011101 1D

Page 69: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

57

030 00011110 1E 031 00011111 1F 032 00100000 20 033 ! 00100001 21 034 " 00100010 22 035 # 00100011 23 036 $ 00100100 24 037 % 00100101 25 038 & 00100110 26 039 00100111 27 040 ( 00101000 28 041 ) 00101001 29 042 * 00101010 2A 043 + 00101011 2B 044 , 00101100 2C 045 - 00101101 2D 046 . 00101110 2E 047 / 00101111 2F 048 0 00110000 30 049 1 00110001 31 050 2 00110010 32 051 3 00110011 33 052 4 00110100 34 053 5 00110101 35 054 6 00110110 36 055 7 00110111 37 056 8 00111000 38 057 9 00111001 39 058 : 00111010 3A 059 ; 00111011 3B 060 < 00111100 3C 061 = 00111101 3D 062 > 00111110 3E 063 ? 00111111 3F 064 @ 01000000 40 065 A 01000001 41 066 B 01000010 42

Page 70: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

58

067 C 01000011 43 068 D 01000100 44 069 E 01000101 45 070 F 01000110 46 071 G 01000111 47 072 H 01001000 48 073 I 01001001 49 074 J 01001010 4A 075 K 01001011 4B 076 L 01001100 4C 077 M 01001101 4D 078 N 01001110 4E 079 O 01001111 4F 080 P 01010000 50 081 Q 01010001 51 082 R 01010010 52 083 S 01010011 53 084 T 01010100 54 085 U 01010101 55 086 V 01010110 56 087 W 01010111 57 088 X 01011000 58 089 Y 01011001 59 090 Z 01011010 5A 091 [ 01011011 5B 092 \ 01011100 5C 093 ] 01011101 5D 094 ^ 01011110 5E 095 _ 01011111 5F 096 ` 01100000 60 097 a 01100001 61 098 b 01100010 62 099 c 01100011 63 100 d 01100100 64 101 e 01100101 65 102 f 01100110 66

Page 71: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

59

103 g 01100111 67 104 h 01101000 68 105 i 01101001 69 106 j 01101010 6A 107 k 01101011 6B 108 l 01101100 6C 109 m 01101101 6D 110 n 01101110 6E 111 o 01101111 6F 112 p 01110000 70 113 q 01110001 71 114 r 01110010 72 115 s 01110011 73 116 t 01110100 74 117 u 01110101 75 118 v 01110110 76 119 w 01110111 77 120 x 01111000 78 121 y 01111001 79 122 z 01111010 7A 123 01111011 7B 124 | 01111100 7C 125 01111101 7D 126 ~ 01111110 7E 127 01111111 7F 128 Ç 10000000 80 129 ü 10000001 81 130 é 10000010 82 131 â 10000011 83 132 ä 10000100 84 133 á 10000101 85 134 å 10000110 86 135 ç 10000111 87 136 ê 10001000 88 137 ë 10001001 89 138 è 10001010 8A

Page 72: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

60

139 ï 10001011 8B 140 î 10001100 8C 141 ì 10001101 8D 142 Ä 10001110 8E 143 Å 10001111 8F 144 É 10010000 90 145 æ 10010001 91 146 Æ 10010010 92 147 ô 10010011 93 148 ö 10010100 94 149 ò 10010101 95 150 û 10010110 96 151 ù 10010111 97 152 ÿ 10011000 98 153 Ö 10011001 99 154 Ü 10011010 9A 155 ¢ 10011011 9B 156 £ 10011100 9C 157 ¥ 10011101 9D 158 ₧ 10011110 9E 159 ƒ 10011111 9F 160 á 10100000 A0 161 í 10100001 A1 162 ó 10100010 A2 163 ú 10100011 A3 164 ñ 10100100 A4 165 Ñ 10100101 A5 166 ª 10100110 A6 167 º 10100111 A7 168 ¿ 10101000 A8 169 10101001 A9 170 ¬ 10101010 AA 171 ½ 10101011 AB 172 ¼ 10101100 AC 173 ¡ 10101101 AD 174 « 10101110 AE

Page 73: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

61

175 » 10101111 AF 176 10110000 B0 177 10110001 B1 178 10110010 B2 179 10110011 B3 180 10110100 B4 181 10110101 B5 182 10110110 B6 183 10110111 B7 184 10111000 B8 185 10111001 B9 186 10111010 BA 187 10111011 BB 188 10111100 BC 189 10111101 BD 190 10111110 BE 191 10111111 BF 192 11000000 C0 193 11000001 C1 194 11000010 C2 195 11000011 C3 196 11000100 C4 197 11000101 C5 198 11000110 C6 199 11000111 C7 200 11001000 C8 201 11001001 C9 202 11001010 CA 203 11001011 CB 204 11001100 CC 205 11001101 CD 206 11001110 CE 207 11001111 CF 208 11010000 D0 209 11010001 D1 210 11010010 D2

Page 74: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

62

211 11010011 D3 212 11010100 D4 213 11010101 D5 214 11010110 D6 215 11010111 D7 216 11011000 D8 217 11011001 D9 218 11011010 DA 219 11011011 DB 220 11011100 DC 221 11011101 DD 222 11011110 DE 223 11011111 DF 224 α 11100000 E0 225 β 11100001 E1 226 Γ 11100010 E2 227 π 11100011 E3 228 ∑ 11100100 E4 229 σ 11100101 E5 230 μ 11100110 E6 231 τ 11100111 E7 232 Ф 11101000 E8 233 Θ 11101001 E9 234 Ω 11101010 EA 235 δ 11101011 EB 236 ∞ 11101100 EC 237 φ 11101101 ED 238 ε 11101110 EE 239 ∩ 11101111 EF 240 ≡ 11110000 F0 241 ± 11110001 F1 242 ≥ 11110010 F2 243 ≤ 11110011 F3 244 ⌠ 11110100 F4 245 ⌡ 11110101 F5 246 ÷ 11110110 F6

Page 75: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

63

247 ≈ 11110111 F7 248 ° 11111000 F8 249 · 11111001 F9 250 · 11111010 FA 251 √ 11111011 FB 252 ⁿ 11111100 FC 253 ² 11111101 FD 254 11111110 FE 255 11111111 FF

Page 76: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

64

Lampiran 4. Tabel Nilai P-value Input (Plainteks ) dan Output (Cipherteks ) Hasil Enkripsi Algoritma DES

Tabel P-value Input (Plainteks) dan Output (Chiperteks) Uji Monobit

No.

Jumlah Bit Input

Uji

Statistik

P-value

Input Ket

Jumlah

Bit Output

Uji

Statistik

P-value Otput

Ket

1 432 2.0269 0.0269 Random 448 0.9449 0.3447 Random 2 240 2.0656 0.0389 Random 256 0.5000 0.6171 Random 3 280 0.1195 0.9049 Random 280 0.2390 0.8111 Random 4 424 1.8454 0.0650 Random 448 0.4725 0.6366 Random 5 472 1.2888 0.1975 Random 512 0.5303 0.5959 Random 6 488 0.4527 0.6508 Random 512 0.6187 0.5361 Random 7 536 0.2592 0.7955 Random 576 1.2500 0.2113 Random 8 352 1.1726 0.2410 Random 384 2.0412 0.0412 Random 9 560 1.6903 0.0910 Random 576 0.6667 0.5050 Random

10 504 2.9399 0.0033 Tdk random 512 0.3536 0.7237 Random

11 464 2.2283 0.0259 Random 512 0.7071 0.4795 Random 12 488 2.5350 0.0112 Random 512 0.2652 0.7909 Random 13 480 2.0996 0.0358 Random 512 1.3258 0.1849 Random 14 560 0.8452 0.3980 Random 576 0.6667 0.5050 Random 15 472 0.1841 0.8539 Random 512 0.4419 0.6585 Random 16 368 0.8341 0.4042 Random 384 1.2247 0.2207 Random 17 320 1.1180 0.2636 Random 320 1.0062 0.3143 Random 18 384 1.2207 0.2207 Random 384 3.1639 0.0016 Tdk

random 19 400 0.7000 0.4839 Random 448 0.4725 0.6366 Random 20 712 2.7733 0.0055 Tdk

random 768 1.5877 0.1124 Random

No.

Jumlah Bit

Input

Uji Statistik

P-value Input Ket

Jumlah Bit

Output

Uji Statistik

P-value Otput Ket

1 64 1.2500 0.2113 Random 64 0.2500 0.8026 Random 2 64 0.5000 0.6171 Random 64 0.7500 0.4533 Random 3 64 0.0000 1.0000 Random 64 1.2500 0.2113 Random 4 64 0.7500 0.4533 Random 64 0.7500 0.4533 Random 5 64 0.2500 0.8026 Random 64 1.2500 0.2113 Random 6 64 0.5000 0.6171 Random 64 1.7500 0.0801 Random 7 64 1.2500 0.2113 Random 64 1.7500 0.0801 Random 8 64 0.0000 1.0000 Random 64 0.5000 0.6171 Random 9 64 0.0000 1.0000 Random 64 1.7500 0.0801 Random

10 64 1.5000 0.1336 Random 64 1.2500 0.2113 Random 11 64 0.7500 0.4533 Random 64 0.2500 0.8026 Random 12 64 0.7500 0.4533 Random 64 0.0000 1.0000 Random 13 64 0.5000 0.6171 Random 64 0.7500 0.4533 Random 14 64 0.0000 1.0000 Random 64 0.2500 0.8026 Random 15 64 0.5000 0.6171 Random 64 1.2500 0.2113 Random 16 64 0.7500 0.4533 Random 64 0.2500 0.8026 Random 17 64 0.0000 1.0000 Random 64 1.0000 0.3173 Random 18 64 2.0000 0.0455 Random 64 1.0000 0.3173 Random 19 64 0.2500 0.8026 Random 64 0.7500 0.4533 Random 20 64 0.2500 0.8026 Random 64 1.0000 0.3173 Random

Page 77: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

65

No.

Jumlah Bit Input

Uji Statistik

P-value Input Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput Ket.

1 1280 3.4100 0.0006 Tdk random 1280 0.8944 0.3711 Random

2 1672 3.6195 0.0003 Tdk random 1728 1.7802 0.0750 Random

3 888 2.5504 0.0108 896 1.1359 0.2560 Random 4 1160 2.7012 0.0069 Tdk

random 1216 0.6190 0.5281 Random 5 1088 2.3647 0.0180 1088 1.3946 0.1631 Random 6 1384 2.6343 0.0084 Tdk

random 1408 0.9061 0.3649 Random 7 1112 2.5190 0.0118 Random 1152 0.7660 0.4437 Random 8 744 2.4197 0.0155 Random 768 1.0825 0.2790 Random 9 1112 2.3990 0.0164 Random 1152 1.6499 0.0990 Random

10 1040 1.8605 0.0628 Random 1152 0.4125 0.6800 Random 11 1328 3.6771 0.0002 Tdk

random 1344 0.5455 0.5854 Random 12 1168 3.2186 0.0013 Tdk

random 1216 0.2294 0.8185 Random 13 1336 3.5566 0.0004 Tdk

random 1344 0.1637 0.8700 Random 14 1104 3.1300 0.0017 Tdk

random 1152 2.2392 0.0251 Random 15 1232 2.1653 0.0304 Random 1280 0.8944 0.3711 Random 16 976 2.7528 0.0059 Tdk

random 1024 1.6875 0.0915 Random 17 1056 2.2156 0.0267 Random 1088 0.7276 0.4669 Random 18 1152 1.7678 0.0771 Random 1152 0.7660 0.4437 Random 19 1040 1.7365 0.0825 Random 1088 0.3638 0.7160 Random 20 872 2.0996 0.0358 Random 896 2.5390 0.0111 Random

Page 78: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

66

Tabel P-value Input (Plainteks) dan Output (Chiperteks) Uji Frequency Within a Block

No.

Jumlah Bit

Input

Uji Statistik

P-value Input Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput Ket.

1 64 9 0.9331 Random 64 18 0.4075 Random

2 64 30 0.0173 Random 64 15 0.6179 Random 3 64 6 0.9862 Random 64 27 0.0471 Random 4 64 7 0.9749 Random 64 23 0.1447 Random 5 64 11 0.8589 Random 64 15 0.6179 Random 6 64 8 0.9876 Random 64 11 0.8589 Random 7 64 19 0.3427 Random 64 15 0.6179 Random 8 64 8 0.9876 Random 64 14 0.6866 Random 9 64 14 0.6866 Random 64 17 0.4762 Random

10 64 6 0.9862 Random 64 19 0.3427 Random 11 64 9 0.9331 Random 64 21 0.2303 Random 12 64 9 0.9331 Random 64 22 0.1841 Random 13 64 10 0.9004 Random 64 9 0.9331 Random 14 64 6 0.9862 Random 64 11 0.8589 Random 15 64 6 0.9862 Random 64 21 0.2303 Random 16 64 17 0.4762 Random 64 9 0.9331 Random 17 64 10 0.9004 Random 64 8 0.9876 Random 18 64 10 0.9004 Random 64 16 0.5470 Random 19 64 9 0.9331 Random 64 13 0.7509 Random 20 64 15 0.6179 Random 64 10 0.9004 Random

No.

Jumlah Bit Input

Uji Statistik

P-value Input Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput Ket.

1 432 103 0.6514 Random 448 106 0.6737 Random 2 240 50 0.8428 Random 256 66 0.4532 Random 3 280 61 0.7989 Random 280 76 0.3279 Random 4 424 93 0.8316 Random 448 127 0.1739 Random 5 472 102 0.8671 Random 512 162 0.0226 Random 6 488 104 0.8903 Random 512 127 0.5416 Random 7 536 105 0.9704 Random 576 157 0.2367 Random 8 352 75 0.8553 Random 384 94 0.5767 Random 9 560 122 0.8733 Random 576 122 0.9152 Random

10 504 109 0.8731 Random 512 144 0.8252 Random 11 464 102 0.8376 Random 512 108 0.9082 Random 12 488 106 0.8629 Random 512 127 0.5416 Random 13 480 113 0.6916 Random 512 167 0.0110 Random 14 560 128 0.7791 Random 576 138 0.6540 Random 15 472 96 0.9367 Random 512 133 0.3938 Random 16 368 80 0.8307 Random 384 94 0.5767 Random 17 320 64 0.9145 Random 320 89 0.2584 Random 18 384 82 0.8617 Random 384 121 0.0455 Random 19 400 79 0.9445 Random 448 103 0.7440 Random 20 712 148 0.9532 Random 768 172 0.8588 Random

Page 79: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

67

No.

Jumlah Bit Input

Uji Statistik

P-value Input Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput Ket.

1 1280 283 0.9357 Random 1280 370 0.0285 Random 2 1672 418 0.5092 Random 1728 459 0.1875 Random 3 888 202 0.8406 Random 896 229 0.4191 Random 4 1160 242 0.9813 Random 1216 299 0.5912 Random 5 1088 243 0.9026 Random 1088 267 0.5963 Random 6 1384 297 0.9736 Random 1408 345 0.5625 Random 7 1112 215 0.9976 Random 1152 265 0.8414 Random 8 744 165 0.8742 Random 768 193 0.4932 Random 9 1112 210 0.9988 Random 1152 317 0.1226 Random

10 1040 208 0.9917 Random 1152 292 0.4449 Random 11 1328 277 0.9870 Random 1344 331 0.5868 Random 12 1168 270 0.8291 Random 1216 278 0.8639 Random 13 1336 307 0.8612 Random 1344 327 0.6461 Random 14 1104 240 0.9449 Random 1152 270 0.7842 Random 15 1232 266 0.9609 Random 1280 334 0.3003 Random 16 976 217 0.8993 Random 1024 260 0.4415 Random 17 1056 219 0.9798 Random 1088 242 0.9100 Random 18 1152 231 0.9936 Random 1152 279 0.6573 Random 19 1040 216 0.9783 Random 1088 262 0.6774 Random 20 872 197 0.8545 Random 896 236 0.2977 Random

Page 80: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

68

Tabel P-value Input (Plainteks) dan Output (Chiperteks) Uji Run

No.

Jumlah Bit

Input

Uji Statistik

P-value Input

Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput

Ket.

1 64 38 0.0823 Random 64 24 0.0461 Random2 64 36 0.3005 Random 64 33 0.7466 Random3 64 37 0.2113 Random 64 26 0.1811 Random4 64 38 0.1131 Random 64 23 0.0279 Random5 64 34 0.6112 Random 64 32 0.8413 Random6 64 40 0.0414 Random 64 34 0.3538 Random7 64 31 0.9553 Random 64 30 0.9020 Random8 64 37 0.2113 Random 64 32 0.9750 Random9 64 37 0.2113 Random 64 26 0.2407 Random

10 64 42 0.0039 Tdk random 64 27 0.2797 Random

11 64 38 0.1131 Random 64 29 0.4575 Random12 64 35 0.4079 Random 64 29 0.4533 Random13 64 39 0.0737 Random 64 35 0.4079 Random14 64 38 0.1336 Random 64 41 0.0238 Random15 64 39 0.0737 Random 64 28 0.4095 Random16 64 34 0.5650 Random 64 31 0.8085 Random17 64 37 0.2113 Random 64 38 0.0988 Random

18 64 41 0.0034 Tdk random 64 32 0.8990 Random

19 64 36 0.3131 Random 64 30 0.6647 Random20 64 36 0.3131 Random 64 28 0.3741 Random

No.

Jumlah Bit

Input

Uji Statistik

P-value Input

Ket.

Jumlah Bit

Output

Uji Statistik

P-value Otput

Ket.

1 432 231 0.0895 Random 448 240 0.1194 Random 2 240 122 0.5869 Random 256 124 0.6278 Random 3 280 154 0.0728 Random 280 119 0.0122 Random 4 424 225 0.1500 Random 448 212 0.2611 Random 5 472 259 0.0277 Random 512 248 0.4870 Random 6 488 267 0.0364 Random 512 276 0.0741 Random 7 536 297 0.0121 Random 576 286 0.9189 Random 8 352 190 0.1160 Random 384 199 0.3486 Random 9 560 301 0.0567 Random 576 315 0.0232 Random

10 504 263 0.1649 Random 512 264 0.4760 Random 11 464 247 0.1008 Random 512 280 0.0319 Random 12 488 246 0.6325 Random 512 263 0.5340 Random 13 480 250 0.2608 Random 512 237 0.1080 Random 14 560 299 0.1014 Random 576 302 0.2356 Random 15 472 267 0.0043 Tdk

random 512 245 0.3350 Random 16 368 199 0.1089 Random 384 190 0.8981 Random 17 320 173 0.1262 Random 320 148 0.1974 Random 18 384 212 0.0335 Random 384 177 0.2949 Random 19 400 213 0.1848 Random 448 225 0.9163 Random 20 712 372 0.1327 Random 768 411 0.0407 Random

Page 81: UJI TINGKAT KERANDOMAN BIT PADA ENKRIPSI DATA

69

No.

Jumlah Bit Input

Uji Statistik

P-value Input Ket. Jumlah

Bit Output Uji

Statistik P-value Otput Ket.

1 1280 685 0.0041 Tdk random 1280 1.685 0.0172 Random

2 1672 863 0.0981 Random 1728 829 0.1073 Random 3 888 465 0.1011 Random 896 448 0.9656 Random 4 1160 627 0.0028 Tdk

random 1216 583 0.1548 Random 5 1088 585 0.0076 Tdk

random 1088 541 0.9020 Random 6 1384 725 0.0488 Random 1408 709 0.7729 Random 7 1112 605 0.0016 Tdk

random 1152 593 0.3079 Random 8 744 395 0.0553 Random 768 372 0.4094 Random 9 1112 612 0.0003 Tdk

random 1152 576 0.9359 Random 10 1040 550 0.0483 Random 1152 580 0.8097 Random 11 1328 716 0.0011 Tdk

random 1344 669 0.8764 Random 12 1168 607 0.0961 Random 1216 606 0.9099 Random 13 1336 687 0.1618 Random 1344 680 0.6620 Random 14 1104 589 0.0109 Random 1152 589 0.3587 Random 15 1232 667 0.0023 Tdk

random 1280 614 0.1521 Random 16 976 515 0.0470 Random 1024 521 0.5136 Random 17 1056 581 0.0006 Tdk

random 1088 552 0.6161 Random 18 1152 636 0.0003 Tdk

random 1152 554 0.2006 Random 19 1040 573 0.0007 Tdk

random 1088 519 0.1305 Random 20 872 459 0.0862 Random 896 458 0.3735 Random