KRIPTOSISTEM KUNCI PUBLIK LUC
SERTA IMPLEMENTASINYA PADA PROGRAM LAZARUS
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Pendidikan Program Studi Pendidikan Matematika
Oleh :
BELLA KUSUMAWATI NIM : 131414105
PROGRAM STUDI PENDIDIKAN MATEMATIKA
JURUSAN PENDIDIKAN MATEMATIKA DAN ILMU PENGENTAHUAN ALAM FAKULTAS KEGURUAN DAN ILMU PENDIDIKAN
UNIVERSITAS SANATA DHARMA YOGYAKARTA
i
LUC PUBLIC KEY CRYPOSYSTEM
AND ITS IMPLEMENTATION IN LAZARUS PROGRAM.
THESIS
In a partial fulfilment of the requirements For the degree of Sarjana Education
Mathematic Education Program
By:
BELLA KUSUMAWATI NIM : 131414105
HALAMAN JUDUL
MATHEMATIC EDUCATION PROGRAM
EDUCATIONAL MATHEMATICS AND SCIENCE DEPARTMENT FACULTY OF TEACHER TRAINING AND EDUCATION
SANATA DHARMA UNIVERSITY YOGYAKARTA
iii
iv
HALAMAN PERSEMBAHAN
“Sesungguhnya Allah tidak akan mengubah keadaan suatu kaum, sehingga
mereka mengubah keadaan yang ada pada diri mereka sendiri.” (QS Ar Ra’d 11)
Karya ini kupersembahkan untuk: Allah SWT Kedua orang tuaku Ketiga kakakku Sahabat-sahabatku Teman, kakak-kakak, adik-adik almamaterku
v
PERNYATAAN KEASLIAN KARYA
Saya menyatakan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 8 Juni 2018 Penulis
vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini saya mahasiswa Universitas Sanata Dharma: Nama : Bella Kusumawati
NIM : 131414105
Demi perkembangan ilmu pengetahuan saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul:
KRIPTOSISTEM KUNCI PUBLIK LUC
SERTA IMPLEMINTASINYA PADA PROGRAM LAZARUS
Dengan demikian, saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengolahnya dalam pangkalan data mendistribusikan secara terbatas, dan mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa harus meminta izin kepada saya atau memberikan royalty pada saya selama masih tetap mencantantumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya
Yogyakarta, 8 Juni 2018 Yang menyatakan
vii ABSTRAK
Bella Kusumawati, 2018. Kriptosistem Kunci Publik LUC serta Implementasinya pada Program Lazarus. Skripsi. Program Studi Pendidikan
Matematika, Jurusan Pendidikan Matematika dan Ilmu Pengetahuan Alam, Falkutas Keguruan dan Ilmu Pendidikan, Universitas Sanata Dharma.
Penelitian ini bertujuan untuk mengkaji kriptosistem kunci publik LUC sebagai perkembangan dari kriptosistem kunci publik RSA serta implementasinya pada program Lazarus. Penelitian diawali dengan membahas mengenai kriptosistem kunci publik RSA. Selanjutnya dibahas mengenai tanda tangan digital serta skema tanda tangan menggunakan algoritma RSA. Langkah berikutnya akan dibahas mengenai salah satu kelemahan pada algoritma RSA yakni penipuan tanda tangan RSA menggunakan adaptive chosen message attack. Serangan ini mungkin terjadi karena proses enkripsi dan dekripsi pada algoritma RSA menggunakan perkalian bilangan asli.
Berdasarkan kelemahan dari algoritma RSA terhadap adaptive chosen message attack, maka dikembangkan sebuah kriptosistem kunci publik yakni kriptosistem LUC. Kriptosistem LUC menggunakan fungsi Lucas dalam proses enkripsi dan dekripsinya. Sehingga dianggap dapat bertahan dari serangan adaptive chosen message attack.Selain itu peneliti membuat simulasi sederhana dari algoritma LUC dengan menggunakan program Lazarus.
viii ABSTRACT
Bella Kusumawati, 2018. LUC Public Key Cryposystem and its Implementation
in Lazarus Program. Thesis. Mathematic Education Study Program,
Mathematic and Science Education Departement, Faculty of Teacher Training and Education, Sanata Dharma University, Yogyakarta.
This research aims to examine the LUC public key cryptosystem as the development of the RSA public key cryptosystem and also implementation in Lazarus program. The research is begins by discussing RSA public key cryptosystem. Further, discussed about digital signatures and signature schemes using the RSA algorithm. The next step will be discussed about one of the weaknesses in RSA algorithm is the signature forging using adaptive chosen message attack. This attack may occur because the encryption and decryption process of the RSA algorithm uses the multiplication of natural numbers.
Based on the weakness of the RSA algorithm towards adaptive chosen message attack, then developed a public key cryptosystem that is LUC cryptosystem. The LUC cryptosystem uses the Lucas function in its encryption and decryption process. Therefore it is considered to survive from an adaptive chosen message attack. In addition, the researchers made a simple simulation of the LUC algorithm using Lazarus program.
ix
KATA PENGANTAR
Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa karena dengan rahmat dan hidayat-Nya, penulis dapat menyelesaikan skripsi dengan judul “Kriptosistem Kunci Publik LUC serta Implementasinya pada Program Lazarus”. Skripsi ini disusun sebagai salah satu syarat memperoleh gelar sarjana pendidikan pada Program Studi Pendidikan Matematika, Jurusan Pendidikan Matematika dan Ilmu Pengetahuan Alam, Falkutas Keguruan dan Ilmu Pendidikan, Universitas Sanata Dharma.
Selain itu, penulis juga mendapatkan banyak bimbingan, bantuan dan motivasi dari beberapa pihak sehingga penulis dapat menyelesaikan skripsi ini dengan baik. Oleh karena itu, penulis mengucapkan terimakasih kepada:
1. Bapak Antonius Yudhi Anggoro M.Si. selaku dosen pembimbing yang senantiasa sabar dalam membimbing dan memberi motivasi selama sesi bimbingan skripsi. 2. Bapak Beni Utomo M.Sc. dan Ibu Dra. Haniek Sri Pratini M.Pd. selaku dosen
pembimbing akademik yang senantiasa memberikan motivasi maupun bimbingan terutama berhubungan dengan akademis.
3. Bapak dan Ibu dosen yang telah memberikan bekal ilmu kepada saya selama proses pembelajaran serta mendidik untuk menjadi manusia yang lebih humanis.
4. Kedua orang tuaku yakni Bapak Sugiyono dan Ibu Budi Puryati M.Pd. yang selalu sabar dalam memberikan motivasi dan dukungan kepada penulis.
x
5. Kakak-kakakku Ira Puspitasari, Dwi Aprilia Sari dan Wahyu Budi Santoso yang senantiasa memberikan motivasi, semangat, dukungan untuk menyelesaikan skripsi ini.
6. Sahabat-sahabat tersayangku Sri Nyoman Wulandari, Elcia Margaretha Sabakhtani dan Marcelina Fanny K. yang selalu memberikan motivasi, bantuan penulis untuk menyelesaikan skripsi.
7. Teman-teman Dave Kitchen dan Ko Susanto yang telah mengajarkan kepercayaan diri dan kesabaran dalam menghadapi segala hal.
8. Semua pihak yang telah membantu penulis selama proses diperkuliahan hingga skripsi ini selesai yang tidak bias kuucapkan satu persatu.
Penulis menyadari masih ada banyak kekurangan dalam penulisan skripsi ini. Oleh sebab itu, penulis menerima saran dan kritik untuk membangun dan menyempurnakan skripsi ini. Semoga skripsi ini dapat memberi manfaat dan wawasan kepada pembaca.
Yogyakarta, 8 Juni 2018
xi DAFTAR ISI
halaman
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN ... ii
HALAMAN PENGESAHAN ... iii
HALAMAN PERSEMBAHAN ... iv
PERNYATAAN KEASLIAN KARYA ... v
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH .. vi
ABSTRAK ... vii
ABSTRACT ... viii
KATA PENGANTAR ... ix
DAFTAR ISI ... xi
DAFTAR TABEL ... xiii
DAFTAR GAMBAR ... xiv
DAFTAR SIMBOL ... xv
DAFTAR ISTILAH ... xvi
BAB I PENDAHULUAN ... 1 A. Latar Belakang ... 1 B. Rumusan Masalah ... 3 C. Tujuan Penulisan ... 4 D. Batasan Masalah... 4 E. Metode Penulisan ... 4 F. Manfaat Penulisan ... 4 G. Sistematika Penulisan ... 5
xii
A. Bilangan Bulat ... 7
A. Keterbagian ... 9
B. Algoritma Euclid ... 15
C. Kekongruenan ... 23
D. Fermat dan Fungsi (𝝓) Euler ... 25
BAB III KRIPTOSISTEM RSA DAN LUC ... 32
A. Algoritma RSA ... 32
B. Tanda Tangan Digital ... 37
C. Skema Tanda Tangan Digital Algoritma RSA... 43
D. Kelemahan Algoritma RSA ... 45
E. Fungsi Lucas ... 47
F. Hubungan Fungsi Lucas ... 52
G. Kriptosistem Kunci Public LUC ... 59
H. Implementasi Algoritma LUC... 61
I. Kekuatan Kriptografi LUC ... 65
BAB IV IMPLEMENTASI ALGORITMA LUC DENGAN LAZARUS ... 67
A. Sejarah Perkembangan Pascal dan Lazarus ... 67
B. Perangkat Penelitian ... 68
C. Flowchart Algoritma LUC ... 69
D. Implimentasi Algoritma LUC Menggunakan Lazarus ... 85
E. Perbandingan Manual dengan Lazarus ... 99
BAB V PENUTUP ... 107
A. Kesimpulan ... 107
B. Saran ... 108
xiii
DAFTAR TABEL
Tabel 3.1 ASCII 0-29... 34
Tabel 3.2 Contoh Algoritma Euclid Diperluas pada Kriptosistem RSA ... 37
Tabel 3.3 Contoh Algoritma Euclid Diperluas pada Kriptosistem LUC ... 64
Tabel 4.1 Hasil Blok Plaintext ... 100
Tabel 4.2 Hasil Mengkonversi Blok Plaintext dengan Fungsi Lucas ... 101
Tabel 4.3 Hasil Blok Chipertext ... 103
Tabel 4.4 Pembangkitan Kunci Privat Tiap Blok Chipertext ... 104
xiv
DAFTAR GAMBAR
Gambar 3.1 Skema Tanda Tangan Kunci Simetris ... 39
Gambar 3.2 Skema Tanda Tangan Asimetris ... 41
Gambar 3.3 Skema Tanda Tangan Fungsi Hash ... 43
Gambar 4.1 Flowchart Menu Utama Simulasi Kriptosistem LUC... 70
Gambar 4.2 Flowchart Proses Enkripsi LUC ke-1 ... 71
Gambar 4.3 Flowchart Proses Enkripsi LUC ke-2 ... 72
Gambar 4.4 Flowchart Proses Enkripsi LUC ke-3 ... 73
Gambar 4.5 Flowchart Proses Enkripsi LUC ke-4 ... 74
Gambar 4.6 Flowchart Proses Dekripsi LUC ke-1 ... 75
Gambar 4.7 Flowchart Proses Dekripsi LUC ke-2 ... 76
Gambar 4.8 Flowchart Proses Dekripsi LUC ke-3 ... 77
Gambar 4.9 Flowchart Subprogram konversi1 ... 78
Gambar 4.10 Flowchart Subprogram LUC ... 79
Gambar 4.11 Flowchart Subprogram konversi2 ... 80
Gambar 4.12 Flowchart Subprogram FPB ... 81
Gambar 4.13 Flowchart Subprogram KPK ... 81
Gambar 4.14 Flowchart Subprogram LG ... 82
Gambar 4.15 Flowchart Subprogram kp ... 83
Gambar 4.16 Flowchart Subprogram deks ... 84
Gambar 4.17 Tampilan Menu Utama Aplikasi ... 94
Gambar 4.18 Menginput Pesan pada Aplikasi ... 95
Gambar 4.19 Cara Mengenkripsi Pesan pada Aplikasi ... 96
Gambar 4.20 Lokasi Hasil Enkripsi ... 97
Gambar 4.21 Cara Mendekripsi Pesan pada Aplikasi ... 98
Gambar 4.22 Tampilan saat Menekan Tombol Exit ... 99
Gambar 4.23 Hasil Enkripsi pada Aplikasi ... 102
xv
DAFTAR SIMBOL
ℤ : himpunan bilangan bulat ℤ+ : himpunan bilangan bulat positif ℕ : himpunan bilangan asli
■ : tanda akhir pembuktian 𝜙(𝑛) : fungsi Euler
∅ : himpunan kosong
| : habis membagi
xvi
DAFTAR ISTILAH
AES : Advanced Encryption Standard.
ASCII : American Standart for Information Interchange. CLI : Command Line Interface.
DES : Data Encryption Standard.
gcd : great common diviser (factor kelipatan terbesar). IDE : Integrated Development Environment.
lcm : least common multiple (kelipatan persekutuan terkecil).
RSA : singkatan dari pengembang algoritma RSA yakni Ron Rivest, Adi Shmir dan Len Adleman.
1 BAB I
PENDAHULUAN
A. Latar Belakang
Saat ini kita berada di era komputer dimana sebagian besar informasi tersebar luas atau tersimpan dalam bentuk digital. Informasi tersebut dapat bersifat publik atau rahasia. Contoh informasi publik adalah berita, ilmu pengetahuan, pemberitahuan dan lain-lain. Sedangkan contoh informasi yang bersifat rahasia adalah password, pin, dokumen rahasia dan sebagainya. Informasi rahasia tentu butuh keamanan dari serangan oleh pihak-pihak tertentu agar tidak disalahgunakan ataupun diubah. Salah satu cara untuk menjaga keamanan informasi rahasia adalah dengan menyandikan informasi-informasi tersebut.
Kriptografi merupakan pengetahuan atau seni untuk mengamankan suatu informasi atau plaintext dengan teknik penyandian. Sedangkan kriptosistem merupakan fasilitas untuk mengkonversikan plaintext menjadi chipertext ataupun sebaliknya. Plaintext merupakan pesan rahasia yang akan disandikan. Sedangkan chipertext merupakan plaintext yang sudah disandikan menggunakan algoritma tertentu. Kriptografi sudah ada sejak tahun 400 SM oleh bangsa Spartan di Yunani hingga saat ini. Secara umum kriptografi yang digunakan sebelum era komputer disebut sebagai kriptografi klasik sedangkan kriptografi yang digunakan pada era komputer disebut sebagai kriptografi modern. Kriptografi modern dibedakan menjadi kriptografi simetris dan
kriptografi asimetris berdasarkan kunci yang digunakan. Kriptografi simetris menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi sehingga disebut juga sebagai kriptografi kunci rahasia, kriptografi kunci tunggal atau kriptografi satu kunci. Enkripsi merupakan proses mengubah plaintext menjadi chipertext dengan algoritma tertentu. Sebaliknya dekripsi merupakan proses mengubah chipertext menjadi plaintext dengan menggunakan algoritma tertentu. Algoritma yang termasuk dalam kriptografi kunci rahasia adalah DES (Data Encryption Standard) dan AES (Advanced Encryption Standard).
Kriptografi asimetris menggunakan kunci yang berbeda untuk melakukan enkripsi dan dekripsi. Kunci publik untuk enkripsi dan kunci privat untuk dekripsi sehingga sering juga disebut sebagai kriptografi kunci publik. Algoritma yang termasuk kriptografi kunci publik adalah algoritma RSA (RSA merupakan singkatan dari nama penngembangnya yaitu Ron Rivest, Adi Shmir dan Len Adleman) , Elgamal, algoritma berbasis kurva eliptik dan algoritm LUC.
Selain pentingnya kerahasiaan informasi, otentikasi atau keaslian informasi juga dibutuhkan. Berdasarkan permasalahan tersebut diciptakan tanda tangan digital. Tanda tangan digital berfungsi selayaknya tanda tangan konvesional yakni untuk mengetahui keaslian suatu pesan yang diberikan. Tanda tangan digital secara umum memiliki dua cara untuk mendapatkanya, yakni dengan cara enkripsi dan menggunakan fungsi hash. Tanda tangan dengan cara enkripsi dapat diperoleh dengan menggunakan kriptosistem kunci
simetris dan kunci asimetris. Adapun kriptografi asimetris yang dapat digunakan sebagai tanda tangan harus memenuhi:
𝐷𝑠𝑘(𝐸𝑝𝑘(𝑀)) = 𝑀, 𝐷𝑝𝑘(𝐸𝑠𝑘(𝑀)) = 𝑀
dengan 𝐷 sebagai fungsi dekripsi, 𝐸 sebagai fungsi enkripsi, 𝑠𝑘 sebagai kunci privat dan 𝑝𝑘 sebagai kunci publik. Sedangkan tanda tangan dengan menggunakan fungsi hash hanya dapat menggunakan kriptosistem asimetris.
Salah satu kriptografi asimetris yang dapat digunakan untuk kedua cara mendapatkan tanda tangan digital adalah kriptografi kunci publik RSA. Akan tetapi karena kriptosistem RSA dibangkitkan dengan perkalian bilangan asli maka kriptosistem RSA rentan terhadap serangan adaptive chosen message attack. Berdasarkan hal itu dikembangkan sebuah kriptografi kunci publik LUC yakni sebuah kriptosistem yang dibangkitkan dengan fungsi Lucas.
B. Rumusan Masalah
Berdasarkan uraian latar bekalang, ruang lingkup permasalahan penelitian ini dirumuskan sebagai berikut:
1. Bagaimana proses enkripsi dan dekripsi kriptografi dengan algoritma LUC?
2. Bagaimana implementasi algoritma LUC dengan menggunakan komputer?
C. Tujuan Penulisan
Tujuan penulis melakukan penelitian ini:
1. Mengetahui proses enkripsi dan dekripsi pada Algoritma LUC.
2. Mengetahui implementasi algoritma LUC dengan menggunakan komputer.
D. Batasan Masalah
Karena keterbatasan kemampuan penulis maka penulis membatasi permasalahan sebagai berikut:
1. Himpunan bilangan yang dibahas merupakan ℤ. 2. Input pesan terbatas huruf kapital, angka dan spasi. 3. Simbol yang digunakan terbatas pada table ASCII.
E. Metode Penulisan
Metode yang penulis gunakan dalam penelitian ini adalah metode studi pustaka. Metode studi pustaka adalah teknik mengumpulkan dan mengkaji data menggunakan literatur, buku atau katalog yang berkaitan dengan masalah penelitian.
F. Manfaat Penulisan
Manfaat dari tugas akhir ini adalah pembaca dapat mengetahui proses enkripsi dan dekripsi pada algoritma LUC serta implementasinya pada program komputer.
G. Sistematika Penulisan
Penulisan skripsi ini akan mengkaji lebih dalam mengenai kriptografi kunci publik menggunakan algoritma LUC serta implementasinya pada Lazarus. Skripsi ini terdiri dari lima bab. Bab I yakni pendahuluan yang terdiri dari latar belakang, rumusan masalah, tujuan masalah, batasan masalah, metode penulisan, manfaat penulisan serta sistematika penulisan.
Bab II merupakan landasan teori yang membahas mengenai definisi, teorema, postulat atau sifat-sifat dari bilangan bulat, keterbagian, algoritma Euclid, kekongruen serta Fermat dan fungsi Euler.
Bab III diawali dengan penjelasan mengenai sejarah singkat kriptografi kunci publik RSA serta penjelasan proses enkripsi dan dekripsi menggunakan algoritma RSA. Selanjutnya dibahas mengenai tanda tangan digital dan skema tanda tangan RSA. Setelahnya dibahas mengenai kelemahan kriptografi kunci publik RSA terutama kelemahan tanda tangan digital menggunakan algoritma RSA terhadap serangan adaptive chosen messages. Pembahasan selanjutnya mengenai fungsi Lucas yang kemudian akan digunakan dalam proses enkripsi dan dekripsi kriptografi kunci publik LUC. Selanjutnya dibahas mengenai hubungan fungsi Lucas terhadap akar-akar karakteristiknya, simbol Legendre dan fungsi toetient Euler. Setelahnya dibahas mengenai proses enkripsi dan dekripsi kriptografi kunci publik LUC dan implementasinya. Bab III diakhiri dengan pembahasan mengenai kekuatan dari kriptografi kunci publik LUC.
Pembahasan pada Bab IV terfokus pada implementasi algoritma LUC menggunakan program Lazarus. Bab IV diawali dengan sejarah singkat
perkembangan Pascal dan Lazarus. Kemudian membahas mengenai perangkat penelitian. Setelahnya dijelaskan mengenain algoritma program menggunakan flowchart. Selanjutnya dijelaskan mengenai implementasi algoritma LUC menggunakan Lazarus. Penjelasan berupa algoritma-algoritma program simulasi kriptografi kunci publik menggunakan algoritma LUC serta contoh penggunaan program. Bab IV diakhiri dengan perbandingan perhitungan secara manual dengan hasil dan perhitungan dari program simulasi kriptografi menggunakan algoritma LUC.
Bab V berisikan mengenai kesimpulan hasil penelitian dan saran yang dapat digunakan untuk penelitian selanjutnya.
7 BAB II
LANDASAN TEORI
Pada bab ini akan dibahas mengenai teori yang menjadi landasan dalam pembuatan skripsi. Sejumlah teori tersebut adalah bilangan bulat, algoritma pembagian, kongruensi, algoritma Euclid dan sebagainya.
A. Bilangan Bulat
Sebelum membahas mengenai induksi matematika, terlebih dahulu akan dibahas mengenai postulat yang melandasi pembuktian teorema induksi matematika yakni well-ordering principle.
Postulat 2.1 (Well-Ordering Principle) (Burton,2007)Setiap himpunan tak kosong 𝑆 yang terdiri dari bilangan bulat positif memuat elemen terkecil.
Selanjutnya akan ditunjukkan pembuktian induksi matematika dengan menggunakan well-ordering principle.
Teorema 2.1 (Burton, 2007) Jika 𝑆 himpunan bilangan bulat positif yang memiliki sifat:
1. 1 ∈ 𝑆,
2. Jika 𝑘 ∈ 𝑆 maka 𝑘 + 1 ∈ 𝑆 Maka 𝑆 = ℕ.
Bukti
Andaikan 𝑆 ≠ ℕ. Misalkan
𝑇 = ℕ − 𝑆
karena 𝑆 ≠ ℕ, maka 𝑇 ≠ ∅. Berdasarkan postulat 2.1 maka terdapat elemen terkecil di 𝑇. Misalkan 𝑎 elemen terkecil di 𝑇. Karena 1 ∈ 𝑆 maka 𝑎 > 1 dan 0 < 𝑎 − 1 < 𝑎. Mengingat 𝑎 elemen terkecil di 𝑇 maka 𝑎 − 1 ∈ 𝑆. Sedangkan, jika 𝑎 − 1 ∈ 𝑆 maka (𝑎 − 1) + 1 = 𝑎 ∈ 𝑆. Hal ini berkontradiksi dengan fakta 𝑎 ∈ 𝑇. Jadi 𝑆 = ℕ.
■ Teorema 2.2 (Burton, 2007) Jika 𝑆 himpunan bilangan bulat positif yang memiliki sifat:
1. 1 ∈ 𝑆
2. Jika 𝑘 adalah bilangan bulat positif sedemikian hingga 1,2, … , 𝑘 ∈ 𝑆 maka 𝑘 + 1 ∈ 𝑆.
Maka 𝑆 = ℕ. Bukti:
Andaikan 𝑆 ≠ ℕ. Misalkan
𝑇 = ℕ − 𝑆
maka 𝑇 ≠ ∅. Berdasarkan postulat 2.1 maka terdapat elemen terkecil di 𝑇. Misalkan 𝑛 elemen terkecil di 𝑇. Karena 1 ∈ 𝑆 maka 𝑛 > 1. Karena 𝑛 elemen terkecil di 𝑇 maka 1, 2, … , 𝑛 − 1 ∉ 𝑇 atau dengan kata lain 1, 2, … , 𝑛 − 1 ∈ 𝑆. Akibatnya (𝑛 − 1) + 1 = 𝑛 ∈ 𝑆. Hal ini kontradiksi dengan fakta 𝑛 ∈ 𝑇. Jadi 𝑆 = ℕ.
■ A. Keterbagian
Teorema 2.3 (Algoritma Pembagian) (Burton, 2007) Misalkan diberikan bilangan bulat 𝑎 dan bilangan bulat positif 𝑏. Maka terdapat tepat satu bilangan bulat 𝑞 dan 𝑟 yang memenuhi persamaan
𝑎 = 𝑞𝑏 + 𝑟 , 0 ≤ 𝑟 < 𝑏.
Pada persamaan di atas, bilangan bulat 𝑞 dan 𝑟 berturut-turut disebut sebagai hasil bagi dan sisa bagi 𝑎 oleh 𝑏.
Bukti Misalkan
𝑆 = {𝑎 − 𝑥𝑏|𝑥 ∈ ℤ; 𝑎 − 𝑥𝑏 ≥ 0}
Klaim: 𝑆 ≠ ∅. Untuk membuktikan bahwa 𝑆 ≠ ∅, ambil 𝑥 = −|𝑎|. Karena 𝑏 ∈ ℕ, maka |𝑎|𝑏 ≥ |𝑎|. Sehingga
𝑎 − 𝑥𝑏 = 𝑎 − (−|𝑎|)𝑏 = 𝑎 + |𝑎|𝑏 ≥ 𝑎 + |𝑎| ≥ 0,
Jadi 𝑆 ≠ ∅. Karena 𝑆 ≠ ∅ maka menurut postulat 2.1 terdapat 𝑟 ∈ 𝑆 sedemikian hingga 𝑟 adalah elemen terkecil di 𝑆.
Maka
𝑟 = 𝑎 − 𝑞𝑏 untuk suatu 𝑞 ∈ ℤ.
Klaim: 𝑟 < 𝑏. Bukti klaim menggunakan kontradiksi. Andaikan 𝑟 ≥ 𝑏. Maka 𝑎 − (𝑞 + 1)𝑏 = (𝑎 − 𝑞𝑏) − 𝑏 = 𝑟 − 𝑏 ≥ 0
Akibatnya (𝑎 − (𝑞 + 1)𝑏 = 𝑟 − 𝑏) ∈ 𝑆. Padahal 𝑟 − 𝑏 < 𝑟, hal ini kontradiksi dengan fakta bahwa 𝑟 elemen terkecil dalam 𝑆. Berarti benar bahwa 0 ≤ 𝑟 < 𝑏.
Selanjutnya akan dibuktikan sifat ketunggalan 𝑞 dan 𝑟. Misalkan 𝑎 dapat disajikan dengan dua cara yakni:
𝑎 = 𝑏𝑞 + 𝑟 = 𝑏𝑞′+ 𝑟′ dengan 0 ≤ 𝑟 < 𝑏 dan 0 ≤ 𝑟′ < 𝑏. Maka
𝑟 − 𝑟′= 𝑏𝑞′− 𝑏𝑞 = 𝑏(𝑞′− 𝑞)
Karena 𝑏 ∈ ℤ+ maka |𝑟 − 𝑟′| = 𝑏|𝑞′− 𝑞|. Karena 0 ≤ 𝑟′< 𝑏 maka didapat −𝑏 < −𝑟′≤ 0. Sehingga dengan menjumlahkan 𝑟 dan −𝑟′ diperoleh −𝑏 < 𝑟 − 𝑟′< 𝑏 atau |𝑟 − 𝑟′| < |𝑏|. Karena 𝑏 bilangan bulat positif maka |𝑟 − 𝑟′| < 𝑏. Mengingat |𝑟 − 𝑟′| = 𝑏|𝑞′− 𝑞| maka 𝑏|𝑞′− 𝑞| < 𝑏 atau 0 ≤ |𝑞′− 𝑞| < 1. Karena 𝑞′− 𝑞 ∈ ℤ maka |𝑞′− 𝑞| harus 0, akibatnya 𝑞′ = 𝑞. Karena 𝑞′= 𝑞 dan 𝑏𝑞 + 𝑟 = 𝑏𝑞′+ 𝑟′ maka 𝑟 = 𝑟′.
■ Contoh 2.1
Diberikan bilangan bulat 22 dan 9. Dari kedua bilangan tersebut maka didapat 22 = (2)9 + 4 yang berarti 2 sebagai hasil bagi 22 terhadap 9. Sedangkan 4 sebagai sisa bagi 22 terhadap 9.
Definisi 2.1 (Burton, 2007) Diberikan 𝑎, 𝑏 ∈ ℤ dengan 𝑎 ≠ 0. Dikatakan 𝑎 habis membagi 𝑏, bila terdapat suatu 𝑐 ∈ ℤ sedemikian hingga 𝑏 = 𝑎𝑐. Simbol untuk 𝑎 habis membagi b adalah 𝑎|𝑏. Sebaliknya jika 𝑎 tidak habis membagi disimbolkan dengan 𝑎 ∤ 𝑏.
Contoh 2.2
Bilangan bulat 20 habis dibagi 5 karena 20 = 5(4). Sedangkan 11 tidak habis dibagi 2 karena tidak ada bilangan bulat 𝑘 yang dapat memenuhi 11 = 2(𝑘).
Teorema 2.4 (Burton, 2007) Untuk ∀𝑎, 𝑏, 𝑐 ∈ ℤ ,berlaku: 1. Jika 𝑎|𝑏 dan 𝑐|𝑑 maka 𝑎𝑐|𝑏𝑑.
2. Jika 𝑎|𝑏 dan 𝑏|𝑐 maka 𝑎|𝑐.
3. 𝑎|𝑏 dan 𝑏|𝑎 jika dan hanya jika 𝑎 = ±𝑏. Bukti
1. Misalkan 𝑎|𝑏 dan 𝑐|𝑑 maka menurut definisi 2.1, ∃𝑘, 𝑙 ∈ ℤ sedemikian hingga 𝑏 = 𝑎𝑘 dan 𝑑 = 𝑐𝑙. Sehingga
𝑏𝑑 = (𝑎𝑘)(𝑐𝑙) = 𝑎𝑐(𝑘𝑙). Karena 𝑘𝑙 ∈ ℤ maka 𝑎𝑐|𝑏𝑑.
2. Misalkan 𝑎|𝑏 dan 𝑏|𝑐 maka ∃𝑘, 𝑙 ∈ ℤ sedemikian hingga 𝑏 = 𝑎𝑘 dan 𝑐 = 𝑏𝑙. Sehingga
𝑐 = (𝑎𝑘)𝑙 = 𝑎(𝑘𝑙). Karena 𝑘𝑙 ∈ ℤ maka 𝑎|𝑐.
3. Pertama akan dibuktikan jika 𝑎|𝑏 dan 𝑏|𝑎 maka 𝑎 = ±𝑏.
Misalkan 𝑎|𝑏 dan 𝑏|𝑎 maka menurut definisi 2.1 terdapat 𝑘, 𝑙 ∈ ℤ yang memenuhi 𝑎 = 𝑘𝑏 dan 𝑏 = 𝑙𝑎. Subsitusi nilai 𝑏 sehingga diperoleh:
𝑎 = 𝑘𝑏 = 𝑘(𝑙𝑎) = 𝑘𝑙𝑎.
Selanjutnya eliminasi 𝑎, 1 = 𝑘𝑙. Karena faktor 1 adalah 1 dan −1 maka 𝑘 = 1, 𝑙 = 1 atau 𝑘 = −1, 𝑙 = −1. Saat 𝑘 = 1 diperoleh
𝑎 = 𝑏, sedangkan saat 𝑘 = −1 diperoleh
Jadi 𝑎 = ±𝑏.
Selanjutnya akan dibuktikan jika 𝑎 = ±𝑏 maka 𝑎|𝑏 dan 𝑏|𝑎. Misalkan 𝑎 = ±𝑏,
berarti 𝑎 = 𝑏 atau 𝑎 = −𝑏. Untuk 𝑎 = 𝑏 dapat ditulis 𝑎 = (1)𝑏, sedangkan untuk 𝑎 = −𝑏 dapat ditulis 𝑎 = (−1)𝑏. Karena 1, −1 ∈ ℤ maka 𝑎|𝑏. Dengan cara yang analog diperoleh 𝑏|𝑎. Jadi 𝑎|𝑏 dan 𝑏|𝑎.
■ Definisi 2.2 (Burton, 2007) Diberikan 𝑎, 𝑏 ∈ ℤ yang tidak keduanya nol. Faktor persekutuan terbesar (greatest common devisor) dari 𝑎 dan 𝑏 (disimbolkan dengan 𝑔𝑐𝑑 (𝑎, 𝑏)) adalah bilangan bulat positif 𝑑 yang memenuhi persamaan berikut:
1. 𝑑|𝑎 dan 𝑑|𝑏
2. Jika 𝑐|𝑎 dan 𝑐|𝑏 maka 𝑐 ≤ 𝑑 Contoh 2.3
Faktor pembagi bilangan positif dari −18 adalah 1, 2, 3, 6, 9, 18, sedangkan faktor pembagi bilangan positif dari 24 adalah 1, 2, 3, 4, 6, 8, 12, 24. Oleh sebab itu, faktor persekutuan dari −18 dan 24 adalah 1, 2, 3, 6. Maka 𝑔𝑐𝑑(−18, 24) = 6.
Definisi 2.3 (Rosen,1984) Kelipatan persekutuan terkecil (least common multiple) dari dua bilangan bulat 𝑎 dan 𝑏 (disimbolkan dengan 𝑙𝑐𝑚(𝑎, 𝑏)) adalah bilangan bulat positif terkecil yang habis dibagi 𝑎 dan 𝑏.
Contoh 2.4
Kelipatan persekutuan terkecil dari 8 dan 12 adalah 𝑙𝑐𝑚(8,12) = 24. Sedangkan kelipatan persekutuan terkecil dari −7 dan 12 adalah 𝑙𝑐𝑚(−7,12) = 84.
Teorema 2.5 (Burton, 2007) Diberikan 𝑎 dan 𝑏 bilangan bulat yang tidak keduanya nol, maka terdapat 𝑥, 𝑦 ∈ ℤ sedemikian hingga
𝑔𝑐𝑑(𝑎, 𝑏) = 𝑎𝑥 + 𝑏𝑦 Bukti :
Misalkan
𝑆 = {𝑎𝑢 + 𝑏𝑣|𝑎𝑢 + 𝑏𝑣 > 0; 𝑢, 𝑣 𝜖 ℤ}. Klaim: 𝑆 ≠ ∅. Misalkan 𝑎 ≠ 0. Jika 𝑎 > 0 maka
|𝑎| = 1. 𝑎 + 0, 𝑏 ∈ ℤ Jika 𝑎 < 0 maka
|𝑎| = (−1)𝑎 + 0, 𝑏 ∈ ℤ
Jadi 𝑆 ≠ ∅. Karena 𝑆 ≠ ∅ maka menurut postulat 2.1 ∃𝑑 ∈ 𝑆 dengan 𝑑 merupakan elemen terkecil. Karena 𝑑 ϵ 𝑆 maka terdapat suatu 𝑥, 𝑦 ∈ ℤ sedemikian hingga
𝑎𝑥 + 𝑏𝑦 = 𝑑. Klaim: 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑑.
Berdasarkan teorema 2.3, terdapat 𝑞 dan 𝑟 sedemikian hingga 𝑎 = 𝑞𝑑 + 𝑟 dengan 0 ≤ 𝑟 < 𝑑. Sehingga diperoleh:
Jika 𝑟 > 0 maka 𝑟 ϵ 𝑆. Hal ini kontradiksi karena 𝑑 merupakan elemen terkecil dalam 𝑆 maka haruslah 𝑟 = 0. Sehingga diperoleh 𝑎 = 𝑞𝑑. Berarti 𝑑|𝑎, dengan cara analog maka akan diperoleh 𝑑|𝑏 yang mengakibatkan 𝑑 merupakan faktor pembagi dari 𝑎 dan 𝑏. Selanjutnya, jika 𝑐 adalah faktor pembagi positif 𝑎 dan 𝑏 maka 𝑐|𝑎, 𝑐|𝑏 dan 𝑐|(𝑎𝑥 + 𝑏𝑦) dengan kata lain 𝑐|𝑑.
Karena 𝑐, 𝑑 ∈ ℕ dan 𝑐|𝑑 maka berdasarkan teorema 2.4 𝑐 ≤ 𝑑. Jadi 𝑑 = 𝑔𝑐𝑑 (𝑎, 𝑏).
■ Definisi 2.4 (Burton, 2007) Dua bilangan bulat 𝑎 dan 𝑏 yang tidak keduanya nol, dikatakan relatif prima jika
𝑔𝑐𝑑(𝑎, 𝑏) = 1.
Teorema 2.6 (Burton, 2007) Diberikan 𝑎, 𝑏 ∈ ℤ yang tidak keduanya nol, 𝑎 dan 𝑏 relatif prima jika dan hanya jika terdapat suatu 𝑥, 𝑦 ∈ ℤ yang memenuhi
1 = 𝑎𝑥 + 𝑏𝑦. Bukti
Misalkan 𝑎 dan 𝑏 relatif prima. Menurut definisi 2.4 𝑔𝑐𝑑(𝑎, 𝑏) = 1. Sedangkan menurut teorema 2.5 ∃𝑥, 𝑦 ∈ ℤ sedemikian hingga
𝑔𝑐𝑑(𝑎, 𝑏) = 𝑎𝑥 + 𝑏𝑦. Jadi 1 = 𝑎𝑥 + 𝑏𝑦. Misalkan
1 = 𝑎𝑥 + 𝑏𝑦. Misalkan
Menurut definisi 2.2 maka 𝑑|𝑎 dan 𝑑|𝑏. Akibatnya, menurut teorema 2.4 𝑑|(𝑎𝑥 + 𝑏𝑦) atau 𝑑|1 dengan kata lain 𝑑 = ±1. Jadi 𝑔𝑐𝑑(𝑎, 𝑏) = 1.
■ Contoh 2.5
3 relatif prima dengan 7 sebab 1 = (−2)6 + (1)(7).
Definisi 2.5 (Burton, 2007) Bilangan bulat 𝑝 > 1 disebut bilangan prima jika dan hanya jika faktor bulat positif 𝑝 hanya 1 dan 𝑝. Sedangkan bilangan bulat yang lebih dari 1 dan tidak prima disebut sebagai bilangan komposit.
Contoh 2.6
3 adalah bilangan prima karena faktor positif 3 adalah 1 dan 3. Sedangkan 6 bukan bilangan prima karena ada faktor bulat positif selain 1 dan 6 yakni 2 dan 3.
B. Algoritma Euclid
Sebelum dilanjut mengenai algoritma Euclid, terlebih dahulu akan dibahas mengenai lemma yang akan digunakan dalam pembuktian algoritma Euclid. Lemma 2.1 (Burton, 2007) Jika 𝑎 = 𝑞𝑏 + 𝑟, maka 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑏, 𝑟). Bukti
Misalkan 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑑 maka 𝑑|𝑎 dan 𝑑|𝑏. Karena 𝑑|𝑎 dan 𝑑|𝑏 maka menurut teorema 2.4
𝑑|(𝑎 + 𝑏(−𝑞)) atau
Jadi, 𝑑 adalah pembagi persekutuan antara 𝑏 dan 𝑟. Misalkan 𝑐 ∈ ℤ+ yang membagi 𝑏 dan 𝑟, maka 𝑐|(𝑞𝑏 + 𝑟) atau dengan kata lain 𝑐|𝑎. Hal ini mengakibatkan 𝑐 merupakan faktor pembagi 𝑎 dan 𝑏. Karena 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑑 dan 𝑐 ∈ ℕ maka 𝑐 ≤ 𝑑. Jadi 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑏, 𝑟).
■ Selanjutnya akan dibahas mengenai penggunaan algoritma Euclid untuk menemukan faktor persekutuan terbesar dari dua bilangan bulat yang besar. Misalkan 𝑎 dan 𝑏 adalah bilangan bulat yang memenuhi 𝑎 ≥ 𝑏 > 0. Dicari 𝑔𝑐𝑑(𝑎, 𝑏) menggunakan teorema 2.1 dengan cara sebagai berikut:
𝑎 = 𝑞1𝑏 + 𝑟1 0 ≤ 𝑟1 < 𝑏
Jika didapat 𝑟1 = 0, maka 𝑏|𝑎 dan gcd(𝑎, 𝑏) = 𝑏. Jika 𝑟1 ≠ 0 maka bagi 𝑏 dengan 𝑟1 sehingga diperoleh 𝑞2 sebagai hasil bagi dan 𝑟2 sebagai sisa bagi 𝑏 oleh 𝑟1 atau ditulis sebagai berikut:
𝑏 = 𝑞2𝑟1+ 𝑟2 0 ≤ 𝑟2 < 𝑟1
Jika 𝑟2 = 0, maka selesai. Jika sebaliknya maka proses diatas diulang hingga didapat sisa pembagiannya nol, katakan pada proses ke (𝑛 + 1) diperoleh 𝑟𝑛 yang habis membagi 𝑟𝑛−1. Akibatnya pada proses selanjutnya sisa pembagian 𝑟𝑛−1 oleh 𝑟𝑛 adalah nol. Dari proses tersebut akan didapat barisan menurun 𝑏 > 𝑟1 > 𝑟2 > ⋯ ≥ 0 yang tidak lebih dari 𝑏. Nilai 𝑟𝑖, 1 ≤ 𝑖 ≤ 𝑛 diperoleh melalui sistem persamaan berikut:
𝑎 = 𝑞1𝑏 + 𝑟1 0 < 𝑟1 < 𝑏
𝑟1 = 𝑞3𝑟2+ 𝑟3 0 < 𝑟3 < 𝑟2 . . . . . . 𝑟𝑛−2 = 𝑞𝑛𝑟𝑛−1+ 𝑟𝑛 0 < 𝑟𝑛 < 𝑟𝑛−1 𝑟𝑛−1 = 𝑞𝑛+1𝑟𝑛+ 0
Dengan demikian, berdasarkan lemma 2.1 diperoleh,
𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑏, 𝑟1) = ⋯ = 𝑔𝑐𝑑(𝑟𝑛−1, 𝑟𝑛) = 𝑔𝑐𝑑(𝑟𝑛, 0) = 𝑟𝑛
■ Contoh 2.7
Tentukan 𝑔𝑐𝑑(65724 , 4428) dengan menggunakan algoritma Euclid! Jawab:
Berikut merupakan proses penyelesaian 𝑔𝑐𝑑(65724 , 4428) dengan menggunakan algoritma Euclid. Terlebih dahulu penyelesaian mengaplikasikan algoritma pembagian, diperoleh
65724 = 14 ∙ 4428 + 3732 4428 = 1 ∙ 3732 + 696 3732 = 5 ∙ 696 + 252 696 = 2 ∙ 252 + 192 252 = 1 ∙ 192 + 60 192 = 3 ∙ 60 + 12 60 = (5)12 + 0
Karena 12 merupakan sisa pembagian terakhir yang tidak nol maka 12 = 𝑔𝑐𝑑(65724 , 4428).
Contoh 2.8
Kebalikan dari algoritma Euclid dapat digunakan untuk menyatakan 𝑔𝑐𝑑(𝑎, 𝑏) sebagai kombinasi linear dari 𝑎 dan 𝑏. Sebagai contoh akan digunakan persoalan pada contoh 2.7.
Untuk menunjukkan 12 adalah kombinasi linear dari 65724 dan 4428 maka akan dimulai dari persamaan terakhir dengan menghilangkan semua sisa pembagian (60, 192, 252, 696, dan 3732) 12 = 192 − (3)60 = 192 − 3(252 − 192) = 4(696 − 2 ∙ 252) − 3 ∙ 252 = 4 ∙ 696 − 11(3732 − 5 ∙ 696) = 59(4428 − 3732) − 11 ∙ 3732 = 59 ∙ 4428 − 70(65724 − 14 ∙ 4428) = 1039 ∙ 4428 + (−70)65724
Dengan demikian diperoleh:
12 = 𝑔𝑐𝑑(65724 , 4428) = 65724𝑥 + 4428𝑦
dengan 𝑥 = −70 dan 𝑦 = 1039. Perhatikan bahwa representasi 𝑔𝑐𝑑(65724, 4428) sebagai kombinasi linear dari 65724 dan 4428 tidaklah tunggal. Hal tersebut dapat ditunjukkan dengan menambah dan mengurangi persamaan sebelumnya dengan 4428 ∙ 65724, diperoleh:
12 = 65724 ∙ (−70) + 4428 ∙ 1039 + 4428 ∙ 65724 − 4428 ∙ 65724 = (−70 + 4428)65724 + (1039 − 65724)4428
= 4358 ∙ 65724 + (−64685)4428
Teorema 2.7 (Algoritma Euclides Diperluas) (Rosen, 1984) Jika 𝑎, 𝑏 ∈ ℕ maka 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑠𝑛𝑎 + 𝑡𝑛𝑏, untuk suatu 𝑛 = 0,1,2, …, dimana 𝑠𝑛 dan 𝑡𝑛 adalah suku ke-𝑛 dari suatu barisan yang didefinisikan secara rekursif dengan cara berikut: Untuk 𝑗 = 0,1 𝑠0 = 1, 𝑡0 = 0 𝑠1 = 0, 𝑡1 = 1 Sedangkan untuk 𝑗 = 2,3, … , 𝑛 𝑠𝑗 = 𝑠𝑗−2− 𝑞𝑗−1𝑠𝑗−1, 𝑡𝑗 = 𝑡𝑗−2− 𝑞𝑗−1𝑡𝑗−1
Dengan 𝑞𝑗 merupakan hasil bagi ke-𝑗 dari pembagian pada algoritma Euclid saat proses menemukan 𝑔𝑐𝑑(𝑎, 𝑏).
Bukti :
Misalkan 𝑎, 𝑏 ∈ ℕ maka berlaku
𝑎 = 𝑞𝑏 + 𝑟
dimana 𝑞 adalah hasil bagi dan 𝑟 adalah sisa bagi. Misal 𝑟0 = 𝑎, 𝑟1 = 𝑏, 𝑞1 = 𝑞, 𝑟2 = 𝑟 Maka
dapat ditulis menjadi
𝑟0 = 𝑞1𝑟1+ 𝑟2
𝑟2 = 𝑟0− 𝑞1𝑟1 (2.1) yang berarti 𝑞1 dan 𝑟2 berturut-turut adalah hasil bagi dan sisa bagi 𝑟0 oleh 𝑟1. Menurut algoritma Euclid terdapat 𝑟𝑗 dimana 𝑗 = 0, 1, 2, … 𝑛 sedemikian hingga
𝑔𝑐𝑑(𝑟0, 𝑟1) = 𝑔𝑐𝑑(𝑟1, 𝑟2) = ⋯ = 𝑔𝑐𝑑(𝑟𝑛−1, 𝑟𝑛) = 𝑔𝑐𝑑(𝑟𝑛, 0) = 𝑟𝑛 Selanjutnya akan dibuktikan bahwa
𝑟𝑗 = 𝑠𝑗𝑎 + 𝑡𝑗𝑏, ∀𝑗 ∈ {0,1, … , 𝑛} (2.2) Pembuktian berikut menggunakan teorema 2.2. Pertama-tama akan dibuktikan bahwa benar persamaan 2.1 berlaku untuk 𝑗 ∈ {0,1}. Saat 𝑗 = 0,
𝑟0 = 𝑎 = 1 ∙ 𝑎 + 0 ∙ 𝑏 = 𝑠0𝑎 + 𝑡0𝑏 Sedangkan saat 𝑗 = 1,
𝑟1 = 𝑏 = 0 ∙ 𝑎 + 1 ∙ 𝑏 = 𝑠1𝑎 + 𝑡1𝑏 Berarti benar untuk 𝑗 ∈ {0,1} berlaku
𝑟𝑗 = 𝑠𝑗𝑎 + 𝑡𝑗𝑏.
Selanjutnya akan dibuktikan bahwa persamaan 2.2 berlaku untuk 𝑗 = 𝑛 jika persamaan 2.2 berlaku untuk 𝑗 = 0, 1, 2, … , 𝑛 − 1. Berdasarkan persamaan 2.1 maka 𝑟𝑗 saat 𝑗 = 𝑛 diperoleh
Selanjutnya menggunakan hipotesis induksi, diperoleh: 𝑟𝑛 = (𝑠𝑛−2𝑎 + 𝑡𝑛−2𝑏) − (𝑠𝑛−1𝑎 + 𝑡𝑛−1𝑏)𝑞(𝑛−1)
= (𝑠𝑛−2− 𝑠𝑛−1𝑞𝑛−1)𝑎 + (𝑡𝑛−2− 𝑡𝑛−1𝑞𝑛−1)𝑏 = 𝑠𝑛𝑎 + 𝑡𝑛𝑏
Karena untuk 𝑗 = 𝑛 berlaku
𝑟𝑗 = 𝑠𝑗𝑎 + 𝑡𝑗
jika persamaan 2.2 benar untuk 𝑗 = 0, 1, 2, … , 𝑛 − 1 maka terbukti 𝑟𝑗 = 𝑠𝑗𝑎 + 𝑡𝑗𝑏, ∀𝑗 ∈ {0,1, … , 𝑛}
Karena 𝑟0 = 𝑎 dan 𝑟1= 𝑏 maka berlaku
𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑟0, 𝑟1) = 𝑟𝑛 = 𝑠𝑛𝑎 + 𝑡𝑛𝑏
Berarti terbukti 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑠𝑛𝑎 + 𝑡𝑛𝑏 dimana 𝑠𝑛 dan 𝑡𝑛 merupakan barisan yang didefinisikan secara rekursif dengan cara berikut:
Untuk 𝑗 = 0,1 𝑠0 = 1, 𝑡0 = 0 𝑠1 = 0, 𝑡1 = 1 Sedangkan untuk 𝑗 = 2,3, … , 𝑛 𝑠𝑗 = 𝑠𝑗−2− 𝑞𝑗−1𝑠𝑗−1, 𝑡𝑗 = 𝑡𝑗−2− 𝑞𝑗−1𝑡𝑗−1 ■
Contoh 2.9
Tentukan 𝑔𝑐𝑑(1395,252) dalam kombinasi linear 1395 dan 252! Menggunakan algoritma Euclid diperoleh
1395 = 5 ∙ 252 + 135 252 = 135 + 117 135 = 117 + 18 117 = 6 ∙ 18 + 9
18 = 2 ∙ 9 + 0
Sedangkan bila menggunakan algoritma Euclid diperluas diperoleh
𝑗 𝑟𝑗 𝑟𝑗+1 𝑞𝑗+1 𝑟𝑗+2 𝑠𝑗 𝑡𝑗 0 1395 252 5 135 1 0 1 252 135 1 117 0 1 2 135 117 1 18 1 -5 3 117 18 6 9 -1 6 4 18 9 2 0 2 -11 5 -13 72
Nilai 𝑠𝑗 dan 𝑡𝑗 diatas diperoleh dengan cara berikut
𝑠0 = 1 𝑡0 = 0 𝑠1 = 0 𝑡1 = 1 𝑠2 = 𝑠0− 𝑞1𝑠1 = 1 − 0 ∙ 5 = 1 𝑡2 = 𝑡0− 𝑞1𝑡1 = 0 − 1 ∙ 5 = −5 𝑠3 = 𝑠1− 𝑞2𝑠2 = 0 − 1 ∙ 1 = −1 𝑡3 = 𝑡1− 𝑞2𝑡2 = 1 − 1(−5) = 6 𝑠4 = 𝑠2− 𝑞3𝑠3 = 1 − 1(−1) = 2 𝑡4 = 𝑡2− 𝑞3𝑡3 = −5 − 1 ∙ 6 = −11 𝑠5 = 𝑠3− 𝑞4𝑠4 = −1 − 6 ∙ 2 = −13 𝑡5 = 𝑡3− 𝑞4𝑡4 = 6 − 6(−11) = 72 Jadi 𝑔𝑐𝑑(1395,252) = 9 = (−13)1395 + 72 ∙ 252
C. Kekongruenan
Definisi 2.6 (Burton, 2007) Diberikan 𝑛 ∈ ℕ. Bilangan bulat 𝑎 dan 𝑏 dikatakan kongruen modulo 𝑛 jika 𝑛|(𝑎 − 𝑏). Selanjutnya 𝑎 kongruen 𝑏 modulo 𝑛 dinotasikan dengan
𝑎 ≡ 𝑏 (mod 𝑛). Contoh 2.10
Diberikan bilangan bulat 𝑛 = 9. 12 ≡ 3 (mod 9) karena 9 habis membagi (12 − 3). Selain itu −32 ≡ 4 (mod 9) karena 9 membagi (−32 − 4).
Teorema 2.8 (Burton, 2007) Diberikan 𝑎, 𝑏 ∈ ℤ dan 𝑛 ∈ ℤ+, 𝑎 ≡ 𝑏 (mod 𝑛) jika dan hanya jika sisa pembagian 𝑎 oleh 𝑛 sama dengan sisa pembagian 𝑏 oleh 𝑛.
Bukti :
Diketahui 𝑎 ≡ 𝑏 (mod 𝑛), berdasarkan definisi 2.6 maka 𝑛 habis membagi (𝑎 − 𝑏). Sedangkan menurut definisi 2.1 ∃𝑘 ∈ ℤ sedemikian hingga
(𝑎 − 𝑏) = 𝑘𝑛 atau 𝑎 = 𝑏 + 𝑘𝑛
Sedangkan dengan teorema 2.3 terdapat 𝑞 ∈ ℤ sedemikian hingga 𝑏 = 𝑞𝑛 + 𝑟, dengan 0 ≤ 𝑟 < 𝑛. Maka diperoleh
𝑎 = 𝑏 + 𝑘𝑛 = (𝑞𝑛 + 𝑟) + 𝑘𝑛 = (𝑞 + 𝑘)𝑛 + 𝑟
Jadi 𝑎 dan 𝑏 memiliki sisa pembagian yang sama jika dibagi oleh 𝑛.
Misalkan 𝑟 adalah sisa pembagian 𝑎 oleh 𝑛 serta 𝑏 oleh 𝑛, maka ∃𝑞1, 𝑞2 ∈ ℤ sedemikian hingga
𝑎 = 𝑞1𝑛 + 𝑟, 𝑏 = 𝑞2𝑛 + 𝑟,
dengan 0 ≤ 𝑟 < 𝑛. Sehingga diperoleh
𝑎 − 𝑏 = (𝑞1𝑛 + 𝑟) − (𝑞2𝑛 + 𝑟) = (𝑞1− 𝑞2)𝑛 , 𝑞1− 𝑞2 ∈ ℤ Jadi 𝑛|(𝑎 − 𝑏) atau dengan kata lain 𝑎 ≡ 𝑏 (mod 𝑛).
Teorema2.9 (Burton, 2007) Diberikan 𝑛 > 1, maka ∀𝑎, 𝑏, 𝑐, 𝑑 ∈ ℤ berlaku sifat berikut:
1. Jika 𝑎 ≡ 𝑏 (mod 𝑛) dan 𝑏 ≡ 𝑐 (mod 𝑛), maka 𝑎 ≡ 𝑐 (mod 𝑛).
2. Jika 𝑎 ≡ 𝑏 (mod 𝑛) dan 𝑐 ≡ 𝑑 (mod 𝑛), maka 𝑎 + 𝑐 ≡ 𝑏 + 𝑑 (mod 𝑛) dan 𝑎𝑐 ≡ 𝑏𝑑 (mod 𝑛).
3. Jika 𝑎 ≡ 𝑏 (mod 𝑛), maka 𝑎 + 𝑐 ≡ 𝑏 + 𝑐 (mod 𝑛) dan 𝑎𝑐 ≡ 𝑏𝑐 (mod 𝑛). 4. Jika 𝑎 ≡ 𝑏 (mod 𝑛), maka 𝑎𝑘 ≡ 𝑏𝑘 (mod 𝑛) untuk sembarang bilangan
bulat 𝑘. Bukti
1. Misalkan 𝑎 ≡ 𝑏 (mod 𝑛) dan 𝑏 ≡ 𝑐 (mod 𝑛), maka menurut definisi 2.6 terdapat 𝑘, 𝑙 ∈ ℤ sedemikian hingga 𝑎 − 𝑏 = 𝑘𝑛 dan 𝑏 − 𝑐 = 𝑙𝑛. Sehingga diperoleh
𝑎 − 𝑐 = 𝑎 + (−𝑏) + 𝑏 − 𝑐 = (𝑎 − 𝑏) + (𝑏 − 𝑐) = 𝑘𝑛 + 𝑙𝑛
= (𝑘 + 𝑙)𝑛 Jadi 𝑎 ≡ 𝑐 (mod 𝑛) karena (𝑘 + 𝑙) ∈ ℤ.
2. Misalkan 𝑎 ≡ 𝑏 (mod 𝑛) dan 𝑐 ≡ 𝑑 (mod 𝑛), maka menurut definisi 2.6 terdapat 𝑘, 𝑙 ∈ ℤ sedemikian hingga 𝑎 − 𝑏 = 𝑘𝑛 dan 𝑐 − 𝑑 = 𝑙𝑛. Sehingga diperoleh:
(𝑎 + 𝑐) − (𝑏 + 𝑑) = (𝑎 − 𝑏) + (𝑐 − 𝑑) = 𝑘𝑛 + 𝑙𝑛 = (𝑘 + 𝑙)𝑛 Karena (𝑘 + 𝑙) ∈ ℤ maka 𝑎 + 𝑐 ≡ 𝑏 + 𝑑 (mod 𝑛). Selanjutnya akan dibuktikan 𝑎𝑐 ≡ 𝑏𝑑 (mod 𝑛).
𝑎𝑐 = (𝑏 − 𝑘𝑛)(𝑑 − 𝑙𝑛) = 𝑏𝑑 − (𝑙𝑎 + 𝑘𝑐 + 𝑘𝑙𝑛)𝑛 Sehingga diperoleh 𝑎𝑐 − 𝑏𝑑 = −(𝑙𝑎 + 𝑘𝑐 + 𝑘𝑙𝑛)𝑛.
Karena −(𝑙𝑎 + 𝑘𝑐 + 𝑘𝑙𝑛) ∈ ℤ maka 𝑎𝑐 ≡ 𝑏𝑑 (mod 𝑛).
3. Misalkan 𝑎 ≡ 𝑏 (mod 𝑛), maka terdapat 𝑘 ∈ ℤ sedemikian hingga 𝑎 − 𝑏 = 𝑘𝑛. Sehingga diperoleh, (𝑎 + 𝑐) − (𝑏 + 𝑐) = 𝑎 − 𝑏. Akibatnya 𝑎 + 𝑐 ≡ 𝑏 + 𝑐 (mod 𝑛).
Sedangkan 𝑎𝑐 − 𝑏𝑐 = 𝑐(𝑎 − 𝑏) = 𝑐(𝑘𝑛) = (𝑐𝑘)𝑛. Karena 𝑐𝑘 ∈ ℤ maka 𝑎𝑐 ≡ 𝑏𝑐 (mod 𝑛).
4. Misalkan 𝑎 ≡ 𝑏 (mod 𝑛), maka terdapat 𝑘 ∈ ℤ sedemikian hingga 𝑎 − 𝑏 = 𝑘𝑛. Berdasarkan sifat kongruensi pada nomor 2 maka diperoleh
𝑎. 𝑎 ≡ 𝑏. 𝑏 (mod 𝑛) 𝑎2 ≡ 𝑏2(mod 𝑛)
Jika perkalian modulo ini berlanjut hingga ke-(𝑘 − 1) maka diperoleh 𝑎𝑘−1. 𝑎 ≡ 𝑏𝑘−1. 𝑏 (mod 𝑛)
𝑎𝑘 ≡ 𝑏𝑘 (mod 𝑛)
■ D. Fermat dan Fungsi (𝝓) Euler
Teorema 2.10 (Fermat) (Burton, 2007) Jika 𝑎 ∈ ℕ dan 𝑝 adalah bilangan prima, dengan 𝑝 ∤ 𝑎 maka
Bukti
Misalkan diambil bilangan prima 𝑝 dan bilangan bulat 𝑎 yang memenuhi 𝑝 ∤ 𝑎. Kalikan 𝑎 dengan 𝑝 − 1 bilangan bulat pertama sehingga diperoleh barisan sebagai berikut:
𝑎, 2𝑎, 3𝑎, … , (𝑝 − 1)𝑎 ⊛ Pada barisan tersebut, tidak ada bilangan yang saling kongruen dalam modulo 𝑝, ataupun kongruen 0 modulo 𝑝. Sebab jika 𝑟𝑎 ≡ 𝑠𝑎 (mod 𝑝) dengan 0 < 𝑟 < 𝑠 < 𝑝, maka diperoleh 𝑟 ≡ 𝑠 (mod 𝑝). Hal ini tidak mungkin. Oleh sebab itu, barisan ⊛ kongruen dalam modulo 𝑝 dengan 1, 2, 3, … , (𝑝 − 1), dalam suatu urutan. Kalikan semua bilangan yang saling kongruen, sehingga diperoleh:
𝑎. 2𝑎. 3𝑎 … (𝑝 − 1)𝑎 ≡ 1.2.3 … (𝑝 − 1)(mod 𝑝) 𝑎𝑝−1(𝑝 − 1)! ≡ (𝑝 − 1)! (mod 𝑝)
Karena 𝑝 ∤ (𝑝 − 1)! maka (𝑝 − 1)! dapat dihilangkan dari kedua ruas sehingga diperoleh
𝑎𝑝−1 ≡ 1(mod 𝑝) Terbukti bahwa 𝑎𝑝−1 ≡ 1(mod 𝑝).
■ Contoh 2.11
Diberikan dua bilangan yakni 5 dan 13. Karena 5 ∤ 13 maka 134 ≡ 1 (mod 5).
Definisi 2.7 (Fungsi Euler (𝝓)) (Burton, 2007) Fungsi Euler dilambangkan dengan 𝜙: ℕ → ℕ yang didefinisikan ∀𝑛 ∈ ℕ maka 𝜙(𝑛) adalah banyaknya bilangan bulat positif 𝑘 ≤ 𝑛 yang relatif prima terhadap 𝑛.
Contoh 2.12
Nilai fungsi Euler dari 3, 5, 6, 8, 9 adalah 𝜙(3) = 2, 𝜙(5) = 4, 𝜙(6) = 2, 𝜙(8) = 4, 𝜙(9) = 5.
Teorema 2.11(Burton, 2007) Jika 𝑝 adalah bilangan prima dan 𝑘 > 0 maka
𝜙(𝑝𝑘) = 𝑝𝑘− 𝑝𝑘−1= 𝑝𝑘(1 −1 𝑝) Bukti
Terlebih dahulu dicari bilangan-bilangan yang tidak saling relatif prima terhadap 𝑝𝑘. Bilangan bulat yang tidak saling relatif prima dengan 𝑝𝑘 dan kurang dari 𝑝𝑘 adalah bilangan dengan kelipatan 𝑝. Bilangan tersebut adalah 𝑝, 2𝑝, 3𝑝, … , 𝑝𝑘−1𝑝 = 𝑝𝑘. Akibatnya banyaknya bilangan yang tidak saling relatif prima dengan 𝑝𝑘 ada 𝑝𝑘−1. Jadi 𝜙(𝑝𝑘) = 𝑝𝑘− 𝑝𝑘−1.
■ Contoh 2.13 𝜙(27) = 𝜙(33) = 33(1 −1 3) = 18 𝜙(32) = 𝜙(25) = 25(1 −1 2) = 16
Lemma 2.2 (Burton, 2007) Diberikan bilangan bulat 𝑎, 𝑏, 𝑐. gcd(𝑎, 𝑏𝑐) = 1 jika dan hanya jika 𝑔𝑐𝑑(𝑎, 𝑏) = 1 dan 𝑔𝑐𝑑(𝑎, 𝑐) = 1.
Bukti
Misalkan 𝑔𝑐𝑑(𝑎, 𝑏𝑐) = 1. Jika 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑑 maka 𝑑|𝑎 dan 𝑑|𝑏 dengan 𝑑 ≥ 1. Akibatnya 𝑑|𝑎 dan 𝑑|𝑏𝑐, berarti 𝑑 merupakan faktor persekutuan dari 𝑎 dan 𝑏𝑐. Karena 𝑔𝑐𝑑(𝑎, 𝑏𝑐) = 1 berarti 𝑑 ≤ 1. Sehingga nilai 𝑑 yang mungkin adalah 1. Jadi 𝑔𝑐𝑑(𝑎, 𝑏) = 1. Dengan cara yang analog maka akan diperoleh 𝑔𝑐𝑑(𝑎, 𝑐) = 1.
Misalkan 𝑔𝑐𝑑(𝑎, 𝑏) = 1 dan 𝑔𝑐𝑑(𝑎, 𝑐) = 1. Andaikan: 𝑔𝑐𝑑(𝑎, 𝑏𝑐) = 𝑑1 dengan 𝑑1 > 1, maka 𝑑1|𝑎 dan 𝑑1|𝑏𝑐. Misalkan 𝑑1 mempunyai faktor prima 𝑝 maka 𝑝|𝑎 dan 𝑝|𝑏𝑐. Karena 𝑝|𝑏𝑐, maka 𝑝|𝑏 atau 𝑝|𝑐. Jika 𝑝|𝑏 maka 𝑔𝑐𝑑(𝑎, 𝑏) ≥ 𝑝 (kontradiksi). Jika 𝑝|𝑐 maka 𝑔𝑐𝑑(𝑎, 𝑐) ≥ 1 (kontradiksi). Jadi 𝑑1 ≤ 1. Karena faktor persekutuan terbesar selalu positif maka 𝑑1 harus 1 atau 𝑔𝑐𝑑(𝑎, 𝑏𝑐) = 1.
■ Teorema 2.12 (Burton, 2007) Untuk setiap 𝑚, 𝑛 ∈ ℕ, jika 𝑔𝑐𝑑(𝑚, 𝑛) = 1 maka 𝜙(𝑚𝑛) = 𝜙(𝑚)𝜙(𝑛).
Bukti
Akan dibuktikan bahwa 𝜙(𝑚𝑛) = 𝜙(𝑚)𝜙(𝑛) untuk 𝑚 dan 𝑛 yang tidak mempunyai faktor persekutuan. Karena 𝜙(1) = 1 maka benar untuk 𝑚 atau 𝑛 sama dengan 1. Oleh sebab itu akan diambil 𝑚 > 1 dan 𝑛 > 1. Selanjutnya akan disusun bilangan bulat dari 1 sampai 𝑚𝑛 dengan 𝑚 kolom dan 𝑛 baris sehingga diperoleh:
1 2 … 𝑟 … 𝑚 𝑚 + 1 𝑚 + 2 … 𝑚 + 𝑟 … 2𝑚 2𝑚 + 1 2𝑚 + 2 … 2𝑚 + 𝑟 … 3𝑚 . . . . . . . . . . . . . . . . . . (𝑛 − 1)𝑚 + 1 (𝑛 − 1)𝑚 + 2 ... (𝑛 − 1)𝑚 + 𝑟 𝑛𝑚 Selanjutnya akan dicari banyak bilangan yang relatif prima terhadap 𝑚𝑛. Berarti akan dicari bilangan-bilangan yang relatif prima dengan 𝑚 sekaligus relatif prima terhadap 𝑛. Karena 𝑔𝑐𝑑(𝑞𝑚 + 𝑟, 𝑚) = 𝑔𝑐𝑑(𝑟, 𝑚) maka bilangan-bilangan pada kolom ke-𝑟 relatif prima terhadap 𝑚 jika dan hanya jika 𝑟 relatif prima terhadap 𝑚. Akibatnya terdapat 𝜙(𝑚) kolom yang relatif prima terhadap 𝑚 dan setiap bagian dari kolom tersebut relatif prima terhadap 𝑚. Selanjutnya akan ditunjukkan bahwa pada tiap kolom 𝜙(𝑚) terdapat 𝜙(𝑛) bilangan bulat yang relatif prima terhadap 𝑛. Hal ini akan mengakibatkan terdapat 𝜙(𝑚)𝜙(𝑛) bilangan yang relatif prima terhadap 𝑚 sekaligus 𝑛.
Perhatikan setiap baris pada kolom ke-𝑟 berikut ini (diambil 𝑟 yang relatif prima terhadap 𝑚):
𝑟, 𝑚 + 𝑟, 2𝑚 + 𝑟, … , (𝑛 − 1)𝑚 + 𝑟
Setiap bilangan pada baris tersebut tidak saling kongruen modulo 𝑛 satu sama lain. Misal terdapat bilangan yang kongruen modulo 𝑛
𝑘𝑚 + 𝑟 ≡ 𝑗𝑚 + 𝑟(mod 𝑛), dengan 0 ≤ 𝑘 < 𝑗 < 𝑛.
𝑘𝑚 ≡ 𝑗𝑚(mod 𝑛)
Karena 𝑔𝑐𝑑(𝑚, 𝑛) = 1 maka 𝑚 dapat dieliminasi dari persamaan. Hal ini kontradiksi karena diperoleh 𝑘 ≡ 𝑗(mod 𝑛) sehingga bilangan-bilangan pada kolom ke-𝑟 kongruen modulo dengan 0,1,2, … (𝑛 − 1) di suatu urutan. Tetapi jika 𝑠 ≡ 𝑡(mod 𝑛) maka 𝑔𝑐𝑑(𝑠, 𝑛) = 1 jika dan hanya jika 𝑔𝑐𝑑(𝑡, 𝑛) = 1. Akibatnya kolom ke-𝑟 yang mengandung beberapa bilangan bulat yang relatif prima terhadap 𝑛 sama seperti himpunan {0, 1, 2, . . . , 𝑛 − 1} yaitu sebanyak 𝜙(𝑛) bilangan. Jadi ada 𝜙(𝑛) baris yang relatif prima terhadap 𝑛. Berarti ada sebanyak 𝜙(𝑚)𝜙(𝑛) yang relatif prima terhadap 𝑚𝑛.
■
Teorema 2.13 (Burton, 2007) Jika bilangan bulat 𝑛 > 1 mempunyai faktor prima 𝑛 = 𝑝1𝑘1𝑝 2𝑘2… 𝑝𝑟𝑘 maka 𝜙(𝑛) = (𝑝1𝑘1 − 𝑝 1𝑘1−1)(𝑝2𝑘2 − 𝑝2𝑘2−1) … (𝑝𝑟𝑘𝑟 − 𝑝𝑟𝑘𝑟−1) = 𝑛 (1 − 1 𝑝1) (1 − 1 𝑝2) … (1 − 1 𝑝𝑟) Bukti : 𝑛 = 𝑝1𝑘1𝑝
2𝑘2… 𝑝𝑟𝑘, dengan 𝑝𝑖 faktor prima yang berbeda dari 𝑛 untuk setiap 𝑖 = 1,2, … 𝑟. Akibatnya 𝑔𝑐𝑑(𝑝1, 𝑝2, 𝑝3, … , 𝑝𝑟) = 1. Berdasarkan teorema 2.12
maka diperoleh:
𝜙(𝑛) = 𝜙(𝑝1𝑘1𝑝
2𝑘2… 𝑝𝑟𝑘) = 𝜙(𝑝1𝑘1)𝜙(𝑝
2𝑘2) … 𝜙(𝑝𝑟𝑘𝑟) Berdasarkan teorema 2.10 diperoleh:
𝜙(𝑛) = (𝑝1𝑘1 − 𝑝 1𝑘1−1)(𝑝2𝑘2− 𝑝2𝑘2−1) … (𝑝𝑟𝑘𝑟− 𝑝𝑟𝑘𝑟−1) = 𝑝1𝑘1(1 − 1 𝑝1) ∙ 𝑝2𝑘2(1 − 1 𝑝2) ∙ … 𝑝𝑟 𝑘𝑟(1 − 1 𝑝𝑟) = (𝑝1𝑘1∙ 𝑝 2𝑘2∙ … 𝑝𝑟𝑘) ∙ (1 − 1 𝑝1) (1 − 1 𝑝2) … (1 − 1 𝑝𝑟) = 𝑛 (1 − 1 𝑝1) (1 − 1 𝑝2) … (1 − 1 𝑝𝑟) ■
32 BAB III
KRIPTOSISTEM RSA DAN LUC
A. Algoritma RSA
Algoritma RSA pertama kali diperkenalkan pada tahun 1978. Nama RSA diambil dari singkatan nama pengembang algoritma RSA yakni Ron Rivest, Adi Shmir dan Len Adleman. Algoritma RSA merupakan salah satu kriptografi kunci publik yang masih digunakan hingga saat ini. Kriptografi kunci publik merupakan kriptografi yang menggunakan dua kunci berbeda atau disebut juga sebagai sistem kriptografi asimetris. Algoritma RSA memanfaatkan perkalian dua bilangan prima berbeda yang sangat besar dalam proses pembuatan kunci. Hal ini menjadi keunggulan dari algoritma RSA karena membutuhkan waktu yang tidak sedikit untuk memfaktorkan dua bilangan prima dengan menggunakan kemampuan komputer yang ada saat ini. Perlu diketahui pada algoritma RSA, pengguna lain dapat dengan mudah mengenkripsi suatu pesan tetapi tidak akan mudah untuk mendekripsi pesan bila tidak mempunyai kunci privat. Atas dasar itu algoritma RSA juga disebut sebagai fungsi trapdoor satu arah atau fungsi trapdoor bijektif. Fungsi trapdoor satu arah merupakan fungsi satu arah 𝑓 yang dengan mudah memetakan himpunan 𝑋 ke himpunan 𝑌 (𝑦 = 𝑓(𝑥)) dengan aturan tertentu tetapi sulit untuk menentukan inversnya (𝑥 = 𝑓−1(𝑦)) tanpa mengetahui suatu kunci rahasia fungsi tersebut.
Selanjutnya akan dibahas mengenai langkah-langkah pembangkitan kunci RSA. Ada pun langkahnya sebagai berikut:
1. Tentukan sembarang bilangan prima 𝑝 dan 𝑞. Sebaiknya bilangan prima memiliki 100 atau lebih digit agar keamanan pesan lebih terjamin.
2. Hitung 𝑁 = 𝑝. 𝑞
3. Hitung nilai (𝑁) , dengan menggunakan teorema 2.11 diperoleh 𝜙(𝑁) = 𝑁 (1 −𝑝1) (1 −1𝑞) = (𝑝 − 1)(𝑞 − 1).
4. Tentukan sembarang bilangan bulat positif 𝑒 < 𝜙(𝑁) yang relatif prima terhadap 𝜙(𝑁) atau gcd(𝑒, 𝜙(𝑁)) = 1. Hitung bilangan bulat 𝑑 sedemikian hingga:
𝑒𝑑 ≡ 1(mod 𝜙(𝑁)).
5. Publikasikan 𝑁 dan 𝑒, sedangkan nilai 𝑑 dan 𝜙(𝑁) disimpan sebagai kunci privat.
Kunci publik digunakan untuk mengenkripsi plaintext. Sesuai dengan namanya, kunci publik tidak bersifat rahasia. Kunci publik akan disebarkan kepada orang-orang yang bersangkutan. Sedangkan kunci privat digunakan oleh penerima untuk mendekripsi chipertext dan bersifat rahasia.
Sebelum proses enkripsi, plaintext terlebih dahulu dikonversi ke bentuk bilangan bulat dengan kode yang telah disepakati. Kode yang biasa digunakan adalah ASCII. ASCII (American Standart for Information Interchange) merupakan standar pengkodean karakter menjadi sebuah kode numerik pada komunikasi elektronik. Pada dasarnya ASCII memuat 127 karakter yang dikodekan sebagai berikut:
Tabel 3.1 ASCII 0-29
*Diunduh dari wiki.freepascal.org/ASCII. Dec Hex Binary ASCII
Codes Dec Hex Binary ASCII
Codes Dec Hex Binary ASCII Codes 0 00 00000000 NUL 43 2B 00101011 + 86 56 01010110 V 1 01 00000001 SOH 44 2C 00101100 , 87 57 01010111 W 2 02 00000010 STX 45 2D 00101101 - 88 58 01011000 X 3 03 00000011 ETX 46 2E 00101110 . 89 59 01011001 Y 4 04 00000100 EOT 47 2F 00101111 / 90 5A 01011010 Z 5 05 00000101 ENQ 48 30 00110000 0 91 5B 01011011 [ 6 06 00000110 ACK 49 31 00110001 1 92 5C 01011100 \ 7 07 00000111 BEL 50 32 00110010 2 93 5D 01011101 ] 8 08 00001000 BS 51 33 00110011 3 94 5E 01011110 ^ 9 09 00001001 HT 52 34 00110100 4 95 5F 01011111 _ 10 0A 00001010 LF 53 35 00110101 5 96 60 01100000 ` 11 0B 00001011 VT 54 36 00110110 6 97 61 01100001 a 12 0C 00001100 FF 55 37 00110111 7 98 62 01100010 b 13 0D 00001101 CR 56 38 00111000 8 99 63 01100011 c 14 0E 00001110 SO 57 39 00111001 9 100 64 01100100 d 15 0F 00001111 SI 58 3A 00111010 : 101 65 01100101 e 16 10 00010000 DLE 59 3B 00111011 ; 102 66 01100110 f 17 11 00010001 DC1 60 3C 00111100 < 103 67 01100111 g 18 12 00010010 DC2 61 3D 00111101 = 104 68 01101000 h 19 13 00010011 DC3 62 3E 00111110 > 105 69 01101001 i 20 14 00010100 DC4 63 3F 00111111 ? 106 6A 01101010 j 21 15 00010101 NAK 64 40 01000000 @ 107 6B 01101011 k 22 16 00010110 SYN 65 41 01000001 A 108 6C 01101100 l 23 17 00010111 ETB 66 42 01000010 B 109 6D 01101101 m 24 18 00011000 CAN 67 43 01000011 C 110 6E 01101110 n 25 19 00011001 EM 68 44 01000100 D 111 6F 01101111 o 26 1A 00011010 SUB 69 45 01000101 E 112 70 01110000 p 27 1B 00011011 ESC 70 46 01000110 F 113 71 01110001 q 28 1C 00011100 FS 71 47 01000111 G 114 72 01110010 r 29 1D 00011101 GS 72 48 01001000 H 115 73 01110011 s 30 1E 00011110 RS 73 49 01001001 I 116 74 01110100 t 31 1F 00011111 US 74 4A 01001010 J 117 75 01110101 u 32 20 00100000 75 4B 01001011 K 118 76 01110110 v 33 21 00100001 ! 76 4C 01001100 L 119 77 01110111 w 34 22 00100010 " 77 4D 01001101 M 120 78 01111000 x 35 23 00100011 # 78 4E 01001110 N 121 79 01111001 y 36 24 00100100 $ 79 4F 01001111 O 122 7A 01111010 z 37 25 00100101 % 80 50 01010000 P 123 7B 01111011 { 38 26 00100110 & 81 51 01010001 Q 124 7C 01111100 | 39 27 00100111 ' 82 52 01010010 R 125 7D 01111101 } 40 28 00101000 ( 83 53 01010011 S 126 7E 01111110 ~ 41 29 00101001 ) 84 54 01010100 T 127 7F 01111111 Del 42 2A 00101010 * 85 55 01010101 U
Selanjutnya akan diperlihatkan contoh penggunaan kode ASCII untuk mengkonversi suatu plaintext menjadi bilangan bulat sebelum proses penyandian menggunakan algoritma RSA.
Contoh 3.1 :
HILANGNYA MATAHARI
Bila plaintext di atas akan dikonversi dengan menggunakan ASCII maka pesan akan terkonversi sebagai berikut:
727376657871788965327765846572658273
Setelah dikonversi ke bilangan bulat, ubah plaintext (𝑀) menjadi beberapa blok plaintext: 𝑚1, 𝑚2, 𝑚3, … . , 𝑚𝑘 dengan 0 < 𝑚𝑖 < 𝑁, 𝑘 ∈ 𝑍. Selanjutnya setiap 𝑚𝑖 akan dienkripsi menjadi blok chipertext: 𝑐1, 𝑐2, 𝑐3, … , 𝑐𝑘 dengan 0 < 𝑐𝑖 < 𝑁, 𝑘 ∈ 𝑍. Persamaan untuk mengubah blok plaintext menjadi blok chipertext adalah sebagai berikut:
𝑐𝑖 ≡ (𝑚𝑖)𝑒(mod 𝑁)∀𝑖 ∈ {1, . . , 𝑘} 3.1
Penerima akan mendekripsi pesan agar bisa membaca isi pesan rahasia. Aturan yang digunakan untuk mendekripsi pesan adalah sebagai berikut:
𝑚𝑖 ≡ (𝑐𝑖)𝑑(mod 𝑁), ∀𝑖 ∈ {1, . . , 𝑘} 3.2
Aturan dekripsi dapat mengembalikan chipertext kembali ke plaintext karena 𝑒𝑑 ≡ 1(mod 𝜙(𝑁)). Berdasarkan teorema 2.9 diperoleh:
𝑒𝑑 ≡ 𝑘𝜙(𝑁) + 1 3.3
𝑑 akan bernilai bilangan bulat untuk suatu bilangan bulat 𝑘. Berdasarkan persamaan 3.1, 3.2 dan 3.3 didapatkan:
(𝑐𝑖)𝑑(mod 𝑁) ≡ ((𝑚𝑖)𝑒)𝑑(mod 𝑁) ≡ (𝑚𝑖)𝑒𝑑(mod 𝑁) ≡ (𝑚𝑖)𝑘𝜙(𝑛)+1(mod 𝑁) ≡ 𝑚𝑖. (𝑚𝑖𝜙(𝑛)) 𝑘 (mod 𝑁) ≡ 𝑚𝑖(1)𝑘(mod 𝑁) ≡ 𝑚𝑖(mod 𝑁)
Jadi dari aturan dekripsi diperoleh kembali plaintext.
Selanjutnya akan dijelaskan simulasi pembangkitan kunci RSA melalui contoh. Pada contoh berikut bilangan prima yang digunakan tidak besar agar memudahkan dalam memahami algoritma RSA.
Contoh 3.2:
Suatu hari Dito ingin melakukan komunikasi rahasia dengan Fadli. Agar pesan tidak terbaca oleh orang lain, Dito menggunakan algoritma RSA untuk menyandikan pesan yang akan dikirim. Dito memilih 2 bilangan prima 𝑝 = 5 dan 𝑞 = 11, maka 𝑁 = 𝑝 × 𝑞 = 5 × 11 = 55 dan 𝜙(𝑁) = 4 × 10 = 40. Dito menentukan bilangan bulat 𝑒 < 𝜙(𝑁) dan 𝑔𝑐𝑑(𝑒, 𝜙(𝑁)) = 1. Misalkan Dito memilih 𝑒 = 13, dengan menggunakan Algoritma Euclid akan dicek kebenaran 𝑒 relatif prima terhadap 𝜙(𝑁) atau 𝑔𝑐𝑑(13,40) = 1.
40 = 3.13 + 1 13 = 13.1 + 0
Karena benar 𝑔𝑐𝑑(13,40) = 1, maka Dito dapat memilih 𝑒 = 13. Selanjutnya Dito menghitung nilai 𝑑 yang memenuhi 𝑒𝑑 ≡ 1(mod 𝜙(𝑁)) menggunakan teorema 2.7.
Tabel 3.2 Contoh Algoritma Euclid Diperluas pada Kriptosistem RSA
𝑗 𝑟𝑗 𝑟𝑗+1 𝑞𝑗+1 𝑟𝑗+2 𝑠𝑗 𝑡𝑗
0 40 13 3 1 1 0
1 13 1 13 0 0 1
2 1 -3
Nilai 𝑠𝑗 dan 𝑡𝑗 dengan 𝑗 = 0,1,2 diperoleh berdasarkan teorema 2.7 sebagai berikut:
𝑠0 = 1, 𝑡0 = 0,
𝑠1= 0, 𝑡1 = 1,
𝑠2 = 𝑠0 − 𝑞1. 𝑠1 = 1 − 0(3) = 1, 𝑡2 = 𝑡0 − 𝑞1. 𝑡1 = 0 − 1(3) = −3, Berdasarkan perhitungan di atas nilai 𝑟2 dapat ditulis sebagai berikut:
𝑟2 = (−3)(13) + (1)(40). Karena 𝑟2 = 1 maka persamaan sebelumnya dapat ditulis:
1 = (−3)(13) − (−1)(40).
Berdasarkan persamaan tersebut maka dapat disimpulkan bahwa nilai 𝑑 yang memenuhi 𝑒𝑑 − 𝑘𝜙(𝑁) = 1 atau 𝑒𝑑 ≡ 1(mod 𝜙(𝑁)) dengan 𝑒 = 13 dan 𝜙(𝑁) = 40 adalah 𝑑 = −3. Jadi Dito mendapatkan:
𝑑 ≡ −3(mod 40) ≡ 37(mod 40). B. Tanda Tangan Digital
Sebelum membahas mengenai serangan terhadap tanda tangan digital RSA, terlebih dahulu akan dijelaskan mengenai tanda tangan digital. Tanda
tangan digital dimanfaatkan sama halnya seperti tanda tangan konvensional yakni untuk mengetahui keaslian suatu pesan. Tanda tangan digital memiliki karakteristik sebagai berikut:
1. Tanda tangan adalah bukti yang otentik. 2. Tanda tangan tidak dapat dilupakan.
3. Tanda tangan tidak dapat dipindah untuk digunakan ulang. 4. Dokumen yang telah ditandatangani tidak dapat diubah. 5. Tanda tangan tidak dapat disangkal.
Setelah mengetahui karakteristik sebuah tanda tangan digital, selanjutnya akan dibahas mengenai cara memperoleh tanda tangan digital. Secara umum terdapat dua cara memperoleh tanda tangan yakni:
1. Enkripsi
Pesan yang sudah terenkripsi baik dengan menggunakan kriptografi algoritma kunci simetri maupun kunci asimetris (publik) dapat dikatakan telah ditanda tangani.
2. Fungsi Hash
Tanda tangan dibangkitkan dengan menerapkan fungsi hash terhadap pesan. Fungsi hash merupakan fungsi yang masukannya berupa string dengan panjang sembarang yang kemudian dikonversi menjadi string dengan panjang tertentu. Hasil dari fungsi hash dienkripsi menggunakan algoritma kunci publik untuk memperoleh tanda tangan digital. Tanda tangan digital ini kemudian ditambahakan pada pesan.
Pesan yang terenkripsi dengan menggunakan algoritma kunci simetris dapat dikatakan telah memiliki mekanisme otentikasi atau keaslian. Hal ini karena kunci hanya diketahui oleh pihak pengirim dan penerima. Akan tetapi algoritma kunci simetris tidak memiliki mekanisme untuk masalah penyangkalan. Masalah penyangkalan terjadi apabila pihak pengirim menyangkal telah mengirimkan pesan tersebut. Hal ini dapat diatasi dengan adanya pihak penengah (arbitrase) yang dipercaya oleh pengirim maupun penerima. Sebut saja pihak penengah tersebut sebagai Dendi. Misalkan Ani akan mengirim pesan rahasia kepada Budi dengan menggunakan algoritma kunci simetris. Ani terlebih dahulu mengirim pesan rahasia (𝑀) kepada Dendi dengan menggunakan kunci yang diketahui oleh Ani dan Dendi (𝐾𝐴). Selanjutnya Dendi akan mengenkripsi kembali pesan rahasia Ani (𝑀) yang telah ditambahkan keterangan bahwa dokumen tersebut asli dari Ani (𝑆) dengan menggunakan kunci yang diketahui oleh Dendi dan Budi (𝐾𝐵). Selanjutnya pesan dan bukti keaslian dokumen dikirimkan kepada Budi. Jika Ani menyangkal telah mengirimkan pesan tersebut maka Budi akan menolak penyangkalan dengan menggunakan keterangan dari Dendi sebagai bukti. Skema penandatangan menggunakan algoritma kunci simetris dengan bantuan arbitase dapat dilihat pada skema berikut
Gambar 3.1 Skema Tanda Tangan Kunci Simetris
Berbeda dengan algoritma kunci simetris, kriptografi dengan menggunakan algoritma kunci asimetris tidak memiliki mekanisme otentikasi atau keaslian pesan. Berdasarkan hal tersebut Diffie dan Hellman mempunyai ide untuk mengenkripsi pesan menggunakan kunci privat pengirim dan mendekripsi pesan dengan menggunakan kunci publik pengirim. Hal ini akan menjaga kerahasiaan pesan sekaligus keaslian pesan. Perlu diingat bahwa hal ini berlaku jika kunci privat (𝑑) dan kunci publik (𝑒) memenuhi:
𝐷𝑑(𝐸𝑒(𝑀)) = 𝑀 dan
𝐷𝑒(𝐸𝑑(𝑀)) = 𝑀
dengan 𝐷 sebagai fungsi dekripsi dan 𝐸 sebagai fungsi enkripsi. Misalkan Ani akan mengirimkan pesan 𝑀 kepada Budi. Terlebih dahulu Ani akan mengenkripsi pesan 𝑀 dengan menggunakan kunci privatnya dan diperoleh:
𝑆 = 𝐸𝑑(𝑀).
Selanjutnya 𝑆 dikirim ke Budi yang kemudian didekripsi dan diperoleh: 𝑀 = 𝐷𝑒(𝑆).
Keabsahan pesan 𝑀 terjadi bila hasil dekripsi 𝑆 mempunyai makna. Skema penandatangan pesan menggunakan algoritma kunci publik dapat dilihat pada skema berikut:
Gambar 3.2 Skema Tanda Tangan Asimetris
Pada tanda tangan menggunakan teknik enkripsi, otentikasi dan kerahasiaan pesan dapat dijaga. Akan tetapi terdapat beberapa kasus dimana pengguna hanya membutuhkan otentikasi suatu pesan tanpa harus merahasiakan pesan tersebut. Solusi dari kasus tersebut adalah dengan menggunakan fungsi hash dalam proses penandatangan. Fungsi hash adalah fungsi yang menerima masukan berupa string dengan panjang sembarang dan mengkonversinya menjadi string dengan panjang tetap sebagai keluaran. Keluaran dari fungsi hash disebut sebagai nilai hash (hash-value) atau pesan-ringkas (message digest). Selanjutnya messages digest akan dienkripsi menjadi sebuah tanda tangan. Adapun kriptografi yang cocok digunakan bersama dengan fungsi hash adalah algoritma kunci publik. Hal ini karena algoritma kunci publik memiliki mekanisme anti penyangkalan.