Anda di halaman 1dari 10

2.

1 Algoritma Euclidean

Di dalam upabab 5.6 telah diperlihankan bahwa untuk mencari PBB dari dua buah
bilangan bulat m dan n, mula-mula kita mendaftarkan semua pembagi dari masing-masing m
dan n,lalu memilih pembagi persekutuan yang bernilai terbesar.di dalam upabab 5.7 ini
diberikan metode yang mangkus untuk menemukan PBB, yang dikenal dengan nama
algoritma Euclidean.Algoritma Euclidean udah dikenal berabad-abad yang lampau. euclid,
penemu algoritma Euclidean, adalah seorang matematikawan yunani yang menulisakn
algoritmanya tersebut dalam bukunya uang terkenal,Element.

Algoritmanya Euclidean didasarkan pada aplikasi seacara berturut-turut sampai kita menemui
sisa pembagaian bernilai nol, dan contoh ilustrasi yang menarik untuk hal ini sudah
diperlihatkan secara formal algoritma Euclidean kita di rumuskan sebagai berikut:

Misalkan m dan n adalah bilangan bulat tak negative dengan , m > n. Misalkan r0 = m dan r1
= n. Lakukan secara berturut-berturut pembagian (Teorema 5.1) untuk memperoleh

r0= r1q1+r2 0 < r2 < r1,

r1= r2q2+r3 0 < r3< r2,

rn-2=rn-1qn-1+rn 0 < rn < rn-1,

rn-1 =rnqn + 0

Menurut Teorema 5.3,

PBB(m, n) = PBB(r0,r1) = PBB(r1, r2) = … = PBB(rn-2, r n-1,)

= PBB(r n-1,r0) =PBB(r n, 0) = r n

Jadi,PBB dan m dan n adalah sisa terakhir yang tidak nol dari runtunan pembagian tersebut

Diberikan dua buah bilangan bulat tak-negatif m dan n (m > n).Algoritma Euclidean berikut
mancari pembagi bersama tersebar,PBB,dari kedua bilangan tersebut,Yaitu bilangan bulat
positif terbesaryang habis membagi m dan n.
Algoritma Euclidean

1. Jika n = 0 maka
m adalah PBB(m, n);
stop.
Tetapi jika n = 0,
Lanjutkan ke langkah 2.
2. Bagilah m dengan n dan misalkan r adalah sisanya.
3. Ganti nilai m dengan nilai n dan nilai dengan nilai r, lalu ulang kembali ke langkah 1

2.2 Kongruen

Kadang-kadang dua buah bilangan bulat, a dan b, mempunyai sisa yang sama jika dibagi
bilangan bulat positif m. kita katakana bahwa a dan b kongruen dalam modulo m, dan
dilambangkan sebagai

a = b (mod m)

(notasi ‘=’ dibaca ‘kongruen’)

Jika a tidak,kongruen dengan b dalam modulus m,maka ditulis

a=/ b (mod m)

Kongruen lanjar

Kongruen lanjar adalah konguren yang berbentuk

ax = b (mod m)

dengan m adalah bilangan bulat positif, a dan b sembarang bilangan bulat dan x
adalah peubah. Bentuk kongruen lanjar berati mentukan nilai-nilai x yang memenuhi
kongruenan tersebut.Metode yang sederhana untuk mencari nilai-nilai x tersebut adalah
dengan menggunakan persamaan(5.6) menurut persamaan (5.6) ax= b (mod m) dapat ditulis
dalam hubungan

ax = b + km

yang dapat disusun menjadi


x= b+km

dengan k adalah sembarang bilangan bulat. Cobakan nilai-nilai k=0,1,2,…. Dan k=-1,-2,….
Ke dalam persamaanyang teakhir untuk menghasilkan x sebagai bilangan bulat.

Chinese Remainder Problem

Pada abad pertama,seorang matematikawan china yang bernama Sun Tse mengajukan
pertanyaan sebagai berikut:

