7 diberi penandatanganan digital berjumlah 15 file
yang masing-masing filemengalami 3 kali perulangan.
Metodologi
Metode yang digunakan dalam penelitian inimencakup studi literaturdari berbagai
sumber, implementasi pembuatan aplikasi tanda tangan digital yang merupakan penerapan hasil
studi pustaka mengenai kriptografi kunci- publik, tanda tangan digital, fungsi
hashdankode program yang termasuk ke dalam DSS, pengujian
hasil implementasi
menggunakan bahasa pemrograman C++dan penyusunan
dokumentasi laporan
hasil penelitian.Pengujian terhadap aplikasi yang
bertujuan memperoleh gambaran kinerja sistem kriptografitandatangan digital, terdiri
atasduakomponenyaitu: • Pengujian hasil penggabungan algoritme
tanda tangan digital dengan fungsi hashpada program aplikasi tanda tangan digital yang
meliputi identifikasi waktu proses dan identifikasi penggunaan memori,
• Analisis keragaman terhadap hasil yang diperolehdari identifikasi waktu proses.
Aplikasitanda tangan digital inidiimplementasikan menggunakan Crypto++
Library 5.6.0. Modul tersebut merupakan library yang bersifat open sourceyang khusus
dirancang untuk skema kriptografi. Tahapan penelitian ini ditunjukkan dengandiagrampada
Gambar5. Gambar 5 Tahapan penelitian.
HASIL DAN PEMBAHASAN
1. Pengambilan DataUji
Data yang digunakan pada penelitian ini adalah data dengan tipe fileyang secara umum
sering dipakai dalam kehidupan sehari-hari. Data contoh yang dikumpulkan yaitu file yang
berisi karakter dengan format teks berupa huruf, angka dan simbol, file executable serta masukan
file berupa gambar.
Besar ukuran file untuk sebuah data uji diambil kelipatan dua dari ukuran file data uji
sebelumnya. Misalnya ukuran data kedua dua kali lebih besar dibandingkan data pertama,
ukuran data ketiga lebih besar dua kali dibandingkan data kedua dan seterusnya sampai
berjumlah lima buah data untuk masing-masing tipe file. Kelipatan dua ini diambil dengan
asumsi bahwa dengan bertambahnya ukuran plainteks maka akan dapat dilihat dengan jelas
perbedaan hasil kinerja dari aplikasi tanda tangan digital yang akan diberikan perlakuan
pertukaran penggunaan fungsi hash. Data uji pertama pada penelitian ini berukuran 5 MB dan
maksimal ukuran file data uji yaitu 80 MB untuk data uji kelima.
2. Perancangan AplikasiTanda Tangan
Digital
8 Aplikasi yang dibuat memiliki fungsi utama
sebagai berikut: 1 Menerima masukan data file yang tersimpan
didalam hardisk pengguna dari sebuah alamat direktori tertentu.
2 Membangkitkan sepasang kunci yaitu kunci privat dan kunci publik key generation.
3 Membuat tanda tangan digital untuk sebuah masukan file tertentu signature generation.
4 Memverifikasi keabsahan pemilik tanda tangan
ataupun file
yang diperiksa signature verifying.
Implementasiaplikasi tanda tangan digital inimenggunakan sistem operasi Microsoft
Windows. Pengujian penggabungan antaraalgoritme tanda tangan digital dengan
fungsi hash dibuat menurut skenariopengujian yang ditunjukkan pada Tabel 2.
Tabel2Skenario pengujian penggabungan algoritme
tanda tangan digital dengan fungsi hash.
Perancangan aplikasi tanda tangan digital mengacukepada fungsi utama aplikasi, yang
juga merupakan urutan proses pemberian tanda tangan terhadap sebuah dokumen digital.
Masing-masing perancangan digambarkan dengan algoritme pemanggilan kelas-kelas yang
terdapat pada Crypto++ Library. Rancangan tampilan antarmuka aplikasi simulasi
ditunjukkan pada Gambar 6.
Header - Pembangkitan Kunci
- Pembangkitan Tanda Tangan SHA-256 - Pembangkitan Tanda Tangan SHA-384
- Pembangkitan Tanda Tangan TIGER - Verifikasi Tanda Tangan SHA-256
- Verifikasi Tanda Tangan SHA-384 - Verifikasi Tanda Tangan TIGER
1. DSA
2. RSA - Pembangkitan Kunci
- Pembangkitan Tanda Tangan SHA-256 - Pembangkitan Tanda Tangan SHA-384
- Pembangkitan Tanda Tangan TIGER - Verifikasi Tanda Tangan SHA-256
- Verifikasi Tanda Tangan SHA-384 - Verifikasi Tanda Tangan TIGER
3. ECDSA - Pembangkitan Kunci
- Pembangkitan Tanda Tangan SHA-256 - Pembangkitan Tanda Tangan SHA-384
- Pembangkitan Tanda Tangan TIGER - Verifikasi Tanda Tangan SHA-256
- Verifikasi Tanda Tangan SHA-384 - Verifikasi Tanda Tangan TIGER
Gambar 6 Tampilan antarmuka aplikasi.
2.1 Perancangan DSA
• Pembangkitan kunci key generation, bagian ini berfungsi untuk
membangkitkan kunci privat dan kunci publik. Kunci dibuat menggunakan seed
yang dibangkitkan dari random number generator yang didalamnya memuat
teknik subtitusi dan transformasi. Kunci privat dan publik, diakses dari pustaka
kelas DSA. Penelitian ini menggunakan random number generator dari sistem
operasi. Panjang kunci L yaitu 512
≤ L ≤ 100, dan harus kelipatan 64,
• Pembangkitan tanda tangan signature generation, pada tahap iniberfungsi
untuk membangkitkan signatureuntuk file masukan dari pengguna, untuk
proses ini diperlukan seed yang berasal dari pseudo random number generator
PRNG, kunci privat yang berasal dari key generationdan informasi nilai
panjang maksimum signature. Fungsi hash
yang digunakan dipertukarkandiantara SHA-256, SHA-
384 dan Tiger, • Verifikasi tanda tangan signature
verifying, pada blok ini fungsinya untuk memverifikasi signature dengan kunci
publik dan membandingkan dengan filemessage aslinya, apakah message
yang diterima sama dengan hasil verifikasi atau tidak. Jika tidak berarti
file yang diterima tersebut sudah mengalami pengubahan data. DSA
didasarkan pada kode program ElGamal, yang meletakkan keamanannya pada
sulitnya menghitung logaritma diskret.
Skenario Algoritme
Fungsi Hash
1 DSA
SHA-256 2
DSA SHA-384
3 DSA
Tiger 4
RSA SHA-256
5 RSA
SHA-384 6
RSA Tiger
7 ECDSA
SHA-256 8
ECDSA SHA-384
9 ECDSA
Tiger
9 Struktur template untuk skema aplikasi
DSA, dalam penggunaan class library pada Crypto++ ditunjukkan pada Gambar 7.
Gambar 7Inheritance diagram untuk DSA Anonim 2009.
2.2 Perancangan RSA
• Pembangkitan kunci key generation, pada blok ini berfungsi untuk
membangkitkan kunci privat dan kunci publik. Sepasang kunci dibangkitkan
dari dua bilangan prima p dan q. Nilai modulus n untuk menentukan kunci
privat dan kunci publik. Untuk kunci publik e dipilih bilangan yang relatif
prima terhadap modulus n. Selanjutnya ditentukan kunci privatd, menggunakan
algoritme Euclidian dengan persamaan e.d = 1mod n. Nilai n tidak bersifat
rahasia,
sebab diperlukan dalam perhitungan enkripsi atau dekripsi,
• Pembangkitan tanda tangan signature generation, pada bagian blok ini
berfungsi untuk membangkitkan
signature menggunakan kunci privat dan modulus n.Pada proses ini dibutuhkan
pula akses random number generator. Signature file yang dihasilkan berisi
sebuah nilai dalam bentuk format heksadesimal. Pengubahan nilai acak
dari format yang terenkripsi menjadi nilai dalam bentuk format heksadesimal
menggunakan sebuah decoder. Fungsi hash yang digunakan SHA-256, SHA-
384 dan Tiger,
• Verifikasi tanda tangan signature verifying, bagian blok ini berfungsi
untuk memverifikasi signature menggunakan kunci publik. Signature
file diubah dari format heksadesimal menjadi format terenkripsi menggunakan
encoder. Proses verifikasi memeriksa message
yang diberikan, apakah message yang diterima sama dengan
hasil verifikasi atau tidak. Jika tidak berarti file yang diterima tersebut sudah
mengalami pengubahan data. Keamanan RSA terletak pada sulitnya
memfaktorkan bilangan besar menjadi faktor-faktor primanya atau dalam istilah
lain Integer Factorization Problem IFP.
Struktur template untuk skema aplikasi RSA, dalam penggunaan class library pada
Crypto++ ditunjukkan pada Gambar 8.
Gambar 8Inheritance diagram untuk RSA Anonim 2009.
2.3 Perancangan ECDSA
• Pembangkitan kunci key generation, pembuatan key ECDSA dilakukan
dengan pencarian parameter domain kurva elliptik Fp, G base point
coordinat, pprima, norder. Pada penelitian ini menggunakan kurva
elliptik pada bidang terbatas Fp prime field, karena disesuaikan dengan
rekomendasi NIST
yang memiliki jumlah polynomial lebih sedikit sehingga
lebih efisien. Fungsi penjumlahan dan penggandaan titik kurva koordinat Fp
ditunjukkan pada Persamaan 1.
• Pembangkitan tanda tangan signature generation, bagian blok ini berfungsi
untuk membangkitkan signature dengan kunci privat key dan modulus n.Proses
signaturememilih bilangan bulat
randomk, rangenilainya diantara [1, n- 1].
Fungsi hash
yang digunakan dipertukarkan diantara SHA-256, SHA-
384 dan Tiger. • Verifikasi tanda tangan signature
verifying, bagian blok ini berfungsi untuk memverifikasi signature dengan
kunci public. Pesan yang baru diterima diperiksa keabsahannya dengan
menggunakan signature file yang sudah disepakati dengan penerima. Jika tidak
sesuai, maka pesan itu telah mengalami pengubahan. Keamanan ECDSA terletak
pada permasalahan logaritma diskret kurva eliptik dalam istilah lainnya
Elliptic Curve Discrete Logarithm Problem ECDLP.
Struktur template untuk skema aplikasi ECDSA, dalam penggunaan class library pada
Crypto++ ditunjukkan pada Gambar 9.
GDSA H DL_SS DL_SignatureKeys_GFP, DL_Algorithm_GDSA
Integer, DL_SignatureMessageEncodingMethod_DSA, H DL_SignatureKeys_GFP
RSASSSTANDARD, H TF_SSSTANDARD, H, RSA
RSA
10 Gambar 9Inheritance diagram untuk ECDSA
Anonim 2009. Pada algoritme kurva eliptik titik input
berperan sebagai pembuatsignature, selanjutnya dipetakan menjadi titik output pada proses
verifikasi. Pendefinisian persamaan untukoperasi penjumlahan dan penggandaan
titik kurva eliptik pada penelitian ini,terbatas untuk mendefinisikan persamaan kurva eliptik
pada bidang terbatas Fp.
3. Implementasi PembuatanAplikasi Tanda
Tangan Digital
Implementasi aplikasi tanda tangan digital dibuat menggunakan bahasa pemrograman C++
dengan memanfaatkan library open source untuk skema kriptografi, yaitu Crypto++
Library.Aplikasi ini dapat dijalankan melalui aplikasi command prompt.Menu-menu yang
digunakan meliputi tiga operasi proses yaitu pembangkitan sepasang kunci, pembuatan
tandatangan dan verifikasi tanda tangan.
Dalam pembuatan aplikasipada penelitian ini, ada beberapa hal yang harus diperhatikan:
• Pembangkit bilangan acak yang
digunakan.Pertama, Operating system
random numbergenerator untuk DSA dan ECDSA. Pada objek tersebut bersifat
automatic dan
tidak mendefinisikan parameter-parameter yang berkaitan dengan
key generation seperti panjang kunci dalam bit dan pendefinisian seed. Librarysistem
operasi yang digunakan
CRYPTOPP_WIN32_AVAILABLE dengan
memanfaatkan kelas kriptografi yang
bernama MicrosoftCryptoProvider
dan fungsiyang dipanggil yaitu
CryptGenRandom .Kedua,
Randomness pool
yang dapat menghasilkan pseudorandom bytes
berkualitas menggunakan incorporate entropy.Objek
kelas tersebut memanfaatkan fungsi timer untuk mengambil nilai waktu current. Selain
itu, mendukung juga pendefinisian parameter masukan seed
awal dan penentuan panjang kunci.Pembangkit ini
digunakan pada RSA. • Proses signing dan verifyingmenggunakan
class library sesuai dengan skema algoritme tandatangan digital. Penggunaan fungsi hash
dipertukarkan diantara SHA-256, SHA-384 dan Tiger. Pada proses signing dan
verifyingitu, terdapat pencatatan waktu yang dibutuhkan untuk menjalankan proses dan
jumlah memori yang terpakai.
• Pembacaan waktu yang digunakan untuk menjalankan proses signing
atau verifyingadalah perhitungan waktu akhir
atau setelah proses selesai dijalankan dikurangi waktu sesaat sebelum proses
mulai berjalan. Fungsi waktu yang digunakan dari sistem operasi bernama
GetTickCount
. Fungsi tersebut memiliki tingkat keakuratan sampai dengan
milisecond. • Identifikasi jumlah memori yang digunakan
untuk menjalankan proses signing atau verifying, digambarkan dalam tahapan yang
dapat dilihat pada Gambar 10. Tahap pertama yaitu identifikasi proses yang
sedang berjalan menggunakan GetCurrentProcessId
, selanjutnya membuka proses dengan id yang telah
didapatkan sebelumnya menggunakan fungsi
OpenProcess . Jika tidak
berhasil maka program langsung dihentikan, jika sebaliknya dilanjutkan dengan
mengakses informasi memori yang digunakan oleh proses tersebut dengan
dilakukan pemanggilan fungsi GetProcessMemoryInfo
, hasil yang diperoleh disimpan ke dalam sebuah
variabel yang selanjutnya bertindak sebagai sebuah objek. Setelah semua proses signing
ataupun verifyingselesai dijalankan, maka dilakukan pengaksesan metode-metode yang
berperan menyajikan informasi pagefile usage dan working set size memory. Setelah
pencatatan selesai dilakukan maka objek tersebut dihapus.
ECDSAEC, H DL_SSDL_Keys_ECDSA EC , DL_Algorithm_ECDSA
EC , DL_SignatureMessageEncodingMethod_DSA, H DL_Keys_ECDSA EC
11
Identifikasi ID Proses
Akses Objek Informasi Memori Proses
Baca Ukuran Memori Buka Proses
End
Ya Tidak
Hapus Objek
Gambar 10Diagram tahapan identifikasipenggunaan memori.
Dalam mengakses fungsi memori
dibutuhkan sebuah file library Application Programming Interface API yang bernama
Process Status API PSAPI. Kelas yang diakses adalah
PROCESS_MEMORY_CONTERS
. Struktur dari kelas tersebut mengacu pada sintak di bawah
ini.
typedef struct _PROCESS_MEMORY_COUNTERS {
DWORD cb; DWORD PageFaultCount;
SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage; SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage; SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage; SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS, PPROCESS_MEMORY_COUNTERS;
Keterangan masing-masing anggota fungsi dari kelas adalah sebagai berikut:
- cb:Ukuran dari struktur, dalambytes, - PageFaultCount: Jumlahpage faults,
- PeakWorkingSetSize: Set ukuran untuk suatu
pekerjaan puncak, dalambytes, - WorkingSetSize: Set ukuran untuk suatu
pekerjaan yang sedang berlangsung, dalambytes,
- QuotaPeakPagedPoolUsage: kuota memori maksimum atau puncak yang telah
dialokasikan untuk keseluruhan pemakaian, dalambytes,
- QuotaPagedPoolUsage: kuota memori yang sedang digunakan yang telah dialokasikan
pada keseluruhan pemakaian, dalambytes, - QuotaPeakNonPagedPoolUsage: kuota
memori maksimum atau puncak yang belum dialokasikan terhadap keseluruhan pemakaian,
dalambytes, - QuotaNonPagedPoolUsage: kuota memori
yang sedang berlangsung digunakan dan belum dialokasikan terhadap keseluruhan
pemakaian, dalambytes, - PagefileUsage: Jumlah ruang memori yang
dialokasikan untuk sebuah pagefile, dalambytes,
- PeakPagefileUsage: Jumlah ruang memori puncak atau maksimum yang dialokasikan
untuk sebuah pagefile, dalambytes.
4. Pengujian AplikasiTanda Tangan Digital