• Tidak ada hasil yang ditemukan

The Description and Implementation of SFLASH Version 3 as a Digital Signature Scheme

N/A
N/A
Protected

Academic year: 2017

Membagikan "The Description and Implementation of SFLASH Version 3 as a Digital Signature Scheme"

Copied!
32
0
0

Teks penuh

(1)

DESKRIPSI DAN IMPLEMENTASI SFLASH VERSI 3 SEBAGAI SKEMA

PENANDAAN DIGITAL (

DIGITAL SIGNATURE SCHEME

)

DIMAS CAHYO PURDINANTO

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2010

(2)

ABSTRACT

DIMAS CAHYO PURDINANTO. The Description and Implementation of SFLASH Version 3 as a Digital Signature Scheme. Under academic supervision of SUGI GURITMAN.

Cryptography plays a crucial role in the world of digital information. One of the sub-subjects of cryptographic primitive which is fundamental in authentication, authorization, and nonrepudiation is the digital signature. SFLASH emerged as one of the digital signature scheme recommended by the European consortium, New European Schemes for Signature, Integrity and Encryption (Nessie), for use on low-cost smart cards.

This research tries to define the algorithm(s) needed to build the SFLASH version 3 (SFLASHv3) as a digital signature scheme and implement it, both in the message signing process and the verification process. The objectives of study used in the testing phase, after the implementation, are files with plain text format (.txt), files size is vary. Each file will be tested as many as 3 (three) times repetition to take the average value.

From this research it is known that to build SFLASHv3, both in the message signing process and the verification process, required numbers of functions. Functions needed on Aritmatik_K, consisting of: binary addition function, binary multiplication function, binary quadratic function, binary inverse function. Whereas, functions needed on Aritmatik_L consisting of: addition function, multiplication function, quadratic function. It is also known that, the algorithms on Aritmatik_K are needed to build the algorithms on Aritmatik_L. Therefore, speed of the algorithms on Aritmatik_K affects the speed of algorithms on Aritmatik_L.

The computation of SFLASHv3 algorithm is affected by SHA-1 hash function and the computation of = ( ) and = ( ), because this is related to converting a random message and a mathematical exponent. The result of this research also indicates that message signing process requires more time than verification process; this corresponds to the object of study that is plain text formatted files (.txt).

(3)

DESKRIPSI DAN IMPLEMENTASI SFLASH VERSI 3 SEBAGAI SKEMA

PENANDAAN DIGITAL (

DIGITAL SIGNATURE SCHEME

)

DIMAS CAHYO PURDINANTO

Skripsi

Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada

Program Studi Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

(4)

Judul : Deskripsi dan Implementasi SFLASH Versi 3 sebagai Skema Penandaan Digital (Digital Signature Scheme)

Nama : Dimas Cahyo Purdinanto

NRP : G64076016

Program Studi : Ilmu Komputer

Menyetujui Pembimbing,

Dr. Sugi Guritman

Mengetahui:

Ketua Departemen Ilmu Komputer,

Dr. Ir. Sri Nurdiati, M.Sc NIP: 19601126 198601 2 001

(5)

RIWAYAT HIDUP

Penulis dilahirkan di Jakarta pada tanggal 8 Januari 1987 dari ayah Bambang Purnoto, S.Kom dan Ibu Diah Anggrahini, S.Pd. Penulis merupakan putra pertama dari 3 (tiga) bersaudara.

Tahun 2004 penulis lulus dari SMA Negeri 1 Tambun Selatan, pada tahun yang sama lulus seleksi masuk IPB melalui jalur Undangan Seleksi Masuk IPB (USMI) untuk Program Studi D3 Informatika Sub Program Manajemen Informasi dan Dokumentasi, Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam dan lulus pada tahun 2007. Pada tahun yang sama, penulis melanjutkan studi ke jenjang strata 1 untuk Program Studi Ilmu Komputer di IPB.

(6)

PRAKATA

Assalamu’alaikum Wr. Wb.

Puji dan syukur penulis panjatkan kehadirat Allah SWT atas nikmat iman dan Islam serta karunia yang tidak henti-hentinya Ia berikan, sehingga karya ilmiah ini dapat diselesaikan sesuai waktu yang telah ditentukan. Shalawat serta salam tidak lupa penulis limpahkan kepada nabi Muhammad SAW yang telah membumikan risalah Islam. Tema yang dipilih dalam penelitian yang dilaksanakan sejak bulan Juli 2009 ini adalah penandaan digital (digital signature), dengan judul Deskripsi dan Implementasi SFLASH Versi 3 sebagai Skema Penandaan Digital (Digital Signature Scheme).

Pada kesempatan ini penulis mengucapkan banyak terima kasih yang tulus kepada mereka yang telah memberikan bantuan dan dukungannya sehingga karya ilmiah ini dapat terselesaikan: 1 Orang tuaku bapak Bambang Purnoto dan ibu Diah Anggrahini, adik-adikku Ira Purdiningtyas

dan Nindya Nur Purdihapsari, serta seluruh keluarga atas semua yang telah diberikan.

2 Bapak Dr. Sugi Guritman selaku dosen pembimbing yang telah memberikan bimbingan, petunjuk dan saran selama penyusunan karya ilmiah ini.

3 Bapak Hendra Rahmawan S.Kom., M.T. dan Bapak Sony Hartono Wijaya S.Kom., M.Kom. yang telah bersedia untuk menjadi dosen penguji serta memberikan kritik dan saran kepada penulis.

4 Teman-teman kosan (Purwa Purdiawan, Iqbal Nurdiansyah, Indra Rusyadi, Nur Fikri, Fitra Yudha), Anggi Haryo Saksono, R.A. Fakih Basyarudin, Ermaya Eka A., Dicky Mulyadi, terima kasih atas dukungan keilmuan dan semangatnya.

5 Teman-teman Ekstensi Ilmu Komputer angkatan 2 atas kebersamaan, persahabatan, semangat dan bantuannya.

6 Hutami Pudya Mulyani, atas semangat dan inspirasinya.

Kritik dan saran yang membangun sangat penulis harapkan untuk kemajuan di masa depan. Akhir kata penulis berharap karya ilmiah ini dapat bermanfaat dan menjadi catatan kebaikan bagi semua pihak yang terlibat dalam penyusunan karya ilmiah ini. Amin.

Wassalam

Bogor, Maret 2010

(7)

viii

DAFTAR ISI

Halaman

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... ix

DAFTAR LAMPIRAN ... ix

PENDAHULUAN ... 1

Latar Belakang ... 1

Tujuan ... 1

Ruang Lingkup Penelitian ... 1

TINJAUAN PUSTAKA ... 2

Penandaan Digital... 2

Prosedur Penandaan ... 2

Prosedur Verifikasi ... 2

Kunci (Key) ... 3

Enkripsi Kunci Publik (Asimetris) ... 3

Skema Penandaan Digital dengan Apendiks ... 4

Pembangkitan Kunci ... 4

Pembangkitan Tanda dan Verifikasi ... 4

Fungsi Hash ... 4

SHA-1 ... 4

Metode Black Box ... 5

METODE PENELITIAN ... 5

Studi Pustaka ... 5

Penentuan Spesifikasi Pengujian ... 6

Pendeskripsian Spesifikasi SFLASHv3 ... 6

Perancangan Algoritme SFLASH-v3 ... 6

Implementasi Algoritme SFLASH-v3 ... 6

Pengujian Hasil Implementasi ... 6

HASIL DAN PEMBAHASAN ... 7

SFLASH Versi 3 ... 7

Notasi Pada SFLASHv3 ... 7

Parameter Algoritme ... 7

Parameter Rahasia ... 8

Parameter Semi-Publik ... 8

Parameter Publik ... 8

Pembangkitan Kunci ... 8

Penandaan Pesan ... 9

Verifikasi Tanda ... 10

Metode Komputasi SFLASHv3 ... 10

Aritmatik_K ... 11

Fungsi Penjumlahan Pada Aritmatik_K ... 11

Fungsi Perkalian Pada Aritmatik_K ... 12

Fungsi Kuadrat Pada Aritmatik_K ... 13

Fungsi Invers Pada Aritmatik_K ... 13

Aritmatik_L ... 14

Fungsi Penjumlahan Pada Aritmatik_L ... 14

Fungsi Perkalian Pada Aritmatik_L ... 14