Tentukan sebuah bilangan bulat yang bila dibagi dengan 5 menyisakan 3, bila di bagi
7 menyisakan 5,dan bila di bagi 11 menyisakan 7.

Pertanyaan Sun Tse dapat dirumuskan kedalam system konguren lanjar;

x=3(mod 5)

x=5(mod 7)

x=7(mod 11)

Untuk menyelesaikan persolan pertama ambil kongruen pertama, x ≡ 3 (mod 5), memberikan
x = 3 + 5k1 untuk beberapa nilai k. Sulihkan ini ke dalam kongruen kedua menjadi 3 + 5k1
≡ 5 (mod 7), dari sini kita peroleh k1 ≡ 6 (mod 7), atau k1 = 6 + 7k2 untuk beberapa nilai k2.Jadi kita
mendapatkan x = 3 + 5k1 = 3 + 5(6 + 7k2) =33 + 35k2 yang mana memenuhi dua kongruen pertama.
Jika x memenuhi kongruen yang ketiga, kita harus mempunyai 33 + 35k2 ≡ 7 (mod 11), yang
mengakibatkan k2 ≡ 9 (mod 11) atau k2 = 9 + 11k3. Sulihkan k2 ini ke dalam kongruen yang ketiga
menghasilkan x = 33 + 35(9 + 11k3) ≡ 348 + 385k3 (mod 11).Dengan demikian, x ≡ 348 (mod 385)
yang memenuhi ketiga konruen tersebut. Dengan kata lain,348 adalah solusi unik modulo
385. Catatlah bahwa 385 = 5 × 7 × 11.Solusi unik ini mudah dibuktikan sebagai berikut.
Solusi tersebut modulo m = m1 × m2 × m3 = 5 × 7 × 11= 5 × 77 = 11 × 35. Karena 77 3 ≡ 1
(mod 5), 55 × 6 ≡ 1 (mod 7), dan 35 × 6 ≡ 1 (mod 11), solusi unik dari system kongruen
tersebut adalahx ≡ 3 × 77 × 3 + 5 × 55 × 6 + 7 × 35 × 6 (mod 385) ≡ 3813 (mod 385) ≡ 348
(mod 385).
Teorema Chinese Remainder berikut akan digunakan untuk menemukan solusi system
kongruen lanjar seperti di atas.

2.3 Bilangan Prima

Bilangan bulat positif yang mempunyai aplikasi penting dalam ilmu penting dan
matematika diskit adalah bilangan prima. Bilangan prima adalah bilangan positifyang lebih
besar dari 1 yang hanya habis di bagi oleh 1 dan diri sendirinya.

Sebagai contoh,23 adalah bilangan prima Karena ia hanya habis di bagi oleh 1 dan 23.karena
bilangan prima harus dilebih besar dari 1,maka barisan bilangan prima di mulai dari 2,yaitu
2,3,5,7,11,13,…….seluruh bilangan prima adalah ganjil,kecuali 2 yang merupakan bilangan
genap.

Bilangan selain prima disebut bilangan Komposit (composite). Misalnya 20 adalah bilangan
komposit karena 20 dapat dibagi oleh 2,4,5 dan 10, selain 1 dan 20 sendiri

Algoritma Brute Force.

Algoritma di bawah ini adalah algoritma Brute Force (cara naif) dan merupakan algoritma
yang sederhana.Pertama-tama kita membuat suatu list yang akan diisi dengan bilangan prima
yang kita dapatkan. Pada awalnya di dalam list tersebut tidak ada bilangan lain selain 3.
Kemudian kita akan mengecek seluruh bilangan ganjil sampai dengan batas yang telah kita
tentukan sendiri, dan membandingkannya dengan
bilangan prima yang ada dalam list bilangan prima tadi. Jika bilangan tersebut tidak bisa
dibagi oleh seluruh bilangan prima yang ada dalam list maka bilangan tersebut adalah
bilangan prima dan kita bisa menambahkannya ke dalam list bilangan prima tadi. Pada
akhirnya kita harus menambahkan angka 2 ke dalam list tersebut. Satu hal lainnya yang patut
dicatat, kita hanya harus mengecek bilangan prima sampai akar kuadrat dari
batas nilai dari list tersebut.

Hal ini terlihat baik, sebagai sebuah pendekatan kasar terhadap fungsi perhitungan bilangan
prima adalah x/ln x, dan kita hanya perlu mengecek bilangan prima sampai √(n). Secara
kasar kita harus melakukan paling banyak √(n)/ln√(n) tes terhadap suatu angka untuk
menentukan dengan keakuratan 100% bahwa bilangan tersebut adalah prima. Fungsi ini
memang akan memakan waktu yang lama, tapi pada kenyataannya tidak teralalu lama.
Berikut kodenya dalam pseudocode:
Procedure deterministicPrimeSeqence(end):
If end < 2: return []
if end < 3: return [2]
primes = [3]
for i in range(5,end,2):
sqt = int(sqrt(i))
for prime in primes:
if prime > sqt:
primes.append(i)
break
if i%prime == 0: break
primes.insert(0,2)
return primes

2.4 Kriptografi

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier -
Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari
teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan
data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S.
Vanstone - Handbook of Applied Cryptography]. Tidak semua aspek keamanan informasi ditangani
oleh kriptografi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi
yaitu :

 Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun
kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang
telah disandi.
 Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah.
Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi
manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan
pensubsitusian data lain kedalam data yang sebenarnya.
 Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem
maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling
memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian,
isi datanya, waktu pengiriman, dan lain-lain.
 Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan
terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

2.2.1 Pengertian Dasar

Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga
sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext  disebut
encryption atau encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext
disebut decryption atau decipherment. Secara sederhana istilah-istilah di atas dapat digambarkan
sebagai berikut :

Gb. 1. Proses Enkripsi/Dekripsi Sederhana

Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh
cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan
orang yang melakukannya disebut cryptanalyst.

Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan


plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan
transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu
atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses
pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.

Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai
berikut :

EK (M) = C  (Proses Enkripsi)


DK (C) = M  (Proses Dekripsi)
Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan
pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K
sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.

Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang
digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma yang
digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang menggunakan
algoritma tersebut dapat diproduksi massal. Tidaklah menjadi masalah apabila seseorang mengetahui
algoritma yang kita gunakan. Selama ia tidak mengetahui kunci yang dipakai, ia tetap tidak dapat
membaca pesan.Suatu penyerangan pasif atas cryptosystem adalah semua metode untuk
mengungkapkan informasi tentang plaintext dan ciphertextnya dengan tanpa mengetahui kunci.
Secara matematis :

Diberikan fungsi F, G, dan H yang terdiri dari n variabel.


Diberikan sistem enkripsi E.
Diberikan suatu distribusi plaintext dan kunci.

Suatu penyerangan atas E dengan menggunakan G dengan mengasumsikan F membagi H


dengan probabilitas p adalah suatu algoritma A dengan sepasang input f,g dan satu buah output h
sedemikian hingga terdapat probabilitas p atas h = H(P 1, …, Pn), jika kita memiliki f = F(P 1, …, Pn)
dan g = G(EK(P1), …, EK(Pn)). Perlu diperhatikan bahwa probabilitas ini tergantung pada distribusi
vektor-vektor (K,P1,…,Pn).

Penyerangan akan merupakan suatu trivial bila terdapat probabilitas paling sedikir p untuk h = H(P 1,
…, Pn) jika f = F (P1,…,Pn) dan g = G (C1,…,Cn). Di sini C1,…,Cn terletak pada ciphertext yang
mungkin, dan tidak memiliki hubungan tertentu dengan P 1,…,Pn. Dengan kata lain, suatu serangan
akan merupakan trivial bila ia tidak benar-benar menggunakan enkripsi E K(P1),…,EK(Pn).

