Você está na página 1de 20

APLIKASI KRITPOGRAFI MODERN

UNTUK PENGIRIMAN DATA TERAMANKAN


Husni Fahmi, Haret Faidah
PTIK-BPPT Gedung II lantai 21, MH Thamrin 8, Jakarta
{fahmi, haret}@inn.bppt.go.id
20 Mei 2010
Abstraksi
Kemajuan teknologi telah melahirkan sistem komputer yang terdistribusi yang menghubungkan banyak
pengguna dan komputer pada wilayah yang berjauhan untuk dapat saling berinteraksi melalui jaringan
komunikasi data. Seiring dengan kemajuan teknologi ini, pengamanan terhadap data baik yang berada di
dalam komputer maupun yang melintas melalui jaringan menjadi suatu tantangan teknologi yang perlu
disediakan solusinya. Pada makalah ini, kami memberikan pengantar tentang kriptografi yang merupakan
dasar sistem pengamanan informasi dengan tujuan untuk menyediakan layanan dasar keamanan informasi
yaitu confidentiality, data integrity, authentication dan non-repudiation. Untuk mencapai layanan dasar
keamanan informasi, kami menjelaskan beberapa teknik kriptografi yaitu kriptografi simetris yaitu Advanced
Encryption Standard (AES) dan kriptografi asimetris yaitu RSA serta message digest SHA-256. Ketiga teknik
ini dan didukung dengan pengelolaan kunci dapat diterapkan pada bahasa pemrograman .NET untuk
membangun aplikasi pengiriman data teramankan.
Kata kunci: computer security, cryptography, encryption, integrity, authentication, .NET application
dihubungkan dengan beberapa buah komputer
1. PENDAHULUAN

lain

dan

digunakan

oleh

beberapa

orang

bersama-sama. Pengamanan data menjadi lebih


Dengan munculnya komputer pada tahun 1960-

penting lagi karena kemungkinan penggunaan

an, maka data tidak lagi disimpan di lemari dalam

oleh orang yang tidak berwenang menjadi lebih

bentuk tumpukan kertas tetapi disimpan di dalam


komputer

dalam

besar.

pulsa-pulsa

listrik.

mengamankan

dan

Bersamaan dengan kemajuan teknologi komputer

melindungi informasi yang ada di komputer

maka terjadi juga kemajuan yang besar dalam

menjadi sangat penting. Di era awal ini, di mana

bidang teknologi jaringan. Kemajuan teknologi ini

komputer masih berdiri sendiri dan belum saling

melahirkan suatu sistem komputer terdistribusi di

berhubungan, pengamanan bisa dilakukan cukup

mana ratusan pemakai dan komputer dalam suatu

dengan mengunci komputer atau menggunakan

wilayah yang luas akan saling berinteraksi melalui

password.

falisitas jaringan.

Kemampuan

bentuk

untuk

Tetapi

kemudian

komputer

pun

Koneksitas antar komputer

mengalami kemajuan teknologi di mana satu

dalam berkembang menjadi Internet (berasal dari

komputer tidak lagi berdiri sendiri tetapi bisa

kata internetworking) [COME06]. Dalam Internet,

ribuan orang dan komputer di seluruh dunia

seseorang bisa melihat isi suatu berita yang

terhubung dalam satu dunia maya yang dikenal

dikirimkan melalui jaringan tanpa diketahui bahwa

sebagai cyber space. Kemajuan teknologi di

informasi sudah dibaca oleh yang tidak berhak. Di

bidang

memberi

samping merahasiakan tulisan, kriptografi juga

kemudahan kepada pemakai komputer di seluruh

berperan dalam melindungi data dari pemalsuan

dunia, tetapi kemajuan teknologi itu akan selalu

(authentication) dan menjaga integritas data (data

diikuti dengan sisi buruk dari teknologi itu sendiri.

integrity) dari perubahan oleh pihak yang tidak

Salah satunya adalah rawannya keamanan data

berwenang. Dengan demikian, kriptografi adalah

sehingga menimbulkan tantangan dan tuntutan

semua hal mengenai cara menghindari dan

akan tersedianya suatu sistem pengamanan data

menemukan semua penipuan dan semua ke-

yang

tidakjujuran yang terjadi pada suatu pengiriman

komputer

sama

dan

jaringan

canggihnya

dengan

kemajuan

informasi.

teknologi komputer itu sendiri. Bagaimana kita


bisa melindungi informasi yang melintas ke
saluran

Pada dasarnya, semua cara yang dianggap

komunikasi menjadi suatu tantangan yang harus

tradisional dan manual bisa diterapkan ke dalam

dijawab oleh para teknokrat di bidang teknologi

bentuk pengamanan elektronik. Salah satu contoh

jaringan.

pengamanan cara tradisional yang kemudian juga

belahan

dunia

yang

lain

melalui

sangat berperanan sebagai cara pengamanan


Ada

beberapa

cara

untuk

elektronik

melakukan

adalah

tanda

berubahnya

seperti kriptografi, otentikasi, anti virus, firewall,

elektronik, maka muncul juga tanda tangan di

dan intrusion detection system. Dalam naskah ini,

dalam bentuk elektronik. Tanda tangan di dalam

kami akan menitikberatkan pada kriptografi untuk

bentuk elektronik ini dikenal sebagai digital

mengamankan data karena ia merupakan dasar

signature. Ia menjadi dasar untuk banyak tujuan

dari sistem pengamanan informasi secara luas.

dari kriptografi modern misalnya untuk mencegah

Dalam kriptografi, data yang dikirimkan melalui

penyangkalan

jaringan

keaslian sumber data (data origin authentication),

disamarkan

sedemikian

rupa

menjadi

Dengan

pengamanan data yang melalui suatu saluran

akan

informasi

tangan.

informasi

(non-repudiation),

menjaga

dan identifikasi pengirim (identification).

sehingga kalaupun data itu bisa dibaca maka


tidak bisa dimengerti oleh pihak yang tidak
Cryptography

Kriptografi dikelompokkan dalam dua kelompok

berasal dari bahasa Yunani, yaitu krypts atau

besar yaitu kriptografi klasik dan kriptografi

"hidden" yang berarti tersembunyi, dan grphein

modern.

atau to write" yang berarti menulis [Konh81]. Jadi

menyamarkan berita yang dilakukan dengan cara-

kriptografi berarti secret writing atau penulisan

cara

rahasia.

sedangkan

berhak. Istilah

kriptografi atau

Kriptografi

manual

klasik

sebelum

kriptografi

adalah

adanya
modern

cara

komputer,
berkembang

setelah ada komputer. Kriptografi modern adalah


Dalam

pengiriman

informasi

lewat

suatu metoda kriptografi yang menggunakan

jaringan,

algoritma matematika dan suatu kunci.

seseorang bisa membuat ribuan duplikasi data


tanpa bisa diketahui apakah itu asli atau tidak dan

Ada banyak tujuan dari kriptografi modern seperti

4. Non-repudiation adalah suatu layanan yang

privacy atau confidentiality, data integrity, entity

menghindari satu pihak tidak mengakui suatu

authentication

perjanjian atau suatu tindakan yang sudah

atau

identification,

message

authentication, signature, authorization, validation,

dilakukan

access

ketidaksesuaian karena salah satu pihak

control,

certification,

witnessing,

receipt,

anonymity,

non-repudiation

timestamping,

confirmation,
dan

sebelumnya.

Jika

terjadi

ownership,

menyangkal

revocation

maka ada suatu cara untuk membuktikan dan

suatu

tindakan

sebelumnya,

mengatasi keadaan itu.

[MOV96].
Dari semua tujuan pengamanan informasi yang

Tujuan dasar dari kriptografi modern adalah

disebutkan itu, empat hal bisa dianggap sebagai

mencakup keempat hal yang disebutkan di atas.

dasar dari yang lainnya yaitu confidentiality, data

Keempat tujuan dasar ini bisa membentuk suatu

integrity,

kerangka kerja yang bisa digunakan untuk

authentication

dan

non-repudiation

[MOV96].

memenuhi tujuan yang lain.

1. Confidentiality adalah suatu layanan yang

Pada awalnya, kriptografi dinilai sebagai suatu

digunakan untuk menjaga agar informasi

seni yang dilakukan oleh orang-orang yang

hanya diketahui oleh pihak yang berwenang.

berusaha memenuhi kebutuhan pengamanan

Secrecy atau kerahasiaan adalah istilah yang

informasi di zamannya. Tetapi lambat laun, mulai

sama dengan confidentiality dan privacy. Ada

sekitar tahun 1970-an, terjadi perubahan dari

banyak cara untuk menjaga confidentiality,

kriptografi sebagai suatu seni menjadi kriptografi

mulai dari cara pengamanan fisik sampai

sebagai suatu ilmu [MOV96]. Sekarang telah

dengan penggunaan algoritma matematika.

banyak dilakukan konferensi ilmiah berskala

2. Data integrity adalah layanan yang menjaga

internasional tentang kriptografi. Ada juga suatu

perubahan data oleh pihak yang tidak berhak.

organisasi

internasional

yaitu

International

Untuk bisa menjamin integritas data maka

Association for Cryptologic Research (IARC) yang

seseorang harus bisa menemukan manipulasi

bertujuan untuk melakukan penelitian di bidang

data oleh pihak yang tidak berwenang.

kriptografi.

Manipulasi data ini termasuk penyisipan,


Seperti sudah disebutkan sebelumnya, bahwa

penghapusan dan perubahan data.


3. Authentication adalah layanan yang berkaitan

kriptografi dikelompokkan dalam dua kelompok

dengan peng-identifikasian. Identifikasi ini

besar yaitu kriptografi klasik dan kriptografi

berlaku terhadap dua hal, yaitu kepada kedua

modern.

pihak yang saling berkomunikasi dan juga

menyamarkan berita yang dilakukan dengan cara-

terhadap berita yang dikirimkan. Karena itu,

cara manual sebelum adanya komputer, yaitu

authentication biasanya dibagi dua yaitu entity

dengan cara-cara transposisi dan substitusi huruf.

authentication dan data origin authentication.

Ini dilakukan sejak jaman Romawi sampai dengan

Data origin authentication termasuk ke dalam

mulai digunakannya komputer dalam proses-

data integrity.

proses kriptografi [HEBE]. Sedangkan kriptografi

Kriptografi

klasik

adalah

cara

modern,

yang

berkembang

setelah

adanya

komputer, merupakan suatu metoda kriptografi

Sebagai ilustrasi penggunaan kriptografi modern

yang menggunakan algoritma matematika dan

di kehidupan nyata, maka tulisan ini akan

suatu kunci. Informasi atau berita asli yang belum

dilengkapi

mengalami perubahan oleh proses kriptografi

penggunaan berbagai macam kriptografi modern

dikenal sebagai plaintext, dan berita hasil dari

yang

perubahan atau proses kriptografi dikenal sebagai

kriptografi simetris yaitu AES, pembuatan kunci

ciphertext.

privat dan kunci publik menggunakan RSA,

dengan

sering

aplikasi

digunakan.

yang

Ada

mencakup

penggunaan

kriptografi asimetris menggunakan RSA, dan


Ada dua jenis kriptografi modern yaitu kriptografi
simetris

dan

kriptografi

asimetris

pembuatan hash code menggunakan SHA-256.

[JJ89].

Kriptografi simetris menggunakan kunci yang

2. Ulasan Teori Yang Digunakan

sama

Sebelum melihat bagaimana aplikasi ini bekerja,

untuk

enkripsi

dan

dekripsi

seperti

digambarkan pada Gambar 1. Kriptografi simetris

maka

disebut juga dengan kriptografi kunci rahasia

bagaimana algoritma-algoritma kriptografi modern

(secret key cryptography). Contoh kriptografi

bekerja.

akan

diterangkan

secara

ringkas

simetris adalah Data Encryption Standard (DES)


[FIPS99] dan Advanced Encryption Standard

2.1. Advanced Encryption Standard (AES)

(AES) [FIPS01]. Sedangkan kriptografi asimetris

Advanced Encryption Standard (AES) adalah

menggunakan kunci yang berbeda untuk enkripsi

kriptografi simetris berbasis block cipher dengan

dan dekripsi seperti digambarkan pada Gambar 2.

input plaintext sepanjang 128 bit dan kunci

Kriptografi asimetris disebut juga kriptografi kunci

bervariasi

publik

Keluarannya berupa ciphertext dengan panjang

adalah

(public key cryptography). Contohnya


Rivest-Shamir-Adleman disingkat RSA

antara

128,

192

dan

256

bit.

block 128 bit [FIPS01].

[RFC 2313, RFC 2437].


2.1.1. Enkripsi AES
Proses Enkripsi AES yang digambarkan pada
Gambar 3 adalah sebagai berikut:
1. Pada awal enkripsi, input plaintext 128 bit
akan disalinkan ke suatu array yang diberi

Gambar 1. Kriptografi Simetris

nama state array.


2. Proses enkripsi dimulai dengan suatu proses
yang disebut AddRoundKey().
3. Untuk kunci cipher 128 bit, jumlah ronde
adalah 10.
4. Proses selanjutnya adalah 9 ronde yang
masing-masing ronde terdiri dari urut-urutan
Gambar 2. Kriptografi Asimetris

empat

macam

proses

yaitu

SubBytes(),

ShiftRows(),

MixColumns()

dan

plaintext (128 bit)

Kunci 128
bit

AddRoundKey().
AddRoundKey()

5. Diakhiri dengan ronde ke 10 yang hanya


terdiri dari 3

w[0,3]

proses yaitu SubBytes(),


SubBytes()

ShiftRows() dan AddRoundKey().

Expand Key
ShiftRows()

6. Dengan

proses

Expand

Key

atau

Ronde 1
MixColumns()

perpanjangan kunci, kunci yang terdiri dari 4

AddRoundKey()

word (1 word terdiri dari 32 bit) akan

State

diperpanjang menjadi suatu array yang terdiri

w[4,7]

SubBytes()

dari 44 word yang masing-masing word terdiri

ShiftRows()
Ronde 2

dari 32 bit atau 4 byte. Kunci yang asli

MixColumns()

digunakan pada awal enkripsi, kemudian

AddRoundKey()
w[8,11]

setiap 4 buah word hasil perpanjangan kunci


Ronde 3 - Ronde 8

akan digunakan pada ronde 1 sampai dengan


ronde 10.

SubBytes()

7. Setiap Ronde terdiri dari empat proses, yang

ShiftRows()

terdiri dari satu operasi permutasi dan tiga

Ronde 9

operasi substitusi yaitu:

MixColumns()
AddRoundKey()
w[36,39]

a. SubBytes(), yang menggunakan suatu

State

AES S-Box untuk melakukan substitusi

SubBytes()

byte-per-byte.
b. ShiftRows(),

ShiftRows()

yang

melakukan

Ronde 10

suatu

AddRoundKey()
w[40,43]

permutasi sederhana dengan cara left

ciphertext

shift atau geser kiri.


c. MixColumns() melakukan suatu operasi
aritmatika dalam GF

(2 ).
8

Gambar 3. Enkripsi AES

d. AddRoundKey() melakukan operasi XOR

2.1.1.1. SubBytes ()

antara hasil dari tiga proses sebelumnya

SubBytes() ini menggunakan matriks 16x16 yang

dengan 4 word kunci Ronde.

disebut AES S-Box yang berisi permutasi semua


