pemanfaatan algoritma ecdsa (elliptic curve digital

133
PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital Signature Algorithm) UNTUK PENANDATANGANAN DIGITAL CHIPERTEXT ElGamal ELLIPTIC CURVE CRYPTOGRAPHY Skripsi ini diajukan untuk melengkapi dan memenuhi salah satu syarat untuk memperoleh gelar sarjana pada jurusan (S1) Teknik Informatika, Fakultas Ilmu Komputer Universitas Pembangunan Nasional ”Veteran” Jakarta Disusun Oleh : WAHAB ADAM 204.511.076 FAKULTAS ILMU KOMPUTER UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAKARTA 2009

Upload: others

Post on 19-Oct-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve

Digital Signature Algorithm) UNTUK

PENANDATANGANAN DIGITAL CHIPERTEXT

ElGamal ELLIPTIC CURVE CRYPTOGRAPHY

Skripsi ini diajukan untuk melengkapi dan memenuhi salah satu syarat untuk

memperoleh gelar sarjana pada jurusan (S1) Teknik Informatika, Fakultas Ilmu

Komputer

Universitas Pembangunan Nasional ”Veteran” Jakarta

Disusun Oleh :

WAHAB ADAM

204.511.076

FAKULTAS ILMU KOMPUTER

UNIVERSITAS PEMBANGUNAN NASIONAL

“VETERAN” JAKARTA

2009

Page 2: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve

Digital Signature Algorithm) UNTUK

PENANDATANGANAN DIGITAL CHIPERTEXT

ElGamal ELLIPTIC CURVE CRYPTOGRAPHY

Skripsi ini diajukan untuk melengkapi dan memenuhi salah satu syarat untuk

memperoleh gelar sarjana pada jurusan (S1) Teknik Informatika, Fakultas Ilmu

Komputer

Universitas Pembangunan Nasional ”Veteran” Jakarta

Disusun Oleh :

WAHAB ADAM

204.511.076

FAKULTAS ILMU KOMPUTER

UNIVERSITAS PEMBANGUNAN NASIONAL

“VETERAN” JAKARTA

2009

Page 3: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

LEMBAR PENGESAHAN

1. Judul : PEMANFAATAN ALGORITMA ECDSA

(Elliptic Curve Digital Signature Algorithm)

UNTUK PENANDATANGANAN DIGITAL

CHIPERTEXT ElGamal ELLIPTIC CURVE

CRYPTOGRAPHY

2. Nama Mahasiswa : Wahab Adam

3. NRP : 204.511.076

4. Jurusan : Teknik Informatika

Jakarta, Mei 2009

Disetujui oleh :

Dosen Pembimbing

Jayanta, S.Kom., M.Si

Disahkan oleh :

Kepala Program

Teknik Informatika

Yuni Widiastiwi, S.Kom., M.Si

Page 4: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Yang bertanda tangan di bawah ini menerangkan, bahwa :

Nama : Wahab Adam

NRP : 204.511.076

Judul Skripsi : “PEMANFAATAN ALGORITMA ECDSA

(Elliptic Curve Digital Signature Algorithm)

UNTUK PENANDATANGANAN DIGITAL

CHIPERTEXT ElGamal ELLIPTIC CURVE

CRYPTOGRAPHY ”.

Telah Lulus Ujian Skripsi Pada Tanggal : 30 April 2009

Tim Penguji Sidang Skripsi

No Nama Jabatan Tanda Tangan

1. Yuni Widiastiwi, S.Kom., M.Si Penguji I

2. Didit Widiyanto, S.Kom, M.Si Penguji II

Jakarta, Mei 2009

Mengetahui,

Ketua Jurusan Teknik Informatika

Yuni Widiastiwi, S.Kom., M.Si

Page 5: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

ABSTRAKSI

Wahab Adam, 2009. PEMANFAATAN ALGORITMA ECDSA (Elliptic

Curve Digital Signature Algorithm) UNTUK PENANDATANGANAN

DIGITAL CHIPERTEXT ElGamal ELLIPTIC CURVE CRYPTOGRAPHY

Fakultas Ilmu Komputer, Universitas Pembangunan Nasional ‘Veteran’ Jakarta .

Konsep “tanda tangan digital” (digital signature) yang dikenal pada dunia

keamanan komputer saat ini adalah merupakan hasil dari penerapan teknik-teknik

Kriptografi, dimana tanda tangan digital merupakan bentuk autentifikasi dan

keabsahan data dan informasi dari author (pihak dimana data dan informasi

berasal). Pengaplikasian prototype yang dibahas di dalam tugas akhir ini

mengkorelasikan antara tanda tangan digital dan proses enkripsi serta dekripsi

yang berfungsi untuk menjaga keamanan informasi yang sampai ke penerima

informasi.

Enkripsi adalah suatu proses untuk mengubah pesan asli (plaintext)

menjadi pesan sandi (chipertext) dan dekripsi adalah proses untuk mengembalikan

chipertext menjadi plaintext.. Berdasarkan jenis kuncinya, algoritma kriptografi

dibagi menjadi dua, yaitu algoritma simetri dan asimetri (public key algorithm).

Tujuan penulisan tugas akhir ini adalah untuk menjelaskan cara kerja

penandatanganan digital meggunakan Algoritma ECDSA (Elliptic Curve Digital

Signature Algorithma) yang diembed pada chipertext (kode sandi) public key

algorithma ElGamal ECC (Elgamal Elliptic Curve Cryptography), bertolak dari

hal di atas maka dibentuklah sebuah model aplikasi penandatanganan digital yang

menggunakan enkripsi data yang memanfaatkan metode Curva elliptic pada

penandatangananya serta enkripsi dan dekripsinya.

Metode yang digunakan dalam penelitian tugas akhir ini adalah studi

literatur dan implementasi program. Melalui studi literatur, dipelajari teori-teori

yang berhubungan dengan kriptografi kurva elliptik, Kemudian membuat

prototype aplikasinya untuk mengimplementasikanya.

Kata Kunci : Tanda tangan digital, ECDSA, ElGamal ECC, Enkripsi, Dekripsi.

Page 6: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

KATA PENGANTAR

Assalamu’alaikum Wr. Wb.

Alhamdullilah hirobbil ‘alamin, segala puji dan syukur ke Hadirat Allah

SWT yang telah memberi petunjuk serta nikmat yang luar biasa karena atas berkat

rahmat dan karunia-Nya, penulis dapat menyelesaikan tugas akhir ini yang

berjudul “Pemanfaatan Algoritma ECDSA (Elliptic Curve Digital Signature

Algorithm) untuk Penandatanganan Digital Chipertext ElGamal Elliptic Curve

Cryptography ”. Laporan Tugas Akhir ini diajukan sebagai salah satu syarat

untuk menempuh ujian akhir pada Program Studi Teknik Informatika Strata satu,

Fakultas Ilmu Komputer, UPN ”Veteran” Jakarta.

Selama penyusunan tugas akhir ini, penulis telah banyak memperoleh

bantuan, bimbingan, serta dorongan dari berbagai pihak. Untuk itu penulis

ucapkan terima kasih yang sebesar-besarnya kepada :

1. Allah SWT atas rahmat dan petunjuk serta hidayah yang diberikan dalam

kelancaran menulis laporan tugas akhir ini.

2. Orangtua, Ayah, Ibu, Nini serta kedua saudara, Fajar dan Hilmi yang

membantu saya dalam doa, semangat serta memberikan dukungan Moril

dan materiil.

3. Bapak Dr.Dwi Nugroho, M.Sc selaku Dekan Fakultas Ilmu Komputer.

4. Ibu Yuni Widiastiwi, S.Kom., M.Si selaku Kepala Program Teknik

Informatika yang telah memberikan persetujuan pengajuan dan

pengesahan tugas akhir ini serta masukan-masukan untuk kesempurnaan

dalam penulisan skripsi ini.

5. Bapak Jayanta, S.Kom., M.Si selaku Dosen Pembimbing. yang telah

banyak memberikan masukan, bimbingan, dorongan dan waktunya yang

sangat berharga.

6. Seluruh Dosen pengajar di Fakultas Ilmu Komputer yang telah

mengajarkan banyak ilmu yang bermanfaat.

7. Rekan-rekan MKAI, LPM AspirasI khususnya angkatan 23, SENAT-FIK,

VICOM dan BEMF-IK yang telah memberikan dukungan kepada saya.

Page 7: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

8. kepada rekan-rekan OPK-X yang selalu memberikan candaan penghilang

penat, semangat selalu (Komputeeer...Slash).

9. Rekan-rekan mahasiswa S1-Teknik Informatika FIK UPN ”Veteran”

Jakarta khususnya TI-2004 yang telah memberikan dukungan hingga

penulis bisa menyelesaikan skripsi ini.

10. Serta semua pihak yang tidak dapat disebutkan satu persatu, yang telah

banyak membantu dan memberikan dorongan dan doa sehingga tugas

akhir ini dapat diselesaikan.

Penulis menyadari bahwa penulisan tugas akhir ini masih jauh dari

sempurna, walaupun penulis telah berusaha dengan segala kemampuan yang

dimiliki. Untuk itu, penulis mengharapkan saran dan kritik dari semua pihak

untuk memperbaiki kesalahan-kesalahan dalam penyempurnaan tugas akhir ini.

Akhir kata dari penulis, semoga tugas akhir ini dapat bermanfaat bagi para

pembaca khususnya mahasiswa FIK UPN “Veteran” Jakarta.

Wassalamu’alaikum Wr. Wb

Jakarta, April 2009

Penulis

(Wahab Adam)

Page 8: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

DAFTAR ISI

Halaman

HALAMAN JUDUL ………………………………………………………......

HALAMAN PENGESAHAN …………………...………………………….....

ABSTRAKSI ………….……………………………...……………………......

KATA PENGANTAR ………………………………………………………...

DAFTAR ISI …………………………………………………………………..

DAFTAR TABEL … ………………………………………………………….

DAFTAR GAMBAR ………………………………………………………….

BAB I

PENDAHULUAN ……………………………………………...……………...

1.1. Latar Belakang …………..…………………………….....……....

1.2. Perumusan Masalah …………...………………………......……...

1.3. Tujuan dan Manfaat Penulisan …………...…………...…...……...

1.4. Pembatasan Masalah …………...……………………...…..……...

1.5. Sistematika Penulisan ………………………………..…….……...

BAB II

LANDASAN TEORI ………………………………….....................................

2.1. Pengenalan Kriptografi …………......……………………..……...

2.1.1. Kerahasiaan …………………...…...................................

2.1.2. Autentifikasi …………...……...…………...……............

2.1.3. Integritas …………...…...……..……………...................

2.1.4. Non-Repudiasi …………………...………………...……

2.2. Algoritma Kriptografi …………...……………………….……....

2.2.1. Algoritma Simetrik ……………….…..............................

2.2.2. Algoritma Asimetrik …..……………......………............

2.3. Algoritma ElGamal ECC .……….……………………..…………

2.3.1. Algoritma Penentu Kunci ………….……......…..............

2.3.2. Algoritma Enkripsi …..…..…………...…………............

i

ii

iv

v

vii

xi

xii

1

3

3

3

4

4

6

6

8

9

11

12

14

14

15

16

18

19

Page 9: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.3.3. Algoritma Dekripsi ……...………..…..…………………

2.4. ECDSA ..….................. ..………………………………………….

2.4.1. Skematik ECDSA ................................... ..…...................

2.4.2. Parameter Domain ECDSA ........... ………...…...………

2.4.3. Proses ECDSA ..............…....…...……………...............

2.4.3.1. Generasi Kunci (Key Generation) .....................

2.4.3.2. Penandaan (Signing) ..........................................

2.4.3.3. Verifikasi (Verifying) .....…....…....……...........

2.5. Kecepatan ECC .…….........……………………………………….

2.6. Ukuran .……………...…………………………………………….

2.7. Protokol Kriptografi ....………………...………………………….

2.7.1. Pengertian Protokol …………...….......…………............

2.7.2. Fungsi Protokol ………….……..….……………............

2.7.3. Jenis Protokol Kriptografi ………………...….................

2.7.3.1. Protokol Pembagi Rahasia ………......………..

2.7.3.2. Protokol Komitmen-Bit ….…......……………..

2.7.3.3. Tanda Tangan Buta ……......………………….

2.7.3.4. Protokol Uang Digital ………………………...

2.7.4. Penyerangan terhadap Protokol ….........….......................

2.7.4.1. Jenis-jenis Pola Penyerangan …………………

2.7.4.1.1. Interuption …………..…..…………..

2.7.4.1.2. Interception …………..……………..

2.7.4.1.3. Modification ………………………...

2.7.4.1.4. Fabrication ……………...…………...

2.7.5. Beberapa Metode Penyadapan Data ……..……………...

2.7.5.1. Wiretapping …………………………………...

2.7.5.2. Electromagnetic eavesdropping ………………

2.7.5.3. Acoustic eavesdropping ……………………...

2.7.6. Jenis-jenis Serangan ……..……………………………...

2.7.6.1. Exhaustive Attack ..…………………………...

2.7.6.2. Analytical Attack ……………..........................

2.8. Bilangan Acak ………..…………………………………………...

19

22

22

23

23

24

24

24

26

27

27

27

28

29

29

30

30

31

33

34

34

34

35

35

36

36

36

36

36

36

37

38

Page 10: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB III

METODE PENELITIAN ……………………...................................................

3.1. Kerangka Berfikir ………………………..………….…………….

3.2. Perangkat Penelitian ………...…………...………………………..

3.3 Waktu dan Tempat Penelitian ..........................................................

BAB IV

ANALISA DAN PERANCANGAN ………………………………………….

4.1. Analisa ECC ……………………………………………...............

4.1.1. Analisa KeyGen (Key Generator) ………........…………

4.1.2. Analisa Proses Enkripsi ……………………………..…..

4.1.3. Analisa Proses Dekripsi ………………………………...

4.1.4. Analisa Fungsi-fungsi Pembantu ……………………….

4.1.4.1. Fungsi Text2int1 …..………………………….

4.1.5.2. Analisa Fungsi penandatanganan …………......

4.1.5. Analisa Panjang Pesan ………………......……………...

4.2. Rancangan Tampilan Aplikasi ………..………………..................

4.2. Tampilan Enkripsi ………………………………………..

4.3. Tampilan Dekripsi …….….………………………….........

BAB V

PEMBAHASAN DAN IMPLEMENTASI …………………………................

5.1. Pembahasan Dan Implementasi ………..…………………………

5.1.1. Spesifikasi Perangkat Keras ………..…………………...

5.1.2. Spesifikasi Perangkat Lunak ………………………..…

5.1.2.1. Operating system ……………………….…….

5.1.2.2. Programming ………………………..………...

5.2. Implementasi Kerja Perangkat Lunak ……..……………………...

5.2.1. Implementasi ElGamal ECC ……......……………..……

5.2.2. Proses-proses di dalam Perangkat Lunak ……………….

5.3. Pengujian Perangkat Lunak ………...….………………………….

5.3.1. Analisa Waktu dan Hasil Implementasi ElGamal ECC ..

5.3.1.1. Analisa Waktu Aritmetika Kurva Elliptic ….....

5.3.1.2. Analisa Waktu Representasi Plaintext ……….

39

39

41

42

43

43

44

46

51

55

55

56

57

59

59

60

62

62

63

63

63

64

64

64

66

63

71

71

72

Page 11: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

5.3.1.3. Analisa Waktu Enkripsi dan Dekripsi ElGamal

ECC ..................................................................

5.3.2. Hasil Implementasi Aplikasi Tnda Tangan Digital ..........

5.4. Tampilan Aplikasi ..........................................................................

5.5.1.Tampilan Enkripsi .............................................................

5.5.2. Tampilan Dekripsi ............................................................

BAB VI

PENUTUP …………………………………………………………………….

6.1. Kesimpulan ………..…………………………………………...…

6.2. Saran …...…..……………………………………………...............

DAFTAR PUSTAKA …………………………………………………………

LAMPIRAN …………………………………………………………………...

73

73

76

76

77

79

79

79

80

81

Page 12: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

DAFTAR TABEL

Halaman

1. Tabel 2.1. Perbandingan kecepatan pembuatan kunci ............................................... 26

2. Tabel 2.2. Waktu yang diperlukan untuk exhaustive key search ............................... 37

3. Tabel 3.1. Jadwal penelitian ........................................................ ...............................42

4. Tabel 5.1. Waktu Untuk Operasi Aritmetika Kurva Elliptik........................... ...........71

5. Tabel 5.2. Waktu Untuk Representasi Plaintext – Numerik....................................... 72

6. Tabel 5.3. Waktu Untuk Enkripsi dan Dekripsi ElGamal ECC ................................. 73

7. Tabel 5.4. Input .......................................................................................................... 75

8. Tabel 5.5. Output........................................................................................................ 76

Page 13: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

DAFTAR GAMBAR

Halaman

1. Gambar 1.1 Konsep tanda tangan digital ..................................................................... 2

2. Gambar 2.1 Gambaran umum proses kriptografi ....................................................... 13

3. Gambar 2.2 Prosedur kerja algoritma simetris ........................................................... 14

4. Gambar 2.3 Prosedur kerja algoritma asimetris ......................................................... 16

5. Gambar 2.4 Contoh Kurva Elliptic …………… ....................................................... 17

6. Gambar 2.5 Flowchart ElGamal ECC........... ............................................................. 21

7. Gambar 2.6 Flowchart ECDSA .................................................................................... 21

8. Gambar 2.7 Interruption ............................................................................................ 34

9. Gambar 2.8 Interception ............................................................................................ 35

10. Gambar 2.9 Modification .......................................................................................... 35

11. Gambar 2.10 Fabrication ........................................................................................... 35

12. Gambar 3.1 Kerangka berfikir ................................................................................... 39

13. Gambar 4.1 Flowchart key_generator ....................................................................... 45

14. Gambar 4.2 Flowchart Enkripsi ................................................................................ 49

15. Gambar 4.3 Flowchart Dekripsi ................................................................................ 53

16. Gambar 4.4 Flowchart ECDSA ................................................................................. 58

17. Gambar 4.5 Rancangan Aplikasi Menu Enkripsi ...................................................... 59

18. Gambar 4.6 Rancangan Aplikasi Menu Dekripsi ...................................................... 60

19. Gambar 4.7 Rancangan Aplikasi Menu Keterangan .................................................. 60

20. Gambar 4.8 Flowchart Perangkat Lunak.................................................................... 61

21. Gambar 5.1 State Transition Diagram (STD) Perangkat Lunak ................................ 66

22. Gambar 5.2 Skema enkripsi dan penandatanganan .................................................... 69

23. Gambar 5.3 Tampilan Enkripsi .................................................................................. 77

24. Gambar 5.4 Tampilan Dekripsi... ............................................................................... 78

Page 14: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB I

PENDAHULUAN

1.1. Latar Belakang

Telah disepakati bersama bahwa kemampuan untuk menyediakan layanan

yang tidak dapat disangkal (non-repudiation services) adalah kebutuhan yang

fundamental untuk aplikasi e-commerce maupun e-goverment. Tanda tangan

digital adalah salah satu pilihan mekanisme keamanan yang menyediakan layanan

tersebut. Tanda tangan digital juga dapat digunakan untuk menyediakan layanan

keamanan juga seperti layanan autentikasi (penyelarasan) dan integritas data.

Tanda tangan digital mengacu kepada “data yang diembed (dibawa dengan label)

ke atau transformasi kriptografi dari unit data yang mengizinkan penerima data

untuk menguji sumber dari data dan integritas data sehingga melindungi data dari

kepalsuan”.

Dalam proses komunikasi data, walaupun data telah dienkripsi, terdapat

kemungkinan data tersebut dapat diketahui oleh orang lain. Salah satu

kemungkinan tersebut adalah orang tersebut menyadap media komunikasi yang

digunakan oleh kedua orang yang sedang berkomunikasi tersebut. Dalam keadaan

ini, orang yang menyadap berada di antara kedua orang yang sedang

berkomunikasi. Data-data yang dikirimkan oleh orang yang sedang berkomunikasi

satu sama lain selalu melalui orang yang menyadap tersebut, sehingga orang yang

menyadap tersebut dapat mengetahui semua informasi yang dikirimkan satu sama

lain. Keadaan ini muncul karena kedua orang yang sedang berkomunikasi tersebut

tidak dapat mem-verifikasi status dari orang yang berkomunikasi dengannya

tersebut, dengan mengambil asumsi bahwa proses penyadapan tersebut tidak

menyebabkan gangguan dalam jaringan.

Problema ini dapat diilustrasikan sebagai berikut, misalkan Adam hendak

mengirim kunci publiknya (PbA) kepada Badu. Tapi saat kunci itu dikirim lewat

jaringan publik, Maling mencuri kunci PbA. Kemudian Maling menyerahkan kunci

publiknya (PbM) kepada Badu, sambil mengatakan bahwa kunci itu adalah kunci

publik milik Adam. Badu, karena tidak pernah memegang kunci publik Adam

yang asli, percaya saja saat menerima PbM. Saat Adam hendak mengirim

Page 15: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

dokumen yang telah ditandai dengan kunci privatnya (PvA) kepada Badu, sekali

lagi Maling mencurinya. Tanda tangan Adam pada dokumen itu lalu dihapus, dan

kemudian Maling membubuhkan tanda dengan kunci privatnya (PvM). Maling

mengirim dokumen itu ke Badu sambil mengatakan bahwa dokumen ini berasal

dari Adam dan ditandatangani oleh Adam. Badu kemudian memeriksa tanda

tangan itu, dan mendapatkan bahwa tanda tangan itu sah dari Adam. Tentu saja

kelihatan sah, karena Badu memeriksanya dengan kunci publik PbM, bukan

dengan PbA.

Untuk mengatasi masalah sekuritas pendistribusian kunci publik, dan

mencegah terjadinya ilustrasi penyadapan di atas, maka kunci publik ‘direkatkan’

pada suatu tanda tangan digital (digital signature). Tanda tangan ini digital selain

berisi kunci publik juga berisi informasi lengkap mengenai jati diri pemilik kunci

tersebut, sebagaimana layaknya KTP, seperti nomor seri, nama pemilik, kode

negara/perusahaan, dsb. Dengan menggunakan kunci publik, pemeriksa tanda

tangan dapat merasa yakin bahwa kunci publik itu memang berkorelasi dengan

seseorang yang namanya tercantum dalam file yang bertanda tangan digital

tersebut.

Gambar 1.1 Konsep tanda tangan digital

Page 16: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Penulis merasa sangat tertarik untuk mempelajari problema ini dan

solusinya dengan menggunakan metode Kurva Elliptik (Elliptic Curve). Oleh

karena itu, penulis mengambil tugas akhir (skripsi) dengan judul “ Pemanfaatan

Algoritma ECDSA (Elliptic Curve Digital Signature Algorithm) untuk

Penandatanganan Digital Chipertext ElGamal Elliptic Curve Cryptography”.

1.2. Perumusan Masalah

Berdasarkan latar belakang pemilihan judul, maka yang menjadi

permasalahan adalah bagaimana menjelaskan proses sekuritas transformasi data,

menjelaskan proses kerja algoritma kurva elliptic yaitu ECDSA dan ElGamal

ECC (ElGamal Elliptic Curve Cryptography) untuk mengatasi problema

sekuritas, pembuatan aplikasi penendatanganan digital dengan Algoritma Kurva

elliptik.

1.3. Tujuan dan Manfaat Penulisan

Tujuan penyusunan tugas akhir (skripsi) ini adalah:

a. Merancang prototipe perangkat lunak untuk pengamanan data.

b. Proses solusi dengan menggunakan tanda tangan digital kurva

elliptic (ECDSA).

c. Memahami proses enkripsi dan dekripsi menggunakan algoritma

ElGamal ECC (ElGamal Elliptic Curve Cryptography).

Manfaat dari penyusunan tugas akhir (skripsi) ini, yaitu :

a. Membantu pemahaman proses enkripsi dan dekripsi dan proses

pencegahan penyadapan dengan menggunakan tanda tangan

digital.

b. Perangkat lunak dapat digunakan sebagai fasilitas pendukung

dalam proses belajar mengajar, terutama untuk mata kuliah

Kriptografi.

c. Aplikasinya dapat dikembangkan dalam berbagai bidang, yaitu

transaksi online, internet banking, dan lain sebagainya.

Page 17: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

1.4. Pembatasan Masalah

Karena keterbatasan waktu dan pengetahuan penulis, maka ruang lingkup

permasalahan dalam merancang perangkat lunak ini adalah sebagai berikut :

a. Proses enkripsi dan dekripsi pesan menggunakan algoritma

ElGamal ECC.

b. Konversi chipertext ke plaintext dalam algoritma ElGamal ECC,

dan sebaliknya.

c. Proses penandatanganan ECDSA (Ellipitc Curve Digital Signature

Algorithm).

d. Pajang pesan yang dapat digunakan dalam bentuk karakter (*.txt) .

1.5. Sistematika Penulisan Sistem

Dimaksudkan agar materi yang dibahas dapat disajikan secara

sistematis dan terarah maka dibuat sistematika penulisan sebagai

berikut :

BAB I PENDAHULUUAN

Bab ini mengemukakan latar belakang, perumusan masalah,

maksud dan tujuan penulisan, ruang lingkup, metode penelitian

dan sistematika penulisan.

BAB II LANDASAN TEORI

Dalam bab ini berisi tentang landasan teoritis yang berkaitan

dengan judul.

BAB III METODOLOGI PENELITIAN

Bab ini berisikan metode dan tahap-tahap yang akan digunakan

dalam penyusunan laporan tugas akhir. Serta tools atau alat yang

digunakan dalam pembuatan perangkat lunak.

Page 18: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB IV ANALISA DAN PERANCANGAN SISTEM

Bab ini berisikan analisa dan perancangan sistem perangkat

lunak yang akan dibangun. Analisa sistem membahas analisa

kebutuhan sistem dan analisa fasilitas sistem yang dibangun.

BAB V IMPLEMENTASI DAN PEMBAHASAN

Berisikan implementasi sistem perangkat lunak yang dibangun,

serta analisa dari perangkat lunak yang dibuat.

BAB VI KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan yang diperoleh dari pembahasan

masalah yang telah dilakukan pada bab sebelumnya serta

beberapa saran yang coba disampaikan oleh penyusun untuk

pengembangan lebih lanjut.

Page 19: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB II

LANDASAN TEORI

2.1. Pengenalan Kriptografi

Cryptography (Kriptografi) adalah ilmu yang mempelajari teknik-teknik

matematika yang berhubungan dengan aspek-aspek pada keamanan informasi

misalnya kerahasiaan, integritas data, otentikasi pengirim / penerima data, dan

otentikasi data.

Cryptography (kriptografi) berasal dari bahasa Yunani yaitu dari kata

‘crypto’ dan ‘graphia’ yang berarti penulisan rahasia. Kriptografi adalah suatu

ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian

dari suatu cabang ilmu matematika yang disebut cryptology. Kriptografi bertujuan

menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi

tersebut tidak dapat diketahui oleh pihak yang tidak sah.

Cryptography (kriptografi) menggunakan teknik untuk mengubah

informasi yang dapat dibaca/teks asli (plaintext) menjadi kode-kode tertentu

disebut sebagai enkripsi (encryption) dan hasilnya disebut chipertext. Sedangkan

teknik untuk mengubah chipertext menjadi plaintext disebut dekripsi

(decryption). Algoritma yang digunakan untuk proses enkripsi dan dekripsi adalah

algoritma kriptografi (cryptographic algorithm) atau sering disebut chiper.

Algoritma kriptografi ini bekerja dengan menggunakan kunci (key) seperti kata,

nomor maupun frase tetentu. Jika dilakukan enkripsi pada plaintext yang sama

dengan menggunakan kunci yang berbeda, maka akan menjadi chipertext yang

berbeda. Menurut Menezes et al. dan Doraiswamy et al., kriptografi

(cryptography) adalah seni dan ilmu pengetahuan untuk menjaga keamanan

informasi. Orangnya disebut sebagai cryptographer . Kebalikan dari kriptografi

adalah cryptanalysis, yaitu seni dan ilmu untuk memecahkan chipertext menjadi

plaintext tanpa melalui cara yang seharusnya. Orangnya disebut sebagai

cryptanalyst.

Berdasarkan jenis kuncinya, algoritma kriptografi dapat dibagi menjadi

dua kelompok yaitu algoritma simetri (konvensional/ private key algorithm ) dan

algoritma asimetri (public key algorithm). algoritma simetri adalah algoritma

Page 20: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Pada

algoritma ini, pengirim dan penerima harus menyetujui suatu kunci tertentu yang

dinamakan kunci rahasia (secret key). Contohnya adalah DES (Data Encryption

Standard), Rijndael, Blowfish dan lain-lain. Sedangkan algoritma asimetri

didesain sedemikian sehingga kunci yang digunakan untuk enkripsi berbeda

dengan kunci untuk dekripsi. Kunci yang digunakan untuk enkripsi disebut kunci

publik (public key) dan dapat diketahui oleh orang lain. Sedangkan kunci untuk

dekripsi dinamakan kunci rahasia atau sering disebut sebagai private key dan

hanya diketahui oleh pemiliknya. Contohnya adalah RSA (Rivest-Shamir-

Adleman), ECC (Elliptic Curve Cryptography) dan lain-lain.

Istilah “kunci rahasia” pada algoritma simetri digunakan untuk

menyatakan kunci enkripsi sekaligus kunci dekripsi dan disebut secret key.

Sedangkan pada algoritma asimetri, kunci rahasia hanya digunakan untuk

menyatakan kunci dekripsi dan sering disebut sebagai private key. Hal ini dapat

mengakibatkan kesalahan penafsiran pada istilah “kunci rahasia”. Karena itu,

untuk pernyataan-pernyataan berikutnya digunakan istilah aslinya. Menurut Ono

W Purbo, saat ini terdapat tiga macam public key algorithm yang aman dan

efisien berdasarkan permasalahan matematis, yaitu Integer Factorization Problem

(IFP) , Discrete Logarithm Problem (DLP) dan Elliptic Curve Discrete

Logarithm Problem (ECDLP).

Menurut Stalling, ada beberapa tuntutan yang terkait dengan isu keamanan

data, yaitu:

a. Kerahasiaan (Confidentiality). Menjamin bahwa data-data tersebut hanya

bisa diakses oleh pihak-pihak tertentu saja.

b. Autentikasi (Authentication). Baik pada saat mengirim atau menerima

informasi, kedua belah pihak perlu mengetahui bahwa pengirim dari pesan

tersebut adalah orang yang sebenarnya seperti yang diklaim.

c. Integritas (Integrity). Tuntutan ini berhubungan dengan jaminan setiap

pesan yang dikirim pasti sampai pada penerimanya tanpa ada bagian dari

pesan tersebut yang diganti, diduplikasi, dirusak, diubah urutannya, dan

ditambahkan.

Page 21: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

d. Non-Repudiasi (Nonrepudiation. Mencegah pengirim maupun penerima

mengingkari bahwa mereka telah mengirimkan atau menerima suatu

pesan/informasi. Jika sebuah pesan dikirim, penerima dapat membuktikan

bahwa pesan tersebut memang dikirim oleh pengirim yang tertera.

Sebaliknya, jika sebuah pesan diterima, pengirim dapat membuktikan

bahwa pesannya telah diterima oleh pihak yang ditujunya.

e. Kontrol akses (Access Control). Membatasi sumber-sumber data hanya

kepada orang-orang tertentu.

f. Ketersediaan (Availability). Jika diperlukan setiap saat semua informasi

pada sistem komputer harus tersedia bagi semua pihak yang berhak atas

informasi tersebut.

Dari keenam aspek keamanan data tersebut, empat diantaranya dapat diatasi

dengan menggunakan kritografi (cryptography) yaitu kerahasiaan

(confidentiality), integritas (integrity), autentikasi (authentication), dan Non-

Repudiasi (nonrepudiation).

2.1.1. Kerahasiaan (Confidentiality)

Pada sistem e-government dan e-commerce kerahasiaan data-data

pribadi (privacy) sangat penting. Hal ini kurang mendapat perhatian di

sistem e-government dan e-commerce yang sudah ada. Bayangkan jika

data pribadi anda, misalnya data KTP atau kartu keluarga, kartu kredit

dapat diakses secara online. Maka setiap orang dapat melihat tempat dan

tanggal lahir anda, alamat anda, dan data lainnya. Data ini dapat digunakan

untuk melakukan penipuan dan pembobolan dengan mengaku-aku sebagai

anda (atau keluarga anda).

Ancaman atau serangan terhadap kerahasiaan data ini dapat dilakukan

dengan menggunakan penerobosan akses, penyadapan data (sniffer, key

logger), social engineering (yaitu dengan menipu), dan melalui kebijakan

yang tidak jelas (tidak ada).

Untuk itu kerahasiaan data ini perlu mendapat perhatian yang besar

dalam implementasi sistem e-government dan e-commerce. Proteksi

Page 22: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

terhadap data ini dapat dilakukan dengan menggunakan firewall (untuk

membatasi akses), segmentasi jaringan (juga untuk membatasi akses),

enkripsi (untuk menyandikan data sehingga tidak mudah disadap), serta

kebijakan yang jelas mengenai kerahasiaan data tersebut.

Pengujian terhadap kerahasian data ini biasanya dilakukan secara

berkala dengan berbagai metode.

Ada beberapa jenis informasi yang tersedia didalam sebuah

jaringan komputer. Setiap data yang berbeda pasti mempunyai grup

pengguna yang berbeda pula dan data dapat dikelompokkan sehingga

beberapa pembatasan kepada pengunaan data harus ditentukan. Pada

umumnya data yang terdapat didalam suatu perusahaan bersifat rahasia

dan tidak boleh diketahui oleh pihak ketiga yang bertujuan untuk menjaga

rahasia perusahaan dan strategi perusahaan. Backdoor, sebagai contoh,

melanggar kebijakan perusahaan dikarenakan menyediakan akses yang

tidak diinginkan kedalam jaringan komputer perusahaan.

Kerahasiaan dapat ditingkatkan dan didalam beberapa kasus

pengengkripsian data atau menggunakan VPN. Topik ini tidak akan, tetapi

bagaimanapun juga, akan disertakan dalam tulisan ini. Kontrol akses

adalah cara yang lazim digunakan untuk membatasi akses kedalam sebuah

jaringan komputer. Sebuah cara yang mudah tetapi mampu untuk

membatasi akses adalah dengan menggunakan kombinasi dari username-

dan-password untuk proses otentifikasi pengguna dan memberikan akses

kepada pengguna (user) yang telah dikenali. Didalam beberapa lingkungan

kerja keamanan jaringan komputer, ini dibahas dan dipisahkan dalam

konteks otentifikasi.

Dalam menjaga kerahasiaan data, kriptografi mentransformasikan

data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak

dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim

(sender) kepada penerima (receiver). Setelah sampai di penerima,

ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext

agar dapat dikenali.

Page 23: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.1.2. Autentikasi (Authentication)

Autentikasi merupakan identifikasi yang dilakukan oleh masing –

masing pihak yang saling berkomunikasi, maksudnya beberapa pihak yang

berkomunikasi harus mengidentifikasi satu sama lainnya. Informasi yang

didapat oleh suatu pihak dari pihak lain harus diidentifikasi untuk

memastikan keaslian dari informasi yang diterima. Identifikasi terhadap

suatu informasi dapat berupa tanggal pembuatan informasi, isi informasi,

waktu kirim dan hal-hal lainnya yang berhubungan dengan informasi

tersebut.

Aspek ini berhubungan dengan metode untuk menyatakan bahwa

informasi betul-betul asli, orang yang mengakses atau memberikan

informasi adalah betul-betul orang yang dimaksud, atau server yang kita

hubungi adalah betul-betul server yang asli.

Masalah pertama, membuktikan keaslian dokumen, dapat

dilakukan dengan teknologi watermarking dan digital signature.

Watermarking juga dapat digunakan untuk menjaga “intelectual property”,

yaitu dengan menandai dokumen atau hasil karya dengan “tanda tangan”

pembuat. Masalah kedua biasanya berhubungan dengan akses kontrol,

yaitu berkaitan dengan pembatasan orang yang dapat mengakses

informasi.

Dalam hal ini pengguna harus menunjukkan bukti bahwa memang

dia adalah pengguna yang sah, misalnya dengan menggunakan password

Aspek / servis dari security biometric (ciri-ciri khas orang), dan

sejenisnya. Ada tiga hal yang dapat ditanyakan kepada orang untuk

menguji siapa dia:

a. What you have (misalnya kartu ATM)

b. What you know (misalnya PIN atau password)

c. What you are (misalnya sidik jari, biometric)

Penggunaan teknologi smart card, saat ini kelihatannya dapat

meningkatkan keamanan aspek ini. Secara umum, proteksi authentication

dapat menggunakan digital certificates. Authentication biasanya diarahkan

Page 24: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

kepada orang (pengguna), namun tidak pernah ditujukan kepada server

atau mesin. Pernahkan kita bertanya bahwa mesin ATM yang sedang kita

gunakan memang benar-benar milik bank yang bersangkutan? Bagaimana

jika ada orang nakal yang membuat mesin seperti ATM sebuah bank dan

meletakkannya di tempat umum? Dia dapat menyadap data-data

(informasi yang ada di magnetic strip) dan PIN dari orang yang tertipu.

Memang membuat mesin ATM palsu tidak mudah.

Tapi, bisa anda bayangkan betapa mudahnya membuat web site

palsu yang menyamar sebagai web site sebuah bank yang memberikan

layanan Internet Banking. (Ini yang terjadi dengan kasus klikBCA.com.)

2.1.3. Integritas (Integrity)

Aspek integrity (integritas) terkait dengan keutuhan data. Aspek ini

menjamin bahwa data tidak boleh diubah (tampered, altered, modifed)

tanpa ijin dari yang berhak. Acaman terhadap aspek integritas dilakukan

dengan melalui penerobosan akses, pemalsuan (spoofing), virus yang

mengubah atau menghapus data, penyadapan dan penyerangan dengan

memasukkan diri di tengah-tengah pengiriman data. Proteksi terhadap

serangan ini dapat dilakukan dengan menggunakan digital signature,

digital certificate, message authentication code, hash function, dan

checksum. Pada prinsipnya mekanisme proteksi tersebut membuat kode

sehingga perubahan satu bit pun akan mengubah kode.

Jaringan komputer yang dapat diandalkan juga berdasar pada fakta

bahwa data yang tersedia apa yang sudah seharusnya. Jaringan komputer

mau tidak mau harus terlindungi dari serangan (attacks) yang dapat

merubah data selama dalam proses persinggahan (transmit). penyadapan

merupakan jenis serangan yang dapat merubah integritas dari sebuah data

yang mana penyerang (attacker) dapat membajak "session" atau

memanipulasi data yang terkirim.

Didalam jaringan komputer yang aman, partisipan dari sebuah

"transaksi" data harus yakin bahwa orang yang terlibat dalam komunikasi

data dapat diandalkan dan dapat dipercaya. Keamanan dari sebuah

Page 25: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

komunikasi data sangat diperlukan pada sebuah tingkatan yang dipastikan

data tidak berubah selama proses pengiriman dan penerimaan pada saat

komunikasi data. Ini tidak harus selalu berarti bahwa "traffic" perlu di

enkripsi, tapi juga tidak tertutup kemungkinan serangan "Penyadap" dapat

terjadi. “Man in the middle attack” dimana seseorang menempatkan diri di

tengah pembicaraan dan menyamar sebagai orang lain.

2.1.4. Non-Repudiasi (Nonrepudiation)

Aspek ini menjaga agar seseorang tidak dapat menyangkal telah

melakukan sebuah transaksi. Sebagai contoh, seseorang yang mengirimkan

email untuk memesan barang tidak dapat menyangkal bahwa dia telah

mengirimkan email tersebut. Aspek ini sangat penting dalam hal electronic

commerce. Penggunaan digital signature, certifiates, dan teknologi

kriptografi secara umum dapat menjaga aspek ini. Akan tetapi hal ini

masih harus didukung oleh hukum sehingga status dari digital signature

itu jelas legal.

Setiap tindakan yang dilakukan dalam sebuah sistem yang aman

telah diawasi (logged), ini dapat berarti penggunaan alat (tool) untuk

melakukan pengecekan sistem berfungsi sebagaimana seharusnya. "Log"

juga tidak dapat dipisahkan dari bagian keamanan "system" yang dimana

bila terjadi sebuah penyusupan atau serangan lain akan sangat membantu

proses investigasi. "Log" dan catatan waktu, sebagai contoh, bagian

penting dari bukti di pengadilan jika cracker tertangkap dan diadili. Untuk

alasan ini maka "nonrepudiation" dianggap sebagai sebuah faktor penting

didalam keamanan jaringan komputer yang berkompeten.

ITU (International Telecommunication Union) telah

mendefinisikan "nonrepudition" sebagai berikut :

a. Kemampuan untuk mencegah seorang pengirim untuk

menyangkal kemudian bahwa dia telah mengirim pesan atau

melakukan sebuah tindakan.

Page 26: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

b. Proteksi dari penyangkalan oleh satu satu dari entitas yang

terlibat didalam sebuah komunikasi yang turut serta secara

keseluruhan atau sebagian dari komunikasi yang terjadi.

Proses tranformasi dari plaintext menjadi ciphertext disebut proses

encipherment atau enkripsi (encryption), sedangkan proses

mentransformasikan kembali ciphertext menjadi plaintext disebut proses

dekripsi (decryption).

Untuk mengenkripsi dan mendekripsi data, kriptografi

menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah

fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi.

Sedangkan kunci merupakan sederetan bit yang diperlukan untuk

mengenkripsi dan mendekripsi data.

Suatu pesan yang tidak disandikan disebut sebagai plaintext

ataupun dapat disebut juga sebagai cleartext. Proses yang dilakukan untuk

mengubah plaintext ke dalam ciphertext disebut encryption atau

encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke

plaintext disebut decryption atau decipherment. Secara sederhana, istilah-

istilah di atas dapat digambarkan sebagai berikut :

Gambar 2.1 Gambaran umum proses kriptografi

Cryptography adalah suatu ilmu ataupun seni mengamankan pesan,

dan dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu

ilmu dan seni membuka (breaking) ciphertext dan orang yang

melakukannya disebut cryptanalyst.

Page 27: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Cryptographic system atau cryptosystem adalah suatu fasilitas

untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam

sistem ini, seperangkat parameter yang menentukan transformasi

pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi

diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-

kunci yang digunakan untuk proses pengenkripsian dan pendekripsian

tidak perlu identik, tergantung pada sistem yang digunakan. Secara umum

operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai

berikut :

EK (M) = C (Proses Enkripsi)

DK (C) = M (Proses Dekripsi)

Pada saat proses enkripsi kita menyandikan pesan M dengan suatu

kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C

tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan

pesan M yang sama seperti pesan sebelumnya.

Dengan demikian keamanan suatu pesan tergantung pada kunci

ataupun kunci-kunci yang digunakan, dan tidak tergantung pada algoritma

yang digunakan. Sehingga algoritma-algoritma yang digunakan tersebut

dapat dipublikasikan dan dianalisis, serta produk-produk yang

menggunakan algoritma tersebut dapat diproduksi massal. Tidaklah

menjadi masalah apabila seseorang mengetahui algoritma yang kita

gunakan. Selama ia tidak mengetahui kunci yang dipakai, ia tetap tidak

dapat membaca pesan.

2.2. Algoritma Kriptografi

2.2.1. Algoritma Simetrik (Symmetric Algorithms)

Algoritma kriptografi simetris atau disebut juga algoritma

kriptografi konvensional. Algoritma ini menggunakan kunci yang sama

untuk proses enkripsi dan proses dekripsi.

Algoritma kriptografi simetris dibagi menjadi 2 kategori yaitu

algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers).

