Minggu, 12 Juni 2016

ALGORITMA KRIPTOGRAFI RC4

ABSTRAK
Makalah ini akan membahas Algoritma RC4 sebagai salah satu metode enkripsi. Enkripsi adalah proses penyamaran suatu pesan atau sandi menjadi bentuk yang tidak mempunyai makna untuk menjaga kerahasiaan, keamanan, atau keotentikan suatu pesan atau sandi. Pada proses ini plainteks atau teks asli dikonversikan menjadi cipherteks (teks tersandi). RC4 atau Rivest Cipher 4 dibuat oleh Ron Rivest di Laboraturium RSA pada tahun 1987[2]. RC4 adalah salah satu jenis stream cipher yang sinkron yaitu cipher yang memiliki kunci simetris dan mengenkripsi atau mendekripsi plainteks secara digit per digit atau bit per bit dengan cara mengkombinasikan secara operasi biner (biasanya operasi XOR) dengan sebuah angka semiacak. RC4 dapat dijalankan dengan panjang kunci variabel dan beroperasi dengan orientasi byte. Metode enkripsi RC4 memiliki kelemahan. Kelemahan yang paling dikenal adalah Bit-Flipping Attack atau BFA di mana penyerang dapat mengetahui sample atau keseluruhan plainteks dari cipherteks tanpa harus mengetahui kunci enkripsi. Walaupun punya banyak kelemahan, tetapi metode enkripsi RC4 saat ini masih menjadi metode enkripsi yang banyak digunakan. RC4 saat ini masih diaplikasikan pada pengenkripsian PDF, pengamanan WEP, dan SSL.
1             PENDAHULUAN
Di era globalisasi saat ini, mendapatkan informasi sangatlah mudah. Setiap orang dengan mudah mendapatkan data ataupun berita yang diinginkan. Hal ini didukung dengan teknologi informasi dan komunikasi yang terus berkembang pesat dari tahun ke tahun. Akan tetapi kemudahan mendapatkan informasi juga memberikan ancaman. Beberapa ancaman yang diberikan adalah masalah tentang keamanan, kerahasiaan, dan keotentikan data. Oleh karena itu diperlukan suatu sistem pengamanan data yang bertujuan untuk meningkatkan keamanan data, melindungi suatu data atau pesan agar tidak dibaca oleh pihak yang tidak berwenang, dan mencegah pihak yang tidak berwenang untuk menyisipkan, menhapus, ataupun merubah data. Salah satu ilmu pengamanan data yang terkenal adalah kriptografi. Kriptografi adalah ilmu sekaligus seni untuk menjaga kerahasiaan pesan, data, atau informasi dengan cara menyamarkannya menjadi bentuk tersandi yang tidak mempunyai makna[1].
Dalam kriptografi, terdapat 2 proses utama, enkripsi dan dekripsi. Enkripsi adalah proses penyandian pesan asli atau plainteks menjadi cipherteks (teks tersandi). Sedangkan dekripsi adalah proses penyandian kembali cipherteks menjadi plainteks. [1]. Salah satu metode enkripsi yang terkenal adalah metode RC4. RC4 pertama kali dibuat oleh Ron Rivest di Laboraturium RSA pada tahun 1987. Awalnya RC4 adalah sebuah rahasia dagang, akan tapi pada September 1994, kode tersebut dikirim oleh seseorang yang tidak diketahui ke milist Chypermunks dan menyebar ke banyak situs internet. Kode yang bocor tersebut akhirnya dikonfirmasi sebagai RC4 karena memiliki output yang sama dengan software dengan license RC4 di dalamnya. Karena algoritma sudah diketahui, RC4 tidak lagi menjadi rahasia dagang. Nama "RC4" sekarang adalah sebuah merek dagang, namun sering disebut sebagai "ARCFOUR" atau "ARC4" (artinya diduga RC4, karena algoritma ini tidak pernah dirilis secara resmi oleh RSA), untuk menghindari kemungkinan masalah tentang merek dagang[2]. RC4 (Rivest Cipher 4) adalah sebuah synchrone stream cipher, yaitu cipher yang memiliki kunci simetris dan mengenkripsi plainteks secara digit per digit atau byte per byte dengan cara mengkombinasikan dengan operasi biner (biasanya XOR) dengan sebuah angka semiacak.
2    MEKANISME DASAR KERJA RC4
Algoritma RC4 adalah algoritma kriptografi simetrik. Disebut algoritma kriptografi simetrik karena menggunakan kunci yang sama untuk mengenkripsi ataupun mendekripsi suatu pesan, data, ataupun informasi. Kunci enkripsi didapat dari sebuat 256 bit state-arrayyang diinisialisasi dengan sebuah key tersendiri dengan panjang 1-256 bit. Setelah itu, state-array tersebut akan diacak kembali dan diproses untuk menghasilkan sebuah kunci enkripsi yang akan di-XOR-kan dengan plainteks ataupun cipherteks. Secara umum, algoritma RC4 terbagi menjadi dua, inisalisasi state-array dan penghasilan kunci enkripsi serta pengenkripsiannya.
2.1  Penginisialisasian State-Array
Dalam penginisialisasian state-array, terdapat 2 statearray yang harus diinisialisasi, S dan K. Array S sebesar 256 bit diinisialisasi dengan angka dari 0 sampai dengan 255. Sedangkan array K sebesar 256 bit diisi dengan key dengan panjang 1-256 bit secara berulang sampai seluruh array K terisi penuh. Setelah itu, dilakukan Key Scheduling Algorithm untuk menghasilkan permutasi dari array S berdasarkan key yang tersedia.
for i from 0 to 255
S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod
keylength]) mod 256
swap(&S[i],&S[j])
endfor
Proses swap di atas adalah proses menukar nilai antara S[i] dengan S[j]. Proses swap memiliki algoritma sebagai berikut.
temp = s[i];
s[i] = s[j];
s[j] = temp;
2.2  Penghasilan Kunci Enkripsi dan Pengenkripsian
Setelah memiliki state array yang telah teracak, maka kita akan menginisialisasi kembali i dan j dengan 0. Setekah itu, kita lakukan pseudo-random generation algorithm atau PRGA untuk menghasilkan kunci enkripsi (dalam hal ini cipher_byte) yang akan di-XOR-kan dengan plainteks. Untuk menghasilkan kunci enkripsi, PRGA meng-incremen i, menambahkan nilai S[i] dan S[j] menukar nilai keduanya, dan nilai kunci yang dihasilkan adalah S dengan indeks yang sama dengan jumlah S[i] dan S[j] di-modulo dengan 256.
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap(&S[i],&S[j])
byte_cipher := S[(S[i] + S[j])
mod 256]
result_ciphered := byte_cipher
XOR byte_message
Endwhile