256 kemungkinan dari kombinasi 8-bit. Setiap sel
pada matriks berisi 1 byte (2 digit hexadecimal
atau

nibble).

Setiap

byte

State

akan

ditransformasikan ke nilai lain di dalam matriks.

Gambar berikut memperlihatkan konversi oleh


suatu S-Box

a ( x ) = {03}x 3 + {01}x 2 + {01}x + {02}


s 0 ,0

s 0,1

s 0, 2

s 0,3

s ' 0, 0

s '0, 2

s ' 0, 3

s1, 0

s1,s1 r ,c

s1, 2

s1,3

s '1, 0

s ' r ,c s '1, 2

s '1,3

s 2, 0

s 2,1

s 2, 2

s 2,3

s ' 2, 0

s ' 2,1

s ' 2, 2

s ' 2,3

s 3, 0

s3,1

s 3, 2

s 3, 3

s ' 3, 0

s '3,1

s ' 3, 2

s ' 3, 3

s ' 0,1

Kalau kita anggap bahwa

s ' (x ) = a(x ) s(x ) ,

maka

s ' 0,c 02


s '1,c = 01
s ' 01
2 ,c
s ' 3,c 03

Gambar 4. Konversi S-Box


2.1.1.2. ShiftRows()
Proses ShiftRows() ini adalah proses yang sangat

03 01 01 s 0,c

02 03 01 s1,c
01 02 03 s 2,c

01 01 02 s3,c

sederhana. Baris ke-1 sampai baris ke-3 dari

Untuk

State akan digeser ke kiri. Baris pertama tidak

Sebagai hasil perkalian, maka 4 byte dalam setiap

mengalami geser kiri. ShiftRows() adalah sebagai

kolom pada State array akan berubah sebagai

berikut: [note: please check the formula]

s ' r ,c = s r ,(c + shift ( r , Nb ) ) mod Nb

berikut:

0r 4 dan

untuk

0 c Nb .

s ' 0,c = ({02} s 0,c ) ({03} s1,c ) s 2,c s3,c

0 c Nb,

s '1,c = s 0,c ({02} s1,c ) ({03} s 2,c ) s3,c

s ' 2,c = s 0,c s1,c ({02} s 2,c ) ({03} s 3,c )

di mana shift(r,Nb) tergantung ke pada nomor

s ' 3,c = ({03} s 0,c ) s1,c s 2,c ({02} s3,c )

baris r. Nb adalah panjang blok (4). Jadi


shift(1,4)=1; shift(2,4)=2; shift(3,4)=3 .

Gambar berikut memperlihatkan transformasi


MixColumns():
sr ,2

s r ,3

s ' r ,0

s' r ,1

s 0,1

s0, 2

s0,3

s0,0

s1,0

s1,1

s1,2

s1,3

s 2, 0

s 2,1

s 2, 2

s3,1

s3, 2

s r ,0

s r ,1

s0,0

s' r , 2

s' r ,3

s0,1

s0,2

s0,3

s1,1

s1,2

s1,3

s1,0

s 2, 3

s 2, 2

s 2, 3

s 2, 0

s 2,1

s3,3

s3,3

s3, 0

s3,1

s3, 2

s3, 0

S'

s 0 ,0

s 0,c
s 0,1

s1, 0

s1,c
s1,1

s 2, 0

s 2,c
s 2,1

s 3, 0

s 3 ,c
s3,1

s 0, 2

s1, 2
s 2, 2

s 3, 2

s 0,3
s1,3
s 2,3
s 3, 3

s ' 0, 0

s ' 0,c
s 0,1 s '0, 2

s ' 0, 3

s '1, 0

s '1,c
s1,1

s '1, 2

s '1,3

s ' 2, 0

s ' 2,c
s 2,1

s ' 2, 2

s ' 2,3

s ' 3, 2

s ' 3, 3

s ' 3, 0

s ' 3, c

s3,1

Gambar 5. ShiftRow()
Gambar 6. Transformasi MixColumns()
2.1.1.3. MixColumns()
Transformasi menggunakan MixColumns() adalah

2.1.1.4. AddRoundKey()

proses ketiga dalam satu Ronde enkripsi AES. Di

Pada proses AddRoundKey() maka 128 bit hasil

sini

kolom-kolom

pada

diperlakukan sebagai suatu


berada dalam GF
modulo

State

akan

State akan di-XOR-kan dengan Kunci Ronde,

polinomial

yang

yaitu kunci hasil dari proses Expand Key. Pada

array

(2 ) dan akan dikalikan dengan

awal enkripsi, 128 bit plaintext akan di-XOR-kan

dengan 128 bit kunci yang asli. Kemudian 128 bit

x 4 + 1 , dengan suatu polinomial tertentu:

plaintext

akan

mengalami

proses-proses:

SubBytes(), ShiftRows() dan MixColumns(). Pada

k 0 k 4 kk18 k12

proses AddRoundKey(), 128 bit yang sudah

k1 k 5 k 9 k13
k 2 k 6 k10 k14

melalui ketiga proses tersebut akan di-XOR-kan


dengan Kunci Ronde hasil Expand Key yang

k 3 k 7 k11 k15

pertama. Hasil AddRoundKey() ini adalah state


pada Ronde 1. State 1 ini akan mengalami ketiga

w0 w1 w2 w3

proses tersebut kembali. Pada AddRoundKey()


yang

berikut,

mengalami

maka

perubahan

128

bit

pada

yang
ketiga

sudah
proses

tersebut kembali akan di-XOR-kan dengan Kunci


Ronde hasil Expand Key kedua dan seterusnya
sampai Ronde 9.

w4 w5 w6 w7
Pada Ronde terakhir atau Ronde 10, maka hanya
Gambar 7. ExpandKey

tiga proses yang dilakukan yaitu SubBytes(),


ShiftRows() dan AddRoundKey(). Hasilnya dari

1. Perpanjangan kunci (key expansion) dimulai

Ronde 10 adalah State 10. Ini akan disalinkan ke

dengan memasukkan 4 buah word, yaitu 128

array output sebagai ciphertext.

bit kunci yang asli ke 4 posisi pertama dari


array 44 word yaitu

2. Sisa array 40 word, dari

2.1.1.5. Expand Key


Expand Key adalah proses untuk membuat kunci

word baru.

kunci sebanyak 44 word. 4 word pertama, yaitu

3. Setiap word ke 4, yaitu

bit-bit kunci yang asli sebanyak 128 bit digunakan


awal

enkripsi.

Kemudian

40

w4 sampai dengan

w43 , akan diisi setiap kali dengan 4 buah

yang panjangnya 128 bit atau 4 word menjadi

pada

w0 , w1 , w2 dan w3 .

seterusnya

word

berikutnya, hasil dari Expand Key akan digunakan

sampai

w3 , w7 , w11 dan

dengan

w3 9 , akan

diproses oleh suatu fungsi.

pada setiap Ronde. Ada 10 Ronde yang masing-

4. Setiap

masing menggunakan 4 word [Sta03].

word

berikutnya

akan

diperoleh

dengan cara:
- jika i 0 mod 4 , maka

w[i ] = w[i 4] output fungsi G,


- jika

i 0 mod 4 , maka
w[i ] = w[i 4] w[i 1]

5. Proses ini akan terus berulang sampai


diperoleh

w43 .

Cara kerja Fungsi G:

Ada 3 proses pada fungsi G, yaitu rotasi kiri

dipertukarkan

dan

InvAddRoundKey()

(RotWord), substitusi Word (SubWord) dan XOR.

InvMixColumns() juga dipertukarkan.

dan

1. RotWord: Word ke-4 ( w3 ) akan mengalami


rotasi kiri sebanyak 1 byte, jadi word yang
terdiri dari:

[k12 , k13 , k14 ,k 15 ]

akan menjadi

w[40,43]
AddRoundKey()

