9. BILANGAN BULAT
9.6 Bilangan Prima Definisi 9.6 Bilangan bulat positif p > 1 disebut bilangan prima jika faktor-faktor positif dari p hanya 1 dan p. Dengan kata lain bilangan-bilangan positif yang habis membagi p hanya a dan p. Bilangan positif yang lebih besar dari 1 dan bukan bilangan prima disebut bilangan komposit
Sebagai contoh, bilangan 37 adalah bilangan prima karena faktor-faktornya hanya bilangan 1 dan 37. Sedangkan bilangan 39 adalah bilangan komposit, karena selain 1 dan 39 masih ada faktor-faktor lainnya, yaitu 3 dan 13. Barisan bilangan prima dimulai dari 2, yaitu: 2, 3, 5, 7, 11, 13, …
Teorema 9.6 Teorema Dasar Aritmatik (The Fundamental Theorem of Arithmatic) Setiap bilangan positif yang lebih besar atau sama dengan 2 dapat dinyatakan sebagai perkalian satu atau lebih bilangan prima. Secara implisit pernyataan “setiap bilangan positif” pada teorema 9.6 berarti berlaku untuk bilangan prima dan komposit.
Contoh 9.15 Faktor prima dari bilangan-bilangan: 100, 64, 641, 999, dan 1024 adalah: 100 = 2 . 2 . 5 . 5 = 22 . 52 64 = 2 . 2 . 2 . 2 . 2 . 2 = 26 641 = 641 999 = 3 . 3 . 3 . 37 = 33 . 37 1024 = 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 . 2 = 210
Teorema 9.7 Jika n adalah bilangan komposit, maka n mempunyai faktor prima yang lebih kecil atau sama dengan Untuk menguji apakah n bilangan prima atau komposit, dapat kita uji dengan cara membagi n dengan salah satu bilangan prima 2, 3, …, atau bilangan prima Jika n habis dibagi dengan salah satu bilangan prima tersebut ,maka n adalah bilangan komposit. Jika tidak ada bilangan prima mulai dari 2 sampai dengan yang habis membagi n, maka n adalah bilangan prima
Contoh 9.16 Tentukan apakah bilangan-bilangan: 241 dan 1049 adalah bilangan prima atau komposit. Penyelesaian: . Bilangan prima adalah 2, 3, 5, 7, 11, 13. Karena tidak ada bilangan prima yang habis membagi 241, maka bilangan 241 adalah bilangan prima. 2, 3, 5, 7, 11, dan 13. Karena ada salah satu bilangan prima yang , dalam hal ini 11, yang habis membagi 187, maka bilangan 187 adalah bilangan komposit.
9.7 Kriptografi Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan. Keamanan pesan diperoleh dengan menyandikannya menjadi pesan yang tidak dimengerti oleh orang yang tidak berkepentingan Pesan yang akan disandikan disebut plainteks. Pesan yang telah disandikan disebut cipherteks. Proses menyandikan pesan dari plainteks menjadi cipherteks disebut enkripsi. Proses mengembalikan cipherteks menjadi plainteks disebut dekripsi.
Orang yang melakukan kriptanalisis disebut kriptanalis. Kriptanalisis adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang diberikan. Orang yang melakukan kriptanalisis disebut kriptanalis. Kriptologi adalah studi mengenai kriptografi dan kriptanalisis. plainteks enkripsi cipherteks dekripsi Proses enkripsi dan dekripsi
Notasi Matematis Jika cipherteks dilambangkan dengan C dan plainteks dilambangkan dengan P, maka fungsi enkripsi E memetakan P ke C, E(P) = C (9.1) Pada proses kebalikannya, fungsi enkripsi D memetakan C ke P, D(C) = P (9.2) Dari (9.1) dan (9.2) didapat, D(E(P)) = P (9.3)
Contoh 9.1 Plainteks : STRUKTUR DISKRIT Misal sekelompok orang sepakat untuk menyandikan plainteks menggunakan algoritma yang sama. Algoritmanya adalah mempertukarkan posisi tiap dua karakter yang berurutan pada plainteks, maka didapat, Cipherteks : TSURTKRU IDKSIRT Dengan menggunakan algoritma tersebut, maka cipherteks bisa dikembalikan menjadi plainteks.
Contoh 9.1 adalah contoh kriptografi yang mengandalkan kerahasiaan algoritma. Algoritma yang mengandalkan kerahasiaan algoritma disebut algoritma restricted. Kelemahan algoritma adalah jika ada satu atau beberapa orang keluar dari kelompoknya, maka algoritma harus diubah, karena kerahasisaannya tidak bisa diandalkan lagi. Pada saat ini kriptografi tidak lagi mengandalkan kerahasiaan algoritmanya. Algoritma boleh diketahui umum.
Kekuatan algoritma saat ini terletak pada kunci, yaitu deretan karakter atau bilangan bulat. Kunci dijaga kerahasiaannya dan hanya orang yang mengetahui kunci yang dapat melakukan enkripsi dan dekripsi. Kunci tersebut sama fungsinya seperti sandi-lewat (password) pada sistem komputer, PIN pada kartu ATM atau kartu kredit. Perbedaannya, jika sandi-lewat atau PIN bertujuan untuk otorisasi akses, sedangkan kunci pada kriptografi digunakan untuk proses enkripsi dan dekripsi.
Caesar cipher Caesar cipher adalah teknik kriptografi yang digunakan oleh Kaisar Romawi, Julius Caesar untuk menyandikan pesan yang dikirim kepada para pejabatnya. Pada Caesar cipher tiap huruf ditukarkan dengan huruf ke 3 berikutnya dari susunan alfabet. Kunci dari algoritma ini adalah jumlah pergeseran huruf, yaitu 3.
Susunan alfabet setelah digeser sejauh 3 haruf adalah: Plainteks : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Cipherteks : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Kunci yang digunakan adalah menggeser 3 huruf berikutnya. Artinya tiap huruf disubstitusi dengan huruf ke tiga berikutnya. Dengan mengkodekan setiap huruf dengan integer, yaitu A = 0, B = 1, C = 2, … , Z = 25, maka secara matematis pergeseran 3 huruf alfabet ekivalen dengan melakukan operasi modulo terhadap plainteks p menjadi cipherteks c dengan persamaan, c = E(p) = (p + 3) mod 26
Secara umum fungsi enkripsi dan dekripsi pada Caesar cipher dapat dibuat lebih umum dengan menggeser huruf alfabet sejauh K, sehingga Proses enkripsi dilakukan dengan menggunakan rumus c = E(p) = (p + K) mod 26 Sedangkan dekripsi p = D(c) = (c – K) mod 26 Pada persamaan diatas K disebut kunci. Contoh 9.2 Sandikan pesan: AWASI ASTERIX DAN TEMANNYA OBELIX dengan menggunakan Caesar cipher dengan K = 3.
Penyelesaian Dengan menggunakan rumus c = E(p) = (p + 3) mod 26 dan mengkonversi alfabet ke bilangan integer, maka cipherteks dapat ditentukan: p1 = A c1 = E(0) = (0 + 3) mod 26 = 3 p2 = W c2 = E(22) = (22 + 3) mod 26 = 25 p3 = A c3 = E(0) = (0 + 3) mod 26 = 3 p4 = S c4 = E(18) = (18 + 3) mod 26 = 21 dst……. Maka diperoleh cipherteks sebagai berikut: AWASI ASTERIX DAN TEMANNYA OBELIX DZDVL DVWHULA GDQ WHPDQQBD REHOLA
Sistem Kriptografi Kunci Simetri plainteks enkripsi cipherteks dekripsi K1 K2 Enkripsi dan Dekripsi pada algoritma kriptografi modern Sistem Kriptografi Kunci Simetri Jika proses enkripsi dan dekripsi menggunakan kunci yang sama (K1 = K2), maka disebut Sistem Kriptografi kunci simetri. Istilah lain yang digunakan adalah Kriptografi kunci pribadi. Contoh algoritma simetri adalah DES (Data Encryption Standard)
Sistem Kriptografi Kunci Publik plainteks enkripsi cipherteks dekripsi K1 K2 Enkripsi dan Dekripsi pada algoritma kriptografi modern Sistem Kriptografi Kunci Publik Jika proses enkripsi dan dekripsi menggunakan kunci yang tidak sama (K1 = K2), maka disebut Sistem Kriptografi kunci publik atau Sistem Kriptografi Nirsimetri. Contoh algoritma kunci publik adalah RSA (Rivest-Shamir-Adleman).
Algoritma RSA Algoritma kriptografi RSA termasuk sistem kriptografi kunci publik, karena kunci enkripsi dan dekripsi berbeda. Berikut adalah algoritma RSA. Pembangkitan pasangan kunci Pilih dua buah bilangan prima a dan b sembarang. Jaga kerahasiaan a dan b. 2. Hitung n = a.b. Nilai n tidak perlu dirahasiakan. 3. Hitung m = (a – 1)(b – 1). Setelah m dihitung, a dan b dapat dihapus agar tidak diketahui oleh pihak lain. 4. Pilih sebuah bilangan bulat e untuk kunci publik. Syaratnya adalah e dan m harus relatif prima. 5. Hitung kunci deskripsi d, dengan kekongruenan ed 1 (mod m).
Enkripsi Susun pesan menjadi blok-blok plainteks: p1, p2, p3, … , pi. Syaratnya nilai pi harus terletak dalam himpunan nilai (1, 2, 3, … , n–1) untuk menjamin hasil perhitungan tidak berada di luar himpunan. 2. Hitung blok cipherteks ci untuk blok palinteks pi dengan menggunakan persamaan ci = pie mod n e adalah kunci publik. Dekripsi Proses dekripsi dilakukan dengan menggunakan rumus, pi = cid mod n d adalah kunci publik.
Contoh 9.3 Lakukan proses enkripsi terhadap plainteks: HARI INI Penyelesaian Berdasarkan tabel ASCII, plainteks dapat dikonversi menjadi bentuk desimal 7265827332737873 Pembangkitan pasangan kunci Pilih nilai a dan b masing-masing 47 dan 71. Hitung n = (47)(71) = 3337 Hitung m = (47 – 1)(71 – 1) = 3220 Pilih e = 79. Ingat e dan m harus relatif prima. Hitung d dari rumus ed 1 (mod m). Didapat d = 1019. Nilai d harus dirahasiakan.
Enkripsi 1. Nyatakan plainteks dalam bentuk blok-blok kecil, misalnya menjadi blok-blok yang berukuran 3 digit. Berdasarkan tabel ASCII, plainteks dapat dikonversi menjadi bentuk desimal 7265827332737873 p1 = 726 p4 = 273 p2 = 582 p5 = 787 p2 = 733 p6 = 003 2. Hitung ci = pie mod n c1 = (726)79 mod 3337 = 215 c2 = (582)79 mod 3337 = 776 c3 = (733)79 mod 3337 = 1743 c4 = (273)79 mod 3337 = 933 c5 = (787)79 mod 3337 = 1731 c6 = (003)79 mod 3337 = 158
Dekripsi Proses dekripsi menggunakan rumus, pi = cid mod n P1 = 2151019 mod 3337 = 726 P2 = 7761019 mod 3337 = 582 P3 = 17431019 mod 3337 = 733 P4 = 9331019 mod 3337 = 273 P5 = 17311019 mod 3337 = 787 P6 = 1581019 mod 3337 = 003 Kembali ke tabel ASCII, didapat: 726582733273787003
Latihan Lakukan proses enkripsi terhadap plainteks: SISTEM INFORMASI Penyelesaian Berdasarkan tabel ASCII, plainteks dapat dikonversi menjadi bentuk desimal: 83738384697732737870798277658373 Pembangkitan pasangan kunci Pilih nilai a dan b masing-masing 37 dan 51. Hitung n = (37)(51) = 1887 Hitung m = (37 – 1)(51 – 1) = 1800 Pilih e = 29. Ingat e dan m harus relatif prima. Hitung d dari rumus ed 1 (mod m). Didapat d = 869. Nilai d harus dirahasiakan.
Enkripsi 1. Nyatakan plainteks dalam bentuk blok-blok kecil, misalnya menjadi blok-blok yang berukuran 3 digit. Berdasarkan tabel ASCII, plainteks dapat dikonversi menjadi bentuk desimal 83738384697732737870798277658373 p1 = 837 p5 = 327 p9 = 776 p2 = 383 p6 = 378 p10 = 583 p3 = 846 p7 = 707 p11 = 073 p4 = 977 p8 = 982
2. Hitung ci = pie mod n c1 = (837)29 mod 1887 = 378 c7 = (707)29 mod 1887 = 317 c2 = (383)29 mod 1887 = 191 c8 = (982)29 mod 1887 = 217 c3 = (846)29 mod 1887 = 1815 c9 = (776)29 mod 1887 = 1775 c4 = (977)29 mod 1887 = 536 c10 = (583)29 mod 1887 = 955 c5 = (327)29 mod 1887 = 327 c11 = (073)29 mod 1887 = 1516 c6 = (378)29 mod 1887 = 837
Dekripsi Proses dekripsi menggunakan rumus, pi = cid mod n p1 = 378869 mod 1887 = 837 p7 = 317869 mod 1887 = 707 p2 = 191869 mod 1887 = 383 p8 = 217869 mod 1887 = 982 p3 = 1815869 mod 1887 = 846 p9 = 1775869 mod 1887 = 776 p4 = 536869 mod 1887 = 977 p10 = 955869 mod 1887 = 583 p5 = 327869 mod 1887 = 327 p11 = 1516869 mod 1887 = 073 p6 = 837869 mod 1887 = 378 83738384697732737870798277658373
9.8 Fungsi Hash Data yang disimpan di dalamn memori komputer perlu ditempatkan dalam suatu cara sedemikian sehingga pencariannya apat dilakukan dengan cepat. Setiap data yang berupa record mempunyai field kunci yang unik yang membedakan suatu record dengan record lainnya. Fungsi Hash digunakan untuk menempatkan suatu record yang mempunyai nilai kunci k. Fungsi Hash yang paling umum berbentuk: H(k) = k mod m
Misal m = 11, sehingga kita mempunyai sel-sel memori yang diberi indeks 0 sampai 10. Kita akan menyimpan data record yang masingt-masing mempunyai kunci 15, 558, 32, 132, 102, dan 5. Pada mulanya sel-sel memori dalam keadaan kosong. Keenam data record tersebut masing-masing disimpan pada lokasi yang dihitung sebagai berikut: h(15) = 15 mod 11 = 4 h(558) = 558 mod 11 = 8 h(32) = 32 mod 11 = 10 h(132) = 132 mod 11 = 0 h(102) = 102 mod 11 = 3 h(5) = 5 mod 11 = 5
Keadaan sel-sel memori setelah penyimpanan keenam data record tersebut digambarkan seperti berikut: Karena fungsi hash bukan fungsi satu ke satu (beberapa nilai k yang berbeda dapat menghasilkan nilai h(k) yang sama), maka dapat terjadi bentrokan (collision) dalam penempatan suatu data record. Misal kita akan menempatkan data record dengan kunci 257. Perhitungan hash menghasilkan h(257) = 257 mod 11 = 4, Padahal sel memori dengan lokasi 4 sudah terisi. Kita katakan telah terjadi bentrokan. 132 102 15 5 558 32 1 2 3 4 6 7 8 9 10
Untuk mengatasi bentrokan perlu diterapkan kebijakan resolusi bentrokan (collision resolution policy). Satu kebijakan resolusi bentrokan adalah mencari sel tak terisi tertinggi berikutnya (dengan 0 diasumsikan mengikuti 10). Jika kita terapkan kebijakan ini, maka data record dengan kunci 257 ditempatkan p[ada posisi 6. Untuk mencari data record tertentu, maka kita gunakan fungsi hash kembali. Misal kita akan mencari data record dengan kunci p, maka kita hitung h(p) = p mod 11, misal h(p) = q. Jika record p sama dengan isi sel pada lokasi q, kita katakan lokasi record p ditemukan. Sebaliknya jika record p tidak sama dengan isi sel pada lokasi q, maka lihat posisi tertinggi berikutnya.
S e l e s a i