Page 28: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit

atau satu byte data. Sedang pada algoritma blok, proses penyandiannya

berorientasi pada sekumpulan bit atau byte data (per blok). Contoh

algoritma kunci simetris yang terkenal adalah DES (Data Encryption

Standard).

PlaintextEnkripsi

Ciphertext PlaintextDekripsi

KUNCI

Gambar 2.2 Prosedur kerja algoritma simetris

2.2.2. Algoritma Asimetrik (Asymmetric Algorithms)

Algoritma kriptografi asimetris adalah algoritma yang

menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya.

Algoritma ini disebut juga algoritma kunci umum (publik key algorithm)

karena kunci untuk enkripsi dibuat umum (publik key) atau dapat diketahui

oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang

yang berwenang mengetahui data yang disandikan atau sering disebut

kunci pribadi (private key). Contoh algoritma terkenal yang menggunakan

kunci asimetris adalah ECC dan RSA.

Syarat – syarat yang harus dipenuhi oleh suatu algoritma publik-key

yaitu (Stalling, 1995):

a. Mudah secara komputasi bagi suatu pihak B untuk

mengkonstruksi sepasang kunci asimetris (kunci publik KU,

kunci pribadi KR).

b. Mudah secara komputasi bagi pengirim A, dengan memiliki

kunci publik B dan pesan yang ingin dienkripsi, M, untuk

menghasilkan ciphertext (C).

c. Mudah secara komputasi bagi penerima B untuk mendekripsi

ciphertext yang dihasilkan dengan menggunakan kunci

pribadinya untuk mengembalikan pesan aslinya.

Page 29: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

d. Tidak bisa secara komputasi bagi pihak ketiga untuk

memperoleh kunci pribadi KRb hanya dengan mengetahui

kunci publik KUb.

e. Tidak bisa secara komputasi bagi pihak ketiga untuk

mengembalikan data asli M hanya dengan mengetahui kunci

publik KUb dan ciphertext C.

Walaupun bukanlah suatu keharusan bagi semua aplikasi publik-

key, namun persyaratan keenam bisa ditambahkan :

f. Fungsi enkripsi dan dekripsi bisa diterapkan dengan urutan

yang dibalik.

Kegunaan dari persyaratan keenam adalah untuk penerapan tanda

tangan digital (digital signature) yang digunakan memecahkan isu

otentikasi (authentication) dalam masalah keamanan data.

Menurut Stalling (Stalling, 1995), proses enkripsi publik-key

sederhana melibatkan empat tahap berikut :

a. Setiap user di dalam jaringan membuat sepasang kunci untuk

digunakan sebagai kunci enkripsi dan dekripsi dari pesan yang

akan diterima.

b. User kemudian mempublikasikan kunci enkripsinya dengan

menempatkan kunci publiknya ke tempat umum. Pasangan

kunci yang lain tetap dijaga kerahasiaannya.

c. Jika user A ingin mengirimkan sebuah pesan ke user B, ia akan

mengenkripsi pesan tersebut dengan menggunakan kunci

publik user B.

d. Pada saat user B ingin mendeskripsikan pesan dari user A, ia

akan menggunakan kunci pribadinya sendiri. Tidak ada pihak

lain yang bisa mendekripsi pesan itu karena hanya B sendiri

yang mengetahui kunci pribadi B.

Page 30: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 2.3 Prosedur kerja algoritma asimetris

2.3. Algoritma ElGamal ECC (ElGamal Elliptic Curve Cryptography)

Tahun 1985, Koblitz dan Miller mengenalkan kriptografi kurva elliptic

(elliptic curve cryptography) dan dikembangkan Taher ElGamal pada tahun yang

sama, dimana metode ini menggunakan masalah logaritma diskrit pada titik kurva

elliptic. Kriptografi kurva elliptic dapat digunakan untuk beberapa keperluan

seperti skema enkripsi (contohnya ElGamal ECC), tanda tangan digital

(contohnya ECDSA) dan protokol pertukaran kunci (contohnya Diffie-Hielman

ECC). Dalam penulisan skripsi ini, dibahas tentang ElGamal ECC dan hal-hal

yang diperlukan atau berkaitan dengan ElGamal ECC. Kemudian dibuat program

yang merupakan implementasi dari ElGamal ECC. ECC memiliki keamanan

berbasis pada salah satu masalah matematika yaitu elliptic curve (kurva berbentuk

elips). elliptic curvei merupakan operasi yang menyediakan fungsi satu atah yang

bisa digunakan untuk menghasilkan sistem kriptografis yang efisien. Fungsi satu

arah yang digunakan pada ECC disebut elliptic curve discrete logarithm problem

(ECDLP).

Page 31: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 2.4, Contoh Kurva Elliptic yxx =++ 1 atau E(1,1)

Operasi kriptografi yang utama pada ECC dalah scalar point multiplication

dimana komputer menghitung Q = [a]P, point P dimultiplikasi oleh integer a yang

menghasilkan point Q di kurva. Multiplikasi skalar dilakukan melalui kombinasi

penambahan point dan menggandaan point. Grup elliptic curve yang digunakan

pada kriptografi didefinisikan menjadi dua jenis:

1. GF(p), dimana p adalah prima

2. GF(2m) dimana setiap elemen adalahpolinomial biner tingkat m (yang

direpresentasikan sebagai m-bit string karena tiap koefisien hanya bisa

bernilai 0 atau 1)

ECC merupakan salah satu teknik enkripsi dan dekripsi dengan

menggunakan dua buah kunci. Kunci-kunci tersebut diperoleh dari hasil

perhitungan eksponensial, perkalian, pembagian, penjumlahan dan pengurangan.

Perhitungan dilakukan terhadap dua buah bilangan prima.

Besaran-besaran yang digunakan di dalam algoritma ElGamal ECC:

1. Bilangan prima, p (tidak rahasia)

2. Bilangan acak, g ( g < p ) (tidak rahasia)

3. Bilangan acak, x (x < p ) (rahasia)

Page 32: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4. M (plainteks) (rahasia)

5. a dan b (cipherteks) (tidak rahasia)

Prosedur Membuat Pasangan Kunci :

1. Pilih sembarang bilangan prima p.

2. Pilih dua buah bilangan acak, g dan x, dengan syarat g < p dan

1 ≤ x ≤ p – 2.

3. Hitung y = gx mod p.

Kunci publik adalah y, kunci rahasia adalah x. Nilai g dan p tidak

dirahasiakan dan dapat diumumkan kepada anggota kelompok.

ada 3 algoritma dalam generalized ElGamal encryption, yaitu algoritma

penentuan kunci, algoritma enkripsi dan algoritma dekripsi :

2.3.1. Algoritma penentuan kunci

Setiap pengguna berhak menentukan public key dan private

key yang akan digunakan bersama. Langkah-langkah yang perlu dilakukan

adalah :

a. Menentukan elemen Gα , sedemikian sehingga Gα

merupakan elemen pembangun dari grup G atas Fp.

b. Memilih bilangan bulat V∈[ ] 1, 1 n − secara random, n

merupakan order dari Gα .

c. Menghitung β = (Gα)V

d. β adalah public key dan V adalah private key.

2.3.2. Algoritma Enkripsi

Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran

cipherteks dua kali ukuran plainteksnya.

Page 33: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

a. Plainteks disusun menjadi blok-blok m1, m2, …, sedemikian

sehingga setiap blok merepresentasikan nilai di dalam rentang

0 sampai p – 1.

b. Pilih bilangan acak k, yang dalam hal ini 0 £ k £ p – 1,

sedemikian sehingga k relatif prima dengan p – 1.

c. Setiap blok m dienkripsi dengan rumus :

a = gk mod p

b = ykm mod p

Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi,

ukuran cipherteks dua kali ukuran plainteksnya.

Diasumsikan bahwa Adam mengirim plaintext yang dienkripsi

kepada Bedu dan Iwan telah mendapatkan public key Iwan, yaitu β .

Untuk mengenkripsi plaintext diperlukan langkah-langkah sebagai berikut

:

a. Merepresentasikan plaintext menjadi elemen grup G, misalnya

m ε G.

b. Memilih bilangan bulat k secara random, k ε [1,n −1].

c. Menghitung C1= (Gα)k dan dan C2 = m.( β k).

d. Mengirim chipertext Ck = (C1, C2) kepada Iwan.

2.3.3. Algoritma Dekripsi

Untuk mendekripsi a dan b digunakan kunci rahasia, x, dan

plainteks m diperoleh kembali dengan persamaan : m = b/a^x mod p

Catatlah bahwa karena : a^x gkx (mod p) Maka :

a. b/a^x ykm/ax

b. g^x km/gxk

c. m (mod p)

Page 34: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

yang berarti bahwa plainteks dapat ditemukan kembali dari pasangan cipherteks a

dan b.

Diasumsikan Iwan menerima chipertext Ck = (C1, C2) dari Bedu. Untuk

mendekripsi chipertext tersebut, diperlukan langkah-langkah sebagai berikut :

a. Menghitung (C1)-V , V adalah private key Iwan.

b. Menghitung m = C2. (C1)-V , m adalah representasi dari

plaintext.

c. Mengkonversi m menjadi plaintext.

Page 35: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

FlowChart :

N

Y

Gambar 2.5 Flowchart ElGamal ECC

Mulai

Masukan Sembarang bilangan prima p, bilangan acak g dan x

(g < p dan a <= x <= -2)

Gunakan kunci private (x,p)

Hitung y = g^x mod p

Dekripsi ?

Masukan nilai ciphertext

Hitung a^p-1-1 mod p

Hitung a^p-1-1 mod p

selesai

Gunakan kunci private (y,g,p)

Masukan nilai plaintext m ( m = [ 0, p - 1 ] )

Masukan bilangan acak k ( 0 <= k p - 1 )

Hitung a = g^k mod p

b = y^ m mod p

selesai

Page 36: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.4. ECDSA (Elliptic Curve Digital Signature Algorithm)

Eliliptic Curve Digital Signature Algorithm (ECDSA) adalah kurva elliptic

analog dari Digital signature Algorithm (DSA). Tidak seperti permasalahan

logaritma diskrit dan permasalahan faktorisasi integer, algoritma subexponensial

diketahui untuk permasalahan kurva logarima diskrit. Untuk alasan ini, strength-

per-key-bit adalah subtansial terbesar dalam sebuah algoritma yang menggunakan

kurva elliptic.

2.4.1. Skematik ECDSA

Skematik ECDSA adalah part penghitung digital untuk menulis

penandaan. Sebuah penandaan digital adalah sebuah bilangan bebas pada

beberapa rahasia yang hanya diketahui oleh penandaan dan tambahannya,

pada sesuatu dari pesan yang ditandai. Penandaan ini akan menjadi

pembuktian.

Paparan ini dipersoalkan pada penandaan digital Asymetrik dengan

sebuah tambahan. “Asymetrik” berarti bahwa kesatuan memiliki sepasang

kunci dari kunci pribadi dan panghubung kunci umum. Kesatuan

melindungi dari kunci pribadi yang digunakan untuk penandaan pesan, dan

membuat tiruan yang tepat dari kunci umum untuk kesatuan yang lain

yang menggunakan ini untuk menetapkan penandaan. “Tambahan” berarti

sebuah cryptogrhaphic memiliki fungsi yang digunakan untuk

menimbulkan sebuah intisari pesan dari suatu pesan, dan menandakan

transformasi digunakan pada intisari pesan lebih dari pesan itu sendiri.

Skematik penandaan digital paenggunaan hari ini dapat

diklasifikasikan berdasarkan pada permasalahan matematika yang

menyediakan dasar untuk keamanan.

a. Integer Faktorisasi (IF). Yang dasar keamanan mereka pada

intrektabiliti dari permasalahan faktorisasi integer.

b. Diskrit logaritma (DL) yang dasar keamanannya dititik beratkan

pada permasalahan logaritma dalam sebuah daerah terbatas.

Page 37: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

c. Skema Kurva Elliptik. Yang dasar keamanan dititik beratkan pada

permasalahan curva elliptic logaritma diskrit.

2.4.2. Parameter-parameter domain ECDSA

Parameter-parameter domain untuk ECDSA terdiri dari sebuah

pilihan yang sesuai dengan kurva eliptik E yang didefinisikan melebihi

bidang tak hingga Fq dari karakteristik p, dan sebuah titik dasar (base

point) G E(Fq). Parameter-parameter domain basa saja bersama-sama

dengan sebuah grup , atau khusus untuk seorang pemakai tunggal. Untuk

menyimpulkan, parameter-parameter domain terdiri dari :

a. Sebuah bidang ukuran q, dimana salah satu q = p , sebuah prime

ganjil, atau q = 2m ;

b. Sebuah indikasi FR (field representation) dari representasi yang

digunakan untuk elemen dari Fq ;

c. (opsional) sebuah string bit seedE dari ukuran minimal 160 bit ,

jika kurva eliptik dihasilkan sesuai dengan metode yang

dijelasksan pada sect.5.2;

d. dua elemen bidang xg dan yg dalam Fq yang mendefinisikan sebuah

titik tak hingg G = (xg , yg) dari orde primadalam E(Fq);

e. orde n dari titik G, dengan n >2160 dan n > 4 q ; dan

f. kofaktor h = #E(Fq)/n.

2.4.3. Proses ECDSA

Dalam protokol ECDSA, pihak yang akan melakukan tanda tangan

digital, mempunyai parameter domain kurva eliptik berupa D

={q,FR,a,b,G,n,h} dan pasangan kunci kunci rahasia dA dan kunci publik

QA. Kemudian pihak yang akan melakukan verifikasi terhadap tanda

tangan, memiliki salinan dokumen D yang otentik dan kunci publik QA.

Page 38: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.4.3.1. Generasi kunci (Key Generation)

a. Memilih sebuah bilangan bulat random dA, yang nilainya

diantara [1,n-1]

b. Menghitung QA = dA • G = (x1,y1)

c. Kunci rahasia = dA, dan kunci publik = QA.

2.4.3.2. Penandaan (Signing)

a. Memilih sebuah bilangan bulat random k, yang nilainya

diantara [1,n-1].

b. Menghitung QA = k • G = (x1,y1) dan r = x1 modn, jika r

= 0, maka kembali ke langkah 1.

c. Kunci rahasia = dA, dan kunci publik = QA.

d. Menghitung k-1 mod n

e. Menghitung e = Hash(m)

f. Menghitung s = k-1 {e+dA • r} mod nAsd

g. tanda tangan Author untuk message (m) adalah (r,s)

2.4.3.3. Verifikasi (Verifying)

a. Memverifikasi bahwa r dan s adalah bilangan bulat yang

antara [1,n-1]

b. Menghitung e = Hash (m)

c. Menghitung w = s-1 mod n

d. Menghitung u1 = ew mod n dan u2 = rw mod n

e. Menghitung u1 • G + u2 • QA = (x1,y1)

f. Menghitung v = x1 mod n

g. Menerima tanda tangan jika dan hanya jika v = r

Page 39: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Flowchart ECDSA :

N

Y

Gambar 2.6 Flowchart ECDSA

Mulai

Random dA (1,n-1) (g < p dan a <= x <= -1)

Pubkey & privkey (g,g*secret)

Gunakan kunci private (x1,y1)

Hitung QA =

dA • G = (x1,y1)

Signing

Embed kunci ke pesan Kunci rahasia =

dA

k-1 mod n

e = Hash(m)

s = k-1 {e+dA •

r} mod nAsd

selesai

Verifikasi (r,s) [1,n-1]

Masukan tanda tangan ( r,s )

Masukan bilangan acak

w = s-1 mod n ( u1 u2)

Hitung v = x1 mod n

v = r

selesai

Page 40: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.5. Kecepatan ECC

Untuk perbandingan algoritma berbasis ECC yang digunakan adalah

ECDSA (Elliptic Curve Digital Signature Algorithm), Dari tabel diatas ada

beberapa hal yang bias disimpulkan:

a. Kecepatan pembuatan kunci ECDDSA lebih cepat dari RSA

b. Kecepatan penandatanganan ECDSA lebih cepat dari RSA tapi

perbedaannya tidak berfaktor terlalu besar.

c. Kecepatan verifikasi algoritma RSA jauh lebih cepat dari ECDSA

Kecepatan Algoritma berbasis ECC, dimana kecepatan membuat tanda

tangan berdasar penandatangan melakukan hash, 1 multiplikasi skalar dan 1

multiplikasi modulo. Kecepatan memverifikasi tanda tangan dimana Komputer

menghitung hash, 1 multiplikasi skalar dan 1 multi eksponensial.

Tabel 2.1. Perbandingan ECC dan RSA dalam kecepatan memberi dan

memverifikasi tanda tangan

Dari fakta di atas kita bisa lihat bahwa RSA menggunakan perhitungan

modular eksponensial pada saat memberi tanda tangan ataupun saat memverifikasi

tanda tangan. Sedangkan pada ECC, pada menandatangan hanya melakukan

multiplikasi modulo dan skalar saja dan saat memverifikasi menggunakan satu

kali multieksponensial. Bisa kita katakan bahwa proses ECC lebih cepat dari RSA

Dapat dilihat dari Gambar di atas bahwa kecepatan menandatangan dan

memverifikasi tanda tangan oleh algoritma berbasis ECC jauh lebih cepat

Page 41: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

daripada yang menggunakan algoritma RSA. Tanda tangan berbasis ECC pada

sertifikat bersifat lebih kecil dan lebih cepat diciptakan dan kunci publik dimana

tersimpan pada sertifikat juga lebih kecil dan agile. Verifikasi juga lebih cepat

terutama pada kekuatan kunci yang lebih tinggi.

2.6. Ukuran

Panjang tanda tangan digital ECDSA = 320 bit (2 x 160 bit, tanda tangan

merupakan pasangan r dan s yang masing-masing panjangnya 160 bit), atau 40

bytes. Sedangkan ukuran tanda tangan digital RSA adalah

1020 bit ≈ 1024 bit = 128 bytes. Sehingga total ukuran tanda tangan digital

ECDSA jauh lebih kecil dari RSA.

Untuk ukuran Kunci Publik, Kunci public RSA mengandung (n,e) dimana

n adalah modulus dan e adalah eksponen publik. Di 1024-bit RSA. N akan

memiliki 1024 bit. Dan nilai untuk eksponen publik e=216+1. Lalu, kunci publik

RSA akan memiliki 128 byte untuk modulud dan 3 byte untuk ekponen publik,

total adalah 131 byte. Kunci publik ECC mengandung point dari elliptic curve.

Setiap point direpresentasikan dengan elemen (x,y) masing-masing dengan 192

bit. Untuk 192 bit elliptic curve, kunci public akan direpresentasikan oleh 48byte.

Ukuran tanda tangan:

1. Tanda tangan RSA mengandung 1024 bit = 128 byte.

2. Tanda tangan ECC mengandung dua 192 bit = 48 byte

2.7. Protokol Kriptografi

2.7.1. Pengertian Protokol

Suatu protokol adalah serangkaian langkah yang melibatkan

dua pihak atau lebih dan dirancang untuk menyelesaikan suatu tugas.

Dari definisi ini dapat diambil beberapa arti sebagai berikut :

a. protokol memiliki urutan dari awal hingga akhir;

b. setiap langkah harus dilaksanakan secara bergiliran;

c. suatu langkah tidak dapat dikerjakan bila langkah sebelumnya

belum selesai;

d. diperlukan dua pihak atau lebih untuk melaksanakan protokol;

Page 42: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

