| |
KEAMANAN DATA DAN METODA ENKRIPSI
Oleh: Budi Sukmawan, Jan. 1998
Aspek keamanan data sebenarya meliputi banyak hal yang saling
berkaitan, tetapi khusus dalam tulisan ini penulis akan membahas
tentang metoda enkripsi dan keamanan proteksi data pada beberapa
program-program aplikasi umum. Hampir semua program aplikasi
seperti MS Word, WordPerfect, Excel, PKZip menyediakan fasilitas
proteksi data dengan pem-password-an, tapi sebenarnya fasilitas
ini mudah untuk dibongkar. Bahkan program khusus proteksi data
seperti Norton Diskreet (mungkin sekarang sudah jarang digunakan)
yang memproteksi data dengan metoda DES ataupun metoda "proprietary"
yang lebih cepat, sebenarnya sangat tidak aman. Metoda DES yang
digunakan mempunyai kesalahan dalam implementasinya yang sangat
mengurangi keefektipan dari metoda tersebut. Walaupun dapat
menerima password sampai 40 karakter, karakter ini kemudian
diubah menjadi huruf besar semua dan kemudian di-reduce menjadi 8
karakter. Hal ini menyebabkan pengurangan yang sangat besar
terhadap kemungkinan jumlah kunci enkripsi, sehingga tidak hanya
terbatasnya jumlah password yang mungkin, tetapi juga ada
sejumlah besar kunci yang equivalen yang dapat digunakan untuk
mendekrip file. Sebagai contoh file yang dienkrip dengan kunci 'xxxxxxx'
dapat didekrip dengan 'xxxxxx', 'xxxxyy', 'yyyyxx'. PC Tools (mungkin
ini juga sudah sulit ditemukan) adalah contoh lain paket software
yang menyediakan fasilitas proteksi data yang sangat tidak aman.
Implementasi DES pada program ini mengurangi 'round' pada DES
yang seharusnya 16 menjadi 2, yang membuatnya sangat mudah untuk
dibongkar.
Beberapa program akan secara otomatis membongkar proteksi
program aplikasi seperti MS Word, Excel, Word Perfect, PKZip 2.x,
Quattro Pro, dll dengan sangat mudah, bahkan ada program yang
menambahkan 'delay loop' sehingga seolah-olah program tersebut
sedang bekerja keras membongkar password. Salah satu perusahaan
tersebut adalah Access Data (http://www.accessdata.com),
mereka membuat software yang dapat membongkar WordPerfect (versi
4.2-6.1, enkripsi 'regular' atau 'enhanced', Microsoft Word (versi
2.0-6.1), Microsoft Excel (semua versi termasuk versi Macintosh),
Lotus 1-2-3 (semua versi), Quattro Pro, Paradox, Pkzip, Norton's
Diskreet (baik metoda DES maupun 'proprietary'), Novell NetWare (versions
3.x-4.x), dll. Access Data menyediakan program demo yang dapat
memecahkan password sampai 10 karakter. Untuk mendapatkannya coba
ftp site-nya di ftp.accessdata.com
pada directory /pub/demo. Penulis sendiri telah mencoba program
demo pembongkar passwordnya (untuk WordPerfect) yang jalan pada
Windows 95, tetapi sayang hanya dapat menampilkan jumlah karakter
yang digunakan pada password kita. Penulis juga telah melihat ada
program lokal berbasis DOS yang dapat membongkar password Word 6.0/7.0.
Alasan utama kurang baiknya proteksi dari program-program diatas
adalah mungkin untuk mendapatkan izin ekspor dari pemerintah
Amerika Serikat dengan mudah, karena di sana untuk mengekspor
program enkripsi yang kuat memerlukan izin yang ketat dari
pemerintah. Dan mengekspor program enkripsi sama dengan
mengekspor amunisi sehingga sangat dibatasi bahkan dikenai
hukuman bagi yang melanggarnya. Contoh klasik adalah apa yang
menimpa Philip Zimmermann yang diadili karena program PGP yang ia
buat dan menyebar ke seluruh dunia.
Untuk proteksi data yang cukup penting tidak ada jalan lain
selain menggunakan program khusus proteksi/enkripsi data. Saat
ini telah banyak beredar program khusus proteksi data baik
freeware, shareware, maupun komersial yang sangat baik. Pada
umumnya program tersebut tidak hanya menyediakan satu metoda saja,
tetapi beberapa jenis sehingga kita dapat memilih yang menurut
kita paling aman. Contoh program tesebut yang penulis ketahui
seperti :
- BFA 97 (Blowfish Advanced 97) yang menyediakan metoda
ekripsi : Blowfish, Idea, Triple DES, GOST, Cobra128, PC-1
(RC4 compatible), dan Twofish. Program demo dari paket
ini menyediakan pem-password-an hanya sampai 5 huruf.
Selain itu paket ini menyediakan fasilitas 'disk key'
yaitu kunci pada disket, sehingga kita tidak perlu
mengingat-ingat password. Tetapi dengan cara 'disk key'
ini ada masalah yaitu bila disketnya rusak atau hilang
maka kita akan kehilangan semua data kita.
- Kremlin yang menyediakan proteksi data Blowfish, Idea,
DES/Triple DES, dll.
- F-Secure yang menyedikan metoda proteksi Blowfish, RSA,
DES/Triple DES dan RC4. Produk ini dirancang untuk sistem
jaringan.
- Cryptext merupakan freeware, extension Windows 95/NT
shell yang yang menggunakan RC4 untuk mengenkripsi file
yang menggunakan kunci 160 bit yang dihasilkan dari
digest SHA terhadap password yang kita masukkan.
- PGP, merupakan program enkripsi sistem kunci publik (asimetrik)
dan biasanya digunakan untuk untuk enkripsi e-mail,
tetapi dapat juga digunakan untuk enkripsi konvensional (simetrik).
PGP menggunakan RSA sebagai sistem kunci publik dan Idea
sebagai metoda enkripsi simetrik dan MD5 untuk message
digest. PGP merupakan freeware tersedia untuk DOS (versi
2.6.x, tersedia beserta source programnya) dan Windows 95/NT
(versi 5.x).
- Pegwit, seperti PGP merupakan program ekripsi sistem
kunci publik, walaupun masih sangat sederhana (versi 8.71).
Pegwit menggunakan Elliptic Curve untuk sistem kunci
public dan Square untuk enkripsi simetrik dan SHA-1 untuk
message digest. Pegwit tersedia untuk DOS (16 dan 32 bit)
dan menyertakan juga source programnya.
- Selain itu juga terdapat program untuk enkripsi 'on the
fly'/'real time' yang dapat mengenkripsi harddisk,
partisi, atau suatu direktori tertentu secara transparan.
Dengan cara ini kita tidak perlu memilih satu persatu
file yang akan kita enkrip, tetapi program yang akan
melaksanakannya. Salah satu contoh jenis ini adalah
Norton Your Eyes Only, yang menggunakan metoda enkripsi
Blowfish. Contoh lain adalah ScramDisk (versi 2.02) yang
dapat digunakan untuk Windows 95/98, program ini
merupakan program bebas dan tersedia beserta source
programnya (http://www.hertreg.ac.uk/ss/). Scramdisk
menyediakan beberapa metoda enkripsi seperti Blowfish,
Tea, Idea, DES, SquareWindows NT bahkan sudah menyediakan
fasilitas mengenkrip , Misty dan Triple DES 168 bit.
Microsoft 5.0 yang akan datang direktori dengan
menggunakan metoda DES.
Lalu bagaimana dengan program enkripsi produk lokal ?. Sampai
saat ini penulis memperhatikan telah banyak program proteksi data
yang telah diterbitkan pada majalah Mikrodata ataupun Antivirus,
tetapi jarang sekali yang cukup baik sehingga dapat dipercaya
untuk melindungi data yang cukup penting. Sebagai contoh penulis
akan membahas program Multilevel Random Encryption versi 1.4 (pada
Antivirus no. 5) yang menurut penulisnya menggunakan proteksi
ganda dengan triple covery (?) dengan langkah-langkah overdosis (?),
mempunyai kelebihan dan sekuritas tinggi (?), kunci covery dapat
diganti sesuka anda, sehingga pembuat MRE sendiri tidak dapat
memecahkanya (?). Lalu coba kita analisa bersama-sama, program
ini mempunyai satu kunci yang di-hard coded di tubuh program
kemudian satu kunci lagi yang dipilih secara random dari random
generator standar, yang fatalnya kunci ini juga disimpan didalam
hasil enkripsi. Plaintext dioperasikan (XOR) dengan kedua kunci
ini dan data dibolak balik dalam 6 byte blok menghasilkan
ciphertext. Dengan mengengkrip data dengan kunci yang sama saja
sudah jelas akan dihasilkan data yang sama, contohnya karakter
ASCII 52 akan menjadi karakter ASCII 235, maka dibagian manapun
pada data karakter ASCII 52 akan tetap menjadi karakter ASCII 235,
ini merupakan suatu cara untuk membongkar file hasil enkripsi.
Kesalahan fatal lain adalah menyertakan password pada data hasil
enkripsi sehingga dengan mudah dapat dicari passwordnya. Sehingga
dengan logika sangat sederhana saja sudah dapat membongkar
program ini. Penulis juga telah membuat program yang sangat
sederhana untuk mencari password dari data yang telah diproteksi
dengan program ini, seperti dapat dilihat pada listing (MREBR.PAS)
dalam mrebr.zip.
Terlepas dari aman atau tidak, penulis sangat menghargai
kreatifitas programmer-programmer di negara kita, sehingga
penulis selalu tertarik jika ada artikel tentang program proteksi
data di majalah ini, meskipun (sekali lagi) sangat jarang metoda-metoda
tersebut dapat memberikan proteksi yang baik terhadap data kita.
Meskipun hanya sebagai kegiatan sampingan, saat ini penulis telah
mengumpulkan beberapa metoda enkripsi yang sudah diakui
keampuhannya (kebanyakan sumbernya dalam bahasa C) dan mem 'port'
nya ke dalam bahasa Pascal/Delphi dan bila redaksi Antivirus
berkenan maka penulis akan membahasnya pada beberapa tulisan yang
akan datang. Alasan penulis mem-port ke Delphi karena kebanyakan
rutin-rutin tersebut ditulis dengan bahasa C dan sedikit sekali
dari rutin-rutin yang tersedia bagi programmer Delphi. Walaupun
paling tidak ada satu site (TSM Inc, http://crypto-central.com/index.html)
yang menyediakan komponen cryptography (Blowfish, DES, RC6,
Twofish, RSA, Eliptic Curve, SHA) untuk Delphi/C++ Builder,
tetapi komponen tersebut tidak disertai source dan bila ingin
disertai source harus membelinya dengan harga kurang lebih US $100
per komponen. Metoda-metoda yang telah berhasil di-port
diantaranya yang klasik seperti DES dan modifikasinya Triple DES,
metoda-metoda yang lebih modern seperti GOST (Russian DES),
Blowfish, RC2, RC4, RC5, Idea, Safer, MDS-SHS, Square. Juga
penulis masih dalam proses mem-port metoda mutakhir yang ikut
kontes AES (Advances Encryption Standard) yang akan digunakan
sebagai standar pada dekade mendatang, seperti Twofish, RC6,
Safer+ dan Mars. (Sebagai informasi sampai tanggal 20 Agustus
1998 ada 15 kandidat, yaitu : Cast-256, Crypton, Deal, DFC, E2,
Frog, HPC, Loki97, Magenta, Mars, RC6, Rijndael, Safer+, Serpent
dan Twofish). Selain itu ada metoda 'secure hash' seperti MD5 dan
SHA, 'secure pseudo random number generator' seperti pada PGP (ANSI
X9.17), peggunaan SHA-1 untuk random number generator dan George
Marsaglia's the mother of all random number generators . Juga
mungkin suatu saat metoda public key cryptosystem, tetapi penulis
tidak terlalu yakin akan hal ini sebab metoda ini cukup rumit dan
memerlukan kode program yang cukup panjang, karena melibatkan
perhitungan dengan bilangan integer yang sangat besar. Meskipun
demikian paling tidak penulis telah mem-port salah satu metoda
publik key ini yaitu Elliptic Curve (Elliptic Curve Crypto
version 2.1 dari Mike Rosing), meskipun belum sempat di-debug dan
dites, karena kemudian penulis menemukan sistem yang lebih
lengkap yaitu pada Pegwit 8.71 oleh George Barwood. Dan terakhir
penulis juga menemukan rutin-rutin enkripsi yang ditulis oleh
David Barton (http://sunsite.icm.edu.pl/delphi/
atau http://web.ukonline.co.uk/david.w32/delphi.html)
tetapi rutin-rutin ini tampaknya kurang dioptimasi dengan baik
sehingga performancenya kurang baik (cek site tersebut mungkin
sudah ada perbaikan), bahkan untuk rutin Blowfish sangat lambat.
Sebagai perbandingan penulis mengadakan test kecepatan, yang
dilakukan pada Pentium Pro 200 dengan RAM 64MB dan sistem operasi
Windows NT 4.0 (SR3), untuk mengenkrip 5MB data (kecuali Blowfish
dari David Barton 1 MB) yang dikompile dengan Delphi 4.0 dan
hasilnya dapat dilihat pada tabel dibawah ini :
Metoda
|
Rutin Penulis
|
Rutin Barton
|
Faktor
( x )
|
( Kbytes/detik)
|
| Blowfish |
6063,06
|
26,33
|
230,3
|
| IDEA |
1458,44
|
913,91
|
1,6
|
| RC2 |
1867,76
|
640,37
|
2,9
|
| RC4 |
9416,20
|
6429,49
|
1,5
|
| RC5 |
5760,37
|
1907,91
|
3,0
|
| RC6 |
4291,85
|
812,30
|
5,3
|
| GOST |
3524,44
|
-
|
-
|
| Safer |
1234,77
|
-
|
-
|
| Skipjack |
-
|
497,45
|
-
|
Dari tabel di atas terlihat performance dari metoda-metoda
ekripsi yang telah di-port ke dalam Delphi rata-rata cukup baik
bila di-optimize dengan benar, bahkan ada diantaranya yang lebih
cepat (dicompile dengan Delphi 3.0, dengan directive {$O+;$R-;$Q-})
dibandingkan rutin C-nya yang dicompile dengan Borland C/C++ 5.2
(BCC32 dari Borland C++ Builder, dengan option optimize for speed,-O2),
contohnya adalah Blowfish dan RC4. Faktor penting dalam optimasi
dengan Delphi 32 bit (Delphi 2.x, 3.x, 4.0 tampaknya menggunakan
metoda optimasi yang sama) adalah penggunaan variabel 32 bit (Integer/LongInt/LongWord),
karena tampaknya Delphi ini dioptimasikan untuk operasi 32 bit.
Contohnya adalah rutin Idea yang menggunakan beberapa variabel
Word (16 bit) dalam proses ciphernya, ketika penulis mengganti
variabel-variabel ini dengan Integer dan me-mask beberapa operasi
yang perlu sehingga hasilnya masih dalam kisaran Word, akan
meningkatkan performance kurang lebih 40%. Demikian juga dengan
RC4 yang dalam tabel permutasinya menggunakan type Byte (8 bit)
penulis mengganti dengan Integer, kecepatannya meningkat drastis.
Walaupun demikian, dengan cara ini terjadi peningkatkan overhead
penggunaan memori, seperti pada RC4 dari tabel 256 byte menjadi
256*4 = 1024 byte. Tetapi karena kita memakainya untuk
implementasi software saja dan saat ini harga memori cukup murah
jadi tidak terlalu menjadi masalah. Faktor lain dalam optimasi
adalah menghindari pemanggilan fungsi/procedure dalam blok
enkripsi utama, karena pemanggilan fungsi/procedure akan
menyebabkan overhead yang sangat besar. Hal lain yang perlu
dihidari adalah penggunaan loop (for, while, repeat) sehingga
memungkinkan kode program dieksekusi secara paralel, terutama
pada prosesor superscalar seperti Pentium atau yang lebih baru.
Hal utama yang perlu diperhatikan dalam melakukan optimasi adalah
selalu membandingkan hasilnya dengan 'test vector' baku yang
biasanya disertakan oleh pembuatnya, dengan demikian kita yakin
bahwa implementasi kita terhadap metoda cipher tersebut adalah
benar.
Dari pengamatan penulis kekuatan dari metoda-metoda enkripsi
adalah pada kunci (dari password yang kita masukkan) sehingga
walaupun algoritma metoda tersebut telah tersebar luas orang
tidak akan dapat membongkar data tanpa kunci yang tepat. Walaupun
tentunya untuk menemukan metoda tersebut diperlukan teori
matematika yang cukup rumit. Tetapi intinya disini ialah
bagaimana kita mengimplementasikan metoda-metoda yang telah
diakui keampuhannya tersebut didalam aplikasi kita sehingga dapat
meningkatkan keamanan dari aplikasi yang kita buat.
Memang untuk membuat suatu metoda enkripsi yang sangat kuat (tidak
dapat dibongkar) adalah cukup sulit. Ada satu peraturan tidak
tertulis dalam dunia cryptography bahwa untuk dapat membuat
metoda enkripsi yang baik orang harus menjadi cryptanalysis (menganalisa
suatu metoda enkripsi atau mungkin membongkarnya) terlebih dahulu.
Salah satu contohnya adalah Bruce Schneier pengarang buku Applied
Crypthography yang telah menciptakan metoda Blowfish dan yang
terbaru Twofish. Bruce Schneier (dan sejawatnya di Counterpane)
telah banyak menganalisa metoda-metoda seperti 3-Way, Cast, Cmea,
RC2, RC5, Tea, Orix, dll dan terbukti metoda yang ia buat yaitu
Blowfish (yang operasi ciphernya cukup sederhana bila
dibandingkan dengan DES misalnya) sampai saat ini dianggap salah
satu yang terbaik dan tidak bisa dibongkar dan juga sangat cepat.
Bahkan untuk menciptakan Twofish ia dan timnya di Counterpane
menghabiskan waktu ribuan jam untuk menganalisanya dan sampai
saat-saat terakhir batas waktu penyerahan untuk AES (15 Juni 1998)
ia terus menganalisisnya dan menurutnya sampai saat inipun ia
masih terus menganalisis Twofish untuk menemukan kelemahannya.
Bila ada diantara pembaca yang ingin mempelajari metoda-metoda
cryptography lebih dalam, sebagai permulaan ada beberapa site di
Internet yang menyediakan 'link' ke situs-situs cryptography
seperti :
Counterpane, http://www.counterpane.com
Cryptography and Encryption, http://www.isse.gmu.edu/~njohnson/Security/crypto.htm
Tom Dunigan's Security page, http://www.epm.ornl.gov/~dunigan/security.html
Delphi Security component, http://crypto-central.com/index.html
Dan banyak lagi, pembaca bisa menggunakan search engine untuk
mencari site-site lain.
Dan juga beberapa ftp site yang menyediakan source program (kebanyakan
dalam bahasa C/C++) seperti di :
- ftp://ftp.funet.fi/pub/crypt/cryptography/libs/
- ftp://ftp.hacktic.nl/pub/replay/pub/crypto/LIBS/
- ftp://idea.sec.dsi.unimi.it/pub/security/crypt/code
- ftp://ftp.psy.uq.oz.au/pub/Crypto/
- ftp://ftp.ox.ac.uk/pub/crypto/
FTP site ini semuanya terletak diluar Amerika Serikat/Canada
sehingga bila men-down-load-nya kita tidak melanggar aturan
larangan ekspor software enkripsi dari pemerintah Amerika Serikat.
Juga beberapa newsgroup yang dapat dibaca, walaupun penulis
belum pernah mencobanya dan tidak mengetahui apakah ada provider
yang menyediakannya.
Dan tentunya dengan mempelajari beberapa buku tentang
cryptography akan sangat baik, walaupun tampaknya agak sulit
mendapat buku demikian di negara kita.
Perlu juga diketahui bahwa ada diantara metoda-metoda enkripsi
tersebut yang dipatenkan seperti Idea, Seal, RC5, RC6, Mars atau
mungkin tidak diperdagangkan/disebarkan secara bebas (trade
secret) seperti RC2, RC4. Dan ada juga yang bebas digunakan
seperti Blowfish, Twofish, Sapphire II, Diamond II, 3-Way, Safer,
Cast-256, dll., walaupun tentu saja secara etika kita harus tetap
mencantumkan pembuatnya/penciptanya pada program kita.
Akhir kata penulis berharap semoga tulisan ini ada manfaatnya
bagi pembaca majalah Antivirus sekalian.
Referensi :
1. Antivirus Media No. 5
2. Eric Bach, dkk, Cryptograhy-FAQ.
3. Peter C.Gutmann, SFS Version 1.20 Document.
4. Bruce Schneier, Applied Cryptography : Protocols,
Algorithms, and Source Code in C, 2nd Edition
5. Philip Zimmermann, PGP 2.6.2 User Guide.
6. Berbagai site di Internet.
Catatan: beberapa link dari halaman ini
mungkin sudah berubah

|
|