2.3  Contoh Enkripsi dengan metode RC4
Untuk menunjukkan bagaimana RC4 bekerja pada tingkat dasar, mari kita state-array 4 bit. Hal ini dikarenakan akan sangat sulit menggambarkan proses RC4 secara manual dengan state-array 256 bit. Kali ini, kita akan mengenkripsi kata HALO dengan kunci 3123. Pertama, kita menginisialisasi array S 4 bit sehingga terbentuk state-array S dan state-array K sebagai berikut,
Array S
0 1 2 3
Array K
2 5 7 3
Inisialisasi i dan j dengan 0 kemudian dilakukan KSA agar tercipta state-array yang acak. Penjelasan iterasi lebih lanjut dapat dijelaskan sebagai berikut:
Iterasi 1
i = 0
j = (0 + S[0] + K [0 mod 4]) mod 4
= (0 + 0 + 2) mod 4 = 2
Swap (S[0],S[2])
Hasil Array S
2 1 0 3
  
Iterasi 2
i = 1
j = (2 + S[1] + K [1 mod 4]) mod 4
= (2 + 1 + 5) mod 4 =0
Swap (S[1],S[0])
Hasil Array S
1 2 0 3
Iterasi 3
i = 2
j = (0 + S[2] + K [2 mod 4]) mod 4
= (0 + 0 + 7) mod 4 = 3
Swap (S[2],S[3])
Hasil
1 2 3 0
Iterasi 4
i = 3
j = (3 + S[3] + K [3 mod 4]) mod 4
= (3 + 0 + 3) mod 4 = 2
Swap (S[3],S[2])
Hasil Array S
1 2 0 3
Setelah melakukan KSA, akan dilakukan PRGA. PRGAakan dilakukan sebanyak 4 kali dikarenakan plainteks yang akan dienkripsi berjumlah 4 karakter. Hal ini disebakan karena dibutuhkan 1 kunci dan 1 kali pengoperasian XOR untuk tiap-tiap karakter pada
plainteks. Berikut adalah tahapan penghasilan kunci enkripsi dengan PRGA.
Array S
1 2 0 3
Inisialisasi
i = 0
j = 0
Iterasi 1
i = (0 + 1) mod 4 = 1
j = (0 + S[1]) mod 4 = (0+ 2) mod
4 = 2
swap (S[1],S[2])
1 0 2 3
K1 = S[(S[1]+S[2]) mod 4] = S[2
mod 4] = 2
K1 = 00000010
  
Iterasi 2
i = (1 + 1) mod 4 = 2
j = (2 + S[2]) mod 4 = (2+ 2) mod
4 = 0
swap (S[2],S[0])
2 0 1 3
K2 = S[(S[2]+S[0]) mod 4] = S[3
mod 4] = 3
K2 = 00000011
Iterasi 3
i = (2 + 1) mod 4 = 3
j = (0 + S[3]) mod 4 = (0+ 3) mod
4 = 3
swap (S[3],S[3])
1 0 2 3
K3 = S[(S[3]+S[3]) mod 4] = S[6
mod 4] = 2
K3 = 00000010
Iterasi 4
i = (3 + 1) mod 4 = 0
j = (3 + S[0]) mod 4 = (3+ 1) mod
4 = 0
swap (S[0],S[0])
1 0 2 3
K1 = S[(S[0]+S[0]) mod 4] = S[2
mod 4] = 2
K1 = 00000010
Setelah menemukan kunci untuk tiap karakter, maka dilakukan operasi XOR antara karakter pada plaintext dengan kunci yang dihasilkan. Berikut adalah tabel ASCII untuk tiap-tiap karakter pada plaintks yang digunakan.
Tabel 1 Kode ASCII untuk setiap karakter plainteks yang digunakan
Huruf
Kode ASCII(Binary 8 bit)
H
01000001
L
01001111
H
01000001
L
01001111
Proses XOR dari kunci bisa dilihat pada tabel 2.
Tabel 2 Proses XOR kunci enkripsi dengan plainteks pada enkripsi
H
A
L
O
Plain teks
01001000 
01000001
01001100
01001111
Key
00000010
00000011
00000010
00000010
Cipher teks
01001010
(L)
01000010
(B)
01001110
(N)
01001101
(M)
Setelah terkirim, pesan yang telah dienkripsi akan didekripsikan. Proses pendekripsian dilakukan dengan proses XOR antara kunci dekripsi yang sama dengan kunci dekripsi dengan cipherteks yang dapat dilihat di tabel 3
Tabel 3 Proses XOR kunci dekripsi dengan cipherteks pada dekripsi
L
B
N
M
Cipher teks
01001010
01000010
01001110
01001101
Key
00000010
00000011
00000010
00000010
Plain teks
01001000
(H)
01000001
(A)
01001100
(L)
01001111
(O)
3. Kecepatan RC4 Sebagai Salah Satu Metode Enkripsi
Kinerja RC4 sebagai metode enkripsi tergolong sangat cepat. Selain cepat, waktu RC4 tidak terpengaruh dengan panjang keylength yang dipakai. Berikut adalah perbandingan waktu yang digunakan untuk enkripsi dari berbagai metode.
Gambar 2 Perbandingan waktu enkripsi dari berbagai metode

