Monday, July 2, 2018

KRIPTOGRAFI PENGGUNAAN TANDA-TANGAN DIGITAL UNTUK MENJAGA INTEGRITAS BERKAS PERANGKAT LUNAK





            PENGGUNAAN TANDA-TANGAN DIGITAL UNTUK MENJAGA INTEGRITAS
BERKAS PERANGKAT LUNAK
DiajukanGunaMemenuhi TugasMatakuliah Kriptografi
MAKALAH



Abstrak
Pendistribusian perangkat lunak melalui web di internet memiliki sejumlah masalah. Salah satunya adalah masalah integritas berkas yang telah di-download. Integritas berkas perangkat lunak berkaitan dengan keaslian berkas program, keutuhan, dan keabsahan pengembang perangkat lunak. Berkas program dapat dimodifikasi oleh pihak ketiga (menjadi tidak asli) atau mengalami kerusakan (corrupt) oleh virus atau gangguan selama transmisi dari komputer server ke komputer client (menjadi tiadk utuh). Selain itu, pengguna perangkat lunak perlu memastikan bahwa program yang ia download dibuat oleh pengembang program yang sah, dan bukan pengembang lain yang menyamar sebagi pengembang program yang asli. Masalah integritas berkas perangkat lunak ini dapat diselesaikan dengan menggunakan tanda-tangan digital. Tanda tangan digital dibangkitkan dengan algoritma kriptografi kunci-publik. Tanda-tangan digital bergantung pada isi berkas program dan kunci pengembang perangkat lunak. Melalui proses verifikasi, pengguna dapat membuktikan integriats berkas perangkat lunak yang ia downlaod dari situs web pengembang.

Pendahuluan
Perkembangan internet yang pesat telah memudahkan orang dalam mendistribusikan berkas digital (file), termasuk dokumen program atau perangkat lunak. Salah satu cara pendistribusian yang sering digunakan adalah menaruh berkas program di dalam situs web server. Pengguna (user) cukup mengakses situs web tersebut kemudian mendownload berkas program ke dalam disk. Program yang di-download dari situs web ada yang gratis (free) dan ada pula yang harus dibeli. Untuk yang terakhir ini, pembeli harus melakukan pembayaran secara online (biasanya dengan menggunakan kartu kredit) terlebih dahulu sebelum dapat melakukan proses download program.
Salah satu masalah yang timbul dari pendistrubisian program melalui internet adalah mengenai integritas program tersebut. Pengguna (atau pembeli) yang telah men-download berkas program perlu meyakini bahwa program yang ia download masih asli dan utuh. Berkas program dikatakan asli apabila ia tidak diubah oleh pihak lain seperti hacker atau oleh virus. Berkas program dikatakan utuh apabila ia tidak rusak (corrupt) karena gangguan fisik selama proses transmisi dari komputer server ke komputer pengguna atau rusak karena serangan virus. Selain itu, pengguna juga perlu memastikan bahwa program tersebut memang benar dibuat oleh pengembang (developer) yang sah, bukan pengembang lain yang menyamar sebagai pengembang yang asli. Penyamaran mungkin dimaksudkan untuk mencuri data rahasia pembeli perangkat lunak (misalnya kode PIN kartu kredit).
Tanda-tangan digital adalah suatu nilai kriptografis yang bergantung pada isi berkas digital dan kunci pemilik berkas digital. Tanda-tangan ini dapat ditaruh (embed) di dalam berkas digital atau disimpan di dalam berkas terpisah. Proses verifikasi dilakukan untuk membuktikan otentikasi tanda tangan digital tersebut. Jika tanda-tangan digital otentik, berarti berkas digital masih asli dan dan pemiliknya adalah orang yang sah. Tanda tangan digital dapat diberikan pada sembarang jenis berkas digital, termasuk berkas program. Hal ini membuka peluang kemungkinan penggunaan tanda tangan digital untuk menjaga integritas perangkat lunak.
PEMBAHASAN
Kriptografi
Sebelum membahas penggunan tanda tangan pada berkas perangkat lunak, terlebih dahulu dijelaskan beberapa konsep dari makalah ini. Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan, Dalam kriptografi, pesan yang mempunyai makna disebut plainteks (plaintext), dan pesan yang tidak bermakna lagi disebut cipherteks. Dua proses utama dalam kriptografi adalah enkripsi dan dekripsi. 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. Enkripsi dan dekripsi dinyatakan secara matematis sebagai fungsi: C = EK (P) dan P = DK (C) yang dalam hal ini, C adalah cipherteks, P adalah plainteks, E adalah fungsi enkripsi, D adalah fungsi dekripsi, dan K adalah kunci yang digunakan selama transformasi.
Sedangkan pada sistem kriptografi kuncipublik, 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 (privatkey). 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 kuncipublik adalah RSA (Rivest-Shamir-Adleman) dan ElGamal.



Fungsi HASH
Berkenaan dengan sistem tanda tangan digital materi yang tepat di gunakan adalah tentang fungsi Hash. 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: 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 mesan-ringkas yang berukuran 128 bit, sedangkan SHA menghasilkan pesan-ringkas yang berukuran 160 bit.

Tanda tangan Digital
Tanda tangan pada data digital disebut tanda-tangan digital (digital signature). Yang dimaksud dengan tanda-tangan digital di sini bukanlah tanda tangan yang di-dijitasi dengan alat scanner, tetapi suatu nilai kriptografis yang bergantung pada pesan dan pengirim pesan (Hal ini kontras dengan tanda tangan pada dokumen kertas yang bergantung hanya pada pengirim dan selalu sama untuk semua dokumen). Teknik yang umum digunakan untuk
membentuk tanda-tangan digital adalah dengan fungsi hash dan melibatkan algoritma kriptografi kunci-publik . Mula-mula pesan M ditransformasi oleh fungsi hash H menjadi pesan ringkas h. Pesan ringkas tersebut dienkripsi dengan kunci privat (PK) pengirim pesan: S = ESK(h). Hasil enkripsi (S) inilah yang disebut tandatangan digital. Tanda-tangan digital dapat ditambahkan (append) pada pesan atau terpisah dari pesan dan dikirim secara bersamaan. Di tempat penerima, tanda-tangan diverifikasi untuk dibuktikan keotentikannya dengan cara berikut:
a.       Tanda-tangan digital S didekripsi dengan menggunakan kunci publik (PK) pengirim pesan, menghasilkan   pesan-ringkas semula, h, sebagai berikut: h = DPK(S)
b.      Pengirim kemudian mengubah pesan M menjadi pesan ringkas h’ dengan menggunakan fungsi hash satu-arah yang sama dengan fungsi hash yang digunakan oleh pengirim.
c.       Jika h’ = h, berarti tanda-tangan yang diterima otentik dan berasal dari pengirim yang benar.
Tanda tangan digital untuk berkas perangka lunak
Tanda tangan digital dapat diberikan kesembarang data digital, tidak hanya pesan, termasuk di dalamnya berkas program. Ada dua cara yang dapat dilakukan dalam penggunaan tanda tangan digital untuk berkas program.Cara pertama, tanda tangan diletakkan pada berkas terpisah dari berkas executable. Menambahkan (append) tanda tangan digital langsung ke dalam berkas program executable dapat menyebabkan program menjadi rusak sehingga ia tidak bisa dieksekusi (run). Oleh karena itu, tanda tangan harus diletakkan pada berkas terpisah. Tanda tangan digital dibangkitkan mula-mula dengan menghitung nilai hash (atau pesan-ringkas) dari berkas program, lalu nilai hash ini dienkripsi dengan kunci privat pengembang program. Gambar 2 memperlihatkan tanda tangan digital dari berkas program notepad.exe yang dibangkitkan dengan perangkat lunak PGP (Pretty Good Privacy).
Pengguna (pembeli) program men-download ketiga macam berkas ini (berkas executable, berkas tanda tangan digital, dan berkas kunci publik pengembang perangkat lunak). Pengguna menguji integritas perangkat lunak yang ia download dengan melakukan verifikasi terhadap tanda tangan digital. Verifikasi tanda tangan digital menggunakan kunci publik pengembang program (asumsikan pengguna memiliki program verifikasi tanda tangan digital seperti PGP, atau program verifikasi disediakan oleh pengembang program di dalam situs web tersebut).Jika verifikasi OK, berarti program yang didownload asli, utuh, dan dibuat oleh pengembang program yang absah. Tetapi jika verifikasi gagal, berarti program yang di-download mengalami kerusakan, perubahan, atau tidak dibuat oleh pengembang program yang benar.
Namun, pemberian tanda tangan dengan cara pertama ini memiliki kelemahan. Pihak ketiga yang memodifikasi program dapat membangkitkan kunci privat dan kunci publiknya sendiri. Lalu, ia menghitung tanda tangan digital dengan menggunakan kunci privatnya, selanjutnya mengganti kunci publik pengembang yang sah dengan kunci publiknya. Pengguna yang mendownload ketiga berkas ini tidak mengetahui bahwa ia telah men-download program yang sudah berubah.
Cara kedua yang lebih aman adalah menambahkan tanda tangan digital (mungkin juga termasuk kunci publiknya) pada saat pengembangan program. Tanda tangan ini dibangkitkan dari hasil enkripsi terhadap nilai hash dari berkas executable program tersebut. Dengan teknik tertentu, program sumber dikompilasi kembali bersama-sama dengan tanda tangan digital tersebut (dan kunci publik), sehingga tanda-tangan digital (dan kunci publik) menyatu dengan berkas executable, Berkas executable ini masih dapat dieksekusi.

Pengguna men-download berkas program tersebut dari situs web. Integritas perangkat lunak diuji di awal eksekusi program. Jika verifikasi OK, berarti program yang di-download asli, utuh, dan dibuat oleh pengembang program yang benar. Tetapi jika verifikasi gagal, berarti program yang didownload mengalami kerusakan, perubahan, atau tidak dibuat oleh pengembang program yang benar. Meskipun cara kedua ini relatif aman daripada cara pertama, namun kelemahannya tetap masih ada. Jika program mengalami kerusakan selama transmisi, proses verifikasi tidak dapat dilakukan karena program tidak dapat dieksekusi (yang berarti ia tidak dapat memerika integritas dirinya sendiri).

Kesimpulan
Tanda-tangan digital dapat digunakan untuk menjaga integritas berkas program atau perangkat lunak yang diletakkan di dalam situs web. Integritas perangkat lunak menyangkut tiga hal: keaslian berkas, keutuhan berkas, dan keabsahan pengembang program. Tanda tangan digital dibangkitkan dengan mengenkripsi nilai hash dari berkas program dengan
menggunakan kunci publik pengembang program. Selanjutnya, tanda tanagn digital dapat disimpan di dalam berkas terpisah atau dikompialsi dengan berkas program sumber sehingga menyatu di dalam program.
            Integritas perangkat lunak dilakukan dengan memverifikasi tanda tangan digital. Proses Verifikasi membutuhkan kunci publik pengembang program.















Daftar pustaka
1.      Rinaldi Munir, Departemen Teknik Informatika, Fakultas Teknologi Industri, Institut Teknologi Bandung
2.      Bruce Schneier, Bruce, Aplied Cryptography 2nd, John Wiley & Sons, 1996
3.      Fred Piper & Sean Murphy, Cryptography, AVery Short Introduction, Oxford University Peress, 2002.
4.      Rinaldi Munir, Bahan Kuliah IF5054 Kriptografi, Departemen Teknik Informatiak ITB, 2004.
5.      Anugerah Redja Kusuma, Rizki Yulianto, dan Widhiyo Sudiyono, Proteksi Perangkat Lunak dengan Algoritma Kriptogarfi Kunci Publik, Tugas mata kuliah IF5054 Kriptografi, Departemen Teknik Informatika ITB, 2004.

No comments: