6181_bab-5

76
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 Kriptografi - by Emy Setyaningsih

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 - 51

C. SOAL LATIHAN

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