1.1 Latar Belakang Masalah
Teknologi jaringan internet telah melakukan perubahan
terhadap masyarakat dalam melakukan
interaksi dan komunikasi. Bahkan internet telah menjadi media untuk
mengirim dokumen bisnis yang di-attach
pada email dan transaksi-transaksi bisnis lainnya. Internet adalah
suatu public network yang tidak
aman. Saat pengiriman dokumen, seseorang bisa saja dengan ilegal mengubah isi
dokumen itu tanpa diketahui pengirim atau penerima. Tanpa fasilitas keamanan yang baik, penerima akan menerima dokumen tersebut dapat
mencurigai adanya perubahan.
Untuk itu diperlukan suatu tanda tangan pada dokumen,
sehingga penerima dapat merasa yakin dengan adanya tanda tangan oleh
pengirim, dokumen atau informasi tesebut tidak ada yang memanipulasi saat
dalam perjalanan. Tanda tangan yang akan
diberikan
dalam dokumen ini disebut tanda
tangan digital. Sama halnya seperti fungsi tanda
tangan di atas dokumen kertas, tidak dapat disangkal, dimanipulasi dan diakui
keasliannya. Fungsi tanda tangan pada dokumen kertas juga diterapkan pada data
digital.
Tanda
tangan digital merupakan suatu bentuk otentifikasi dari sebuah file atau pesan
yang berupa penanda tertentu yang hanya diketahui oleh pemberi tanda tangan
tersebut. Tanda tangan digital diimplementasikan untuk dapat memverifikasi
pengirim dari file atau pesan yang diterima seseorang. Hal ini dilakukan untuk
mencegah pemalsuan otoritas dari suatu file atau pesan tersebut. Dengan tanda
tangan digital, verifikasi dapat dilakukan tanpa harus mengetahui kunci private
dari pengirim pesan.
Teknologi
tandatangan digital dibuat dengan memanfaatkan teknologi kunci publik. Sepasang
kunci publik-privat dibuat untuk keperluan seseorang. Kunci privat disimpan
oleh pemiliknya dan dipergunakan untuk membuat tanda tangan digital.
Sedangkan kunci publik dapat diserahkan kepada siapa
saja yang ingin memeriksa tanda tangan digital yang bersangkutan pada suatu
dokumen. Beberapa algoritma kriptografi
kunci publik yang biasa digunakan dalam tanda tangan digital adalah RSA,
ElGamal, Schnorr, dan DSA.
Saat ini, tanda tangan digital banyak diaplikasikan dalam
keamanan informasi. Termasuk diantaranya otentifikasi pengirim, kepercayaan
pada file atau pesan yang dikirim, serta pencegahan dari penyangkalan
pengiriman file atau pesan. Selain itu, tanda tangan digital juga dapat
dikombinasikan dengan fungsi hash untuk dapat lebih menjamin integritas file atau
pesan yang dikirim. Salah satu jenis tanda tangan digital yang paling banyak
digunakan adalah sertifikat kunci publik pada jaringan internet.
1.2 Tujuan
Makalah ini disusun dengan tujuan untuk :
a. Menjelaskan
tentang kriptografi dan fungsi hash
b. Menjelaskan
tentang tanda tangan digital
c. Mendeskripsikan
algoritma pada tanda tangan digital
d. Mendeskripsikan
kelemahan dan kelebihan menggunakan tanda tangan digital
1.3 Manfaat
a.
Dapat mengetahui dan mengerti tentang
kriptografi dan fungsi hash
b.
Dapat mengetahui tentang tanda tangan
digital
c.
Dapat mengetahui algoritma yang dipakai
pada tanda tangan digital
d.
Dapat mengetahui kelemahan dan kelebihan
menggunakan tanda tangan digital.
BAB 2
PEMBAHASAN
2.1
Fungsi Hash pada Kriptografi
Kriptografi, secara umum
adalah ilmu
dan seni untuk menjaga kerahasiaan berita [bruce Schneier
- Applied Cryptography]. Selain
pengertian tersebut terdapat pula pengertian ilmu yang mempelajari
teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integrasi data, serta autentikasi data [A.
Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. (Wikipedia, 2012)
Dalam
kriptografi, pesan yang mempunyai
makna disebut plainteks
(plaintext), dan
pesan yang tidak
bermakna lagi disebut cipherteks (ciphertext). Dua
proses utama dalam kriptografi
adalah enkripsi (encryption) dan dekripsi (decryption). Enkripsi adalah
transformasi plainteks
menjadi cipherteks, sedangkan transformasi sebaliknya
dari cipherteks menjadi plainteks semula
disebut dekripsi. Baik
enkripsi maupun dekripsi, proses
keduanya melibatkan
penggunaan kunci (key).
Sistem kriptografi (yang terdiri atas
algoritma kriptografi, kunci, plainteks,
dan cipherteks) dapat digolongkan menjadi
dua kelompok: sistem kriptografi simetri
dan sistem kriptografi
kunci-publik. Pada sistem
kriptografi simetri, kunci untuk enkripsi sama
dengan kunci untuk
dekripsi. Kunci ini bersifat
rahasia sehingga ia
disebut juga secret
key. Contoh algoritma kriptografi simetri adalah DES (Data Encryption Standard)
dan yang terbaru adalah AES (Advanced Encryption Standard).
Sedangkan pada
sistem kriptografi kunci-publik,
kunci untuk enkripsi
tidak sama dengan kunci
untuk dekripsi. Kunci
untuk enkripsi tidak rahasia, sehingga
dinamakan juga kunci
publik (public key), sedangkan
kunci kunci untuk
dekripsi rahasia, sehingga dinamakan
kunci privat (privat key).
Pengirim pesan mengenkripsi
pesan dengan menggunakan kunci
publik si penerima pesan; hanya penerima
pesan yang dapat
mendekripsi pesan menjadi plainteks
semula dengan menggunakan kunci privatnya. Contoh algoritma
kriptografi kunci-publik adalah RSA
(Rivest-Shamir-Adleman) dan
ElGamal.
Fungsi hash
adalah fungsi yang
menerima masukan string yang
panjangnya sembarang dan mengkonversinya menjadi
string keluaran yang panjangnya tetap
(fixed) (umumnya berukuran
jauh lebih kecil daripada ukuran string semula). Jika
string menyatakan pesan
(message), maka sembarang pesan
M berukuran sembarang dikompresi oleh fungsi hash H
melalui persamaan h = H (M). Keluaran fungsi hash disebut juga nilai hash (hash-value) atau
pesan-ringkas (message digest). Pada
persamaan (3), h
adalah nilai hash
atau message digest dari fungsi H untuk pesan M. Fungsi
hash satu-arah adalah
fungsi hash yang bekerja
dalam satu arah, yaitu
pesan yang sudah diubah
menjadi pesan ringkas tidak
dapat dikembalikan lagi menjadi
pesan semula. Contoh fungsi
hash satu-arah adalah MD5
dan SHA. MD5 menghasilkan pesan ringkas
yang berukuran 128 bit,
sedangkan SHA menghasilkan
pesan-ringkas yang berukuran 160 bit.
2.2
Tanda Tangan Digital
Tanda tangan digital atau Digital Signature merupakan suatu tanda
tangan (penanda) yang dicantumkan pada
data digital. Tanda tangan digital bukan
merupakan hasil scan atau input tanda tangan melalui interface tertentu. Tanda
tangan digital adalah suatu nilai kriptografis yang bergantung pada isi data
itu sendiri serta kunci yang digunakan untuk membangkitkan nilai
kriptografisnya. Sehingga nilai setiap tanda tangan digital dapat selalu
berbeda tergantung data yang ditanda tangani.
Tanda tangan digital yang diberikan
kedalam suatu data dapat memvalidasi darimana data tersebut berasal. Tanda
tangan ini memberi rasa aman kepada penerima data karena ia dapat mengetahui
siapa yang mengirim data tersebut. Tanda tangan yang valid saat diotentifikasi
ulang juga menjamin bahwa data yang dikirim tidak mengalami perubahan atau
modifikasi selama proses pengiriman.
Tanda tangan digital menerapkan teori
kriptografi asimetrik. Kriptografi asimetrik merupakakan jenis kriptografi yang
menggunakan kunci yang berbeda untuk mengenkripsi dan mendekripsi pesan.
Kriptografi asimetri ini dimungkinkan setelah dikenalkannya konsep penggunaan
kunci publik dan kunci privat pada kriptografi. Dengan adanya sepasang kunci
publik dan kunci privat ini, pengirim dapat membubuhi data yang dikirimkannya
dengan tanda tangan yang telah dienkripsi. Tanda tangan digital yang telah
dienkripsi ini lebih memberikan rasa aman dan kepercayaan bagi pihak
penerima.
Tanda tangan digital secara umum
terdiri dari tiga bagian (algoritma):
a.
Public
Key Generator
Algoritma untuk menggenerate sepasang kunci publik dan kunci privat. Kunci publik merupakan kunci yang digunakan untuk mengekripsi pesan atau dalam hal ini tanda tangan yang dicantumkan, sedangkan kunci privat digunakan untuk mendekripsi ulang tanda tangan yang telah dienkripsi. Dengan cara ini, dapat diketahui darimana pesan itu berasal.
Algoritma untuk menggenerate sepasang kunci publik dan kunci privat. Kunci publik merupakan kunci yang digunakan untuk mengekripsi pesan atau dalam hal ini tanda tangan yang dicantumkan, sedangkan kunci privat digunakan untuk mendekripsi ulang tanda tangan yang telah dienkripsi. Dengan cara ini, dapat diketahui darimana pesan itu berasal.
b.
Hash
Function
Algoritma
untuk membuat tanda tangan digital atau Signing Algorithm. Fungsi hash akan
menghasilkan nilai tertentu yang unik berdasarkan data yang digunakan sebagai
masukan fungsi hash. Nilai hash ini bisa dijadikan tanda tangan bersama dengan
proses enkripsi yang dilakukan. Sehingga tanda tangan yang dihasilkan pun
benar-benar merepresentasikan pesan yang dikirim.
c.
Verification
Function
Algoritma
untuk memverifikasi tanda tangan yang dicantumkan. Bagian ini sebenarnya sama dengan bagian untuk mengekripsi tanda tangan.
Karena dengan menggunakan pasangan kunci
publik dan privat, seharusnya proses enkripsi dan adekripsi bisa
dilakukan dengan algoritma yang sama
dengan tambahan fungsi hash yang sama pula.
Suatu tanda tangan digital yang digenerate
dari suatu pesan dan dienkripsi menggunakan kunci tertentu harus dapat
digunakan untuk membuktikan keaslian pesan. Artinya fungsi hash dan proses
enkripsi yang diterapkan harus membuat tanda tangan tersebut unik dan hanya
bergantung pada data dan kunci masukan. Selain itu, kunci yang digunakan untuk
proses enkripsi dan dekripsi harus merupakan kunci yang kuat yang tidak mudah
didapatkan oleh pihak ketiga yang tidak memiliki kunci private pengirim.
2.2.1 Kriptografi Kunci Publik pada Tanda Tangan
Digital
Proses penggunaan skema kriptografi
kunci publik untuk proses enkripsi-dekripsi pesan secara umum jauh lebih lambat
dari kriptografi kunci simetri. Hal ini
disebabkan kriptografi kunci publik melibatkan perhitungan angka-angka besar
(big integer) baik pada proses enkripsi maupun dekripsinya. Karena alasan inilah,
kriptografi kunci publik lebih sering digunakan untuk pengiriman kunci simetri
dari pesan yang sebenarnya dikirim, tidak untuk mengenkripsi pesan itu sendiri.
Hal ini juga lah yang mendasari
penggunaan kriptografi kunci publik pada tanda tangan digital. Message digest
dari pesan yang ditanda tangani digenerate terlebih dahulu dengan menggunakan
suatu fungsi hash tertentu. Namun, berbeda dengan skema kriptografi kunci
publik pada umumnya. Kunci yang digunakan untuk mengekripsi message digest
merupakan kunci privat pengirim. Ini dilakukan untuk sekaligus mendapatkan
otentifikasi dari siapa pesan tersebut dikirim.
2.3 Algoritma
Kriptografi Kunci Publik
Banyak algoritma kunci publik lain
yang dapat dimanfaatkan pada tanda
tangan digital. Beberapa diantaranya adalah RSA, Rabin Algorithm dan ElGamal.
Terdapat pula algoritma lain seperti McEliece, Merkle-Hellman Knapsack,
Chor-Rivest Knapsack, Goldwasser-Micali Probabilistic, serta Blum-Goldwasser
Probabilistic. Setiap algoritma memiliki kelebihannya masing-masing. Setiap kelebihan dari
algoritma-algoritma ini berasal
dari sulitnya komputasi yang dilakukan
untuk mendapatkan parameter kuncinya. (Muhammad Luthfi, 2010)
Algoritma Kunci Publik
|
Keunggulan Komputasi
|
RSA
|
·
Integer factorization problem
|
ElGamal
|
·
Discrete logrithm problem
·
Deffic-Hellman problem
|
Rabin Algorithm
|
·
Integer factorization problem
·
Square roots modulo compasite n
|
Mc Eliece
|
·
linear code decoding problem
|
Merkle-Hellman
|
·
knapsack subset sum problem
|
Chor-Rivest
|
·
subset sum problem
|
Blum-Goldwasser
|
·
probabilistic integer factorization problem
·
Rabin problem
|
2.3.1 Algoritma Tanda Tangan Digital
Sebenarnya telah dikenal suatu standar
internasional untuk algoritma yang digunakan pada tanda tangan digital. Standar
tersebut adalah Digital Signature Algorithm (DSA) yang diumumkan oleh National
Institute of Standards and Technology pada bulan Agustus 1991 untuk diterpakan
pada Digital Signature Standard (DSS). DSA sendiri merupakan algoritma yang
dibuat oleh David W. Kravitz. DSA terdiri dari beberapa tahap pengerjaan
dimulai dari mengenerate kunci, penandatanganan dan proses verifikasi.
Untuk menggenerate kunci pada DSA,
terlebih dahulu dipilih fungsi hash H yang akan digunakan. Pada DSS, fungsi
hash yang digunakan ialah SHA-1, namun saat ini SHA-2 yang lebih kuat dari
SHA-1 juga mulai di-pergunakan pada DSS. Selain itu, perlu ditetapkan juga
terlebih dahulu panjang kunci yang diinginkan. Panjang kunci ini mencerminkan
kekuatan algoritma yang dibuat. DSS menggunakan kunci kelipatan 64 antara 512
hingga 1024 bits.
Berikut merupakan potongan kode yang
digunakan untuk menggenerate parameter kunci untuk algoritma RSA yang
dipergunakan pada Digital Signature Standard :
public void generete (int
bitNums)
{
BigInteger
one = new BigInteger (“1”);
BigInteger
two = new BigInteger (“2”);
java.util.Random
r = new java.util.Random ();
//p dan q merupakan bilangan
prima bebeda
sebesar bitNumbs bit
p
= new BigInteger (bitNums, 5, r);
q
= new BigInteger (bitNums, 5, r);
while
(p.Equals(q))
q
= new BigInteger (bitNums, 5, r);
//n
merupakan hasil kali p dan q yang menjadi
bilangan modulus
n
= p.multiply(q);
//m
merupakan nilai dari fungsi euler n
BigInteger
m = p.substract (one).
Multiply (q.substract(one));
//e
merupakan kunci publik yang relatif prima
terhadap m
e
= new BigInteger(bitNums / 2, r);
if
(e.gcd(two).intValue() !=1)
e = e.add(two);
//d
merupakan kunci privat yang dikalikan e kongruen
dengan 1 (mod m)
D
= e.modInverse(m);
}
Fungsi ini pertama-tama akan menggenerate dua buah
bilangan prima p dan q yang bertype BigInteger. Hasil generate ini kemudian
akan dipergunakan untuk menggenerate nilai n, e dan d. Nilai n diperoleh dari
perkalian p dan q. Sedangkan nilai e dan d merupakan pasangan nilai yang
berkorespondensi dengan φ, dimana gcd(e,
φ) = 1 dan d adalah invers modulo φ dari e.
Fungsi enskripsi-deskripsi algoritma RSA :
Public string Encrypt (string input, BigInteger n
BigInteger key)
{
int[
] tmp = toArrInt(input);
string
retval = “ “;
BigInteger
m;
//melakukan
enkripsi blok-blok kecil
for
(int i = 0; i < tmp.Legth; i++)
{
m
= new BigInteger (tmp[i] + “ “);
m
= m.modPow(key, n);
retval
+= (m.toString(16) + “ “);
}
retval
= retval.Substring (0, retval.Length – 1);
return retval;
}
Fungsi enkripsi-dekripsi merupakan
fungsi yang sama, yang membedakan proses enkripsi atau dekripsi yang dilakukan
bergantung pada nilai kunci yang dimasuk- kan. Bila ingin mengenkripsi message hash, dipergu-nakan kunci private d sedangakan bila ingin mendekripsi ulangnya
dipergunakan kunci publik.
2.4 Kelemahan dan Keunggulan
Tanda Tangan Digital
Kelemahan menggunakan teknologi tanda tangan digital, diantaranya :
Kelemahan menggunakan teknologi tanda tangan digital, diantaranya :
a) Biaya tambahan secara institusional
Tanda
tangan digital memerlukan pembentukan otoritas-otoritas yang berhak menerbitkan
sertifikat serta biaya-biaya lain untuk menjaga dan mengembangkan
fungsi-fungsinya.
b) Biaya langganan
Penanda
tangan memerlukan perangkat lunak aplikasi dan juga,membayar untuk memperoleh
sertifikasi dari otoritas yang berhak mengeluarkansertifikat.
Sedangkan kelebihan yang paling utama dari adanya tanda tangan
digital adalah lebih terjaminnya otentikasi dari sebuah dokumen. Tanda tangan digital
sangat sulit dipalsukan dan berasosiasi dengan kombinasi dokumen dan kunci
privat secara unik
BAB III
KESIMPULAN
Kriptografi adalah ilmu dan seni
untuk menjaga kerahasiaan berita. Sistem
kriptografi (yang terdiri atas algoritma kriptografi, kunci,
plainteks, dan cipherteks) dapat digolongkan menjadi
dua kelompok: sistem kriptografi simetri
dan sistem kriptografi
kunci-publik.
Fungsi
hash adalah fungsi
yang menerima masukan string
yang panjangnya sembarang
dan mengkonversinya menjadi string
keluaran yang panjangnya tetap
(fixed) (umumnya berukuran
jauh lebih kecil daripada ukuran string semula).
Tanda tangan digital atau Digital Signature merupakan suatu tanda
tangan (penanda) yang dicantumkan pada
data digital. Tanda tangan digital adalah suatu nilai kriptografis yang
bergantung pada isi data itu sendiri serta kunci yang digunakan untuk
membangkitkan nilai kriptografisnya. Tanda tangan digital secara umum terdiri
dari tiga bagian (algoritma) diantaranya
Public Key
Generator Hash Function Verification Function
Banyak algoritma kunci publik lain
yang dapat dimanfaatkan pada tanda
tangan digital. Beberapa diantaranya adalah RSA, Rabin Algorithm dan ElGamal.
Setiap algoritma memiliki kelebihannya masing-masing. Setiap kelebihan dari
algoritma-algoritma ini berasal
dari sulitnya komputasi yang dilakukan
untuk mendapatkan parameter kuncinya.
Kelebihan yang paling
utama dari adanya tanda tangan digital adalah lebih terjaminnya otentikasi dari
sebuah dokumen. Disamping itu, juga mempunyai kelemahan menggunakan teknologi
ini, diantaranya biaya tambahan secara
institusional dan biaya langganan
DAFTAR PUSTAKA
Stallings,
William. 2005. Cryptographi and Network Security Principles and Practices,
Fourth Edition. New Jersey: Prentice Hall.
Munir,
Renaldi. 2005. Diktat Kuliah IF3038 Kriptografi. Bandung: ITB.
Kurniawan,
Yusuf. 2004. Kriptografi : Keamanan Internet dan Jaringan Telekomunikasi.
Bandung: Informatika.
Tanenbaum,
Andrew S. 1997. Jaringan Komputer Edisi Indonesia dari Computer Network
Edisi III. Jakarta: Prenhallindo.
Tanpa Nama. 2012. Kriptografi, (Online), (http://id.wikipedia.org/wiki/Kriptografi, diakses 20 April 2012).
El said, Fairuz. 2010. Tanda
Tangan digital, (Online), (http://fairuzelsaid.wordpress.com/2010/08/15/cyber-law-tanda-tangan-digital/, diakses 20 April 2012).
Norma Intan, Miana. 2011. Artikel
Fungsi Hash pada Kriptografi, (Online), (http://blog.um.ac.id/mianazafentea/?p=34, diakses 20 April 2012).
Gilbert Fernando, Ricky.
2007. Makalah
Matematika Diskrit Penggunaan Fungsi Hash dalam Kriptografi, (Online), (http://www.docstoc.com/docs/20388020/PENGGUNAAN-FUNGSI-HASH-DALAM-KRIPTOGRAFI, diakses 20 April 2012).
pranala lain -> PEMBAHASAN LENGKAP TENTANG DIGITAL SIGNATURE atau TANDA TANGAN DIGITAL
BalasHapus