Dosen Pengampu :
Ach. Khozaimi, S.Kom., M.Kom
Disusun Oleh :
1. Arie Febrianto (140411100133)
2. Tri Ratna Sari Pramita (150411100043)
3. Dina Ila Faradisa (150411100104)
DAFTAR ISI............................................................................................................................ ii
BAB I ........................................................................................................................................ 1
PENDAHULUAN ................................................................................................................... 1
1.1 Definisi ........................................................................................................................... 1
1.2 Sejarah ........................................................................................................................... 1
BAB II ...................................................................................................................................... 3
PEMBAHASAN ...................................................................................................................... 3
2.1 Penggunaan dan Perhitungan Algoritma ................................................................... 3
2.2 Contoh Perhitungan...................................................................................................... 3
BAB III................................................................................................................................... 17
IMPLEMENTASI ................................................................................................................. 17
3.1 Source Code ................................................................................................................. 17
3.2 Hasil Running .............................................................................................................. 17
BAB IV ................................................................................................................................... 18
PENUTUP.............................................................................................................................. 18
4.1 Kesimpulan .................................................................................................................. 18
4.2 Saran ............................................................................................................................ 18
DAFTAR PUSTAKA ............................................................................................................ 19
ii | K E A M A N A N D A T A D A N A P L I K A S I
BAB I
PENDAHULUAN
1.1 Definisi
RC2 adalah cipher blok yang menggunakan 64 bit sebagai ukuran per blok-nya
dengan kunci yang ukurannya bervariasi (0-1024 bit). Dengan mengubah-ubah
ukuran kunci ini, performansi RC2 dapat menjadi dua atau tiga kali lebih baik
dibanding DES (Data Encryption Standard), algoritma yang dikembangkan oleh
NSA (National Security Agent) dan telah ditetapkan sebagai algoritma enkripsi
standar oleh pemerintah AS pada tahun 1976-1997 (yang kemudian digantikan oleh
AES, Advanced Encryption Standard).
1.2 Sejarah
Pada tahun 1987 di Laboratorium Rsa, Ron Rivest menemukan suatu algoritma
yang diberi nama RC2. RC itu sendiri merupakan singkatan dari Rons Code.
Karena algoritma RC2 dapat diimplementasikan secara efisien pada perangkat
lunak maka menjadikan algoritma RC2 populer untuk aplikasi internet antara lain
digunakan sebagai standar WEP (Wired Equivalent Privacy), WPA (Wifi Protected
Acces) dan TLS (Transport Layer Protocol). RC2 juga diimplementasikan pada
protokol SSL (Source Socket Layer) yaitu sebuah protokol untuk memproteksi
trafik intenet.
RC2 (Rivest Cipher 2) merupakan cipher blok yang didesain oleh Ron Rivest
pada tahun 1987. Pengembangan RC2 disponsori oleh Lotus yang sedang mencari
suatu cipher tertentu setelah evaluasi oleh NSA untuk diekspor sebagai bagian dari
software Lotus Notes. Setelah negosiasi lanjut, cipher ini disetujui dan diekspor
pada tahun 1989.
Awalnya rincian algoritma dirahasiakan eksklusif untuk RSA Security tetapi
pada 29 Januari 1996 kode sumber untuk RC2 adalah anonim diposting ke
Internet pada Usenet forum, sci.crypt Sebuah pengungkapan yang sama telah
terjadi sebelumnya dengan algoritma RC4. Tidak jelas apakah poster itu
memiliki akses dengan spesifikasi atau telah reverse engineered.
j=0
For i = 0 to 255
S[i] = i
For i = 0 to 255
j = (j + S[i] + U[i]) mod 256 swap (S[i], S[j])
(*pertukaran nilai S[i] dan S[j]*)
Tahap selanjutnya hasil dari array S yang telah melalui KSA akan diproses
kembali pada PRGA(Pseudo-Random Generator Algorithm). Pada tahap PRGA
terjadi modifikasi state dan output sebuah byte dari aliran kunci, dimana array S
beroperasi dengan array U yang selanjutnya akan menghasilkan keystream. Nilai
S[i] dan S[j] diambil dan dijumlahkan dengan modulo 256 untuk membangkitkan
aliran kunci. Hasil dari perhitungan tersebut akan menjadi indeks S[indeks] yang
menjadi aliran kunci K yang kemudian digunakan untuk mengenkripsi plainteks
ke-aliran kunci K yang kemudian digunakan untuk mengenkripsi plainteks ke-idx.
I=0
J=0
For idx8 = 0 to PanjangPlainteks 1 do
I = ( i + 1 ) mod 256
J = ( j + S[i] ) mod 256
Swap ( S[i], S[j] ) (*penukaran nilai S[i] dan S[j]*)
K = ( S[i] + S[j] ) mod 256
Endfor
Setelah keystream terbentuk, kemudian keystream tersebut dimasukkan dalam
operasi XOR dengan plaintext.
1. Pembentukkan Tabel Vektor S, dengan formula S[i] = i Tabel vektor berisi array 256
(0-255). Berikut ini sample perhitungannya :
i=0 i=1 i=2
S[0]=0 S[1]=1 S[2]=2dst
= Indeks
= Nilai Indeks
2. Pembentukkan Tabel Vektor U, dengan formula U[i] = Kunci [ I mod
jumlah_karakter_kunci] Terdiri dari array 256 (0-255) yang berisi panjang kunci
masukkan dari user, Berikut ini sample perhitungannya :
i=0 i=1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
80 85 80 85 84 80 85 80 85 84 80 85 80 85 84 80
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
85 80 85 84 80 85 80 85 84 80 85 80 85 84 80 85
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
80 85 84 80 85 80 85 84 80 85 80 85 84 80 85 80
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
85 84 80 85 80 85 84 80 85 80 85 84 80 85 80 85
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
84 80 85 80 85 84 80 85 80 85 84 80 85 80 85 84
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
80 85 80 85 84 80 85 80 85 84 80 85 80 85 84 80
10 10 10 10 10 10 10 10 10 10 11 11
96 97 98 99 0 1 2 3 4 5 6 7 8 9 0 1
85 80 85 84 80 85 80 85 84 80 85 80 85 84 80 85
11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12
2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
80 85 84 80 85 80 85 84 80 85 80 85 84 80 85 80
12 12 13 13 13 13 13 13 13 13 13 13 14 14 14 14
8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
85 84 80 85 80 85 84 80 85 80 85 84 80 85 80 85
14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15
4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
84 80 85 80 85 84 80 85 80 85 84 80 85 80 85 84
16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
80 85 80 85 84 80 85 80 85 84 80 85 80 85 84 80
17 17 17 17 18 18 18 18 18 18 18 18 18 18 19 19
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
85 80 85 84 80 85 80 85 84 80 85 80 85 84 80 85
19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20
2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
80 85 84 80 85 80 85 84 80 85 80 85 84 80 85 80
20 20 21 21 21 21 21 21 21 21 21 21 22 22 22 22
8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
85 84 80 85 80 85 84 80 85 80 85 84 80 85 80 85
= Indeks
= Nilai Indeks
3. Melakukan permutasi terhadap nilai Tabel Vektor S, berdasarkan pseudocode
berikut:
j=0
For i = 0 to 255
j = ( j + S[i] + U[i]) mod 256
swap (S[i], S[j])
berikut ini sample perhitungannya:
j=0 i=0
j=(0 + S[0] + U[0]) mod 256
j=(0 + 0 + 80) mod 256
j=80 mod 256
j=80
j=80 i=1
j=(80 + S[1] + U[1]) mod 256
j=(80 + 1 + 85) mod 256
j=166 mod 256
j=166...dst
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 24 16 25 17 10 19 12 22 16
80 6 8 80 8 3 88 5 12 5 5 35 7 5 67 2
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
10 20 15 10 21 17 13 24 10
7 4 7 54 4 4 6 4 66 1 26 3 6 3 213 73
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
18 16 14 12 25 11 24 10 23 10 23 23
5 47 5 24 5 6 9 2 6 2 8 6 8 3 108 5
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
11 24 11 25 13 15 17 19 22 11 14
2 5 9 5 1 13 1 30 1 52 5 82 2 2 254 6
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
18 22 12 16 22 12 18 24
38 3 78 5 2 19 9 69 1 3 25 0 85 2 149 56
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
21 12 20 11 19 10 19 10 19 12 21
6 6 32 0 2 21 2 3 20 3 7 27 9 1 43 8
10 10 10 10 10 10 10 10 10 10 11
96 97 98 99 0 1 2 3 4 5 6 7 8 9 110 1
14 24 17 21 14 19 12 25 12
3 64 7 4 98 28 0 2 74 3 4 5 62 5 189 9
11 11 11 11 11 11 11 11 12 12 12 12 12 12 12
2 3 4 5 6 7 8 9 0 1 2 3 4 5 126 7
20 14 23 18 12 22 18 12
65 7 5 4 89 30 3 0 4 74 20 8 0 9 84 35
12 12 13 13 13 13 13 13 13 13 13 13 14 14 14
8 9 0 1 2 3 4 5 6 7 8 9 0 1 142 3
24 20 15 11 25 21 17 14 10 20
8 5 9 9 75 37 5 4 9 0 7 74 38 8 230 2
14 14 14 14 14 14 15 15 15 15 15 15 15 15 15
4 5 6 7 8 9 0 1 2 3 4 5 6 7 158 9
17 14 11 25 22 21 19 17 15 13 11
4 3 8 89 66 43 17 3 9 1 3 2 7 8 125 2
16 16 16 16 16 16 16 16 16 16 17 17 17 17 17
0 1 2 3 4 5 6 7 8 9 0 1 2 3 174 5
96 86 72 64 56 45 40 31 28 25 19 19 15 17 19 18
17 17 17 17 18 18 18 18 18 18 18 18 18 18 19
6 7 8 9 0 1 2 3 4 5 6 7 8 9 190 1
= Indeks
= Nilai Indeks
4. Membangkitkan Aliran Kunci
pembangkitan aliran kunci dilakukan berdasarkan pseudecode berikut :
i=0 j=0
for idx=0 to panjang_plainteks-1 do i=(i+1) mod 256
j=(j+S[i]) mod 256 swap (S[i], S[j])
K=(S[i]+S[j]) mod 256
Berikut Proses Pembangkitan Aliran Kunci
10 | K E A M A N A N D A T A D A N A P L I K A S I
j=(j+S[i]) mod 256 j=(166+248) mod 256
j=(0+S[1]) mod 256 j= 414 mod 256
j=(0+166) mod 256 j= 158
j=166 swap (S[i], S[j])
swap (S[i], S[j]) swap (S[2], S[158])
swap (S[1], S[166]) swap(248,125)
swap(166,40) S[2] = 125, S[158]=248
S[1] = 40, S[166]=166 K=(S[i]+S[j]) mod 256
K=(S[i]+S[j]) mod 256 K=(S[2]+S[158]) mod 256
K=(S[1]+S[166]) mod 256 K= (125+248) mod 256
K= (40+166) mod 256 K=373 mod 256 K =
K=206 Biner = 11001110 117 Biner = 01110101
11 | K E A M A N A N D A T A D A N A P L I K A S I
j=(150 + 253) mod 256 j=(147 + 88) mod 256
j=403 mod 256 j= 235 mod 256
j=147 j= 235
swap (S[i], S[j]) swap (S[i], S[j])
swap (S[5], S[147]) swap (S[6], S[235])
swap (253, 89) swap (88, 164)
S[5]= 89, S[147]= 253 S[6]= 164, S[235]= 88
K= (S[i] + S[j]) mod 256 K= (S[i] + S[j]) mod 256
K= (S[5] + S[147]) mod 256 K= (S[6] + S[235]) mod 256
K= (89 + 253) mod 256 K= (164 + 88) mod 256
K= 342 mod 256 K= 252 mod 256
K= 86 Biner= 01010110 K= 252 Biner= 11111100
12 | K E A M A N A N D A T A D A N A P L I K A S I
Berikut adalah proses Enkripsi Algoritma RC2
1. Konversi plainteks dan Kunci Hasil pembangkitan kunci kedalam biner
Plainteks Desimal Biner Kunci Desimal Biner
P 80 01010000 K1 206 11001110
U 85 01010101 K2 117 01110101
P 80 01010000 K3 181 10110101
U 85 01010101 K4 185 10111001
T 84 01010100 K5 86 01010110
2. Lakukan operasi XOR antara Biner Kunci hasil pembangkitan kunci dengan Biner
Plainteks
P 01010000
K1 11001110 XOR
C1 10011110
U 01010101
K2 01110101 XOR
C2 00100000
P 01010000
K3 10110101 XOR
C3 11100101
U 01010101
K4 10111001 XOR
C4 11101100
T 01010100
K5 01010110 XOR
C5 00000010
_ 01011111
K6 11111100 XOR
13 | K E A M A N A N D A T A D A N A P L I K A S I
C6 10100011
T 01010100
K7 01110000 XOR
C7 00100100
W 01010111
K8 00110100 XOR
C8 01100011
Biner
Hasil Desimal Karakter
XOR
10011110 158
00100000 32 Space
11100101 229
11101100 236
00000010 2 Start of Text
10100011 163
00100100 36 $
01100011 99 C
14 | K E A M A N A N D A T A D A N A P L I K A S I
2. Lakukan operasi XOR antara Biner Kunci hasil pembangkitan kunci dengan Biner
Plainteks
10011110
K1 11001110 XOR
P1 01010000
Space 00100000
K2 01110101 XOR
P2 01010101
11100101
K3 10110101 XOR
P3 01010000
11101100
K4 10111001 XOR
P4 01010101
10100011
K6 11111100 XOR
P6 01011111
$ 00100100
K7 01110000 XOR
P7 01010100
C 01100011
K8 00110100 XOR
P8 01010111
15 | K E A M A N A N D A T A D A N A P L I K A S I
3. Konversi Biner Hasil XOR ke Karakter
Biner
Desimal Karakter
Hasil XOR
01010000 80 P
01010101 85 U
01010000 80 P
01010101 85 U
01010100 84 T
01011111 95 _
01010100 84 T
01010111 87 W
16 | K E A M A N A N D A T A D A N A P L I K A S I
BAB III
IMPLEMENTASI
3.1 Source Code
3.2 Hasil Running
17 | K E A M A N A N D A T A D A N A P L I K A S I
BAB IV
PENUTUP
4.1 Kesimpulan
Dari pembahasan yang telah diuraikan sebelumnya, dapat dambil suatu kesimpulan
sebagai berikut, yaitu:
RC2 adalah cipher blok yang menggunakan 64 bit sebagai ukuran per blok-nya
dengan kunci yang ukurannya (0-1024 bit).
algoritma RC2 dapat diimplementasikan untuk aplikasi internet antara lain
WEP (Wired Equivalent Privacy), WPA (Wifi Protected Acces) dan TLS
(Transport Layer Protocol). RC2 juga diimplementasikan pada protokol SSL
(Source Socket Layer)
Terdapat dua tahapan untuk membangkitkan aliran kunci algoritma RC2 yaitu
Key Scheduling Algorithm (KSA) dan Pseudo-Random Generator Algorithm
(PRGA).
4.2 Saran
Penyusun menyarankan untuk mengembangkan makalah selanjutnya agar dapat
menambahkan cara penghitungan kriptografi algoritma RC2 menggunakan cara yang
lebih mudah dan dapat dimengerti, disertai implementasi algoritma dengan
menggunakan bahasa pemrograman lain beserta simulasi dan langkah langkah
18 | K E A M A N A N D A T A D A N A P L I K A S I
DAFTAR PUSTAKA
https://www.academia.edu/21902669/ENKRIPSI_DAN_DESKRIPSI_DENGAN_M
ETODE_DATA_RC2
https://aprillialisti.wordpress.com/2012/06/22/1-caesar-ciphe/
https://piptools.net/algoritma-rc2-rons-code-rivests-cipher/
19 | K E A M A N A N D A T A D A N A P L I K A S I