Fungsi Kuadrat Pada Aritmatik_L ... 15

Komputasi = ( ) Dan = ( ) ... 15

Pengujian Hasil Implementasi ... 16

KESIMPULAN DAN SARAN ... 18

(8)

ix

Saran ... 18

DAFTAR PUSTAKA ... 18

LAMPIRAN ... 20

DAFTAR TABEL

Halaman 1. Spesifikasi file pengujian ... 6

2. Waktu penandaan pesan ... 16

3. Waktu verifikasi pesan ... 17

4. Waktu hashing pesan ... 17

DAFTAR GAMBAR

Halaman 1. Transformasi SA dan VA (Menezes et al. 1996). ... 2

2. Skema enkripsi dan dekripsi menggunakan kunci simetris (Schneier 1996). ... 3

3. Skema enkripsi menggunakan kunci publik (Menezes et al. 1996). ... 3

4. Ilustrasi pengujian menggunakan metode Black box (Sommerville 2001). ... 5

5. Langkah-langkah penelitian... 5

6. Fungsi- fungsi pada Aritmatik_K dan Aritmatik_L. ... 11

7. Ilustrasi penjumlahan dalam K... 12

8. Contoh cara kerja algoritme kuadrat pada Aritmatik_K. ... 13

9. Ilustrasi peningkatan waktu penandaan pesan terhadap ukuran file. ... 16

10. Ilustrasi peningkatan waktu verifikasi tanda terhadap ukuran file. ... 17

11. Ilustrasi peningkatan waktu hashing pesan terhadap ukuran file. ... 18

DAFTAR LAMPIRAN

Halaman 1. Bagan alir proses penandaan pesan algoritme SFLASHv3 (Courtois et al. 2003) ... 21

2. Representasi biner nilai n ... 22

3. Representasi biner nilai h ... 22

4. Bagan alir proses verifikasi tanda algoritme SFLASHv3 (Courtois et al. 2003) ... 23

(9)

1

PENDAHULUAN

Latar Belakang

Tanda tangan konvensional (yang dilakukan secara manual/ditulis menggunakan tangan) telah lama digunakan sebagai bukti kepemilikan, bukti persetujuan atau sebagai bukti perjanjian antara beberapa pihak yang ingin melakukan kerja sama atau ingin melakukan pertukaran informasi.

Menurut Schneier (1996) ada 5 (lima) sifat tanda tangan yang membuatnya bisa meyakinkan orang tentang keabsahan suatu dokumen, yaitu:

1. Tanda tangan bersifat autentik (asli). 2. Tanda tangan tidak dapat dipalsukan. 3. Tanda tangan tidak dapat didaur ulang. 4. Dokumen yang telah ditandatangani tidak

dapat diubah.

5. Tanda tangan tidak dapat disangkal. Namun pada kenyataannya tidak semua pernyataan di atas bernilai benar. Teknologi yang telah berkembang hingga saat ini sangat memungkinkan terjadinya pemalsuan tanda tangan konvensional. Bahkan pemindahan tanda tangan konvensional dari satu dokumen ke dokumen lain sangat mudah untuk dilakukan. Namun, perkembangan teknologi tidak selamanya berdampak buruk. Kekurangan tanda tangan konvensional dapat diatasi dengan teknologi komputer, khususnya pada bidang kriptografi.

Salah satu sub pokok bahasan/cabang dari kriptografi yang sangat fundamental dalam hal autentikasi, autorisasi, dan non-repudiasi adalah digital signature (penandaan digital). Masih menurut Schneier (1996), dengan mengkombinasikan penandaan digital dan kriptografi kunci publik, maka dapat dikembangkan protokol atau skema yang mempunyai tingkat keamanan setara enkripsi dan autentikasi dari penandaan digital. Analogi sederhananya adalah sebuah surat, tanda tangan pembuat surat menyatakan kepemilikan atau asal surat, sementara amplop menyediakan privasi.

Salah satu bentuk implementasi nyata dari penggunaan penandaan digital sebagai skema autentikasi adalah pada Kartu Tanda Penduduk (KTP). KTP berisi informasi mengenai sang pemilik kartu. Pada dasarnya setiap orang hanya memiliki satu KTP dan bersifat unik. Dalam hal ini, yang menjadi tanda digitalnya adalah Nomor Induk Kependudukan (NIK). Karena NIK adalah

nomor unik yang hanya dimiliki oleh 1 (satu) entitas.

SFLASH muncul sebagai salah satu skema penandaan digital yang direkomendasikan oleh konsorsium Eropa, NESSIE (New European Schemes for Signature, Integrity and Encryption) untuk penggunaan pada smart-card (NESSIE 2003). SFLASH didesain untuk aplikasi di mana biaya dari algoritme klasik (RSA, DSA) sulit untuk diimplementasikan. Karena algoritme tersebut terlalu lambat dan/atau ukuran dari tanda terlalu besar. SFLASH merupakan skema penandaan yang sangat cepat, baik dalam proses pembuatan tanda maupun dalam proses verifikasi tanda (Courtois et al. 2003).

SFLASH versi 3 (SFLASHv3) dibuat berdasarkan kekhawatiran bahwa SFLASH versi 2 (SFLASHv2) telah berhasil dirusak, walaupun hal ini dapat dibantah oleh penelitian yang dilakukan oleh Chen (2004). SFLASHv2 tetap direkomendasikan sebagai skema penandaan yang aman dan sangat cepat, baik dalam proses pembuatan tanda maupun dalam proses verifikasi tanda.

Tujuan

Tujuan dari penelitian ini adalah:

1. Me-review penelitian yang dilakukan oleh Courtois et al. (2003), tentang SFLASHv3 sebagai skema penandaan digital.

2. Mendeskripsikan skema penandaan digital SFLASHv3 sebagai salah satu skema penandaan yang direkomendasikan oleh konsorsium Eropa NESSIE, sehingga didapatkan spesifikasi/parameter-parameter yang dibutuhkan untuk membangun skema SFLASHv3 secara keseluruhan.

3. Mendefinisikan kebutuhan algoritme untuk membangun skema penandaan digital SFLASHv3, baik dalam proses penandaan pesan maupun proses verifikasi tanda.

4. Mengimplementasikan skema penandaan digital SFLASHv3 ke dalam suatu program komputer.

Ruang Lingkup Penelitian

Adapun ruang lingkup penelitian ini dibatasi pada:

(10)

2 2. Penelitian ini tidak membandingkan

algoritme penandaan digital SFLASHv3 dengan algoritme penandaan digital lainnya.

3. Penelitian ini tidak membandingkan algoritme penandaan digital SFLASH versi 3 dengan SFLASH versi sebelumnya. 4. Tidak untuk diimplementasikan secara langsung kepada mesin pengolah kecil (smart card).

5. Pengujian dari hasil implementasi SFLASHv3 ke dalam program komputer dilakukan menggunakan objek kajian berupa file dengan format plain text (.txt).

TINJAUAN PUSTAKA

Penandaan Digital

Primitif kriptografi yang menjadi landasan di dalam autentikasi, autorisasi, dan non-repudiasi adalah penandaan digital (digital signature). Tujuan dari penandaan digital adalah memberikan suatu alat yang digunakan oleh entitas untuk mengikat identitasnya menjadi satu bagian dari informasi (Menezes et al. 1996).

Proses pemberian tanda (signature) pada informasi rahasia yang akan dikirim disebut penandaan (signing), sedangkan proses pemeriksaan apakah tanda tersebut merupakan tanda yang valid disebut verifikasi (verification). Berikut diberikan dekripsi umum dari penandaan digital:

M adalah himpunan pesan yang anggotanya akan diberi tanda.

S adalah himpunan yang anggotanya disebut tanda, dan tanda biasanya berupa bit string dengan panjang tetap.

SA adalah suatu transformasi dari M ke S

yang disebut transformasi penandaan untuk entitas A. Transformasi SA dijaga

kerahasiaannya oleh A dan digunakan untuk memberi tanda pada pesan-pesan dalam M.

VA adalah suatu transformasi dari

himpunan × ke himpunan {T (benar), F (salah)}. VA disebut transformasi

verifikasi untuk semua tanda milik A dan diketahui oleh publik. Transformasi ini digunakan oleh entitas lainnya untuk memeriksa kebenaran tanda dibuat oleh A. Dengan demikian, SA dan VA memberikan