w3 = [k13 , k14 , k15 , k12 ].


'

2. SubWord:

Dilakukan

byte

InvShift Rows()

substitution

InvSubBytes()

terhadap setiap byte pada setiap word sesuai


AES S-Box,

'

w3 akan menjadi w3

InvMixColumns()

''

InvShift Rows()

Rcon[ j ] .

InvSubBytes()
w[32,35]

Rcon[ j ] adalah suatu konstanta yang 3 byte

4.

Ronde 1
AddRoundKey()

''

w3 dengan

3. Dilakukan operasi XOR antara


suatu nilai yaitu

w[36,39]

Ronde 2
AddRoundKey()
InvMixColumns()

kanannya adalah 0, dan byte terkiri adalah


Ronde 3 - Ronde 8

selalu tetap sesuai tabel berikut:

InvShift Rows()

Rcon[ j ]

Table 1. Tabel Konstanta

InvSubBytes()
w[4,7]

Ronde

Round 9
AddRoundKey()

10

InvMixColumns()

ke

Expand Key

Rcon[j]

01

02

04

08

10

20

40

80

1B

36
InvShift Rows()
InvSubBytes()

Ronde 10

w[0,3]
AddRoundKey()

2.1.2. Dekripsi AES

Kunci 128 bit

Urutan proses dekripsi AES tidak merupakan


plaintext 128 bit

kebalikan dari enkripsi. Proses Dekripsi AES ini


digambarkan pada Gambar 4. Ada proses yang

Gambar 8. Dekrispi AES

dipertukarkan urutannya, walaupun penggunaan

2.1.2.1. InvShiftRows()

kuncinya sama. Jika urut-urutan proses pada

Proses ini adalah proses invers dari ShiftRows()

enkripsi adalah SubBytes(), Shift Rows() , Mix

pada enkripsi. Jika pada enkripsi dilakukan geser

Columns() dan AddRoundKey() , maka uruturutan

proses

pada

InvShiftRows(),
InvAddRoundKey()

dekripsi

kiri maka pada dekripsi atau InvShitfRows() maka

adalah

yang

InvSubBytes(),
dan

dan

geser

kanan.

Baris

selanjutnya mengalami geser kanan dengan


transformasi sebagai berikut:

invers dari empat proses pada enkripsi tetapi


InvShiftRows()

adalah

pertama tidak mengalami geser kanan. Baris

InvMixColumns().

Keempat proses tersebut adalah masing-masing

urutan

dilakukan

[note: periksa formula]

InvSubBytes()

s r ,(c + shift ( r , Nb ) ) mod Nb = s r ,c

untuk

0r 4

Dari hasil perkalian ini, 4 byte di dalam kolom

dan

0 c Nb

akan diubah sebagai berikut :

r adalah baris (dari 0 sampai 3)

s ' 0,c = ({0 E } s 0,c ) ({0 B} s1,c ) ({0 D} s 2,c ) ({09} s3,c )

c adalah kolom (dari 0 sampai

s '1,c = ({09} s 0,c ) ({0 E} s1,c ) ({0 B} s 2,c ) ({0 D} s3,c )

Nb , Nb = 4 )

s ' 2,c = ({0 D} s 0,c ) ({09} s1,c ) ({0 E } s 2,c ) ({0 B} s3,c )
s '3,c = ({0 B} s 0,c ) ({0 D} s1,c ) ({09} s 2,c ) ({0 E } s3,c )

s r ,0

sr ,2

s r ,1

s r ,3

s ' r ,0

s' r , 2

s' r ,1

s' r ,3

2.1.2.4. InvAddRondeKey()
S

S'

s0,0

s 0,1

s0, 2

s0,3

s0,0

s0,1

s0,2

s0,3

s1,0

s1,1

s1,2

s1,3

s1,3

s1,0

s1,1

s1,2

s 2, 0

s 2,1

s 2, 2

s 2, 3

s 2, 2

s 2, 3

s 2, 0

s 2,1

s3, 0

s3,1

s3, 2

s3,3

s3,1

s3, 2

s3,3

s3, 0

InvAddRoundKey()

adalah

sama

dengan

AddRoundKey()

2.1.3. Equivalent Invers Cipher


Seperti sudah dijelaskan sebelumnya bahwa urut-

Gambar 9. InvShiftRows()

urutan proses pada dekripsi AES tidak tepat sama

2.1.2.2. InvSubBytes()

dengan enkripsi. Ada proses yang dipertukarkan

Ini adalah invers dari SubBytes() yang dilakukan

urutannya. Urut-urutan proses pada dekripsi

pada enkripsi. Matriks yang digunakan adalah

adalah

invers dari S-Box yang digunakan pada enkripsi.

InvAddRoundKey()

InvShiftRows(),

InvSubBytes(),

dan

InvMixColumns()

sedangkan urut-urutan pada enkripsi adalah


2.1.2.3. InvMixColumns()
InvMixColumns()

dan

MixColumns() pada enkripsi. InvMixColumns()

bahwa suatu aplikasi yang membutuhkan enkripsi

bekerja pada kolom-per-kolom dari State array,

dan dekripsi harus menggunakan dua perangkat

dan memperlakukan setiap kolom sebagai suatu

lunak atau peranti tegar (firmware) yang berbeda

polinomial pangkat 3. Polinomial dianggap ada

pada satu aplikasi. Akhirnya dikembangkan suatu

x + 1,

metode dekripsi AES yang urut-urutannya sama

(2 ) dikalikan dengan modulo


8

dengan polinomial tertentu

dari

MixColumns()

AddRoundKey(). Ini menimbulkan konsekuensi

invers

ShiftRows(),

proses

pada GF

adalah

SubBytes(),

(x ) = {0 B}x

dengan enkripsi yaitu: InvSubBytes(), InvShift

a 1 ( x ) berikut:

Rows(), InvMixColumns() dan AddRoundKey().

+ {0 D}x + {09}x + {0 E}
2

Equivalent Inverse Cipher atau Ekuivalen Dekripsi


AES bisa dilakukan karena :

Jika

s ' ( x ) = a 1 ( x ) s ( x ) , maka

s ' 0,c 02


s '1,c = 01
s ' 01
2 ,c
s ' 3,c 03
untuk

1. Proses SubBytes() dan

ShiftRows() bisa

saling dipertukarkan. Jadi proses SubBytes()

03 01 01 s 0,c

02 03 01 s1,c
01 02 03 s 2,c

01 01 02 s3,c

yang diikuti dengan ShiftRows() sama dengan


proses

ShiftRows()

yang

proses

SubBytes().

Begitu

diikuti

dengan

juga

dengan

inversnya, proses InvShiftRows(), yang diikuti


dengan proses InvSubBytes() sama dengan

0 c Nb.

proses InvSubBytes() yang diikuti dengan

ciphertext 128 bit

proses InvShiftRows(),
AddRoundKey()

2. Proses MixColumns() dan InvMixColumns()

w[40,43]

linier terhadap kolom input, yang berarti:


InvMixColumns(state

XOR

RondeKey)

InvMixColumns(state)

InvSubBytes()

InvShift Rows()

XOR

InvMixColumns()
InvMixColumns()

InvMixColumns(RoundKey)

AddRoundKey()

w[36,39]

InvSubBytes()

Kedua sifat ini memungkinkan urutan proses


InvSubBytes()

dan

InvShiftRows()

InvShift Rows()
Ronde 2

untuk

InvMixColumns()

dipertukarkan. Juga urutan AddRoundKey() dan


InvMixColumns() bisa dipertukarkan, jika
sampai dengan

InvMixColumns()

w4

AddRoundKey()

w[32,35]

w39 dari hasil Expand Key


InvSubBytes()

dimodifikasi menggunakan InvMixColumns().

InvShift Rows()
InvMixColumns()

Equivalen

Dekripsi