3.1 Aplikasi RC4
Walaupun RC4 memiliki banyak kelemahan akan tetapi RC4 masih banyak digunakan. RC4 diaplikasikan untuk pengamanan beberapa hal seperti berikut.
1. WEP (Wired Equivalent Privacy)
2. BitTorrent protocol encryption
3. Microsoft Point-to-Point Encryption
4. Gpcode.AK,
5. PDF
4.    KESIMPULAN
Kesimpulan yang dapat diambil dari studi pemakaian metode RC4 sebagai metode enkripsi adalah:
1. RC4 adalah sebuah stream cipher yang sinkron yang dapat dijalankan dengan panjang kunci variabel dan mengenkripsi suatu plainteks secara digit per digit dengan kunci
Simetris
2. RC4 merupakan metode enkripsi tercepat dibandingkan dengan DES, Triple DES, Blowfish-256, AES-128, dan AES-256.
3. RC4 memiliki banyak kelemahan antara lain, tingginya peluang untuk menghasilkan array S yang sama ataupun berulang dan Bit-Flipping Attack. Akan tetapi bisa diatasi dengan memperbanyak bit kunci, mengubah cara pengisian K-array, menggunakan IV dalam setiap kunci, serta mengacak plainteks sebelum dienkripsi untuk mencegah terjadinya bit-flipping attack.

Senin, 18 April 2016

Pengertian, Fungsi, Jenis dan Kelas IP

IP Address (internet protocol address) merupakan deretan angka biner antara 32 bit sampai dengan 128 bit yang digunakan sebagai alamat identifikasi untuk tiap komputer host dalam jaringan internet. Angka 32 bit digunakan untuk alamat IP Address versi IPv4 dan angka 128 bit digunakan untuk IP Address versi IPv6 untuk menunjukkan alamat dari komputer pada jaringan internet berbasis TCP/IP.
IP Address tersebut memiliki identitas numerik yang akan dilabelkan kepada suatu device seperti komputer, router atau printer yang terdapat dalam suatu jaringan komputer yang menggunakan internet protocol sebagai sarana komunikasi.

 

Apa Fungsi IP Address

  1. IP Address digunakan sebagai alat identifikasi host atau antarmuka pada jaringanFungsi ini diilustrasikan seperti nama orang sebagai suatu metode untuk mengenali siapa orang tersebut. Dalam jaringan komputer pun berlaku hal yang sama yaitu alamat IP Address yang unik tersebut akan digunakan untuk mengenali sebuah komputer atau device pada jaringan.
  2. IP Address digunakan sebagai alamat lokasi jaringanFungsi ini diilustrasikan seperti alamat rumah kita yang menunjukkan lokasi kita berada. Untuk memudahkan pengiriman paket data, maka IP Address memuat informasi keberadaannya. Ada rute yang harus dilalui agar data dapat sampai ke komputer yang dituju.


Jenis IP Address

  1. IP versi 4 (IPv4)

    Internet protocol version 4 atau IPv4 terdiri dari 32-bit dan bisa menampung lebih dari 4.294.967.296 host di seluruh dunia. Sebagai contoh yaitu 172.146.80.100, jika host di seluruh dunia melebihi angka 4.294.967.296 maka dibuatlah IPv6.
  2. IP versi 6 (IPv6)

    IPv6 diciptakan untuk menjawab kekhawatiran akan kemampuan IPv4 yang hanya menggunakan 32 bit untuk menampung IP Address di seluruh dunia, semakin banyaknya pengguna jaringan internet dari hari ke hari di seluruh dunia IPv4 dinilai suatu saat akan mencapai batas maksimum yang dapat ditampungnya, untuk itulah IPv6 versi 128 bit diciptakan. Dengan kemampuanya yang jauh lebih besar dari IPv4 dinilai akan mampu menyediakan IP Address pada seluruh pengguna jaringan internet di seluruh dunia yang semakin hari semakin banyak.

    Internet protocol versi 6 atau IPv6 ini terdiri dari 128 bit. IP ini 4 kali dari IPv4, tetapi jumlah host yang bisa ditampung bukan 4 kali dari 4.294.967.296 melainkan 4.294.967.296 pangkat 4, jadi hasilnya 340.282.366.920.938.463.463.374.607.431.768.211.456.

    Perbandingan IP Address versi 4 dan 6