skema (mekanisme) penandaan digital.

Misalkan = { , , } dan =

Untuk menciptakan suatu tanda pada pesan ∈ , maka entitas A sebagai penanda akan melakukan langkah-langkah sebagai berikut:

1. Hitung = ( ),

Ubah ∈ dengan menggunakan transformasi SA hingga didapatkan tanda s

untuk pesan ∈ . untuk prosedur (transformasi) penandaan dan verifikasi:

s adalah tanda yang sah dari A jika dan hanya jika ( , ) = .

 Secara perhitungan tak layak untuk entitas selain A mendapatkan ∈ , untuk sembarang ∈ , sehingga ( , ) =

(Menezes et al. 1996).

Terkait dengan kegunaan penandaan digital secara praktis, berikut diberikan penotasian dan pendefinisian dengan pengertian yang lebih luas untuk skema penandaan digital:

(11)

3 2. Ruang penandaan, dinotasikan MS, adalah

himpunan yang anggota-anggotanya diterapkan transformasi penandaan. Catatan bahwa transformasi penandaan tidak harus secara langsung diterapkan pada himpunan M.

3. Ruang tanda, dinotasikan S, adalah himpunan yang anggota-anggotanya dapat dibubuhkan pada anggota-anggota M. Dengan kata lain anggota S mewakili identitas penanda yang melekat pada pesan.

4. Fungsi redundansi (redundancy function), dinotasikan R, adalah pemetaan 1-1 dari M ke MS.

5. Image dari R, dinotasikan MR.

6. Himpunan indeks untuk penadaan (indexing set for signing), dinotasikan R, adalah himpunan yang digunakan untuk mengidentifikasi transformasi penandaan khusus.

7. Dinotasikan h, adalah fungsi satu-arah (hash function) dengan domain M.

8. Ruang nilai hash, dinotasikan Mh, adalah

imej dari h; ⊆ .

Skema penandaan dijitel diklasifikasikan menjadi dua kelas besar, yaitu:

1. Skema penandaan digital dengan apendiks, skema ini memerlukan pesan asli sebagai input untuk algoritme verifikasi.

2. Skema penandaan digital dengan pemulihan pesan, skema ini tidak memerlukan pesan asli sebagai input untuk algoritme verifikasi. Dalam hal ini, pesan asli dipulihkan dari tanda itu sendiri.

Kunci (Key)

Kunci memiliki peranan sangat penting pada kriptografi modern. Kunci ,biasanya dinotasikan dengan K, merupakan sederatan nilai-nilai dalam jumlah besar. Adapun himpunan nilai-nilai yang mungkin dari sebuah kunci dinamakan ruang kunci. Proses enkripsi dan dekripsi pada kriptografi modern pasti menggunakan kunci, entah kunci simetris ataupun kunci asimetris/publik (Schneier 1996).

Suatu kunci disebut kunci simetris jika untuk setiap pasangan kunci (e, d), yang digunakan pada prosedur enkripsi dan dekripsi maupun prosedur penandaan dan verifikasi tanda, saling hitung. Kunci d bisa dihitung jika kunci e diketahui dan kunci e bisa dihitung jika kunci d diketahui, seperti yang diilustrasikan pada Gambar 2.

Gambar 2 Skema enkripsi dan dekripsi menggunakan kunci simetris (Schneier 1996).

Enkripsi Kunci Publik (Asimetris)

Diberikan skema kriptografi terdiri dari himpunan transformasi enkripsi dan dekripsi

{ ∕ ∈ } dan { ∕ ∈ }. Metode enkripsi disebut dengan skema enkripsi kunci publik jika untuk setiap pasangan kunci (e, d), satu kunci e dibuat tersedia untuk umum (publik) dan kunci pasangannya d dibuat untuk pribadi dan dijaga kerahasiaannya. Skema tersebut dikatakan aman, jika secara perhitungan tak layak menentukan d dari e.

Sebagai ilustrasi bagaimana teknik enkripsi kunci publik bekerja, perhatikan komunikasi antara Alice dan Bob yang diilustrasikan pada Gambar 3.

Gambar 3 Skema enkripsi menggunakan kunci publik (Menezes et al. 1996).

(12)

4

Skema Penandaan Digital dengan Apendiks

Skema penandaan digital dengan apendiks adalah yang paling umum digunakan dalam praktik. Contoh beberapa skema yang menggunakan model ini diantaranya: skema penandaan DSA, ElGamal, dan Schnorr. Prosedur skema tersebut diberikan dalam algoritme berikut (Menezes et al. 1996).

Pembangkitan Kunci

Setiap entitas membuat kunci pribadi yang nantinya akan digunakan untuk menandai pesan (penandaan), dan terkait dengan kunci publik yang digunakan entitas lainnya untuk memeriksa tanda (verifikasi). Adapun langkah-langkah pembangkitan kunci adalah sebagai berikut:

1. Setiap entitas A memilih kunci pribadi yang mendefinisikan suatu himpunan transformasi. = { , }∕ ∈ , { , }

dan dikonstruksi sedemikian sehingga ia bisa dihitung tanpa mengetahui kunci pribadi penanda.

3. Kunci publik milik A adalah , kunci pribadi milik A adalah himpunan .

Pembangkitan Tanda dan Verifikasi

Entitas A menciptakan tanda ∈ untuk pesan ∈ , yang kemudian diverifikasi oleh siapapun entitas B.

1. Dalam proses pembangkitan tanda, entitas A seharusnya melakukan langkah-langkah berikut:

a. Memilih suatu unsur ∈ .

b. Menghitung = ℎ( ) dan ∗ =

{ , }( ).

c. Tanda milik A untuk m adalah ∗. Keduanya disiapkan untuk entitas siapapun yang ingin memeriksanya. 2. Dalam proses verifikasi, entitas B

seharusnya melakukan langkah-langkah berikut:

a. Mencari algoritme verifikasi publik autentik milik A.

b. Menghitung = ℎ( ) dan = ( , ∗).

c. Tanda diterima jika dan hanya jika

= , tanda ditolak jika = . Sifat-sifat yang diperlukan oleh transformasi penandaan dan verifikasi adalah:

 Untuk setiap ∈ , seharusnya efisien untuk menghitung { , };

 Untuk menghitung seharusnya efisien;

 Untuk siapapun entitas selain A, seharusnya secara perhitungan tak-layak mendapatkan ∈ dan ∗∈ . Sehingga

( , ∗) = , dimana = ℎ( ). Pada umumnya skema penandaan digital dengan apendiks diterapkan pada pesan-pesan panjangnya sembarang. Dengan demikian, fungsi satu-arah (hash), h, pada algoritme pembangkitan tanda dan verifikasi biasanya dipilih dari jenis fungsi hash tahan tumbukan.

Fungsi Hash

Fungsi hash merupakan salah satu bentuk primitif kriptografi. Menurut Menezes et al. (1996) fungsi hash adalah fungsi yang secara komputasi efsien memetakan bitsring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai hash (hash-value). Sedangkan menurut Schneier (1996) fungsi hash merupakan suatu fungsi, matematika atau selainnya, yang mengubah bitstring masukkan dengan panjang sembarang (pre-image) menjadi bitstrnig keluaran dengan panjang tetap (biasanya lebih kecil) yang disebut nilai hash (hash value). Seringkali disebut sebagai fungsi hash satu-arah atau one- way hash function.

Fungsi hash adalah fungsi h yang minimal mempunyai 2 (dua) sifat berikut:

1. Kompresi (compression): h memetakan masukkan x dengan sembarang panjang bitstring, menjadi keluaran h(x) dengan panjang tetap n.

2. Kemudahan komputasi (ease of computation): diketahui h dan suatu masukkan x, h(x) mudah dihitung.

SHA-1

(13)

5 et al. 1996). Oleh National Security Agency

(NSA), SHA-1 dinyatakan sebagai standar fungsi hash satu-arah (one-way hash function).

Algoritme SHA-1 menerima masukkan berupa pesan dengan ukuran maksimum 264 bit (2.147.483.648 GB), dan menghasilkan keluaran berupa message digest dengan panjang 160 bit. Langkah-langkah pembuatan message digest pada SHA-1, yaitu:

1. Penambahan bit-bit pengganjal (padding bits).

2. Penambahan nilai panjang pesan semula. 3. Inisialisasi penyangga (buffer).

