6181_bab-5
-
Upload
sulaiman-hmz -
Category
Documents
-
view
17 -
download
1
Transcript of 6181_bab-5
Modul 5 - 1
I. PENDAHULUAN
Kriptografi modern menggunakan gagasan dasar yang sama seperti
kriptografi klasik (permutasi dan transposisi) tetapi penekanannya berbeda. Pada
kriptografi klasik, kriptografer menggunakan algoritma yang sederhana, yang
memungkinkan cipherteks dapat dipecahkan dangan mudah (melalui penggunaan
statistik, terkaan, intuisi, dsb). Algoritma kriptografi modern dibuat sedemikian
kompleks sedemikian sehingga kriptanalis sangat sulit memecahkan cipherteks tanpa
mengetahui kunci. Perkembangan algoritma kriptografi modern didorong oleh
penggunaan komputer digital untuk keamanan pesan.
II. MODERN CRYPTOGRAPHY
A. KOMPETENSI
Setelah mempelajari pokok bahasan ini mahasiswa dapat:
a. mengetahui dan memahami konsep dasar kriptografi modern
b. Mampu mengaplikasikan algoritma kriptografi modern.
c. melakukan komunikasi dengan cara saling mengirimkan pesan yang sudah
tersandikan menggunakan metode yang terdapat pada kriptografi modern
B. URAIAN MATERI
Algoritma kriptografi klasik modern umumnya beroperasi dalam mode
karakter , sedangkan kriptografi modern beroperasi pada mode bit. Operasi dalam
mode bit berarti semua data dan informasi (baik kunci, plainteks, maupun
cipherteks) dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Algoritma
enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian
bit. Rangkaian bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam
bentuk rangkaian bit, demikian sebaliknya.
Kriptografi - by Emy Setyaningsih
Modul 5 - 2
Muara dari kriptografi modern adalah menyediakan keamanan pesan di
dalam jaringan computer.
Secure N etw ork Protocols
B lockC ipher
S treamC ipher
H ashFunction
PseudoR andom
R andomSource
E llip ticC urve
D HR SA
Sym m etric KeyC ryptography
M essageD igest
IVs N oncesSecretKeys
Public KeyC ryptography
EncryptionM AC sM IC s
C hallengeR esponses
Sm artC ards
D ig ita lS ignatures
C onfidentia lityD ata
IntegrityAuthentication
N on-R epudiation
Gambar 5.1. Diagram Blok Kriptografi Modern
1. Rangkaian Bit Dan Operasinya
Pada umumnya algoritma kriptografi modern memproses data dalam bentuk
blok-blok rangkaian bit yang dipecahkan menjadi blok-blok bit dapat ditulis dalam
sejumlah cara bergantung pada panjang blok.
Contoh : Plainteks 100111010110
Bila dibagi menjadi blok 4-bit
1001 1101 0110
maka setiap blok menyatakan 0 sampai 15:
9 13 6
Bila plainteks dibagi menjadi blok 3-bit:
100 111 010 110
maka setiap blok menyatakan 0 sampai 7:
4 7 2 6
Kriptografi - by Emy Setyaningsih
Modul 5 - 3
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan,
maka blok yang terakhir ditambah dengan bit-bit semu yang disebut Padding bits:
bit-bit tambahan jika ukuran blok terakhir tidak mencukupi panjang blok
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi.
10011 10101 00010
Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal agar ukurannya menjadi
5 bit. Padding bits dapat mengakibatkan ukuran cipherteks hasil enkripsi lebih
panjang daripada ukuran plainteks semula.
Cara lain untuk menyatakan rangkaian bit adalah dengan notasi heksadesimal
(HEX). Rangkaian bit dibagi menjadi blok yang berukuran 4 bit dengan representasi
dalam HEX adalah :
0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0011 = 6 0111 = 7
1000 = 8 1011 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1110 = E 1111 = F
Contoh: plainteks 111001010001 dibagi menjadi blok 4-bit:
1110 0101 0001
dalam notasi HEX adalah
E 5 1
Operasi biner yang sering digunakan dalam cipher yang beroperasi dalam mode bit
adalah XOR. Notasi matematis untuk operator XOR adalah Å. Operator XOR
dioperasikan pada dua bit dengan aturan sebagai berikut :
0 Å 0 = 0
0 Å 1 = 1
1 Å 0 = 1
1 Å 1 = 0
Perhatikan bahwa operator XOR identik dengan penjumlahan modulo 2:
0 Å 0 = 0 Û 0 + 0 (mod 2) = 0
0 Å 1 = 1 Û 0 + 1 (mod 2) = 1
1 Å 0 = 1 Û 0 + 1 (mod 2) = 1
1 Å 1 = 1 Û 1 + 1 (mod 2) = 0
Hukum-hukum yang terkait dengan operator XOR:
Kriptografi - by Emy Setyaningsih
Modul 5 - 4
(i) a Å a = 0
(ii) a Å b = b Å a
(iii) a Å (b Å c) = (a Å b) Å c
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan
dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua rangkaian bit
tersebut.
Contoh: 10011 Å 11001 = 01010
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
1 0 0 1 1
1 1 0 0 1 Å
1 Å 1 0 Å 1 0 Å 0 1Å 0 1 Å 1
0 1 0 1 0
2. Algoritma Enkripsi Dengan XOR Sederhana
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-
XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks :
C = P Å K
Karena meng-XOR-kan nilai yang sama dua kali berturut-turut menghasilkan nilai
semula, maka dekripsi menggunakan persamaan :
P = C Å K
Contoh: plainteks 01100101 (karakter ‘e’)kunci 00110101 Å (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)kunci 00110101 Å (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
Algoritma enkripsi XOR sederhana pada prinsipnya sama seperti Vigenere cipher
dengan penggunaan kunci yang berulang secara periodik. Setiap bit plainteks di-
XOR-kan dengan setiap bit kunci.
Program komersil yang berbasis DOS atau Macintosh menggunakan
algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak aman
Kriptografi - by Emy Setyaningsih
Modul 5 - 5
karena cipherteksnya mudah dipecahkan. Cara memecahkannya adalah sebagai
berikut :
1. Cari panjang kunci dengan prosedur counting coincidence sbb : XOR-kan
cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan
hitunglah jumlah byte yang sama. Jika pergeseran itu kelipatan dari
panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika
tidak maka 0.4% akan sama. Angka persentase ini disebut index of
coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang
dicari.
2. Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya
sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan
plainteks yang digeser sejauh panjang kunci tersebut.
3. Kriptografi Modern
Kriptografi modern dapat memecahkan masalah algoritma rahasia yaitu
dengan algoritma kunci. Kunci ini dapat berupa sembarang dari suatu nilai dari
sejumlah angka. Dengan demikian tingkat keamanan dari algoritma yang
menggunakan kunci adalah berdasarkan kerahasiaan kuncinya, tidak berdasarkan
detail dari algoritma itu sendiri. Oleh karena itu algoritma ini dapat dapat
dipublikasikan dan dianalisa, dan algoritma ini dapat diproduksi secara masal. Secara
umum ada dua tipe algoritma yang termasuk dalam algoritma modern yaitu
algoritma simetris (simetric algorithm) dan algoritma kunci publik (public-key
algorithm). Perbedaan utama antara Symetric algorithm dengan public-key algoritm
adalah pada kunci enkripsi. Selain itu juga terdapat perbedaan dalam kecepatan
proses dan keamananya. K1 dan kunci dekripsi K2
Berikut ini bagan suatu sistem penyandian berdasarkan kunci beserta contoh-
contoh algoritma yang digunakan.
Kriptografi - by Emy Setyaningsih
Modul 5 - 6
Gambar 5.2. Blok Diagram Pembagian sistem Kriptografi Berdasarkan Kunci
3.1. Kriptografi Kunci Simetri
Algoritma kunci-simetri mengacu pada metode enkripsi yang
dalam hal ini pengirim maupun penerima memiliki kunci yang
sama. Algoritma kunci-simetri modern beroperasi dalam mode bit dan
dapat dikelompokkan menjadi dua kategori:
1. Cipher aliran (stream cipher)
2. Cipher blok(block cipher)
3.1.1. Stream Cipher
Algoritma kiptografi beroperasi pada plainteks/cipherteks
dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit
dienkripsikan/didekripsikan bit per bit. Cipher aliran mengenkripsi
Kriptografi - by Emy Setyaningsih
Modul 5 - 7
satu bit setiap kali tranformasi atau byte per byte (1 karakter = 1
byte). Nama lain untuk cipher stream adalah cipher status sebab
enkripsi tiap bit bergantung pada status saat ini (current state).
Cipher aliran pertama kali diperkenalkan oleh Vernam
melalui algoritmanya yang dikenal dengan nama Vernam cipher.
Vernam cipher diadopsi dari one-time pad cipher, yang dalam hal
ini karakter diganti dengan bit (0 dan 1). Cipherteks diperoleh
dengan melakukan penjumlahan modulo 2 satu bit plainteks
dengan satu bit kunci.
ci = (pi + ki) mod 2
Yang dalam hal ini :
pi : bit plainteks
ki : bit kunci
ci : bit cipherteks.
Plainteks diperoleh dengan melakukan penjumlahan modulo 2 satu
bit cipherteks dengan satu bit kunci :
pi = (ci + ki) mod 2
oleh karena itu kita dapat menyatakan bahwa cipher aliran
merupakan aproksimasi dari unbreakable cipher yaitu on-time pad
cipher
Mengingat operasi penjumlahan modulo 2 identik dengan operasi bit dengan
operator XOR, maka pada cipher aliran, bit hanya mempunyai dua buah nilai,
sehingga proses enkripsi hanya menyebabkan dua keadaan pada bit tersebut :
berubah atau tidak berubah. Dua keadaan tersebut ditentukan oleh kunci enkripsi
yang disebut aliran kunci (keystream). Aliran kunci dibangkitkan dari sebuah
pembangkit yang dinamakan pembangkit aliran-kunci (keystream generator). Aliran
kunci di XOR-kan dengan aliran bit-bit plainteks pi, p2, …,pi, untuk menghasilkan
aliran bit-bit cipherteks.
ci = pi Å ki
disisi penerima, bit-bit cipherteks di XOR-kan dengan aliran kunci yang sama untuk
menghasilkan bit-bit plainteks :
pi = ci Å ki
Kriptografi - by Emy Setyaningsih
Modul 5 - 8
Contoh :
Plainteks : 1100101
Aliran kunci : 1000110
Maka cipherteks didapatkan dengan meng-XOR-kan bit-bit plainteks dengan
aliran kunci pada posisi yang berkoresponden, sehinga didapatkan :
0100011
Contoh Algoritma yang beroperasi dalam bentk Stream Cipher yaitu :
1). RC 4 (ARCFOUR)
RC4 adalah cipher aliran yang digunakan secara luas pada sistem keamanan
seperti protokol SSL ( Secure Socket Layer ). Algoritma kriptografi ini
sederhana dan mudah diimplementasikan. RC4 dibuat oleh Ron Rivers dari
Laboratorium RSA (RC adalah singkatan dari Ron’s Code).
RC4 membangkitkan aliran kunci (keystream) yang kemudian di-XOR-kan
dengan plainteks pada waktu enkripsi (atau di-XOR-kan dengan bit-bit
cipherteks pada waktu dekripsi). Tidak seperti cipher aliran yang memproses
data dalam bit, RC4 memproses data dalam ukuran byte (1 byte = 8 bit).
Untuk membangkitkan aliran kunci, cipher menggunakan status internal yang
terdiri dari 2 bagian :
Permutasi angka 0 sampai 255 didalam larik S0, S1,…, S255.
Permutasi merupakan fungsi dari kunci U dengan panjang
variable.
Dua buah pencacah indeks, i, dan j.
Langkah algoritma RC4 adalah sebagai berikut :
1. Inisialisasi larik S sehingga S0 = 0, S1 = 1, …, S255 = 255
2. Jika panjang kunci U < 256, lakukan padding yaitu penambahan
byte semua sehingga panjang kunci menjadi 256 byte. Misalnya U
= “abc” yang hanya terdiri 3 byte (3 huruf), maka lakukan
padding dengan penambahan byte (huruf) semu, misalnya U =
“abcabcabc…” sampai panjang U mencapai 256 byte.
3. Lakukan permutasi terhadap nilai-nilai di dalam larik S dengan
cara menukarkan isi larik S[ I ] denganS[ j ]
4. Bangkitkan aliran kunci (keystream) dan lakukan enkripsi.
Kriptografi - by Emy Setyaningsih
Modul 5 - 9
Proses pembangkitan aliran kunci K dipilih dengan mengambil nilai S[i] dan
S[j] dan menjumlahkannya dalam modulo 256. Hasil penjumlahan adalah
indeks t sedemikian sehingga S[t] menjadi kunci aliran K yang kemudian
digunakan untuk mengenkripsi plainteks ke-idx.
Karena karakter-karakter kunci di-copy bebrulang-ulang maka ada
kemungkinan nilai-nilai di dalam larik S ada yang sama. RC4 juga mudah
diserang dengan known-plaintext attack jika kriptanalis mengetahui beberapa
buah plainteks dan cipherteks yan berkoresponden.
2). A5
A5 adalah cipher aliran yang digunakan untuk mengenkripsi transmisi sinyal
percakapan dari standard telepon seluler GSM(Group Special Mobile). Sinyal
GSM dikirim sebagai barisan frame. Satu frame panjangnya 228 bit dan
dikirim setiap 4,6 milidetik. A5 digunakan untuk menghasilkan aliran-kunci
228 bit yang kemudian di XOR-kan dengan frame. Kunci eksternal
panjangnya 64 bit.
A5 terdiri dari 3 buah LFSR yang masing-masing panjangnya 19, 22, dan 23
bit (jumlah seluruhnya 19 + 22 + 23 = 64). Bit-bit di dalam register diindeks
dimana bit paling tidak penting (LSB) diindeks dengan 0 (elemen paling
kanan). Luaran (output) dari A5 adalah hasil XOR dari ketiga buah LFSR ini.
A5 mengunakan tiga buah kendali detak (clock) yang variable. Tiap register
didetak berdasarkan bit pertengahannya.
( i ) register 1 mempunyai kendali detak pada bit 8. Bit-bit pendetakannya
adalah pada bit 13, 16, 17, dan 18
( ii ) register 2 mempunyai kendali detak pada bit 10. Bit-bit pendetakannya
adalah pada bit 20, dan 21
(iii) register 3 mempunyai kendali detak pada bit 10. Bit-bit pendetakannya
adalah pada bit 7, 20, 21, dan 22.
Register didetak dalam mode stop atau go dengan menggunakan kaidah
mayoritas. Pada tiap putaran (seluruhnya 64 putaran). bit-bit pendetakan dari
ketiga register diperiksa dan mayoritasnya ditentukan. Sebuah register
didetak jika bit kendali detaknya sama dengan bit mayoritas. Biasanya pada
Kriptografi - by Emy Setyaningsih
Modul 5 - 10
setiap putaran 2 atau 3 buah register didetak. Selama 64 putaran 64 bit kunci
rahasia dicampur berdasarkan skema berikut : pada putaran 0 ≤ i < 64, bit
kunci ke-i ditambahkan ke bit LSB dari setiap register dengan mengunakan
XOR :
R[0] = R[0] Å K[i]
Cipher menghasilkan keystream yang panjangnya 228 bit untuk kemudian
dienkripsi dengan setiap frame.
3.1.2. Blok Cipher
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok
bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya
sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, maka itu berarti
algoritma enkripsi memerlukan 8 karakter setiap kali enkripsi (1 karakter = 8 bit
dalam pengkodean ASCII). Cipher blok mengenkripsi satu blok bit setiap kali.
Pada ciphaer blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok
bit dengan panjang sama, biasanya 64 bit (tapi adakalanya lebih).
Algoritma enkripsi menghasilkan blok cipherteks yang – pada
kebanyakan sistem kriptografi simetri – berukuran sama dengan blok
plainteks.
Dengan blok cipher, blok plainteks yang sama akan dienkripsi menjadi
blok cipherteks yang sama bila digunakan kunci yang sama pula. Ini
berbeda dengan cipher aliran dimana bit-bit plainteks yang sama akan
dienkripsi menjadi bit-bit cipherteks yang berbeda setiap kali dienkripsi.
Misalkan blok plainteks (P) yang berukuran m bit dinyatakan sebagai
vektor
P = (p1, p2, …, pm)
yang dalam hal ini pi adalah 0 atau 1 untuk i = 1, 2, …, m, dan blok
cipherteks (C) adalah
C = (c1, c2, …, cm)
yang dalam hal ini ci adalah 0 atau 1 untuk i = 1, 2, …, m.
Bila plainteks dibagi menjadi n buah blok, barisan blok-blok plainteks
dinyatakan sebagai
Kriptografi - by Emy Setyaningsih
Modul 5 - 11
(P1, P2, …, Pn)
Untuk setiap blok plainteks Pi, bit-bit penyusunnya dapat dinyatakan
sebagai vektor
Pi = (pi1, pi2, …, pim)
Enkripsi dan dekripsi dengan kunci K dinyatakan berturut-turut dengan
persamaan
EK(P) = C
untuk enkripsi, dan
DK(C) = P
Fungsi E haruslah fungsi yang berkoresponden satu-ke-satu, sehingga
E-1 = D
Beberapa mode operasi dapat diterapkan untuk melakukan enkripsi terhadap
keseluruhan blok plainteks. Empat mode operasi yang lazim diterapkan pada system
blok cipher adalah:
1. Electronic code Book (ECB)
2. Cipher Block Chaining (CBC)
3. Cipher Feedback (CFB)
4. Output Feedback (OFB)
1). Electronic Code Book (ECB)
Pada mode ini, setiap blok plainteks pi, dienkripsi secara individual dan
independen menjadi blok cipherteks ci. Secara matematis, enkripsi dengan mode
ECB dinyatakan sebagai :
Ci = Ek ( Pi )
Dan dekripsi sebagai
Pi = Dk ( Ci )
Yang dalam hal ini, K adalah kunci dan Pi dan Ci masing-masing blok plainteks
dan cipherteks ke-i.
Pada mode operasi ECB sebuah blok input plaintext dipetakan secara statis ke
sebuah blok output ciphertext. Sehingga tiap plaintext yang sama akan
menghasilkan ciphertext yang selalu sama pula. Sifat- sifat dari mode operasi
ECB :
Kriptografi - by Emy Setyaningsih
Modul 5 - 12
Sederhana dan efisien
Memungkinkan implementasi parallel
Tidak menyembunyikan pola plaintext
Dimungkinkan terjadi adanya active attack.
Skema dari mode operasi ECB dapat digambarkan sebagai berikut :
Sender Receiver
Gambar 5.2. Skema Mode Operasi ECB
Istilah “code book” di dalam ECB muncul dari fakta bahwa karena blok
plainteks yang sama selalu dienkripsi menjadi blok cipherteks yang sama, maka
secara teoritis dimungkinkan membuat buku kode plainteks dari cipherteks yang
berkoresponden. Namun semakin besar ukuran blok, semakin besar pula ukuran
buku kodenya. Misalkan jika blok berukuran 64 bit, maka buku kode terdiri dari
264 – 1 buah kode (entry), yang berarti terlalu besar untuk disimpan. Lagipula
setiap kunci mempunyai buku kode yang berbeda.
Contoh :
Plainteks dalam biner : 10100010001110101001
Bagi plainteks menjadi blok yang berukuran 4 bit : 1010 0010 0011 1010
1001
Atau dalam notasi HEX adalah A23A9. Misalkan kunci (K) yang digunakan
adalah (panjangnya juga 4 bit) yaitu : 1011 atau dalam HEX adalah B
Kriptografi - by Emy Setyaningsih
P1
P1
P1
C1
C1
C1
E
E
E C1
C1
C1
P1
P1
P1
E
E
E
Modul 5 - 13
Misalkan fungsi enkripsi E yang sederhana (tetapi lemah) adalah dengan meng-
XOR-kan blok plainteks Pi dengan K, kemudian geser secara wraping bit-bit
dari pi Å K satu posisi ke kiri. Proses enkripsi untuk setiap blok digambarkan
sebaai berikut :
1010 0010 0011 1010 1001
1011 1011 1011 1011 1011 Å
Hasil XOR 0001 1001 1000 0001 0010
Geser 1 bit kekiri 0010 0011 0001 0010 0100
Dalam notasi HEX 2 3 1 2 4
Jadi hasil enkripsi plainteks
10100010001110101001 (A23A9 dalam notasi HEX)
Adalah
00100011000100100100 (23124 dalam notasi HEX)
Keuntungan Mode ECB
Karena tiap blok plainteks dienkripsi secara independen, maka kita tidak
perlu mengenkripsi file secara linier. Kita dapat mengenkripsi 5 blok
pertama, kemudian blok-blok di akhir, dan kembali ke blok-blok di
tengah dan seterusnya.
Mode ECB cocok untuk mengenkripsi arsip (file) yang diakses secara
acak, misalnya arsip-arsip basisdata. Jika basisdata dienkripsi dengan
mode ECB, maka sembarang record dapat dienkripsi atau didekripsi
secara indepen dari record lainnya (dengan asumsi setiap record terdiri
dari sejumlah blok diskrit yang sama banyaknya).
Jika mode ECB dikerjakan dengan prosesor parallel, maka setiap
prosesor dapat melakukan enkripsi atau deskripsi blok plainteks yang
berbeda-beda.
Jika satu atau lebih bit pada blok cipherteks mengalami kesalahan, maka
kesalahan ini hanya mempengaruhi cipherteks yang besangkutan pada
waktu deskripsi. Blok –blok cipherteks lainnya bila deskripsi tidak
terpengaruh oleh kesalahan bit cipherteks tersebut.
Kriptografi - by Emy Setyaningsih
Modul 5 - 14
Kelemahan ECB
Karena bagian plainteks sering berulang, maka hasil enkripsinya
menghasilkan blok cipherteks yang sama. Di dalam e-mail pesan sering
mengandung bagian yang redundan seperti string 0 atau spasi yang
panjang, yang bila dienkripsi maka akan menghasilkan pola-pola
cipherteks ang mudah dipecahkan dengan serangan yang berbasis
statistic. Selain itu e-mail mempunyai struktur yang teratur yang
menimbulkan pola-pola yang khas dalam cipherteksnya.
Pihak lawan dapat memanipulasi cipherteks unuk “membodohi atau
mengelabui penerima pesan. Manipulasi misalnya dengan menghapus
beberapa buah blok atau menyisikan beberapa buah blok cipherteks
baru.
Untuk mengatasi kelemahan ini adalah :
menggunakan ukuran blok yang besar, misalnya 64 bit, sebab ukuran
blok yang besar dapat menghilangkan kemungkinan menghasilkan blok-
blok yang identik.
Mengatur enkripsi tiap blok individual bergantung pada semua blok-blok
sebelumnya. Dengan cara ini blok plainteks yang identik akan
menghasilkan blok cipherteks yang berbeda, dan manipulasi cipherteks
mungkin menghasilkan pesan hasil dekripsi yang tidak mempunyai
makna.
2). Cipher Block Chaining (CBC)
Pada mode oparasi ini hasil enkripsi dari blok sebelumnya
mempengaruhi hasil enkripsi selanjutnya, atau enkripsi sebelumnya menjadi
feedback pada enkripsi blok saat itu., jadi tiap blok ciphertext bergantung
bukan hanya pada blok plaintext-nya tapi bergantung pula pada blok-blok
plaintext sebelumnya. Sehingga untuk plaintext yang sama, belum tentu
menghasilkan ciphertext yang sama pula.
Skema dari mode operasi CBC dapat digambarkan sebagai berikut :
Kriptografi - by Emy Setyaningsih
Modul 5 - 15
Sender Receiver
Gambar 5.3. Skema Mode Operasi CBC.Mula-mula sebelum si pengirim hendak mengirimkan pesannya kepada
si penerima, dia terlebih dahulu harus meng-XOR plaintext dengan IV
(initialization vector) baru kemudian dienkripsi, setelah itu baru dikirimkan
ciphertext pertamanya kepada si penerima. Plaintext ke-2 pun demikian, harus
di-XOR terlebih dahulu dengan ciphertext sebelumnya sebelum mengalami
proses enkripsi baru kemudian dikirimkan ke si penerima sebagai ciphertext 2
dan seterusnya.
Sifat-sifat dari mode operasi CBC :
Lebih aman dari active attacks dibandingkan mode operasi ECB
Error pada satu ciphertext dapat berakibat parah
Menutupi pola plaintext
Secara matematis enkripsi dan dekripsi dengan mode CBC dinyatakan sebagai :
Ci = EK ( Pi Å Ci-1)
Pi = DK ( Ci Å Ci-1)
Pada enkripsi blok pertama C0 = IV (initialization vector). IV diberikan oleh
pengguna atau dibangkitkan secara acak oleh program. Jadi untu menghasilkan
blok cipherteks pertama (Ci), IV digunakan untuk menggantikan blok
cipherteks sebelumnya C0. Sebaliknya pada dekripsi, blok plainteks pertama
Kriptografi - by Emy Setyaningsih
P1
P1
P1
C1
C1
C1
E
E
E C1
C1
C1
P1
P1
P1
E
E
E
IVIV
Modul 5 - 16
dieroleh den cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok
cipherteks pertama. IV tidak perlu rahasia.
Contoh :
Plainteks : 10100010001110101001
Bagi plainteks menjadi blok-blok yang berukuran 4 bit :
1010 0010 0011 1010 1001
Atau dalam notasi HEX adalah A23A9. Misalkan kunci (K) yang
digunakan adalah (panjangnya juga 4 bit)
1011
Atau dalam notasi HEX adalah B. sedangkan IV yang digunakan
seuruhnya bit 0 (Jadi, C0 = 0000). Misalkan fungsi enkripsi E yang
sederhana adalah dengan meng-XOR-kan blok plainteks Pi dengan K,
kemudian geser secara wrapping bit-bit dari Pi Å K satu posisi ke kiri.
C1 diperoleh dari :
P1 Å C0 = 1010 Å 0000 = 1010
Enkripsi hasil ini dengan fungsi E sebagai berikut :
1010 Å K = 1010 Å 1011 = 0001
Geser hasil ini satu bit kekiri = 0010
Jajdi C1 = 0010 (atau 2 dalam HEX)
C2 diperoleh dari :
P2 Å C1 = 0010 Å 0010 = 0000
Enkripsi hasil ini dengan fungsi E sebagai berikut :
0000 Å K = 0000 Å 1011 = 1011
Geser hasil ini satu bit kekiri = 0111
Jajdi C2 = 0111 (atau 7 dalam HEX)
C3 diperoleh dari :
P3 Å C2 = 0011 Å 0111 = 0100
Enkripsi hasil ini dengan fungsi E sebagai berikut :
0100 Å K = 0100 Å 1011 = 1111
Geser hasil ini satu bit kekiri = 1111
Jajdi C3 = 1111 (atau F dalam HEX)
Kriptografi - by Emy Setyaningsih
Modul 5 - 17
Sehingga untuk : Plainteks : A23A9
Cipehrteks (mode ECB) : 23124
Cipherteks (mode CBC) : 27FBF
Terlihat pada mode CBC pada plainteks A dienkripsikan dengan
cipher yang berbeda yaitu 2 dan B.
Keuntungan Mode CBC
Karena blok-blok plainteks yang sama tidak menghasilkan blok-blok
cipherteks yang sama, maka menyebabkan kriptanalis menjadi lebih
sulit
Kelemahan Mode CBC
Karena blok cipherteks yang dihasikan selama proses enkripsi
bergantung pada blok –blok cipherteks sebelumnya, maka kesalahan sat
bit pada sebuah blok plainteks akan merambat pada blok cipherteks
yang berkoresponden dan semua blok cipherteks berikutnya.
Kesalahan bit cipheteks biasanya terjadi karena adanya gangguan
saluran komunikasi data selama transmisi atau malfunction pada media
penyimpanan.
Persoalan Keamanan Yang Muncul Pada Mode CBC
Karena blok cipher mempengaruhi blok-blok berikutnya, pihak lawan
dapat menambahkan blok cipherteks tambahan pada akhir pesan
terenkripsi tanpa terdeteksi.
Pihak lawan dapat mengubah cipherteks, misalnya mengubah sebuah bit
pada suatu blok cipherteks.
3). Cipher Feed Back (CFB)
Jika mode CBC yang diterapkan untuk transmisi data, maka enkripsi tidak
dapat dilakukan bila blok plainteks yang diterima belm lengkap. Misalnya bila
pengiriman data dilakukan setiap kali karakter di-enter dari terminal computer
ke host. Pada mode CFB data dienkripsikan dalam unit yang lebih kecil
daripada ukuran blok. Unit yang dienkripsikan dapat berupa bit per bit, 2 bit, 3
Kriptografi - by Emy Setyaningsih
Modul 5 - 18
bit, dst. Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode
CFB-nya disebut CFB 8-bit.
Secara umum CFB p-bit mengenkripsi plainteks sebanyak p bit setiap kalinya,
yang dalam hal ini mana p ≤ n (n = ukuran blok). Dengan kata lain , CFB
mengenkripsi cipher blok sepeprti pada cipher aliran. Mode CFB
membutuhkan sebuah antrian queue yang berukuran sama dengan ukuran blok
masukan. Tinjau mode CFB 8-bit yang bekerja pada blok berukuran 64-bit
(setara dengan 8 byte).
Algoritma CFB :
1. Antrian diisi dengan IV seperti pada mode CBC
2. Enkripsikan antrian dengan kunci K. delapan bit paling kiri dari hasil
enkripsi berlaku sebagai keystream (ki) yang kemudian di-XOR-kan
dengan karakter 8-bit dari plainteks menjadi 8 bit pertama dari
cipherteks. Karakter cipherteks ini dikirim (pada aplikasi komunikasi
data) atau disimpan (pada aplikasi penyimpanan data). Salinan dari
karakter cipherteks ini juga dimasukkan ke dalam antrian (menempati 8
posisi bit paling kanan antrian), dan semua byte lainnya di dalam
antrian digeser ke kiri mengantikan 8 bit pertama yang sudah
digunakan.
3. Karakter plainteks berikutnya dienkripsikan dengan cara yang sama
seperti pada langkah 2.
4. Dekripsi dilakukan sebagai kebalikan dari proses enkripsi. Baik enkripsi
maupun dekripsi, algoritma E dan D yang digunakan sama.
4). Output Feed Back (OFB)
Mode OFB mirip dengan mode CFB kecuali p-bit dari hasil enkripsi terhadap
antrian disalin menjadi elemen posisi paling kanan di antrian. Dekripsi
dilakukan sebagai kebalikan dari proses enkripsi. OFB 8-bit bekerja pada blok
berukuran 64-bit (setara dengan 8 byte).
Banyak algoritma kriptografi cipher blok yang sudah pernah dipublikasikan. Untuk
menyebut beberapa diantaranya adalah : DES (Data Encryption Standard), Triple
Kriptografi - by Emy Setyaningsih
Modul 5 - 19
DES (3DES), IDEA (Internasional Data Encryption Algorithm), Blowish, Gost,
Safer, LOKI, FEAL, RC2, RC5, Serpent, dll. Hingga yang terbaru adalah AES
(Advanced Encryption Standard). Pada pembahasan ini tidak akan menjelaskan
semua algoritma tersebut, hanya algoritma DES yang menjadi standard untuk
enkripsi cipher blok.
DES (Data Encryption Standard)
DES, atau juga dikenal sebagai Data Encryption Algorithm (DEA)
oleh ANSI dan DEA-1 oleh ISO, merupakan algoritma kriptografi yang paling
umum digunakan saat ini. Sejarahnya DES dimulai dari permintaan pemerintah
Amerika Serikat untuk memasukkan proposal enskripsi. DES memiliki sejarah
dari Lucifer, enkripsi yang dikembangan di IBM kala itu. Horst Feistel
merupakan salah satu periset yang mula-mula mengembangkan DES ketika
bekerja di IBM Watson Laboratory di Yorktown Heights, New York. DES
baru secara resmi digunakan oleh pemerintah Amerika Serikat di tahun 1977.
Aplikasi yang menggunakan DES antara lain:
enkripsi dari password di sistem UNIX
berbagai aplikasi di bidang perbankan
DES merupakan block chiper yang beroperasi dengan menggunakan blok
berukuran 64-bit dan kunci berukuran 56-bit. Brute force attack dengan
mencoba segala kombinasi membutuhkan 256 kombinasi atau sekitar 7x 1017
atau 70 juta milyar kombinasi. DES dengan penggunaan yang biasa (cookbook
mode) dengan panjang kunci 56 bit saat ini sudah dapat dianggap tidak aman
karena sudah berhasil dipecahkan dengan metoda coba-coba (brute force
attack). Ada berbagai group yang mencoba memecahkan DES dengan berbagai
cara. Salah satu group yang bernama distributed.net menggunakan teknologi
Internet untuk memecahkan problem ini menjadi sub-problem yang kecil
(dalam ukuran blok). Pengguna dapat menjalankan sebuah program yang
khusus dikembangkan oleh tim ini untuk mengambil beberapa blok, via
Internet, kemudian memecahkannya di komputer pribadinya. Program yang
disediakan meliputi berbagai operating system seperti Windows, DOS,
berbagai variasi Unix, Macintosh. Blok yang sudah diproses dikembalikan ke
Kriptografi - by Emy Setyaningsih
Modul 5 - 20
distributed.net via Internet. Mekanisme ini dapat memecahkan DES dalam
waktu 30 hari.
Gambar 5.4. Contoh peragaan client distributed.net untuk
Windows 95
Sebuah group lain yang disebut Electronic Frontier Foundation
(EFF) membuat sebuah komputer yang dilengkapi dengan Integrated Circuit
chip DES cracker. Dengan mesin seharga US$50.000 ini mereka dapat
memecahkan DES 56-bit dalam waktu rata-rata empat (4) sampai lima (5) hari.
DES cracker yang mereka kembangkan dapat melakukan eksplorasi
keseluruhan dari 56-bit keyspace dalam waktu sembilan (9) hari. Dikarenakan
56-bit memiliki 216 (atau 65536) keyspace dibandingkan DES dengan 40-bit,
maka untuk memecahkan DES 40-bit hanya dibutuhkan waktu sekitar 12
detik1. Dikarenakan hukum average, waktu rata-rata untuk memecahkan DES
40-bit adalah 6 detik.
Algoritma DES terbagi menjadi 3 kelompok, yaitu : pemrosesan kunci,
enkripsi data 64 bit, dan dekripsi data 64 bit. Dimana kelompok yang satu
dengan yang lain saling berinteraksi dan terkait antara satu dengan yang lain.
Algoritma DES dirancang untuk menulis dan membaca berita blok data
yang terdiri dari 64 bit dibawah control kunci 64 bit. Dalam pembacaan berita
harus dikerjakan dengan menggunakan kunci yang sama dengan waktu menulis
Kriptografi - by Emy Setyaningsih
Modul 5 - 21
berita, dengan penjadwalan alamat kunci bit yang diubah sehingga proses
membaca adalah kebalikan dari proses menulis.
Sebuah blok ditulis dan ditujukan pada permutasi dengan inisial IP,
kemudian melewati perhitungan dan perhitungan tersebut sangat tergantung
pada kunci kompleks dan pada akhirnya melewati permutasi yang invers dari
permutasi dengan inisial IP-1.
Perhitungan yang tergantung pada kunci tersebut dapat didefinisikan sebagai
fungsi f, yang disebut fungsi cipher dan fungsi KS, yang disebut Key Schedule.
Sebuah deskripsi perhitungan diberikan pada awal, sepanjang algoritma yang
digunakan dalam penulisan pesan. Berikutnya, penggunaaan algoritma untuk
pembacaan pesan didekripsikan. Akhirnya definisi dari fungsi cipher f menjadi
fungsi seleksi Si, dan fungsi permutasi adalah P.
skema global dari algorima DES adalah sbb :
1. blok plainteks dipermutasi dengan matriks permutasi awal (initial
permuation atau IP).
2. Hasil permutasi awal kemudian di-encihering sebanyak 16 kali (16
putaran). Setiap putaran menggunakan kunci internal yang berbeda.
3. Hasil enciphering kemudian dipermtasikan dengan matriks permtasi
balikan (invers initial permtation atau IP-1) menjadi blok cipherteks.
Penulisan Pesan
Perhitungan dalam penulisan pesan dapat dilihat pada gambar 5.5. 64
bit dari blok input yang dienkripsi adalah subjek pertama dari permutasi yang
disebut permutasi dengan inisial IP.
Kriptografi - by Emy Setyaningsih
Modul 5 - 22
Gambar 5.5. Penulisan Pesan
Perhatikan tabel permutasi inisial IP.
Kriptografi - by Emy Setyaningsih
INPUT
INITIAL PERMUTATION
L0 R0
K1
f( + )
L1 = R0 R1=L0(+)F(R,K0)1
f( + )
L2 = R1 R2=L1(+)F(R,K1)2
f( + )
L15 = R14 R15=L14(+)F(R,K14)15
K2
Kn
K16
f( + )
L16 = L15(+)f(R,K15)16
L16 = R15
INVERSE INITIAL PERMUTATION
OUTPUT
PRE-OUTPUT
PERMUTED INPUT
Modul 5 - 23
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Input mengalami permutasi mempunyai bit 58 dari input bit pertamanya, bit 50
sebagai bit kedua dan bit ke 7 sebagai bit terakhir. blok input yang mengalami
permuatsi kemudian menjadi input pada perhitungan dan tergantung pada kunci
kompleks.
Output perhitungan ini, disebut preoutput dan output ini akan
diteruskan pada permutasi berikutnya yang merupakan kebalikan dari permutasi
inisial. Perhatikan tabel kebalikan dari permutasi inisial IP yaitu IP-1.
Output dari algoritma di atas mempunyai bit 40 dari blok preoutput
sebagai bit pertamanya, bit 8 sebagai bit kedua sampai bit 25 sebagai bit
terakhir.
IP-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 4 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Perhitungan yang menggunakan blok input dikenakan permutasi
sebagai inputnya untuk menghasilkan blok preoutput. Tetapi untuk pertukaran
blok akhir, dari 16 iterasi dari kalkulasi yang dijelaskan di bawah ini merupakan
Kriptografi - by Emy Setyaningsih
Modul 5 - 24
fungsi cipher f yang mengoperasikan 2 blok, yaitu salah satu dari 32 bit dan
salah satu dari 48 bit. Kalkulasi tersebut akan menghasilkan blok sepanjang 32
bit.
64 bit dari blok input terdiri dari 32 bit blok L dan diikuti oleh 32 bit
blok L. input blok ini didefinisikan sebagai LR. K menjadi input blok dari 48 bit
yang dipilih dari 64 bit kunci. Kemudian output L’R’ dari iterasi dengan input
LR menghasilkan persamaan berikut ini
L’ = R
R’ = L(+)f(R,K) ………………………………………..(5-
1)
Dimana (+) merupakan penambahan bit demi bit kemudian dibagi 2.
Input iterasi pertama dari perhitungan tadi adalah blok input yang
mengalami permutasi L’R’ adalah output dari iterasi ke 16, kemudian R’L’
adalah blok preoutput. Pada masing-masing iterasi sebuah blok yang berbeda, K
merupakan kunci bit yang dipilih dari 64 kunci yang ditunjukkan KEY.
Dengan notasi diatas, kita bisa menjelaskan iterasi menjadi lebih rinci.
KS menjadi sebuah fungsi yang menggunakan bilangan bulat n dengan
jangkauan dari bilangan 1 sampai bilangan 16 dan blok 64 bit KEY sebagai
input serta hasilnya sebagai output blok 48 bit Kn, dimana bisa dilihat pada
persamaan berikut ini :
Kn = KS(n, KEY) …………………………………… (5-2)
Dengan Kn ditentukan oleh bit dalam posisi bit yang berbedadengan KEY. KS
disebut kunci schedule karena blok K digunakan dalam iterasi ke-n (persamaan
5-1) dan blok Kn ditentukan oleh persamaan 5-2.
Karena sebelumnya blok input dipermutasikan dengan LR, akhirnya
Lo dan Ro berubah menjadi L dan R, sedangkan Ln dan Rn berubah menjadi L’
dan R’ (persamaan 5-1). Selanjutnya L dan R berubah menjadi Ln-1 dan Rn-1.
K adalah Kn, yaitu ketika n dalam jangkauan bilangan 1 sampai bilangan 16.
perhatikan persamaan berikut ini
Ln = Rn-1
Rnn = Ln-1(+)f(Rn-1, Kn) …………………………………… (5-3)
Blok preoutput dari persamaan di atas adalah R16 L16
Kriptografi - by Emy Setyaningsih
Modul 5 - 25
Untuk algoritma secara rinci dapat dilihat pada bahasan enkripsi 64 bit yang
akan dibahas pada bagian bawah bab ini.
Penguraian Pesan
Permutasi IP-1 menerapkan blok preoutput yang merupakan kebalikan dari
permutasi dengan inisial IP. Adapun persamaan berikut ini merupakan
kelanjutan dari persamaan 5-1.
R’ = L
L’ = R(+)f(L’,K) ……………………………………………….. (5-4)
Akibatnya, penguraian pesan ini harus menerapkan algoritma yang sama
pada waktu pesan ditulis. Dengan mengambil masing-masing iterasi dan
perhitungan blok yang sama dari kunci bit K maka penguraian itu dilakukan.
Dengan menggunakan notasi-notasi dari persamaan sebelumnya, persamaan
berikut ini menjelaskan kondisi berikut :
Rn-1 = Ln
Ln-1 = Rn(+)f(Ln,Kn) ………....…………………………………(5-5)
Setelah adanya persamaan diatas, sekarang R16L16 adalah blok input dari
permutasi dalam perhitungan penguraian dan L0 dan R0 adalah blok
preoutput. Untuk penguraian perhitungan dengan R16L16 sebagai input
permutasi, K16 digunakan dalam iterasi yang pertama. K15 sebagai yang kedua
dan seterusnya sampai dengan K1 digunakan dalam iterasi ke-16.
Untuk algoritma secara rinci dapat dilihat pada bahasan deskripsi 64
bit yang akan dibahas pada bagian bawah bab ini.
Fungsi Cipher F
Perhitungan dari fungsi f(R,K) dapat dilihat pada gambar 5.3. E
merupakan fungsi yang mengambil blok 32 bit sebagai input dan hasil 48 bit
sebagai output. E yang 48 bit sebagai output ditulis sebagai 8 blok dari 6 bit
yang masing-masing diperoleh dengan cara menyeleksi bit dalam input.
Perhatikan tabel berikut ini.
TABEL E-BIT SELEKSI
32 1 2 3 4 5
Kriptografi - by Emy Setyaningsih
Modul 5 - 26
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 33
3 bit pertama dari E adalah bit dalam posisi 32, kemudian 1 disusul 2 dari R
dan 2 bit E yang terakhir adalah bit dalam posisi 32 dan 1.
Gambar 5.6. Fungsi Cipher F
Masing-masing fungsi seleksi untuk S1, S2, …, S8, mengambil blok 6 bit
sebagai input dan hasil blok 4 bit sebagai output dan diilustrasikan dengan
menggunakan tabel yang berisi S1.
Tabel. 5.1. Tabel Fungsi Seleksi
Kriptografi - by Emy Setyaningsih
R (32 bits)
E
48 bits
(+)
K (48 bits)
S1 S2 S3 S4 S5 S6 S7 S8
P
32 bits
Modul 5 - 27
S1
Column Number
Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Numbe
r
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Jika S1 adalah fungsi yang didefiniskan dalam tabel dan B adalah blok dari 6 bit,
kemudian S1(B) ditentukan sebagai berikut :
Bit pertama dan terakhir dari B mewakili dalam base 2 sebuah angka
dalam jangkauan 0 sampai 3.Angka tersebut didefinisikan sebagai i
4 bit ditengah dari B mewakili dalam base 2 sebuah angka dalam
jangkauan 0 sampai dengan 15. angka tersebut didefinisikan sebagai j.
lihat tabel 5.1, angka dalam baris ke-I dan kolom ke-j. angka dalam
jangkauan 0 sampai dengan 15 dan diwakili oleh 4 bit blok.
Blok itu adalah output S1(B) dan S1 untuk input B
Sebagai contoh :
Untuk input 0 1 1 0 1 1 baris 0 1, baris 1 dan kolom ditentukan oleh 1
1 0 1, kolom 13. pada baris 1 kolom 13 kelihatan 5 sehingga
outputnya adalah 0 1 0 1
Hasil fungsi permutasi P output 32 bit dari input 32 bit dengan permutasi bit
dari input blok dapat dilihat pada tabel berikut ini :
P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
Kriptografi - by Emy Setyaningsih
Modul 5 - 28
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
output P(L) untuk fungsi P didefinisikan oleh tabel diatas dan diperoleh dari
input L dengan mengambil bit ke-16 dari L sebagai bit pertama P(L), bit ke-7
sebagai bit ke-2 dari P(L), dan seterusnya sampai bit ke-25 dari L diambil
sebagai bit ke-32 dai P(L).
S1,s2, …, S8 menjadi fungsi seleksi yang berbeda dan P menjadi
fungsi permutasi sekaligus E menjadi fungsi yang telah didefinisikan diatas.
Untuk mendefinisikan f(R,K), langkah pertama adalah mendefinisikan B1,
…, B8 menjadi blok dari 6 bit masing-masing untuk persamaan dibawah ini
B1, B2,…, B8 = K (+) E(R) ………………………………(5-6)
Blok f(R,K) kemudian didefiniskan menjadi persamaan beikut ini :
P(s1(B1) (S2(B2) … (S8(B8)) …………………………… (5-7)
Jadi K (+) E® adalah hasil pertama yang dibagi dalam 8 blok input yang
dapat dilihat pada persamaan 5-6. kemudian masing-masing B1 diambil
sebagai input untuk S1 dan 8 blok (S1(b1) (S2,B2) … (S8(B8)) dari 4 bit
masing-masing digabungkan menjadi blok tunggal dari 32 bit yang
membentuk input P. Output pada persamaan 5-7 kemudian menjadi input
bagi R dan K.
Pemrosesan Kunci
Algoritma pemrosesan kunci ini nantinya akan sangat berguna sekali
pada waktu implementasi pada program. Adapun algoritmanya dalah sebagai
berikut :
Pengguna memasukkan sebuah kunci sebesar 64 bit atau 8 karakter,
dimana nantinya setiap bit dalam kunci ini akan digunakan bit paritas.
Sebelum dilakukan permutasi terhadap kunci tersebut, perlu diadakan
penjadwalan kunci rahasia (secret key-schedulling). Hal ini dilakukan
untuk menyusun 16 buah kunci yang akan dimasukkan pada setiap
iterasi DES, baik pada enkripsi maupun dekripsi.
Kriptografi - by Emy Setyaningsih
Modul 5 - 29
Setelah langkah kedua selesai, dilanjutkan dengan permutasi.
Permutasi dilakukan pada kunci 64 bit tadi. Pada tahapan ini, bit-bit
paritas tidak dilibatkan sehingga bit kunci berkurang menjadi 56 bit.
Bit 1 pada kunci ke-56 merupakan bit 57 pada kunci awalnya, bit 2
adalah bit 49, dan seterusnya hingga bit 56 adalah bit 4 kunci 64.
Posisi bit hasil permutasi pada langkah pertama ini diberi nama
Permuted Choice 1 (PC-1). Adapun hasilnya dapat dilihat pada
keterangan dibawah ini :
Permuted Chice 1 (PC-1)
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
Dari permutasi ini kemudian output PC-1 dibagi menjadi 2 bagian
yaitu 28 bit pertama disebut C(0) dan 28 bit terakhir disebut D(0).
Dari C(0) dan D(0) kemudian dihitung sub-sub kunci untuk setiap
iterasi, yang dimulai dengan j=1.
Untuk setiap iterasi, yaitu j rotasi ke kiri 1 kali atau sebanyak 2 kali
untuk setiap C(j-1) dan D(j-1). Dari hasil rotasi ini akan didapatkan
hasil C(j) dan D(j). tabel berikut ini akan menunjukkan langkah setiap
rotasi yang diterapkan pada setiap iterasinya.
Tabel 5-2. Step Rotasi Yang Dilakukan Pada Setiap Iterasi
Iterasi ke
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Jumlah step
1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Kriptografi - by Emy Setyaningsih
Modul 5 - 30
Untuk setiap hasil C(j) dan D(j), kunci pada iterasi ke j didapatkan dengan
cara melakukan permutasi kembali pada C(j) dan D(j). permutasi itu dikenal
dengan nama Permuted Choice 2 (PC-2). Perhatikan hasilnya berikut ini :
Permuted Choice 2 (PC-2)
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Iterasi dilakukan terus menerus hingga ke 16 kunci berhasil disusun.
ENKRIPSI DATA 64 BIT
Algoritma yang menunjang adanya enkripsi data 64 bit adalah sebagai berikut :
Ambil blok data sebanyak 64 bit tersebut. Apabila dalam mengambil blok
data kurang dari 64 bit, maka perlu adanya penambahan supaya dalam
penggunaannya sesuai dengan jumlah datanya.
Bentuklah permutasi awal (Initial Permutation IP) pada blok data 64 bit
tadi dengan memperhatikan permutasi berikut ini :
Initial Permutation
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
Kriptografi - by Emy Setyaningsih
Modul 5 - 31
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Blok data tersebut dan dibagi menjadi 2 bagian, yaitu 32 bit pertama disebut
L[0] dan 32 bit kedua disebut R[0].
Ke 16 sub kunci dioperasikan dengan blok data, dimulai dengan j=1 dan
terbagi menjadi cara-cara berikut ini :
o R[j-1] dikembangkan menjadi 48-bit menurut fungsi pemilihan
ekspansi berikut :
Expansion (E)
32 1 2 3 4 5 6 7 8 9
8 9 10 11 12 13 14 15 16 17
16 17 18 19 20 21 22 23 24 25
24 25 26 27 28 29 30 31 32 1
o Kemudian langkah berikutnya adalah : E(R[j-1]) di XOR dengan
K[j].
o Hasil E(R[j-1]) XOR K[j] dipecah menjadi delapan blok 6-bit.
Kelompok bit 1-6 disebut B[1], bit 7-12 disebut B[2], dan seterusnya
bit 43-48 disebut B[8]
o Jumlah bit dikurangi dengan penukaran nilai-nilai yang ada dalam
tabel S untuk setiap B[j]. Dimulai dengan J=1, setiap nilai dalam tabel
S memiliki 4 bit.
o Adapun langkah-langkah dalam tahap ini adalah sebagai berikut :
Ambil bit ke 1 dan ke 6 dari B[j] bersama-sama menjadi nilai
2 bit, misalkan m, yang menunjukkan baris dalam tabel S[j].
Ambil bit ke 2 hingga 5 dari B[j] sebagai nilai 4 bit, misalkan
n, yang menunjukkan kolom dalam S[j].
Hasil proses ini adalah S[j][m][n] untuk setiap B[j] sehingga
iterasi yang diperoleh sebanyak 8 kali. Hasil ini sering disebut
juga substitution box. Nantinya akan ada substitution box
sebayak 8 buah iterasi. Perhatikan masing-masing tabel
berikut ini :
Kriptografi - by Emy Setyaningsih
Modul 5 - 32
Tabel 5.3. Substitution Box 1 (S[1])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Tabel 5.4. Substitution Box 2 (S[2])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
Tabel 5.5. Substitution Box 3 (S[3])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Tabel 5.6. Substitution Box 4 (S[4])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
Kriptografi - by Emy Setyaningsih
Modul 5 - 33
Tabel 5.7. Substitution Box 5 (S[5])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 14 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Tabel 5.8. Substitution Box 6 (S[6])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 15 10 11 14 1 7 6 0 8 13 12
Tabel 5.9. Substitution Box 7 (S[7])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
Tabel 5.10. Substitution Box 8 (S[8])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Kriptografi - by Emy Setyaningsih
Modul 5 - 34
o Permutasi diakukan kembali pada kombinasi hasil substitusi di atas
S[1][m][n] sampai dengan S[8][m2][n2] dengan memperhatikan
keterangan berikut ini :
Permutation P
16 7 20 21 29 12 18 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
o Hasil permutasi kemudian di XOR dengan L[j-1], selanjutnya hasil ini
menjadi R[j]. perhatikan rumus berikut ini :
R[i] = l[j-1] XOR P(S[1](B[1] .. S[8](B[8])
B[j] merupakan blok 6 bit hasil kombinasi R(R[i-1]) XOR K[i].
Fungsi ini bisa ditulis sebagai berikut :
R[i] = L[i-1] XOR f(R[i-1],K[i])
L[i] = R[i-1]
o Ulangi kembali ke langkah paling atas hingga K[16]
o Permutasi akhir dilakukan kembali dengan tabel permutasi yang
merupakan invers dari permutasi awal. Perhatikan permutasi berikut
ini :
Final Permutation (IP**-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
Kriptografi - by Emy Setyaningsih
Modul 5 - 35
33 1 41 9 49 17 57 25
DEKRIPSI DATA 64 BIT
Untuk dekripsi, proses yang sama dilakukan kembali, hanya saja yang
digunakan adalah kunci K[j] dalam urutan yang berlawanan, yaitu
memasukkan K[16] terlebih dahulu, kemudian K[15], seterusnya hingga
K[1]. Adapun algoritmanya adalah sebagai berikut :
Ambillah blok enkripsi sebanyak 64 bit tersebut. Apabila dalam
mengambil blok enkripsi kurang dari 64 bit, maka perlu adanya
penambahan supaya dalam penggunaannya sesuai dengan jumlah
datanya.
Bentuk permutasi awal (Initial Permutation IP) pada blok enkripsi 64
bit tadi, dengan memperhatikan permutasi berikut ini.
Intial Permutation
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Blok enkripsi tersebut dibagi menjadi 2 bagian, yaitu 32 bit pertama
disebut L[0] dan 32 bit kedua disebut R[0].
Ke-16 sub kunci dioperasikan dengan blok enkripsi, dimulai dengan
j=1 dan terbagi menjadi cara-cara berikut ini :
1. R[j-1] dikembangkan menjadi 48-bit menurut fungsi
pemilihan ekspansi berikut :
Expansion (E)
32 1 2 3 4 5 6 7 8 9
8 9 10 11 12 13 14 15 16 17
16 17 18 19 20 21 22 23 24 25
Kriptografi - by Emy Setyaningsih
Modul 5 - 36
24 25 26 27 28 29 30 31 32 1
2. Kemudian langkah berikutnya adalah : E(R[j-1]) di XOR
dengan K[j].
3. hasil E(R[j-1]) XOR K[j] dipecah menjadi delapan blok 6-bit.
Kelompok bit 1-6 disebut B[1], bit 7-12 disebut B[2], dan
seterusnyabit 43-48 disebut B[8].
4. jumlah bit dikurangi dengan pertukaran nilai-nilai yang ada
dalam tabel S untuk setiap B[j]. dimulai dengan j=1, setiap
nilai dalam S memiliki 4 bit. Adapun langkah-langkah dalam
tahap ini adalah sebabagi berikut :
ambil bit ke 1 dan ke 6 dari B[j] bersama-sama
menjadi nilai 2 bit, misalkan m, yang menunjukkan
baris dalam tabel S[j].
ambil bit ke 2 hingga 5 dari B[j] sebagai nilai 4 bit,
misalkan n, yang menunjukkan kolom dalam S[j].
hasil proses ini adalah S[j][m][n] untuk setiap B[j]
sehingga iterasi yang diperlukan sebanyak 8 kali. Hasil
ini sering disebut juga substitution box. Nantinya akan
ada substitution box sebanyak 8 buah iterasi.
Perhatikan masing-masing tabel berikut ini.
Tabel 5.11. Substitution Box 1 (S[1])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Tabel 5.12. Substitution Box 2 (S[2])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
Kriptografi - by Emy Setyaningsih
Modul 5 - 37
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
Tabel 5.13. Substitution Box 3 (S[3])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Tabel 5.14. Substitution Box 4 (S[4])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
Tabel 5.15. Substitution Box 5 (S[5])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 14 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Tabel 5.16. Substitution Box 6 (S[6])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
Kriptografi - by Emy Setyaningsih
Modul 5 - 38
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 15 10 11 14 1 7 6 0 8 13 12
Tabel 5.17. Substitution Box 7 (S[7])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
Tabel 5.18. Substitution Box 8 (S[8])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
5. Permutasi dilakukan kembali pada kombinasi hasil substitusi
diatas S[1][m1][n1] sampai dengan S[8][m2][n2] dengan
memperhatikan keterangan berikut ini :
Permutation P
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
6. Hasil permutasi kemudian di XOR dengan R[i], selanjutnya
hasil ini menjadi L[i-1]
L[i-1] = R[i] XOR f(L[i],K[i])
7. L[i] = R[i-1]
8. Ulangi kembali ke langkah paling atas hingga K[1].
Permutasi akhir dilakukan kembali dengan tabel permutasi yang
merupakan invers dari permutasi awal. Perhatikan permutasi berikut ini.
Kriptografi - by Emy Setyaningsih
Modul 5 - 39
Final Permutation (IP**-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
36 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 51 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
3.2. Kriptografi Kunci Asimetri
Sebenarnya penemu pertama kriptografi asimetri adalah James H. Ellis,
Clifford Cocks,dan Malcolm Williamson di Inggris pada awal 1970. Mereka
menemukan mekanisme pertukaran kunci, yang kemudian dikenal dengan nama
algoritma pertukaran kunci Diffie Hellman. Sayangnya algoritma mereka tersebut
dirahasiakan dan tidak pernah dipublikasikan hinga tahun 1997.
System kriptografi asimetri dipublikasikan pertama kali pada tahun 1976 oleh
Whitfield Diffie dan Martin Helman, dua oang ilmuwan dari Stanford University
melalui makalah pertamanya di jurnal IEEE yang berjudul “New Directions in
Cryptography”. Makalah mereka membahas distribusi kunci rahasia pada saluran
komunikasi public (yang tidak aman) dengan metode pertukaran kunci yang
belakangan dikenal dengan nama algoritma peprtukaran kunci Diffie-Helman.
Pada tahun 1977, generalisasi dari ide Cocks ditemukan kembali oleh tiga
orang ilmuwan dari MIT, yaitu Rivest, Shamir, dan Adleman. Algoritma ekripsi
yang mereka buat dikenal dengan nama RSA.
Akhirnya, sejak tahun 1976 berbagai algoritma enkripsi, tanda tangan digital,
pertukaran kunci, dan tenik lain dikembangkan dalam bidang kriptografi kunci-
publik, misalnya algoritma ElGamal untuk enkripsi dan tanda tangan digital dan
algoritma DSA untuk tanda tangan digital. Pada tahun 1980 Neal Kobliz
memperkenalkan elliptic-curve-cryptography sebagai keluarga baru yang di analog
dengan algoritma kriptogafi kunci-publik. Hingga saat ini kriptografi kunci-publik
terus berkembang pesat seiring dengan aplikasinya yang begitu luas.
Kriptografi - by Emy Setyaningsih
Modul 5 - 40
Aplikasi kriptografi kunci-publik dapat dibagi menjadi 3 kategori :
1. Kerahasiaan data
Seperti pada kriptografi kunci-simetri, kriptografi kunci –publik dapat
digunakan untuk menjaga kerahasiaan data (provide
confidentiality/secrecy) melalui mekanisme enkripsi dan dekripsi. Contoh
aklgoritma untuk aplikasi ini adalah : RSA, Knapsack, Robin, EGamal,
Elliptic Curve Cryptography (ECC)
2. Tanda-tangan digital
Tanda-tangan digital (digital signature) dengan menggunakan algoritma
kriptogafi kunci –publik dapat digunakan untuk membuktikan otentikasi
pesan maupun otentikasi pengiriman (provide authentification). Contoh
algoritmanya untuk aplikasi ini adalah : RSA, DSA, dan ElGamal.
3. Pertukaran Kunci (key-Exchange)
Algoritma kriptografi kunci-publik dapat digunakan untuk mengirim
kunci simetri (session keys). Contoh algoritmanya adalah RSA, dan
Difie-Hellman.
RSA
Beberapa algoritma kriptografi kunci-publik dapat digunakan untuk ketiga
macam kategori aplikasi (misalnya RSA) beberapa algoritma hanya ditujukan untuk
aplikasi spesifik (misalnya DSA untuk digital signature). Dan konsep kriptogafu
kunci-publik atau kunci asimetri telah dijelaskan pada bab 2 sebelumnya.
Kelebihan kriptografkunci-publik (asimetri) :
1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas
yang berkomunikasi (tetapi otentikasi knci public tetap harus terjamin).
Tidak ada kebutuhan mengirim kunci privat sebagaimana pada system
simetri.
2. Pasangan kunci public/kunci privat tidak perlu diubah, bahkan dalam
periode waktu yang panjang.
3. Dapat digunakan untuk mengamankan pengirman kunci simetri
Kriptografi - by Emy Setyaningsih
Modul 5 - 41
4. Beberapa algoritma kunci-publik dapat digunakan untuk memebri tanda
tangan digital pada pesan.
Kelemahan kriptogafi kunci public (asimetri) :
1. Enkripsi dan dekripsi data umumnya lebih lambat daripada system
simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar
dan melibatkan operasi perpangkatan yang besar.
2. Ukuran cipherteks lebih besar dari plainteks (bisa dua sampai empat kali
ukuran plainteks)
3. Ukuran kunci relative lebih besar daripada ukuran kunci simetri
4. Karena kunci public diketahui secara luas dan dapat digunakan setiap
orang, maka cipherteks tidak memberikan informasi mengenai otentikasi
pengirim
5. Tidak ada algoritma kunci public yang terbukti aman (sama seperti blok
cipher). Kebanyakan algoritma mendasarkan keamannya pada suitnya
memecahkan persoalan-persoalan aritmetik yang menjadi dasar
pembangkitan kunci. Kriptografi kunci-publik juga tidak aman dari
serangan man-in-the-middle attack. Orang di tengah mengintersepsi
komunikasi lalu berpura-pura sebagai salah satu pihak yang
berkomunikasi untuk mengetahui informasi rahasia.
Dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat,
algoritma yang paling popular adalah algoritma RSA. Keamanan algoritma RSA
terletak pada sulitnya memfaktorkan bilangan yang besar menjadi factor-faktor
prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran
bilangan besar menjadi factor-faktor prima belum ditemukan algoritma yang
mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin.
Algoritma RSA memiliki besaran-besaran sebagai berikut :
1. p dan q bilangan prima (rahasia)
2. n = p . q (tidak rahasia)
3. (n) = (p-1)(q-1) (rahasia)
4. e ( kunci enkripsi ) (tidak rahasia)
5. d ( kunci dekripsi ) ( rahasia )
Kriptografi - by Emy Setyaningsih
Modul 5 - 42
6. m ( plainteks ) ( rahasia )
7. c (cpherteks) ( tidak rahasia )
RSA adalah suatu blok sandi rahasia tempat teks asli dan teks rahasia
merupakan bilangan bulat antara 0 dan n-1 untuk beberapa n. Enkripsi dan dekripsi
berasal dari beberapa bentuk berikut ini, untuk beberapa blok teks asli M dan blok
teks rahasia C.
C = M’ mod n
M = Cd mod n = (Me)d mod n = Med od n
Blok pengirim meupun penerima harus mengetahui nilai n dan e, dan hanya
penerima saja yang mengetahui nilai d. ini merupakan algoritma enkripsi kunci
umum dengan kunci umum sebesar KU = {e,n} dan kunci khusus sebesar KR =
{d,n}. Agar algoritma ini bisa memenyhi syarat sebagai enkripsi kunci umum yang
baik, maka harus memenuhi ketentuan-ketentuan seperti berikut :
1. kemungkinan menemukan nilai e,d,n sedemikian rupa sehingga Med = M mod
n untuk semua M < n
2. relative mudah menghitung Me dan Cd untuk semua nilai M < n
3. tidak mudah menghitung menentukan d, yang diberi e dan n.
dua ketentuan pertama bisa terpenuhi dengan mudah. Sedangkan ketentuan ketiga
baru bisa terpenuhi untuk nilai e dan n yang besar.
Pembangkitan Kunci
o Memilih dua bilangan prima p, q . bilangan ini harus cukup besar
(minimal 100 digit)
o Menghitung n = p . q. Bilangan n disebut parameter security
(sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat
diperoleh dengan menarik akar pangkat dua dari n)
o Menghitung φ(n) = (p-1)(q-1).
o Memilih bilangan bulat e dengan algoritma Euclid yaitu
gcd(φ(n),e)=1; dimana 1< e < φ(n).
o Menghitung d dengan rumus d = e-1 mod φ(n)
Atau e . d 1 (mod φ(n)).
Kriptografi - by Emy Setyaningsih
Modul 5 - 43
Perhatikan bahwa e . d 1 (mod φ(n)) ekivalen dengan e . d = 1 + k
φ(n), sehingga secara sederhana d dapat dihitung dengan :
d = ( 1 + k . φ(n)) / e
o Kunci umum (kunci public) adalah KU = {e,n}
o Kunci pribadi (kunci privat adalah KR = {d,n}
Catatan : n tidak bersifat rahasia, sebab ia diperlukan pada perhitungan
enkripsi/dekripsi
Enkripsi
B mengenkripsi message M untuk A, yang harus dilakukan B :
o Teks asli dengan syarat M < n
o Ambil kunci public A yang otentik (n,e)
o Representasikan message sebagai integer M dalam interval [0,n-1]
o Teks Rahasia didapat dari C = Me (mod n)
o Kirim C ke A
Dekripsi
Untuk mendekripsi, A melakukan
o Gunakan kunci pribadi d untuk menghasilkan M
o Teks rahasia adalah C
o Teks asli didapat dari M = Cd (mod n)
Gambar 5.7. Contoh Algoritma RSA
Algoritma RSA dimulai dengan memilih dua bilangan prima p dan q dan
menghitung perkalian mereka n, yang merupakan modulus untuk enkripsi dan
dekripsi. Berikutnya, kita membutuhkan kuantitas φ(n) , disebut sebagai Euler
totient untuk n, yang merupakan jumlah bilangan bulat positif yang kurang dari
relative prima terhadap n. kemudian memilih bilangan bulat e yang relative prima
Kriptografi - by Emy Setyaningsih
Teks asli 19
66
20807
199
247609919 banyaksisase
dengan
19
1006,1
199
1027,166
138
140
sebanyak
sisadengan
Teks asli
19
5
KU=5,119
Ciphertext 66
77
KH=77,119
Modul 5 - 44
terhadap φ(n), maksudnya pembagi biasa terbesar dari e dan φ(n) adalah 1. terakhir
menghitung d sebagai perkalian terbalik dari e, modulo φ(n). bisa ditunjukkan bahwa
d dan e memiliki sifat-sifat yang diinginkan.
Anggap bahwa pemakai A telah mempublikasikan kunci umumnya dan
bahwa pemakai B ingin mengirim pesan M ke A. kemudian B menghitung C = Me
(mod n) dan mentransmisikan C. pada penerimaan teks rahasia ini, pemakai A
melakukan dekripsi dengan cara menghitung M = Cd(mod n).
Sebuah contoh ditunjukkan dalam gambar 5.7. Pada contoh ini, kunci-kunci
digerakkan seperti berikut :
1. memilih dua bilangan prima, p = 7 dan q = 17
2. menghitung n = pq = 7 x 17 = 119
3. menghitung φ(n)=(p-1)(q-1) = 96
4. memilih e sedemikian rupa sehingga e relative prima terhadap φ(n) = 96 dan
kurang dari φ(n): dalam hal ini e = 5.
5. menentukan d sedemikian rupa sehingga de = 1 mod 96 dan d < 96. nilai
yang benar ialah d = 77 karena 77 x 5 = 385 = 4 x 96 + 1
kunci-kunci yang dihasilkan ialah kunci umum KU = [5,119] dan kunci
khusus KR = [77,119]. Contoh tersebut juga menunjukkan penggunaan kunci-kunci
ini untuk input teks asli M = 19. untuk enkripsi ditingkatkan ke 19 pangkat lima,
menghasilkan 2.476.099. berdasarkan pembagian dengan 119 ini, sisa ditetapkan
menjadi 66. Karenanya , dan teks rahasianya sama dengan 66.
untuk dekripsi ditetapkan bahwa .
Ada dua pendekatan yang bisa dilakukan untuk menggagalkan algoritma
RSA. Pertama adalah dengan pendekatan paksaan, mencoba semua kunci pribadi
yang memungkinkan. Jadi semakin besar jumlah bit di dalam e dan d, semakin aman
algoritmanya. Namun karena penghitungan yang dilakukan baik dalam
pembangkitan kunci maupun dalam enkripsi/dekripsi sangat kompleks, semakin
besar ukuran kunci, jalannya system akan semakin lambat.
Sebagian besar pembahasan mengenai pemecahan rahasia RSA difokuskan
pada tugas menfaktorkan n ke dalam dua factor primanya. Untuk n yang besar
dengan factor prima yang besar, memfaktorkan adalah masalah yang berat, namun
tidak seberat penggunaannya.
Kriptografi - by Emy Setyaningsih
Modul 5 - 45
Contoh Pembangkitan Pasangan Kunci :
Key generation :
1. Hasilkan dua buah integer prima besar p dan q. Untuk memperoleh
tingkat keamanan yang tinggi pilih p dan q yang berukuran besar,
misalnya 1024 bit.
Pada contoh disini dipilih bilangan yang kecil untuk mempermudah
perhitungan yaitu :
p = 47
q = 71
2. Hitung m = (p-1)*(q-1)
m = (47-1) * (71-1)
m = 46 * 70
= 3220
3. hitung n = p*q
n = 47 * 71
= 3337
4. Pilih d yang relatively prime terhadap m. e relatively prime terhadap m
artinya factor pembagi terbesar keduanya adalah 1, secara matematis
disebut gcd(e,m)=1. Untuk mencarinya dapat digunakan algoritma
Euclid.
e = 79 gcd(e,3220) = 1
5. Cari d, sehingga e*d = 1 mod(m) atau d = (1+nm)/e
Untuk bilangan besar, dapat digunakan algoritma extended Euclid
n = 25 d = (1 + 25. 3220) /79 = 1019 (yes)
6. Kunci public : (e,n) = (79,3337)
Kunci private: (d,n) = (1019,3337)
Contoh Penerapan :
Misalkan Bob mengirim pesan kepada Alice. Pesan (plainteks) yang akan
dikirimkan oleh Alice adalah :
Kriptografi - by Emy Setyaningsih
Modul 5 - 46
m = HARI INI
atau dalam system decimal (pengkodean ASCII) adalah :
7265827332737873
Bob memecah m menjadi blok yang lebih kecil, misalnya m dipecah menjadi
enam blok yang berukuran 3 digit.
m1 = 726 m4 = 273
m2 = 582 m5 = 787
m3 = 733 m6 = 003
Nilai-nilai mi ini masih terletak di dalam selang [0, 3337 – 1] agar
transformasi menjadi satu ke satu.
Bob mengetahui kunci public Alice adalah e = 79 dan n = 3337. Alice dapat
mengenkripsikan setiap blok plainteks sebagai berikut :
C1 = 72679 mod 3337 = 215
C2 = 58279 mod 3337 = 776
C3 = 73379 mod 3337 = 1743
C4 = 27379 mod 3337 = 933
C5 = 78779 mod 3337 = 1731
C6 = 00379 mod 3337 = 158
Jadi cipherteks yang dihasilkan adalah :
C = 215 776 1743 933 1731 158
Dekripsi dilakukan dengan mengunakan kunci privat
d = 1019
Blok-blok cipherteks didekripsikan sebagai berikut :
m1 = 2151019 mod 3337 = 726
m2 = 7761019 mod 3337 = 582
m3 = 17431019 mod 3337 = 733
m4 = 9331019 mod 3337 = 273
m5 = 17311019 mod 3337 = 787
m6 = 1581019 mod 3337 = 003
Blk plainteks yang lain dikembalikan denan cara yang serupa. Akhirnya kita
memperoleh kembali plainteks semula
m = 7265827332737873
Kriptografi - by Emy Setyaningsih
Modul 5 - 47
yang dalam system pengkodena ASCII adalah :
m = HARI INI
Algoritma Program :
1. memilih dua bilangan prima p dan q, kemudian d dan plaintext yang akan
dienkripsi. Bila yang diinputkan bukan bilangan prima maka program akan
terhenti dan memberitahukan bahwa p dan q harus prime
2. menghitung nilai n = p. q
3. menghitung (n) = (p-1)(q-1)
4. mencari nilai e sedemikian hingga e relatif prime terhadap (n) dan kurang
dari (n)
5. plaintext dipecah kedalam blok-blok yang masing-masing berisi 2 karakter
bila jumlah karakter tidak genap maka diakhir ditambahkan karakter ‘X’.
Kemudian masing-masing blok dikonversikan ke dalam bentuk bilangan
6. kemudian untuk mendapatkan cipher dari masing-masing blok dilakukan
dengan mencari nilai konversi blok dipangkatkan dengan e dimodulokan
dengan n
7. untuk mencari ciphernya dari modulo bilangan berpangkat yang nilainya
sangat besar, dilakukan dengan cara :
a. mengubah pangkat blok plaintext (nilai e) ke dalam biner
b. kemudian setiap digit dari bilangan biner dilakukan iterasi dari bit
paling kiri sampai bit yang paling kanan. pada awalnya cipher diberi
nilai 1, kemudian masing-masing bit dideteksi apabila bit bernilai 1
maka nilai cipher berubah dari perkalian antara blok plaintext (M)
dengan kuadrat dari nilai chipper sebelumnya di mod n, bila bit
bernilai 0 maka nilai cipher berubah diganti dengan nilai kuadrat dari
nilai cipher sebelumnya di mod n, demekian seterusnya sampai bit
terakhir. Hasil cipher merupakan nilai chipper terakhir dari proses
iterasi.
Kriptografi - by Emy Setyaningsih
Listing Program enkripsi:function rsa(p,q,d,plain)
% Dicek apakah p dan q bilangan primeif (isprime(p)==0) || (isprime(q)==0) disp('p dan q harus prime !!')else n=p*q; pin=(p-1)*(q-1); disp(' Nilai n = ') disp(n) disp(' Nilai Totient adalah = ') disp(pin) j=1; while (mod((d*j),pin)~=1 & j<pin+1) j=j+1; end disp(' Nilai e untuk kunci enciphering = ') disp(j);
%PROSES ENCIPHERING DILAKSANAKAN plain=upper(plain); %bila plaint text tidak kelipatan dua ditambah karakter X while mod(size(plain,2),2)~=0 plain=[plain 'X']; end
%TEXT DIPECAH DALAM BLOK YANG MASING-MASING BERISI 2 KARAKTER %KEMUDIAN DIUBAH KE BILANGAN l=1; i=1;
Modul 5 - 48
Kriptografi - by Emy Setyaningsih
while l<length(plain) k1=(plain(l)-65)*100; k2=plain(l+1)-65; m(i)=k1+k2; l=l+2; i=i+1; end%PROSES ENCIPHERING pl=size(plain,2)/2; b1=dec2bin(j);c=[]; for ii=1:pl z=1; l=1; for i=size(b1,2)-1:-1:0 z=mod(z^2,n); if b1(l)=='1' z=mod(z*m(ii),n); end l=l+1; end %c(ii)=z; c=[c z]; end m=num2str(m); disp(' PLAINTEXT SETELAH DIKONVERSIKAN : ') disp(' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ') disp(m) disp(' ') c=num2str(c); %Hasil Enciphering disp(' CIPHER = ') disp('~~~~~~~~~~~') disp(c)end
Modul 5 - 49
Tampilan input data:
Kriptografi - by Emy Setyaningsih
Listing Program Dekripsi:function dersa(p,q,e,c)
% Dicek apakah p dan q bilangan primeif (isprime(p)==0) || (isprime(q)==0) disp('p dan q harus prime !!')else n=p*q; pin=(p-1)*(q-1); d=invesmodulo(e,pin); %PROSES DECIPHERING b1=dec2bin(d); m=[]; for ii=1:length(c) z=1; l=1; for i=size(b1,2)-1:-1:0 z=mod(z^2,n); if b1(l)=='1' z=mod(z*c(ii),n); end l=l+1; end %c(ii)=z; m=[m z]; end k=[]; for i=1:length(m) y=mod(fix(m(i)/100),65); k=[k char(y+65)]; y=mod(mod(m(i),100),65); k=[k char(y+65)]; end; %Menampilkan hasil Deciphering c=num2str(c); disp(' Nilai n = ') disp(n) disp(' Nilai Totient adalah = ') disp(pin) disp(' Nilai d untuk kunci deciphering = ') disp(d); disp('CIPHER = ') disp('~~~~~~~~~~~~') disp(c) disp(' ') disp('PLAINTETX SEBELUM DIKONVERSI = ') disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') m=num2str(m); disp(m) disp(' ') disp('PLAINTEXT = ') disp('~~~~~~~~~~~~') disp(k)end
Modul 5 - 50
–
–
–
–
–
–
–
–
–
– Hasil enkripsi :
– Hasil Dekripsi menggunakan nilai p, q dan e yang sama
dengan proses enkripsi:
Kriptografi - by Emy Setyaningsih
Modul 5 - 52
BAHAN BACAAN
Mao, Wenbo., 2004, Modern Cryptography Theori & Practice, Hawlett-Packard
Company
Menezes, Alfred J., Paul C van Oorsschot, dan Scott A. Vanstone, 1996, Handbook
of Applied Cryptography, CRC Press.
Munir, Rinaldi, 2006, Kriptografi, Informatika, Bandung.
Schneier, Bruce 1996, Aplied Cryptography 2nd , John Wiley & Sons, New York
Stinson, R Douglas, 1995, Cryptography Theory and Practice, CRC Press, Inc, Boca
Raton, London
Wahana Komputer, 2003, Memahami Model Enkripsi dan Sekuriti Data, Andi
Offset, Yogyakarta.
William Stallings, 1995, Network and Internetwork Security, Prentice Hall.
www.wikepedia.org, diakses selama Juli-Agustus 2006
Kriptografi - by Emy Setyaningsih