Pembagian Kelas IP Address

IP Address versi 4 terdiri atas 4 oktet, nilai 1 oktet adalah 255. Karena ada 4 oktet maka jumlah IP Address yang tersedia adalah 255 x 255 x 255 x 255. IP Address sebanyak ini harus dibagi-bagikan keseluruh pengguna jaringan internet di seluruh dunia. Untuk mempermudah proses pembagiannya, IP Address harus dikelompokan dalam kelas-kelas.
IP Address dikelompokan dalam lima kelas, yaitu kelas A, B, C, D, dan E. Perbedaannya terletak pada ukuran dan jumlah. IP Address kelas A jaringan. IP Address Kelas B digunakan untuk jaringan berukuran besar dan sedang. IP Address Kelas C untuk pembagian jaringan yang banyak, namun masing-masing jaringan memiliki anggota yang sedikit. IP Address Kelas D dan E juga didefinisikan, tetapi tidak digunakan dalam penggunaan normal, kelas D diperuntukan bagi jaringan multicast, dan E untuk Eksperimental.
Pembagian kelas-kelas IP Address didasarkan pada dua hal, yaitu Network ID dan Host ID dari suatu IP Address Setiap IP Address selalu merupakan pasangan network ID (Identitas Jaringan) dan Host ID (Indentitas Host dalam suatu jaringan). Masing-masing komputer atau router di suatu jaringan Host ID nya harus unik dan harus berbeda dengan komputer yang lain.
IP Address version 4 Class

  • Kelas AFormat : 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh (n = Net ID, h = Host ID)

    Bit Pertama : 0

    Panjang Net ID : 8 bit (1 oktet)

    Panjang Host ID : 24 bit (3 oktet)

    Oktet pertama : 0 – 127

    Range IP Address : 1.xxx.xxx.xxx.sampai 126.xxx.xxx.xxx (0 dan 127 dicadangkan)

    Jumlah Network : 126

    Jumlah IP Address : 16.777.214

    IP kelas A untuk sedikit jaringan dengan host yang sangat banyak. cara membaca IP Address kelas A misalnya 113.46.5.6 ialah Network ID :113, Host ID = 46.5.6
  • Kelas BFormat : 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh (n = Net ID, h = Host ID)

    2 bit pertama : 10

    Panjang Net ID : 16 bit (2 oktet)

    Panjang Host ID : 16 bit (2 oktet)

    Oktet pertama : 128 – 191

    Range IP Address : 128.0.0.xxx sampai 191.255.xxx.xxx

    Jumlah Network : 16.384

    Jumlah IP Address : 65.534

    Biasa digunakan untuk jaringan besar dan sedang. dua bit pertama selalu di set 10. 16 bit selanjutnya, network IP kelas B dapat menampung sekitar 65000 host.
  • Kelas C

    Format : 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh (n = Net ID, h = Host ID)

    3 bit pertama : 110

    Panjang Net ID : 24 bit (3 oktet)

    Panjang Host ID : 8 bit (1 oktet)

    Oktet pertama : 192 – 223

    Range IP Address : 192.0.0.xxx sampai 255.255.255.xxx

    Jumlah Network : 2.097.152

    Jumlah IP Address : 254

    Host ID adalah 8 bit terakhir, dengan IP kelas C, dapat dibentuk sekitar 2 juta network yang masing-masing memiliki 256 IP Address Tiga bit pertama IP Address kelas C selalu berisi 111 dengan 21 bit berikutnya. Host ID ialah 8 bit terakhir.
  • Kelas D

    Format : 1110mmmm.mmmmmmmm.mmmmmmmm.mmmmmmmm

    4 Bit pertama : 1110

    Bit multicast : 28 bit

    Byte Inisial : 224-247

    Deskripsi : Kelas D adalah ruang alamat multicast

    Kelas ini digunakan untuk keperluan Multicasting. 4 bit pertama 1110, bit-bit berikutnya diatur sesuai keperluan multicast group yang menggunakan IP Address ini. Dalam multicasting tidak dikenal network bit dan host bit.
  • Kelas E

    Format : 1111rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr

    4 bit pertama : 1111

    Bit cadangan : 28 bit

    Byte inisial : 248-255

    Deskripsi : Kelas E adalah ruang alamat yang dicadangkan untuk keperluan eksperimental.

Sabtu, 26 Maret 2016

Contoh Soal Data encryption standard dan International data encryption algorithm

1.SOAL DES (Soal Data encryption standard)

a. ceritakan cara kerja dari fungsi f pada algoritma DES
b. tentukan 8 bit output paling kanan dari subtitusi s-box jika diketahui nilai nilai berikut ini

output dari ekspansi f adalah 
111110 100000 000101 010111 110010 101000 001111 110100
48bit kunci K adalah
011100 010010 110111 110000 011001 001001 011111 001100

jawab : 
a . fungsi F adalah salah satu bagian dari rumus untuk mendapatkan nilai R[i] yaitu R[i] = Li-1 xor f(R[i-1] , K[i])
R[i] = nilai R / Right yang panjangnya 32bit
L[i] = nilai L / left yang panjangnya 32bit

dimana pada f(R[i-1],K[i]) = P(S(E(R[i-1]) xor K[i]))
P = permutasi
S = subtitusi
E = ekspansi
R[i] = nilai R ke i
K[i] = nilai Kunci ke i

langkah langkah pada Fungsi F

1. melakukan ekspansi nilai R[i-1] dari 32 bit menjadi 48bit yaitu dengan menambahkan 2 bit pada awal dan akhir tiap 4 bit yang dipecah yang mana 2 bit itu
bit tambahan di awal diperoleh dari bit sebelumnya misalnya  32|1.2.3.4  4|5.6.7.8  8|9.10.11.12
bit tambahan di akhir diperoleh dari bit setelahnya misalnya  1.2.3.4|5  5.6.7.8|9  9.10.11.12|13

2. melakukan operasi XOR pada 48 bit dari hasil ekspansi dengan 48 bit K[i]

3. subtitusi
membagi 48 bit menjadi 8 bagian  yang mana masing masing terdiri dari 6 bit yang akan di konversi menjadi 4bit setiap bagianx dengan menggunakan sbox.
2 bit (1 bit awal dan 1 bit akhir) di jadikan penanda untuk menunjukkan baris ke berapa
4 bit ditengah di jadikan penanda untuk menunjukkan posisi kolom ke berapa
tabel sbox 1 : baian ke 1.3.5.7 < salah
tabel sbox 2 : baian ke 2.4.6.8 < salah
*ada 8 sbox untuk 48bit yang telah dibagi menjadi 8blok
isi dari tabel sbox adalah nilai yang memiliki 4 bit yang dibuat dengan man-made atau math-made yg telah teruji

4.permutasi
32bit hasil subtitusi kemudian di susun kembali berdasarkan tabel permutasi

b. diketahui
outout ekspansi : 111110 100000 000101 010111 110010 101000 001111 110100
kunci k              : 011100 010010 110111 110000 011001 001001 011111 001100
hasil XOR         : 100010 110010 110010 100111 101011 100001 010000 111000
maka

----------------------------------------------
6 bit sbox-7 : 010000
2 bit penanda baris : 00 = baris 0
4 bit penanda kolom : 1000 = kolom 8
tabel Sbox[7] : 3 = 0011
----------------------------------------------
6 bit sbox-8 : 111000
2 bit penanda baris : 10 = baris 2
4 bit penanda kolom : 1100 = kolom 12
tabel Sbox[8] : 15 = 1111
----------------------------------------------

*baris dan kolom tabel di mulai dari 0 (nol)


3. lakukan langkah langkah berikut ini sesuai dengan algoritmaenkripsi knapsack
a. diketahui super increasing vector a' = (1,2,5,9,19,39,78,166) tentukan m dan w yg memenuhi algoritma knapsack
b. hitung vector a dan bilangan w^-1
c. lakukan enkripsi dan dekripsi untuk pesan 10010010

jawab

a. dik : vector a' = (1,2,5,9,19,39,78,166) total = 319
m = 329
w = 10
gcd(329,10) = 1


b. w^-1 = 33  -> 33*10 = 330 mod 329 = 1
vector a = w * a'[i] mod m = (10,20,50,90,190,61,122,15)

c.
enkripsi
--------------------------------------------
vec a : 10,20,50,90,190,61,122,15
data         : 10010010
chipertex   : 1*10 + 1*90 + 1*122 = 222
--------------------------------------------
dekripsi
--------------------------------------------
w^-1 = 33
M  = 329
s  = 222
S'  = w' * s mod m
s'  = 33 * 222 mod 329 = 88
data : 1,2,5,9,19,39,78,166

166 > 88 : 0
78  < 88 : 1
39  > 10 : 0
19  > 10 : 0
9   < 10 : 1
5   > 1  : 0
2   > 1  : 0
1   = 1  : 1

hasil 10010010
--------------------------------------------


4. lakukan langkah-langkah berikut ini untuk membuat kunci RSA. setiap langkah harus memenuhi persayaratan Algoritma RSA
a. misalkan n = 77 tentukan nilai p dan q yang sesuai
b. hitung Φ(n)
c. jika nilai d = 13 , tentukan nilai e yang valid
d. tentukan private key dan public key nya

jawab :

a. diketahui n = 77 , p dan q harus bilangan prima jadi
p = 7
q = 11

b. diketahui Φ(n) = (p-1)*(q-1)
Φ(n) = (7-1) * (11-1)
Φ(n) = 60

c. diketahui d = 13 dan e yg relatif prima dengan Φ(n)

-----------------------------------
syarat :
gcd (e , Î¦(n)) =1
e <  Î¦(n)
-----------------------------------

dimana d = 1 + (kΦ(n) / e)
e yang valid adalah 37


d. diketahui
e : 37
n : 77
d : 13
kunci public adalah pasangan (e,n) = (37,77)
kunci private adalah pasangan (d,n) = (13,77)


2.SOAL IDEA (International data encryption algorithm)

-jelaskan proses enkripsi pada algoritma IDEA

 jawab :

Proses Enkripsi IDEA
Pada proses enkripsi algoritma ini, terdapat 3 operasi berbeda yang digunakan : · Xor dari 2 sub blok 16bit ;bit per bit
· Penjumlahan modulo 2 16 2 sub blok 16 bit
· Perkalian modulo (2 16 + 1) 2 sub blok 16 bit
Blok masukan pesan 64bit mulamula dibagi menjadi 4 subsub blok 16bit : X1, X2, X3, X4. Keempat subblok 16 bit tadi kemudian ditransformasikan menjadi subblok 16 bit, Y1, Y2, Y3, Y4. Semua proses ini berada di bawah kendali 52 subblok kunci 16bit yang dibentuk dari blok kunci 128bit.Keempat subblok 16bit X1, X2, X3, X4 digunkan sebagai masukan putaran pertama dari algoritma IDEA. Dapat dilihat dari gambar bahwa dalam setiap putaran dilakukan operasi Xor, penjumlahan modulo dan perkalian modulo. Dari gambar juga terlihat bahwa keluaran dari putaran sebelumnya merupakan masukan dari putaran berikutnya. Hal ini terus berlangsung sampai 8 putaran. Pada putaran terakhir (putaran 8,5) dilakukan transformasi keluaran yang dikendalikan oleh 4 subblok kunci 16bit. Sub kunci diberi simbol Z Operasi yang dilakukan pada setiap putaran dapat dirangkum sebagai berikut :
1) Perkalian X1 dengan Z11
2) Penjumlahan X2 dengan Z21
3) Pejumlahan X3 dengan Z 31
4) Perkalian X4 dengan Z41
5) Operasi XOR hasil langkah 1) dan 3)
6) Operasi XOR hasil angkah 2) dan 4)
7) Perkalian hasil langkah 5) dengan Z51
8) Penjumlahan hasil langkah 6) dengan
langkah 7)
9) Perkalian hasil langkah 8) dengan Z61
10) Penjumlahan hasil langah 7) dengan 9)
11) Operasi XOR hasil langkah 1) dan 9)
12) Operasi XOR hasil langkah 3) dan 9)
13) Operasi XOR hasil langkah 2) dan 10)
14) Operasi XOR hasil langkah 4) dan 10)
Keluaran dari setiap putaran (11), 12) ,13), 14) ) menjadi masukan bagi operasi selanjutnya. Pada putaran ke 8,5 dilakukan transformasi keluaran :

1) Perkalian X1 dengan Z1 8,5
2) Penjumlahan X2 dengan Z3 8,5
3) Penjumlahan X3 dengan Z2 8,5
4) Perkalian X4 dengan Z4 8,5
Setelah semua selesai, keempat subblok 16bit yang merupakan keluaran dari 8,5 putaran operasi tadi digabung kembali menjadi blok pesan rahasia 64bit.

Sistem Kerja Data Encryption Standard(DES) Dan International Data Encryption Algorithm(IDEA)

Data Encryption Standard (DES)

 

DES (Data Encryption Standard) adalah algoritma cipher blok yang populer karena dijadikan standard algoritma enkripsi kunci-simetri, meskipun saat ini standard tersebut telah digantikan dengan algoritma yang baru, AES, karena DES sudah dianggap tidak aman lagi. Sebenarnya DES adalah nama standard enkripsi simetri, nama algoritma enkripsinya sendiri adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada DEA. Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma Lucifer yang dibuat oleh Horst Feistel. Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat.

DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.

Skema global dari algoritma DES adalah sebagai berikut :
1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP).
2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kaH (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda.
3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1 ) menjadi blok cipherteks.

 Gambar 1.1 skema global algoritma des


Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang ;isebut f. Pada fungsi f, blok R dikombinasikan dengan kunci internal K,. Keluaran dai =angsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok - yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu putaran DES. Secara watematis, satu putaran DES dinyatakan sebagai:

Li=Ri-1 (6.1)
R i=L i-1 f(Ri-1, K i) (6.2)

Gambar 1.3 memperlihatkan skema algoritma DES yang lebih rinci. Satu putaran DES merupakan model jaringan Feistel (lihat Gambar 6.2). Perlu dicatat dari Gambar 6.2 bahwa ika (L,6, R,6) merupakan keluaran dari putaran ke-16, maka (R,6, L,s) merupakan pra­:ipherteks (pre-ciphertext) dari enciphering ini. Cipherteks yang sebenarnya diperoleh dengan melakukan permutasi awal balikan, IP-1, terhadap blok pra-cipherteks.

Gambar 1.2. Jaringan Feistel untuk satu putaran DES

Gambar 1.3 Algoritma Enkripsi dengan DES Permutasi Awal
Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi awal (initial-permutation atau IP). Tujuan permutasi awal adalah mengacak plainteks sehingga urutan bit-bit di dalamnya berubah. Pengacakan dilakukan dengan menggunakan matriks permutasi awal berikut ini:

Cara membaca tabel/matriks: dua entry ujung kiri atas (58 dan 50) artinya:
"pindahkan bit ke-58 ke posisi bit 1"
"pindahkan bit ke-50 ke posisi bit 2", dst
Pembangkitan Kunci Internal
Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16 buah, yaitu K,, Kz, ...,K16. Kunci-kunci internal ini dapat dibangkitkan sebelum proses enkripsi atau bersamaan dengan proses enkripsi. Kunci internal dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci eksternal panjangnya 64 bit atau 8 karakter.
Misalkan kunci eksternal yang tersusun dari 64 bit adalah K. Kunci eksternal ini menjadi masukan untuk permutasi dengan menggunakan matriks permutasi kompresi PC- 1 sebagai berikut:
Dalam permutasi ini, tiap bit kedelapan (parity bit) dari delapan byte kunci diabaikan. Hasil 7-ermutasinya adalah sepanjang 56 bit, sehingga dapat dikatakan panjang kunci DES adalah 56 bit. Selanjutnya, 56 bit ini dibagi menjadi 2 bagian, kiri dan kanan, yang masing-masing nanjangnya 28 bit, yang masing-masing disimpan di dalam Co dan DO:
CO: berisi bit-bit dari K pada posisi
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
Do: berisi bit-bit dari K pada posisi
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
Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. 

International Data Encryption Algorithm (IDEA)

IDEA merupakan sebuah algoritma kriptografi simetrik yang diciptakan pada awalnya sebagai pengganti Data Encryption Standard (DES). IDEA adalalah sebuah revisi kecil dari cipher yang lebih awal, yakni PES (Proposed Encryption Standard). Pada awalnya, IDEA disebut IPES (Improved PES).Algoritma IDEA terbilang sederhana karena hanyamelibatkan 3 proses utama dan 9 putaran, lebih sedikit jika dibandingkan dengan blowfish yang mencapai 16 putaran.

Deskripsi Algoritma IDEA
Kriptografi IDEA (International Data Encryption Algorithm) diperkenalkan pertama kali tahun 1991 oleh Xuejia Lai dan James L Massey. Algoritma ini dimaksudkan sebagai pengganti DES(Data Encryption Standard). IDEA adalah revisi minor cipher yang lebih awal, yakni PES, dan pada awalnya disebut IPES
(Improved PES). IDEA didesain di bawah kontrak Hasler Foundation. Sandi rahasia ini dipatenkan dibanyak negara tapi dapat digunakan secara gratis untuk penggunaan yang tidak komersial. Nama “IDEA” juga dipatenkan dan hak patennya berakhir tahun 2011. Lisensi dari IDE dipegang oleh MediaCrypt. IDEA digunakan di Pretty Good Privacy (PGP) v2.0 dan sebagai algoritma opsional dalam OpenPGP, Netscape’s Secure Socket Layer (SSL), dan Secure Hypertext transfer Protocol
(SHTTP). Algoritma utama dari sistem kriptografi IDEA adalah sebagai berikut :
1. Proses Enkripsi : ek (M) = C (1)
2. Proses Dekripsi : dk (C) = M (2)
E : fungsi enkripsi
D : fungsi dekripsi
M : pesan terbuka
C : pesan rahasia
K : kunci enkripsi atau dekripsi


IDEA merupakan algoritma simetris yang beroperasi pada sebuah blok pesan terbuka 64bit, menggunakan kunci yang sama 128bit untuk proses enkripsi dan dekripsi. Keluaran dari algoritma ini adalah blok pesan terenkripsi 64bit. Proses dekripsi menggunakan blok penyandi (algoritma) yang sama dengan proses enkripsi dimana kunci dekripsinya diturunkan dari kunci enkripsi. IDEA menggunakan proses iterasi yang terdiri dari 8 putaran dan 1 transformasi keluaran pada putaran ke8,5

 Algoritma IDEA ini menggunakan 3 operasi aljabar utama, yakni : Xor, operasi penjmlahan modulo 2 16 dan operasi perkalian modulo (2 16 + 1). Operasi ini semuanya dilakukan pada subblok 16bit. IDEA mendapatkan keamanannya dari operasi dari grup yang berbeda – penambahan dan penjumlahan modular serta exclusive or dari bit—yang secara aljabar tidak cocok dalam beberapa pengertian.
Proses Enkripsi IDEA
Pada proses enkripsi algoritma ini, terdapat 3 operasi berbeda yang digunakan : · Xor dari 2 sub blok 16bit ;bit per bit
· Penjumlahan modulo 2 16 2 sub blok 16 bit
· Perkalian modulo (2 16 + 1) 2 sub blok 16 bit
Blok masukan pesan 64bit mulamula dibagi menjadi 4 subsub blok 16bit : X1, X2, X3, X4. Keempat subblok 16 bit tadi kemudian ditransformasikan menjadi subblok 16 bit, Y1, Y2, Y3, Y4. Semua proses ini berada di bawah kendali 52 subblok kunci 16bit yang dibentuk dari blok kunci 128bit.Keempat subblok 16bit X1, X2, X3, X4 digunkan sebagai masukan putaran pertama dari algoritma IDEA. Dapat dilihat dari gambar bahwa dalam setiap putaran dilakukan operasi Xor, penjumlahan modulo dan perkalian modulo. Dari gambar juga terlihat bahwa keluaran dari putaran sebelumnya merupakan masukan dari putaran berikutnya. Hal ini terus berlangsung sampai 8 putaran. Pada putaran terakhir (putaran 8,5) dilakukan transformasi keluaran yang dikendalikan oleh 4 subblok kunci 16bit. Sub kunci diberi simbol Z Operasi yang dilakukan pada setiap putaran dapat dirangkum sebagai berikut :
1) Perkalian X1 dengan Z11
2) Penjumlahan X2 dengan Z21
3) Pejumlahan X3 dengan Z 31
4) Perkalian X4 dengan Z41
5) Operasi XOR hasil langkah 1) dan 3)
6) Operasi XOR hasil angkah 2) dan 4)
7) Perkalian hasil langkah 5) dengan Z51
8) Penjumlahan hasil langkah 6) dengan
langkah 7)
9) Perkalian hasil langkah 8) dengan Z61
10) Penjumlahan hasil langah 7) dengan 9)
11) Operasi XOR hasil langkah 1) dan 9)
12) Operasi XOR hasil langkah 3) dan 9)
13) Operasi XOR hasil langkah 2) dan 10)
14) Operasi XOR hasil langkah 4) dan 10)
Keluaran dari setiap putaran (11), 12) ,13), 14) ) menjadi masukan bagi operasi selanjutnya. Pada putaran ke 8,5 dilakukan transformasi keluaran :

1) Perkalian X1 dengan Z1 8,5
2) Penjumlahan X2 dengan Z3 8,5
3) Penjumlahan X3 dengan Z2 8,5
4) Perkalian X4 dengan Z4 8,5
Setelah semua selesai, keempat subblok 16bit yang merupakan keluaran dari 8,5 putaran operasi tadi digabung kembali menjadi blok pesan rahasia 64bit.


Proses Dekripsi IDEA
Pada proses dekripsi, IDEA menggunakan algoritmayang sama dengan proses enkripsi namun 52 buah subblok kunci yang digunakan merupakan turunan dari 52 buah subblok
kunci untuk enkripsi.Penurunan kunci dekripsi sebagai berikut. Subblok
Kunci Enkripsi Putaran ke1
Z11 Z21 Z31 Z41 Z51 Z61
Putaran ke2
Z12 Z22 Z32 Z42 Z52 Z62
Putaran ke3
Z13 Z23 Z33 Z43 Z53 Z63
Putaran ke4
Z14 Z24 Z34 Z44 Z54 Z64
Putaran ke5
Z15 Z25 Z35 Z45 Z55 Z65
Putaran ke6
Z16 Z26 Z36 Z46 Z56 Z66
Putaran ke7
Z17 Z27 Z37 Z47 Z57 Z67
Putaran ke8
Z18 Z28 Z38 Z48 Z58 Z68
Transformasi output Z1 8,5 Z2 8,5 Z3 8,5 Z4 8,5\


Subblok Kunci Dekripsi
Putaran ke1
(Z19) 1–Z39 –Z29 (Z49) 1Z 58 Z68
Putaran ke2
(Z18) 1–Z38 –Z28 (Z48) 1Z 57 Z67
Putaran ke3

(Z17) 1–Z37 –Z27 (Z47) 1Z 56 Z66
Putaran ke4
(Z16) 1–Z36 –Z26 (Z46) 1Z 55 Z65
Putaran ke5
(Z15) 1–Z35 –Z25 (Z45) 1Z54 Z64
Putaran ke6
(Z14) 1–Z34 –Z24 (Z44) 1Z53 Z63
Putaran ke7
(Z13) 1–Z33 –Z23 (Z43) 1Z52 Z62
Putaran ke8
(Z12) 1–Z32 –Z22 (Z42) 1Z 51 Z61
Transformasi output (Z11) 1–Z21 –Z31 (Z41) 1
Pada subblok kunci dekripsi, Z 1 adalah invers perkalian modulo (2 16 + 1) dari Z dimana Z Z 1= 1.
Pada subblok kunci dekripsi, Z adalah invers penjumlahan modulo 2 16 dari Z dimana Z Z 1= 0. 


Proses Pembentukan SubKunci
Pada proses enkripsi, 52 subblok kunci 16bit diperoleh dari sebuah kunci 128bit pilihan pengguna.
Blok kunci 128bit tadi kemudian dipartisi menjadi 8 subblok kunci 16bit
yang langsung digunakan sebagai 8 subblok kunci pertama. Dari situ kemudian blok kunci 128bit
dirotasi 25 posisi dari kiri untuk kemudian dipartisi lagi menjadi 8 subblok kunci 16bit berikutnya. Proses tersebut terus diulangi sampai diperoleh 52 subblok kunci 16bit. Urutan pembentukan subkunci sebagai berikut :
Z11 Z21 Z31 Z41 Z51 Z61
Z12 Z22 Z32 Z42 Z52 Z62
Z13 Z23 Z33 Z43 Z53 Z63
Z14 Z24 Z34 Z44 Z54 Z64
Z15 Z25 Z35 Z45 Z55 Z65
Z16 Z26 Z36 Z46 Z56 Z66
Z17 Z27 Z37 Z47 Z57 Z67
Z18 Z28 Z38 Z48 Z58 Z68
Z1 8,5 Z2 8,5 Z3 8,5 Z 4 8,5 

Pada tabel berikut dapat dilihat data hasil enkripsi tiap putaran yang diproses dengan sebuah program yang mengimplementasikan algoritma IDEA utuk sebuah pesan terbuka dalam bentuk bilangan integer 11121314 yng telah dibagibagi menjadi empat yaitu:
X1= 11, X2= 12, X3 = 13,dan X4 = 14 , dan kunci telah dibagibagi
menjadi Z 11 = 2, Z21 = 4, Z 31 = 6, Z41 = 8, Z51 = 10, Z 61 = 12, Z12 = 14, Z 22 = 16

Setelah memperhatikan tabel dengan seksama, maka dapat terlihat bahwa hasil enkripsi bilangan integer 11, 12, 13, 14 masingmasing adalah 25112, 3347, 31031, dan 35414. Sekarang mari kita dekripsi hasil yang sudah kita dapat tadi dengan algoritma yang sama tetapi dengan kunci dekripsi yang merupakan kunci enkripsi yang diturunkan.

Algoritma IDEA





Tabel Komputasi Algoritma IDEA Dekripsi
Tabel Komputasi Algoritma IDEA Enkripsi