4. Pengolahan pesan dalam blok berukuran 512 bit.

SHA-1 membutuhkan 5 (lima) buah buffer yang masing-masing berukuran 32 bit. Total panjang buffer adalah 5 × 32 = 160 bit. Kelima buffer ini diberi nama A, B, C, D, dan E. Setiap buffer diinisialisasi dengan nilai-nilai (dalam notasi heksadesimal) berikut:

 A = 67452301

 B = EFCDAB89

 C = 98BADCFE

 D = 10325476

 E = C3D2E1F0

Proses SHA-1 terdiri dari 80 buah putaran, Masing-masing putaran menggunakan bilangan penambah Kt, yaitu:

 Putaran 0 ≤ t ≤ 19 Kt = 5A827999t

 Putaran 20 ≤ t ≤ 39 Kt = 6ED9EBA1

 Putaran 40 ≤ t ≤ 59 Kt = 8F1BBCDC

 Putaran 60 ≤ t ≤ 79 Kt = CA62C1D6

Metode Black Box

Pengujian Black box adalah suatu pendekatan untuk melakukan pengujian yang berdasarkan dari program atau komponennya. Pengujian menggunakan metode Black box untuk sebuah sistem, hanya dapat ditentukan dengan cara mempelajari input dan output yang berhubungan. Metode Black box disebut juga “functional testing” hal ini disebabkan penguji hanya memperhatikan kegunaan perangkat lunak, bukan implementasi perangkat lunak (Sommerville 2001).

Gambar 4 menjelaskan model pengujian sebuah sistem yang diasumsikan menggunakan metode Black box. Penguji memberikan nilai input ke dalam sistem dan memeriksa kecocokan keluaran. Jika output tidak seperti yang telah diprediksi

sebelumnya, berarti pengujian telah berhasil mendeteksi masalah yang ada di perangkat lunak.

Gambar 4 Ilustrasi pengujian menggunakan metode Black box (Sommerville 2001).

METODE PENELITIAN

Adapun langkah-langkah yang dilakukan dalam penelitian ini diilustrasikan pada Gambar 5.

Gambar 5 Langkah-langkah penelitian.

Studi Pustaka

(14)

6 yang terkait dengan penelitian yang

dilakukan. Khususnya, acuan pustaka yang terkait dengan penandaan digital (digital signature).

Penentuan Spesifikasi Pengujian

Uji hasil implementasi SFLASH-v3 dilakukan dengan menggunakan objek kajian berupa file dengan format plain text (.txt) sebanyak 10 buah file, dengan spesifikasi file seperti yang disajkan pada Tabel 1. Adapun parameter yang diperhatikan pada pengujian ini adalah waktu eksekusi dari algoritme SFLASHv3 terhadap tiap-tiap file uji.

Tabel 1. Spesifikasi file pengujian

Nama File Ukuran File

(.txt) (Bytes)

Tahapan ini dilakukan untuk mendeskripsikan spesifikasi detail dari skema penandaan digital SFLASH-v3 mulai dari:

 Parameter-parameter yang membangun skema penandaan digital SFLASHv3.

 Notasi-notasi dan variabel-variabel yang digunakan.

 Prosedur-prosedur yang terlibat didalamnya.

 Serta algoritme-algoritme pendukung untuk membangun skema penandaan digital SFLASHv3.

Perancangan Algoritme SFLASH-v3

Setelah pendeskripsian spesifikasi SFLASHv3 selesai dilakukan, maka pada tahapan ini akan dirinci dan didefinisikan fungsi-fungsi yang dibutuhkan untuk membangun skema penandaan digital SFLASHv3 yang terkait dengan:

 Algoritme Penandaan (Signing).

 Algoritme Verifkasi (Verification). Pada tahapan ini juga dijelaskan, baik secara konsep maupun detail, fungsi-fungsi yang telah didefinisikan. Untuk selanjutnya fungsi-fungsi tersebut direpresentasikan ke dalam bentuk algoritme-algoritme yang sesuai dengan kebutuhan terhadap pembangunan algoritme SFLASHv3 secara keseluruhan.

Implementasi Algoritme SFLASH-v3

Setelah tahap perancangan algoritme selesai, maka pada tahapan ini algoritme-algoritme tersebut akan diimplementasikan ke dalam sebuah bahasa pemrograman. Adapun lingkungan penelitian, mencakup perangkat keras dan perangkat lunak, yang digunakan untuk implementasi adalah sebagai berikut: a. Perangkat keras berupa personal computer

(PC) dengan spesifikasi:

Processor: AMD Phenom II 720 BE @2.8 GHz

Memory: DDR2 2 GB PC6400

Harddisk: IDE 80 GB

 Monitor, mouse, dan keyboard b. Perangkat lunak yang digunakan:

 Sistem operasi Windows XP Professional SP3

 Bahasa Pemrograman C dan Compiler Dev-C++ 4.9.9.2

Pengujian Hasil Implementasi

Pengujian dilakukan dengan menggunakan metode Black Box dan dibagi menjadi 3 (tiga), yaitu:

1. Pengujian untuk mengetahui waktu menandakan sebuah pesan, menggunakan algoritme penandaan (signing) SFLASHv3, untuk masing-masing file. 2. Pengujian untuk mengetahui waktu

memverifikasi tanda, menggunakan algoritme verifikasi (verification) SFLASHv3, untuk masing-masing file. 3. Pengujian untuk mengetahui waktu

hashing sebuah file pada proses penandaan pesan, menggunakan algoritme hash SHA-1, untuk masing-masing file.

(15)

7 dibahas pada tahap “Implementasi Algoritme

SFLASHv3”.

HASIL DAN PEMBAHASAN

Pada bab ini akan dibahas tentang 4 (empat) hal, yaitu:

1. Pendeskripsian spesifikasi dari skema penandaan digital SFLASHv3. Konsep yang dipaparkan pada bagian ini didasari oleh penelitian dengan judul “SFLASHv3, a fast asymmetric signature scheme”, oleh Nicolas T. Courtois, Louis Goubin, dan Jacques Patarin (2003).

2. Fungsi dan algoritme yang terlibat dalam pembangunan algoritme SFLASHv3 secara keseluruhan.

3. Implementasi algoritme penandaan pesan dan verifikasi pesan.

4. Pengujian hasil implementasi algoritme SFLASHv3.

SFLASH Versi 3

SFLASHv3 menerapkan skema penandaan digital dengan apendiks untuk membangun algoritme penandaan pesan dan verifikasi tandanya. Bagian ini akan mendeskripsikan SFLASHv3 sebagai sebuah skema penandaan digital.

Notasi Pada SFLASHv3

Dalam penelitian ini, || merupakan notasi operasi penggabungan (concatenation). Jika λ = (λ , . . . ,λ ) dan µ = ( µ , . . . , µ )

merupakan dua buah string, maka λ||μ juga merupakan string yang didefinisikan pada Persamaan 1.

λ| |µ = (λ , . . . ,λ , µ , . . . , µ ) ( 1)

Jika terdapat bit string λ = (λ , . . . ,λ )

dan dua buah integer r dan s dimana 0≤ ≤

≤ , maka [ ] merupakan bit string yang didefiniskan pada Persamaan 2.

[ ] = (λ ,λ . . . ,λ ,λ ) ( 2)

Parameter Algoritme

Algoritme SFLASHv3 menggunakan 2 (dua) finite fields.

1. Yang pertama adalah = , yang didefinisikan dengan = [ ]∕ ( + + 1), yaitu himpunan semua polinomial dengan koefisien biner

berderajat paling besar 6 (enam). Lalu dinotasikan π yang merupakan fungsi bijeksi antara {0,1} dan , yang mengubah format polinomial ke format biner seperti didefinisikan pada Persamaan 3. Dimana {0,1} merupakan himpunan

Misalkan terdapat sebuah persamaan polinomial anggota K:

+ + ,

maka persamaan polinomial tersebut dapat ditransformasikan oleh π sebagai sebuah bitstring dengan panjang 7 bit anggota

{0,1} menjadi 1011000., ( + + )1011000. Sementara

merupakan fungsi yang mengubah format biner ke format polinomial, misalkan

( 1011000) → + + .

{0,1} = {0000000∙0000001

∙0000010∙ ⋯

∙1111111} (4)

