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

DESKRIPSI DAN IMPLEMENTASI SFLASH VERSI 3 SEBAGAI SKEMA
PENANDAAN DIGITAL (DIGITAL SIGNATURE SCHEME)

DIMAS CAHYO PURDINANTO

P

G

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2010

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
( ) , because this is related to converting a random
computation of = ( ) and =
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).

Keywords: Cryptography, digital signature, SFLASH, SFLASHv3, message signing, signing
algorithm, verification algorithm, binary function.

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
BOGOR
2010

Judul

Nama
NRP
Program Studi

: Deskripsi dan Implementasi SFLASH Versi 3 sebagai Skema Penandaan
Digital (Digital Signature Scheme)
: Dimas Cahyo Purdinanto
: G64076016
: Ilmu Komputer

Menyetujui
Pembimbing,

Dr. Sugi Guritman

Mengetahui:
Ketua Departemen Ilmu Komputer,

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


Tanggal Lulus:

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.
Penulis pernah melaksanakan Praktik Kerja Lapang (PKL) di South East Asian Ministry of
Education Organization for Biology Tropical (SEAMEO BIOTROP), yang dilaksanakan pada
tanggal 22 Januari 2007 hingga 3 Maret 2007. Sebagai salah satu syarat untuk memperoleh gelar
Ahli Madya pada Program Studi Diploma 3 Informatika Departemen Ilmu Komputer.

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

Dimas Cahyo Purdinanto

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
( ) ............................................................................. 15
Komputasi = ( ) Dan =
Pengujian Hasil Implementasi ................................................................................................ 16

KESIMPULAN DAN SARAN .................................................................................................. 18
Kesimpulan ........................................................................................................................... 18

viii

Saran ..................................................................................................................................... 18
DAFTAR PUSTAKA ................................................................................................................ 18
LAMPIRAN .............................................................................................................................. 20

DAFTAR TABEL
Halaman
1.
2.
3.
4.

Spesifikasi file pengujian........................................................................................................... 6
Waktu penandaan pesan .......................................................................................................... 16
Waktu verifikasi pesan ............................................................................................................ 17
Waktu hashing pesan .............................................................................................................. 17


DAFTAR GAMBAR
Halaman
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Transformasi SA dan VA (Menezes et al. 1996). .......................................................................... 2
Skema enkripsi dan dekripsi menggunakan kunci simetris (Schneier 1996). ............................... 3
Skema enkripsi menggunakan kunci publik (Menezes et al. 1996). ............................................ 3
Ilustrasi pengujian menggunakan metode Black box (Sommerville 2001). .................................. 5
Langkah-langkah penelitian....................................................................................................... 5

Fungsi- fungsi pada Aritmatik_K dan Aritmatik_L. ................................................................. 11
Ilustrasi penjumlahan dalam K................................................................................................. 12
Contoh cara kerja algoritme kuadrat pada Aritmatik_K. ........................................................... 13
Ilustrasi peningkatan waktu penandaan pesan terhadap ukuran file. .......................................... 16
Ilustrasi peningkatan waktu verifikasi tanda terhadap ukuran file. ............................................ 17
Ilustrasi peningkatan waktu hashing pesan terhadap ukuran file. .............................................. 18

DAFTAR LAMPIRAN
Halaman
1.
2.
3.
4.
5.

Bagan alir proses penandaan pesan algoritme SFLASHv3 (Courtois et al. 2003) ...................... 21
Representasi biner nilai n ........................................................................................................ 22
Representasi biner nilai h ........................................................................................................ 22
Bagan alir proses verifikasi tanda algoritme SFLASHv3 (Courtois et al. 2003) ........................ 23
Data pengujian hasil implementasi algoritme SFLASHv3 ........................................................ 24

ix

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.
2.
3.
4.

Tanda tangan bersifat autentik (asli).
Tanda tangan tidak dapat dipalsukan.
Tanda tangan tidak dapat didaur ulang.
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/parameterparameter
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:
1. Penelitian ini tidak membahas atau
menganalisis masalah keamanan dari
SFLASHv3.

1

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

{ ,

, } . Gambar 1 mencontohkan suatu
transformasi SA dan VA.

Gambar 1 Transformasi SA dan VA (Menezes
et al. 1996).
Prosedur Penandaan

Penandaan Digital
Primitif kriptografi yang menjadi landasan
di dalam autentikasi, autorisasi, dan nonrepudiasi 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 ∈ .
2. Kirim (m,s), s disebut tanda untuk pesan
m.
Prosedur Verifikasi
Untuk memeriksa bahwa tanda s adalah
benar diciptakan oleh A, maka entitas B
(pemeriksa) melakukan:
1. Mencari fungsi verifikasi VA dari dari A.
2. Hitung = ( , ) ,
3. Tanda diterima apabila
= , tanda
ditolak apabila = .
Ada 2 (dua) sifat yang harus dipenuhi
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:
1. Ruang pesan, dinotasikan M, adalah
himpunan yang anggota-anggotanya dapat
dibubuhi tanda digital oleh penanda.

2

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;
⊆ .

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.

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 3 Skema enkripsi menggunakan
kunci publik (Menezes et al.
1996).
Bob memilih pasangan kunci (e,d). Bob
mengirimkan kunci enkripsi e (dalam hal ini e
disebut kunci publik) kepada Alice melalui
sembarang saluran (secara umum diasumsikan
saluran tak-aman), tetapi Bob tetap
merahasiakan dan mengamankan kunci
dekripsi d (dalam hal ini d disebut kuncipribadi). Tugas Alice mengenkripsi pesan
yang akan dikirim m menjadi c dengan
menggunakan kunci e yang diperoleh dari
( ) . Kemudian Alice
Bob, berarti
=
mengirim c ke Bob, dan Bob mendapatkan m
dengan menggunakan kunci d miliknya,
( )=
( ) .
artinya =

3

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.
= { , }∕ ∈ , { , }
adalah pemetaan 1-1 dari
ke S dan
disebut transformasi penandaan.
2.
mendefinisikan suatu pemetaan terkait
×
ke {T,F}. Sedemikian
VA dari
sehingga, ( , ∗ ) = , jika { , } ( ) =

( , ∗ ) = , jika selainnya
dan
untuk semua ∈
, ∗ ∈ , = ℎ( ) ,
∈ . VA disebut transformasi verifikasi
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 (hashvalue). 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 satuarah 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
Secure Hash Algorithm atau yang lebih
dikenal dengan SHA-1 didasari oleh MD4
yang dibuat oleh Ronald L. Rivest dari MIT.
SHA-1 pertama kali diajukan oleh U.S.
National Institute for Standards and
Technology (NIST) untuk aplikasi tertentu
milik pemerintah Amerika Serikat (Menezes

4

et al. 1996). Oleh National Security Agency
(NSA), SHA-1 dinyatakan sebagai standar
fungsi hash satu-arah (one-way hash
function).

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

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 nilainilai (dalam notasi heksadesimal) berikut:






A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0

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

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

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

Gambar 5 Langkah-langkah penelitian.
Studi Pustaka
Tahapan
ini
dilakukan
untuk
mengumpulkan informasi tentang skema
penandaan digital SFLASH-v3 melalui
penelusuran jurnal-jurnal komputer, serta
penelusuran pada textbook maupun e-book
sebagai acuan pustaka dan acuan dasar teori

5

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)
file-1

166

file-2

7.390

file-3

68.619

file-4

141.118

file-5

564.478

file-6

846.718

file-7

1.693.438

file-8

2.540.158

file-9

3.386.878

file-10

23.543.490

 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 algoritmealgoritme 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

Pendeskripsian Spesifikasi SFLASHv3

Pengujian Hasil Implementasi

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

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

 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.

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 SHA1, untuk masing-masing file.

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).

Masing-masing pengujian akan dilakukan
sebanyak 3 (tiga) kali perulangan terhadap
tiap-tiap file, sehingga diharapkan akan
didapatkan data yang valid dari tiap-tiap
pengujian. Adapun lingkungan pengujian
sama dengan lingkungan penelitian yang
digunakan untuk implementasi, seperti yang

6

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.
[ ]



= (λ ,λ

Parameter Algoritme

...,λ

,λ )

( 2)

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
semua bitstring dengan panjang 7 (tujuh)
bit, anggota {0,1} dapat didefinisikan
pada persamaan 4.
∀ = (

,…,
( )=

) ∈ {0,1} ,
+ ⋯+
(
+
+
+ 1)

Misalkan terdapat sebuah
polinomial anggota K:
+

+

(3)

persamaan

,

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
{0,1}
koefesien
anggota-anggota
berderajat paling banyak 66. Contoh
anggota ℒ:
( 0110110)

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

Lalu dinotasikan yang merupakan fungsi
bijeksi antara
dan ℒ, yang mengubah
format polinomial ke format biner seperti
didefinisikan
pada
Persamaan
5.
Sementara
merupakan fungsi bijeksi
antara ℒ dan
, yang mengubah format
biner ke format polinomial. Dimana
merupakan semua himpunan vektor/string
dengan panjang 67 yang unsur-unsurnya
ada di dalam {0,1} , contoh anggota
:

7

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

( 0110110 ∙ 1000100 ∙ …∙ 1101100
∙ 0000111) ,

dengan panjang 67 × 7 = 469 bit.


= (
( ) =

, …,

) ∈
,
+ ⋯+
(
+
+
+
+
+ 1)

Parameter Publik

(5)

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
merupakan anggota
. Sama halnya
dengan s, transformasi t juga merupakan
fungsi yang memetakan
ke
,
terdiri atas bagian linier
dan bagian
konstan
dengan konstanta dalam
.
Oleh karena itu, transformasi t juga dapat
( ) = ( )+
dituliskan menjadi
dimana x merupakan anggota
.

Paramter publik pada SFLASHv3 yang
terdapat dalam fungsi G memetakan
ke
didefinisikan pada Persamaan 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.
∀ ∈ ℒ, ( ) =

Algoritme SFLASHv3 menggunakan
beberapa parameter rahasia, diantaranya:
1. Fungsi bijeksi linier rahasia dari
ke
yang direpresentasikan sebagai
matriks persegi 67 × 67 dengan anggota
K, yang dinotasikan sebagai matriks
(“L” berarti “linier”).
2. Fungsi bijeksi linier rahasia lainnya dari
ke
yang direpresentasikan
sebagai matriks persegi 67 × 67 dengan
anggota K, yang dinotasikan sebagai
matriks
(“L” berarti “linier”).
3. 80 bit string rahasia yang dinotasikan
sebagai ∆.
Parameter Semi-Publik
Sebagai tambahan, bagian konstan dari s
dan t diantaranya:
1. Sebuah vektor dalam
yang
direpresentasikan sebagai vektor kolom
berukuran 67 × 1 (“C” berarti “konstan”).

