Escolar Documentos
Profissional Documentos
Cultura Documentos
NIM : 23204017
Dalam era digital, terjadi perpindahan dari proses legalisasi suatu dokumen kertas
menjadi legalisasi dokumen digital. Dalam proses legalisasi dokumen digital diperlukan
juga suatu bukti yang bisa dijadikan sebagai dasar bahwa dokumen tersebut dikirimkan
dan diakui oleh pihak yang membuatnya. Proses legalisasi ini bisa diterapkan dengan
menggunakan tanda tangan digital (digital signature). Dalam laporan ini akan dibahas
pembuatan perangkat lunak untuk membuat tanda tangan digital dan proses pembuatan
dokumen yang bertanda tangan digital. Perangkat lunak dibuat dengan bahasa
pemrograman Visual Basic .NET dan akan dibuat suatu editor teks sederhana untuk
dijadikan sebagai masukan dokumen yang akan diberi tanda tangan digital.
I.3 Tujuan
Tujuan tugas ini adalah untuk membuat suatu editor teks yang bisa menghasilkan
dokumen yang bertanda tangan digital dan dapat dibaca dan diperiksa keasliannya oleh
penerima.
1
I.4 Batasan Masalah
Untuk memfokuskan pada keamanan sistem yang akan dibuat, maka dilakukan
penyederhanaan masalah dan pembatasan sebagai berikut :
1. Teks editor yang dibuat hanya bisa merekam data berupa teks tanpa pengaturan
format tulisan.
2. File teks yang sudah ditanda tangani secara digital akan disimpan dengan format
xml.
3. Algoritma yang digunakan dalam editor ini adalah algoritma hashing SHA1 dan
algoritma enkripsi RSA.
2
Bab II
Dasar Teori
Tanda tangan digital merupakan salah satu cara untuk mengamankan data yang akan
dikirimkan secara digital. Prinsip yang digunakan dalam tanda tangan digital adalah
data yang dikirimkan harus ditanda tangani oleh pengirim dan tanda tangan bisa
diperiksa oleh penerima untuk memastikan keaslian data yang dikirimkan. Proses ini
menganalogikan proses penandatanganan dokumen kertas oleh yang berwenang
sebelum dikirimkan. Dengan cara ini pengirim bertanggung jawab terhadap isi dokumen
dan dapat dicek keaslian dokumen oleh penerima.
Tanda tangan digital dapat memberikan pengecekan integritas pesan. Jika salah satu
byte dari pesan berubah maka tanda tangan digital juga akan berubah. Proses yang
dilakukan dalam pembuatan tanda tangan digital pertama kali akan dilakukan hashing
terhadap pesan yaitu pengubahan dari pesan asli menjadi suatu pesan dengan ukuran
tertentu yang disebut sebagai digest. Proses hashing merupakan proses 1 arah dan
tidak memungkinkan untuk mendapatkan pesan asli dari hasil hashing atau
mendapatkan pesan yang menghasilkan digest yang sama. Mekanisme yang biasa
digunakan dalam hashing adalah SHA1 (Secure Hash Algorithm) yang dibuat oleh
pemerintah Amerika dan menjadi standar pada tahun 1995. algoritma ini melakukan
pengubahan dari pesan yang panjangnya sampai 2^64 byte dan menghasilkan digest
berukuran 20 byte.
Sebagai contoh apabila terdapat sebuah pesan M dan hasil hash H(M) yang dikirimkan,
maka di penerima bisa melakukan hashing dari pesan M untuk menghasilkan H’(M).
3
Apabila hasil H(M) dan H’(M) sama maka bisa dipastikan bahwa penerima menerima
pesan M yang sama. Satu-satunya cara untuk melindungi pesan dari perubahan adalah
dengan mengamankan hasil hash (H(M)). Pengamanan terhadap hasil hash dapat
dilakukan dengan menambahkan informasi rahasia yang hanya diketahui oleh pihak
pengirim dan penerima dan ditambahkan ke dalam pesan sebelum dilakukan hash.
Misalnya H(S+M), dengan S adalah informasi rahasia yang diketahui bersama, maka
ketika pesan didapatkan dan dengan S yang dimiliki bisa dilakukan dengan membuat
H’(S+M). Digest yang baru yang dihasilkan disebut sebagai HMAC atau Hashed
Messsage Authentication Code.
Jika HMAC digunakan, maka kekuatan pengamanan terhadap data bergantung pada
ketidakmampuan penyerang untuk mengetahui S. Oleh karena itu S harus sesuatu yang
tidak mudah ditebak dan sesuatu yang harus sering berubah. Salah satu cara terbaik
yang dapat digunakan adalah dengan menggunakan Kerberos. Dalam Kerberos, suatu
sentral memberikan suatu kunci sementara yang digunakan seperti tiket pada saat ada 2
pihak yang akan berkomunikasi. Pengirim akan mendapatkan tiket untuk mengirimkan
informasi kepada penerima tertentu. Pada saat mengirimkan informasi, pengirim akan
membuka tiketnya dan mengambil S, mengirimkan pesan M, HMAC nya dan tiket milik
penerima. Penerima harus membuka tiket menggunakan password yang sudah
didaftarkan dalam Kerberos dan mengambil S dan informasi mengenai identitas
pengirimnya. Kemudian penerima akan mengambil pesan M dan membuat H’(S+M)
dan mengecek kecocokannya. Apabila cocok maka penerima akan mengetahui bahwa
pengirim yang mengirimkan pesan/informasi dan identitas pengirim diberitahu oleh
Kerberos.
Kekurangan metode HMAC adalah : (1) HMAC menggunakan kunci simetrik sehingga
sulit untuk mempertukarkan kunci simetrik antara pengirim dan penerima karena
memerlukan jaringan khusus dan aman untuk pertukaran. (2) Kunci simetrik hanya bisa
dilakukan untuk 2 pihak (pengirim dan penerima) sehingga untuk mengirimkan pesan
lebih ke 1 penerima maka akan timbul masalah keamanan yang lain yaitu bahwa kunci
diketahui lebih dari 2 orang dan dapat dengan mudah menyebar kepada pihak yang
tidak diinginkan.
4
Metode lain untuk memproteksi digest adalah dengan menggunakan kriptografi kunci
publik, seperti RSA. Dalam kriptogafi kunci publik terdapat 2 kunci yaitu kunci privat
yang hanya diketahui oleh pemilik dan kunci publik yang bisa diketahui oleh orang lain
yang hendak berkomunikasi dengan pemegang kunci. Dengan menggunakan kriptografi
kunci publik, apapun yang dikunci dengan menggunakan kunci privat dapat dibuka
dengan menggunakan kunci publik dan juga sebaliknya. National Institute of Standard
and Technology (NIST) menerbitkan standar untuk Digital Signature yang dikenal
sebagai Digital Signature Standard (DSS) dan diterbitkan sebagai Federal Information
Processing Standard (FIPS) PUB 186 tahun 1991, dan direvisi tahun 1993 dan 1996. DSS
menggunakan metode SHA-1 untuk menghitung message digest. Proses pembuatan
digital signature dapat dilihat dalam Gambar 1.
Setelah tanda tangan digital dibuat maka pengirim akan mengirimkan pesan asli
ditambahkan dengan tanda tangan digital kepada penerima seperti terlihat pada
Gambar 2.
5
Penerima akan menerima pesan asli dan tanda tangan digitalnya. Selanjutnya penerima
akan melakukan hashing dari pesan asli dan mendekripsi tanda tangan digital pengirim
dengan menggunakan kunci publik pengirim dan membandingkannya. Apabila hasil
hashing (MD2) dan dekripsi tanda tangan digital (MD1) sama maka dapat dipastikan
bahwa pesan merupakan betul pesan yang dikirim oleh pengirim kepada penerima.
6
yang bisa digabungkan dalam 1 bundel kunci yang disimpan dalam sebuah keyring.
Metode pembuatan kunci yang bisa dilakukan oleh GnuPG adalah RSA, DSA dan Elgamal
dengan panjang kunci maksimum yang bisa dibuat adalah 2048.
7
Bab III
Perancangan dan Implementasi
III.1 Perancangan
Aplikasi SecureEdit yang akan dibuat memiliki fungsi seperti yang terlihat pada Gambar
4. Dengan menggunakan aplikasi ini user bisa : (1) membuat tanda tangan digital, (2)
menulis dan membaca pesan dalam file teks, dan (3) memvalidasi pesan yang sudah
dibuat.
Pembuatan tanda tangan digital dilakukan dengan urutan seperti yang terlihat pada
Gambar 5. Pembuatan tanda tangan akan dilakukan mengunakan jendela lain dan user
akan diminta untuk memasukkan nama, alamat email dan password untuk memproteksi
tanda tangan. Jendela baru untuk membuat tanda tangan akan dipanggil dari form
utama. Tanda tangan yang sudah dibuat akan disimpan dalam format XML, masing
masing user akan memiliki sebuah file tanda tangan.
8
Gambar 5 Urutan pembuatan tanda tangan
9
Gambar 6 Penanda tanganan dokumen
3. Validasi dokumen
Validasi dokumen dapat dilakukan dengan urutan seperti terlihat pada Gambar 7. proses
validasi dilakukan dengan membaca dokumen yang sudah ditanda tangani untuk
kemudian divalidasi dengan menggunakan kunci publik pengirim.
10
Gambar 7 Proses validasi tanda tangan digital
III.2 Implementasi
Aplikasi akan dibuat dengan menggunakan bahasa pemrograman Visual Basic .NET dan
akan memiliki tampilan seperti pada Gambar 8. Teks yang akan disimpan dapat diketik
pada textbox yang berada pada bagian tengah. Menu yang terdapat dalam aplikasi ini
adalah :
11
Gambar 8 Tampilan utama SecureEdit
Pembuatan tanda tangan digital bisa dilakukan dengan menggunakan form seperti
terlihat pada Gambar 9. Form ini bisa dilakukan dengan memilih menu Keys -> Create
key. Tanda tangan digital akan disimpan dalam folder yang sama dengan aplikasi
dengan menggunakan ekstensi .sig dalam format XML.
12
Gambar 9 Form pembuatan tanda tangan digital
Tanda tangan akan memiliki informasi yaitu : (1) nama, (2) email, (3) password, (4)
public key, (4) combined key. Contoh file signature dapat dilihat dalam Gambar 10 :
<?xml version="1.0"?>
<digital_id>
<name>mario</name>
<email>mariotapilouw@yahoo.com</email>
<password>hello</password>
<pub><RSAKeyValue><Modulus>5Ci1+N92c7rJNUjq65oJYgr39ofRe7am6UxZJw
WN/K2lSw5tqiwMjO5GFvk0PbqgC5QCANBinjU+5JYUsGGsMCmMLDWLcdw14kB4Zh+
GAhftBe5/+ZvRkXXaCLhVEeNB3ICOqM7dVM6tfPvWNBmk9Cylv5OkXTRazK2+C+Uw
3Ak=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></pub>
<priv><RSAKeyValue><Modulus>5Ci1+N92c7rJNUjq65oJYgr39ofRe7am6UxZJ
wWN/K2lSw5tqiwMjO5GFvk0PbqgC5QCANBinjU+5JYUsGGsMCmMLDWLcdw14kB4Zh
+GAhftBe5/+ZvRkXXaCLhVEeNB3ICOqM7dVM6tfPvWNBmk9Cylv5OkXTRazK2+C+U
w3Ak=</Modulus><Exponent>AQAB</Exponent><P>9NrK5Xd1M6796abBrd2jW5
iSMOWfT2P63AQZvPa6PyqVPNiH4P8auh1OIxUvkbhyX2iUBIV7XW89EzDxcrZTnQ=
=</P><Q>7oteqnUd8c/kxjUQQ4EJ0kb7wXYIE3wW7pIu5QPpK6mi/1VCABwfYEQee
JT1dJcGZwvpKs/6jA7AxrFAqrOsXQ==</Q><DP>Mbd3OS6PSqY+gkHM07vMHp4VGP
6W4Wzgk+n1O+wxFwBTex5QQLwrthybL/5uQT1dY8f9PgnIaclbclkevXcN9Q==</D
P><DQ>Za+xlhZAwpDto/SAz1XVevbZYPnQrYWrPN3B8cw9/Gfe3NtaPDPAyEeheaN
13
+EspCZ3DzX1WzJzsuwERVHa9j3Q==</DQ><InverseQ>5hhEwiTAQoiQQm8win5k4
AKWalA3c1tew8VYwQYgKZ+M0xYhBmqyrIxFCenXpOCZTFLkNP588YmusMnh8/cDAA
==</InverseQ><D>dXf4aNA0nlUW7xZBzVebaR0YmZdH5Zgey5MBe7PCbMvChKhDE
hBnzc+HyqA3o2iIqi1j8qNXgvkLDomu0TkYeyKmw0oeR7Bu+5mq5Cf3HCL9GD97O9
IRlJfK5AUePi5G1QJXla939mPJnczGImTj6AqvZe1bKn5CvUIauT/AROE=</D></R
SAKeyValue></priv>
</digital_id>
Gambar 10 Contoh file signature
Proses penanda tanganan secara digital dilakukan dengan cara menyimpan pesan yang
akan ditanda tangani. Oleh karena itu sebelum dilakukan proses penyimpanan, terlebih
dahulu user harus memilih kunci mana yang akan dia gunakan untuk menanda tangani
pesan tersebut. Pemilihan kunci dapat dilakukan dengan menggunakan menu Keys Æ
Choose Key dan akan muncul jendela untuk memilih file kunci yang diinginkan seperti
terlihat pada Gambar 12. Pemilihan tanda tangan digital dapat dilakukan dengan
menekan tombol browse.
14
Gambar 12 Pemilihan tanda tangan digital
Setelah kunci dipilih maka penyimpanan file dapat dilakukan dengan memilih menu File
Æ Save dan akan muncul jendela untuk mengisikan nama file yang diinginkan seperti
terlihat pada Gambar 13. File akan disimpan dalam format XML dengan menggunakan
ekstensi .sgf.
15
File ini akan membawa informasi (1) sender/pengirim, (2) email pengirim, (3) metode
hash yang digunakan, (4) pesan yang dikirimkan, (5) signature yang menyertai pesan.
Contoh sebagai berikut (Gambar 14):
16
Setelah file dipilih maka pada editor akan muncul teks asli yang dikirimkan seperti
terlihat pada Gambar 16. dalam tampilan akan muncul nama dan alamat email pengirim.
Setelah isi file ditampilkan maka untuk memvalidasi tanda tangan digital dilakukan
dengan menekan tombol Validate. Apabila tombol ini ditekan maka akan muncul
jendela pilihan untuk memilih file yang berisi kunci publik pengirim seperti terlihat pada
Gambar 17, kunci publik ini bisa didapatkan dari pengirim. Setelah kunci publik dipilih
maka akan diproses untuk menentukan apakah informasi yang dikirimkan valid atau
tidak. Apabila informasi yang dikirimkan valid, maka pada status bar akan muncul tulisan
Valid, sebaliknya akan muncul tulisan Not Valid pada status bar apabila kunci tidak
cocok dengan signature yang ditempelkan dalam file. Hasil validasi yang sukses dapat
dilihat pada Gambar 18, sementara hasil dokumen yang tidak valid dapat dilihat pada
Gambar 19.
17
Gambar 17 Pemilihan kunci publik pengirim
18
Gambar 19 Hasil validasi tanda tangan digital yang tidak valid
Pada gambar 18 terlihat bahwa hasil validasi dokumen menyatakan bahwa dokumen
tidak valid. Hal ini dapat disebabkan oleh beberapa hal yaitu : (1) tanda tangan digital
tidak sesuai, bisa karena rusak di perjalanan, (2) tanda tangan digital sengaja dirusak
oleh pihak ketiga (attacker), (3) kunci yang digunakan tidak sesuai dengan yang dimiliki
oleh penerima.
19
Bab IV
Perbandingan dengan gpg
You need a user ID to identify your key; the software constructs the
user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
20
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: NOTE: you should run 'diskperf -y' to enable the disk statistics
.........+++++
...+++++
gpg: key 4B384B17 marked as ultimately trusted
public and secret key created and signed.
Note that this key cannot be used for encryption. You may want to use
the command "--edit-key" to generate a subkey for this purpose.
21
IV.1.3 Pengecekan validitas dokumen
Pengecekan validitas dokumen yang sudah ditanda tangani dapat dilakukan oleh GnuPG
dengan cara seperti yang terlihat pada Gambar 22.
22
Bab V
Kesimpulan
V.1 Kesimpulan
Tanda tangan digital merupakan salah satu hal yang penting dalam komunikasi digital,
oleh karena itu perlu ada legalisasi dari suatu lembaga pengatur yang dapat dipercaya.
Siapapun bisa mengimplementasikan tanda tangan digital namun kepercayaan
tergantung pengguna dan juga resiko yang harus ditanggung pengguna apabila
informasi jatuh ke tempat yang salah ataupun informasi yang disampaikan merupakan
informasi palsu. Oleh karena itu diperlukan pihak lainnya sebagai penjamin bahwa tanda
tangan digital yang dibuat adalah sah dan aman. Algoritma untuk melakukan tanda
tangan digital dibuka dan semua orang bisa mengimplementasikan tanda tangan digital
dalam perangkat lunaknya dengan macam-macam bahasa pemrograman, namun tidak
semua orang bisa mendapatkan legalisasi dari pihak yang berwenang.
GnuPG merupakan salah satu aplikasi yang mengimplementasikan standar tanda tangan
digital dari FIPS dan memungkinkan penggunanya untuk bisa mempertukarkan datanya
dengan aman dan dapat dibuktikan keasliannya. Aplikasi yang dibuat dalam tugas ini
bisa melakukan sebagian yang dilakukan oleh GnuPG dengan menggunakan bahasa
pemrograman Visual Basic .NET dan dengan contoh ini membuktikan bahwa siapapun
bisa mengembangkan aplikasi keamanan untuk perangkat lunak yang
dikembangkannya.
23
V.2 Daftar Pustaka
Freeman, Adam., Jones, Allen., Programming .NET Security , Oreilly: June 2003
Kahate, Aatul,. Criptography and Network Security, Tata McGraw-Hill, New Delhi : 2003.
http://www.codeproject.com/vb/net/Digital_Signatures.asp
Simon, Ed., Madsen, Paul., Adams, Carlisle., An Introduction to XML Digital Signatures
http://www.xml.com/pub/a/2001/08/08/xmldsig.html
24