BAB 2
LANDASAN TEORI
2.1 Kriptografi
Ditinjau dari segi terminologinya, kata kriptografi berasal dari bahasa Yunani yaitu crypto yang berarti secret (rahasia) dan graphia yang berarti writing (tulisan). Jadi kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat lain. Maka secara termonologi kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut [1].
Kriptografi terdiri dari dua proses, yaitu enkripsi dan dekripsi. Sebuah pesan seolah tidak bermakna dengan merubahnya menurut prosedur tertentu maka disebut dengan enkripsi, dan dibuat bermakna kembali dengan prosedure yang disebut dengan istilah dekripsi. Pesan dalam istilah kriptografi disebut message, yang akak dirahasiakan disebut plaintext, sedangkan bentuk pesan hasil proses enkripsi disebut chipertext.
Kunci yang digunakan dalam kriptografi terbagi menjadi 2 bagian yaitu kunci rahasia (private key) dan kunci publik (public key) [2]. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi.
Algoritma simetris (symmetric algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi sehingga algoritma ini disebut juga sebagai single-key algorithm. Algoritma asimetris (asymmetric algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan tidak sama dengan kunci dekripsi. Algoritma RSA menggunakan dua kunci, yaitu kunci publik dan kunci privat . Kunci publik disebarkan secara umum sedangkan kunci privat disimpan secara
Universitas Sumatera Utara
rahasia oleh si pengguna. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci privat yang digunakan.
Kriptografi bertujuan untuk memberi layanan keamanan sebagai berikut[8] : 1. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. 2. Integritas data (data integrity), adalah layanan yang menjamin bahwa pesan masih asli/utuh belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubstitusian data lain ke dalam data yang sebenarnya. 3. Otentikasi (authentication), adalah layanan yang berhubungan dengan identifikasi baik mengidentifikasi pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan. 4. Nirpenyangkalan (non-repudiation), adalah layanan untuk mencegah etintas yang berkomusikasi melakukan penyangkalan, yaitu pengiriman pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
Berdasarkan tujuan kriptografi yang telah dipaparkan sebelumnya, maka dapat diketahui bahwa digital signature atau tanda tangan digital memiliki konstribusi penting dalam integritas data, otentikasi, dan nirpenyangkalan.
2.2 Digital Signature
Digital signature atau tanda tangan digital merupakan tanda tangan yang dilakukan memakai alat elektronik yang berfungsi sama dengan tanda tangan manual, tetapi berbeda dalam penerapannya. Tanda tangan digital yang dimaksud bukanlah tanda tangan yang di-digitasi dengan menggunakan alat scanner, tetapi suatu nilai kriptografis yang bergantung pada pesan dan pengirim pesan. Dengan tanda tangan digital, maka integritas data dapat dijamin, disamping itu digunakan juga untuk membuktikan asal pesan dan nirpenyangkalan[8].
Universitas Sumatera Utara
Tanda tangan digital adalah suatu bagian dari aspek keamanan dalam kriptografi yang dibuat untuk mengatasi masalah otentikasi dan anti-penyangkalan. Seperti pada pesan atau data dalam bentuk cetak, tanda tangan digunakan sebagai otentikasi pesan atau data tersebut, pesan cetak yang ditandatangani juga menjamin keaslian pesan dan tidak bisa disangkal. Sejak berabad-abad lamanya, tanda tangan telah digunakan sebagai pembuktian keaslian pesan atau dokumen. Hal-hal yang menyebabkan tanda tangan menjadi sebagai bukti keabsahan suatu dokumen adalah sebagai berikut[13] : 1. Tanda tangan adalah asli. Tanda tangan meyakinkan penerima dokumen bahwa benar adanya pengirim pesan telah menandatangani dokumen tersebut. 2. Tanda tangan jarang terlupakan. Tanda tangan adalah bukti bahwa pengirim pesan, tidak ada orang lain, yang sengaja menandatangani pesan tersebut. 3. Tanda tangan tidak dapat digunakan ulang. Tanda tangan merupakan bagian dari dokumen, dimana tidak dapat dipindahkan ke dokumen yang berbeda. 4. Dokumen yang telah ditanda-tangani tidak dapat diubah. Setelah dokumen ditanda-tangani, maka dokumen tidak dapat diubah. 5. Tanda tangan tidak dapat disangkal.
Walaupun begitu tanda tangan pada pesan atau data cetak tidak bisa menjamin seutuhnya. Tanda tangan cetak merupakan representasi dari pembuat pesan sedangkan tanda tangan digital adalah representasi dari isi pesan itu sendiri. Jadi tanda tangan cetak akan sama untuk pembuat pesan yang sama sedangkan tanda tangan digital akan berbeda walaupun pembuat pesan adalah orang yang sama, tanda tangan digital bergantung pada isi pesan bukan pada pembuat pesan.
Kunci Publik
Kunci Privat
Plainteks
Cipherteks
enkripsi
dekripsi
Plainteks
Gambar 2.1 Proses enkripsi dan dekripsi tanda tangan digital
Universitas Sumatera Utara
Ada dua buah cara dalam menandatangani suatu pesan secara digital. Yang pertama adalah dengan menggunakan enkripsi pesan. Dan yang kedua adalah dengan menggunakan kombinasi fungsi hash dan kriptografi kunci publik[12].
Jika kriptografi kunci publik digunakan, maka enkripsi pesan dengan kunci publik tidak dapat digunakan untuk otentikasi, karena setiap orang berpotensial mengetahui kunci publik. Tetapi jika enkripsi pesan menggunakan kunci privat si pengirim dan dekripsi pesan menggunakan kunci publik si pengirim, maka kerahasiaan pesan (secrecy) dan otentikasi keduanya dicapai sekaligus. Ide ini ditemukan oleh diffie dan Hellman[8].
Beberapa algoritma kunci publik dapat digunakan untuk menandatangani pesan dengan cara mengenkripsikannya, asalkan algoritma tersebut memenuhi sifat : D SeK (E PK (M)) = M
(2.1)
D PK (E SK (M)) = M
(2.2)
Dimana PK = kunci publik dan SK = kunci privat.
Misalkan M adalah pesan yang akan dikirim. Pesan M ditandatangani menjadi pesan terenkripsi S dengan menggunakan kunci privat SK si pengirim. S = E SK (M)
(2.3)
Kemudian pesan dikirimkan dengan menggunakan kunci publik (PK) pengirim. M = D PK (S)
(2.4)
dimana D adalah fungsi enkripsi dari algoritma kunci-publik. S dikatakan absah apabila pesan M mempunyai makna.
Universitas Sumatera Utara
Untuk lebih jelasnya dapat dilihat pada diagram di bawah : Pengirim pesan
Dokumen
Kunci privat
Penerima pesan
Dokumen
Enkripsi dokumen dengan RSA
ya
Kunci publik
Dokumen yang telah ditandatangani
tidak Pesan valid
Dekripsi pesan
Pesan disadap / eror
Gambar 2.2 Diagram Pengiriman dan Penerimaan Pesan
2.3 Lehmann Prime Generator
Sebagian besar algoritma kunci publik menggunakan bilangan prima sebagai salah satu nilai parameternya. Bilangan prima yang disarankan berukuran besar sehingga penggunaan tipe data bilangan bulat yang besar mutlak diperlukan [2]. Lehmann adalah salah satu cara untuk mencari bilangan prima. Syarat-syarat pembangkit bilangan prima Lehmann : 1.
Ditentukan bilangan a dengan syarat 1 < a < p, dimana p adalah bilangan prima.
2.
Hitung nilai L (Legendre), dimana : L ≡ a (p-1)/2 mod p
(2.5)
3.
Jika nilai L ≠ 1 dan L ≠ -1, maka p bukanlah bilangan prima.
4.
Jika a (p- 1)/2 ≡ 1 atau - 1 (mod p), maka p kemungkinan prima lebih besar 50%.
5.
Perhitungan nilai L akan diulang sampai seberapa banyak digit nilai prima yang dimasukkan. Misalnya 231 ( terdapat 3 digit bilangan, maka pencarian nilai L
Universitas Sumatera Utara
sebanyak 3 kali) yang apabila langkah ini diulang dan lolos sebanyak t kali maka akan menghasilkan sebuah bilangan prima p yang mempunyai kesalahan tidak lebih dari 1/2t. Contohnya : 1. Misalnya untuk mencari apakah nilai 2337 adalah prima? Ambil nilai a dengan syarat 1
2.4 Algoritma RSA
RSA ditemukan oleh tiga orang yaitu Ron (R)Rivest, Adi (S)Shamir, dan Leonard (A)Adleman, yang kemudian disingkat menjadi RSA, pada tahun 1976. RSA adalah sistem sandi yang barangkali paling mudah dimengerti cara kerjanya, tetapi juga sangat kokoh, baik untuk menyandi ataupun menterjemahkan sandi. RSA hanya
Universitas Sumatera Utara
menggunakan operasi pemangkatan. RSA termasuk algoritma asimetri, yang berarti memiliki dua kunci, yaitu kunci publik dan kunci privat [4].
Berikut ini akan disampaikan pembentukan kunci privat dan kunci publik dengan RSA : 1. Pilih dua bilangan prima acak yang sangat besar, p dan q. kemudian hitung nilai n dan Ф(n) n = pq
(2.6)
Ф(n) = (p-1)(q-1)
(2.7)
2. Kemudian secara acak pilih kunci enkripsi e, sehingga e dan Ф(n) relative prima. Relatif prima artinya faktor pembagi terbesar keduanya adalah 1. Relatif prima berarti : GCD(e, Ф(n)) = 1
(2.8)
dengan syarat e ≠ (p-1), e ≠ (q-1) dan e < n. 3. Hitung nilai d, sehingga : d ≡ e-1 (mod Ф(n))
(2.9)
dimana ekivalen dengan : e . d = 1 + k Ф(n)
(2.10)
Hasil algortima di atas menghasilkan kunci publik (e,n) dan kunci privat (d,n). Penurunan rumus RSA menggunakan prinsip teorema Euler Ф(n). Syaratsyarat
yang harus dipenuhi dalam penggunaan teorema Euler dalam penurunan
rumus RSA adalah sebagai berikut : 1. a harus relatif prima terhadap n 2. Nyatakan pesan menjadi blok-blok plainteks m1, m2, m3, ..., mn, dengan syarat 0 < mi < n-1. 3. Ф(n) = Totient Euler = fungsi yang menentukan berapa banyak dari bilanganbilangan 1, 2, 3, …, n yang relatif prima terhadap n.
Universitas Sumatera Utara
Proses enkripsi dapat dilakukan dengan : C i = P i e mod n
(2.11)
Sedangkan proses dekripsi dilakukan dengan : P i = C i d mod n
(2.12)
Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor-faktor prima, dalam hal ini n = p * q. Bila p dan q diketahui, dan karena kunci enkripsi e tidak rahasia, maka kunci dekripsi d dapat diketahui. Mollin (2002) menyarankan nilai p dan q panjangnya lebih dari 100 digit, dengan demikian hasil n = pq bisa berukuran lebih dari 308 digit. Usaha untuk mencari faktor dari bilangan 308 digit membutuhkan waktu komputasi yang sangat lama, hinga bermilyar - milyar tahun. Oleh karena itu, RSA hanya aman jika nilai n cukup besar.
Contoh algoritma RSA: Misalkan p = 19 dan q = 23 n = p * q = 437 Ф(n) = (18 * 22) = 396 e = 79 d ≡ e -1 (mod (Ф(n))) ≡ 391 Misalkan pesan yang akan dienkripsi dapat dinyatakan sebagai bilangan dalam pengkodean ASCII adalah sebagai berikut : m = 38901794325 karena m harus lebih kecil dari n dan n 3 digit, maka diambil 2 digit per blok pesan, sehingga : m 1 = 38 m 2 = 90 m 3 = 17 m 4 = 94 m 5 = 32 m 6 = 05 kemudian setelah mengetahui nilai m, kemudian ditentukan berapa nilai dari c, sehingga :
Universitas Sumatera Utara
c 1 = m 1 e mod n = 38 79 mod 437 = 304 c 2 = m 2 e mod n = 90 79 mod 437 = 364 c 3 = m 3 e mod n = 17 79 mod 437 = 309 c 4 = m 4 e mod n = 94 79 mod 437 = 303 c 5 = m 5 e mod n = 32 79 mod 437 = 219 c 6 = m 6 e mod n = 5 79 mod 437 = 320 hingga c = 304 364 309 303 219 320
Proses dekripsi akan menjadi sebagai berikut : m 1 = c 1 d mod n = 304 391 mod 437 = 38 m 2 = c 2 d mod n = 364 391 mod 437 = 90 m 3 = c 3 d mod n = 309 391 mod 437 = 17 m 4 = c 4 d mod n = 303 391 mod 437 = 94 m 5 = c 5 d mod n = 219 391 mod 437 = 32 m 6 = c 6 d mod n = 320 391 mod 437 = 5 maka pesan akan menjadi seperti semula, yaitu 38901794325
2.4.1
Algoritma Euclidean
Teorema Euclidean : Misalkan m dan b adalah dua buah bilangan bulat dengan syarat n > 0. Jika m dibagi dengan n maka terdapat dua buah bilangan bulat unik q (quotient) dan r (remainder) sedemikian sehingga m = nq + r dengan 0 ≤ r < n. Contoh :
1987 = 97 × 20 + 47, yaitu 1987 dibagi dengan 97 memberikan hasil 20 dan sisa 47 7420 = 391 × 18 + 382 , yaitu 7420 dibagi dengan 391 memberikan hasil 18 dan sisa 382
Universitas Sumatera Utara
Dengan dasar
Theorem Euclidean sebelumnya, dikembangkan sebuah
algoritma (yang disebut dengan algoritma Euclidean) untuk mencari gcd dari dua buah bilangan bulat. Definisi : Diberikan dua buah bilangan bulat tak negative a dan b (a≥ b). Maka terdapat q i , r i ϵ Z sehingga : a = q1 × b + r1
dengan 0 < r 1 < b
b = q2 × r1 + r2 r1 = q3 × r2 + r3
dengan 0 < r 2 < r 1 dengan 0 < r 3 < r 2
r2 = q4 × r3 + r4 .
dengan 0 < r 4 < r 3
. .
r m-1 = q m+1 × r m + r m+1 r m = q m+2 × r m+1 Jadi r m+1 = gcd(r m , r m+1 ) = gcd(r m-1 , r m ) = gcd(r m-2 , r m-1 ) = … = gcd(a, b)
Contoh : a = 80, b = 12, dan dipenuhi syarat a ≥ b Dihitung dengan menggunakan algoritma Euclidean sbb. : 80 = 6
× 12 + 8
12 = 1
× 8
8
= 2
+ 4
× 4
Jadi gcd (80, 12) = gcd (12, 8) = gcd (8,4) = 4
Algoritma Euclidean yang diperluas dapat digunakan untuk menentukan bilangan bulat positif b < a memiliki invers (terhadap operasi perkalian) modulo a dengan memeriksa jika r m+1 = 1. Definisi : Diberikan q j seperti pada Algoritma Euclidean, didefinisikan
Universitas Sumatera Utara
Berdasarkan pada q j hasil algoritma Euclidean dan pendefinisian t j dan s j diperoleh hubungan r j , t j , dan s j yang diberikan oleh : Teorema : Jika j = 0, 1, 2, …, m maka r j = s j a + t j b dengan t j dan s j seperti yang didefinisikan dan r j diperoleh di Algoritma Euclidean. Akibat
: -1
Jika gcd (a, b) = 1, maka b = t j
Contoh : a = 111, b = 25 Dengan menggunakan algoritma Euclidean dicari j dan dihitung apakah gcd (111, 25) = 1. 111 = 4 × 25 + 11
j=1
25 = 2 × 11 + 3
j=2
11 = 3 × 3 + 2
j=3
3=1×2+1
j=4
2=1×2
j=5
Dari algoritma Euclidean sebelumnya diketahui jika gcd (111, 25) = 1, maka : t0 = 0 t1 = 1 t 2 = t 0 – q 1 t 1 = 0 – 4 × 1 = -4 t 3 = t 1 – q 2 t 2 = 1 – 2 × (-4) = 9
Universitas Sumatera Utara
t 4 = t 2 – q 3 t 3 = -4 – 3 × 9 = -31 t 5 = t 3 – q 4 t 4 = 9 – 1 × (-31) = 40 Maka 25-1 terhadap modulo 111 adalah 40.
2.4.2
Fungsi Totient Euler Ф
Fungsi Totient Euler Ф mendefinisikan Ф(n) untuk n ≥ 1 yang menyatakan jumlah bilangan bulat positif < n yang relatif prima n [4].
Contoh : 1. Ф(8) = 4; Perhitungannya adalah sebagai berikut : bilangan bulat positif yang lebih kecil dari 8 adalah 1 sampai 7. Diantara bilangan-bilangan tersebut, terdapat Ф(8) = 4 yang relatif prima dengan 20, yaitu 1, 3, 5, 7. 2. Ф(25) = 9; Perhitungannya adalah sebagai berikut : bilangan bulat positif yang lebih kecil dari 25 adalah 1 sampai 24. Diantara bilangan-bilangan tersebut, terdapat Ф(25) = 9 yang relatif prima dengan 25, yaitu 1, 3, 5, 7, 11, 13. 17. 19. 23. 3. Ф(40) = 12 ; Perhitungannya adalah sebagai berikut : bilangan bulat positif yang lebih kecil dari 40 adalah 1 sampai 39. Diantara bilangan-bilangan tersebut, terdapat Ф(40) = 9 yang relatif prima dengan 40, yaitu 1, 3, 5, 7, 11, 13. 17. 19. 23, 29, 31, 37.
Jika n prima, maka setiap bilangan bulat yang lebih kecil dari n relatif prima terhadap n. Dengan kata lain, Ф(n) = n- 1 hanya jika n prima. Contoh: Ф(11) = 10; Ф(17) = 16, Ф(23) = 22.
Universitas Sumatera Utara
2.4.3 Modulo Eksponensial
Untuk melakukan komputasi sesuai dengan algoritma RSA ada salah satu bagian penting, yaitu eksponensiasi modulo. Dalam Eksponensiasi Modular, C = Me mod n tidak dihitung dengan memangkatkan M dengan e yang dilanjutkan dengan melakukan pembagian untuk memperoleh sisanya. Hal ini akan membutuhkan space yang sangat besar. Cara yang efisien adalah dengan mereduksi nilai sementara modulo n pada setiap langkah eksponensiasi. Dalam melakukan eksponensiasi harus diperhatikan berapa banyak perkalian modular untuk mencapai C = Me mod n. Semakin sedikit operasi perkalian modular yang dilakukan maka hal itu semakin baik. Untuk menghitung C = Me mod n , dapat menggunakan memory efficientmethod. Langkah awalnya dengan menetapkan nilai awal C= M mod n dan terus melakukan operasi perkalian modular C = C. M (mod n), sebanyak e kali sampai mencapai C = Me mod n, untuk lebih jelasnya dapat dilihat berikut ini: function modular_pow(base, exponent, modulus) c:=1 for e_prime = 1 to exponent c:= (c* base) mod modulus return c
Sebagai contoh dengan menggunakan algoritma di atas, maka untuk mencari nilai dari 412mod 497 adalah sebagai berikut : Ditentukan nilai dari b = 4, e = 12, dan m = 497, maka : e' = 1, c = (1 *4) mod 497 = 4 mod 497 = 4 e' = 2 , c =(4*4) mod 497 = 16 mod 497 = 16 e' = 3, c = (16*4) mod 497 = 64 mod 497 = 64 e' = 4 , c= (64 *4) mod 497 = 256 mod 497 = 256 e' = 5, c = (256 * 4) mod 497 = 1024 mod 497 = 30 e' = 6, c = (30 *4) mod 497 = 120 mod 497 = 120 e' = 7, c = (120*4) mod 497 = 480 mod 497 = 480 e' = 8, c = (480 * 4) mod 497 = 1920 mod 497 =429
Universitas Sumatera Utara
e' = 9, c = (429 * 4) mod 497 = 1716 mod 497 = 225 e' = 10, c = (225 * 4) mod 497 = 900 mod 497 = 403 e' = 11, c =( 403 * 4) mod 497 = 1612 mod 497 = 121 e'= 12, c = (121 *4) mod 497 = 484 mod 497= 484 Maka nilai c yang dihasilkan adalah 484. Sehingga dapat diketahui bahwa hasil dari 412 mod 497 adalah 484.
2.5 Use Case Diagram
Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif pengguna. Use case bekerja dengan cara mendeskripsikan tipikal interaksi antar pengguna sebuah sistem dengan sistemnya sendiri. Use case terdiri dari sekumpulan skenario yang dilakukan oleh seorang actor (orang/pengguna, perangkat keras, urutan waktu, atau sistem yang lain). Sedangkan use case diagram memfasilitasi komunikasi antara analis dan pengguna serta diantara analis dan klien[6].
Sistem UseCase
Actor1
Actor2
Gambar 2.3 Pemodelan Use Case
Sterotype adalah sebuah model khusus yang terbatas untuk kondisi tertentu. Simbolnya adalah “<<” dan ditutup”>>”. <<extends>> digunakan untuk menunjukkan bahwa satu use case merupakan tambahan fungsional dari use cse yang lain jika kondisi atau syarat tertentu terpenuhi. Sedangkan <> digunakan untuk menggambarkan bahwa suatu use case seluruhnya merupakan fungsionalitas dari use case yang lainnya. Contoh penggunaan <> dan <<extends>> bisa dilihat pada gambar 2.4 dan gambar 2.5 di bawah ini[6].
Universitas Sumatera Utara
catat booking
<>
resepsionis tampilkan booking
Gambar 2.4 Use Case Inclusion
Catat yang langsung datang
<<extends>>
Pelayan catat kedatangan
Gambar 2.5 Use Case Extension
Universitas Sumatera Utara