Adapun aturan aritmatik (algoritme) yang terlibat dalam K akan dibahas pada bagian “Metode Komputasi SFLASHv3” selanjutnya.

2. Yang kedua adalah ℒ= [ ]∕

( + + + + 1), yaitu

himpunan semua polinomial dengan koefesien anggota-anggota {0,1}

berderajat paling banyak 66. Contoh anggota ℒ:

( 0110110) + ( 1000100) + ⋯ + ( 1101100) + ( 0000111)

(16)

8

Adapun aturan aritmatik (algoritme) yang terlibat dalam ℒ akan dibahas pada bagian “Metode Komputasi SFLASHv3” selanjutnya.

Algoritme SFLASHv3 menggunakan 2 (dua) transformasi affine, yaitu: s dan t. Transformasi s merupakan fungsi yang memetakan ke , terdiri atas bagian linier dan bagian konstan dengan konstanta dalam . Oleh karena itu, transformasi s juga dapat dituliskan menjadi ( ) = ( ) + dimana x

dimana x merupakan anggota .

Parameter Rahasia

Algoritme SFLASHv3 menggunakan beberapa parameter rahasia, diantaranya: 1. Fungsi bijeksi linier rahasia dari ke

yang direpresentasikan sebagai matriks persegi 67 × 67 dengan anggota anggota K, yang dinotasikan sebagai matriks (“L” berarti “linier”). direpresentasikan sebagai vektor kolom berukuran 67 × 1 (“C” berarti “konstan”).

2. Sebuah vektor lain dalam yang direpresentasikan sebagai vektor kolom berukuran 67 × 1.

Parameter Publik

Paramter publik pada SFLASHv3 yang terdapat dalam fungsi G memetakan ke

didefinisikan pada Persamaan 6.

( )

= ( )

(6)

Subskrip 0→391 pada Persamaan 6 memungkinkan untuk memotong 67 elemen menjadi 56 elemen (karena 56 × 7 = 392). Sementara merupakan fungsi yang memetakan ℒ ke ℒ yang didefinisikan pada Persamaan 7.

∀ ∈ ℒ, ( ) = ( 7)

Pembangkitan Kunci

Melalui transformasi , membangkitkan sebuah elemen anggota sama dengan membangkitkan sebuah string dengan panjang 7 (tujuh) bit. Untuk selanjutnya, proses pembangkitan sebuah elemen anggota disebut:

7 _ _

String dengan panjang 7 bit ini didapatkan dengan memanggil fungsi acak yang disediakan oleh bahasa pemrograman C/C++ sebanyak 7 kali. Pemanggilan fungsi acak pertama untuk mendapatkan bit pertama dari string, pemanggilan fungsi acak kedua untuk mendapatkan bit kedua dari string, dan seterusnya hingga didapatkan bit ketujuh dari string.

Dalam proses pembangkitan tanda dan verifikasi, SFLASHv3 membutuhkan 3 (tiga) kunci, yaitu :

Adapun langkah-langkah pembangkitan masing-masing kunci tersebut adalah sebagai berikut:

(17)

9 membangkitkan matriks dengan mengulang fungsi acak, sehingga didapatkan matriks berukuran 67 × 67

yang invertible. Dengan cara menerapkan algoritme berikut:

for i = 0 to 66 do for j = 0 to 66 do

SL[ i, j] = 7bit _random _str ing.

b. Metode “Dekomposisi LU”

Penggunaan metode “Dekomposisi LU” untuk membangkitkan matriks dilakukan dengan cara membangkitkan terlebih dahulu matriks segitiga bawah dan matriks segitiga atas berukuran

67 × 67 anggota . Adapun pembangkitan matriks dan dilakukan dengan cara

for i = 0 to 66 do for j = 0 to 66 do

if i < j

US[ i, j] = 7bit _random_str ing. LS[ i, j] = 0.

if i < j

LS[ i, j] = 7bit _random_str ing. US[ i, j] = 0. cara mengalikan matriks segitiga bawah dan matriks segitiga atas yang telah dibangkitkan, seperti pada Persamaan 8.

= × ( 8)

2. Pembangkitan vektor kolom dan dan dibangkitkan dengan menggunakan fungsi acak untuk mendapatkan 67 elemen acak baru anggota (dari baris pertama hingga terakhir vektor kolom). Tiap elemen anggota didapatkan dari 7 _ _ . 3. Pembangkitan ∆

Terakhir, pembangkitan ∆ dilakukan dengan cara memanggil fungsi acak sebanyak 80 kali untuk mendapatkan string acak dengan panjang 80 bit. String

acak ini nantinya akan digunakan pada proses pembangkitan tanda.

Penandaan Pesan

Pada bagian ini akan dideskripsikan bagaimana membangkitkan sebuah tanda terhadap pesan M dengan menggunakan algoritme SFLASHv3. Tanda S dari pesan M didapatkan dengan menerapkan operasi-operasi berikut secara berurutan. Bagan alir proses penandaan pesan menggunakan algoritme SFLASHv3 dapat dilihat pada Lampiran 1.

1. Definisikan , , , masing-masing adalah string sepanjang 160 bit seperti yang dirumuskan pada Persamaan 9, 10, 11, dan 12. 11, dan 12 kemudian disatukan. Penyatuan dilakukan dengan cara mengambil semua string pada M1 sepanjang 160 bit, semua

string pada M2 sepanjang 160 bit, dan

string sepanjang 72 bit dari M3 yang

disimpan ke dalam V. Sehingga, panjang total string V adalah 392 bit, seperti yang dirumuskan pada Persamaan 13.

= [ ] ∥[ ]

∥[ ] (13)

(18)

10 menjadi 56 bagian sehingga didapatkan

sebuah vektor ∈ yang masing-masing unsurnya mempunyai panjang 7 bit.

= ( [ ] )⋅ ( [ ] )⋅…

⋅ ( [ ] ) (15)

5. Definisikan ∈ seperti yang dirumuskan pada Persamaan 16. R didapatkan dari W yang dibagi menjadi 11 bagian sehingga didapatkan sebuah vektor ∈ yang masing-masing unsurnya mempunyai panjang 7 bit

= ( [ ] )⋅ ( [ ] )

⋅…

⋅ ( [ ] ) (16)

6. Definisikan ∈ ℒ seperti yang dirumuskan pada Persamaan 17. B merupakan hasil penerapan transformasi terhadap penggabungan antara Y dan R. Misalkan hasil penggabungan antara Y dan R dinotasikan dengan ∈ , maka penerapan transformasi (yang terdiri dari bagian linier dan bagian konstan ) terhadap N akan menjadi =

( + ). N ditambahkan terlebih dahulu dengan vektor (penjumlahan vektor), kemudian dikalikan dengan matriks (perkalian matriks dengan vektor).

= ( ∥ ) ( 17)

7. Definisikan ∈ ℒ seperti yang dirumuskan Persamaan 18. A didapatkan dari pengoperasian B menggunakan fungsi

. Adapun komputasi dari fungsi akan dijelaskan pada bagian “Komputasi

= ( ) Dan = ( )”.

= ( ) ( 18)

F adalah fungsi dari ℒ ke ℒ seperti yang dirumuskan pada Persamaan 7.

8. Definisikan = ( , … , )∈

seperti yang dirumuskan pada Persamaan 19. X merupakan hasil penerapan transformasi terhadap A. Sama seperti transformasi , transformasi juga terdiri dari bagian linier dan bagian konstan . Oleh karena itu, transformasi terhadap A akan menjadi =

( + ). A ditambahkan dengan vektor (penjumlahan vektor), kemudian

dikalikan dengan matriks (perkalian matriks dengan vektor).

Pada bagian ini akan dideskripsikan bagaimana memverifikasi sebuah tanda S dari pesan M dengan menggunakan algoritme SFLASHv3. Diberikan pesan M dan tanda S, algoritme berikut digunakan untuk menentukan apakah S merupakan tanda yang benar untuk pesan M atau tidak.

Bagan alir verifikasi tanda dapat dilihat pada Lampiran 4.

1. Definisikan , , , masing-masing adalah string sepanjang 160 bit seperti yang dirumuskan pada Persamaan 9, 10, 11, dan 12.

2. Definisikan V yang merupakan string dengan panjang 392 bit seperti yang dirumuskan pada Persamaan 13.

3. Definisikan ∈ seperti yang dirumuskan pada Persamaan 15.

4. Definisikan ′ ∈ seperti yang dirumuskan pada Persamaan 21. ′ didapatkan dari signature S yang dibagi menjadi 56 bagian sehingga didapatkan sebuah vektor ∈ yang masing-masing unsurnya mempunyai panjang 7 bit.

′= ( [ ] )⋅ ( [ ] )

⋅…

⋅ ( [ ] ) (21)

Setelah didapatkan Y dan Y’, keduanya akan dibandingkan. Jika Y = Y’, maka tanda S diterima. Jika selainnya, maka tanda S ditolak.

Metode Komputasi SFLASHv3

(19)

11 Seperti yang telah dijelaskan sebelumnya,

SFLASHv3 menggunakan 2 (dua) finite fields, yaitu yang dirumuskan pada Persamaan 3 dan ℒ yang dirumuskan pada Persamaan 4. Dari penjelasan algoritme penandaan pesan dan verifikasi tanda diketahui bahwa terdapat beberapa fungsi yang diperlukan, baik pada maupun pada ℒ, untuk membangun algoritme tersebut. Fungsi-fungsi pada untuk selanjutnya akan disebut dengan

Aritmatik_K, sementara fungsi-fungsi pada ℒ untuk selanjutnya akan disebut dengan

Aritmatik_L.

Fungsi-fungsi yang dibutuhkan pada Aritmatik_K, diantaranya:

1. Fungsi Penjumlahan 2. Fungsi Perkalian 3. Fungsi Kuadrat 4. Fungsi Invers

Sementara fungsi-fungsi yang dibutuhkan pada Aritmatik_L, diantaranya:

1. Fungsi Penjumlahan 2. Fungsi Perkalian 3. Fungsi Kuadrat

Gambar 6 Fungsi- fungsi pada Aritmatik_K dan Aritmatik_L.

Fungsi-fungsi pada Aritmatik_K selanjutnya akan digunakan untuk membangun fungsi-fungsi pada Aritmatik_L. Hal ini karena unsur-unsur pada ℒ merupakan anggota dari , seperti yang dirumuskan pada Persamaan 5. Adapun hubungan antara Aritmatik_K dan Aritmatik_L dapat diilustrasikan pada Gambar 6.

Aritmatik_K

Pada bagian ini akan dijelaskan detail dari fungsi-fungsi yang terdapat pada Aritmatik_K, diantaranya:

1. Fungsi Penjumlahan 2. Fungsi Perkalian 3. Fungsi Kuadrat

4. Fungsi Invers/Pembagian

Fungsi Penjumlahan Pada Aritmatik_K

Seperti yang telah dijelaskan pada Persamaan 3, anggota K pada awalnya dituliskan dengan menggunakan persamaan polinomial. Maka, penjumlahan pada Aritmatik_K pun merupakan penjumlahan 2 (dua) buah persamaan polinomial.

Fungsi penjumlahan pada Aritmatik_K secara konsep mirip dengan penjumlahan pada bilangan riil, yaitu menjumlahkan tiap-tiap anggota dari kedua bilangan yang berderajat sama. Hanya saja dalam Aritmatik_K, penjumlahan tidak dilakukan dengan menggunakan operator penjumlahan biasa “+”, melainkan menggunakan operator XOR “⨁”.

Misalkan terdapat 2 (dua) buah persamaan

polinomial, ( ) = + + dan

( ) = + + + , maka ( )⊕ ( ) adalah:

Namun, ketiga persamaan polinomial tersebut juga dapat dinyatakan sebagai 3 (tiga) buah string dengan panjang 7 bit,

( ) = + + = 1011000 ( ) = + + + = 0110110 ( )⊕ ( ) = + + + +

= 1101110

(20)

12 panjang 7 bit, seperti yang diilustrasikan pada

Gambar 7.

Gambar 7 Ilustrasi penjumlahan dalam K. Algoritme berikut digunakan untuk membangun fungsi penjumlahan pada Aritmatik_K.

Fungsi penjumlahan pada Aritmatik_K ini memiliki komputasi yang cepat, karena praktis hanya melakukan operasi XOR terhadap tiap-tiap bit.

Fungsi Perkalian Pada Aritmatik_K

Fungsi perkalian pada Aritmatik_K melibatkan tidak hanya operasi perkalian, tetapi juga operasi modulo, seperti yang dirumuskan pada Persamaan 3. Sama seperti fungsi penjumlahan pada Aritmatik_K, fungsi perkalian pada Aritmatik_K juga merupakan perkalian antara 2 (dua) persamaan

2. Reduksi menggunakan nilai modulo ( )

Namun, ketiga persamaan polinomial tersebut juga dapat dinyatakan sebagai 3(tiga) buah string dengan panjang 7 bit,

( ) = + + 1 = 0100101 ( ) = + + 1 = 0001101 ( ) . ( ) ( ) = + +

= 0011100

Pada penelitian ini digunakan 2 (dua) buah algoritme untuk membangun fungsi perkalian pada Aritmatik_K, yaitu: algoritme “Euclidean” dan algoritme “Shift Register”. Tahap-tahap perkalian pada Aritmatik_K yang dijelaskan sebelumnya merupakan penjabaran dari algoritme “Euclidean”, yang terdiri atas: tahap perkalian bebas dan reduksi hasil perkalian bebas tersebut. Algoritme “Shift Register” secara konsep sama dengan algoritme “Euclidean”, hanya saja reduksi dilakukan secara langsung tanpa menuggu hasil akhir perkalian bebas. Hal ini menyebabkan algoritme “Shift Register” secara komputasi lebih cepat dari algoritme “Euclidean”.

Karena alasan kecepatan tersebut, penelitian ini mengadopsi algoritme “Right-to-left shift-and-add” dalam Hankerson (2003) untuk kemudian disesuaikan dengan kebutuhan fungsi perkalian pada Aritmatik_K. Sehingga didapatkan algoritme perkalian untuk Aritmatik_K, sebagai berikut:

(21)

13 c←c⊕b.

r etur n c.

Fungsi Kuadrat Pada Aritmatik_K

Fungsi kuadrat pada Aritmatik_K mempunyai sedikit keistimewaan dari 2 (dua) fungsi yang telah dijelaskan sebelumnya, yaitu: penjumlahan dan perkalian pada Aritmatik_K. Pada dasarnya, hasil pengkuadratan dari sebuah nilai N merupakan perkalian antara N dengan bilangan itu sendiri. Atau dapat dituliskan dengan, = × . Sehingga, fungsi kuadrat pada Aritmatik_K juga dapat dibentuk dari fungsi perkalian pada Aritmatik_K yang telah didefinisikan sebelumnya.

Misalkan terdapat sebuah persamaan polinomial ( ) = + + 1, maka

( ) ( ) dapat dihitung dengan menerapkan fungsi perkalian pada Aritmatik_K ( )⋅ ( ) ( ). Namun jika diperhatikan, pada tahap pertama dari fungsi perkalian pada Aritmatik_K yaitu

( )⋅ ( ) akan didapatkan hasil perkalian

Jika ( ) dan ( )⋅ ( )

direpresentasikan ke dalam 2 (dua) buah string ∈ , maka akan didapatkan

( ) = + + 1 = 0100101 ( )∙ ( ) = + + 1

= 10000010001

Hasil dari ( ) pada dasarnya hanya membutuhkan operasi penyisipan bit 0 ke dalam ( ) yang notabene operasi penyisipan akan lebih cepat daripada operasi perkalian. Hal ini sesuai dengan sifat kuadrat terhadap polinomial. Jika terdapat ( + ) ∈ ℝ, maka akan menghasilkan + 2 + . Namun jika x dan y dianggap sebagai bilangan biner, maka ( + ) ∈{0,1} akan menghasilkan

+ 0 + .

Fungsi kuadrat Aritmatik_K juga melibatkan operasi modulo + + 1. Ini berarti bahwa setiap polinomial berderajat lebih besar dari 7 akan mengalami reduksi

dengan menggunakan nilai modulo. Maka dari hasil ( ) akan mengalami reduksi. dengan menggunakan nilai modulo. Gambar 8 akan mengilustrasikan cara kerja algoritme kuadrat pada Aritmatik_K.

Berikut ini adalah algoritme yang dapat dibangun untuk menghitung hasil kuadrat pada Aritmatik_K, sesuai dengan yang telah didefinisikan sebelumnya.

Gambar 8 Contoh cara kerja algoritme kuadrat pada Aritmatik_K.

Fungsi Invers Pada Aritmatik_K

(22)

14 pada Aritmatik_K pun demikian. Misalkan

terdapat string ∈ ( ), maka jika ( )∙ ( ) ( ) = 1 (1 disini maksudnya adalah sebuah string ∈ , yaitu 0000001).

Penelitian ini mengadopsi algoritme “Binary Inversion” dalam Hankerson (2003) untuk kemudian disesuaikan dengan kebutuhan fungsi invers pada Aritmatik_K. Sehingga didapatkan algoritme invers untuk Aritmatik_K, sebagai berikut:

Algoritme invers dari Aritmatik_K ini tidak hanya dapat digunakan untuk menghasilkan keluaran berupa invers dari sebuah string ∈ , tetapi juga dapat digunakan untuk menghasilkan sebuah keluaran berupa hasil pembagian antara 2 (dua) buah string ∈ . Karena pada dasarnya operasi pembagian antara 2 (dua) buah bilangan ∕ adalah operasi perkalian antara

∙ .

Adapun perubahan yang dilakukan untuk mengubah fungsi invers menjadi fungsi pembagian adalah hanya pada operasi assignment awal terhadap , operasi

Pada bagian ini akan dijelaskan detail dari fungsi-fungsi yang terdapat pada Aritmatik_L, diantaranya:

1. Fungsi Penjumlahan 2. Fungsi Perkalian 3. Fungsi Kuadrat

Aritmatik_L adalah aritmatik yang berbasis pada Aritmatik_K. Dengan kata lain, algoritme-algoritme yang ada pada Aritmatik_K, yang telah dijelaskan sebelumnya, digunakan kembali untuk membangun algoritme-algoritme pada Aritmatik_L.

Fungsi Penjumlahan Pada Aritmatik_L

Seperti yang telah dijelaskan sebelumnya, anggota adalah string/vektor dengan panjang 67 yang unsur-unsurnya di dalam

{0,1} . Oleh karena itu, fungsi penjumlahan pada Aritmatik_L sama dengan memanggil fungsi penjumlahan pada Aritmatik_K sebanyak 67 kali.

Algoritme berikut digunakan untuk membangun fungsi penjumlahan pada Aritmatik_L.

Fungsi Perkalian Pada Aritmatik_L

(23)

15

Perlu diperhatikan bahwa operasi penjumlahan dan perkalian dalam algoritme ini adalah menggunakan fungsi penjumlahan dan perkalian pada Aritmatik_K yang telah dijelaskan sebelumnya. Karena unsur-unsur dalam merupakan anggota-anggota

{0,1} .

Fungsi Kuadrat Pada Aritmatik_L

Secara konsep, fungsi kuadrat pada Aritmatik_L pun sama dengan fungsi kuadrat pada Aritmatik_K, yaitu melakukan penyisipan dengan 0 dan reduksi. Hanya saja terdapat operasi tambahan dalam fungsi kuadrat pada Aritmatik_L, yaitu mengkuadratkan unsure-unsur ℒ ∈ menggunakan fungsi kuadrat pada Aritmatik_K. Sehingga langkah-langkah pengkuadrat pada Aritmatik_L menjadi: 1. Kuadratkan tiap-tiap elemenℒ ∈ , 2. Sisipkan dengan vektor 0 ∈ , 3. Lakukan reduksi.

Sehingga didapatkan algoritme kuadrat untuk Aritmatik_L, sebagai berikut:

Masukan: ∈

Fungsi kuadrat pada Aritmatik_L erat kaitannya dengan operasi eksponensial pada SFLASHv3, seperti yang dirumuskan pada Persamaan 7. Pada operasi eksponensial dibutuhkan banyak operasi kuadrat, hal ini berhubungan dengan metode yang digunakan untuk menghitung nilai eksponensial pada SFLASHv3. Adapun metode untuk menghitung nilai eksponensial akan dijelaskan pada bagian “Komputasi = ( ) Dan

= ( )”.

Komputasi = ( ) Dan = ( )

F adalah fungsi dari ℒ ke ℒ yang didefinisikan pada Persamaan 7. Oleh karena itu, = ( ) dapat didefinisikan ke dalam

Untuk menghitung nilai hasil pemangkatan dengan n dan h yang merupakan pangkat yang sangat besar, salah satu cara yang dapat digunakan adalah dengan metode “square and multiply”. Metode ini menerapkan operasi perkalian dan opearsi pengkuadratan dalam aritmatik ℒ untuk mendapatkan nilai A. 1. Menghitung nilai =

Langkah-langkah untuk menghitung nilai

= , yaitu:

a. Ubah nilai n menjadi representasi biner. Representasi biner dari nilai n dapat dilihat pada Lampiran 2.

b. Jika dilihat pada Persamaan 6, representasi biner dari pangkat besar n mempunyai panjang 232 yang didapatkan dari perhitungan:

128 + 1 = ( 2 ) + 2 = 2 + 2 .

Dengan begitu dapat diketahui bahwa representasi biner dari n mempunyai panjang 232, yang diawali dan diakhiri dengan bit 1 (bit lain bernilai 0). c. Dengan menggunakan metode “square

and multiply” maka algoritme yang dapat dibangun untuk menghitung nilai

(24)

16

Langkah-langkah untuk menghitung nilai

= secara konsep sama dengan langkah-langkah menghitung = . Adapun yang membedakannya adalah representasi nilai biner dari h dan algoritme untuk menghitung = yaitu:

a. Ubah nilai h menjadi representasi biner. Representasi biner dari nilai h dapat dilihat pada Lampiran 3.

b. Jika dilihat pada Lampiran 3, representasi biner dari pangkat besar n mempunyai panjang 469. Dengan menggunakan metode “square and multiply” maka algoritme yang dapat dibangun untuk menghitung nilai

= adalah sebagai berikut: G←B;

Perlu diperhatikan bahwa operasi perkalian dan kuadrat dalam algoritme ini adalah menggunakan fungsi perkalian dan kuadrat pada Aritmatik_L. Pada kedua algoritme tersebut terlihat bahwa fungsi yang paling sering digunakan adalah fungsi kuadrat daripada fungsi perkalian pada Aritmatik_L. Dengan demikian, jika secara komputasi fungsi kuadrat lebih cepat dari fungsi perkalian, maka operasi eksponensial diharapkan dapat dilakukan secara cepat pula dengan menggunakan fungsi kuadrat daripada dengan menggunakan fungsi perkalian.

Pengujian Hasil Implementasi

Pengujian pertama dilakukan untuk mengetahui waktu yang dibutuhkan algoritme SFLASHv3 untuk melakukan penandaan

terhadap sebuah pesan. Pengujian terhadap 10 (sepuluh) buah file teks ini dilakukan sebanyak 3 kali perulangan untuk masing-masing file. Hasil lengkap dari pengujian hasil implementasi SFLASHv3 untuk penandaan pesan dapat dilihat pada Lampiran 5.

Tabel 2 menunjukkan rata-rata waktu yang dibutuhkan oleh SFLASHv3 hasil implementasi untuk melakukan penandaan terhadap file uji. Ilustrasi peningkatan waktu penandaan pesan terhadap ukuran file teks dapat dilihat pada Gambar 9.

Tabel 2. Waktu penandaan pesan

Nama File Penandaan

Gambar 9 Ilustrasi peningkatan waktu penandaan pesan terhadap ukuran file.

Jika dilihat dari Tabel 2, maka perbedaan waktu penandaan pesan tiap-tiap file uji tidak terlalu signifikan. Bahkan antara file-1 hingga file-9 (166 - 3,386,878 bytes), rata-rata perbedaan waktu penandaan pesan hanya 0,0104 detik.

(25)

17 pengujian hasil implementasi SFLASHv3

untuk verifikasi tanda dapat dilihat pada Lampiran 5.

Tabel 3 menunjukkan rata-rata waktu yang dibutuhkan oleh SFLASHv3 hasil implementasi untuk melakukan verifikasi tanda terhadap file uji. Ilustrasi peningkatan waktu verifikasi pesan terhadap ukuran file teks dapat dilihat pada Gambar 10.

Tabel 3. Waktu verifikasi pesan

Nama File Verifikasi

Gambar 10 Ilustrasi peningkatan waktu verifikasi tanda terhadap ukuran file.

Jika dilihat dari Tabel 3, maka perbedaan waktu verifikasi tanda tiap-tiap file uji tidak terlalu signifikan. Bahkan antara file-1 hingga file-9 (166 - 3,386,878 bytes), rata-rata perbedaan waktu penandaan pesan hanya 0,0111 detik.

Jika dibandingkan antara proses penandaan pesan dan verifikasi tanda, maka dapat dilihat bahwa waktu eksekusi dari verifikasi tanda lebih cepat. Hal ini erat kaitannya dengan komputasi fungsi F, yang telah dibahas pada bagian “Komputasi

= ( ) Dan = ( )”.

Seperti yang telah dijelaskan sebelumnya, algoritme SFLASHv3 melibatkan fungsi hash SHA-1 dalam melakukan penandaan pesan dan verifikasi tanda. Tidak dapat dipungkiri bahwa SHA-1 memainkan peranan penting dalam 2 proses tersebut. Karena dengan penggunaan SHA-1, maka panjang pesan yang diolah baik dalam penandaan pesan maupun verifikasi tanda relatif sama (160 bit). Hal ini juga yang membuat algoritme SFLASHv3 cepat dan waktu yang dibutuhkan untuk penandaan pesan dan verifikasi pesan terhadap 10 (sepuluh) buah file uji tidak berbeda secara signifikan. Karena secara otomatis panjang pesan berapa pun akan dikonversi oleh SHA-1 menjadi 160 bit. Hasil lengkap dari pengujian hasil implementasi SFLASHv3 untuk hashing file dapat dilihat pada Lampiran 5.

Tabel 4 menunjukkan rata-rata waktu yang dibutuhkan oleh SHA-1 untuk melakukan hashing terhadap file uji pada saat proses penandaan pesan. Ilustrasi peningkatan waktu hashing terhadap ukuran file teks pada saat penandaan pesan dapat dilihat pada Gambar 11.

Tabel 4. Waktu hashing pesan

(26)

18 Gambar 11 Ilustrasi peningkatan waktu

hashing pesan terhadap ukuran file.

KESIMPULAN DAN SARAN

Kesimpulan

Dari pembahasan dapat ditarik kesimpulan sebagai berikut:

1. Penelitian ini dapat mendeskripsikan dan mengimplementasikan algoritme SFLASHv3 sebagai skema penandaan digital.

2. Untuk membangun skema SFLASHv3, baik dalam algoritme penandaan pesan maupun dalam algoritme verifikasi tanda, dibutuhkan fungsi-fungsi sebagai berikut:

 Aritmatik_K

3. Algoritme pada Aritmatik_K dibutuhkan untuk membangun algoritme pada Aritmatik_L.

4. Kecepatan pada Aritmatik_K mempengaruhi kecepatan Aritmatik_L. Hal ini terkait dengan kesimpulan nomor 3.

5. Kecepatan komputasi algoritme SFLASHv3 dipengaruhi oleh fungsi hash SHA-1 dan Komputasi = ( ) dan

= ( )

6. Diketahui bahwa proses penandaan membutuhakan waktu yang lebih lama

dari proses verifikasi tanda, terhadap objek kajian berupa file dengan format plain text (.txt). Hal ini terkait dengan kesimpulan nomor 5

Saran

Berikut adalah beberapa saran untuk penelitian lebih lanjut:

1. Penggunaan fungsi acak yang lebih aman secara kriptografi seperti yang disarankan pada penelitian yang menjadi acuan dalam skripsi ini, yaitu Cryptographically Secure Pseudo Random Bit Generator (CSPRBG).

2. Kemungkinan meningkatkan kecepatan untuk menghitung nilai = ( ) pada proses penandaan pesan, dengan memodifikasi algoritme.

3. Penggunaan algoritme-algoritme yang lebih baik untuk membangun metode-metode komputasi pada SFLASHv3. 4. Kemungkinan memodifikasi SFLASHv3

secara mandiri dengan tujuan untuk dibandingkan dengan kemampuan SFLASHv3, baik dari segi kecepatan maupun keamanan.

5. Kemungkinan untuk konstruksi skema penandaan digital yang setipe dengan SFLASHv3.

6. Analisis keamanan dari skema penandaan digital pada SFLASHv3.

DAFTAR PUSTAKA

[NESSIE] New European Schemes for Signature, Integrity and Encryption, Consortium. 2003. Portfolio of recommended cryptographic primitives.

(27)

19 Courtois NT, Goubin L, Patarin J. 2003.

SFLASHv3, a fast asymetric signature scheme. http://eprint.iacr.org/2003/211.pdf

[6 Juli 2009].

Hankerson D, Menezes AJ, Vanstone S. 2004. Guide to Elliptic Curve Cryptography. New York: Springer-Verlag, Inc.

Menezes AJ, Oorschot P van, Vanstone S. 1996. Handbook of Applied Cryptography. CRC Press Inc.

Schneier B. 1996. Applied Cryptography, Second Edition: Protocols, Algorithms, and Source Code in C. New York: John Wiley & Sons, Inc.

(28)
(29)
(30)

22 Lampiran 2. Representasi biner nilai n

int n[232] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};

Lampiran 3. Representasi biner nilai h

(31)
(32)

24 Lampiran 5. Data pengujian hasil implementasi algoritme SFLASHv3

Nama File Ukuran File Waktu Proses Penandaan (Signing) Waktu Proses Verifikasi (Verification) Waktu proses Hashing

(Bytes) (Bytes) (detik) (detik) (detik)

ulangan-1 ulangan-2 ulangan-3 ulangan-1 ulangan-2 ulangan-3 ulangan-1 ulangan-2 ulangan-3

file-1.txt 166 1,1563 1,1563 1,1563 0,0156 0,0156 0,0156 0,0000 0,0000 0,0000

file-2.txt 7.390 1,1563 1,1563 1,1406 0,0156 0,0156 0,0313 0,0000 0,0000 0,0000

file-3.txt 68.619 1,1563 1,1563 1,1563 0,0156 0,0313 0,0156 0,0000 0,0000 0,0000

file-4.txt 141.118 1,1563 1,1563 1,1563 0,0156 0,0156 0,0313 0,0000 0,0000 0,0000

file-5.txt 564.478 1,1719 1,1719 1,1563 0,0313 0,0469 0,0313 0,0156 0,0000 0,0000

file-6.txt 846.718 1,1719 1,1719 1,1719 0,0313 0,0313 0,0313 0,0156 0,0156 0,0156

Gambar

Gambar 1 Transformasi SA dan VA (Menezes et al. 1996).
Gambar 2 Skema enkripsi dan dekripsi
Gambar 4 Ilustrasi pengujian menggunakan metode Black box (Sommerville 2001).
Gambar 6 Fungsi- fungsi pada Aritmatik_K
+6

Referensi

Dokumen terkait

Metode optimasi yang digunakan adalah metode desain faktorial, metode ini bertujuan untuk menentukan konsentrasi Ac-Di-Sol dan PVP K-30 yang tepat dalam

Setelah dilakukan penelitian dengan metode sosio-historis, maka dapat diketahui bahwa di wilayah Sangir sekarang pernah berdiri Kerajaan Alam Jayo Tanah Singiang yang

Berdasarkan hal diatas, pada Tugas Akhir ini telah dirancang dan direalisasikan antena slot waveguide , terdiri dari delapan buah slot yang memiliki orientasi vertikal

Pada kenyataan taraf ini – unitarisme dan isu HAM – para pendiri negara telah mencapai kesepakatan model tindakan komunikatif, karena perjuangan mereka terhadap

21.3 Jaminan Penawaran asli disampaikan melalui pos tercatat/jasa pengiriman kepada Panitia Pengadaan dan sudah harus diterima sebelum batas akhir

Dalam upaya mencapai prestasi kerja karyawan yang tinggi, sangat diperlukan terjalinnya komunikasi yang baik antar unit yang ada dalam perusahaan tersebut, baik komunikasi

Penelitian ini bertujuan untuk meningkatkan pemahaman konsep matematika siswa kelas VII SMP N 5 Satu Atap Purwanegara menggunakan pembelajaran TAI ( Team

Untuk keberhasilan suatu pembangunan pertanian diperlukan beberapa syarat atau pra-kondisi yang untuk tiap-tiap negara atau daerah berbeda-beda. Pra-kondisi ini