2.2.2 Algoritma Pembangkitan Kunci

1. Ambil dua buah bilangan prima sembarang, x dan y


2. Hitung n = xy dan m = (x-1)*(y-1).
3. Pilih bilangan integer e, 1 < e < m, yang relative prima terhadap m yaitu FPB(e,m) = 1.
4. Hitung eksponen rahasia d, 1 < d < m, sehingga ed ≡1 (mod m).
5. Kunci publik adalah (n,e) dan kunci privat adalah (n,d). Nilai x, y dan m juga harus
dirahasiakan.
 n disebut juga modulus
 e disebut juga public exponent atau exponent enkripsi
 d disebut juga secret exponent atau exponent dekripsi

2.5 Fungsi Hash

Hash function atau fungsi hash adalah suatu cara menciptakan“fingerprint” dari berbagai data
masukan. Hash function akan mengganti atau mentranspose-kan data tersebut untuk menciptakan
fingerprint, yang biasa disebut hash value. Hash value biasanya digambarkan sebagai suatu string
pendek yang terdiri atas huruf dan angka yang terlihat random (data biner yang ditulis dalam notasi
heksadesimal).Suatu hash function adalah sebuah fungsi matematika, yang mengambil sebuah
panjang variabel string input, yang disebut pre-image dan mengkonversikannya ke sebuah string
output dengan panjang yang tetap dan biasanya lebih kecil, yang disebut message digest5.Hash
function digunakan untuk melakukan fingerprint pada pre-image, yaitu menghasilkan sebuah nilai
yang dapat menandai (mewakili) pre-image sesungguhnya. Fungsi hash satu arah (one-way hash
function) adalah hash function yang bekerja satu arah, yaitu suatu hash function yang dengan mudah
dapat menghitung hash value dari pre-image, tetapi sangat sukar untuk menghitung pre-image dari
hash value. Sebuah fungsi hash satu arah, H(M), beroperasi pada suatu pre-image pesan M dengan
panjang sembarang, dan mengembalikan nilai hash h yang memiliki panjang tetap. Dalam notasi
matematika fungsi hash satu arah dapat ditulis sebagai:
h = H(M), dengan h memiliki panjang b
Ada banyak fungsi yang mampu menerima input dengan panjang sembarang dan menghasilkan output
dengan panjang tetap, tetapi fungsi hash satu arah memiliki karakteristik tambahan yang membuatnya
satu arah :
Diberikan M, mudah menghitung h.
Diberikan h, sulit menghitung M agar H(M) = h.
Diberikan M, sulit menemukan pesan lain, M', agar H(M) = H(M').
Dalam dunia nyata, fungsi hash satu arah dikembangkan berdasarkan ide sebuah fungsi kompresi.
Fungsi satu arah ini menghasilkan nilai hash berukuran n bila diberikan input berukuran b. Input
untuk fungsi kompresi adalah suatu blok pesan dan hasil blok teks sebelumnya. Sehingga hash suatu
blok M, adalah
hi = f(Mi,hi-1)
dengan
hi = hash value saat ini.
Mi = blok pesan saat ini.
hi-1 = hash value blok teks sebelumnya.

Mi One-way hash hi
function

hi-1

Gbr.1.1 Fungsi hash satu arah

Fungsi hash sangat berguna untuk menjaga integritas sebuah data. Sudah banyak algoritma hash
function yang diciptakan, namun hash function yang umum digunakan saat ini adalah MD5 dan SHA
(Secure Hash Algorithm).Algoritma hash function yang baik adalah yang menghasilkan sedikit hash
collision.

Andai m=11 sehingga kita mempunyai sel-sel memori yang beri indeks 0 sampai 10.kita akan
menyimpan data record yang masing-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

132 102 15 5 558 32


0 1 2 3 4 5 6 7 8 9 10

Anda mungkin juga menyukai