| |
Penghapusan
Data Secara Permanen
Oleh : Budi
Sukmawan
Seperti kita ketahui ketika kita menghapus file maka file
itu masih ada di dalam harddisk dan hanya ditandai bahwa file tersebut telah
dihapus, sehingga tempatnya bisa digunakan bila dibutuhkan oleh file lain. File
ini dapat dengan mudah dikembalikan ke bentuk semula, bila belum tertimpa file
lain dengan menggunakan program Norton Utility atau Lost & Found dari
PowerQuest. Di dalam Windows 9x/NT bahkan disediakan Recycle Bin sehingga kita
dapat mengembalikan file yang tidak sengaja terhapus. Dan ada juga perusahaan
khusus dalam bidang Data Recovery yang
dapat mengembalikan file karena harddisk yang rusak baik fisik ataupun kesalahan
dalam konfigurasi atau akibat virus. Dengan menggunakan peralatan canggih
seperti magnetic force microscopy
(MFM) dapat di-recover file yang sudah
tertimpa berulang kali. Menurut keterangan di-PGP User Guide terdapat perusahaan data recovery komersial yang dapat mengembalikan file yang sudah di-overwrite
(tulis ulang) sebanyak 9 kali.
Lalu bagaimana bila kita ingin benar-benar menghapus
file tersebut dan orang lain tidak mungkin untuk me-recover-nya? Pada artikel ini penulis akan membahas cara penghapusan
yang aman khususnya pada media magnetik seperti harddisk atau floppy disk,
tetapi bukan media lain seperti optik (CDRW, Optical Disk) atau elektronik
(Flash).
Metoda paling lama yang dikenal adalah metoda standar
dari DoD (Department of Defense),
menurut National Computer Security Centre
metoda ini dapat dijelaskan sebagai berikut: mula-mula data ditimpa dengan suatu
pola kemudian dengan komplemen dari pola tersebut dan terakhir dengan pola lain.
Misalnya mula-mula dengan pola 0011 0101, diikuti dengan 1100 1010, lalu dengan
1001 0111, tidak ditentukan berapa kali pola tersebut diulang untuk mendapat
benar-benar menghapus data. Kebanyakan program komersial yang
mengimplementasikan standar DoD dengan menulis ulang sebanyak tiga kali,
mula-mula dengan pola 1 (satu) semua, kemudian dengan pola 0 (nol) semua dan
terakhir pola 10 (satu nol). Bruce Schneier menyarankan menghapus file sebanyak
tujuh kali, mula dengan pola 1 (satu) kemudian dengan pola 0 (nol) kemudian
sebanyak lima kali dengan bilangan pseudo-random
yang aman secara kriptografi. Tetapi menurutnya dengan dikembangkannya electron-tunneling
microscopes cara terakhir ini juga tidak begitu aman.
Cara khusus untuk penghapusan yang aman pada media
magnetik adalah seperti yang dikembangkan oleh Peter Gutmann dari Departemen
Ilmu Komputer, Universitas Auckland – Selandia Baru pada tahun 1996. Pada
metoda ini Peter Gutmann mengembangkan pattern
(pola) tertentu yang disesuaikan dengan cara pengkodean pada harddisk seperti
RLL, MFM dan PRML. Konsep umum cara overwrite
ini adalah dengan membalik bidang magnetik pada disk bolak-balik sebanyak
mungkin (ini merupakan ide dasar dari degaussing)
tanpa menulis pola yang sama berturut-turut. Bila data dikodekan secara
langsung, kita dapat memilih pola satu dan nol dan menuliskannya berulang-ulang.
Tetapi pada umumnya disk menggunakan semacam pengkodean run-length limited
(RLL). Untuk menghapus media magnetik, kita perlu menulis ulang berkali-kali
dengan pola-pola tertentu dengan maksud mengekposnya kepada medan magnet yang
berosilasi secepat mungkin sehingga menghasilkan pembalikan bidang magnetik
dalam waktu tertentu. Pola-pola yang digunakan dapat dilihat pada Tabel 1.
|
Overwrite
Data
|
|
Pass
No.
|
Data
Written
|
Encoding
Scheme Targeted
|
|
1.
|
Random
|
|
|
|
|
2.
|
Random
|
|
|
|
|
3.
|
Random
|
|
|
|
|
4.
|
Random
|
|
|
|
|
5.
|
0x55
|
(1,7) RLL
|
|
MFM
|
|
6.
|
0xAA
|
(1,7) RLL
|
|
MFM
|
|
7.
|
0x92 0x49 0x24
|
|
(2,7) RLL
|
MFM
|
|
8.
|
0x49 0x24 0x92
|
|
(2,7) RLL
|
MFM
|
|
9.
|
0x24 0x92 0x49
|
|
(2,7) RLL
|
MFM
|
|
10.
|
0x00
|
(1,7) RLL
|
(2,7) RLL
|
|
|
11.
|
0x11
|
(1,7) RLL
|
|
|
|
12.
|
0x22
|
(1,7) RLL
|
|
|
|
13.
|
0x33
|
(1,7) RLL
|
(2,7) RLL
|
|
|
14.
|
0x44
|
(1,7) RLL
|
|
|
|
15.
|
0x55
|
(1,7) RLL
|
|
MFM
|
|
16.
|
0x66
|
(1,7) RLL
|
(2,7) RLL
|
|
|
17.
|
0x77
|
(1,7) RLL
|
|
|
|
18.
|
0x88
|
(1,7) RLL
|
|
|
|
19.
|
0x99
|
(1,7) RLL
|
(2,7) RLL
|
|
|
20.
|
0xAA
|
(1,7) RLL
|
MFM
|
|
|
21.
|
0xBB
|
(1,7) RLL
|
|
|
|
22.
|
0xCC
|
(1,7) RLL
|
(2,7) RLL
|
|
|
23.
|
0xDD
|
(1,7) RLL
|
|
|
|
24.
|
0xEE
|
(1,7) RLL
|
|
|
|
25.
|
0xFF
|
(1,7) RLL
|
(2,7) RLL
|
|
|
26.
|
0x92 0x49 0x24
|
|
(2,7) RLL
|
MFM
|
|
27.
|
0x49 0x24 0x92
|
|
(2,7) RLL
|
MFM
|
|
28.
|
0x24 0x92 0x49
|
|
(2,7) RLL
|
MFM
|
|
29.
|
0x6D 0xB6 0xDB
|
|
(2,7) RLL
|
|
|
30.
|
0xB6 0xDB 0x6D
|
|
(2,7) RLL
|
|
|
31.
|
0xDB 0x6D 0xB6
|
|
(2,7) RLL
|
|
|
32.
|
Random
|
|
|
|
|
33.
|
Random
|
|
|
|
|
34.
|
Random
|
|
|
|
|
35.
|
Random
|
|
|
|
Tabel 1. Pola tulis dari Peter Gutmann
Seperti kita lihat dari tabel pada metoda ini
diperlukan 35 kali penulisan ulang pada area data yang akan dihapus. Pola
spesifik MFM diulang dua kali karena drive MFM mempunyai kerapatan yang paling
rendah dan kemungkinan paling mudah untuk untuk diperiksa. Pola-pola tertentu
diantara pola random (5 – 31) diacak sebelum dituliskan sehingga lebih sulit
bagi orang yang akan me-recover
untuk menentukan urutan pola yang telah dituliskan.
Metoda yang dikembangkan oleh Peter Gutmann ini
rupanya telah diadaptasi oleh pembuat PGP dengan mereduksi
pola yang ditulis dua kali (MFM dan pola 0x55 dan 0xAA), juga mengurangi
pola random di awal dan di akhir hanya sebanyak dua kali. Dengan demikian
penulisan ulang pada metoda yang digunakan pada ‘PGP Wipe’ hanya sebanyak
maksimum 26 kali. Dengan PGP Wipe kita dapat menentukan berapa passes
(kali) akan menulis ulang data (1 sampai 26 kali).
Pada saat penulisan pola-pola ini kedalam media
penyimpan, seharusnya ditulis langsung tanpa melalui cache, karena ada kemungkinan dengan adanya cache ini hanya data
terakhir saja yang benar-benar dituliskan ke disk, sehingga penggunaan pola-pola
di atas menjadi tidak berguna. Pada API Win32 hal ini dapat dilakukan dengan
menggunakan atribut FILE_FLAG_WRITE_THROUGH pada saat memanggil fungsi
CreateFile untuk membuka file. Hal ini dapat diperhatikan pada saat program
menulis ke harddisk maka lampu indikator harddisk akan menyala terus-menerus
selama penulisan data. Cara penghapusan dengan penulisan langsung tanpa melalui
cache, menggunakan cara di atas digunakan pada Scramdisk, PGPWipe dan pada Blowfish
Advanced CS.
Aplikasi
Untuk mengimplementasikan cara penghapusan ini
penulis telah membuat sebuah komponen di dalam Delphi yang menyediakan berbagai
cara penghapusan, cara yang tersedia adalah sebagai berikut :
-
Simple
Wipe, dengan
cara ini data yang akan kita hapus ditimpa dengan bilangan random sebanyak satu
kali.
-
DoD
Wipe, pada
metoda ini pertama menggunakan pola 0x55 (01010101) kemudian pola 0xAA
(10101010) lalu pola bilangan random sebanyak satu kali.
-
Secure
Wipe,
menggunakan pola penghapusan yang dikembangkan oleh Peter Gutmann sebanyak 35
kali.
-
Variable
Wipe,
menggunakan pola penghapusan dari Peter Gutmann tetapi kita dapat memilih berapa
kali kita akan menimpa data dari 5 sampai 35 kali.
Cara mana yang paling tepat untuk menghapus file data
adalah tergantung dari data yang akan kita hapus. Bila data mempunyai
kerahasiaan yang sangat tinggi dianjurkan untuk menggunakan Secure
Wipe, tetapi untuk data yang kurang rahasia bisa digunakan DoD
Wipe. Sedangkan Simple Wipe
tampaknya kurang aman dan digunakan untuk data-data yang tidak rahasia. Bila
mempertimbangkan faktor keamanan dan kecepatan penghapusan dapat digunakan Variable
Wipe dengan menggunakan 10 sampai 15 passes.
Hal lain yang perlu diperhatikan adalah generator
bilangan random, karena bila generator ini tidak aman ada kemungkinan dapat
ditelusuri pola-pola data yang telah dituliskan dan bisa jadi data dapat di-recover
kembali. Untuk generator bilangan random ini penulis menggunakan generator IA (Indirection, Addition) yang dikembangkan oleh Robert
(Bob) Jenkins, generator bilangan random ini sangat cepat walaupun keamanannya
belum teruji. Untuk generator yang lebih aman dapat digunakan ISAAC (Indirection,
Shift,Accumulate, Add, and Count)
yang juga dikembangkan oleh Bob Jenkins dan digunakan dalam PGP Wipe.
Komponen ini mungkin tidak secanggih program file
wiping komersial tetapi keuntungannya dapat diintegrasikan dengan aplikasi
yang kita buat, misalnya pada program enkripsi dapat digunakan untuk menghapus
file sumber (plainteks). Untuk contoh penggunaan komponen ini penulis membuat
sebuah program sederhana untuk penghapusan file seperti terlihat pada tampilan :