( 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

Parameter Rahasia

(6)

( )

=

_

_

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 :
1. Matriks persegi
dan
berukuran
67 × 67 yang invertible (mempunyai
invers).
2. Vektor kolom
dan
berukuran 67 ×
1.
3. ∆ dengan panjang 80 bit.
Adapun langkah-langkah pembangkitan
masing-masing kunci tersebut adalah sebagai
berikut:
1. Pembangkitan matriks persegi

dan

8

Untuk membangkitkan matriks , ada 2
(dua) metode yang dapat digunakan,
metode “Trial and Error” dan metode
“Dekomposisi LU”.
a. Metode “Trial and Error”
Pada dasarnya metode ini mencoba
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

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 operasioperasi berikut secara berurutan. Bagan alir
proses penandaan pesan menggunakan
algoritme SFLASHv3 dapat dilihat pada
Lampiran 1.
1. Definisikan
,
,
,
masingmasing adalah string sepanjang 160 bit
seperti yang dirumuskan pada Persamaan
9, 10, 11, dan 12.
− 1( )

=
=

− 1(

∥ 0 00)

− 1(

∥ 0 02)

− 1(

=
=

( 9)

∥ 0 01)

( 10)
( 11)
( 12)

Dengan 0x00, 0x01, 0x02, menotasikan
3(tiga) buah string sepanjang 8 bit yang
ditambahkan ke .

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

2. Ketiga buah string hasil Persamaan 9, 10,
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.

if i < j
LS[ i, j] = 7bit _random_str ing.
US[ i, j] = 0.
if i = j
r epeat ( z = 7bit _random _str ing)
unt il z ≠ {0,0,0,0,0,0,0}.
US[ i, j] = z.
LS[ i, j] = 1.

Setelah itu, matriks
didapatkan dengan
cara mengalikan matriks segitiga bawah
dan matriks segitiga atas
yang telah
dibangkitkan, seperti pada Persamaan 8.
=

acak ini nantinya akan digunakan pada
proses pembangkitan tanda.

×

( 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

= [

]



∥[ ] →
∥[ ] →

(13)

3. Kemudian V akan ditambahkan dengan
kunci ∆ sepanjang 80 bit, untuk
selanjutnya akan dioperasikan kembali
menggunakan fungsi SHA-1 hingga
menghasilkan keluaran berupa string
dengan panjang 160 bit. Keluaran dari
fungsi SHA-1 tersebut kemudian diambil
sepanjang 77 bit lalu disimpan ke dalam
W, seperti yang dirumuskan pada
Persamaan 14.
= [

− 1(

∥ ∆) ]



( 14)

4. Definisikan

seperti
yang
dirumuskan pada Persamaan 15. Y
didapatkan dari string V yang dibagi

9

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
matriks dengan vektor).
= (

,… ,

(perkalian

) =

( ) (19)

9. Tanda S merupakan sebuah string dengan
panjang 469 bit yang didefinisikan pada
Persamaan 20.
) ∥⋯∥

(

=

Verifikasi Tanda

(

) ( 20)

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
,
,
,
masingmasing 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
Setelah pendeskripsian konsep umum dari
SFLASHv3 selesai dilakukan, maka bagian
ini akan menjelaskan secara detail aturanaturan aritmatik dan algoritme-algoritme yang
terlibat dalam membangun SFLASHv3. Untuk
selanjutnya hasil penjabaran algoritmealgoritme tersebut akan diimplementasikan ke
dalam sebuah program komputer.

10

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
Aritmatik_K, diantaranya:
1.
2.
3.
4.

pada

Fungsi Penjumlahan
Fungsi Perkalian
Fungsi Kuadrat
Fungsi Invers

Sementara fungsi-fungsi yang dibutuhkan
pada Aritmatik_L, diantaranya:
1. Fungsi Penjumlahan
2. Fungsi Perkalian
3. Fungsi Kuadrat

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.
2.
3.
4.

Fungsi Penjumlahan
Fungsi Perkalian
Fungsi Kuadrat
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,

Gambar 6 Fungsi- fungsi pada Aritmatik_K
dan Aritmatik_L.

( ) =

+

+

= 1011000

( ) =

+

+

+

( )⊕ ( ) =

= 0110110

+
+
+
= 1101110

+

Sehingga penjumlahan pada Aritmatik_K
juga
dapat
direpresentasikan
menjadi
penjumlahan 2 (dua) buah string dengan

11

panjang 7 bit, seperti yang diilustrasikan pada
Gambar 7.

Gambar 7 Ilustrasi penjumlahan dalam K.
Algoritme berikut digunakan
membangun fungsi penjumlahan
Aritmatik_K.
Masukan:
Keluaran:

dan
=

+

= 0
6
c[ i] = a[ i] ⊕ b[ i] .
r etur n c.

untuk
pada

∈ {0,1}

Fungsi penjumlahan pada Aritmatik_K ini
memiliki komputasi yang ce