e. protokol harus mencapai suatu hasil;

Selain itu, suatu protokol pun memiliki karakteristik yang lain, yaitu :

a. setiap orang yang terlibat dalam protokol harus mengetahui

terlebih dahulu mengenai protokol dan seluruh langkah yang

akan dilaksanakan;

b. setiap orang yang terlibat dalam protokol harus menyetujui

untuk mengikutinya;

c. protokol tidak boleh menimbulkan kerancuan;

d. protokol harus lengkap;

Cryptographic protocol adalah suatu protokol yang

menggunakan kriptografi. Protokol ini melibatkan sejumlah algoritma

kriptografi, namun secara umum tujuan protokol lebih dari sekedar

kerahasiaan. Pihak-pihak yang berpartisipasi mungkin saja ingin

membagi sebagian rahasianya untuk menghitung sebuah nilai,

menghasilkan urutan random, atau pun menandatangani kontrak secara

bersamaan. Penggunaan kriptografi dalam sebuah protokol terutama

ditujukan untuk mencegah atau pun mendeteksi adanya eavesdropping

dan cheating.

2.7.2. Fungsi Protokol

Dalam kehidupan kita sehari-hari terdapat banyak sekali

protokol tidak resmi, misalnya saja dalam permainan kartu,

pemungutan suara dalam pemilihan umum. Akan tetapi tidak ada

seorang pun yang memikirkan mengenai protokol-protokol ini,

protokol-protokol ini terus berkembang, semua orang mengetahui

bagaimana menggunakannya.

Saat ini, semakin banyak interaksi antar manusia dilakukan

melalui jaringan komputer. Komputer ini tentu saja memerlukan suatu

protokol formal agar dapat melakukan hal yang biasa dilakukan

manusia tanpa berpikir. Bila kita berpindah dari satu daerah ke daerah

Page 43: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

lain dan mengetahui bahwa kartu pemilihan suaranya berbeda dengan

yang biasa kita gunakan, kita dapat beradaptasi dengan mudah. Akan

tetapi kemampuan ini belum dimiliki oleh komputer, sehingga

diperlukan suatu protokol.

Protokol digunakan untuk mengabtraksikan proses

penyelesaian suatu tugas dari mekanisme yang digunakan. Protokol

komunikasi adalah sama meskipun diimplementasikan pada PC atau

VAX. Bila kita yakin bahwa kita memiliki protokol yang baik, kita

dapat mengimplementasikannya dalam segala benda mulai dari telepon

hingga pemanggang roti cerdas.

2.7.3. Jenis Protokol Kriptografi

2.7.3.1. Protokol Pembagian Rahasia

Jika Adam memiliki rahasia, ia dapat memberikan

‘separuh’ rahasia itu kepada Badu dan ‘separuh’ rahasia itu kepada

Iwan. Badu, yang menerima paruh pertama rahasia Adam, tidak

bisa mengetahui apa isi rahasia itu. Demikian pula dengan Iwan.

Namun, jika Badu dan Iwan menggabungkan potongan-potongan

rahasia itu, maka akan tergambar rahasia Adam. Pembagian rahasia

(secret splitting) dapat dilakukan dengan cara:

a. Adam membuat seuntai string acak R yang panjangnya

sama dengan pesan rahasia M.

b. Adam melakukan operasi XOR antara M dengan R,

sehingga menghasilkan S.

c. Adam memberikan R kepada Badu dan S kepada Iwan

d. Jika Badu dengan Iwan bertemu, maka mereka sanggup

mendapatkan pesan rahasia M dengan cara melakukan

operasi XOR antara S dengan R.

Page 44: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.7.3.2. Protokol Komitmen-Bit

Protokol ini bermanfaat kalau misalnya Adam hendak

membuat suatu pernyataan atau komitmen (katakanlah suatu string

binari 1000), namun Adam tak ingin agar Badu mengetahui isi

pernyatan tersebut sebelum saatnya. Badu harus merasa yakin

bahwa Adam pada saatnya nanti, benar-benar mengeluarkan isi

pernyataan yang sebenarnya saat melakukan komitmen, dan tidak

mengeluarkan pernyataan yang sudah diubah (misalnya mengubah

string tadi menjadi 1001). Ada beberapa jenis protokol komitmen-

bit, namun di bawah ini hanya dijelaskan salah satu diantaranya,

yakni dengan fungsi hash satu arah:

a. Adam membuat dua buah string secara acak, yakni R1 dan

R2

b. Adam menggabungkan kedua string acak itu ke dalam

pernyataannya (b) yang akan dikomitmenkan menjadi (R1,

R2, b)

c. Adam menghitung hash dari gabungan string itu, Hash(R1,

R2, b).

d. Adam kemudian mengirimkan hash tersebut beserta R1

kepada Badu. Badu akan menyimpannya untuk

pemeriksaan nanti.

e. Jika sudah tiba saatnya untuk menunjukkan pernyataannya,

Adam memberikan seluruh string (R1, R2, b) kepada Badu.

f. Badu memeriksa fungsi hash dari (R1, R2, b). Jika cocok

dengan hash yang diperiksanya dulu, maka pernyataan

Adam tidak diubah.

2.7.3.3. Tanda Tangan Buta

Badu disodori 100 amplop tertutup oleh Adam. Amplop itu

berisi secarik pesan dan kertas karbon. Badu membuka 99 amplop

secara acak. Jika seluruh amplop yang dibuka ternyata berisi pesan

yang mirip, maka Badu dapat merasa bahwa amplop ke-100 juga

berisi pesan yang mirip pula. Namun, jika satu saja dari 99 amplop

Page 45: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

tadi ada yang isi berbeda dari yang lain, maka Badu dapat

mencurigai bahwa isi amplop ke-100 bisa saja juga tidak mirip

dengan isi ke-98 amplop lainnya.

Dalam kasus dimana ternyata ke-99 amplop yang dibuka

secara acak tadi berisi pesan yang mirip, maka dengan keyakinan

yang cukup tinggi Badu berani menandatangani amplop terakhir

yang belum dibuka. Tanda tangan Badu akan menembus amplop

dan kertas karbon, sehingga pesan dalam amplop akan

tertandatangani oleh Badu. Badu kurang lebih tahu apa isi pesan di

amplop ke-100 itu. Protokol tanda tangan buta (blind signature)

bekerja sebagai berikut:

a. Adam ‘mengalikan’ dokumen (yang akan ditandatangani)

dengan sebuah faktor pembuta.

b. Adam mengirimkan dokumen itu kepada Badu

c. Badu menandatangani dokumen itu

d. Badu mengembalikan dokumen yang sudah ditandatangani

tadi kepada Adam

e. Adam membaginya dengan faktor pembuta, sehingga

mendapatkan dokumen yang asli sudah tertandatangani

oleh Badu.

2.7.3.4. Protokol Uang Digital

David Chaum, memiliki beberapa paten atas protokol uang

digital yang diciptakannya. Berikut ini dijelaskan salah satu

protokol uang digital:

a. Adam menyiapkan n lembar uang dengan nilai tertentu.

Setiap uang diberi nomor seri acak X yang cukup panjang,

sehingga kemungkinan 2 bilangan acak sama kecil sekali.

Dalam setiap uang juga ada n (I1, I2, …, In) string

identifikasi yang berguna untuk memberikan informasi

mengenai pemilik uang, yakni Adam. Adam kemudian

memecah tiap-tiap string identitas diri itu tadi menjadi dua

Page 46: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

bagian dengan menggunakan protokol pemecahan rahasia.

Lantas Adam melakukan bit-komitmen pada setiap

pecahan. Contoh uang yang disiapkan adalah:

Nilai: Rp.1.000,-

Nomor seri acak: X

String identitas: I1 = (I1L, I1R)

I2 = (I2L, I2R)

....

In = (InL, InR)

b. Adam memasukkan uang itu kedalam yang juga disisipi

kertas karbon amplop (mengalikan uang dengan faktor

pembuta), lalu memberikannya kepada bank.

c. Bank akan meminta Adam untuk membuka n - 1 amplop itu

secara acak. Bank memeriksa apakah semua uang tersebut

memiliki nilai yang sama. Bank juga meminta kepada

Adam untuk membuktikan kejujuran dirinya saat

menuliskan string identifikasi pada uang itu, dengan cara

menggabungkan pasangan-pasangan string identifikasi.

d. Jika bank merasa bahwa Adam tidak melakukan

kecurangan, maka bank akan menandatangani uang terakhir

yang masih di dalam amplop itu dan menyerahkannya

kepada Adam. Tanda tangan bank akan menembus amplop

dan kertas karbon sehingga uang di dalamnya

tertandatangani.

e. Adam membuka amplop. Uang siap dipakai.

f. Adam menyerahkan uang kepada Badu. Badu sebagai

penerima uang, akan memeriksa apakah tanda tangan bank

pada uang itu absah.

g. Badu akan menyuruh Adam untuk membuka salah satu sisi

dari setiap string identifikasi di setiap uang dengan cara

memberikan string pemilih sepanjang n-bit. Artinya, jika

Page 47: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

string pemilih itu b1, b2, …, bn maka Adam harus membuka

sisi kiri atau kanan dari Ii, tergantung apakah bi itu 0 atau 1.

h. Setelah itu Badu membawa uang tersebut ke bank. Bank

akan memeriksa apakah nomor seri uang tersebut sudah

pernah diterima oleh bank. Kalau belum ada, maka uang

tersebut dinyatakan sah.

i. Jika nomor seri uang itu sudah pernah diterima oleh bank,

maka bank akan memeriksa string identitas yang sudah

terbuka pada uang itu dan membandingkannya dengan

string identitas pada uang dengan nomor seri sama yang

pernah diterima bank sebelumnya. Jika ternyata string

identitas itu sama, maka berarti Badu yang menggandakan

uang tersebut. Namun jika berbeda, maka berarti Adam

yang menggandakan uang digital tersebut.

2.7.4. Penyerangan Terhadap Protokol

Penyerangan cryptographic dapat ditujukan pada beberapa

hal berikut :

a. algoritma cryptographic yang digunakan dalam protokol;

b. teknik cryptographic yang digunakan untuk

mengimplementasikan algoritma dan protokol;

c. protokol itu sendiri;

Seseorang dapat mencoba berbagai cara untuk menyerang suatu

protokol. Mereka yang tidak terlibat dalam protokol dapat menyadap

sebagian atau seluruh protokol. Tindakan ini disebut penyerangan

pasif, karena si penyerang tidak mempengaruhi atau mengubah

protokol, ia hanya mengamati protokol dan berusaha untuk

memperoleh informasi.

Selain itu, seorang penyerang dapat berusaha untuk mengubah

protokol demi keuntungannya sendiri. Ia dapat mengirimkan pesan

Page 48: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

dalam protokol, menghapus pesan, atau bahkan mengubah informasi

yang ada di dalam suatu komputer. Tindakan-tindakan ini disebut

sebagai penyerangan aktif, karena ia membutuhkan suatu campur

tangan aktif.

Seorang penyerang tidaklah hanya berasal dari lingkungan luar

protokol, namun ia mungkin juga berasal dari dalam protokol itu

sendiri, ia dapat merupakan salah satu pihak yang terlibat dalam

protokol. Tipe penyerang semacam ini disebut sebagai cheater.

Passive cheater mengikuti protokol, tetapi berusaha memperoleh

informasi lebih banyak daripada yang diperbolehkan protokol bagi

dirinya. Active cheater mengubah protokol dalam usahanya untuk

berbuat curang.

Usaha untuk menjaga keamanan protokol akan semakin sulit

apabila pihak-pihak yang terlibat umumnya merupakan active cheater,

oleh karena itu suatu protokol yang baik harus mampu atau pun harus

aman terhadap kemungkinan passive cheating maupun active cheating.

2.7.4.1. Jenis-jenis Pola Penyerangan

Proteksi data dan informasi dalam komunikasi komputer

menjadi penting karena nilai informasi itu sendiri dan meningkatnya

penggunaan komputer di berbagai sektor. Melihat kenyataan semakin

banyaknya data yang diproses dengan komputer dan dikirim melalui

perangkat komunikasi elektronik maka ancaman terhadap pengamanan

data akan semakin meningkat. Beberapa pola ancaman atau serangan

pada komunkasi data dalam komputer dapat diterangkan sebagai

berikut :

2.7.4.1.1 Interruption

Interruption terjadi bila data yang dikirimkan dari A

tidak sampai pada orang yang berhak (B). Interruption

merupakan pola penyerangan terhadap sifat availability

(ketersediaan data).

Page 49: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 2.7 Interruption

2.7.4.1.2. Interception

Serangan ini terjadi bila pihak ketiga C berhasil

membaca data yang dikirimkan. Interception merupakan pola

penyerangan terhadap sifat confidentiality (kerahasiaan data).

Gambar 2.8 Interception

2.7.4.1.3. Modification

Pada serangan ini pihak ketiga C berhasil merubah

pesan yang dikirimkan. Modification merupakan pola

penyerangan terhadap sifat integrity (keaslian data).

Gambar 2.9 Modification

Page 50: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.7.4.1.4. Fabrication

Pada serangan ini, penyerang berhasil mengirimkan

data ke tujuan dengan memanfaatkan identitas orang lain.

Fabrication merupakan pola penyerangan terhadap sifat

authenticity.

Gambar 2.10 Fabrication

2.7.5. Beberapa metode penyadapan data

2.7.5.1. Wiretapping

Penyadap mencegat data yang ditransmisikan pada saluran kabel

komunikasi dengan menggunakan sambungan perangkat keras.

2.7.5.2. Electromagnetic eavesdropping

Penyadap mencegat data yang ditransmisikan melalui saluran

wireless, misalnya radio dan microwive.

2.7.5.3. Acoustic Eavesdropping.

Menangkap gelombang suara yang dihasilkan oleh suara

manusia.

Yang dimaksud dengan serangan (attack) adalah usaha (attempt)

atau percobaan yang dilakukan oleh kriptanalis.

2.7.6. Jenis-jenis serangan

2.7.6.1. Exhaustive attack atau brute force attack

Percobaan yang dibuat untuk mengungkap plainteks atau

kunci dengan mencoba semua kemungkinan kunci (trial and error).

Asumsi yang digunakan:

a. Kriptanalis mengetahui algoritma kriptografi

Page 51: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

b. Kriptanalis memiliki sebagian plainteks dan chiperteks

yang bersesuaian.

Caranya: plainteks yang diketahui dienkripsikan dengan

setiap kemungkinan kunci, dan hasilnya dibandingkan dengan

chiperteks yang bersesuaian. Jika hanya chiperteks yang tersedia,

chiperteks tersebut didekripsi dengan dengan setiap kemungkinan

kunci dan plainteks hasilnya diperiksa apakah mengandung makna.

Misalkan sebuah sistem kriptografi membutuhkan kunci

yang panjangnya 8 karakter, karakter dapat berupa angka (10

buah), huruf (26 huruf besar dan 26 huruf kecil), maka jumlah

kunci yang harus dicoba adalah

62 62 62 62 62 62 62 62 = 628 buah

Secara teori, serangan secara exhaustive ini dipastikan

berhasil mengungkap plainteks tetapi dalam waktu yang sangat

lama.

Tabel 2.2 Waktu yang diperlukan untuk exhaustive key search

Untuk menghadapi serangan ini, perancang kriptosistem

(kriptografer) harus membuat kunci yang panjang dan tidak mudah

ditebak.

Ukuran

kunci

Jumlah kemungkinan

kunci

Lama waktu untuk 106

percobaan per detik

Lama waktu untuk 1012

percobaan per detik

16 bit 216 = 65536 32.7 milidetik 0.0327 mikrodetik

32 bit 232 = 4.3 109 35.8 menit 2.15 milidetik

56 bit 256 = 7.2 1016 1142 tahun 10.01 jam

128 bit 2128 = 4.3 1038 5.4 1024 tahun 5.4 1018 tahun

Page 52: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

2.7.6.2. Analytical attack

Pada jenis serangan ini, kriptanalis tidak mencoba-coba

semua kemungkinan kunci tetapi menganalisis kelemahan algoritma

kriptografi untuk mengurangi kemungkinan kunci yang tidak

mungkin ada.

Analisis dilakukan dengan dengan memecahkan persamaan-

persamaan matematika (yang diperoleh dari definisi suatu algoritma

kriptografi) yang mengandung peubah-peubah yang

merepresentasikan plainteks atau kunci. Asumsi yang digunakan:

kriptanalis mengetahui algoritma kriptografi.

Untuk menghadapi serangan ini, kriptografer harus membuat

algoritma kriptografi yang kompleks sedemikian sehingga plianteks

merupakan fungsi matematika dari chiperteks dan kunci yang cukup

kompleks, dan tiap kunci merupakan fungsi matematika dari

chiperteks dan plainteks yang cukup kompleks. Metode analytical

attack biasanya lebih cepat menemukan kunci dibandingkan dengan

exhaustive attack.

2.8 Bilangan Acak

Bilangan acak adalah deretan angka atau nilai yang acak dan tidak dapat

diprediksi secara keseluruhan. Untuk menghasilkan bilangan acak merupakan hal

yang sulit, kebanyakan pembangkit bilangan acak (random number generator =

RNG) mempunyai beberapa bagian yang dapat diprediksi dan berhubungan dan

biasanya kebanyakan RNG mengulang string yang sama setelah melakukan n

putaran.

Suatu pembangkit bilangan acak atau random number generator (RNG)

adalah suatu peralatan komputasional atau fisik yang dirancang untuk

menghasilkan suatu urutan nilai yang tidak dapat mudah ditebak polanya, jadi

urutan tersebut dapat diperlakukan sebagai suatu keadaan acak. Setiap output dari

suatu RNG adalah berupa true random numbers, yang berarti nilai-nilai dimana

secara keseluruhan bersifat acak, tidak dapat diprediksi dan tidak bergantung pada

Page 53: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

nilai-nilai yang dihasilkan sebelumnya. Untuk menghasilkan true random

numbers merupakan hal yang sulit.

Sedangkan pembangkit bilangan acak semu atau pseudo random number

generator (PRNG) merupakan suatu algoritma yang menghasilkan suatu urutan

nilai dimana elemen-elemennya bergantung pada setiap nilai yang dihasilkan.

Bilangan acak yang dihasilkan adalah bilangan acak semu (pseudo), karena

pembangkitan bilangannya dapat diulang kembali. Oleh karena itu, pembangkit

deret bilangan acak semacam itu disebut pembangkit bilangan acak semu (pseudo

random number generator atau PRNG).

Page 54: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB III

METODOLOGI PENELITIAN

3.1 Kerangka Berfikir

Berikut merupakan tahapan dalam pembuatan aplikasi tanda tangan

digital menggunakan algoritma ECDSA (Elliptic Curve Digital Sugnature

Algorithm) pada chiperteks ElGamal Elliptic Curve Cryptography

menggunakan Matlab.

` Try & error

Gambar 3.1 Kerangka berfikir

Identifikasi masalah

Mulai

Studi Pustaka

Metode Algoritma kurva elliptik

Tanda tangan Digital Fungsi Enkripsi Fungsi Dekripsi Panjang data yang

digunakan GUI

Analisa Fungsi

Fungsi & metodologi

Kurva Elliptik

Perancangan aplikasi

Verifikasi fungsi

Identifikasi fungsi

Penerapan metode dan fungsi pada aplikasi

Dokumentasi

Selesai

Metode key_gen ECC Metode Enkripsi ECC Metode Dekripsi ECC Metode pembubuhan tanda

tangan ECDSA

Page 55: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

a. Identifikasi Masalah

Identifikasi masalah merupakan tahap awal dari penelitian ini.

Masalah yang diidentifikasi adalah Algoritma kurva elliptik secara

global, metodologi serta fungsi yang digunakan dalam penanda

tanganan digital serta metode enkripsinya yang di bahas pada BAB I.

b. Studi Pustaka

Studi pustaka dilakukan untuk melengkapi pengetahuan dasar yang

dimiliki peneliti, sehingga peneliti dapat menyelesaikan penelitian ini,

dimana pada tahap ini dikumpulkan beberapa referensi yang berkaitan

dengan metodologi-metodologi yang digunakan dalam perancangan

aplikasi penandatanganan menggunakan algoritma Kurva elliptik.

c. Analisa fungsi

Analisa fungsi berfungsi untuk menganalisa permasalahan

keamanan data yang dibutuhkan pada saat ini, analisa dilakukan

denagn mengambilan data fungsional sebagai bahan baku penelitian.

Dalam hal ini dilakukan pengambilan fungsi-fungsi yang telah

diperoleh dari studi pustaka untuk diimplementasikan di dalam

aplikasi.

d. Perancangan Aplikasi

Perancangan aplikasi merupakan tindak lanjut dari analisa fungsi,

dimana pada tahap ini dibuat sampel-sampel fungsi, diantaranya fungsi

enkripsi, dekripsi dan penandatanganan kemudian diolah dan

diaplikasikan untuk membentuk suatu algoritma yang dapat

menjadikan aplikasi yang dapat mengimplementasikan fungsi-fungsi di

atas.

e. Identifikasi

Setelah tahap analisa fungsi dan perancangan aplikasi selesai

dilakukan maka akan terbentuk Metode aplikasi, model aplikasinya,

Page 56: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

serta panjang data yang telah ditetapkan yang dapat digunakan untuk

pengujian menggunakan tanda tangan digital tersebut, tahap inilah

metode-metode tersebut akan dikaji serta dilakukan pengujian terhadap

akusisi data yang digunakan.

f. Verifikasi

Setelah tahap identifikasi selesai dilakukan, maka fungsi akan

dikaji ulang untuk memperoleh hasil yang maksimal, fungsi-fungsi dan

metode akan dimaksimalkan sehingga dapat digunakan sebagai data

pelatihan dan membentuk Algoritma yang akan digunakan untuk

pengujian metode penanda tanganan, enkripsi, dan dekripsi, serta

penggunaan panjang data yang digunakan.

g. Aplikasi Algoritma ElGamal ECC.

Pada proses inilah hasil pengujian diimplementasikan dan

dihasilkan final project menggunakan tanda tangan digital dengan

Algoritma ECDSA (Elliptic Curve Digital Signature Algorithm)

ElGamal ECC.

3.2 Perangkat Penelitian

Perangkat penelitian yang digunakan terdiri dari:

3.2.1 Hardware

Adapun hardware komputer yang digunakan penulis untuk

membangun aplikasi tanda tangan digital dengan menggunakan

algoritma ElGamal ECC ini, adalah sebagai berikut:

a. Processor Intel Pentium IV 2,21 Ghz

b. RAM DDR 2 Gb

c. VGA Memory NVDIA GeForce FX 5500 256 Mb

d. Harddisk Seagate 320 Gb

e. Monitor 17 inch at resolution 1024x768

f. Mouse dan Keyboard

Page 57: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

3.2.2 Software

Sedangkan kebutuhan software untuk membangun aplikasi tanda

tangan digital dengan menggunakan algoritma ElGamal ECC ini, penulis

menggunakan pendukung sebagai berikut :

a. Sistem Operasi Microsoft Windows XP Profesional SP2

b. MATLAB 7.4 Programming

c. Open office

3.3 Waktu dan Tempat Penelitian

Penelitian ini dilaksanakan mulai Desember 2008 hingga April 2009,

dan bertempat di Fakultas Ilmu Komputer, Universitas Pembangunan

Nasional “Veteran” Jakarta dan kediaman di daerah Gambir, Jakarta Pusat.

Waktu penelitian dan jenis penelitian :

Tabel 3.1 Jadwal Penelitian

BAB IV

ANALISA DAN PERANCANGAN

Desember Januari Februari Maret NO KEGIATAN

1 2 3 4 5 1 2 3 4 5 1 2 3 4 1 2 3 4 5A Persiapan

1. Pemilihan Topik 2. Pengumpulan Informasi 3. Study Lapangan 4. Pengajuan Proposal

B Penyusunan

1. Perancangan Aplikasi 2. Pembuatan Program Aplikasi 3. Uji Coba Aplikasi 4. Analisa Aplikasi C Penulisan Tugas Akhir

D Penyerahan Tugas Akhir

Page 58: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1. Analisa Ecc

Analisa untuk merancang prototipe perangkat lunak pemanfaatan tanda

tangan digital menggunakan algoritma ElGamal ECC (ElGamal Elliptic Curve

Cryptography) terbagi menjadi 3 bagian, yaitu:

4.1.1 Analisa KeyGen (Key Generator) yaitu pengaktifan kunci public kuva

Elliptik.

a. Menentukan bilangan bulat secara random p ε [1, NG−1] , dengan NG

adalah order dari basic point GE (elemen pembangun grup elliptic).

b. Menghitung public key (Betaa) β =VGE .

c. p adalah private key dan (Betaa) β adalah public key.

4.1.2. Analisa enkripsi.

a. Merepresentasikan plaintext menjadi titik kurva elliptic PM.

b. Memilih bilangan bulat secara random k ε [1, NG−1].

c. Mengenkripsi titik kurva elliptic PM menjadi chipertext pair of points

PC dengan menggunakan public key penerima.

4.1.3. Analisa dekripsi

a. Misalkan PC adalah chipertext pair of points hasil enkripsi.

b. Titik pertama pada PC dikalikan dengan private key penerima.

c. Hasil perkaliannya untuk mengurangi titik yang kedua pada PC .

d. Menguraikan PC sehingga dihasilkan titik kurva elliptic PM.

e. Mengkonversi PM menjadi menjadi plaintext.

4.1.4. Analisa panjang pesan

Page 59: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1.1. Analisa KeyGen (Key Generator) Kunci Publik ECC

Analisa Key_gen publik ECC digunakan dalam proses enkripsi.

Analisa proses pembentukan kunci dalam bentuk pseudocode adalah

sebagai berikut:

‘Hitung kunci publik

y1 y2 num_plaintext y1, Y2

% menggenerasi p, Alpha, dan meletakkan kunci

rahasianya (secret key) (kunci rahasia tersebut

telah di-set di dalam algoritma ini)

% maka variabel ini akan menjadi global sepanjang

sesi ini (aktifasi fungsi pub_key_gen)”

‘Set kunci rahasia

a 2

% Set kunci rahasia untuk user / penguna (ini

merupakan tahap dimana user harus mengganti kode

paka kunci rahasia contoh : a = 2)

% tampilkan p (kunci publik), Alpha dan Betaa :

disp('') disp('Publishing p, Alpha and Betaa:')

‘Acak Bilangan prima

p nextprime(rand(0..2^128))

% menggenerasi / menampilkan secara acak bilangan

prima p (p adalah antara 0 and 2^128)

‘Hitung Alpha

Alpha primroot (p)

% hitung root awal (primitive root) Alpha

Page 60: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

‘Hitung Betaa

Betaa (Alpha^a) mod p

% hitung kunci publik (public key) Betaa

Gambar 4.1 Flowchart key_generator

Page 61: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1.2. Analisa proses enkripsi

Analisa proses Enkripsi dalam bentuk pseudocode adalah

sebagai berikut :

‘Fungsi Enkripsi

Fungsi ciphertext p,Alpha,Betaa,m

% Fungsi untuk menekripsi pesan yang akan dikirim

‘Hitung Alpha, Betaa dan p

y1 y2 global y1 y2

% mengkalkulasi Kunci Publik Betaa, Alpha

(primitive root) dan Bilangan Prima p.

‘panjang pesan

message_length (panjang pesan) numel(m)

% menentukan panjang pesan

‘Konversi array

n 1

j 2

mnum ''

% mengkonversi seluruh karakter didalam pesan ke

dalam angka dan disimpan di dalam mnum_array

h text2int1(m(1))

% konversi sring karakter pertama

mnum_array(1) h

% array 1 (n)

N 2

while j <= message_length % panjang pesan

h text2int1(m(j)) % konversi sring, array 2

(j)

Page 62: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

if h <= 9 % selama karakter angka(h)

kurang dari10

mnum_array(n) 0 % set karakter angka “0”

mnum_array(n+1) h

n n + 2 % tidak membutuhkan anga nol di awal

karakter angka

% (jika angka tersebut kurang dar 10) <10

else

mnum_array(n) h

n n + 1 % simpan karakter angka “0” di depan

angka

end;

j j + 1

end;

‘Simpan panjang Array

mnum_array_length numel(mnum_array)

for n 1:mnum_array_length,

% simpan setiap nilai di dalam array secara

bersamaan dan menentukan ke variabel mnum (pesan

numerik)

end;

‘Pentuan panjang pesan

p_length numel(p); % bandingkan panjang mnum

dan p

flag 0 % tandai

if mnum_length = p_length % pajang mnum =

panjang p

for index 1: p_length

if(mnum(index) > p(index)) % panjang mnum > p

flag 1 tandai

end

end

Page 63: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

if(mnum_length > p_length) % panjang mnum > p

flag 1 % tandai

end

if flag =1

% Jika if mnum lebih besar dari p (mnum > p) maka

tapilkan pesan error tampilkan : disp('Pesan

terlalu panjang, buat lebih ringkas.')

‘Proses enkripsi

else % jika mnum kurang dari p (mnum

< p)

k rand % lakukan proses Ekripsi

Menggenerasi integer k secara

acak

y1 Alpha&^k mod p % Menghitung y1

y2 (Betaa&^k)*mnum) mod p' % Menghitung y2

end;

Page 64: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Y

Y

N

N

a b

Page 65: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 4.2 Flowchart Enkripsi

Y

N

b a

Page 66: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1.3. Analisa Dekripsi

Analisa proses dekripsi bentuk pseudocode adalah sebagai berikut :

‘Fungsi Dekripsi

function message decrypt(y1, y2) % fungsi dekripsi

‘y1 dan y2 untuk mendekripsi pesan

Maple y1: y1

Maple y2: y2

% memanggil nilai dari y1 & y2

‘ Mengkonversi karakter numerik

num_plaintext (((y1&^a)&^(-1))*y2) mod p')

num_plaintext_length numel(num_plaintext)

odd rem(num_plaintext_length,2);

% Mengkalkulasi (Menghitung) karakter numerik

plain text menggunakan y1 dan y2 dari pengirim

pesan

% Jika pesan dari karakter numerik tersebut terdapat

karakter nomor maka nilai numeriknya dari karakter

utama sama dengan atau lebih besar dari 10 (x => 10)

% lalu kita dapat konversi setiap 2 nomor yang

berurutan menjadi satu karakter

if

odd =0 % pangil bil “0”

z 1 % set karakter numerik

plaintext '' % memnggil pesan plaintext

for

n 1:num_plaintext_length/2

% kalkulasi panjang karakter dalam

plaintext

q ((num_plaintext(z)-

48)*10)+(num_plaintext(z+1)-48)

Page 67: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% kalkulasi karakter plaintext pada

array

plaintext strcat(plaintext,char(q+'a'-1))

% konversi pesan ke string

zz+2;

end;

message plaintext % tampilkan pesan plaintext

end;

% jika panjang pesan dari numerik plain text

merupakan / terdapat angka gajil

%maka nilai numerik dari karakter utama / pertama

adalah kurang dari 10 (x < 10)

‘ Konversi angka single yang pertama ke dalam

karakter

% sisanya, akan dikonversi setiap dua angka yang

berurutan ke dalam satu karakter

if odd =1 % panggil bil “1”

m floor(num_plaintext_length/2) + 1

% kalkulasi panjang karakter dalam

plaintext

q num_plaintext(1)-48

% kalkulasi karakter plaintext pada array

plaintext char(q+'a'-1)

z 2 % konversi pesan ke string

for

n2:m

q ((num_plaintext(z)-

48)*10)+(num_plaintext(z+1)-48)

plaintext strcat(plaintext,char(q+'a'-1))

zz+2

end;

message plaintext % tampilkan pesan plaintext

Page 68: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

end;

a b

Page 69: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 4.3 Flowchart Dekripsi

a b

Page 70: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1.4. Analisa Fungsi-Fungsi Pembantu

Analisa fungsi-fungsi pembantu dalam perangkat lunak simulasi ini adalah

sebagai berikut :

4.1.4.1 Fungsi Text2int1

Fungsi ini digunakan sebagai pemanggil pesan dalam bentuk string x dan

mengkonversi string di dalam pesan ke dalam integer, Fungsi konversi

Text2int1 ditampilkan dalam bentuk pseudocode adalah sebagai berikut:

‘Fungsi konversi String ke Integer

function y text2int1 (x) % bentuk konversi dari

fungsi ini berupa :

' ' 0

a 1

b > 2

% terletak pada fungsi :

[s1,s2] size(x)

Yvec x - 'a'+1

Inds find(yvec<1)

yvec(inds) zeros(size(inds))

% meletakan seluruh spasi / ruang kosong mejadi

nilai=0

‘Fungsi untuk mengkonvesi angka

Y zeros(s1,1);

for k 1:s1,

for j 0:s2-1,

ind s2-j;

y(k) y(k)+yvec(k,ind)*100^(j)

end

end

Page 71: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.1.4.2. Analisa Fungsi penandatanganan

Generasi signature EDSA, untuk pesan isarat m, kesatuan A dengan

parameter domain D= (q, FR, a, b, G, n, h) dan diasosiasikan kunci

pasangan (d, q) dengan mengikuti :

a. Pilih integer secara acak atau pseudorandom(samaran acak) 1≤ k ≤

n -1 (p), degenerasikan bersama key generator dari Ecc,

menggunaan satu penggenerasian tetapi memiliki dua buah

generator pembentuk elliptic.

b. Hitung kG = (x, y) dan rubah x1 kesebuah integer 1

_

x

c. Hitung r = x1 mode n. Jika r = 0 maka menuju kestep 1

d. Hitung k-1 mode n

e. Htung SHA-1(m) dan rubah bit string ini kesebuah e integer

f. Hitung s = k-1 (e + dr) mod n. Jika s = 0 maka lanjutka ke step 1

g. A adalah siganture pesan m(r,s)

Verifikasi signature ECDSA. Untuk memferifikasi A sebagai siganture

(r, s) pada m, b memperoleh salinan otentik A dari parameter domain D =

(q, FR, a, b, G, n, h) dan diasosiasikan kunci publik Q.

Indirekomendasikan bahwa B juga mensahkan D dan Q (lihat bagian 5.4

dan 6.2) B dilakukan mengikuti :

a. Verifikasi bahwa r dan s integer pada interval [1, n-1]

b. Hitung SHA-1(m) dan rubah bit string ini ke e integer

c. hitung w = s-1 mod n

d. hitung u1 = ew mod n dan u2 = rw mod n

e. Hitung X = u1G + u2Q

f. Jika X = 0 , maka tolak siganture dengan cara lain rubah koordinat

x1 dari X untuk 1

x dan hitung v = 1

x mod n

g. Terima jika dan hanya jika V = r

Page 72: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Pembuktian kerja verifikasi signature. Jika signature(r, s) pada sebuah

pesan m sesungguhnya dihasilkan oleh A ,maka s = k-1(e + dr) mod n.

Penyusunan kembali memeberikan :

k ≡ s-1 (e + dr) ≡ s-1 e + s-1 rd ≡ we + wrd

≡ u1 + u2d (mod n)

maka u1G + u2Q = (u1 + u2d)G = kG, dan juga v = r diperlukan.

4.1.5. Analiasa panjang pesan

Fungsi-fungsi di atas mendukung jenis file berekstensikan karakter, yang

tidak termasuk spasi (space), fungsi-fungsi di atas hanya digunakan ntuk

menkonversi plaintext berbentuk karater (.txt) yang panjangnya (bitrate) 128 bit.

Metode penenda tanganan di atas hanya mengutamakan funsi penanda

tanganan digital yang merupakan pengembangan dari metode enkrpsi.

Page 73: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Flowchart ECDSA :

N

Y

Gambar 4.4 Flowchart ECDSA

Mulai

Random dA (1,n-1) (g < p dan a <= x <= -1)

Pubkey & privkey (g,g*secret)

Gunakan kunci private (x1,y1)

Hitung QA =

dA • G = (x1,y1)

Signing

Embed kunci ke pesan Kunci rahasia =

dA

k-1 mod n

e = Hash(m)

s = k-1 {e+dA •

r} mod nAsd

selesai

Verifikasi (r,s) [1,n-1]

Masukan tanda tangan ( r,s )

Masukan bilangan acak

w = s-1 mod n ( u1 u2)

Hitung v = x1 mod n

v = r

selesai

Page 74: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.2 Rancangan Tampilan Apikasi

4.2.1 Tampilan Enkripsi

Tampilan Enkripsi ini merupakan tampilan yang dirancang sebagai

tahapan penggenerasi kunci privat dan kunci publik di dalam key_Gen (kunci

generator). Sebagai penginput pesan serta peletakan koordinat pesan plaintext

ke dala chipertext, serta jenis tanda tangan yang digunakan untuk memproteksi

pesan. Yang dimulai dari mempublikan kunci generator (pub_key_gen) ,

koordinasi titik dan pembubuhan tanda tangan nantinya digunakan untuk men-

Enkripsi pesan yang akan di kirim.

Gambar 4.5 Rancangan Aplikasi Menu Enkripsi

Nama Aplikasi __ X

Hasil kunci public (text) Kunci Publik (p)

Masukan pesan

Enkripsi

y1

Hasil Alpha (text)

y2

Hasil Betaa (text)

Input pesan (text)

Author

Sign

name (text)

Enkripsi

Alpha

Betaa

Hasil y1 (text)

Hasil y1 (text)

pub_key_gen

Page 75: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

4.2.2 Tampilan Dekripsi

Rancangan tampilan dekripsi ini digunakan untuk mengkonversi

chipertext ke dalam plaintext (pesan asli), serta menguji apakah tanda tangan

digital yang diinput dalam peng-enkripsi dapat berfungsi

Gambar 4.6 Rancangan Aplikasi Menu Dekripsi

Nama Aplikasi __ X

Dekripsi

Pesan

Kunci Publik (p) Input kunci publik

Hasil pesan

Author

Sign

Author (text)

Dekripsi

Page 76: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Pub_Key_Gen

Gambar 4.8 Flowchart Perangkat Lunak

Hitung Y1 & y2

Pesan (Plaintext)

Proses Enkripsi

Proses Dekripsi

Mulai

End

Embed tanda tangan

(chiperteks)

pesan (Plaintext)

Panggil kunci

Publik (p)

Kirim

Verifikasi

Page 77: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB V

PEMBAHASAN DAN IMPLEMENTASI

5.1 Pembahasan

Pada bagian pembahasan ini, akan dibahas mengenai bagaimana alur kerja

perangkat lunak dan proses-proses yang terjadi di dalam perangkat lunak. Masing-

masing pembahasan akan dibahas dalam sub bab berikut ini.

Proses implementasi dalam membuat aplikasi pengenalan pola tanda tangan

dibagi menjadi beberapa tahap, yaitu :

a. Tahap penggenerasian Key generator (Pub_Key_Gen).

Pada tahap ini aplikasi akan menjalankan fungsi pub_key_gen, yang

diawali dengan menggenerasi kunci publik (public key) generator untuk

penerima pesan, lalu fungsi ini akan memilih dan memutuskan p (bilangan

prima kunci publik), Alpha, dan Betaa untuk metode enkripsi Ecc, dan q

dan d untuk penandatanganan digitalnya yang telah di-set d dalam fungsi

tersebut yang akan dimasukan ke dalam koordinat pesan yang akan di

enkripsi.

b. Tahap Enkripsi.

Pada tahap ini akan diinput pesan yang akan di enkripsi dan ditujukan

kepada pengirim pesan, setelah pesan diinput maka fungsi enkripsi akan

memangil fungsi pub_key_gen yang memiliki kunci publik yang telah

digenerasi, kunci publik inilah yang akan diembed bersama dangan tanda

tangan digital ke dalam pesan, kemudian dieksekusi ke dalam mode

enkripsi yang menjadikana pesan asli (plaintext) ke dalam pesan sandi

(chipertext) bersama tanda tangan digital.

c. Tahap Penandatangan

Tahap ini merupakan tahap dimana pair dari pesan yang telah dienkripsi

akan di embed dengan tanda tangan digital, tanda tangan digital dapat

berupa identitas maupun file yang dibutuhkan oleh author sebagai tanda

pengenal pesa tersebut, setelah diembed, tanda tangan dan pesan akan

dikirim terpisah ke penerima pesan.

Page 78: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

d. Tahap Verifikasi

Pesan yang sampai ke penerima tidak langsung dibuka, tetapi akan

diverifikasi terlebih dahulu kebsahan dari pengirimya, maka sang

penerima akan menggenerasikan pair tanda tangan terlebih dahulu, jika

tanda tangan telah diverifikasi dan telah diketahui keabsahan data tanda

tanganya, maka penerima dapat menggenerasi pesan (chiper), dan

membuka pesan aslinya (plain)

e. Tahap Dekripsi.

Tahap ini ditujukan kepada penerima pesan, penerima pesan akan

menerima pesan dalam bentuk kode (chipertext), fungsi dekripsi inilah yang

akan membantu user penerima untuk membuka pesan atau mengkonversi

pesan dari pesan sandi (chipertext) ke pesan asli (plaintext) yang berisikan

pesan atau informasi rahasia dari pengirim pesan dengan menggunakan kunci

publik (public key) untuk membukanya.

5.1.1. Spesifikasi Perangkat Keras (Hardware)

Di dalam melakukan proses tanda tangan digital, perangkat keras

sangat mendukung. Berikut adalah perangkat keras yang digunakan di

dalam pembuatan perangkat lunak:

a. Processor : Processor yang digunakan adalah Intel Pentium IV

2,21 Ghz.

b. System Memory : Memori yang dipakai dalam pengujian ini

menggunakan DDR berkapasitas 2 Gb.

c. Display Adapter : Display Adapter yang dipakai adalah NVidia

GeForce FX 5500 256 Mb.

d. Harddisk : Harddisk yang digunakan berkapasitas 320 Gb.

5.1.2. Spesifikasi Perangkat Lunak (Software)

Pada saat pengujian, perangkat lunak yang dipakai adalah:

Page 79: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

5.1.2.1 Operating System: Microsoft Windows XP Professional Edition

Service Pack 2

Sebagai sistem operasi yang mendukung aplikasi-aplikasi

pemrograman berbasis windows. Windows XP mampu memberi

kemudahan bagi para penggunanya untuk mengaplikasikan

pemrograman yang bisa merancang sebuah aplikasi seperti pada

aplikasi penanda tanganan ini. Disamping itu Windows XP lebih

unggul dari versi Windows sebelumnya.

5.1.2.2 Programming: MATLAB 7.4

MATLAB 7.4 adalah bahasa pemrograman level tinggi yang

dikhususkan untuk komputasi teknis. Bahasa pemrograman ini

mengintegrasikan kemampuan komputasi, visualisasi dan

pemrograman dalam sebuah lingkungan yang tunggal dan mudah

digunakan. Matlab memberikan sistem interaktif yang menggunakan

konsep array/matrik sebagai standar variabel elemennya tanpa

membutuhkan pendeklarasian array seperti pada bahasa lainnya.

5.2. Implementasi Kerja Perangkat Lunak

5.2.1. Implementasi ElGamal ECC

Setelah dijelaskan tentang algoritma ElGamal ECC dan berbagai

definisi serta dasar-dasar teori yang diperlukan, langkah selanjutnya adalah

mengimplementasikannya dalam program komputer. Dalam penulisan

skripsi ini, digunakan software Matlab version 7.4 untuk

mengimplementasikan algoritma ElGamal ECC. Software Matlab

menyediakan berbagai macam function untuk melakukan perhitungan atau

analisa yang dapat diterapkan dalam berbagai bidang ilmu, termasuk

matematika, simulasi dan lain sebagainya. Selain itu, programmer juga

dapat membuat program atau function sendiri sesuai dengan kebutuhan.

Function tersebut dapat ditambahkan atau diintegrasikan dalam Matlab.

Sehingga aplikasi Matlab bertambah luas dengan bertambahnya database

Page 80: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

dari fungsi yang dibuat oleh programmer. Implementasi ini dibagi menjadi

3 bagian program utama, yaitu :

a. Program Penentuan Kunci.

b. Program Enkripsi ElGamal ECC.

c. Program Dekripsi ElGamal ECC.

Dalam proses simulasi tampilan enkripsi, diasumsikan terdapat dua

pihak yang sedang berkomunikasi (Pengirim dan Penerima). Sebelum

proses enkripsi pesan dijalankan atau di eksekusi, user harus

mengesktraksi/menggenerasi kunci privat dan kunci publik yang terdapat

pada fungsi pub_key_gen. Setelah penggenerasian kunci generator

(key_gen) user akan menapatkan form Input Kunci. Input kunci juga dapat

dihasilkan secara acak oleh komputer. Pengacakan menggunakan random

number generator yang terdapat dalam syntax keygen. Setelah itu,

ditampilkan proses dan cara kerja dari kunci ElGamal ECC yang

membentuk beberapa proses enkripsi dan dekripsi yang dilakukan oleh

pengirim dan penerima.

Selanjutnya, pengirim dapat meng-input sendiri pesan yang akan

dikirim kepada penerima atau sebaliknya,. Dalam proses tampilan enkripsi

dan dekripsi ini, pengirim dan penerima harus juga mengerti terlebih

dahulu bagaimana konsep dari enkripsi tanda tangan digital ini bekerja,

seperti software-software lain yang opensource maupun closesource akan

disertakan manual book, readme files atau panduan dalam menjalankan

software tersebut, begitu pula interface enkripsi dan dekripsi yang penulis

sampaikan ini terdapat panduan dalam penggunannya, agar user lebuh

mudah dalam menggunakan dan memanfaatkan kinerja dari software ini.

Page 81: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Untuk lebih jelasnya. Alur kerja perangkat lunak dapat

digambarkan dalam bentuk state transition diagram (STD), seperti terlihat

pada gambar 4.1.

Gambar 5.1 State Transition Diagram (STD) Perangkat Lunak

5.2.2. Proses-Proses di dalam Perangkat Lunak

5.2.2.1. Proses Pertama, user harus meng-input kunci rahasia dan

menggenerasi kunci generator pada fungsi pub_key_gen

pada fungsi Enkripsi. Input kunci adalah:

a. Generasi kunci publik pada fungsi pub_key_gen

b. Nilai a merupakan kuci rahasia, (set a = 2 (contoh)).

c. Dari input kunci rahasia tersebut akan muncul beberapa

bilangan hasil fungsi yang telah di kalkulasi oleh

pub_key_gen yang akan digenerasikan.

d. Nilai p, adalah bilangan prima, merupakan kunci publik

yang ditampilkan secara acak yang memiliki maksimum

Windows (operating system)

Form Dekripsi

Form Enkripsi

Pesan

Key_Gen

Kunci_publik Kunci_privat

Tampilan Utama

Tanda tangan digital

Page 82: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Bit 128 (p adalah antara 0 and 2^128). Yang di hitung

dengan fungsi : ('p:=','nextprime(rand(0..2^128)())').

e. Nilai Alpha, merupakan fungsi pembentuk koordinat

Kurva Elliptik, Alpha merupakan bilanggan primer

awal dari p. Dalam fungsi : ('Alpha:=','primroot(p)')

f. Nilai Betaa, merupakan fungsi pembentuk koordinat

kedua dari Kurva Elliptik kunci publik (public key),

fungsi kalkulasi dari betaa : ('Betaa:=','(Alpha^a) mod

p')

g. Seluruh fungsi di atas diset otomatis di dalam Fungsi

Pub_Key_ken, sehingga user haya tinggal

menggenerasi dari fungsi tersebut.

5.2.2.2. Proses kedua, user dapat menginput pesan yang akan di kirim

dan meggunakan fungsi enkripsi untuk mengunci pesan :

a. Setelah kunci generator di publish maka akan tertera

hasil proses dari enkripsi tersebut, berupa kunci publik

(Betaa, public key), p yang merupakan bilangan prima

pembentuk kunci publik dan pembentuk koordinat

kurva elliptik (Alpha, prime root p)

b. Input pesan yang akan di kirim ke penerima di dalam

text box pesan (pesan hanya dapat menampung panjang

128 bit sesuai kunci yang diinput)

c. Pesan asli (plaintext) dikonversi kedalam pesan sandi

(chipertext)

d. Pesan dikonversi ke dalam bentuk array (n dan j) dan

dikalkulasi sesuai dengan rumus persamaan algoritma

ElGamal ECC dengan fungsi penghitungan koordinat

Y1 dan Y2 (x,y)

e. Enkripsi pesan dengan mengeksekusi tools enkripsi,

dan akan digenerasi bersama fungsi penanda tanganan

digital

Page 83: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

f. User akan mengirimkan pesan yang telah dienkripsi

kepada penerima, maka penerima akan menggunakan

fungsi dekripsi untuk membuka pesan tersebut.

5.2.2.3. Proses ketiga, pesan diterima oleh penerima

a. Pesan tersebut akan membawa kunci publik (Betaa) dan

bentuk pesan

b. sandi (chipertext) yang berbentuk koordinat kurva

elliptik Y1 dan Y2 (x,y)

c. Untuk menggenerasinya maka penerima harus

mengetahui kunci publik

d. yang dibawa, (input public_key)

e. Setelah kunci publik diinput maka Fungsi dekripsi

(decrypt) akan

f. memanggil fungsi penggenerasi kunci (key_generator)

untuk menggenerate koordinat Y1 dan Y2 (x,y), fungsi

: message = decrypt(y1, y2)

g. Lalu fungsi dekripsi akan Mengkalkulasi (Menghitung)

karakter numerik

h. plain text menggunakan y1 dan y2 dari pengirim pesan :

'num_plaintext :=', '(((y1&^a)&^(-1))*y2) mod p')

Setelah fungsi di atas dieksekusi maka pesan akan dikonversi dari pesan

sandi (chipertext) ke pesan asli (plaintext) dan menampilkan serta tanda

tangan digital yang diembed.

Visualisasi Penanda tanganan digambarkan dalam bentuk skema dan dapat

dilihat pada gambar 4.2 berikut ini.

Page 84: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 5.2 Skema enkripsi dan penandatanganan

Berikut keterangan dari gambar 4.2.

a. Adam = pihak pertama yang melakukan komunikasi (pengirim).

b. KPA = Kunci publik Adam.

Y1

SA

Y2

Mp

Y1’ SB Y2’

Mp’

Mpp

Tanda tangan Digital

Key_Gen : p

Betaa Alpha

Adam Bedu

KPA KPB

Page 85: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

c. Mp = Pesan Adam (Plaintext).

d. SA = Pesan Awal Adam yang akan dikonversi (Mp + KPA )

(Plaintext).

e. Y1 = koordinat pesan Adam (x) yang akan dienkripsi (chipertext).

f. Y2 = koordinat pesan Adam (y) yang akan dienkripsi (chipertext).

g. MPP = Pesan Adam yang telah dienkripsi dan diberikan tanda tangan

(chipertext).

h. Bedu = pihak kedua yang melakukan komunikasi (Penerima).

i. KPB = Kunci publik Bedu.

j. Y1’ = koordinat pesan Bedu (x) yang akan didekripsi (chipertext).

k. Y2’ = koordinat pesan Bedu (y) yang akan didekripsi (chipertext).

l. SB = Penggabungan koordinat pesan Adam oleh Bedu (KPB + Mp’).

m. Mp’ = Pesan Bedu (Plaintext).

Dengan menggunakan Tanda tangan digital, keamanan pesan dapat

terintegrasi dengan baik, walaupun kunci publik Adam (pengirim) berhasil

didapatkan dan diganti oleh penyadap, tetapi penyadap tidak dapat menjalankan

prosedur penyadapan untuk melihat dan mengubah pesan. Hal ini dikarenakan

pesan terenkripsi terbagi menjadi dua bagian sesuai dengan koordinat ElGamal

ECC yaitu pada koordinat Y1 dan Y2 (x,y), serta pemberian tanda tangan digital

yanga memungkinkan penerima pesan mengetahui pengirim pesan yang

diterimanya, sehingga dapat mengantisipasi pesan yang tidak diharapkan.

Page 86: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

5.3. Pengujian Perangkat Lunak

5.3.1. Analisa Waktu dan Hasil Implementasi ElGamal ECC

Analisa waktu implementasi dilakukan untuk mengetahui performa

waktu setiap proses perhitungan dalam implementasi tanda tangan digital

dengan algoritma ElGamal ECC. Analisa waktu tersebut dibagi dalam tiga

kategori, yaitu waktu yang dibutuhkan dalam proses aritmetika kurva

elliptic, proses representasi plaintext dan proses enkripsi serta dekripsi

tanda tangan digital.

5.3.1.1 Analisa Waktu Aritmetika Kurva Elliptic

Pengujian dilakukan untuk melihat waktu yang dibutuhkan

masing-masing operasi aritmetika kurva elliptic. Operasi tersebut

meliputi operasi penjumlahan, operasi pengurangan dan operasi

perkalian skalar kurva elliptic. Hasil implementasi terhadap waktu

yang dibutuhkan masing-masing operasi aritmetika kurva elliptic

ditunjukkan dalam Tabel berikut :

Tabel 5.1. Waktu Untuk Operasi Aritmetika Kurva Elliptic

Hasil pengujian pada Tabel 4.1 menunjukkan bahwa

operasi perkalian merupakan operasi yang membutuhkan waktu

paling banyak dibandingkan operasi aritmetika kurva elliptic yang

Operasi Kunci Perulangan Waktu

Penjumlahan 32 bit 1000 4 – 5 detik

Pengurangan 32 bit 1000 4 – 5 detik

32 bit 1000 178 – 180 detik

24 bit 1000 109 – 110 detik

16 bit 1000 54 – 55 detik

Perkalian

8 bit 1000 10 – 11 detik

Page 87: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

lain. Operasi perkalian skalar kurva elliptic membutuhkan waktu

sekitar 36 kali lebih banyak dibandingkan dengan operasi

penjumlahan dan pengurangan. Sedangkan waktu yang dibutuhkan

untuk operasi penjumlahan dan pengurangan kurva elliptic tidak

jauh berbeda. Berdasarkan Tabel 4.1, dalam interval waktu [4,5]

detik, program mampu melakukan pehitungan operasi penjumlahan

atau pengurangan aritmetika kurva elliptic 32 bit sebanyak 1000

kali. Sehingga untuk 1 kali operasi penjumlahan atau pengurangan

dengan panjang kunci 32 bit hanya dibutuhkan waktu sekitar 0.004

sampai 0.005 detik.

5.3.1.2 Analisa Waktu Representasi Plaintext

Untuk melakukan enkripsi menggunakan algoritma

ElGamal ECC, setiap plaintext akan direpresentasikan menjadi

nilai numerik dan selanjutnya direpresentasikan menjadi titik kurva

elliptic. Sedangkan proses pengembalian representasi titik kurva

elliptic menjadi plaintext diperlukan dalam proses dekripsi yang

menggunakan algoritma ElGamal ECC. Waktu yang dibutuhkan

untuk representasi plaintext diberikan dalam Tabel berikut :

Tabel 5.2. Waktu Untuk Representasi Plaintext – Numerik

Hasil pengujian pada Tabel 4.11 menunjukkan bahwa

interval waktu yang dibutuhkan untuk representasi plaintext

menjadi nilai numerik sama dengan proses pengembalian numerik

menjadi plaintext. Waktu yang dibutuhkan untuk 1000 kali proses

representasi plaintext menjadi numerik sekitar 8 sampai 9 detik,

Representasi

Kunci Perulangan Waktu

Plaintext – Numerik 32 bit 1000 8 – 9 detik

Numerik-Plaintext 32 bit 1000 8 – 9 detik

Page 88: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

dengan panjang kunci 32 bit. Sehingga untuk 1 kali proses

representasi plaintext menjadi numerik hanya dibutuhkan waktu

sekitar 0.008 sampai 0.009 detik. Waktu yang dibutuhkan untuk

mengembalikan nilai numerik menjadi plaintext memiliki interval

waktu yang sama dengan proses representasi plaintext menjadi

numerik. Untuk panjang kunci 32 bit, jika dalam plaintext terdapat

3000 karakter maka waktu yang dibutuhkan untuk representasi

plaintext menjadi numerik sekitar 8 sampai 9 detik. Karena untuk

panjang kunci 32 bit, pemotongan pesan dilakukan untuk setiap 3

karakter.

5.3.1.3. Analisa Waktu Enkripsi dan Dekripsi ElGamal ECC

Pengujian dilakukan untuk mengetahui waktu yang

dibutuhkan dalam proses enkripsi dan dekripsi menggunakan

algoritma ElGamal ECC. Waktu yang dibutuhkan untuk kedua

implementasi tersebut diberikan pada Tabel berikut :

Proses

Kunci Karakter Perulangan Total

Karakter

Waktu

Enkripsi 32 bit 3 10 30 3 – 5 detik

Dekripsi 32 bit 3 10 30 3 - 5 detik

Tabel 5.3. Waktu Untuk Enkripsi dan Dekripsi ElGamal ECC

5.3.2. Hasil Implementasi aplikasi Tanda Tangan Digital

Hasil implementasi tanda tangan meggunakan algoritma ElGamal

ECC merupakan hasil dari running program yang dibuat oleh penulis. Ada

tiga program utama yang dibuat penulis, yaitu

a. Program penentuan kunci

b. Program enkripsi ElGamal ECC

c. Program dekripsi ElGamal ECC

Page 89: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

ketiga program utama ini merupakan kesatuan hasil implementasi

ElGamal ECC pada tanda tangan digital, diberikan salah satu contoh output

dari ketiga program utama yang merupakan hasil implementasi ElGamal ECC.

Hasil running ketiga program utama tersebut diberikan pada penjelasan dan

tabel berikut. Penulisan hasil implementasi dalam bentuk tabel bertujuan

untuk mempermudah dalam membedakan input/output hasil running program.

Selain itu, dapat membantu dan mempermudah pembaca dalam memahami

hasil implementasi penenda tanganan menggunakan algoritma ElGamal ECC.

Misalkan, set a = 234 sebagai kunci.

Hasil eksekusi proses pembentukan kunci adalah sebagai berikut:

---------------------------------------------

Penggenerasian kunci Generator (pub_key_gen)

---------------------------------------------

a. p = 259203700352654436088189496208753692701 (hasil

randomisasi)

('p:=','nextprime(rand(0..2^128)())')

b. Alpha = 2

('Alpha:=','primroot(p)') bilangan prima terkecil

= 2

c. Betaa = 107638503513013662226454483634091109050

('Betaa:=','(Alpha^a) mod p')

Betaa = 2^234 mod

259203700352654436088189496208753692701

Betaa = 107638503513013662226454483634091109050

Page 90: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

INPUT

Panjang Kunci (nkunci) 24

OUTPUT

Bilangan Prima (p) 25920370035265443608

8189496208753692701

A 2

Koefisien Persamaan Kurva

Elliptic B 10763850351301366222

6454483634091109050

Kofaktor ( k ) Random (k)

Tabel 5.4. Input

-------------------------

Input & Enkripsi pesan

-------------------------

d. silahkan ketik pesan yang akan anda kirim :

Pesan : KOMPUTER

y1 = 256319791380606717893935715510368320715

('y1:=','Alpha&^k mod p')

e. y1 = 2^k mod

259203700352654436088189496208753692701

y1 = 256319791380606717893935715510368320715

f. y2 = 228420603800096151015053415566351339624

g. ('y2:=','((Betaa&^k)*mnum) mod p')

Y2 = (107638503513013662226454483634091109050

^k * mnum) mod

259203700352654436088189496208753692701

Y2 = 228420603800096151015053415566351339624

Page 91: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Tabel 5.5. Output

5.4. Tampilan Aplikasi

`Aplikasi ini merupakan aplikasi yang digunakan sebagai penendatanganan

digital yang mencakup proses enkripsi dan dekripsi pada kurva elliptik. Berikut

ini merupakan penjelasan dari setiap menu yang terdapat dalam aplikasi ini

5.4.1 Tampilan Enkripsi

Tampilan Enkripsi merupakan tampilan awal pada saat program

pertama kali dijalankan. Pada rancangan enkripsi ini akan terdapat

beberapa menu bar, dan tombol eksekusi diantaranya Bar File dan proses,

Tobol generasi dan sign (tanda tangan), serta simpan. Aplikasi ini diberi

nama Program Aplikasi Penandatanganan Digital

INPUT

Panjang Kunci (nkunci) 24

OUTPUT

Bilangan Prima (p) 25920370035265443608

8189496208753692701

A 2

Koefisien Persamaan Kurva

Elliptic B 10763850351301366222

6454483634091109050

Kofaktor ( k ) Random (k)

KOMPUTER Pesan

Jumlah Bit : 64 Bit

Y1

25631979138060671789

3935715510368320715

Chipertext

Y2

22842060380009615101

5053415566351339624

Page 92: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 5.3 Tampilan Menu Enkripsi

5.4.2. Tampilan Dekripsi

Tampilan Dekripsi ini merupakan tampilan yang digunakan

sebagai tahapan verifikasi tanda tangan dan pengembalian pesan awal

(palianteks). Yang dimulai dengan pengambilan tnda tangan, proses

verifikasi lalu tahap pendekripsian pesan.

Page 93: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Gambar 5.4 Menu Dekripsi

Page 94: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

BAB VI

KESIMPULAN DAN SARAN

A. Kesimpulan

Setelah menyelesaikan perangkat lunak penanda tanganan digital yang

menggunakan algoritma Kurva Elliptik, penulis menarik kesimpulan sebagai

berikut:

1. Perangkat lunak penanda tanganan digital ini mengadopsi metode kerja

kriptografi dan keamanan komputer, sehingga perangkat lunak dapat

digunakan untuk mendukung proses belajar mengajar, terutama dalam mata

kuliah Kriptografi dan keamanan komputer.

2. Dengan menggunakan aplikasi penanda tanganan tersebut sistem keamanan

dapat diperketat dan meminimalisir adanya penyadapan data, karena tanda

tangan digital dapat memenuhi syarat keamanan data antara pengirim dan

penerima pesan melalui tanda tangan yang diembed (dibawa) beserta data

yang dikirim.

3. Aplikasi ini dapat diterapkan dalam pertukaran yang dapat diaplikasikan pada

sitsem perbankanan, aplikasi E-Commerce maupun E-Government yang

berkembang pada saat ini.

B. Saran

Penulis ingin memberikan beberapa saran yang mungkin dapat membantu

dalam pengembangan perangkat lunak ini yaitu :

1. Perangkat lunak ini dapat dikembangkan dengan menambahkan fitur-fitur

lainya seperti mengadopsi jenis file yang lain seperti : file gambar dan

multimedia yang memungkinkan pengiriman dalam jumlah kapasitas yang

besar.

2. Spesifikasi jenis tanda tangan lebih mndetail, seperti menyertakan jaringan

syaraf tiruan sidik jari, atau deteksi retina, untuk memperketat keamanan data.

3. Perangkat lunak dapat dikembangkan dengan menambahkan fitur tampilan

yang lebih menarik.

Page 95: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

LAMPIRAN

Page 96: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Fungsi Enkripsi (Source code) function varargout = Ecc(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Ecc_OpeningFcn, ... 'gui_OutputFcn', @Ecc_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Ecc_OpeningFcn(hObject, eventdata, Ecc, varargin) % inisialisasi paramters untuk menjalankan Ecc Ecc.params.characterList = ... sprintf('0123456789'); Ecc.params.nRotors = 8; % Inisialisasi parameter GUI kontrol tmp = length(Ecc.params.characterList); fillMenu = cell(length(Ecc.params.characterList),1); for iA = 1:length(fillMenu); fillMenu{iA} = Ecc.params.characterList(iA); end guidata(hObject, Ecc); uiwait(Ecc.figure1); function varargout = Ecc_OutputFcn(hObject, eventdata, Ecc) if ~isempty(Ecc) close(Ecc.figure1) end function inputText_Callback(hObject, eventdata, Ecc) function inputText_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function outputText_Callback(hObject, eventdata, Ecc) function outputText_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function runButton_Callback(hObject, eventdata, Ecc)

Page 97: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Ecc=guidata(gcbo); global s ecdsa Ecc = guidata(hObject); inputText = get(Ecc.listbox6,'String'); if ~isempty(inputText); Ecc.params = getParams(Ecc); if sum(Ecc.params.rotorUse) > 0 if sum(sum(Ecc.params.plugboard ~= 0)) < length(unique(Ecc.params.plugboard(:))) listbox10 = runEcc(inputText,Ecc.params); set(Ecc.listbox10,'String',listbox10); else set(Ecc.listbox10,... 'String',''); end else set(Ecc.listbox10,'String','1'); end else set(Ecc.listbox10,'String','masukan sign'); end guidata(hObject, Ecc); Ecc=guidata(gcbo); s=get(Ecc.inputText,'string'); set(Ecc.listbox11,'string',(s)); function paramButton_Callback(hObject, eventdata, Ecc) function params = getParams(Ecc) params = Ecc.params; % rangka Gui objek function outMsg = runEcc(inMsg,params) % parameter pembangun GUI skeleton (kerangka GUI) randn('seed',0); randn('state',0); rand('seed',0); rand('state',0); params.rotors = buildRotors(params.nRotors,length(params.characterList),params.rotorState); params.rotorState = params.rotorState(logical(params.rotorUse)); params.nRotors = length(params.rotorState); params.rotors = params.rotors(:,logical(params.rotorUse)); params.reflector = buildReflector(length(params.characterList)); % preproses pesan procMsg = preprocess(inMsg,params.characterList); outMsg = ''; % fungsi looping pesan saat dienkrip

Page 98: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

for iA = 1:length(procMsg) % konversi numerik(plain ke chiper) msgNum = strfind(params.characterList,procMsg(iA)); msgNum = runPlugboard(msgNum,params.plugboard); tmpOut = passThroughRotors(msgNum,params); tmpOut = runPlugboard(tmpOut,params.plugboard); % menyimpan tchipertext ke kotak pesan keluar outMsg(iA) = params.characterList(tmpOut); params = rotateRotors(params); end function msgOut = runPlugboard(msgIn,plugboard) if sum(msgIn == plugboard(:,1)) == 1 msgOut = plugboard(msgIn == plugboard(:,1),2); elseif sum(msgIn == plugboard(:,2)) == 1 msgOut = plugboard(msgIn == plugboard(:,2),1); else msgOut = msgIn; end function params = rotateRotors(params) params.nRotors = size(params.rotors,2); exitFlag = 0; rotorNum = 1; while ~exitFlag tmp = params.rotors(:,rotorNum); params.rotors(:,rotorNum) = [tmp(2:end); tmp(1)]; params.rotorState(rotorNum) = ... mod(params.rotorState(rotorNum),size(params.rotors,1)) + 1; if ~isequal(params.rotorState(rotorNum),1) exitFlag = 1; end rotorNum = rotorNum + 1; if rotorNum > params.nRotors exitFlag = 1; end end function letterOut = passThroughRotors(letterIn,params) tmpOut = letterIn; for iB = 1:size(params.rotors,2) tmpIn = tmpOut; tmpOut = params.rotors(tmpIn,iB); end tmpIn = tmpOut; tmpOut = params.reflector(tmpIn); for iB = size(params.rotors,2):-1:1 tmpIn = tmpOut; tmpOut = find(params.rotors(:,iB)==tmpIn); end letterOut = tmpOut; function procMsg = preprocess(inMsg,characterList) inMsg = upper(inMsg); procMsg = inMsg(ismember(inMsg,characterList)); function reflector = buildReflector(nCharacters) tmp = randperm(nCharacters)'; reflector = zeros(nCharacters,1);

Page 99: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

while ~isempty(tmp) fillers = tmp(1:2); tmp(1:2) = []; reflector(fillers(1)) = fillers(2); reflector(fillers(2)) = fillers(1); end function rotors = buildRotors(nRotors,nCharacters,rotorState) rotors = zeros(nCharacters,nRotors); for iRotor = 1:nRotors rotors(:,iRotor) = randperm(nCharacters)'; end for iRotor = 1:nRotors tmp = rotors(:,iRotor); if rotorState(iRotor) > 1 tmp = [tmp(rotorState(iRotor):end); tmp(1:rotorState(iRotor)-1)]; rotors(:,iRotor) = tmp; end end function slider1_Callback(hObject, eventdata, Ecc) set(Ecc.edit1,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider1_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider2_Callback(hObject, eventdata, Ecc) set(Ecc.edit2,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider2_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider3_Callback(hObject, eventdata, Ecc) set(Ecc.edit3,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider3_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider4_Callback(hObject, eventdata, Ecc) set(Ecc.edit4,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider4_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider5_Callback(hObject, eventdata, Ecc) set(Ecc.edit5,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider5_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

Page 100: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function slider6_Callback(hObject, eventdata, Ecc) set(Ecc.edit6,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider6_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider7_Callback(hObject, eventdata, Ecc) set(Ecc.edit7,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider7_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider8_Callback(hObject, eventdata, Ecc) set(Ecc.edit8,'String',Ecc.params.characterList(round(get(hObject,'Value')))); function slider8_CreateFcn(hObject, eventdata, Ecc) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function edit1_Callback(hObject, eventdata, Ecc) function edit1_CreateFcn(hObject, eventdata, Ecc) function edit2_Callback(hObject, eventdata, Ecc) function edit2_CreateFcn(hObject, eventdata, Ecc) function edit3_Callback(hObject, eventdata, Ecc) function edit3_CreateFcn(hObject, eventdata, Ecc) function edit4_Callback(hObject, eventdata, Ecc) function edit4_CreateFcn(hObject, eventdata, Ecc) function edit5_Callback(hObject, eventdata, Ecc) function edit5_CreateFcn(hObject, eventdata, Ecc) function edit6_Callback(hObject, eventdata, Ecc) function edit6_CreateFcn(hObject, eventdata, Ecc) function edit7_Callback(hObject, eventdata, Ecc) function edit7_CreateFcn(hObject, eventdata, Ecc) function edit8_Callback(hObject, eventdata, Ecc) function edit8_CreateFcn(hObject, eventdata, Ecc) function checkbox1_Callback(hObject, eventdata, Ecc) function checkbox2_Callback(hObject, eventdata, Ecc) function checkbox3_Callback(hObject, eventdata, Ecc) function checkbox4_Callback(hObject, eventdata, Ecc) function checkbox5_Callback(hObject, eventdata, Ecc) function checkbox6_Callback(hObject, eventdata, Ecc) function checkbox7_Callback(hObject, eventdata, Ecc) function checkbox8_Callback(hObject, eventdata, Ecc) function popupmenu1a_Callback(hObject, eventdata, Ecc) function popupmenu1a_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu1b_Callback(hObject, eventdata, Ecc) function popupmenu1b_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');

Page 101: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

end function popupmenu2a_Callback(hObject, eventdata, Ecc) function popupmenu2a_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu2b_Callback(hObject, eventdata, Ecc) function popupmenu2b_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu3a_Callback(hObject, eventdata, Ecc) function popupmenu3a_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu3b_Callback(hObject, eventdata, Ecc) function popupmenu3b_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu4a_Callback(hObject, eventdata, Ecc) function popupmenu4a_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu4b_Callback(hObject, eventdata, Ecc) function popupmenu4b_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu5a_Callback(hObject, eventdata, Ecc) function popupmenu5a_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu5b_Callback(hObject, eventdata, Ecc) function popupmenu5b_CreateFcn(hObject, eventdata, Ecc) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function checkPlug1_Callback(hObject, eventdata, Ecc) function checkPlug2_Callback(hObject, eventdata, Ecc) function checkPlug3_Callback(hObject, eventdata, Ecc) function checkPlug4_Callback(hObject, eventdata, Ecc) function checkPlug5_Callback(hObject, eventdata, Ecc) function btnloadpesan_Callback(hObject, eventdata, Ecc) % hObject handle to btnloadpesan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

Page 102: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% Ecc structure with Ecc and user data (see GUIDATA) m=1; h=waitbar(0,'harap tunggu...'); pjg=length(m); while m <=pjg Ecc=guidata(gcbo); maple('with(numtheory)'); disp('Warning: harap tunggu kunci sedang digenerasikan.') % **********Set kunci rahasia untuk user / penguna*********** % % ini merupakan part dimana user harus mengganti kode paka kunci rahasia global m maple('a:=', 234); disp(' ') disp('Tampilkan p, Alpha and Betaa:') % menggenerasi / menampilkan secara acak bilangan prima p (p adalah antara 0 and 2^128) maple('p:=','nextprime(rand(0..2^128)())') p = maple('p'); set(Ecc.listbox1,'string',num2str(p)); % hitung root awal (primitive root) Alpha maple('Alpha:=','primroot(p)') Alpha = maple('Alpha'); set(Ecc.listbox2,'string',num2str(Alpha)); % hitung kunci publik (public key) Betaa maple('Betaa:=','(Alpha^a) mod p') Betaa = maple('Betaa'); set(Ecc.listbox3,'string',num2str(Betaa)); [namafile,direktori]=uigetfile('*.txt','loaddata'); eval(['cd ''' direktori ''';']); fid = fopen(namafile,'r'); m = fread(fid, 'uint8=>char'); fclose(fid); plainteks=sprintf(m); set(Ecc.listbox4,'string',plainteks); set(Ecc.listbox4,'Userdata',plainteks); ELGencrypt(p,Alpha,Betaa,m) waitbar(p/pjg) end close(h); % --- Executes on selection change in listbox1. function listbox1_Callback(hObject, eventdata, Ecc) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA)

Page 103: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox1 % --- Executes during object creation, after setting all properties. function listbox1_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox2. function listbox2_Callback(hObject, eventdata, Ecc) % hObject handle to listbox2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox2 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox2 % --- Executes during object creation, after setting all properties. function listbox2_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox3. function listbox3_Callback(hObject, eventdata, Ecc) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA)

Page 104: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% Hints: contents = get(hObject,'String') returns listbox3 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox3 % --- Executes during object creation, after setting all properties. function listbox3_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox4. function listbox4_Callback(hObject, eventdata, Ecc) % hObject handle to listbox4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox4 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox4 % --- Executes during object creation, after setting all properties. function listbox4_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox5. function listbox5_Callback(hObject, eventdata, Ecc) % hObject handle to listbox5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA)

Page 105: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% Hints: contents = get(hObject,'String') returns listbox5 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox5 % --- Executes during object creation, after setting all properties. function listbox5_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btnsign. function btnsign_Callback(hObject, eventdata, Ecc) % hObject handle to btnsign (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) Ecc=guidata(gcbo); global y1 y2 m=get(Ecc.listbox4,'Userdata'); set(Ecc.listbox5,'string',(y1)); set(Ecc.listbox6,'string',(y2)); if isequal(m,0) return end if isequal(m,[]) msgbox('load pesan terlebih dahulu ...','perhatian','warn') return end % --- Executes on selection change in listbox6. function listbox6_Callback(hObject, eventdata, Ecc) % hObject handle to listbox6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox6 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox6 % --- Executes during object creation, after setting all properties.

Page 106: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function listbox6_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btnenkrip. function btnenkrip_Callback(hObject, eventdata, Ecc) % hObject handle to btnenkrip (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) Ecc=guidata(gcbo); maple('a:=', 234); disp(' ') disp('Tampilkan p, Primelist and sign:') % menggenerasi / menampilkan secara acak bilangan prima p (p adalah antara 0 and 2^128) maple('p:=','nextprime(rand(0..2^128)())') p = maple('p'); set(Ecc.listbox8,'string',num2str(p)); % hitung root awal (primitive root) Alpha maple('Alpha:=','primroot(p)') Alpha = maple('Alpha'); % hitung kunci publik (public key) Betaa maple('Betaa:=','(Alpha^a) mod p') Betaa = maple('Betaa'); set(Ecc.listbox9,'string',num2str(Betaa)); % --- Executes on selection change in listbox8. function listbox8_Callback(hObject, eventdata, Ecc) % hObject handle to listbox8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox8 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox8 % --- Executes during object creation, after setting all properties. function listbox8_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox8 (see GCBO)

Page 107: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox9. function listbox9_Callback(hObject, eventdata, Ecc) % hObject handle to listbox9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox9 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox9 % --- Executes during object creation, after setting all properties. function listbox9_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btndekripsi. function btndekripsi_Callback(hObject, eventdata, Ecc) % hObject handle to btndekripsi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Gunakan y1 dan y2 untuk mendecrypt (membuka) pesan % memanggil nilai dari y1 & y2 : Ecc=guidata(gcbo); global y1 y2 Ecc=guidata(gcbo); y1=str2double(get(Ecc.listbox5,'string')); y2=str2double(get(Ecc.listbox6,'string')); % Mengkalkulasi (Menghitung) karakter numerik plain text menggunakan y1 dan y2 dari pengirim pesan : maple('num_plaintext :=', '(((y1&^a)&^(-1))*y2) mod p'); num_plaintext = maple('num_plaintext'); % Mengkonversi karakter numerik plain text ke dalam karakter :

Page 108: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

num_plaintext_length = numel(num_plaintext); odd = rem(num_plaintext_length,2); % Jika pesan dari karakter numerik tersebut terdapat karakter nomor % maka nilai numeriknya dari karakter utama sama dengan atau lebih besar dari 10 (x => 10) % lalu kita dapat konversi setiap 2 nomor yang berurutan menjadi satu karakter if odd==0,; z=1; plaintext = ''; for n=1:num_plaintext_length/2,; q = ((num_plaintext(z)-48)*10)+(num_plaintext(z+1)-48); plaintext = strcat(plaintext,char(q+'a'-1)); z=z+2; end; message = plaintext end; % jika panjang pesan dari numerik plain text merupakan / terdapat angka gajil % maka nilai numerik dari karakter utama / pertama adalah kurang dari 10 (x < 10) % konversi angka single yang pertama ke dalam karakter % dan sisanya, maka kita konversi setiap dua angka yang berurutan ke dalam satu karakter if odd==1, m = floor(num_plaintext_length/2) + 1; q = num_plaintext(1)-48; plaintext = char(q+'a'-1); z=2; for n=2:m, q = ((num_plaintext(z)-48)*10)+(num_plaintext(z+1)-48); plaintext = strcat(plaintext,char(q+'a'-1)); z=z+2; end; message = plaintext end; set(Ecc.listbox11,'string',(message)); % --- Executes on selection change in listbox11. function listbox11_Callback(hObject, eventdata, Ecc) % hObject handle to listbox11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox11 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox11 % --- Executes during object creation, after setting all properties.

Page 109: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function listbox11_CreateFcn(hObject, eventdata, Ecc) % hObject handle to listbox11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc empty - Ecc not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btnsimpanteks. function btnsimpanteks_Callback(hObject, eventdata, Ecc) % hObject handle to btnsimpanteks (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % Ecc structure with Ecc and user data (see GUIDATA) Ecc=guidata(gcbo); [namafile,direktori]=uiputfile('*.txt','Simpanpesan'); pesan=fopen(namafile,'w'); namafile=get(Ecc.listbox10,'string'); fprintf(pesan,namafile); fclose(pesan); % --- Executes on selection change in listbox10. function listbox10_Callback(hObject, eventdata, handles) % hObject handle to listbox10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox10 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox10 % --- Executes during object creation, after setting all properties. function listbox10_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in pushbutton9.

Page 110: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function pushbutton9_Callback(hObject, eventdata, handles) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); [namafile,direktori]=uiputfile('*.txt','Simpanpesan'); pesan=fopen(namafile,'w'); namafile=get(Ecc.listbox5,'string'); fprintf(pesan,namafile); fclose(pesan); % --- Executes on button press in btnbersih. function btnbersih_Callback(hObject, eventdata, handles) % hObject handle to btnbersih (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); set(Ecc.listbox1,'string',''); set(Ecc.listbox2,'string',''); set(Ecc.listbox3,'string',''); set(Ecc.listbox4,'string',''); set(Ecc.listbox5,'string',''); set(Ecc.listbox6,'string',''); set(Ecc.listbox8,'string',''); set(Ecc.listbox9,'string',''); set(Ecc.listbox10,'string',''); set(Ecc.inputText,'string',''); % -------------------------------------------------------------------- function file_Callback(hObject, eventdata, handles) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function bersih_Callback(hObject, eventdata, handles) % hObject handle to bersih (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); set(Ecc.listbox1,'string',''); set(Ecc.listbox2,'string',''); set(Ecc.listbox3,'string',''); set(Ecc.listbox4,'string',''); set(Ecc.listbox5,'string',''); set(Ecc.listbox6,'string',''); set(Ecc.listbox8,'string',''); set(Ecc.listbox9,'string',''); set(Ecc.listbox10,'string','');

Page 111: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

set(Ecc.inputText,'string',''); % -------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pilihan= questdlg(['Anda yakin keluar dari aplikasi',... get(handles.figure1,'name'),'?'],... ['Konfirmasi tutup'],'Ya','Tidak','Ya'); if strcmp(pilihan,'Tidak') return; end delete(handles.figure1); % -------------------------------------------------------------------- function proses_Callback(hObject, eventdata, handles) % hObject handle to proses (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function enkripsi_Callback(hObject, eventdata, handles) % hObject handle to enkripsi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) enkrip; % -------------------------------------------------------------------- function dekripsi_Callback(hObject, eventdata, handles) % hObject handle to dekripsi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) dekrip;

Fungsi Dekripsi (Source code)

function varargout = Ecc(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @dekrip_OpeningFcn, ... 'gui_OutputFcn', @dekrip_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

Page 112: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function dekrip_OpeningFcn(hObject, eventdata, handles, varargin) % Inisialisasi parameter handles.params.characterList = ... sprintf('0123456789'); handles.params.nRotors = 8; % Inisialisasi parameter kontrol Gui tmp = length(handles.params.characterList); fillMenu = cell(length(handles.params.characterList),1); for iA = 1:length(fillMenu); fillMenu{iA} = handles.params.characterList(iA); end set(handles.slider1,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider2,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider3,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider4,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider5,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider6,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider7,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.slider8,'SliderStep',[1/(tmp-1), 5/(tmp-1)],'Min',1,'Max',tmp,'Value',1) set(handles.edit1,'String',handles.params.characterList(1)); set(handles.edit2,'String',handles.params.characterList(1)); set(handles.edit3,'String',handles.params.characterList(1)); set(handles.edit4,'String',handles.params.characterList(1)); set(handles.edit5,'String',handles.params.characterList(1)); set(handles.edit6,'String',handles.params.characterList(1)); set(handles.edit7,'String',handles.params.characterList(1)); set(handles.edit8,'String',handles.params.characterList(1)); set(handles.checkbox1,'Value',1); set(handles.checkbox2,'Value',1); set(handles.checkbox3,'Value',1); set(handles.checkbox4,'Value',1); set(handles.checkbox5,'Value',1); set(handles.checkbox6,'Value',0); set(handles.checkbox7,'Value',0); set(handles.checkbox8,'Value',0); set(handles.popupmenu1a,'String',fillMenu); set(handles.popupmenu1b,'String',fillMenu); set(handles.popupmenu2a,'String',fillMenu); set(handles.popupmenu2b,'String',fillMenu); set(handles.popupmenu3a,'String',fillMenu);

Page 113: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

set(handles.popupmenu3b,'String',fillMenu); set(handles.popupmenu4a,'String',fillMenu); set(handles.popupmenu4b,'String',fillMenu); set(handles.popupmenu5a,'String',fillMenu); set(handles.popupmenu5b,'String',fillMenu); guidata(hObject, handles); uiwait(handles.figure2); function varargout = dekrip_OutputFcn(hObject, eventdata, handles) if ~isempty(handles) close(handles.figure2) end function inputText_Callback(hObject, eventdata, handles) function inputText_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function outputText_Callback(hObject, eventdata, handles) function outputText_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function runButton_Callback(hObject, eventdata, handles) Ecc=guidata(gcbo); global s s = s maple('s:=',s); r=get(Ecc.listbox1,'string'); if r > 0 s=s; else s=r; end set(Ecc.listbox6,'string',(s)); set(Ecc.listbox6,'Userdata',(s)); handles = guidata(hObject); listbox1 = get(handles.listbox1,'String'); if ~isempty(listbox1); handles.params = getParams(handles); if sum(handles.params.rotorUse) > 0 if sum(sum(handles.params.plugboard ~= 0)) < length(unique(handles.params.plugboard(:))) listbox3 = runEcc(listbox1,handles.params); set(handles.listbox3,'String',listbox3); else set(handles.listbox3,... 'String',''); end else

Page 114: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

set(handles.listbox3,'String',''); end else set(handles.listbox3,'String','masukan sign'); end guidata(hObject, handles); function loadButton_Callback(hObject, eventdata, handles) [inputFileName, inputPathName] = uigetfile('*.txt', 'Pick a Text File for Input'); if ~isequal(inputFileName,0) [outputFileName, outputPathName] = uiputfile('*.txt', 'Pick a Text File for Output'); if ~isequal(outputFileName,0) [fidIn] = fopen(sprintf('%s%s%s',inputPathName,filesep,inputFileName),'r'); [fidOut] = fopen(sprintf('%s%s%s',outputPathName,filesep,outputFileName),'w'); params = getParams(handles); while 1 inLine = fgetl(fidIn); if ~ischar(inLine) break else outLine = runEcc(inLine,params); end fprintf(fidOut,'%s\n',outLine); end fclose(fidIn); fclose(fidOut); set(handles.listbox1,'String','Your Text File'); set(handles.listbox3,'String','Has Been Processed'); end end function paramButton_Callback(hObject, eventdata, handles) if get(hObject,'Value') == 1; set(handles.uipanel1,'Visible','on'); set(handles.uipanel2,'Visible','on'); set(handles.inputTitle,'Visible','off'); set(handles.outputTitle,'Visible','off'); set(handles.listbox1,'Visible','off'); set(handles.listbox3,'Visible','off'); set(handles.runButton,'Visible','off'); set(handles.loadButton,'Visible','off'); set(hObject,'String','Return to Enigma'); else set(handles.uipanel1,'Visible','off'); set(handles.uipanel2,'Visible','off'); set(handles.inputTitle,'Visible','on'); set(handles.outputTitle,'Visible','on');

Page 115: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

set(handles.listbox1,'Visible','on'); set(handles.listbox3,'Visible','on'); set(handles.runButton,'Visible','on'); set(handles.loadButton,'Visible','on'); set(hObject,'String','Edit Parameters'); end function params = getParams(handles) params = handles.params; % Parameter Gui kontrol params.rotorState = ones(params.nRotors,1); params.rotorState(1) = get(handles.slider1,'Value'); params.rotorState(2) = get(handles.slider2,'Value'); params.rotorState(3) = get(handles.slider3,'Value'); params.rotorState(4) = get(handles.slider4,'Value'); params.rotorState(5) = get(handles.slider5,'Value'); params.rotorState(6) = get(handles.slider6,'Value'); params.rotorState(7) = get(handles.slider7,'Value'); params.rotorState(8) = get(handles.slider8,'Value'); params.rotorState = round(params.rotorState); params.rotorUse(1) = get(handles.checkbox1,'Value'); params.rotorUse(2) = get(handles.checkbox2,'Value'); params.rotorUse(3) = get(handles.checkbox3,'Value'); params.rotorUse(4) = get(handles.checkbox4,'Value'); params.rotorUse(5) = get(handles.checkbox5,'Value'); params.rotorUse(6) = get(handles.checkbox6,'Value'); params.rotorUse(7) = get(handles.checkbox7,'Value'); params.rotorUse(8) = get(handles.checkbox8,'Value'); params.plugboard = zeros(5,2); params.plugboard(1,1) = get(handles.popupmenu1a,'Value'); params.plugboard(1,2) = get(handles.popupmenu1b,'Value'); params.plugboard(2,1) = get(handles.popupmenu2a,'Value'); params.plugboard(2,2) = get(handles.popupmenu2b,'Value'); params.plugboard(3,1) = get(handles.popupmenu3a,'Value'); params.plugboard(3,2) = get(handles.popupmenu3b,'Value'); params.plugboard(4,1) = get(handles.popupmenu4a,'Value'); params.plugboard(4,2) = get(handles.popupmenu4b,'Value'); params.plugboard(5,1) = get(handles.popupmenu5a,'Value'); params.plugboard(5,2) = get(handles.popupmenu5b,'Value'); if get(handles.checkPlug1,'Value')==0, params.plugboard(1,:) = 0; end if get(handles.checkPlug2,'Value')==0, params.plugboard(2,:) = 0; end if get(handles.checkPlug3,'Value')==0, params.plugboard(3,:) = 0; end if get(handles.checkPlug4,'Value')==0, params.plugboard(4,:) = 0; end if get(handles.checkPlug5,'Value')==0, params.plugboard(5,:) = 0; end function outMsg = runEcc(inMsg,params) randn('seed',0); randn('state',0); rand('seed',0); rand('state',0); params.rotors = buildRotors(params.nRotors,length(params.characterList),params.rotorState); params.rotorState = params.rotorState(logical(params.rotorUse)); params.nRotors = length(params.rotorState);

Page 116: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

params.rotors = params.rotors(:,logical(params.rotorUse)); params.reflector = buildReflector(length(params.characterList)); % praprocess pesan procMsg = preprocess(inMsg,params.characterList); outMsg = ''; for iA = 1:length(procMsg) % Chiper ke plainteks msgNum = strfind(params.characterList,procMsg(iA)); msgNum = runPlugboard(msgNum,params.plugboard); tmpOut = passThroughRotors(msgNum,params); tmpOut = runPlugboard(tmpOut,params.plugboard); outMsg(iA) = params.characterList(tmpOut); params = rotateRotors(params); end function msgOut = runPlugboard(msgIn,plugboard) if sum(msgIn == plugboard(:,1)) == 1 msgOut = plugboard(msgIn == plugboard(:,1),2); elseif sum(msgIn == plugboard(:,2)) == 1 msgOut = plugboard(msgIn == plugboard(:,2),1); else msgOut = msgIn; end function params = rotateRotors(params) params.nRotors = size(params.rotors,2); exitFlag = 0; rotorNum = 1; while ~exitFlag tmp = params.rotors(:,rotorNum); params.rotors(:,rotorNum) = [tmp(2:end); tmp(1)]; params.rotorState(rotorNum) = ... mod(params.rotorState(rotorNum),size(params.rotors,1)) + 1; if ~isequal(params.rotorState(rotorNum),1) exitFlag = 1; end rotorNum = rotorNum + 1; if rotorNum > params.nRotors exitFlag = 1; end end function letterOut = passThroughRotors(letterIn,params) tmpOut = letterIn; for iB = 1:size(params.rotors,2) tmpIn = tmpOut; tmpOut = params.rotors(tmpIn,iB); end tmpIn = tmpOut; tmpOut = params.reflector(tmpIn); for iB = size(params.rotors,2):-1:1 tmpIn = tmpOut; tmpOut = find(params.rotors(:,iB)==tmpIn); end letterOut = tmpOut; function procMsg = preprocess(inMsg,characterList)

Page 117: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

inMsg = upper(inMsg); procMsg = inMsg(ismember(inMsg,characterList)); function reflector = buildReflector(nCharacters) tmp = randperm(nCharacters)'; reflector = zeros(nCharacters,1); while ~isempty(tmp) fillers = tmp(1:2); tmp(1:2) = []; reflector(fillers(1)) = fillers(2); reflector(fillers(2)) = fillers(1); end function rotors = buildRotors(nRotors,nCharacters,rotorState) rotors = zeros(nCharacters,nRotors); for iRotor = 1:nRotors rotors(:,iRotor) = randperm(nCharacters)'; end for iRotor = 1:nRotors tmp = rotors(:,iRotor); if rotorState(iRotor) > 1 tmp = [tmp(rotorState(iRotor):end); tmp(1:rotorState(iRotor)-1)]; rotors(:,iRotor) = tmp; end end function slider1_Callback(hObject, eventdata, handles) set(handles.edit1,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider2_Callback(hObject, eventdata, handles) set(handles.edit2,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider3_Callback(hObject, eventdata, handles) set(handles.edit3,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider4_Callback(hObject, eventdata, handles) set(handles.edit4,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider4_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

Page 118: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function slider5_Callback(hObject, eventdata, handles) set(handles.edit5,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider5_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider6_Callback(hObject, eventdata, handles) set(handles.edit6,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider6_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider7_Callback(hObject, eventdata, handles) set(handles.edit7,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider7_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider8_Callback(hObject, eventdata, handles) set(handles.edit8,'String',handles.params.characterList(round(get(hObject,'Value')))); function slider8_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) function edit7_Callback(hObject, eventdata, handles) function edit7_CreateFcn(hObject, eventdata, handles) function edit8_Callback(hObject, eventdata, handles) function edit8_CreateFcn(hObject, eventdata, handles) function checkbox1_Callback(hObject, eventdata, handles) function checkbox2_Callback(hObject, eventdata, handles) function checkbox3_Callback(hObject, eventdata, handles) function checkbox4_Callback(hObject, eventdata, handles) function checkbox5_Callback(hObject, eventdata, handles) function checkbox6_Callback(hObject, eventdata, handles) function checkbox7_Callback(hObject, eventdata, handles) function checkbox8_Callback(hObject, eventdata, handles) function popupmenu1a_Callback(hObject, eventdata, handles) function popupmenu1a_CreateFcn(hObject, eventdata, handles)

Page 119: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu1b_Callback(hObject, eventdata, handles) function popupmenu1b_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu2a_Callback(hObject, eventdata, handles) function popupmenu2a_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu2b_Callback(hObject, eventdata, handles) function popupmenu2b_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu3a_Callback(hObject, eventdata, handles) function popupmenu3a_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu3b_Callback(hObject, eventdata, handles) function popupmenu3b_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu4a_Callback(hObject, eventdata, handles) function popupmenu4a_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu4b_Callback(hObject, eventdata, handles) function popupmenu4b_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu5a_Callback(hObject, eventdata, handles) function popupmenu5a_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function popupmenu5b_Callback(hObject, eventdata, handles) function popupmenu5b_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function checkPlug1_Callback(hObject, eventdata, handles)

Page 120: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

function checkPlug2_Callback(hObject, eventdata, handles) function checkPlug3_Callback(hObject, eventdata, handles) function checkPlug4_Callback(hObject, eventdata, handles) function checkPlug5_Callback(hObject, eventdata, handles) % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); % Mengkalkulasi (Menghitung) karakter numerik plain text menggunakan y1 dan y2 dari pengirim pesan : maple('num_plaintext :=', '(((y1&^a)&^(-1))*y2) mod p'); num_plaintext = maple('num_plaintext'); % Mengkonversi karakter numerik plain text ke dalam karakter : num_plaintext_length = numel(num_plaintext); odd = rem(num_plaintext_length,2); % Jika pesan dari karakter numerik tersebut terdapat karakter nomor % maka nilai numeriknya dari karakter utama sama dengan atau lebih besar dari 10 (x => 10) % lalu kita dapat konversi setiap 2 nomor yang berurutan menjadi satu karakter if odd==0,; z=1; plaintext = ''; for n=1:num_plaintext_length/2,; q = ((num_plaintext(z)-48)*10)+(num_plaintext(z+1)-48); plaintext = strcat(plaintext,char(q+'a'-1)); z=z+2; end; message = plaintext end; % jika panjang pesan dari numerik plain text merupakan / terdapat angka gajil % maka nilai numerik dari karakter utama / pertama adalah kurang dari 10 (x < 10) % konversi angka single yang pertama ke dalam karakter % dan sisanya, maka kita konversi setiap dua angka yang berurutan ke dalam satu karakter if odd==1, m = floor(num_plaintext_length/2) + 1; q = num_plaintext(1)-48; plaintext = char(q+'a'-1); z=2; for n=2:m, q = ((num_plaintext(z)-48)*10)+(num_plaintext(z+1)-48); plaintext = strcat(plaintext,char(q+'a'-1));

Page 121: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

z=z+2; end; message = plaintext end; global y1 y2 maple('y1:=',y1); maple('y2:=',y2); y1=str2double(get(Ecc.listbox3,'string')); y2=str2double(get(Ecc.listbox4,'string')); if y2 > 0 m = message; else m = y; end set(Ecc.listbox5,'string',(m)); set(Ecc.listbox5,'Userdata',(m)); % --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); [namafile,direktori]=uigetfile('*.txt','Buka Teks'); teks=fopen(namafile,'r'); charteks=fread(teks,'uint8=>char'); fclose(teks); pesan=sprintf(charteks); set(Ecc.listbox1,'string',pesan); set(Ecc.listbox1,'Userdata',pesan); % --- Executes on selection change in listbox1. function listbox1_Callback(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox1 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox1 % --- Executes during object creation, after setting all properties. function listbox1_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

Page 122: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox3. function listbox3_Callback(hObject, eventdata, handles) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox3 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox3 % --- Executes during object creation, after setting all properties. function listbox3_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in listbox4. function listbox4_Callback(hObject, eventdata, handles) % hObject handle to listbox4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox4 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox4 % --- Executes during object creation, after setting all properties. function listbox4_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

Page 123: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btnambilpesan. function btnambilpesan_Callback(hObject, eventdata, handles) % hObject handle to btnambilpesan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); [namafile,direktori]=uigetfile('*.txt','Buka Teks'); teks=fopen(namafile,'r'); charteks=fread(teks,'uint8=>char'); fclose(teks); pesan=sprintf(charteks); set(Ecc.listbox4,'string',pesan); set(Ecc.listbox4,'Userdata',pesan); % --- Executes on selection change in listbox5. function listbox5_Callback(hObject, eventdata, handles) % hObject handle to listbox5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox5 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox5 % --- Executes during object creation, after setting all properties. function listbox5_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

Page 124: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% --- Executes on selection change in listbox6. function listbox6_Callback(hObject, eventdata, handles) % hObject handle to listbox6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns listbox6 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox6 % --- Executes during object creation, after setting all properties. function listbox6_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btnbesih. function btnbesih_Callback(hObject, eventdata, handles) % hObject handle to btnbesih (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); set(Ecc.listbox1,'string',''); set(Ecc.listbox3,'string',''); set(Ecc.listbox4,'string',''); set(Ecc.listbox5,'string',''); set(Ecc.listbox6,'string',''); % -------------------------------------------------------------------- function bersih_Callback(hObject, eventdata, handles) % hObject handle to bersih (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Ecc=guidata(gcbo); set(Ecc.listbox1,'string',''); set(Ecc.listbox3,'string',''); set(Ecc.listbox4,'string',''); set(Ecc.listbox5,'string',''); set(Ecc.listbox6,'string','');

Page 125: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% -------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pilihan= questdlg(['Anda yakin keluar dari aplikasi',... get(handles.figure2,'name'),'?'],... ['Konfirmasi tutup'],'Ya','Tidak','Ya'); if strcmp(pilihan,'Tidak') return; end delete(handles.figure2); % -------------------------------------------------------------------- function enkripsi_Callback(hObject, eventdata, handles) % hObject handle to enkripsi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) enkrip; % -------------------------------------------------------------------- function dekripsi_Callback(hObject, eventdata, handles) % hObject handle to dekripsi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) dekrip;

Page 126: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Fungsi ECDSA (Source code) function ECDSA = public,private (key) ecdsa=guidata(gcbo); global v r message_length = numel(m); % panjang pesan g=generator; n=g.order; % mengkonversi seluruh karakter didalam pesan ke dalam angka dan disimpan % di dalam mnum_array r = r; % objek tanda tangan s = s; % bentuk tanda tangan mnum = ''; % Untuk karakter pertama, tidak membutuhkan anga nol di awal karakter angka % (jika angka tersebut kurang dar 10) <10 h =generator(m(1)); mnum_array(1) = h; % Untuk sisa pesan tersebut, jika karakter angka kurang dari 10 maka n= 2; while (j <= message_length) h = generator(m(j)); if ( h <= 9 ) mnum_array(n) = 0; mnum_array(n+1) = h; n = n + 2; else mnum_array(n) = h; n = n + 1; end; j = j + 1; end; % simpan setiap nilai di dalam array secara bersamaan dan menentukan ke % variabel mnum (pesan numerik) mnum_array_length = numel(mnum_array); for n=1:mnum_array_length, mnum = strcat(mnum,num2str(mnum_array(n))); end; maple('mnum:=',mnum); mnum_length = numel(mnum); % membandingkan mnum dengan p. jika mnum lebih besar dari p (mnum > p)

Page 127: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

% maka set flag (tanda) ke angka 1 p_length = numel(p); flag = 0; if (mnum_length == p_length) for index=1: p_length, if(mnum(index) > p(index)) flag = 1; break; end; end; end; if(mnum_length > p_length) flag =1; end; % Jika if mnum lebih besar dari p (mnum > p) maka tapilkan pesan error if(flag ==1) disp('') % jika mnum kurang dari p (mnum < p), lakukan proses Ekripsi else % Menggenerasi integer k secara acak maple('k:=','rand()'); k = maple('k'); % Menghitung hash maple('hash:=','d&^k mod p'); hash = maple('hash') % Menghitung signature maple('signature:=','((q&^k)*mnum) mod p'); signature = maple('signature') end; function y = generator (x,y) % Fungsi ini berfungsi untuk memanggil pesan dalam bentuk string x dan mengkonversi string tersebut % ke dalam integer. % bentuk konversi dari fungsi ini berupa : % ' ' --> 0 % a --> 1 % b --> 2 % terletak pada fungsi ... [s1,s2]=size(x); yvec=x - 'a'+1; inds=find(yvec<1); yvec(inds)=zeros(size(inds)); % meletakan seluruh spasi / ruang kosong mejadi nilai=0 % Fungsi untuk mengkonvesi angka : y=zeros(s1,1); for k=1:s1, for j=0:s2-1, ind=s2-j;

Page 128: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

y(k)=y(k)+yvec(k,ind)*100^(j); end; end;

Fungsi Kurva Elliptik (Source code) function ciphertext = ELGencrypt (p, Alpha, Betaa, m) global y1 y2 message_length = numel(m); % panjang pesan % mengkonversi seluruh karakter didalam pesan ke dalam angka dan disimpan % di dalam mnum_array n = 1; j = 2; mnum = ''; % Untuk karakter pertama, tidak membutuhkan anga nol di awal karakter angka % (jika angka tersebut kurang dar 10) <10 h =text2int1(m(1)); mnum_array(1) = h; % Untuk sisa pesan tersebut, jika karakter angka kurang dari 10 maka % bubuhkan karakter angka 0 di ala / depan karakter angka tersebut n= 2; while (j <= message_length) h = text2int1(m(j)); if ( h <= 9 ) mnum_array(n) = 0; mnum_array(n+1) = h; n = n + 2; else mnum_array(n) = h; n = n + 1; end; j = j + 1; end; % simpan setiap nilai di dalam array secara bersamaan dan menentukan ke % variabel mnum (pesan numerik) mnum_array_length = numel(mnum_array); for n=1:mnum_array_length, mnum = strcat(mnum,num2str(mnum_array(n))); end; maple('mnum:=',mnum); mnum_length = numel(mnum); % membandingkan mnum dengan p. jika mnum lebih besar dari p (mnum > p) % maka set flag (tanda) ke angka 1 p_length = numel(p);

Page 129: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

flag = 0; if (mnum_length == p_length) for index=1: p_length, if(mnum(index) > p(index)) flag = 1; break; end; end; end; if(mnum_length > p_length) flag =1; end; % Jika if mnum lebih besar dari p (mnum > p) maka tapilkan pesan error if(flag ==1) disp('Pesan terlalu panjang, buat lebih ringkas.') % jika mnum kurang dari p (mnum < p), lakukan proses Ekripsi else % Menggenerasi integer k secara acak maple('k:=','rand()'); k = maple('k'); % Menghitung y1 maple('y1:=','Alpha&^k mod p'); y1 = maple('y1') % Menghitung y2 maple('y2:=','((Betaa&^k)*mnum) mod p'); y2 = maple('y2') end; function y = text2int1 (x) % Fungsi ini berfungsi untuk memanggil pesan dalam bentuk string x dan mengkonversi string tersebut % ke dalam integer. % bentuk konversi dari fungsi ini berupa : % ' ' --> 0 % a --> 1 % b --> 2 % terletak pada fungsi ... [s1,s2]=size(x); yvec=x - 'a'+1; inds=find(yvec<1); yvec(inds)=zeros(size(inds)); % meletakan seluruh spasi / ruang kosong mejadi nilai=0 % Fungsi untuk mengkonvesi angka : y=zeros(s1,1); for k=1:s1, for j=0:s2-1, ind=s2-j; y(k)=y(k)+yvec(k,ind)*100^(j); end; end;

Page 130: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Tampilan Enkripsi

Tampilan awal (Author)

Tampilan ambil pesan tunggu

Page 131: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Tampilan Attaching file

Tampilan Save signature

Tampilan Dekripsi

Page 132: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Tampilan pengambilan signature & pesan chperteks

Tampilan hasil enkripsi sigature

Page 133: PEMANFAATAN ALGORITMA ECDSA (Elliptic Curve Digital

Tampilan Tambahan

Tampilan Top-Bar

Tampilan File-Bar

Tampilan Process -Bar

Tampilan keluar aplikasi