Gambar
1. Tampilan program WipeFile
Program ini dikembangkan dengan menggunakan Delphi 4.0, tetapi dapat dengan mudah
dikompail dengan Delphi 3.x walaupun ada beberapa warning ketika membuka file. Yang perlu disesuaikan pada Delphi 3.x
adalah pada komponen OpenDialog, ubah Options.ofAllowMultiSelect
:= True. Dengan
menggunakan program ini data yang telah dihapus tidak akan masuk ke dalam
Recycle Bin, dan walaupun file data tersebut dapat di-recover kembali dengan menggunakan Norton Utility
tetapi isinya sudah tidak berarti lagi karena hanya berisi bilangan
random. Yang perlu diperhatikan adalah untuk berhati-hati menggunakan program
ini karena sekali file telah terhapus maka tidak ada cara untuk mendapatkan
kembali file tersebut dalam keadaan seperti aslinya.
Untuk
mendapatkan program dan source code-nya lihat halaman download.
Catatan:
program wipe.pas hampir mirip dengan yang ada di source code Fastcrypt1, tapi
belum ada perbaikan jadi mungkin masih ada bug-nya.
Penutup
Komponen yang penulis kembangkan ini mungkin masih
sederhana tetapi penulis yakin program ini lebih baik dari Norton WipeInfo,
karena WipeInfo menggunakan pola penulisan ulang yang sederhana yaitu pola 1
kemudian pola 0 dan terakhir 0xF6 (DoD 5220.22-M)
sebanyak beberapa kali. Untuk metoda yang lebih baik dapat dipelajari PGP Wipe
karena source program-nya tersedia.
Untuk meningkatkan kinerja (performance)
dapat digunakan memory mapped file seperti pada PGP Wipe. Pengembangan lain
adalah untuk menghapus satu direktori sekaligus (seperti pada Norton WipeInfo)
dan juga untuk membersihkan ruang kosong (free
space wipe) pada harddisk (seperti pada PGP Wipe, Scramdisk, Norton
WipeInfo) karena pada tempat yang kosong ini kemungkinan ada sisa
fragmen-fragmen data dari penghapusan secara biasa. Tetapi yang kita perlu
waspadai walaupun kita telah berusaha menghapus data secara aman tetapi biasanya
program aplikasi membuat file sementara yang dapat saja merupakan copy dari file
yang sedang kita edit. Sistem operasi bisa saja menyimpan file yang sedang kita
edit di dalam virtual memory (swap file) di dalam harddisk sehingga orang yang
mempunyai akses ke swap file ini dapat me-recover file tersebut.
Catatan:
Metoda penulisan untuk menimpa file data yang digunakan pada komponen wipe.pas
tidak aman bila digunakan pada sistem Windows NT, 2000 atau XP dengan file
system NTFS karena penanganan file yang berbeda, jadi hanya bisa dipakai pada
Windows 9x dengan FAT16/FAT32.
Pustaka :
-
Bruce Schneier, “Applied Cryptography”, second edition, John Willey
& Sons, 1996.
-
Network Associates Inc., “PGP Windows 95, 98, and NT User’s Guide Version 6.0”, 1998.
-
Peter Gutmann, “Secure Deletion of Data from Magnetic and Solid-State Memory”, Sixth USENIX Security Symposium Proceedings, San Jose, California, http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html, 1996.
-
Robert Jenkins, “ISAAC and RC4”,
http://burtleburtle.net/bob/index.html, 1996.
Copyright
(c)1999, 2002 - Budi Sukmawan
Revisi
00: Juni 1999
Revisi
01: Januari 2002
Revisi
01a: Februari 2002

|
|