menukarkan
InvShiftRows()

AES

urutan
dan

dilakukan

InvSubBytes()
menukarkan

dengan

InvMixColumns()

dan

AddRoundKey()

w[4,7]

urutan

InvShift Rows()

Expand Key

InvSubBytes()

AddRoundKey() dan InvMixColumns() setelah

Ronde 10

AddRoundKey()
w[0,3]

memodifikasi kunci untuk Ronde 1 sampai Ronde

Kunci 128 bit


plaintext 128 bit

N r -1 menggunakan InvMixColumns.

Gambar 10. Skema Ekuivalen Dekripsi AES


Equivalen dekripsi AES memberi struktur yang
lebih efisien dari Inverse Cipher yang sudah

2.2.

diterangkan sebelumnya.

Pembuatan kunci dan kriptografi


asimetris menggunakan RSA

RSA

adalah

singkatan

dari

Rivest-Shamir-

Adleman yaitu nama tiga profesor MIT yang


mengembangkannya.

RSA

adalah

kriptografi

asimetris yang paling banyak digunakan [note:


please add a reference]. Kekuatan RSA dalam
melakukan pengamanan data didapatkan dari
sepasang kunci yang diperoleh dari fungsi dua
buah bilangan prima. Sepasang kunci ini adalah
hasil dari fungsi dua buah bilangan prima yang
sangat besar, yang panjangnya 100, 200 digit
atau mungkin lebih besar. Dari perhitungan
matematika menggunakan kedua buah bilangan

10

prima ini, akan didapatkan kunci publik dan kunci


privat. Sesudah digunakan untuk menghitung

2.2. Enkripsi dan Dekripsi RSA

kunci, kedua bilangan prima boleh dihapus, tetapi

- Jika C adalah ciphertext dan P adalah plaintext

kerahasiaannya harus tetap dijaga. Dua buah

(P<n), maka enkripsi dilakukan sebagai berikut:

C = P e mod n ,

teori bilangan yang mempunyai peranan penting


dalam kriptografi asimetris termasuk RSA adalah
Teorema Fermat dan Teorema Euler [Sta03].

- dan dekripsi dilakukan sebagai berikut :

P = C d mod n

Cara membuat kunci RSA:


1. Pilih dua buah bilangan prima yang besar

Jika kita melakukan enkripsi terhadap 123, maka

secara acak (random) , misalnya p dan q.


2. Kalikan ke dua bilangan tersebut, n = pq.
3. Hitung totient (n ) =(p-1)(q-1).

12317 mod 3233 = 855

4. Pilih suatu integer e, di mana 1<e< (n ) , dan


e relatif prima terhadap m.

Gambar 11. RSA

5. Hitung d, di mana de 1(mod (n ) ).


6. Bisa juga dikatakan d= e

(mod

855 2753 mod 3233

2.3. Pembuatan message digest

(n ) ).

menggunakan SHA-256

7. Kunci publik KU{n,e}.


Tanda tangan elektronik atau digital signature

8. Kunci privat KR{n,d}.

menjadi dasar untuk banyak tujuan dari kriptografi


Contoh Pembuatan Kunci

modern misalnya non-repudiation, data origin

Untuk kemudahan, contoh ini dibuat dengan

authentication, dan identification. Salah satu cara

bilangan-bilangan kecil

untuk melakukan digital signature adalah dengan

1. Pilih dua buah bilangan prima, misalnya p=61

menggunakan algoritma hash. Pesan yang akan


dikirimkan akan menjadi input dari algoritma hash

dan q=53.

dan akan menghasilkan suatu nilai yang dikenal

2. Hitung n = pq = 61 x 53 = 3233.
3. Hitung totient

(n ) =

sebagai message digest atau hash code. Hash

(p-1)(q-1) = 60 x 52 =

code ini akan dienkripsi menggunakan kunci

3120.

privat, dan hasil enkripsi ini yang akan menjadi

4. Pilih suatu integer e, di mana 1<e< (n ) , dan


e relatif prima terhadap

digital signature seseorang. Algoritma hash ini

(n )

menggunakan pesan yang panjangnya bervariasi


(M) sebagai input dan akan menghasilkan output

Kita pilih e = 17.


5. Hitung d, dimana de 1(mod (n ) ). Setelah

yaitu hash code h, di mana h adalah fungsi dari


H(M). Algoritma hash tidak menggunakan kunci

dihitung dengan algoritma extended Euclid

seperti

maka akan didapatkan d = 2753.

pada

enkripsi/dekripsi,

dan

hanya

menggunakan pesan sebagai input. Algoritma

6. Didapatkan kunci publik KU{3233,17} dan

hash tidak mengenal algoritma invers, jadi tidak

kunci privat KR{3233,2753}.

11

ada cara untuk mengembalikan hash code ke

perulangan

dalam bentuk inputnya kembali [FIPS02].

dihasilkan.

Hash code h dibuat dengan menggunakan suatu

2.3.2.

fungsi H yang mengubah input pesan M sebagai

Algoritma

berikut :

Ch( x, y, z ) dan fungsi Maj ( x, y, z ) . SHA-256

h = H(M)

yang

Fungsi yang Digunakan


SHA-256

menggunakan

fungsi

x, y

dan z . Hasil dari setiap fungsi adalah juga suatu

PUB 180. Sekarang, algoritma ini dikenal sebagai


SHA-1

code

dari 32 bit dan direpresentasikan sebagai

Hash Algorithm) yang dipublikasikan melalui FIPS

muncul

hash

setiap fungsi bekerja pada suatu word yang terdiri

cukup handal adalah dari kelompok SHA (Secure

Kemudian

adalah

menggunakan enam buah fungsi logik di mana

Fungsi hash yang berkembang dan dianggap

SHA-0.

fungsi

word 32 bit.

yang

dipublikasikan pada tahun1995 melalui FIPS PUB


Keenam fungsi tersebut adalah:

180-1. Pada tahun 2002, NIST melengkapi

Ch( x, y, z ) = ( x y ) (x z )

dengan mempublikasikan FIPS 180-2. Publikasi

Maj ( x, y, z ) = ( x y ) ( x z ) ( y z )

ini menambahkan tiga buah algoritma hash dalam


kelompok SHA yaitu SHA-256, SHA-384 dan

{ }
(x ) = ROTR (x ) ROTR (x ) ROTR (x )
256

13

22

SHA-512, yang mempunyai hash code yang lebih

{ }
(x ) = ROTR (x ) ROTR (x ) ROTR (x )
256

panjang dari SHA-1. SHA-256, SHA-384 dan

11

25

SHA-512 berturut-turut memiliki panjang hash


code 256, 384 dan 512 bit. Aplikasi dalam paper

0{256} ( x ) = ROTR 7 (x ) ROTR18 (x ) SHR 3 (x )

ini menggunakan SHA-256.

0{256} (x ) = ROTR 17 (x ) ROTR19 (x ) SHR10 (x )

2.3.1.

2.3.3.

Operasi SHA-256

Konstanta yang digunakan

Setiap algoritma di dalam SHA menggunakan 2

SHA-256 menggunakan 64 buah konstanta yang

tahap yaitu tahap preprocessing dan tahap

adalah word yang terdiri dari 32 bit. Di dalam

penghitungan hash code. Tahap preprocessing

hexadesimal, word-word ini adalah:

melakukan

penambahan

bit-bit

pada

pesan

428a2f98

71374491

b5c0fbcf

e9b5dba5

sehingga

membentuk

suatu

input

text,

3956c25b

59f111f1

923f82a4

ab1c5ed5

pengelompokkan input dalam blok-blok yang

d807aa98

12835b01

243185be

550c7dc3

terdiri dari m bit, dan pemberian nilai awal (initial

72be5d74

80deb1fe

9bdc06a7

c19bf174

value) untuk digunakan dalam penghitungan

e49b69c1

efbe4786

0fc19dc6

240ca1cc

hash. Penghitungan hash akan membuat suatu

2de92c6f

4a7484aa

5cb0a9dc

76f988da

skedul pesan (message schedule) dari input dan

983e5152

a831c66d

b00327c8

bf597fc7

menggunakan skedul pesan tersebut bersama-

c6e00bf3

d5a79147

06ca6351

14292967

sama dengan konstanta, dan word di dalam suatu

27b70a85

2e1b2138

4d2c6dfc

53380d13

fungsi, untuk secara berulang menghasilkan suatu

650a7354

766a0abb

81c2c92e

92722c85

nilai hash. Nilai hash terakhir yang dihasilkan dari

a2bfe8a1

a81a664b

c24b8b70

c76c51a3

12

d192e819

d6990624

f40e3585

106aa070

H 5(0 ) = 9b05688c

19a4c116

1e376c08

2748774c

34b0bcb5

391c0cb3

4ed8aa4a

5b9cca4f

682e6ff3

H 6(0 ) = 1 f 83d 9ab

748f82ee

78a5636f

84c87814

8cc70208

H 7(0 ) = 5be0cd19

90befffa

a4506ceb

bef9a3f7

c67178f2

SHA-256 digunakan untuk membuat suatu hash


code dari suatu pesan

2.3.4.

M , yang mempunyai

Tahap preprocessing
panjang

Panjang dari pesan yang akan jadi input fungsi

pesan

bit,

di

0 l 2 64 .

mana

hash harus kelipatan 512. Jika panjang pesan

Algoritma SHA-256 menggunakan:

adalah l bit, maka setelah bit ke l , tambahkan

1. Message schedule yang terdiri dari 64 buah


word. Satu word terdiri dari 32 bit. Message

dengan sebuah bit 1 , kemudian sisanya


tambahkan bit 0 sebanyak

schedule

k bit sehingga

ini

diberi

label

W0 , W1 , W2 .......W62 , W63 .

memenuhi l + 1 + k 448 mod 512 . Kemudian

2. Delapan buah variabel yang didefinisikan

tambahkan lagi 64 bit yang merepresentaskan

sebagai variabel

panjang pesan l direpresentasikan dalam 64 bit.

a, b, c, d , e, g dan h .

3. Suatu nilai hash yang terdiri dari delapan

Jadi panjang dari input akan menjadi tepat


kelipatan 512. Input akan dikelompokan dalam

word.

N buah blok yang terdiri dari 512 bit. Blok-blok

H 0(i ) , H 1(i ) , H 2(i ) , H 3(i ) .......H 7(i ) . Hash value ini

tersebut

adalah

M (1) , M (2 ) , M (3) ......., M ( N ) .

Setiap

word

diberi

akan berisi initial hash value

label

H (0 ) . Setelah

Blok 512 bit bisa juga dinyatakan sebagai 16 buah

satu proses akan digantikan dengan hash

word dan tiap word terdiri dari 32 bit, maka 32 bit

value

pertama dalam blok ke- i bisa dituliskan sebagai

hash value yang final yaitu

M 0(i ) , 32 bit kedua bisa dituliskan M 1(i ) sampai


dengan 32 bit terakhir sebagai
penghitungan

hash

dilakukan,

diberikan Initial Hash Value,

H (N ) .

4. SHA-256 juga menggunakan dua buah word

M 15(i ) . Sebelum
maka

H (i ) dan seterusnya diakhiri dengan

yaitu

T1 dan T2 .

Hasil akhir adalah hash code yang mempunyai

harus

panjang 256 bit.

H (0 ) .

2.3.5.

Pada SHA-256, digunakan delapan word sebagai

Penghitungan hash value S-256

SHA-256 menggunakan fungsi dan konstanta

berikut:

yang

H 0(0 ) = 6a 09e667

sudah

disebutkan

sebelumnya.

Penjumlahan + adalah penjumlahan modulo

2 32 .

H 1(0 ) = bb67 ae85

Setelah tahap preprocessing selesai, maka setiap

H 2(0 ) = 3c6ef 372

blok pesan

H 3(0 ) = a54 ff 53a

diproses secara berurutan menggunakan langkah

H 4(0 ) = 510e527 f

berikut:

13

M (1) , M (2 ) , M (3) ......., M ( N ) akan

Untuk i = 1 sampai N :

H 2(i ) = c + H 2(i 1)

H 3(i ) = d + H 3(i 1)

1. siapkan message schedule

{Wt }:

H 4(i ) = e + H 4(i 1)

(i )

Mt
0 t 15
Wt = {256}
{256}

(
W
)
+
W
+

(
W
)
+
W
16
t 63
t 2
t 7
0
t 15
t 16
1

2. variabel

H 5(i ) = f + H 5(i 1)
H 6(i ) = g + H 6(i 1)

a, b, c, d , e, g dan h diberi nilai

H 7(i ) = h + H 7(i 1)

awal, dengan hash value ke- i berikut:

a = H 0(i 1)
}

b = H 1(i 1)
c = H 2(i 1)

Setelah menjalankan penghitungan pada butir 1

d = H 3(i 1)

sampai dengan butir 4 sebanyak

N kali sampai

dengan blok input yang terakhir,

e = H 4(i 1)

maka akan

dihasilkan hash value atau message digest yang

f = H 5(i 1)

panjangnya 256 bit dari pesan M.

g = H 6(i 1)

Hash code tersebut adalah:

(i 1)

h = H7
3. untuk

H 0( N ) H 1( N ) H 2( N ) H 3( N ) H 4( N ) H 5( N ) H 6( N ) H 7( N ) .

t = 0 sampai 63 :

{
{256}

T1 = h + 1
{256}

T2 = 0

(e) + Ch(e, f , g ) + K t{256} + Wt

(a ) + Maj (a, b, c)

Public Key Authority

Baik pada kriptografi simetris maupun kriptografi


asimetris ada penggunaan kunci yang harus

h=g

diketahui oleh kedua belah pihak yang saling

g= f

berkomunikasi. Pada kriptografi simetris, ada

f =e

sebuah kunci rahasia yang digunakan untuk

e = d + T1

enkripsi dan dekripsi, dan harus diketahui oleh

d =c

kedua pihak. Pada kriptografi asimetris, ada kunci

c=b

privat yang dipegang hanya oleh pemiliknya dan

b=a

kunci

a = T1 + T2

publik

yang

harus

diketahui

oleh

pasangannya. Key Management atau manajemen

}
4. Hitung hash value ke- i

2.4.

kunci dan Key Exchange atau Pertukaran Kunci

H (i ) :

adalah cara bagaimana mengatur agar kunci itu

H 0(i ) = a + H 0(i 1)

bisa sampai ke pihak penerima dengan aman.

H 1(i ) = b + H 1(i 1)

14

Key exchange atau pertukaran kunci diperlukan

komputer lain menyimpan kunci publiknya. Lihat

untuk mempublikasikan atau mendistribusikan

Gambar 12.

kunci rahasia pada kriptografi simetris dan kunci


publik pada kriptografi asimetris ke pada pihak

2.5.

yang memang membutuhkan menggunakan kunci

Pengkodean

tersebut.

pengkodean untuk bisa mengirimkan suatu file

Ada beberapa macam cara mempublikasikan

melalui Internet mail. Mail hanya didesain untuk

kunci publik :

mengirimkan

mempublikasikan kunci publik secara terbuka

macam data harus bisa dikonversi menjadi format

mempublikasikan

ASCII.

kunci

publik

melalui

Pengkodean Basis 64
basis

64

format

Base64

adalah

ASCII

adalah

suatu

sehingga

suatu

cara

semua

cara

untuk

directory tertentu

mengkonversi segala macam format data menjadi

menggunakan public key authority

ASCII. Dasarnya adalah mengubah pengkodean

menggunakan public key certificate

8 bit menjadi pengkodean 6 bit. 3 buah karakter


yang tersusun dari 8 bit diubah menjadi 4 buah

Aplikasi ini menggunakan Public Key Authority

karakter yang tersusun dari 6 bit, dan dikirimkan

Server sebagai cara pertukaran kunci. Semua

melalui Internet dengan pengkodean 6 bit.

kunci publik disimpan di suatu file atau directory


dan dikelola oleh seorang penanggungjawab atau

3.

seorang pengelola. Permintaan seseorang untuk

Perkembangan dan penggunaan yang luas dari

mengetahui kunci publik seseorang dilakukan

aplikasi e-commerce saat ini menuntut suatu

dengan menggunakan kunci publik dari pengelola

algoritma

directory.

keamanan dan kerahasiaan data yang digunakan.

Peminta

mengirimkan

permohonan

Kriptografi di dalam Aplikasi .NET

pengamanan

melindungi

yang dienkripsi dengan menggunakan kunci

Microsoft

publik pengelola kepada pengelola. Pengelola

pengamanan data pertama kali pada tahun 1996

akan melakukan dekripsi permohohon dengan

dengan nama Cryptography API (Crypto API).

menggunakan kunci privatnya sendiri. Informasi

Kebutuhan

yang dibutuhkan yaitu kunci publik yang diminta

berkembang

beserta informasi lain yang dibutuhkan akan

memperkenalkan

dikirimkan oleh pengelola dengan menggunakan

seperti System.Security.Cryptography namespace

kunci privat. Pemohon akan bisa membaca

dari Microsoft .NET common langauge runtime

dengan menggunakan kunci publik pengelola.

(CLR).

Jelas ini lebih aman karena sudah ada peranan

memungkinkan suatu program mengakses suatu

kriptografi yaitu adanya enkripsi dan dekripsi.

layanan kriptografi sehingga bisa melengkapi

(www.microsoft.com/technet,Sta03)

suatu

Authority

Server

yaitu

data

dengan

terus

Microsoft

layanan

Cryptography

data,

yang

mendorong
sistem

sistem

kriptografi

Namespace

kemampuan

menjamin

integritas

tempat
3.1.

15

Cryptography Namespace

ini

enkripsi

melakukan digital signature dan certificates.

Pada aplikasi ini, sebuah komputer dijadikan


Key

memperkenalkan

pengamanan

aplikasi

dekripsi

Public

telah

untuk

data,

Fungsi utama dari Cryptography namespace ini


adalah

untuk

menyediakan

classes

yang

SymmetricAlgorithm

menerapkan algoritma pengamanan data seperti

DES

enkripsi dan pembuatan hash. Pada hirarkinya

DESCryptoServiceProvider

yang tertinggi, Cryptography Namespace bisa


dikelompokkan

dalam

empat

bagian.

RC2

Lihat

RC2CryptoServiceProvider

Gambar 12.

Rijndael
RijndaelManaged

Division

Description

Encryption
Algorithm

A set of classes used to implement both symmetric and


asymmetric encryption and hash algorithms

Helper
Classes

Classes used to generate random numbers, perform


conversations, interact with Crypto API store, and actually
perform the encryption using a stream-based model

X.509
Certificates

Classes defined in the


System.Security.Cryptography.X509Certificates
namespace used to represent digital certifictes

XML Digital
Sugnatures

Classes defined in the System.Cryptography.Xml


namespace used to represent digital signatures in XML
documents

TripleDES

Gambar 12. Komponen Kriptografi


//msdn.microsoft.com/msdnmag)

TripleDESCryptoServiceProvider

Gambar 13. Symmetric Algorithm


//msdn.microsoft.com/msdnmag)

(dari

Tipe algoritma pengamanan data kedua dikenal


sebagai asymmetric algorithm atau algoritma
asimetris.
Signature

Algoritma
Algorithm

ini

mencakup

(DSA)

dan

Digital

RSA

yang

mendapatkan nama dari pengembangnya yaitu

(dari

Ron Rivest, Adi Shamir dan Len Adleman [JJ89].

Algoritma ini diterapkan dengan menggunakan

Asymmetric algorithm menggunakan sepasang

pola yang bisa diperluas yang terdiri dari dua

kunci, yaitu sebuah kunci privat dan sebuah kunci

tingkatan (inheritance). Tingkatan pertama adalah

publik.

suatu

abstract

base

class

seperti

AsymmetricAlgorithm atau HashAlgorithm yang


menentukan tipe algoritma. Tingkatan kedua
diambil dari tingkatan di atasnya dan melengkapi
dengan public interface untuk algoritma tersebut.

3.2.

Gambar 14. Asymmetric Algorithm


//msdn.microsoft.com/msdnmag)

Algoritma Enkripsi

(dari

Seperti terlihat pada Gambar 12, salah satu


algoritma enkripsi yang ada pada Cryptography

Tipe algoritma pengamanan data ketiga adalah

Namespace

hash algorithm. Algoritma hash ini menghitung

algorithm

adalah

atau

symmetric

cryptographic

algoritma kriptografi

simetris.

suatu nilai yang dikenal sebagai hash code atau

Dinamakan demikian karena digunakan satu

digest dari data yang akan dikirimkan. Hash code

kunci yang sama untuk enkripsi dan dekripsi.

ini akan dikirimkan bersamaan dengan data. Pada

Symmetric cryptographic algorithm ini mencakup

penerima, hash code ini bisa dihitung lagi. Jika

Data Encryption Standard (DES), RC2, Rijndael

kedua hash code ini sama berarti tidak ada

dan Triple Data Encryption Standard (TripleDES).

perubahan

data,

jika

perubahan

data.

Algoritma

16

berbeda

berarti

hash

ini

ada
juga

digunakan sebagai dasar untuk pembuatan digital

pembuatan

signature. Cryptography namespace berisi class

menggunakan RSA, kriptografi asimetris yaitu

yang diberi nama HashAlgorithm yang berisi

RSA,

algoritma MD5, SHA1, SHA256, SHA384 dan

pembuatan hash code menggunakan SHA-256.

SHA512. Algoritma MD5 menghasilkan hash code

Pertukaran kunci dilakukan dengan membuat

sepanjang 128 bit dan SHA1 menghasilkan hash

salah satu komputer menjadi Public Key Authority

code sepanjang 160 bit. Algoritma yang lain

Server.

menghasilkan

hash

code

yang

kunci

privat

penggunaan

dan

digital

kunci

publik

signature

dan

mempunyai

panjang sesuai namanya. Bertambah panjang


(1)

suatu hash code maka bertambah aman algoritma

(2)
PKA Server

File Server

tersebut dan akan lebih kebal terhadap bruceforce attack.

HashAlgorithm
KeyedHashAlgorithm

(3)

HMACSHA1

Client

MACTripleDES

Gambar 16. Konfigurasi PKA Server File

MD5

Server - Client

MD5CryptoSeviceProvider

SHA1
SHA1CryptoServiceProvider

Pada gambar 16, ada 3 buah komputer yang akan

SHA1Managed

saling berkomunikasi. Komputer 1 adalah sebuah

SHA256

Public

SHA256Managed

Key

Authority

Server

atau

disingkat

sebagai PKA Server. Seperti sudah diterangkan

SHA384

sebelumnya, PKA Server menyimpan semua

SHA384Managed

kunci publik agar bisa didapatkan oleh pihak yang

SHA512

ingin

SHA512Managed

saling

berkomunikasi.

Client

akan

mengirimkan suatu file ke File Server. File ini

Gambar
15.
Hash
Algorithm
//msdn.microsoft.com/msdnmag)

akan

(dari

dienkripsi

dengan

enkripsi

AES,

ditandatangani dengan SHA-256 dan RSA. Kunci


publik yang dibutuhkan akan diperoleh dari PKA

4.

Server. Di File server, identitas pengirim dan

Rancangan dan Implementasi

keutuhan file akan diperiksa. Kemudian akan ada

Sebagai ilustrasi penggunaan kriptografi modern

konfirmasi dari File Server ke Client.

di kehidupan nyata, maka tulisan ini akan


dilengkapi dengan aplikasi untuk mengirimkan
suatu

file

melalui

jaringan

yang

Urut-urutan aplikasi:

mencakup

1. Masing-masing komputer yaitu File Server,

penggunaan berbagai macam kriptografi. Ada


penggunaan

kriptografi

simetris

yaitu

Client

AES,

17

dan

PKA

Server

akan membuat

sepasang

kunci

publik

dan

7. Kunci rahasia AES pada butir 5 akan

privat

dienkripsi menggunakan algoritma RSA. Ini

menggunakan algoritma RSA.


2. Agar bisa terdistribusi ke pada pihak yang

berarti

kunci

rahasia

ini

dienkripsi

memerlukan, maka File Server dan Client

menggunakan kunci publik milik File Server

akan menyimpan kunci publik masing-masing

yang didapatkan dari PKA Server.

di PKA Server.

8. Kunci rahasia yang sudah dienkripsi pada


butir 6 akan disambungkan dengan file yang
sudah dienkripsi pada butir 5.
9. File pada butir 7 akan diubah ke dalam
pengkodean base64.
10. File dikirimkan ke File server.

Gambar 17. Proses di Client


3. Client akan mengirimkan suatu file ke File
Server.

Dengan

menggunakan

algoritma

SHA-256, client akan membuat message


digest atau hash code dari plaintext.
4. Client

akan

mengenkripsi

hash

code
Gambar 18. Proses di File Server

menggunakan kunci privat miliknya untuk


menghasilkan

digital

signature.

Digital

11. File server akan melakukan pengkodean

signature ini akan disambungkan pada file

kembali dari base64 ke biner.

yang akan dikirimkan.

12. File Server akan melakukan dekripsi kunci

5. Client akan membuat kunci rahasia untuk


melakukan

enkripsi

file

rahasia AES menggunakan kunci privat.

menggunakan

13. Kunci

algoritma AES.

rahasia

digunakan

6. Client meminta kunci publik File Server dari

hasil

untuk

dekripsi

dekripsi

butir

file

11

dengan

algoritma AES.

PKA server dan kemudian PKA server akan

14. File Server meminta kunci publik Client dari

mengirimkan kunci publik yang dienkripsi

PKA server. PKA server akan mengirimkan

RSA menggunakan kunci privat PKA Server.

kunci

Client akan membuka menggunakan kunci

menggunakan kunci privat PKA Server. File

publik PKA Server.

18

publik

yang

dienkripsi

RSA

Server akan membuka menggunakan kunci

COME06

publik PKA Server.

Douglas E. Comer, Internetworking


with TCP/IP Principles, Protocols and

15. Hasil dari butir 13 adalah plaintext disambung

Architecture Volume1, Prentice Hall,

dengan digital signature client. File Server

2006

akan melakukan dekripsi digital signature


menggunakan

kunci

publik

milik

JJ89

Client.

Jeniffer

Seberry,

Cryptography:

Hasilnya adalah hash code(*).

Josef

An

Pieprzyk,

Intrduction

to

Computer Security

16. Dari plaintext yang diterima dibuatkan hash


code menggunakan SHA-256.
KAHN96

17. Hash code yang dihitung oleh file server dan


hash

code(*)

yang

diterima

dari

Kahn, D. The Codebreakers: The


Story of secret writing. New

client

York:Scribner, 1996

diperbandingkan. Jika keduanya sama, maka


KONH81

data integrity dan authentication terpenuhi.

Alan G. Konheim, Cryptography, A


Primer, John Wiley & Sons, Inc 1981

Artinya file tidak mengalami perubahan dan


MOV96

identitas pengirim terpenuhi. File Server akan

A. Menezes, P. van Oorschot, and S.


Vanstone,

mengirimkan pernyataan kepada client bahwa

Handbook

of

Applied

Cryptography, CRC Press, 1996.

file telah diterima dengan baik, sebaliknya jika


hash code dan hash code(*) tidak sama,
maka

file

ini

akan

ditolak.

Ada

MSW05 Mohammad

A.

Musa,

Edward

F.

Schaefer, Stephen Wedig, A Simplified

kemungkinannya, terjadi perubahan pada isi

AES Algorithm And Its Linear And

file atau pengirim tidak teridentifikasi.

Differential Cryptanalyses, 2005


5.

Kesimpulan
Scha96 Edward F. Schaefer, A simplified Data

Dalam makalah ini, kami telah menjelaskan teknik

Encryption Standard algorithm, 1996

kriptografi modern untuk menyediakan layanan


dasar

keamanan

informasi

yaitu

kriptografi

simetris yaitu Advanced Encryption Standard

Schn96 Bruce Schneier, Applied Cryptography,

(AES) dan kriptografi asimetris yaitu RSA serta

Protocols, Algorithms, and Source Code

message digest SHA-256. Ketiga teknik ini dan

n C, 1996

didukung

dengan

pengelolaan

kunci

Sha49

dapat

Shannon

Claude,

diterapkan pada bahasa pemrograman .NET

Theory

untuk

Systems Technical Journal No. 4, 1949

membangun

aplikasi

pengiriman

data

of

Communication

Secrecy

Systems.

Bell

teramankan.
Sta03

6.

Network

Daftar Kepustakaan

FEBR04

Willam Stallings,

Cryptography and

Security,

Principles

and

Practices, 2003

Jack Febrian, Pengetahuan Komputer


dan Teknologi Informasi
Sta04

William Stalling, Data and Computer


Communications, 2004

19

RFC 2313 - PKCS #1: RSA Encryption Version


Tan03

Andrew

S.

Tanenbaum,

Computer

1.5

Networks, 2003
RFC 2437 - PKCS #1: RSA Cryptography
CCITT

Specifications Version 2.0

Data Communication Networks: Open


System Interconnection (OSI); Security,
Structure

and

Applications.

Architecture

For

Open

RFC 2828 : Internet Security Gloassary

Security
Systems

Mihir Bellare, Tadayoshi Kohno: Hash Function

Interconnection For CCITT Applications.

Balance and Its Impact on Birthday

Recommendation X.800. Geneva, 1991.

Attacks. EUROCRYPT 2004


Adam Berent

AES

(Advanced

Encryption
Gary C. Kessler, An Overview of Cryptography

Standard) Simplified

1998
FIPS99 FIPS PUB 46-3

Specifications

HEBE Shireen J. Hebert A Brief History of


Cryptography
http://www.cybercrimes.net/Cryptography/
Articles/Hebert.html

For The Data Encryption Standard


(DES), October 25, 1999
FIPS02 FIPS PUB 180-2 Announcing the

FIPS94

FIPS01

SECURE HASH STANDARD, August 1

Guide, Architecture for Public-Key Infrastructure

2002

(APKI) Draft 1 The Open Group, May 1997

FIPS PUB 186

Announcing

Rob95

the

M.J.B. Robshaw , Stream Ciphers, RSA

Standard for Digital Signature Standard

Laboratories Technical Report TR-701,

(DSS), May 19, 1994

Version 2.0 July 25, 1995

FIPS PUB 197


ADVANCED

JJ89

Announcing the

Jeniffer

Seberry,

Cryptography:

ENCRYPTION

An

Computer Security

STANDARD (AES), November 26, 2001

Diffie-Hellman Key Exchange and ElGamal


Stefan Lucks, Attacking Triple Encryption. Fast
Software Encryption 1998

20

Josef

Pieprzyk,

Intrduction

to

Você também pode gostar