PENYANDIAN NOMOR KARTU KREDIT UNTUK KEAMANAN TRANSAKSI ONLINE


PENYANDIAN NOMOR KARTU KREDIT UNTUK KEAMANAN

TRANSAKSI ONLINE
oleh : Agus Suhanda

( 30108116 )

Fakultas Ilmu Komputer

Univesitas Gunadarma

2009

Abstrak
Makalah ini membahas tentang salah satu cara yang dapat dilakukan untuk meningkatkan keamanan dalam
transaksi online yang menggunakan kartu kredit.  Dalam beberapa transaksi online, untuk melakukan
transaksi yang berbasiskan kartu kredit hanya dibutuhkan nomor  dan masa berlaku kartu tersebut. Hal
inilah yang dirasa tidak aman oleh sebagian orang karena validasi yang ada sangat minim dan mungkin
didapatkan oleh orang lain. Untuk itulah diperlukan salah satu cara untuk menaggulanginya.
Kartu-kartu kredit yang ada sekarang berbasiskan pada algoritma cek Luhn, sehingga untuk mendapatkan
nomor kartu kredit yang valid bukanlah sesuatu hal yang sukar untuk dilakukan. Seseorang bisa
melakukan algoritma
brute-force attack
untuk mendapatkan nomor yang valid berdasarkan algoritma cek
Luhn tersebut.
Dengan membuat
generate code
berbasiskan algoritma cek Luhn dan menggunakan
sosial engineering
seseorang bisa mendapatkan nomor kartu kredit yang valid sekaligus masa berlaku kartu tersebut. Tentu
saja hal ini memungkinkan seseorang untuk menggunakan kartu yang bukan miliknya untuk dimanfaatkan.
Oleh karena itu dibutuhkan cara lain guna mengurangi penyalah gunaan terhadap kartu.
Kata  kunci
:
algoritma Luhn,
sosial engineering,
kartu kredit, enkripsi, PIN,
brute-force
, chiperteks,
plainteks.
1. Pendahuluan
Adapun cara untuk dapat bertransaksi
berbasiskan kartu kredit ini, seseorang
Kemajuan teknologi informasi dan tuntutan
membutuhkan nomor kartu dan masa berlaku
zaman yang serba instant menimbulkan satu tren
yang valid. Tentu saja hal ini sangat
baru dalam dunia perdagangan. Dahulu kala jual-
memudahkan dan efisien namun dari segi
beli terjadi dalam satu majelis tempat antara
keamanan hal ini masih meragukan karena
pejual dan pembeli namun di masa kini proses
memungkinan orang lain untuk memanfaatkan
jual-beli dapat terjadi meskipun penjual dan
kartu kredit yang bukan miliknya. Untuk itu
pembeli tidak berada dalam satu majelis tempat.
diperlukan cara baru dalam proses jual-beli
Pada akhirnya, sekarang ini – proses jual-beli
online ini guna mengurangi penyalah gunaan
dapat dilakukan dengan cara
on-line
berbasikan
yang terjadi
.
kartu kredit.
2.  Kartu Kredit dan Algoritma Luhn
Kartu kredit adalah kartu yang diterbitkan oleh
perusahaan yang memberikan jasa kredit dalam
artian memberikan kemudahan dalam proses
2.1 Kartu Kredit
peminjaman uang untuk nasabahnya.
Konsep penggunaan kartu dalam transaksi
perbankan sebenarnya telah dikenal lebih dari 67
Setiap kartu kredit akan mempunyai nomor-
nomor peng enal yang  mewakili k artu tersebut.
tahun yang lalu. Meski demikian, teknologi
tinggi baru muncul sekitar dekade 1970-an. Pada
Nomor-nomor tersebut merupakan angka-angka
yang tersusun berdasarkan algoritma Luhn.
masa ini muncul pertama kali mesin ATM yang
menandai transaksi perbankan yang ditunjang
oleh teknologi telekomunikasi secara on line
15   Amex
untuk semua nasabah selama 24 jam. Tiga puluh
16   JCB
tahun kemudian, gaya transaksi elektronik ini
13/16   Visa
menjad i gaya hidup lebih dari 90 persen
transaksi perbankan di negara – negara maju.
16   MasterCard
16   Bankcard
Berikut ini sejarah perkembangan layanan kartu
16   Discover
kredit yang ada di dunia :
1.  Tahun 1924, Konsep penggunaan kartu
Untuk dapat memastikan bahwa nomor yang
dalam transaksi perbankan telah mulai
tertera pada kartu kredit itu valid dapat dilakukan
diperkenalkan. Beberapa tahun kemudian
dengan  3 langkah yaitu :
metode pemakaian kartu ini diikuti oleh 100
buah bank di seluruh dunia.
•  untuk setiap digit pada posisi yang ganjil
kalikan nilainya dengan dua, jika hasilnya
2.  Tahun 1950, Dinners Club dan American
lebih dari 9, kurangi hasilnya dengan 9.
Express menjadi kartu yang menggunakan
Jumlahkan semua angka yang telah didapat
plastik pertama.
itu.
3.  Tahun 1958, American Express
•  untuk setiap digit pada posisi genap,
menawarkan kartu untuk pasar travel dan
jumlahkan semua nilainya dan tambahkan
entertainment.
hasilnya dengan hasil langkah pertama.
4.  Tahun 1966, Bank of Amerika menawarkan
•  jika hasil pada langkah kedua habis dibagi
lisensi Kartu Amerika Bank ke bank – bank
10, berarti nomor kartu tersebut sah.
lain untuk membuat kartu pembayaran.
Langkah-langkah inilah yang disebut dengan
5.  Tahun 1969, ATM (Automatic Teller
algoritma Luhn.
Machine) pertama muncul di Inggris.
Sebagai contoh, misalkan sebuah kartu memiliki
6.  Tahun 1970, Ide pembuatan kartu kredit
nomor :
5541-9734-4563-1272
diterima secara luas.
Maka didapatkan digit-digit Ganjilnya  adalah:
7.  Tahun 1977, Bank Americard memberi
lisensi kartu kredit yang dipusatkan bersama
5 4 9 3 4 6 1 7
secara resmi dibawah nama Visa.
Sedangkan digit-digit Genapnya:
8.  Tahu n 1995, Lebih dari 90 persen transaksi
perbankan di Amerika dilakukan secara
5 1 7 4 5 3 2 2
elektronik.
Untuk mengecek, keabsahan nomor kartu
2.2 Algoritma Luhn
tersebut maka digunakan metode yang telah
disebutkan diatas.
Nomor-nomor yang mewakili kartu kredit terdiri
atas beberapa digit tergantung pada perusahaan
Langkah pertama :
yang mengeluarkannya, namun angka-angka
tersebut semuanya berdasarkan pada algoritma
5 x 2 = 10 (* Lebih dari 9 – kurangi dengan 9 *)
cek Luhn.
= 1
4 x 2 = 8
Berikut ini daftar jumlah digit kartu berdasarkan
9 x 2 = 18 (* Lebih dari 9 – kurangi dengan 9 *)
perusahaan yang mengeluarkannya :
= 9
3 x 2 = 6
Panjang nomo r
Jenis Kartu
4 x 2 = 8
6 x 2 = 12 (* Lebih dari 9 – kurangi dengan 9 *)
15   JCB
= 3
14   Diners
1 x 2 = 2
Jumlah = 42
7 x 2 = 14 (* Lebih dari 9 – kurangi dengan 9 *)
= 5
Langkah ketiga :
Jumlah = 1+9+6+8+3+5 = 32
Jumlah = 38 + 42 = 80
Langkah kedua :
80 mod 10 == 0;
Jumlah = 5 + 1 + 7 + 4 + 5 + 3 + 2 + 2 = 29
Berdasarkan cek Luhn maka
nomor tersebut
valid.
Artinya nomor seri tersebut
Langkah ketiga :
memungkinkan sebagai nomor seri dari sebuah
kartu kredit.
Jumlah = 32 + 29 = 63
Contoh di atas merupakan contoh pengecekan
63 mod 10 != 0;
nomor kartu dengan jumlah digit genap. Untuk
kartu yang jumlah digit nya ganjil, caranya sama,
Nomor tersebut tidak valid, karena  tidak
hanya saja pada langkah pertama yang dikalikan
memenuhi algoritma Luhn, sehingga dapat
adalah digit pada posisi genap, dan pada langkah
dipastikan bahwa tidak ada kartu kredit yang
kedua yang dijumlahkan adalah digit pada posisi
memiliki seri pengenal
5541-9734-4563-1272.
ganjil.
Sebagai contoh berikutnya, didapatkan bahwa
Contoh  : Sebuah kartu memiliki nomor :
Kartu lainnya memilik i nomor :
123406789101113
yang kita harus cek
kebenaran nomornya. Maka berdasarkan
7889-8594-5435-5413
algoritma cek Luhn untuk kartu kredit dengan
jumlah digit ganjil. Maka
Maka digit-digit ganjilnya adalah
Langkah 1 :
Digit-digit genapnya adalah 2,4,6,8,1,1,1
7 8 8 9 5 3 5 1
2 * 2 = 4
4 * 2 = 8
Langkah pertama :
6 * 2 = 12 (* Lebih dari 9 – kurangi dengan 9 *)
= 3
7 x 2 = 14 (* Lebih dari 9 – kurangi dengan 9 *)
8 * 2 = 16 (* Lebih dari 9 – kurangi dengan 9 *)
= 7
= 5
8 x 2 = 16 (* Lebih dari 9 – kurangi dengan 9 *)
1 * 2 = 2
1 * 2 = 2
= 7
8 x 2 = 16 (* Lebih dari 9 – kurangi dengan 9 *)
1 * 2 = 2
Jumlah : 28
= 7
9 x 2 = 18 (* Lebih dari 9 – kurangi dengan 9 *)
Langkah 2 :
= 9
5 x 2 = 10 (* Lebih dari 9 – kurangi dengan 9 *)
Jumlah : 1 + 3 + 0 + 7 + 9+0+1+3 = 22
= 1
3 x 2 = 6
Langkah 3
Jumlah 22+28 = 50
5 x 2 = 10 (* Lebih dari 9 – kurangi dengan 9 *)
= 1
50 mod 10 = 0
1 x 2 = 2
Kesimpulan, nomor tersebut valid.
Jumlah = 38
Langkah kedua :
2.2.1 Mendapatkan Nomor yang Valid
Digit-digit Genap :
Berdasarkan algoritma luhn tersebut kita dapat
mengenerate code untuk mendapatkan nomor
8 9 5 4 4 5 4 3
yang valid. Kita hanya perlu membuat
algoritmanya dalam bahasa pemrograman
tertentu, memasukkan input, mencek secara
function isValidInput(s){
traversal dan menampilkan  semua nomor yang
for (i = 0; i < s.length; i++){
valid.
var i;
if ((s.charAt(i) < “0”) || (s.charAt(i) >
“9”))
Masukan yang memungkinkan adalah
return false;
}
00000000000000
return true;
00000000000001
}
//membatasi angka agar tidak lebih dari 9
99999999999999
function fix(num){
if (num <= 9) return num; else return (num
Berdasarkan teori komb inarorial didapatkan
– 9);
bahwa masukan yang harus di test sebanyak
}
(10
) jika jumlah digit 16, Didapat dari
1 6
//untuk mengecek kebenaran dengan ‘luhn check
10  * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10
digit algorithm’
* 10 * 10 * 10 * 10 * 10 * 10 =  (10
)
16
function check(number){
var i;
10 = Jumlah element  (0,1,2,3,4,5,6,7,8,9)
var ganjil;
var genap;
Untuk masukan sebesar ini tentu membutuhkan
var tanda;
waktu komputasi yang sangat lama, jika
dimisalkan komputer yang digunakan untuk
genap = 0;
mengenerate mampu menjalankan masukan
ganjil = 0;
berukuran n dalam waktu (10
) x  (2
) detik
-4
n
//tanda = 1 artinya jumlah digitnya ganjil
maka waktu yang dibutuhkan adalah  (10
) x
-4
if (number.length % 2) tanda = 0; else
(2
) detik. Waktu yang sangat lama, oleh
1 0^ 1 6
tanda = 1;
karena itu masukan harus dibatasi.
for (i = 0; i < number.length; i++) {
if ((i + tanda) % 2) //ganjil
Berikut ini adalah contoh program untuk
ganjil += fix(2 *
mengecek kebenaran nomor kartu kredit dan
(number.charAt(i)));
mnampu mencari nomor kartu yang benar yang
else
terdekat dari nomor kartu yang salah dalam
genap +=
bahasa Javascript.
parseInt(number.charAt(i), 10);
}
<script
return (((ganjil + genap) % 10) == 0);
type=”text/javascript”>
}
//menghilangkan spasi dan ‘-‘ baik di awal, di
//fungsi utama
tengah maupun di akhir string
function validateInput(inp){
function trimSpaces(s){
var tmp;
var res;
var Msg;
var i;
var Msg2;
res = “”;
tmp = trimSpaces(inp.nomor.value)
for (i = 0; i < s.length; i++){
if ((tmp == “”) || (!isValidInput(tmp))){
if ((s.charAt(i) != ” “) && (s.charAt(i)
alert(“Data yang Anda masukkan
!= “-“))
salah, baca keterangan”);
res += s.charAt(i);
return false;
}
}
return res;
Msg = “Menurut Algoritma Check Digit
}
Luhn angka tersebut “;
Msg2 = “sebagai angka kartu kredit”;
//mengembalikan benar jika input yang
if (check(tmp))
diberikan benar (semuanya angka)
//string dianggap telah dilewatkan ke trimSpaces

alert(Msg + “\n\nVALID\n\n” +

nama-nama nasabah yang mempunyai rekening
Msg2);
di atas 1 milyar lebih baik mencari tahu, mana
else
toko kue langganan bank kemudian mencari tahu
alert(Msg + “\n\nTIDAK VALID\n\n”
siapa-siapa  yang mendapat kiriman dari  pihak
+ Msg2);
bank.
return false;
}
2.3.1 Memanfaatkan Social Engineering
//mencari beberapa angka valid yang d ekat
Untuk dapat membatasi masukan yang besar,
dengan nomor yang d iberikan
seseorang bisa menggunakan teknik social
function findN(formName){
engineering . Hal ini mungkin dilakukan dengan
var start;
cara membuat kartu kredit di bank tertentu untuk
var startn;
mendapatkan nomor kartu lainnya yang
var res;
berdekatan dengan nomor kartu yang dia dapat.
var i;
Nomor kartu yang dikeluarkan oleh pihak yang
start =
berhak  secara bersamaan kemungkinan memiliki
trimSpaces(formName.nomor.value);
masa berlaku yang sama.
if ((start == “”) || (!isValidInput(start))){
alert(“Data yang Anda masukkan
Sebagai contoh, kartu kredit yang dikeluarkan
salah, baca keterangan”);
oleh pihak produsen untuk sekelompok
return;
mahasiswa di salah satu perguruan tinggi atau
}
sejumlah karyawan disuatu perusahaan memiliki
res = “Hasil :\n”;
jumlah digit 16 dan memiliki masa berlaku yang
startn = parseInt(start,10);
sama. Namun untuk setiap kartu, 12 digit
for (i=-50; i<100; i++)  {
pertamanya selalu diawali dengan 5265 2323
num = “” + (parseInt(start,10)+i);
6113 2946 dengan 4 digit random yang
if (check(num)) {
mengikuti. Oleh karena itu, tentu untuk
res += (startn + i) + “\n”;
mendapatkan nomor kartu sekelompok
}
mahasiswa atau pekerja tersebut seseorang hanya
}
perlu melakukan generate code dengan masukan
formName.hasil.value = res;
5265 2323 6113 2946 0000 sampai dengan 5265
}
2323 6113 2946 9999 hal ini akan mempercepat
//
proses komputasi karena kemungkinan
//akhir skrip di sini
masukannya sekarang tinggal 10 x 10 x 10 x 10
//
= 10
4
//——————————————————->
</script>
3.  Ketidak Amanan Transaksi Berbasis
Kartu Kredit
2.3 Membatasi Masukan
Seperti telah dipaparkan pada bagian
pendahuluan, meskipun mudah dan efisien,
2.3.1 Social Engineering
penggunaan kartu kredit dalam pembayaran
transaksi online masih tergolon sangat riskan.
Sosial engineering
adalah perform psikologis
untuk mempengaruhi dan mencoba
Sebagai contoh kasus, sebuah LSM memberi
mengiden tifikasi sebuah masalah  atau dalam hal
kesempatan kepada masyarakat untuk dapat
ini lawan. Ini adalah seni didalam dunia elektron.
beramal. Agar mempermudah masyarakat dalam
beramal, LSM tersebut memberikan kesempatan
Sebagai contoh, seseorang ingin mendapatkan
kepada masyarakat untuk menyalurkan amalnya
nama-nama nasabah bank yang mempunyai
melalui SMS dengan cara mengetikkan
rekening dengan saldo mininim 1  milyar.
Sebagai tambahan, setiap nasabah yang memiliki
”REG<spasi>nomor_kartu_kredit
rekening di atas 1 milyar setiap bulannya akan
<spasi>masa_berlaku_kartu<spasi>jumlah_ua
mendapat kue ucapan terimakasih dari pihak
ng#”.
bank. Daripada melakukan pembobolan system
keamanan bank tersebut untuk mendapatkan

Hal ini dirasa sangat membantu karena orang

dari chiperteks tersebut hanyalah orang yang
yang ingin beramal tidak perlu repot untuk
mengetahui kunci dari penyandian tersebut.
mentransfer uang ataupun datang langsung ke
Sedangkan yang dimaksud dengan enkripsi
loket pembayaran.
adalah proses penyandian dari plainteks ke
chiperteks.
Namun bisa saja ada orang lain yang
Plainteks
mengatasnamakan seseorang untuk transaksi
tersebut dengan cara yang telah dijelaskan pada
bagian 2 makalah ini. Untuk itulah diperlukan
suatu metode baru dalam penggunaan kartu
Enkripsi
kredit sebagai alat pembayaran dalam transaksi
online.
4. Penyandian  Nomor Kartu
Chiperteks
Untuk menghindari terjadinya penyalahgunaan
kartu oleh orang lain. Maka dibutuhkan data
tambahan selain nomor kartu dan masa berlaku
Dekripsi
kartu. Data tersebut haruslah hanya  diketahui
oleh pemegang kartu dan pihak yang
mengeluarkan kartu tersebut. Salah satu yang
memenuhi adalah PIN (
Personal Identification
Plainteks
Numbers
). Namun PIN ini tidak boleh diketahui
oleh pihak lain selain pemegang kartu dan pihak
yang mengeluarkan kartu.
Bagan Proses Enkripsi- Dekripsi
Alternatif yang bisa dipakai adalah PIN ini
digunakan sebagai kunci untuk melakukan
Contoh lainnya adalah sebuah data berisikan ”
enkripsi.
PESAN SANGAT RAHASIA” mengalami
proses penyandian sehingga chiperteksnya
Cara seperti ini memang merepotkan karena
adalah ”
PHHW PH DIWHU WKH WRJD
pemilik kartu kredit harus membangkitkan
SDUWB”
nomor-nomor yang telah dienkripsi sebelumnya.
Proses penyandian ini bisa dialih tugaskan
Teknik penyandian tersebut menggunakan salah
kepada pihak penyedia kartu dengan cara
satu teknik lama yaitu
caesar chipper
. Tiap huruf
mengirim nomor kartu dan PIN kartu tersebut.
pad a plainteks disubtitusikan pada ketiga huruf
berikutnya.
Hal ini merupakan salah satu konsekuensi
karena keamanan berbanding terbalik dengan
Plainteks   : A B C D E F G H  I  J K  L M
kenyamanan.
N O P Q R S T U V W X Y Z
Chiperteks   : D E F G H I J K L M N O
4.1 Algoritma Enkripsi
P Q R S T U V W X Y Z
Sebelum membahas mengenai enkripsi, tentu
Dengan mengkodekan A sebagai 0 … Z sebagai
kita harus memahami apa yang dimaksud dengan
25 maka rumus penyandiannya d apat dipetakan
Plainteks dan Chiper Text. Secara bahasa
sebagai :
Plainteks berarti teks jelas yang dapat dimengerti
sedangkan Chiperteks adalah teks yang tersandi.
Ci = E(pi) = (pi+3) mod 26 ;
Sebagai contoh, sebuah pesan rahasia sebagai
berikut : ” Aku Sayang Kamu ” disandikan
Untuk mengembalikan menjadi plainteks semula
menjad i chip erteks men jadi ”25588
maka secara matematis persamaan
777729992664 552688”.
Pi = D(ci) = (ci-3) mod 26 ;
Orang yang membaca plainteks maka dia akan
langsung mengerti maksud dari isi tersebut
sedangkan orang yang bisa membaca maksud
Misal huruf  ”E” pada kata Pesan, E mempunyai
indeks 4 pada jajaran alfabetis akan diubah
Karena kunci dekripsi sama dengan kunci
menjadi bentuk chiperteks Ci = (4+3) mod 26 =
enkripsi maka algoritma enkripsi tersebut disebut
7 . Sehingga dalam bentuk chipertexnya menjadi
juga algoritma simetri. Jika kunci dekripsi tidak
H.
sama dengan kunci enkripsi maka algoritmanya
disebut algoritma ninsimetri.
Sebaliknya untuk mengembalikan penyandian
dari B. Dengan rumus Pi = (1-3) mod 26 = 24
Contoh dari algoritma enkripsi ninsimetri ini
sehingga  didapatkan H menjadi E.
adalah algoritma RSA. RSA adalah algoritma
yang diperkenalkan oleh (Riverst-Shamir-
Selain contoh diatas, dikenal pula enkripsi yang
Adleman). Dalam algoritma ninsimetri ini
mempunyai pola yang sama dengan
caesar
dikenal istilah kunci publik Kunci publik adalah
chipper
diatas hanya saja, setiap indeks nya
kunci enkripsi yang sifatnya diketahui oleh
digeser dengan 13. Enkripsi ini dikenal dengan
umum, kunci inilah yang dipergunakan dalam
istilah ROT13 yang umum digunakan pada
proses penyandian dari plainteks ke chiperteks.
sistem unix. Berikut adalah contoh program yang
Sedangkan untuk kunci dekripsi, hanya diketahui
menyandikan data dengan algoritma ROT13
oleh pihak yang berwenang jadi sifatnya adalah
dalam bahasa PERL yang dibuat oleh Budi
rahasia.
Raharjo
#! /usr/bin/perl
# rot13: rotate 13
# u sageL rot13 < filename.txt
# bugs: only works with lower case
#
# Copyright 1998, Budi Rahardjo
Gambar Kunci ninsimetris
# <rahard@paume.itb .ac.id>,
<budi@vlsi.itb.ac.id>
# Electrical Engineering
Adapun langkah-langkah dari Algoritma RSA
# Institut Teknologi Bandung (ITB), Indonesia
adalah sebagai berikut :
#
1.  Pilih a dan b, keduanya bilangan prima d an
while (<>) {
harus dijaga kerahasiannya.
# read a line into $_
2.  Hitung n = a x b. Nilai n tidak dirahasiakan.
for ($i=0 ; $i < length($_) ; $i++) {
3.  Hitung m = (a – 1) x (b – 1). Setelah m
$ch = substr($_,$i,1);
didapat maka a dan b dihapus (untuk
# only process if it’s within a-z
mencegah orang lain tahu)
# otherwise skip
4.  Pilih sebuah  bilangan b ulat untuk kunci
if ( (ord($ch)>=97) and (ord($ch)<=122) ) {
publik, sebut namanya e, yang relatif prima
$newch = &rot13($ch); # rotate it
terhadap m.
printf(“%c”, $newch);
5. Dapatkan kunci dekripsi, d, dengan
} else {
kekongruenan ed = 1 (mod m). Isi pesan
# just p rint character that wa s not processed
dienkripsi dengan persamaan ci = pi
mod n,
e
print $ch;
yang dalam hal ini pi adalah blok plainteks
}
(misal angka dengan indeks ke i) , ci adalah
} # end  for loop
chiperteks yang diperoleh, dan e adalah
} # done…
kunci enkripsi (kunci publik). Harus
sub rot13 {
dipenuhi persyaratan bahwa nilai pi harus
local($ch) = @_;
terletak dalam himpunan nilai 0, 1, 2, …, n –
$asch = ord($ch) – 97; # get the ascii value and
1 untuk menjamin hasil perhitung an tidak
normalize it
berada di luar himpunan.
$rotasch = $asch + 13; # rotate 13 it
6. Proses dekripsi dilakukan deng an
# send it back to ascii
menggunakan persamaan pi = cid mod n,
$rotasch = $rotasch % 26;
yang dalam hal ini d adalah kunci dekripsi.
$rotasch = $rotasch + 97;
return($rotasch);
}
Contoh  (dari contoh 21 diktat kuliah
Blok c2 didekripsikan sebagai 7761019 mod
Matematika Dikrit Informatika ITB) :
3337 = 582 = p2.
Misalkan a = 47 dan b = 71 (keduanya prima),
Blok plainteks yang lain dikembalikan dengan
maka dapat dihitung
cara yang serupa. Akhirnya kita memperoleh
n = a x b = 3337 dan m = (a – 1)x(b – 1) = 3220.
kembali plainteks semula P =
7265827332737873 yang karakternya adalah P =
Pilih kunci pu blik e = 79 (yang relatif prima
HARI INI.
dengan 3220).  Nilai e dan m dapat
dipublikasikan ke umum. Selanjutnya akan
Perhitungan perpangkatan pada proses enkripsi
dihitung kunci dekripsi d seperti yang dituliskan
(ci = pie mod n)dan dekripsi (pi = cid mod n)
pada langkah instruksi 4,
membutuhkan bilangan yang sangat besar. Untuk
menghindari penggunaan bilangan yang besar,
ed =  1 (mod m).
maka dapat digunakan penyederhanaan dengan
persamaan berikut:
Persamaan tersebut dapat dirubah menjadi
bentuk
ab mod m = [(a mod m)(b mod m)] mod m
Dalam pen ggu naan Algoritma RSA ini tidak
1 ×
+
(
k
3220
)
=
d
perlu meragukan kekuatannya dalam
79
menyandikan data selama belum ada algoritma
sehingga kunci dekripsi dengan mencoba nilai-
matematika untuk memfaktorkan bilangan non
nilai k = 1, 2, 3, …, diperoleh nilai d yang bulat
prima menjadi bilangan prima secara efisien.
adalah 1019. Ini adalah kunci dekripsi.
4.1.1   Perbandingan Algoritma Enkripsi
Misalkan plainteks
Simetri dan ninsimetri
P = HARI INI
Perbedaan prinsip dan penggunaan kriptografi
kunci publik dan algorima enkripsi simetri
atau dalam desimal ASCII:
merupakan satu kajian yang sangat luas. Akan
tetapi pada dasarnya, seperti telah d ijelaskan
7265827332737873
sebelumnya, algoritma enkripsi simetri,
mempunyai satu kunci yang sama digunakan
Pecah P menjadi blok yang lebih kecil (misal 3
untuk melakukan enkripsi dan dekripsi. Pada
digit):
sistem kunci publik , enkripsi dan dekripsi
menggunakan kunci yang berbeda.
p1 = 726
p4 = 273
p2 = 582
p5 = 787
Sejak dikembangkannya algoritma penyandian
p3 = 733
p6 = 003
kunci-publik, selalu timbul pertanyaan mana
yang lebih baik. Para pakar kriptografi
Blok  pertama dienkripsikan sebagai 72679 mod
mengatakan bahwa keduanya tidak dapat
3337 = 215 = c1.
dibandingkan karena mereka memecahkan
masalah dalam domain yang berbeda. Algoritma
Blok kedua dienkripsikan sebagai 58279 mod
enkripsi simetri merupakan hal yang baik untuk
3337 = 776 = c2.
mengenkripsi data. Dengan kelebihan dalam
proses kecepatan komputasinya. Sementara
Dengan melakukan proses yang sama untuk sisa
algoritma kunci publik (ninsimetri)  dapat
blok lainnya, dihasilkan chiperteks C = 215 776
melakukan hal-hal lain lebih baik daripada
1743 933 1731 158.
algoritma simetri, misalnya dalam hal key
management.
Proses dekripsi dilakukan dengan menggunakan
kunci rahasia d = 1019.
4.2   Algoritma Simetri sebagai Algoritma
penyandian nomor kartu
Blok c1 didekripsikan sebagai 2151019 mod
3337 = 726 = p1,
Dari penjelasan mengenai kedua bentuk dari
algoritma enkripsi tersebut, penulis lebih
cenderung untuk memilih (dalam kasus ini)
enkripsi dalam proses ini. Namun meskipun PIN
karena yang dibutuhkan dalam proses
hanya dijadikan kunci enkripsi-dekripsi
penyandian ini adalah satu validasi baru yang
sebelumnya PIN harus disand ikan terlebih
hanya diketahui oleh pihak bank dan pihak
dahu lu jug a agar tidak ada orang lain yang
pribadi yang memiliki kartu kredit. Jika
dengan memanfaatkan cara seperti seblumnya
menggunakan algoritma ninsimetri maka akan
untuk mendapatkan kunci atau dengan kata lain
ada kunci publik artinya setiap orang bisa
PIN., Maka kunci yang digunakan untuk
menyandikan, tentu hal ini tidak bermanfaat
menyandikan nomor kartu adalah kunci yang
dalam kasus ini. Namun jika menggunakan
merupakan hasil pengolahan dari PIN.
algortima penyandian simetri maka hanya dua
pihak yang berkepentingan saja yang
4.4 Penyandian nomor Kartu
mengetahuinya.
Pada bagian sebelumnya telah dijelaskan
4.3 Penerapan PIN sebagai kunci Private
mengapa nomor kartu kredit ini harus disandikan
terlebih dahulu untuk melakukan transaksi
Untuk penambahan validasi penulis lebih
sekaligus telah dijelaskan pula mengapa kunci
cenderung menggunakan PIN sebagai kunci
dari penyandian adalah
hasil penyandikan PIN
private yang digunakan untuk kunci deskripsi
sebelumnya.
maupun enkripsi terhadap nomor kartu. Karena
PIN harus dijaga kerahasiannya dan sangat
Untuk itu langkah yang  harus dilakukan terlebih
riskan apabila PIN tersebut yan g dienkripsi
dahulu sebelum penyandian nomor kartu ini
untuk dijadikan validasi. Untuk itulah penulis
adalah penyandian PIN nya terlebih dahulu.
rasa lebih tepat jika PIN hanya digunakan
Sebagai alternatif dalam penyandian PIN ini kita
sebagai kunci enkripsi-dekripsi no mor kartu
bisa menggunakan sembarang algoritma
bukan media yang di enkripsi untuk dijadikan
misalnya kita akan menyandikan PIN dengan
validasi.
rumus ci = pi mod n. Dengan n adalah salah satu
dari digit-digit PIN yang ada.
Jika  PIN yang di enkripsi kemudian dijadikan
validasi maka akan ada kemungkinan seseorang
Misal PIN sebuah kartu adalah 7866 dan kita
(misal X) dapat membaca PIN yang sebenarnya.
memilih n = 6  maka hasil penyandiaanya adalah
Misalkan PIN X adalah 7986. Setelah di enkripsi
7 mod 6, 8 mod 6, 6 mod 6,  6 mod 6 sehingga
menjadi 1320. X ingin mengetahui PIN asli dari
chiperteks nya adalah 1200. Dengan
orang lain (Y) yang chiperteksnya adalah 2543.
memanfaatkan hasil yang diperoleh dari
Dengan mempelajari chiperteks dan plainteks
penyandian PIN sebelumnya maka penyandian
dari PIN yang dia (X) miliki, X dapat
nomor kartu dapat dilakukan, dengan
mengetahui bahwa chiperteksnya adalah setiap
menggunakan hasil penyandian PIN sebagai
digit (dengan indeks i) mod angka yang paling
kunci penyandian nomor kartu.
kecil. Sehingga dengan chiperteks PIN Y yang
diketahui, dia dapat mengetahui PIN asli dari Y
Misal nomor kartu yang ingin disandikan adalah
tersebut. Dalam contoh diperlihatkan bahwa
7889-8594-5435-5413
dengan PIN 7869. Jik a
chiperteks dari Y adalah 2131 artinya, nilai
rumus penyandian PIN adalah ci = pi mod n.
paling kecil dari PIN Y adalah 6,7,8,9
Dengan n adalah 6. maka hasil penyandian dari
(berdasarkan teorima modulo) dengan
PIN adalah 1200. Hasil ini digunakan untuk
memasukkan 6 sebagai digit terkecil maka
menyandikan nomor kartu. Misal nomor kartu
didapatkan kemungkinan PIN asli dari Y adalah
kita bagi menjadi 4 blok dan rumus penyandian
8797.  Jika dimasu kkan dengan angka 7,8 atau 9
untuk tiap blok adalah ci=pi mod 1200 (1200 =
maka tidak terdapat kemungkinan yang cocok
hasil dari penyandian PIN) maka dengan contoh
karena tidak ada angka diatas 7,8,9 antara 1-9
nomor kartu diatas didapatkan bahwa hasil
yang dibagi 7 sisanya adalah 3 (digit ketiga dari
penyandiaanya(chiperteksnya)  adalah 7889 mod
chiperteks). Maka jelaslah jika PIN yang di
1200, 8594 mod 1200, 5435 mo d 1200, 5413
enkripsi untuk dijadikan validasi maka masih
mod 1200 = 689, 194, 635, 613 sehingga hasil
terdapat banyak cara yang tidak begitu rumit
penyandian dari nomor kartu adalah
untuk mengetahui PIN asli sebenarnya.
689194635613
dengan asumsi rumus penyandian
adalah seperti yang dikerjakan pada contoh.
Karena itulah PIN yang dimiliki pemilik kartu
hanya dipakai sebagai kunci bukan media
5.  Keamanan Setelah Penyandian Nomor
pemilik masih tidak aman karena
Kartu
memungkinkan seseorang untuk
emnyalahgunakan kartu orang lain
Setelah mengalami proses penyandian, maka
dengan.
terdapat validasi baru dalam dunia transaksi
3.  Sebaikn ya untuk transaksi online
online berbasiskan kartu kredit sehingga lebih
berbasiskan kartu kredit ditambah
aman. Penyandian in i sulit untuk dikembalikan
validasi yang sifatnya hanya diketahui
karena menggunakan PIN yang hanya diketahui
oleh pemilik kartu dan pihak pen yedia
oleh pihak pemilik kartu dan penyedia kartu.
layanan kartu dalam hal ini adalah
Selain itu PIN yang harus dijaga kerahasiaannya
nomor PIN.
tetap terjaga karena sebelum dijadikan sebagai
4.  Karena nomor PIN bersifat rahasia
kunci enkripsi PIN ini telah dirubah dulu ke
mak a nomor PIN tidak d igunakan
bentuk lain (disandikan terlebih dahulu).
sebagai media untuk validasi tambahan
Jika kita menggunakan algoritma yang telah
tetapi merupakan cara untuk mendapat
digunakan pada bagian 4.4 maka seorang
validasi tambahan (dalam makalah ini
penyusup yang ingin melakukan pencurian
digunakan sebagi kunci penyandian
identitas kartu harus melakukan enkripsi
nomor kartu)
terhadap nomor kartu kredit dengan kunci PIN
5.  Metode penyandian dalam penyandian
yang telah disandikan. Peluang untuk bisa
nomor kartu kredit ini menggunakan
melakukan hal ini sangatlah kecil, sehingga
kunci privat (algoritma enkripsi
kemungkinan besar tidak ada yang mampu untuk
simetri) karena hanya dua pihak yang
melakukan pencurian identitas kartu.
harusnya mengetahui kunci (PIN) ini.
6.  Validasi tambahan yang  digunakan
Namun apabila penyusup tersebut menggunakan
untuk bertransaksi yang sifatnya hanya
kaidah
brute-force
attact
si penyusup harus
diketahui oleh pemilik kartu dan pihak
melakukan komputasi yang sangat lama (akan
penyedia layanan kartu membuat
dijelaskan kemudian).
transaksi lebih aman.
Dari bagian 4.4 jika kita melakukan penyandian
dengan rumus ci=pi mod (sembarangdigitPIN)
maka akan terdapat ribuan kemungkinan untuk
chiperteks yang dihasilkan.
Jika jumlah digit PIN adalah 4 maka
chiperteksnya akan mempunyai kemungkinan
10
kemudian dari kemungkinan ini akan
4
didapatkan kunci penyandian nomor kartu
sebanyak kombinasi tersebut. Waktu komputasi
yang dibutuhkan untuk dapat melaksanakan
proses coba-coba akan sangat lama karena
peyusup harus melakukan enkripsi nomor kartu
kredit yang ada dengan kunci sebanyak   10
.
4
6. Kesimpulan
Kesimpulan yang dapat diambil dari makalah ini
adalah :
1.  Nomor kartu kredit yang ada
didasarkan pada algoritma Luhn
sehingga bisa ditentukan dan dicari
mana nomor kartu yang valid dan mana
yang tidak
2.  Transaksi online yang berbasiskan
kartu kredit dengan hanya
menggunakan validasi berupa nomor
kartu, masa kadaluarsa kartu, nama
DAFTAR PUSTAKA
[1] Black April
,
Sejarah Layanan Kartu Kredit
Dunia,
http://www.yogyakarding.com
Tanggal
akses tahun 2003
[2] Munir, Rinaldi. (20 04 ). Bahan Kuliah IF5054
Kriptografi. Departemen Teknik
Informatika, Institut Teknologi
Bandung.
[3]  Pfleeger, Charles P. (1997). Security in
Computing Second Edition. Prentice-
hall Intenational, inc.
[4] Raharjo, Budi, (2002). Keamanan Sistem
Informasi Berbasis Internet PT Insan
Infonesia – Bandung & PT INDOCISC
– Jakarta
[5] Rosen, Kenneth H.,
Diskcrete Mathematics
and Its Applications
, 4th, McGraw-Hill
International 1994
[6] scut (Kecoak Elektronik), Social
Engineering? Fenomena hacking
psikologis (Edisi pemula),
http://www.k-
elektronik.com
. Tanggal akses tahun
2003
[7] Yohanes, Algoritma Cek Karu Kredit,
http://www.klik-kanan.com
. Tanggal akses 29
Desember 2006 p ukul 21.00

About suhanda666


You must be logged in to post a comment.

%d blogger menyukai ini: