Sabtu, 27 April 2013

MAKALAH TANDA TANGAN DIGITAL SEBAGAI APLIKASI FUNGSI HASH PADA KRIPTOGRAFI



BAB I
PENDAHULUAN

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

1 komentar: