“Saya akui bahawa saya telah membaca karya ini dan pada...
Transcript of “Saya akui bahawa saya telah membaca karya ini dan pada...
“Saya akui bahawa saya telah membaca karya ini dan pada pandangan
saya karya ini adalah memadai dari segi skop dan kualiti untuk tujuan
penganugerahan ijazah Sarjana Muda Sains (Sains Komputer)”.
Tandatangan : ...............................…….
Nama Penyelia : En. Noh Bin Abd. Samad
Tarikh : Mei 2008
APLIKASI STEGANOGRAFI KE ATAS TEKS MENGGUNAKAN FAIL IMEJ
BERSERTA ENKRIPSI KE ATAS KUNCI
MOHD RISZAFIQ BIN SUGIRI
Tesis projek ini dikemukakan sebagai
memenuhi sebahagian daripada syarat penganugerahan
Ijazah Sarjana Muda Sains (Sains Komputer).
Fakulti Sains Komputer Dan Sistem Maklumat
Universiti Teknologi Malaysia
MEI, 2008
“Saya akui karya ini adalah hasil kerja saya sendiri kecuali nukilan dan ringkasanyang tiap-tiap satunya telah saya jelaskan sumbernya”.
Tandatangan : ...............................…….
Nama Penulis : Mohd Riszafiq bin Sugiri
Tarikh : Mei 2008
Buat ibu dan ayah yang sentiasa ku cintai,
terima kasih kerana memahami dan memberi sokongan terhadap apa
yang selama ini ku usahakan. Ku susulkan kejayaan untuk mu.
PENGHARGAAN
Assalammualaikum dan selamat sejahtera, bersyukur ke hadrat illahi kerana dengan
limpah kurnianya, laporan ini berjaya disiapkan. Tidak lupa juga kepada penyelia En. Noh
bin Abd Samad kerana sudi memberikan nasihat serta pandangan dalam membantu
mengemaskini dan memperbaiki projek. Ribuan terima kasih diucapkan. Disamping itu,
sekalung penghargaan diucapkan kepada pensyarah-pensyarah yang turut terlibat dalam
membantu dalam proses menyiapkan Projek Sarjana Muda. Tidak lupa juga kepada ibu dan
bapa yang sentiasa memberi sokongan.
Akhir kata, semoga Projek Sarjana Muda yang dibangunkan ini dapat dimanfaatkan.
Kepada insan-insan yang terlibat secara langsung dan tidak langsung dalam membantu dan
memberikan pendapat, semoga Allah membalas jasa dan budi baik kamu sekalian. Sekian,
terima kasih.
ABSTRAK
Maklumat pengguna perlu dilindungi supaya ianya berada dalam keadaan selamat.
Disebabkan wujudnya eksploitasi terhadap maklumat seperti pengintipan melalui
internet, maklumat pengguna lebih terdedah kepada ancaman dan kebocoran.
Justeru, aplikasi yang dibangunkan ini adalah bertujuan untuk melindungi maklumat
pengguna. Metodologi yang digunakan untuk melindungi maklumat ialah
steganografi dan juga kriptografi. Gabungan kedua-dua metodologi ini berupaya
untuk menghasilkan tahap sekuriti yang lebih baik. Steganografi digunakan untuk
memastikan kewujudan rahsia tidak diketahui dan kriptografi pula mengubah
maksud asal maklumat pengguna kepada sesuatu yang sukar difahami. Untuk
steganografi, kaedah Least Significant Bit digunakan, manakala kriptografi
menggunakan kaedah enkripsi MD5. Visual Basic digunakan untuk membangunkan
aplikasi ini. Protokol penghantaran fail (File Transfer Protocol) digunakan untuk
penghantaran bitmap dari komputer pelanggan ke pelayan. Objek imej berformat
bitmap digunakan untuk menyimpan nilai binari maklumat. Matlamat utama aplikasi
ini adalah untuk melindungi maklumat pengguna dengan menggunakan metodologi
steganografi dan kriptografi.
ABSTRACT
User’s information need to be secured from exploitation that commonly happened
nowadays for example eavesdropping. This application was intended to protect
user's data from being exposed to unwanted person. Steganography and
cryptography is chosen in order to protect the user data. Both combination of
steganography and cryptography can provide higher security. Steganography is used
to hide the user data from being seen by human bared eyes. Meanwhile,
cryptography used to convert the plain text to cipher text. Least significant bit
technique is used for the steganography while MD5 technique for the cryptography.
Visual Basic is used to develop the application. FTP was used to send the image data
from the client to the server and vice versa.Image with bitmap format was chosen as
the carrier image. The main objective of this application is to secured user's data
using steganography and cryptography.
KANDUNGAN
BAB PERKARA HALAMAN
JUDUL iPENGAKUAN iiDEDIKASI iiiPENGHARGAAN ivABSTRAK viABSTRACT viiKANDUNGAN viiiSENARAI JADUAL xiiSENARAI RAJAH xiiiSENARAI SINGKATAN xvSENARAI ISTILAH xviSENARAI LAMPIRAN xvii
1 PENGENALAN
1.1 Pengenalan 11.2 Matlamat Projek 21.3 Objektif 21.4 Skop Projek 31.5 Latar Belakang Masalah 31.6 Kepentingan Projek 4
II KAJIAN LITERATUR
2.1 Pengenalan kepada Steganografi dan Kriptografi 52.2 Teknik- teknik Steganografi 7 2.2.1 Teknik LSB 8 2.2.2 Teknik Variable Sized LSB 8 2.2.3 Penyusunan Piksel Secara Rawak 9 2.2.4 Teknik Discrete Fourier Transition 92.3 Teknik –teknik Kriptografi 10 2.3.1 AES (Advanced Encryption Standard) 11
2.3.2 Twofish 11 2.3.3 Tiny Encryption Algorithm (TEA) 12 2.3.4 MD5 Message Digest Algorithm 12 2.3.5 Secure Hash Algorithm (SHA-1) 132.4 Struktur Imej berjenis bitmap 132.5 Protokol Penghantaran Fail 152.6 Kajian Aplikasi Yang Sedia Ada 162.7 Kajian Terhadap Projek Yang Dibina 182.8 Rumusan 20
III METODOLOGI PEMBANGUNAN
3.1 Pendahuluan 213.2 Model Pembangunan Secara Pertambahan 22 3.2.1 Fasa Kajian Awalan 23 3.2.2 Fasa Analisis 24 3.2.3 Fasa Rekabentuk 24
3.2.4 Fasa Implementasi 25 3.2.5 Fasa Ujian 263.3 Kewajaran Pemilihan Metodologi Pembangunan
Secara Pertambahan
26
3.4 Analisis Keperluan Projek 27
IV REKABENTUK
4.1 Pengenalan 284.2 Rekabentuk Struktur Logikal Aplikasi 294.3 Rekabentuk Konsepsual 314.4 Rekabentuk Input Dan Ouput 324.5 Rekabentuk Modul Dan Algoritma 334.6 Rekabentuk Antaramuka Pengguna 34
V IMPLEMENTASI DAN PENGUJIAN
5.1 Pengenalan 395.2 Persekitaran Pembangunan 395.3 Implementasi Aplikasi 40 5.3.1 Modul Utama dan Sub Modul 41
5.3.2 Penggunaan Library Sedia Ada Windows 45 5.3.3 Logik dan Aturcara Modul Utama 47
5.3.3.1 Aturcara Permulaan Aplikasi 475.3.3.2 Aturcara Penyembunyian Maklumat
Rahsia
51
5.3.3.3 Aturcara Pengekstrakan Maklumat
Rahsia
53
5.3.3.4 Aturcara Kriptografi MD5 565.4 Pengujian Aplikasi 59 5.4.1 Pengujian Terhadap Fail-fail Penting
Aplikasi
59
5.4.1.1 Pengujian Kehadiran Fail Settings.ini 59 5.4.1.2 Pengujian Terhadap Nilai Pada Fail
settings.ini
61
5.4.2 Pengujian Ketika Menyembunyikan
Maklumat
61
5.4.3 Pengujian Ketika Mengekstrak Maklumat 625.5 Rumusan 63
VI KESIMPULAN
6.1 Pengenalan 646.2 Pencapaian Projek 646.3 Kekangan dan Cabaran 656.4 Harapan 666.5 Ringkasan 67
RUJUKAN 68LAMPIRAN A-F 69-93
SENARAI JADUAL
NO. JADUAL TAJUK HALAMAN
2.1 Struktur imej bitmap 142.2 Bilangan bait bagi format fail 142.3 Teknik forensik steganografi 162.4 Kajian terhadap aplikasi steganografi sedia ada 173.1 Senarai keperluan perkakasan 273.2 Senarai keperluan perisian 274.1 Jadual modul dan fungsi 335.1 Jadual modul utama dan sub modul 425.2 Jadual penerangan sub modul 425.3 Jadual penggunaan Library Windows XP pada
aplikasi
46
5.4 Kategori tetapan fail settings.ini 48
SENARAI RAJAH
NO. RAJAH TAJUK HALAMAN
2.1 Model steganografi 72.2 Model kriptorgrafi 72.3 Cara pemprosesan steganografi bagi projek 182.4 Penghantaran fail ke pelayan dan proses intipan 193.1 Aliran proses pembangunan secara pertambahan 234.1 Carta aliran rekabentuk struktrur logikal 304.2 Rekabentuk konsepsual 314.3 Rekabentuk input 324.4 Rekabentuk output 324.5 Antaramuka pengguna untuk penyembunyian mesej 354.6 Antaramuka pengguna untuk pengekstrakan mesej 364.7 Antaramuka pengguna untuk tetapan aplikasi 374.8 Antaramuka pengguna untuk penghantaran data 385.1 Atribut dan nilai pada fail settings.ini 495.2 Keratan kod aturcara permulaan aplikasi 505.3 Kod aturcara apabila butang penyembunyian diklik 515.4 Kod aturcara menyimpan maklumat rahsia ke imej 525.5 Kod aturcara apabila butang pengekstrakan diklik 545.6 Kod aturcara mengekstrak maklumat rahsia 555.7 Kod aturcara enkripsi kata laluan dengan MD5 565.8 Kod aturcara untuk mendapatkan nilai MD5 fail bitmap 575.9 Kod aturcara untuk penjanaan kunci pemprosesan 585.10 Mesej mengenai kehilangan fail settings.ini 605.11 Mesej Auto Recovery fail settings.ini 615.12 Mesej amaran jika pengguna melakukan kesalahan 625.13 Mesej paparan untuk proses pengekstrakan 62
SENARAI SINGKATAN
SINGKATAN MAKNA
4GL Fourth Generation LanguageAES Advanced Encryption StandardAPI Application Programming InterfaceBIL BilanganDFT Discrete Fourier TransitionDIB Device Independent BitmapFTP File Transfer ProtocolIT Information TechnologyLSB Least Significant BitMD5 Message Digest 5MSB Most Significant BitRPP Random Pixel PositioningSDLC System Development Life CycleTEA Tiny Encryption AlgorithmVLSB Variable Sized LSB
SENARAI ISTILAH
ISTILAH TERJEMAHAN
AddRoundKey Tambah kekunci pusinganByteSub Penukaran bait Client PelangganDevice Independent Bitmap Perkakasan bitmap bebasDiscrete Fourier Transition Transisi diskrit fourierExtreme Programming Pengaturcaraan ekstrimFile Transfer Protocol Protokol penghantaran failIncrement Development Pembangunan secara pertambahanInformation Technology Teknologi maklumatLeast Significant Bit Bit yang paling kananMixColumn Pencampuran lajurMost Significant Bit Bit yang paling kiriPrototyping Approach Kaedah prototaipRandom Pixel Positioning Penyusunan pixel secara rawakServer PelayanShiftRow Pergerakan barisSpiral Approach Kaedah lingkaranSystem Development Life Cycle Kitar hayat pembangunan SistemVariable Sized LSB Saiz bebas bit yang paling kananWaterfall Approach Kaedah Air terjun
SENARAI LAMPIRAN
LAMPIRAN TAJUK
Lampiran A Carta Gantt PSM ILampiran B Carta Gantt PSM IILampiran C Kod Aturcara Fungsi addMessageToImageLampiran D Kod Aturcara Fungsi extractMethodLampiran E Kod Aturcara Fungsi cmdBrowseBMPLampiran F Manual Pengguna
BAB 1
PENGENALAN
1.1 Pengenalan
Maklumat adalah sangat berharga. Bagi sesetangah pihak, maklumat begitu
berharga bagi mereka kerana ia mungkin menyimpan rahsia. Apabila menyebut
tentang maklumat rahsia, kebanyakkan pihak menghadapi masalah kerana maklumat
rahsia mereka bocor ke tangan individu yang tidak sepatutnya. Untuk menjaga
kepentingan rahsia dan peribadi, pelbagai cara telah dilakukan. Di dalam bidang
Teknologi Maklumat kita sering terdengar mengenai kriptografi. Kriptografi
merupakan salah satu cara untuk melindungi maklumat dengan mengubah makna
asal maklumat tersebut supaya ianya sukar untuk bocor atau terdedah kepada pihak
yang tidak sepatutnya.
Terdapat satu lagi kaedah yang mungkin jarang diketahui oleh orang ramai
iaitu steganografi, berbeza dengan kriptografi, steganografi merupakan teknik
penyembunyian data supaya ianya tidak diketahui kewujudannya. Walaupun
mempunyai beberapa perbezaan antara dua kaedah ini, namun tujuannya tetap sama
iaitu untuk melindungi maklumat supaya berada didalam keadaan yang selamat.
Aplikasi ini melibatkan kedua-dua kaedah tadi dengan tujuan untuk
melindungi maklumat supaya berada didalam keadaan selamat. Aplikasi ini adalah
mengenai pengimplimentasian steganografi ke atas teks dan menggunakan imej
sebagai objek penyembunyian. Kriptografi digunakan bertujuan menyimpan cara
pemprosesan maklumat rahsia dan juga kata laluan.
1.2 Matlamat Projek
Matlamat utama projek ini adalah untuk membangunkan satu aplikasi
steganografi berserta sokongan kriptografi ke atas kunci yang membolehkan mesej
rahsia disimpan dan dibaca dengan selamat.
1.3 Objektif
Dalam membangunkan projek ini, tedapat beberapa objektif yang telah di sasarkan iaitu :
i. Mengkaji proses steganografi menggunakan teknik LSB(Least Significant
Bit) ke atas fail imej bitmap bersama proses kriptografi..
ii. Mengkaji gabungan LSB dengan teknik rawak untuk menentukan lokasi
maklumat.
iii. Membangunkan sebuah aplikasi steganografi beserta sokongan
kriptografi.serta menguji keselamatan aplikasi yang dibangunkan.
1.4 Skop Projek
Aplikasi yang dibangunkan ini adalah berasaskan kepada skop projek seperti dibawah:
i. Proses steganografi hanya dilakukan keatas fail berjenis dokumen teks
ii. Proses enkripsi dilakukan ke atas kunci yang digunakan untuk membolehkan
maklumat rahsia dibaca dan disembunyikan.
iii. Aplikasi ini dilarikan dibawah platform Windows XP.
iv. Fail imej berformat bitmap (.bmp) 24 bit digunakan sebagai objek yang
menyimpan maklumat rahsia.
v. Kaedah steganografi yang digunakan adalah bit yang paling kanan dan juga
teknik penyusunan piksel secara rawak
vi. Proses kriptografi yang digunakan ialah kriptografi MD5.
1.5 Latar Belakang Masalah
Penghantaran, penyimpanan maklumat yang mempunyai kandungan yang
sulit dan peribadi memang wajar untuk dilindungi daripada diketahui oleh orang
lain. Sesetengah individu mungkin menyimpan maklumat akaun bank seperti
nombor pin kad kredit di dalam komputer peribadi mereka, dan maklumat tersebut
mungkin terdedah kepada bahaya jika sesorang individu lain yang menceroboh ke
dalam komputer tersebut. Untuk membantu dalam mengawal dan memperbaiki
keselamatan maklumat, sesuatu kaedah perlu digunakan bagi memastikan maklumat
tersebut jauh dari ancaman dan berada dalam keadaan selamat iaitu tidak diketahui
oleh orang lain.
Justeru, steganografi merupakan kaedah yang dapat membantu untuk
menyembunyikan kandungan data ataupun maklumat yang hendak dirahsiakan.
Walaupun enkripsi boleh dilakukan, tetapi proses steganografi lebih efektif untuk
dipraktikkan; ini adalah kerana proses steganografi hanya melibatkan proses yang
mudah seperti menyembunyikan maklumat tersebut dari pandangan kasar individu
lain tanpa mengubah kandungan asal maklumat itu. Malangnya, steganografi sahaja
tidak memadai, kerana keselamatan data masih belum dapat dijamin seratus peratus.
Maklumat steganografi diproses dengan menggunakan teknik yang mudah dan tahap
kerumitan yang rendah. Jadi, jika ada pihak yang mengetahui bahawa maklumat itu
ada disembunyikan maka proses untuk mendapatkan semula dan membaca
maklumat tersebut mudah dilakukan kerana kandungan maklumat tersebut tidak
langsung diubah tetapi ianya hanya disembunyikan.
Untuk mengatasi masalah itu, bantuan enkripsi terhadap kata kunci
dilakukan supaya kawalan sekuriti dapat dipertingkatkan. Ini bermaksud, sebelum
maklumat steganografi dapat diungkai, ianya memerlukan kata kunci dari fail teks
yang mengandungi cara pemprosesan steganografi. Sesudah itu, barulah individu
tersebut dapat melihat maklumat yang telah disembunyikan itu. Di sebabkan aplikasi
meningkatkan tahap sekuriti maklumat, maka kata kunci yang menyimpan corak
pemprosesan akan dienkrip dan hanya boleh dibaca dengan menggunakan kaedah
yang betul.
1.6 Kepentingan Projek
Aplikasi ini dibangunkan adalah kerana untuk melindungi kepentingan data
rahsia dengan teknik steganografi dan kriptografi. Ini adalah penting bagi
meningkatkan sekuriti ke atas maklumat dan juga untuk melindungi kebebasan
pengguna untuk merahsiakan maklumat mereka.
BAB II
KAJIAN LITERATUR
2.1 Pengenalan kepada Steganografi dan Kriptografi
Steganografi merujuk kepada penyembunyian data (selalunya di rujuk
sebagai mesej rahsia) didalam sesuatu objek. Justeru itu, kewujudan mesej rahsia
tadi tidak diketahui oleh orang lain melainkan mereka yang diberitahu mengenai
kewujudan mesej rahsia tersebut. Steganografi telah mula digunakan dan boleh
dikaitkan dengan seorang jeneral Greek, Herodotus (440 BC) yang mencukur
rambut hamba abdinya dan menulis mesej amaran untuk menjajah Parsi. Setelah
rambut hamba abdi tersebut telah panjang dan menutupi mesej tersebut, hamba
tersebut telah dihantar merentasi kawasan musuh untuk bertemu dengan seorang
jeneral yang lain. Dengan peredaran masa, steganografi masih lagi digunakan dan
juga diimplementasi didalam bidang perkomputeran. Media seperti fail imej, data
audio dan juga perisian telah digunakan (Stamp. M, 2006).
Proses steganografi telah dipelbagaikan untuk memastikan supaya teknik ini
dapat menjamin maklumat rahsia supaya susah untuk diungkai. Antara teknik
steganografi yang biasanya digunakan adalah seperti kaedah LSB(least significant
bit) , iaitu kaedah ini memanipulasikan bit terakhir bagi sesebuah media seperti fail
imej supaya maklumat rahsia dapat disimpan kedalam fail imej tersebut. ‘Digital
Watermarking’ juga merupakan salah satu kaedah penyembunyian data tetapi ianya
digunakan untuk tujuan yang berlainan. Sebagai contoh penggunaan watermarking
ialah pengecam yang tidak dapat dilihat digunakan pada muzik digital supaya
apabila sesuatu bahan itu dicetak rompak, bahan tersebut dapat dikenalpasti
ketulenannya. (Stamp. M, 2006).
Manakala kriptografi ialah merupakan proses pengubahsuaian sesuatu
maklumat kepada sesuatu bentuk yang tidak dapat difahami. Ia melibatkan proses
enkripsi iaitu membuat kod-kod rahsia supaya maklumat asal sesebuah mesej dapat
di ubah kepada sesuatu yang sukar untuk difahami, dan juga proses dekripsi iaitu
mengekstrak semula maklumat enkripsi kepada bentuk maklumat yang asal iaitu
kepada bentuk yang boleh difahami. Kadangkala penggunaan kunci dalam teknik
kriptografi digunakan, dengan ini pihak yang mempunyai kuncinya sahaja yang
dapat memproses dan mengetahui makna kod rahsia tersebut.
Perbezaan antara steganografi berbanding kriptografi dapat dilihat dari segi
matlamat, dan cara teknik tersebut berfungsi. Perbezaan steganografi dan
kriptografi dipaparkan pada Rajah 2.1 dan Rajah 2.2
2.2 Teknik – teknik Steganografi
Kini steganografi mempunyai beberapa teknik yang boleh
diimplementasikan. Antara teknik yang selalunya digunakan ialah seperti LSB,
Variable sized LSB, RPP dan juga DFT. Berikut merupakan penerangan ringkas
mengenai teknik-teknik yang disebutkan:
Mesej Rahsia
Algoritma Penyembunyian
Objek pembawa digital
Fail Stego Algoritma pengekstrakan
Mesej Rahsia
Teks
Enkripsi
Kunci rahsia
Teks Sifer Dekripsi
Teks
Kunci rahsia
Rajah 2.2: Model kriptografi
Rajah 2.1: Model steganografi
2.2.1 Teknik LSB
Teknik ini menggunakan bit terakhir bagi sesuatu bait untuk menyimpan data.
Sebagai contoh jika suatu 3 piksel bagi 24 bit imej (True Color Images) dan
maklumat yang hendak disimpan ialah huruf A iaitu 10000011 maka nilai binari
untuk piksel tersebut akan menjadi seperti berikut: (Tan, K.Y, 2005)
Bit asal imej suatu piksel: Bit piksel yang mempunyai maklumat
Steganografi :00101100 10101100 10101000 00101101 10101100 1010100000101011 01101000 00101011 00101010 01101000 0010101000101010 00111001 00101010 00101011 00111001 00101010
2.2.2 Teknik Variable sized LSB
Teknik ini masih lagi seperti teknik LSB yang biasa tetapi
penggunaan bit yang dimanipulasikan digandakan bilangannya kepada 4,
dengan ini jika suatu imej yang mempunyai resolusi 1024 x 768 maka ianya
boleh menyimpan sebanyak 1 MB data rahsia (Tan, K.Y, 2005). Contoh
pemanipulasian bit adalah seperti di bawah:
00101000 10100011 10101000
2.2.3 Penyusunan Piksel Secara Rawak
Teknik ini menyusun bit maklumat kedalam imej secara menyeluruh dan rawak.
Penyusunan tersebut sudah ditentukan iaitu dengan penyusunan berdasarkan kaedah
RPP. Algoritma Kriptografi Ultra menghasilkan kedudukan piksel yang diperlukan
untuk menyimpan data berdasarkan kepada kata laluan yang diberikan.
2.2.4 Teknik Discrete Fourier Transition
Teknik ini menggunakan 4 bit paling kiri iaitu bit yang paling kiri sebagai pengecam
kepada nilai binari sesuatu aksara dan jika bit yang dipadankan itu adalah sama
dengan nilai bit maklumat yang hendak disembunyikan maka indeks bit perwakilan
kepada maklumat tersebut disenaraikan. Untuk memahaminya dengan lebih jelas,
sedikit contoh dibawah boleh membantu:
Anggap bit dibawah adalah perwakilan kepada imej bagi ‘True Color Image’.
00101100 10101100 10101000
00101011 01101000 00101011
00101010 00111001 00101010
dan anggap perwakilan bagi indeks untuk bit maklumat adalah merujuk kepada
berikut:
9 = menandakan tiada bit indeks yang terlibat
8 = nombor indeks bagi bit yang paling kiri
1 = nombor indeks bagi bit yang paling kanan
Jadi jika suatu maklumat seperti huruf A (perwakilan binari: 10000011) hendak di
sembunyikan di dalam piksel tersebut maka nilai bagi 4 bit yang paling kiri akan di
padankan dengan nilai bit bagi huruf tersebut. Jika ianya dijumpai maka nombor
indeks bagi bit perwakilan kepada bit huruf tadi dicatatkan.
contohnya:
nilai A (10000011) yang akan disembunyikan
00101100 10101100 10101000 (indeks perwakilan bagi baris ini ialah
6,7,7)
00101011 01101000 00101011 (indeks perwakilan bagi baris ini ialah
8,8,8)
00101010 00111001 00101010 (indeks perwakilan bagi baris ini ialah
6,6,9)
maka indeks bagi perwakilan maklumat huruf A ialah 677888669
(Madani et al, 2007 ).
2.3 Teknik-Teknik Kriptografi
Kriptografi merupakan kaedah penyulitan maklumat kepada sesuatu yang tidak
dapat difahami. Antara teknik yang akan dibincangkan adalah teknik kriptografi
seperti berikut :
2.3.1 AES (Advanced Encryption Standard)
AES adalah berdasarkan kepada algoritma Rijndael dan ianya menggunakan
sifer blok pengiraan matematik yang berulang kali. Tidak sepeti DES (Data
Encryption Standard), algoritma AES bukanlah berjenis sifer fiestal. Berikut
menerangkan fakta mengenai AES: (Stamp, M, 2006).
i. Terdapat tiga blok saiz iaitu 128, 192, atau 256 bits ii. Tiga jenis panjang kunci iaitu 128, 192, atau 256 bits iii. Jumlah bagi pusingan adalah pelbagai iaitu dari 10 hingga ke 14 dan ianya
bergantung kepada panjang kekunci. iv. Setiap pusingan itu mempunyai empat fungsi iaitu di dalam 3 lapisan,
antaranya:
a. Penukaran bait (lapisan tidak linear)
b. Pergerakan baris (lapisan pencampuran linear)
c. Pencampuran lajur (lapisan tidak linear)
d. Tambah kekunci pusingan (lapisan kunci tambahan)
2.3.2 Twofish
Twofish diperkenalkan oleh Bruce Schneier, John Kelsey, Doug Whiting,
David Wagner, Chris Hall, dan Niels Ferguson. Twofish merupakan 128 bit blok
sifer dan ianya mengandungi enam belas pusingan bagi memastikan keselamatan
maksimum. Twofish juga dikatakan fleksibel kerana ianya dapat menerima sebarang
saiz kekunci tambahan serta dapat diimplementasikan pada pelbagai platform dan
juga aplikasi. (Abd Rahim,M.F, 2004).
2.3.3 Tiny Encryption Algorithm (TEA)
TEA menggunakan 64 blok bit dan 128 bit kekunci. Algoritmanya
menganggap struktur pengiraan adalah dengan 32 bit perkataan dan ini bermaksud
semua pengiraannya melibatkan modulo 232. Jumlah pusingan untuk TEA adalah
tidak di tetapkan tetapi penggunaan 32 pusingan dianggap selamat. Untuk maklumat
tambahan, TEA bukanlah sifer Feistel maka dengan itu, enkripsi dan dekripsi
memerlukan proses yang berlainan. (Stamp.M, 2006).
2.3.4 MD5 Message Digest Algorithm
MD5 dibangunkan oleh Ron Revest. Algoritma MD5 menerima input yang
panjangnya adalah secara rawak dan menghasilkan ouput 128 bit mesej hadam.
Input yang diproses adalah dalam 512 blok. Berikut merupakan cara pemprosesan
MD5: (Stalling,W. 1999).
Langkah 1 : Penambahan Bit-bit pelapikMesej adakan dipadatkan supaya panjangnya adalah berselaras dengan 448
modulo 512. Langkah 2 : Penambahan panjang
64 bit mewakili panjang didalam bit bagi mesej asal akan ditambahkan
kepada hasil dari Langkah 1. Jika panjang tersebut telah melebihi 264 maka
barisan bawah 64 bit akan digunakan.Langkah 3 : Penentuan saiz daftar MD
128 bit ruangan memori akan digunakan untuk memegang hasil
pertengahan dan akhir fungsi hash ini.Langkah 4: Memproses mesej dalam 512 bit
Proses utama kaedah ini melibatkan 4 pusingan dan setiap pusingan akan
menerima input 512 blok yang sedang diproses dan 128 bit daftar bagi
ABCD dan seterusnya membaharui kandungan daftar tersebut.
Langkah 5 : OutputSetelah semua 512 blok diproses maka output bagi pemprosesan adalah 128
bit mesej hadam.
2.3.5 Secure Hash Algorithm (SHA-1)
Algoritma SHA-1 menerima input mesej yang kurang daripada 264 bit dan
menghasilkan output 160 bit mesej hadam. Input diproses dalam 512 bit blok.
Langkah-langkah bagi SHA adalah sama seperti MD5 cuma terdapat perbezaan dari
segi saiz pemprosesan bit. Algoritma SHA dikatakan lebih selamat kawalan
sekuritinya ke atas brute force attacks (Stalling,W. 1999).
2.4 Struktur Imej Berjenis Bitmap
Fail berjenis bitmap telah direka oleh Windows dan mempunyai .bmp
sebagai identiti kepada fail tersebut. Fail ini disimpan di dalam DIB (device
independent bitmap) format yang membolehkan Windows untuk memaparkan
bitmap tersebut kepada apa jua jenis peranti paparan. Setiap bitmap file
mengandungi kepala fail bitmap, maklumat kepala bitmap, jadual warna dan juga
tatasusunan bait yang menakrifkan bit-bit bitmap tersebut. Fail tersebut mempunyai
format seperti berikut:
Jadual 2.1 : Struktur imej bitmap
FORMAT PENERANGANBITMAPFILEHEADER bmfh; Mengandungi maklumat seperti jenis, saiz, dan
paparanBITMAPINFOHEADER bmih; Berkaitan dengan dimensi, jenis kompress, dan
format warnaRGBQUAD aColors[]; Elemen warna dalam bitmapBYTE aBitmapBits[]; Bit bit dalam bitmap
Di sini disertakan juga jadual rujukan lengkap bagi bilangan bait untuk format fail
berjenis bmp. Untuk melihat dengan lebih jelas kandungan dan kedudukan bait
dalam fail tersebut, aplikasi seperti Editor heksadesimal perlu digunakan contohnya
XVI32.
FORMAT BIL. BAIT
BMP FILE
HEADER
Header File 2File Size (Little Endian) 4Reserve Space 1 2Reserve Space 2 2Offset Address for StartData 4
Jadual 2.2 : Bilangan bait bagi format fail bmp
BMP
INFORMATIO
N
HEADER
Information Header Structure Size 4Image width (pixels) 4Image height (pixels) 4Number of graphic planes 2Number of bits per pixel 2
FORMAT BIL. BAITCompression Type 4Image Data Size (bytes) 4Horizontal pixels per meter 4Vertical pixels per meter 4Number of colors used in the bitmap 4Number of colors that are 'important' for
the bitmap.
4
2.5 Protokol Penghantaran Fail
Protokol Penghantaran Fail merupakan suatu protokol yang membolehkan
penghantaran fail dilakukan dari komputer pelanggan ke pelayan. Dengan adanya
protokol ini ianya memudahkan lagi bagi fail-fail untuk dikongsi didalam rangkaian
untuk tujuan penghantaran dan muat turun. Protokol ini dilarikan dibawah
Transimission Control Protocol(TCP) dan lazimnya ia melibatkan port 21. FTP
mempunyai tiga mod iaitu active mode, passive mode dan juga extended passive
mode dan mod-mod ini mempunyai cara implementasi perhubungan antara
pelanggan dan pelayan yang berbeza. (wikipedia, 2007)
Disebabkan oleh penghantaran fail menggunakan protokol ini tidak dienkrip
maka untuk pengguna meletakkan maklumat (berbentuk teks) mudah untuk
dieksploitasi oleh pengintip. Justeru dengan itu, untuk membolehkan pengguna
meletakkan maklumat rahsia supaya tidak dapat dibaca oleh pengintip, teknik
steganografi perlu disertakan semasa penghantaran. Dengan ini, maklumat yang
dihantar dapat diselamatkan dari terbongkar dan dibaca oleh pihak lain.
2.6 Kajian Aplikasi Yang Sedia Ada
Beberapa aplikasi yang sedia ada pada masa kini telah dijadikan kajian bagi
mengenal pasti kekurangan dan juga kelebihan aplikasi tersebut agar dapat dijadikan
panduan dalam membangunkan projek. Banyak aplikasi yang berkaitan dengan
steganografi pada masa kini dan kebanyakkan aplikasi tersebut boleh diperolehi
secara percuma dari Internet. Semua aplikasi mempunyai cara pemprosesan mereka
yang tersendiri. Berdasarkan kajian forensik, dapat disimpulkan bahawa
steganografi melibatkan beberapa teknik seperti yang disenaraikan pada Jadual 2.3:
Jadual 2.3: Teknik forensik steganografi
TEKNIK PENJELASANKemasukan Dalam
Kumpulan Data
Teknik ini menyembunyikan data kepada fail hos seperti
audio atau grafik pada kawasan fail yang boleh diubah.
Selalunya, data dimasukkan pada bahagian yang sama pada
fail hos.Data Beralgoritma Teknik ini menggunakan algoritma untuk memasukkan data
dengan menentukan tempat pada fail hos.Tatabahasa Teknik menghasilkan teks yang tersendiri pada teks hos
berdasarkan kehendak data yang hendak disembunyikanKemasukan Luar
Kumpulan Data
Teknik ini memasukkan data pada bahagian yang spesifik
yang tidak digunakan untuk pembacaan fail hos. Kemasukan Data Ganti Teknik ini menggantikan maklumat dalam fail hos kepada
maklumat yang hendak disembunyikan.Penghasilan Objek terbuka Teknik ini menghasilkan fail hos yang tersendiri berdasarkan
data yang hendak disembunyikan. Fail hos yang dihasilkan
boleh dalam pelbagai format seperti audio,video atau imej
Aplikasi-aplikasi yang sedia ada akan dijadikan sebagai rujukan serta kajian
ditunjukkan pada Jadual 2.4 :
Jadual 2.4: Kajian terhadap aplikasi steganografi sedia ada
Aplikasi Teknik Komen
JP Hide-and-Seek Pemanipulasia
n Jadual Warna
Piksel
Menggunakan enkripsi blowfish. Terdapat
dalam versi DOS dan Linux. Menggunakan
fail hos berjenis JPEG
S-Toolsv4 dan S-Toolsv3 Pemanipulasia
n Jadual Warna
Piksel
Merupakan aplikasi steganografi untuk
Windows dan menyokong fail berjenis
GIF, bmp, atau .wav
Digital Picture Envelope Pemanipulasia
n Jadual Warna
Piksel
Menggunakan teknik BPCS-
Steganographic yang dreka oleh Eiji
Kawaguchi pada 1997. Menggunakan
fail .bmp dan boleh menyimpan 50-100%
maklumat daripada fail hos tanpa
mengubah saiz fail tersebut.
Camouflage Menyusun atur
kedudukan data
Boleh menyokong beberapa maklumat
dengan menggunakan satu fail. Mengubah
saiz asal fail hos.
Projek PSM: Steganografi
Menggunakan Teknik
Variable Sized Insertion
Pemanipulasia
n Jadual Warna
Piksel
Boleh menyembunyikan 50% maklumat
menggunakan fail hos 8 bit gray-scale.
Teknik yang biasa digunakan dan tidak
disokong oleh sebarang enkripsi atau kata
laluan.
2.7 Kajian Terhadap Projek Yang Dibina
Setelah melakukan beberapa kajian terhadap aplikasi yang sedia ada, maka
cara pemprosesan steganografi bagi projek ini adalah berdasarkan pemanipulasian
Jadual warna piksel, menyusun atur kedudukan data dan disokong dengan
penggunaaan kriptografi keatas kunci pemprosesan. Cara pemprosesan ditunjukkan
seperti rajah dibawah:
Berdasarkan Rajah 2.3, suatu mesej rahsia akan disembunyikan ke dalam
suatu fail hos bitmap, sebelum ianya diselitkan, suatu algoritma akan membaca teks
tersebut dan menukar kepada kod binari yang sepadan. Algoritma pemetaan dan
penyembunyian akan memainkan peranan dalam membaca binari mesej dan
menentukan kedudukan data di dalam fail hos.
Selepas semua aksara yang mewakili mesej rahsia tersebut habis dibaca dan
diterjemahkan kepada binari maka penjanaan kunci pemprosesan dilakukan. Semasa
penjanaan kunci pemprosesan, kedudukan data ditentukan pada fail hos bitmap.
Selepas itu, fail hos bitmap dan juga kunci dihantar kepada penerima. Sekiranya
penerima hanya mempunyai fail hos, maka kebarangkalian untuk mengekstrak
mesej rahsia akan bertambah sukar dan mustahil. Kunci yang dienkrip memainkan
peranan yang besar kerana tanpa kunci tersebut, data yang disembunyikan tidak
dapat diproses dengan cara yang betul.
Mesej Rahsia
AlgoritmaPemetaan &
Penyembunyian
Objek pembawa digital
Fail Stego Dekripsi kunci pemprosesan
Algoritma Pengekstrakan ke
atas bitmap
Enkripsi ke atas kunci
pemprosesanMesej Rahsia
Rajah 2.3 Cara pemprosesan steganografi bagi projek
Penghantaran fail
Bagi membolehkan penerima memproses dengan jayanya, kunci tersebut
hendaklah didekrip supaya nilai kedudukan data yang disembunyikan dapat
diketahui, selepas itu, suatu algoritma yang membaca kedudukan binari data akan
dilancarkan dan pengekstrakan akan dilakukan ke atas binari data rahsia.
Kemudian, binari data rahsia tersebut akan ditukarkan kepada perwakilan
teks yang boleh difahami. Hasilnya, data rahsia dapat di perolehi dan kawalan
sekuriti keatas data tersebut dapat dipertingkatkan.
Pada rajah 2.4, penghantaran fail ke pelayan tidak selamat jika ianya tidak
dilindungi dengan sebarang teknik sekuriti seperti kriptografi dan sebagainya. Ini
adalah kerana, fail tersebut mudah diperhatikan oleh pengintip dan seterusnya
dicapai bagi mendedahkan maklumat rahsia tersebut. Bagi mengatasi masalah ini,
projek steganografi ini akan melindungi fail yang mengandungi maklumat rahsia
seterusnya menghantar fail tersebut kepada pelayan. Implementasi teknik
steganografi akan dilakukan pada pelanggan, dimana pelanggan perlu mempunyai
aplikasi steganografi. Aplikasi akan melindungi maklumat rahsia seterusya
menghantar maklumat tersebut ke rangkaian internet.
Internet
Pelayan FTP
Pelanggan
Pengintip
Maklumat dihantar
Rajah 2.4: Penghantaran fail ke pelayan dan proses intipan
2.8 Rumusan
Aplikasi yang akan dibangunkan ini akan melibatkan penggunaan teknik
steganografi dan kriptografi ke atas kekunci pemprosesan. Dengan adanya kedua-
kedua teknik ini, maklumat akan dapat disimpan dengan lebih selamat. Tidak
dinafikan terdapat banyak perisian yang bertujuan untuk mengungkai maklumat
rahsia. Disebabkan itu, aplikasi yang dibangunkan ini menggunakan konsep yang
diterangkan sebelum ini (rujuk Rajah 2.3), maka dengan adanya konsep ini ianya
akan dapat memastikan data tidak mudah dibocorkan.
BAB III
METODOLOGI PEMBANGUNAN
3.1 Pendahuluan
Bab ini menerangkan tentang kaedah proses pembangunan projek serta
penyenaraian perkakasan yang digunakan untuk membangunkan projek.
Proses membangunkan projek ini merangkumi fasa-fasa di dalam SDLC seperti fasa
analisis, rekabentuk, implementasi, pengujian dan penyenggaraan. Pemilihan
metodologi pembangunan projek perlulah bersesuaian dengan projek yang hendak
dibangunkan.
Antara model metodologi yang biasa digunakan adalah seperti model air
terjun, prototaip, pengaturcaraan ekstrem, lingkaran, pembangunan secara
pertambahan dan sebagainya. Setiap model mempunyai kelebihan dan tujuan yang
tersendiri. Dalam membangunkan projek ini, model pembangunan secara
pertambahan telah digunakan.
3.2 Model Pembangunan Secara Pertambahan
Model Pembangunan Pertambahan (Increment Development) merupakan
sebuah model yang mengfokuskan pembangunan dan pertambahan terhadap modul-
modul tertentu sehingga modul tersebut berjaya berfungsi seperti yang dikehendaki
dan memberikan hasil seperti yang diinginkan. Model Pembangunan Pertambahan
merupakan salah satu daripada proses ulangan selain daripada model lingkaran.
Kehendak dan kajian awalan diletakkan pada prioriti yang tertinggi iaitu pada awal
fasa model pembangunan.
Setelah pembangunan dimulakan, kehendak pengguna atau sebarang
perubahan terhadap projek akan dibekukan terlebih dahulu sehingga kehendak untuk
proses pertambahan berikutnya dimulakan. Dengan ini, perubahan dan pertambahan
akan sentiasa dilakukan mengikut peringkat semasa proses pembangunan
dijalankan. Model ini melibatkan beberapa proses seperti ditunjukkan pada Rajah
3.1.
Mengenal pasti keperluan
Mengumpukkan keperluan kepada penambahan
Membangunkan pertambahan aplikasi
Merekabentuk aplikasi
Pengintegrasian pertambahan
Pengesahan pertambahan
Pengesahan keseluruhan aplikasi
Aplikasi lengkap
Aplikasi tidak lengkap
Rajah 3.1 Aliran proses pembangunan secara pertambahan
3.2.1 Fasa Kajian Awalan
Fasa kajian awalan merupakan fasa dimana pengumpulan data atau
maklumat dijalankan supaya pembangunan projek yang sebenar dapat difahami dan
konsep aplikasi yang dibangunkan itu lebih tepat. Pada peringkat ini, pelbagai
sumber rujukan yang berkaitan dengan steganografi dan kriptografi dikumpul untuk
dijadikan sebagai maklumat yang membantu dalam mendalami konsep sebenar
aplikasi yang dibangunkan. Kebanyakkan dari sumber rujukan diperolehi dari
internet dan juga buku rujukan. Setelah semua maklumat mencukupi, kajian dibuat
untuk mendapatkan gambaran mengenai aplikasi, ciri-ciri serta kekangan yang sedia
ada dalam membangunkan projek.
3.2.2 Fasa Analisis
Pada fasa analisis, semua maklumat kajian digunakan dalam
mengadaptasikan penggunaan dan konsep yang bersesuaian yang perlu diterapkan
dalam pembangunan projek. Bagi projek ini, analisis dilakukan terhadap proses
steganografi sedia ada dan bagaimana teknik steganografi ini dapat membantu dalam
meningkatkan sekuriti ke atas maklumat. Di samping itu, analisis juga dijalankan
terhadap teknik-teknik kriptografi yang sedia ada untuk menentukan kesesuaian
teknik, kerumitan dan tahap sekuriti teknik yang dikaji. Tidak ketinggalan, fail yang
digunakan dalam membantu penyembunyian berjenis bitmap juga dikaji dengan
mengenal pasti ciri-ciri dan struktur fail tersebut. Pada akhir fasa ini, satu analisis
dijalankan terhadap aliran proses projek supaya logik dan pemahaman terhadap
projek lebih kukuh.
3.2.3 Fasa Rekabentuk
Fasa rekabentuk terbahagi kepada beberapa bahagian iaitu rekabentuk
struktur logikal projek, rekabentuk input dan ouput, rekabentuk algoritma, serta
rekabentuk antaramuka pengguna. Dalam merekabentuk struktur logikal projek,
beberapa aplikasi sedia ada telah dijadikan sebagai rujukan. Ini bertujuan untuk
melihat piawaian ataupun bagaimana aplikasi sedia ada yang berkaitan dengan
projek berfungsi. Rekabentuk struktur logikal projek diperolehi hasil daripada
pemerhatian dan disokong oleh analisis terhadap projek.
Dalam merekabentuk input dan output, proses bagaimana input dimasukkan
dan diproses dikaji dengan melihat kepada aplikasi dan kajian sedia ada Projek
Sarjana Muda sebelumnya. Begitu juga dengan proses merekabentuk output.
Bagi rekabentuk algoritma, algoritma yang diperolehi dari sumber rujukan
dijadikan sebagai bahan yang akan digunakan didalam pembangunan projek.
Algoritma seperti enkripsi, dekripsi dan pemyembunyian data diperolehi daripada
rujukan seperti buku dan internet. Untuk rekabentuk antaramuka pengguna, proses
merekabentuk dibantu dengan pemerhatian terhadap antaramuka aplikasi yang sedia
ada, dan perisian seperti Adobe Photoshop digunakan dalam menghasilkan
antaramuka yang menarik. Hasil rekabentuk antaramuka akan diterangkan pada bab
berikutnya.
3.2.4 Fasa Implementasi
Fasa implementasi merupakan fasa perlaksanaan pembangunan aplikasi
secara teknikal iaitu dengan melibatkan proses pengaturcaraan dan proses lain yang
berkaitan. Disebabkan metodologi yang digunakan adalah metodologi pembangunan
secara pertambahan, maka aliran proses metodologi itu harus diterapkan pada fasa
ini. Ini bermaksud sebelum proses pengaturcaraan dijalankan, setiap kehendak atau
keperluan terhadap aplikasi perlu dikenalpasti terlebih dahulu. Selepas kehendak
tersebut difahami maka proses ini diteruskan dengan pembangunan secara teknikal
termasuk rekabentuk antaramuka dan pengaturcaraan.
Fasa implementasi diteruskan dan setiap pertambahan akan diselitkan dalam
suatu kitaran bagi memastikan aplikasi berfungsi seperti yang dijangkakan. Justeru
itu, proses pertambahan terhadap pembangunan aplikasi akan sentiasa berevolusi.
Walaupun kaedah ini menyamai dengan prototaip evolusi tapi sebenarnya
pembangunan secara pertambahan ini tidak melibatkan sebarang prototaip. Setiap
pertambahan kemudian akan disahkan dan jika tidak memenuhi ciri-ciri keperluan
aplikasi maka kitaran berikutnya akan diteruskan dengan pertambahan fungsi-fungsi
atau pengubahsuaian yang baru.
3.2.5 Fasa Ujian
Setiap pembangunan mestilah diiringi dengan fasa ujian. Tetapi bagi
metodologi yang digunakan ini, setiap kitaran ataupun pusingan pertambahan adalah
melibatkan ujian. Maka untuk fasa ini, ujian yang dimaksudkan ialah ujian secara
menyeluruh terhadap aplikasi. Jika terdapat sebarang masalah, maka ujian akan
diteruskan dengan fasa implementasi yang melibatkan kitaran pembangunan dan
pengubahsuaian.
3.3 Kewajaran Pemilihan Metodologi Pembangunan Secara Pertambahan
Metodologi ini digunakan dalam pembangunan projek steganografi adalah
kerana ianya mempunyai beberapa kelebihan. Antara kelebihan metodologi ini ialah
tahap risiko kegagalan projek yang rendah. Ini kerana setiap fasa implementasi
diulangi dengan fasa pertambahan yang bertujuan untuk memperbaiki aplikasi.
Metodologi ini juga disokong oleh pengujian terhadap setiap kitaran. Selain itu,
pertambahan pada peringkat awal menjadi pemangkin untuk pertambahan dan
pembaikan berikutnya.
Apa yang paling penting, metodologi ini dipilih kerana ianya bersesuaian
dengan cara pembangunan sesebuah aplikasi bagi seseorang pelajar. Ini adalah
kerana metodologi ini membenarkan pengulangan fasa dan pembaikan pada setiap
kitaran. Disebabkan masa pembangunan yang singkat maka kaedah ini juga dapat
membantu dalam mengurangkan risiko kegagalan projek.
3.4 Analisis Keperluan Projek
Dalam membangunkan aplikasi ini, terdapat beberapa keperluan yang telah
dikenalpasti untuk memastikan proses pembangunan berjalan dengan lancar. Antara
keperluan tersebut ialah seperti yang dinyatakan pada Jadual 3.1 dam Jadual 3.2
Jadual 3.1: Senarai keperluan perkakasan
Perkakasan KegunaanKomputer Peribadi dengan
pemprosesan sekurang-kurangnya
1GHZ.
Membangunkan aplikasi steganografi dan
memastikan pemprosesan berjalan dengan
lancar dan memuaskan.Ingatan RAM 256MB ke atas Mengurangkan risiko kekurangan ingatan yang
menyebabkan program tergendalaCakera Keras 20 GB ke atas Menyimpan aplikasi dan data
Jadual 3.2 : Senarai keperluan perisian
Perisian KegunaanMicrosoft Windows XP Sebagai Platfom untuk melarikan aplikasi.Microsoft Visual Basic 6.0 Membangunkan aplikasiAdobe Photoshop CS2 Menghasilkan imej bitmapHeksadesimal editor - XVI32 Melihat kandungan heksadesimal bitmap
BAB IV
REKABENTUK
4.1 Pengenalan
Bab ini akan menerangkan mengenai rekabentuk secara lebih terperinci bagi
projek yang dibangunkan. Pembangunan rekabentuk seperti rekabentuk struktur
logikal projek, rekabentuk input output, rekabentuk modul atau algoritma, serta
rekabentuk antaramuka pengguna diterangkan dengan lebih lanjut. Beberapa kaedah
seperti rajah kes guna, carta alir ataupun gambarajah jujukan digunakan bagi
membantu dalam proses penerangan rekabentuk projek. Rekabentuk ini seterusnya
menjadi langkah pertama sebagai permulaan didalam fasa implementasi.
4.2 Rekabentuk Struktur Logikal Aplikasi
Rekabentuk struktur logikal aplikasi yang dibangunkan ini ditunjukkan pada
Rajah 4.1. Aplikasi ini terdiri daripada empat komponen utama iaitu bahagian
pengekod steganografi, bahagian enkripsi penjanaan kunci, bahagian dekripsi kunci
dan juga bahagian pengekstrakan maklumat steganografi. Fungsi pengekod
steganografi bertindak dengan membaca bit-bit dari fail bitmap, bahagian enkripsi
penjanaan kunci pula akan menghasilkan kunci rahsia yang mengandungi cara
pemprosesan maklumat steganografi. Hasil daripada gabungan dua fungsi ini akan
membentuk suatu fail steganografi yang terdiri daripada fail imej dan juga fail kunci
pemprosesan.
Apabila fail tersebut ingin diekstrak maka fail kunci pemprosesan diperlukan
bagi mendapatkan kedudukan maklumat rahsia. Di samping itu, imej yang
mengandungi maklumat rahsia juga diperlukan bagi membolehkan kunci
pemprosesan dibaca oleh aplikasi dan seterusnya menentukan lokasi kedudukan data
didalam fail imej. Jika fail kunci pemprosesan yang merujuk kepada lokasi tidak
mempunyai data rahsia maka tiada mesej rahsia akan dapat dipaparkan. Tetapi, jika
kunci yang digunakan merujuk kepada lokasi itu mengandungi maklumat rahsia
maka bit-bit didalam imej pada lokasi tersebut akan diekstrak dan akhirnya
ditukarkan kepada aksara.
Pilihan ?
Mula
Sembunyi
Ekstrak
Muat fail bitmap
Baca bit
Masukkan teks atau fail teks
Pembacaan binari teks
Teks > 0
Ya
Tidak
Jana kunci pemprosesan
Enkrip
Simpan
Muat fail bitmap dan kunci
pemprosesan
Dekrip kunci
Pemetaan teks rahsia
Papar maklumat rahsia
Simpan? Ya
Tidak
Tamat
Rajah 4.1 Carta aliran rekabentuk struktur logikal
4.3 Rekabentuk Konsepsual
Rekabentuk konseptual menunjukkan konsep sebenar bagaimana aplikasi
berinteraksi dengan pengguna. Rekabentuk konseptual akan ditunjukkan dengan
menggunakan rajah kes guna yang melibatkan aktor iaitu pengguna aplikasi. Aktor
ingin melakukan penyembunyian data ke dalam fail bitmap akan memilih fail
bitmap yang diinginkan untuk menjadikan fail tersebut sebagai hos penyembunyian.
Kemudian, aktor tersebut akan menaip maklumat rahsia ataupun dengan memilih
fail teks yang mengandungi maklumat rahsia. Seterusnya aplikasi akan melakukan
proses steganografi dan enkripsi untuk membentuk fail steganografi yang terdiri
daripada kunci dan imej.
Bagi aktor yang ingin membuka dan mendapatkan semula teks rahsia,
mereka perlu memilih kunci pemprosesan dan fail bitmap yang mewakili hos
penyembunyian. Selepas itu, aplikasi akan melakukan proses pengekstrakan
maklumat dari kedua-dua fail tersebut dan seterusnya memaparkan semula mesej
rahsia.
Rajah 4.2 Rekabentuk konsepsual
Memilih fail bitmap
Menaip mesej rahsia
Memasukkan fail bitmap dan kunci pemprosesan
Membaca mesej rahsia
Fail bitmap
Mesej rahsia
Aplikasi Steganografi
Kunci Pemprosesan
Fail Data Bitmap
Jana
Mesej rahsia
Aplikasi Steganografi
Kunci Pemprosesan
Fail Data bitmap
Ekstrak
4.4 Rekabentuk Input dan Ouput
Rekabentuk input dan output pula mewakili proses input dan output yang
berlaku ketika pengguna menggunakan apliksi. Input yang diterima dan diproses
dapat memberi gambaran aplikasi semasa pengguna menggunakannya, manakala
output yang dihasilkan memberikan gambaran hasil output selepas pemprosesan
dijalankan.
Rajah 4.3 Rekabentuk input
Rajah 4.4 Rekabentuk output
4.5 Rekabentuk Modul Atau Algoritma
Bagi rekabentuk modul ataupun algoritma, ianya akan menerangkan sedikit
sebanyak mengenai fungsi-fungsi asas yang menjadi penggerak kepada aplikasi
yang dibangunkan. Fungsi asas yang dimaksudkan ialah cara pemprosesan terhadap
sesuatu peristiwa. Contohnya fungsi untuk mengekstrak semula maklumat rahsia.
Rekabentuk modul ini adalah merupakan rekabentuk yang paling kritis kerana ianya
akan digunakan sepenuhnya pada fasa implementasi iaitu didalam proses
mengaturcara program. Pada Jadual 4.1 berikut, beberapa penerangan ringkas
mengenai modul dan fungsinya yang digunakan pada modul tersebut dibincangkan.
Jadual 4.1 Jadual modul dan fungsi
Modul Penerangan
Penyembunyian Modul penyembunyian memainkan peranan dalam memproses
penyembunyian data rahsia bagi aplikasi ini. Antara fungsi yang
terlibat dalam modul penyembunyian ialah :
- getImage : memuatkan imej kepada aplikasi
- readPixel : membaca bit-bit pada fail imej
- writePixel : menulis bit-bit untuk menghasilkan fail imej
yang baru.
- addMessageToImage : mendapatkan input (mesej) dan
menyimpan maklumat ke dalam fail imej.
- SetSteganoKey: menentukan kedudukan maklumat.
- generateKey: menulis dan mengenkrip kunci
pemprosesan kepada fail berformat .skey.
Modul PeneranganDan dibawah tedapat beberapa fungsi tambahan kepada modul
penyembunyian .
- fileManipulation: menghasilkan identiti kepada fail imej
supaya maklumat fail tersebut dapat diwakilkan kepada
bentuk hash.
- getPassword: mendapatkan katakunci supaya mesej
rahsia dapat diproses.
- getFileName : mendapatkan nama fail imej hos.
Pengekstrakan Modul ini berfungsi untuk mengekstrak semula maklumat rahsia
daripada fail bitmap dan fail kunci pemprosesan. Berikut
merupakan fungsi-fungsi asas modul ini:
- getImage : memuatkan imej kepada aplikasi
- readPixel : membaca piksel imej
- setSteganoKey: Menentukan kedudukan maklumat.
- getSteganoText : Mendapatkan maklumat pada
kedudukan yang betul.
- StrConv : menukar perwakilan nilai binari dalam bentuk
unikod kepada rentetan.
4.6 Rekabentuk Antaramuka Pengguna
Antaramuka pengguna yang direka pada fasa ini mestilah menepati dengan
beberapa ciri seperti yang telah dikaji pada fasa analisis iaitu antaranya ialah ramah
pengguna, menarik, serta mengikuti piawaian antaramuka yang digunakan oleh
kebanyakkan aplikasi semasa. Rajah seterusnya memaparkan antaramuka bagi
aplikasi projek ini.
Rajah 4.5 Antaramuka pengguna untuk penyembunyian mesej
Merujuk kepada Rajah 4.5, Antaramuka ini bertujuan untuk mendapatkan
maklumat rahsia dan juga fail hos bitmap. Kotak mesej rahsia bertujuan
membolehkan pengguna memasukkan mesej rahsia samada menaip ataupun
membuka fail teks yang sedia ada. Butang pencarian fail bitmap pula bertujuan
untuk memilih fail hos yang akan digunakan untuk proses penyembunyian mesej
rahsia.
Paparan mesej interaktif
Status Penjanaan rawak
Pilihan Menu utama
Popup menu
Menu pilihan bagi kotak mesej
Mesej arahan
Kotak Mesej
Butang Pencarian fail bitmap
Paparan direktori imej
Butang Penyembunyian
Rajah 4.6 Antaramuka pengguna untuk pengekstrakan mesej
Bagi rajah 4.6 pula, Butang pencarian fail bitmap ialah bertujuan untuk
mencari fail bitmap yang mengandungi maklumat rahsia. Pilihan cara pengekstrakan
juga diletakkan bagi tujuan pemilihan kaedah pengekstrakan yang betul iaitu samada
menggunakan kata laluan ataupun menggunakan kunci pemprosesan. Kotak mesej
rahsia disediakan bertujuan untuk memaparkan mesej rahsia sesudah mesej
diekstrak oleh aplikasi apabila butang pengekstrakan diklik oleh pengguna.
Kotak Mesej rahsia
Kata laluan
Butang Pengekstrakan
Menu pilihan bagi kotak mesej
Pilihan kaedah pengekstrakan
Paparan direktori Imej Butang Pencarian
fail bitmap
Rajah 4.7 Antaramuka pengguna untuk tetapan aplikasi
Rajah 4.7 memaparkan antaramuka yang menyediakan pengguna untuk
memilih tetapan yang telah sedia ada pada aplikasi. Aplikasi membenarkan tetapan
dibuat keatas proses steganografi, proses kriptografi dan juga tetapan keatas sifat
aplikasi seperti mengaktifkan animasi, mengingati kedudukan, dan sebagainya.
Pilihan tetapan aplikasi
Butang simpan tetapan
Tetapan sedia ada
Rajah 4.8 Antaramuka pengguna untuk penghantaran data
Bagi Rajah 4.8 pula, antaramuka ini bertujuan untuk membolehkan pengguna
menghantar fail-fail yang mengandungi maklumat rahsia ke pelayan. Untuk
penghantaran maklumat, aplikasi ini menyediakan penghantaran menggunakan FTP.
Pengguna perlu memberi nama pelayan serta memberikan ID pengguna dan juga
kata laluan untuk membolehkan penghantaran data dilakukan.
Pilihan penghantaran
data
Butang aktifkan sambungan ke
serverRuang ID Pengguna
Ruang nama Server FTP
Ruang Kata Laluan
BAB V
IMPLEMENTASI DAN PENGUJIAN
5.1 Pengenalan
Didalam bab ini, pengendalian projek steganografi dan juga kriptografi
difokuskan dengan lebih lanjut dari segi teknikal. Ini bermakna, implementasi projek
yang melibatkan pengaturcaraan, dan logik aplikasi seperti algoritma diterangkan
dengan lebih lanjut. Di samping itu, perbincangan mengenai pengujian terhadap
input, ouput dan tindakan yang berlaku semasa menggunakan aplikasi turut
disentuh.
5.2 Persekitaran Pembangunan
Dalam membangunkan aplikasi ini, beberapa faktor seperti penggunaan
perkakasan dan perisian yang betul diambil kira bagi memastikan projek dapat
dijalankan dengan lancar tanpa sebarang masalah. Persekitaran pembangunan
aplikasi ini merangkumi aspek seperti penggunaan bahasa pengaturcaraan yang
bersesuaian, platfom yang akan digunakan untuk melarikan projek serta kekurangan
yang perlu diambil kira semasa membangunkan projek.
Untuk membangunkan aplikasi, penggunaan perisian Microsoft Visual Basic
6.0 digunakan. Ini adalah kerana, perisian ini merupakan salah satu dari cara untuk
membangunkan sesebuah aplikasi dengan pantas. Microsoft Visual Basic 6.0
menggunakan bahasa pengaturcaraan 4GL(Fourth Generation Language) yang
memudah dan meringkaskan cara pemprograman aplikasi. Disamping itu, perisian
ini membolehkan aplikasi yang dibangunkan untuk berinteraksi dengan Windows
API (Application Programming Interface) yang perlu digunakan dalam
membangunkan sesetengah modul.
Disebabkan aplikasi perlu berinteraksi dengan fail sistem pengoperasian,
maka platfom yang paling sesuai untuk melarikan aplikasi yang dibangunkan
menggunakan Visual Basic ialah Microsoft Windows XP. Ini adalah kerana
Windows XP menyediakan interaksi program yang diperlukan oleh aplikasi seperti
fail sistem berformat .INI, penggunaan registry serta beberapa library terbaru yang
mengandungi kod aturcara untuk penggunaan sesetengah fungsi pada aplikasi.
Dengan kemudahan yang disediakan, maka gabungan Microsoft Visual Basic 6.0
dan Microsoft Windows XP adalah yang paling sesuai.
5.3 Implementasi Aplikasi
Dalam membangunkan aplikasi, langkah awal yang perlu dilakukan ialah
instalasi Microsoft Visual Basic 6.0 pada komputer. Microsoft Visual Basic 6.0
merupakan perisian yang fleksibel untuk digunakan kerana perisian ini tidak
memerlukan sumber ingatan yang terlalu tinggi untuk membangun dan melarikan
sesuatu aplikasi.
Disamping itu, perisian lain diperlukan untuk menghasilkan imej ialah
seperti Adobe Photoshop CS2, ataupun perisian sedia ada Windows seperti Paint.
Penghasilan imej berformat bmp penting untuk kegunaan aplikasi kerana proses
steganografi yang dibangunkan akan menggunakan fail imej berformat bmp untuk
menyimpan data.
Aplikasi yang dibangunkan dibahagikan kepada beberapa bahagian utama
yang penting. Bahagian penting ini yang juga dipanggil modul merupakan
komponen utama yang melarikan aplikasi steganografi dan kriptografi ini. Dengan
adanya pembahagian modul, tugas mengaturcara dan mengklasifikasikan kod
aturcara adalah lebih teratur.
5.3.1 Modul utama dan sub modul.
Dalam membangunkan aplikasi ini, beberapa modul utama telah dikenalpasti
iaitu modul steganografi, modul kriptografi, modul penghantaran dan juga modul
tetapan aplikasi. Didalam setiap modul utama, terdapat beberapa sub modul yang
memainkan peranan dalam membantu modul utama beroperasi.
Sub modul merupakan modul kecil yang penting untuk dibangunkan demi
memastikan modul utama dapat berfungsi dengan lebih baik. Jadual 5.1
menerangkan mengenai hubungan modul utama dan sub modul yang berkaitan.
Jadual 5.1 Jadual modul utama dan sub modul
Modul Utama Tujuan Sub Modul TerlibatSteganografi - Menyembunyikan maklumat
rahsia ke dalam fail imej
- Mengekstrak maklumat rahsia dari
fail data imej.
- Control X
- FileManipulation
- Ultra
Kriptografi - Melakukan proses MD5 keatas
kata laluan dan juga fail imej.
- Control X
- FileManipulation
- clsMD5Tetapan Aplikasi Mendapatkan nilai-nilai tetapan dan
juga mengadaptasikan animasi pada
aplikasi
- Animation
- Startup
Jadual 5.2 Jadual penerangan sub modul
Nama Sub Modul Senarai Fungsi Tujuan
Animation
- Mengawal
animasi pada
aplikasi
bannerScreenSlider(reff as
Integer)
Memaparkan mesej-mesej
pada Paparan mesej
interaktif.- lineAnimation()
- miniSkin()
- mousemoveScroller(ScrollText
As String)
- openSesame()
- noAnimation()
Mengawal pergerakkan
animasi.
playSound() Memainkan audio pada
aplikasi.savePosition() Merekod posisi X dan Y
Nama Sub Modul Senarai Fungsi Tujuan
Control X (cx)
- Mengawal objek
pada aplikasi serta
fungsi-fungsi
tambahan yang
lain.
addMessageToImage() Memasukkan mesej rahsia
kedalam imej.checkImageAndText(selectedFile
As String)
Memeriksa fail imej dan teks
sebelum melakukan proses
steganografi.checkPassword() Memeriksa kata laluan yang
disimpan untuk pengolahan
susunan.EraseImage() Memadamkan maklumat
rahsia yang sedia ada pada
imejextractMethod (mode As String,
file As String)
Mengekstrak maklumat
rahsia dari fail imej.
generateKey(argument As String) Menghasilkan kunci
pemprosesan
saveSKey() Menyimpan fail kunci
pemprosesan yang
dihasilkan.GetFromINI (Section As String,
key As String, Directory As
String) As String
Membaca nilai tetapan dari
fail .INI aplikasi.
WriteToINI (Section As String,
key As String, KeyValue As
String, Directory As String)
Menyimpan tetapan pada fail
.INI aplikasi.
WritePixel (ByVal aByte As Byte) Menulis semula perwakilan
piksel ke atas fail imej baru.
ReadPixel() As Byte Membaca piksel pada imej.
GetNextPixel() Membaca piksel imej yang
berikutnya.
Nama Sub Modul Senarai Fungsi Tujuan
FileManipulation
– Berfungsi untuk
mendapatkan nilai
MD5 bagi sesuatu
fail imej
getFileMD5(path As String) Mendapatkan nilai MD5
bagi sesuatu fail dan
memaparkannya dalam
bentuk rentetan.GetMD5$ (ByRef sFileName$) Membaca nilai MD5 setelah
dijanakan.InputFile$ (ByRef sFile$) Mendapatkan kandungan fail
sebelum MD5 dihasilkan.
MD5String(ByRef sString$) Menjana nilai MD5 bagi
sesebuah fail.
Startup
- Berfungsi untuk
membaca semua
tetapan aplikasi
sebelum
memaparkannya.
Main() Aplikasi akan melarikan
fungsi ini terlebih dahulu.init(obj As String) Menentukan animasi dan
kedudukan objek grafik.loadSetting() Membaca tetapan pada fail
settings.ini untuk kegunaan
aplikasi.checkRelatedFile() Memeriksa fail-fail penting
yang digunakan oleh aplikasi
seperti :
- settings.ini
- fail audiocheckINI() Memeriksa kandungan dan
kewujudan fail settings.ini
sebelum aplikasi
membacanya.
Nama Sub Modul Senarai Fungsi Tujuan
Ultra
- Menyediakan
fungsi-fungsi asas
steganografi
SetSteganoKey(ByVal KeyString
As String)
Memproses kata laluan.
SetSteganoText(TextIn As String)
As String
Memproses mesej
steganografiGetSteganoText(TextIn As String)
As String
Mendapatkan mesej.
GetSteganoPix() As Byte Mendapatkan piksel fail imej
SetSteganoByte(ByVal aByte As
Byte)
Menukarkan mesej
steganografi yang diproses
kepada bentuk bait.clsMD5
- Klas untuk
kriptografi MD5
berasaskan
rentetan.
CalculateMD5 (strMessage As
String) As String
Mendapatkan nilai MD5
bagi sesuatu rentetanMD5StringChange (lngnum As
Long) As String
Menukar rentetan kepada
nilai yang sepadan
5.3.2 Penggunaan Library Sedia Ada Windows
Microsoft Windows XP sememangnya mempunyai library untuk digunakan
oleh aplikasi yang ingin dilarikan dibawah platfom tersebut. Dengan adanya library,
tugas-tugas yang berkaitan dengan sistem pengoperasian ini akan menjadi lebih
mudah kerana aplikasi dapat menggunakan sumber sedia ada pada Windows bagi
menjalankan sesuatu tugas tanpa membina suatu kod aturcara yang baru. Antara
library yang digunakan oleh aplikasi ini disenaraikan pada Jadual 5.3.
Jadual 5.3 Jadual penggunaan Library Windows XP pada aplikasi.
Nama Library Fungsi yang digunakankernel32.dll
-Mengawal operasi fail dalam
GetTickCount
CloseHandle
Windows. ReadFile
CreateFile
GetFileSizeadvapi32.dll
- Mengandungi fungsi untuk
proses kriptografi.
CryptAcquireContext
CryptCreateHash
CryptHashData
CryptDeriveKey
CryptEncrypt
CryptDecrypt
CryptGetHashParam
CryptDestroyKey
CryptDestroyHash
CryptReleaseContextwinmm.dll
- Mengandungi fungsi untuk
memainkan audio.
sndPlaySound
user32.dll
- Mengandungi fungsi untuk
menetapkan lokasi X dan Y
aplikasi.
SetWindowPos
5.3.3 Logik dan Aturcara Modul Utama
Aplikasi ini dibangunkan dengan kod aturcara yang melebihi lima ribu baris.
Kod aturcara yang kompleks ini terdiri daripada fungsi-fungsi steganografi,
kriptografi, kawalan ralat, kawalan animasi dan beberapa fungsi lain. Pada sub topik
ini, aturcara yang akan dibincangkan adalah aturcara yang melibatkan proses utama
aplikasi ini iaitu aturcara penyembunyian mesej rahsia, aturcara pengekstrakan
mesej rahsia, aturcara MD5 dan juga beberapa aturcara penting yang lain.
Aturcara aplikasi ini akan dibincangkan berturutan mengikuti cara aplikasi
ini berkerja. Ini bermaksud, kod aturcara penting yang dipaparkan ialah semasa
aplikasi ini dilarikan pada waktu awal dan sehingga ianya menjalankan proses-
proses steganografi dan juga proses-proses lain.
5.3.3.1 Aturcara Permulaan Aplikasi
Pada permulaan aplikasi dilarikan, aplikasi akan membaca semua nilai
tetapan yang disimpan samada didalam fail settings.ini ataupun pada registry. Pada
fail tetapan aplikasi iaitu settings.ini, beberapa atribut mengenai aplikasi disimpan
secara kekal supaya ianya dapat digunakan semula.
Pada fail settings.ini, tetapan telah dikategorikan kepada empat bahagian
iaitu GENERAL, STEGO, CRYPTO dan juga APPLICATION. Kategori-kategori
tetapan ini menyimpan nilai-nilai yang berkaitan dengan penggunaan aplikasi.
Untuk penerangan yang lebih jelas terhadap setiap kategori, Jadual 5.4 dapat
membantu.
Jadual 5.4 Kategori tetapan fail settings.ini
Kategori Tetapan PeneranganGENERAL Mengandungi maklumat asas mengenai aplikasi.STEGO Menyimpan nilai yang akan digunakan untuk proses
steganografi.CRYPTO Menyimpan nilai yang akan digunakan untuk proses kriptografiAPPLICATION Menyimpan nilai tetapan sampingan aplikasi.
[GENERAL]Application=stegitName=settings.iniVersion=1.0Valid=universitiTeknologiMalaysiaUser=[STEGO]UsePassword=yesUseDefaultDirectory=yesDefaultDirectory=H:\Risz stego\3rdtDesign_modified_P2P&FTP2\ProjectDefaultPassword=BE56E057F20F883EE10ADC3949BA59ABUseDefaultMethod=yesDefaultMethod=normal[CRYPTO]GetFileHashes=yesSecurePassword=yes[APPLICATION]Top=3765Left=5145RememberPosition=yesShowSplashScreen=noSplashScreenPeriod=3000MiniSkin=noDefaultSettingFrame=applicationLockPosition=noBannerTimer=3000Animation=noAnimationSpeed=90
Antara contoh atribut ataupun nilai yang ada pada fail settings.ini ialah seperti Rajah
5.1 berikut:
Rajah 5.1 Atribut dan nilai pada fail settings.ini
Sub modul yang memainkan peranan semasa permulaan aplikasi ialah
startup, dimana pada sub modul ini beberapa fungsi untuk mendapatkan nilai awalan
untuk aplikasi diisytiharkan dan dilarikan. Rajah 5.2 memaparkan keratan aturcara
yang menentukan permulaan aplikasi.
Sub Main() 'initialize public variable here so that it is easy to do value correction formHeightImageLoaded = 9975 formHeightDefault = 7590 formWidhtDefault = 3855 'set the panel frame location panelTop = 3840 panelLeft = 120 'set the invalidProduct and available wav file to default invalidProduct = False relatedFileAvailable = True 'for FTP form setup ftpFormShow = False stickWithMainForm = True '#perfom check on settings.ini and 1.wav '#the settings.ini will load the initial application parameters '#while the 1.wav is for sound Call checkRelatedFile If invalidProduct = False Then If adminPreveledges = False Then expireSetup If Expire = False Then Call loadSetting Else Exit Sub End If Else Exit Sub End If End Sub
Rajah 5.2 Keratan kod aturcara permulaan aplikasi
5.3.3.2 Aturcara Penyembunyian Maklumat Rahsia
Sebelum pengguna boleh menyembunyikan data, mereka perlu memilih imej
hos dan juga memasukkan mesej rahsia. Selepas itu, barulah mesej rahsia akan
disimpan didalam imej hos tersebut. Imej hos mestilah merupakan fail berformat
bmp, dan mesej rahsia pula boleh ditaip ataupun dipilih dari ruangan storan
komputer peribadi. Kod aturcara pada Rajah 5.3 menerangkan mengenai proses
memulakan steganografi.
Rajah 5.3 Kod aturcara apabila butang penyembunyian diklik.
Apabila butang penyembunyian diklik maka aplikasi akan melarikan kod
aturcara pada Rajah 5.3. Apabila tiada ralat berlaku maka aplikasi seterusnya
melarikan kod aturcara yang akan memanggil fungsi addMessageToImage. Fungsi
addMessageToImage ini merupakan fungsi yang menjalankan proses
penyembunyian data ke imej. Pada Rajah 5.4 berikut, kod aturcara bagi fungsi
addMessageToImage ditunjukkan.
Private Sub cmdStego_Click() 'firstly. make all public variable that are related to be false..this is to 'prevent bugs if the user perform this operation twice @ more cx.perform_stego = False cx.step_check_passwordAndMethod = False cx.step_check_pictureAndText = False If imgLoaded = False Then sFileName = "" cx.checkImageAndText (sFileName) 'check if the default password and default method was used If cx.step_check_passwordAndMethod = True Then cx.checkPasswordAndMethod If cx.perform_stego = True Then cx.lockAllControl Call cx.addMessageToImage cx.unlockAllControl End If 'clear back the file name if it was loaded before lblTextFileName.Caption = ""
Public Function addMessageToImage()
……… (keratan kod tidak ditunjukkan, sila rujuk lampiran)
'set text length
B1 = sLen And 255B2 = (sLen And 65280) / 256B3 = (sLen And 16711680) / 65536
'write data length to imagecx.WritePixel (B1)cx.WritePixel (B2)cx.WritePixel (B3)
'start writing all bits to image.pgBar.Value = 0 'show progress bar value at 0.pgBar.Max = sLen 'set the max value for progress bar
For k = 1 To sLen .lblShowProgress.Caption = "Writing data to image. ( " & k & "/" & sLen & " )" .lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & "%" WritePixel (Asc(Mid(strData, k, 1))) If PicOverflow = True Then MsgBox "Image too small to store all data." & vbNewLine & "Data merge overflow.", vbCritical Exit Function End If 'ProgressShow frmMain.picProgBar, k / sLen If k Mod 10 = 0 Then DoEvents If cancelOperation = True Then Exit For .pgBar.Value = kNext k
……….. (keratan kod tidak ditunjukkan, sila rujuk lampiran)
End Function
Rajah 5.4 Kod aturcara menyimpan maklumat rahsia ke imej
Pada Rajah 5.4, aturcara yang dipaparkan merupakan hanya keratan daripada
aturcara fungsi yang sepenuhnya. Aturcara ini menunjukkan bagaimana piksel
ditulis kepada fail imej steganografi yang baru. Untuk melihat keratan kod yang
sepenuhnya, sila rujuk lampiran.
5.3.3.3 Aturcara Pengekstrakan Maklumat Rahsia
Bagi mengekstrak data daripada fail imej. Pengguna perlu terlebih dahulu
memilih fail imej yang mengandungi maklumat rahsia dan juga kunci pemprosesan.
Disebabkan aplikasi yang dibangunkan ini memberikan dua jenis kaedah iaitu
samada menggunakan kata laluan ataupun kunci pemprosesan maka kaedah yang
betul perlulah dipilih bagi memastikan aplikasi dapat mengesktrak maklumat dari
fail imej tersebut. Jika sebelum ini pengguna menyembunyikan maklumat rahsia ke
dalam imej dengan menggunakan kaedah kunci pemprosesan maka jika pengguna
tersebut ingin mengekstrak semula maklumat, mereka perlu memilih kaedah yang
sama.
Pada Rajah 5.5, kod aturcara bagaimana maklumat rahsia diekstrak daripada
imej ditunjukkan. Kod aturcara ini akan dilarikan apabila pengguna telah memilih
imej yang mengandungi data dan juga memilih kaedah pengekstrakan yang betul.
Untuk kaedah biasa, kata laluan diperlukan. Tetapi, jika pengguna menggunakan
kaedah ‘advance’ maka fail kunci pemprosesan diperlukan. Fail kunci pemprosesan
bagi aplikasi ini berformat .skey. Fungsi extractMethod akan dijalankan untuk
mendapatkan maklumat rahsia daripada imej.
Private Sub cmdRevealMessage_Click()
If sBitmapDataFileName = "" Then GoTo errLoadBitmapcx.lockAllControl
With SmallSteg If .optRevealTechnique(1).Value = True Then Call cx.extractMethod("key", sBitmapDataFileName) 'unlock the control back Call cx.unlockAllControl extract_key = False extract_normal = False Exit Sub ElseIf .optRevealTechnique(0).Value = True And .txtPasswordReveal.Text <> "" Then Call cx.extractMethod("normal", sBitmapDataFileName) 'unlock the control back Call cx.unlockAllControl extract_key = False extract_normal = False Exit Sub Else MsgBox "Cannot proceed to reveal message. This might be caused by:" & vbNewLine & _ "- Method for revealing message is not selected" & vbNewLine & _ "- Password is not provided", _ vbExclamation, "Error Reveal message" 'unlock the control back Call cx.unlockAllControl Exit Sub End If 'clear this value after each process 'sBitmapDataFileName = "" End WitherrLoadBitmap:MsgBox "Load data file first (bitmap)", vbExclamation, "Carrier image require"End Sub
Rajah 5.5 Kod aturcara apabila butang pengekstrakan diklik
Aturcara pada Rajah 5.5 menunjukkan bagaimana mesej diekstrak apabila
butang pengekstrakan diklik. Fungsi cx.extractMethod memainkan peranan dalam
mengekstrak mesej sebenar dari fail imej. Sila rujuk Rajah 5.6.
Private Sub extractMethod(mode As String, file As String)
….. (keratan kod tidak ditunjukkan sila rujuk lampiran)
For k = 1 To sLen fByte = ReadPixel If PicOverflow = True Then MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _ "This may be caused by the following:" & vbNewLine & _ "- Incorrect password supply" & vbNewLine & _ "- Data in the image is corrupted." & vbNewLine & _ "- The image contain no data.", vbCritical extractPassword = "" .fraProgressBar.Visible = False Exit Sub End If strData = strData & Chr(fByte) .lblShowProgress.Caption = "Reading data from image" .pgBar.Value = k .lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & " %" DoEvents If cancelOperation = True Then Exit For Next k….. (keratan kod tidak ditunjukkan sila rujuk lampiran)strData = GetSteganoText(strData)……(keratan kod tidak ditunjukkan sila rujuk lampiran)strData = Mid(strData, 6) Pos = InStr(1, strData, "FILE" & Chr(0)) If Pos > 1 Then SmallSteg.rtbRevealMsg.Text = Left(strData, Pos - 1) SmallSteg.rtbRevealMsg.BackColor = vbWhite Else SmallSteg.rtbRevealMsg.Text = "" End If
End Sub
Rajah 5.6 Kod aturcara mengekstrak maklumat rahsia
Bahagian kod aturcara yang akan mengekstrak maklumat rahsia ialah
GetSteganoText. Fungsi ini memainkan peranan penting untuk mendapatkan semula
mesej rahsia dari fail imej.
5.3.3.4 Aturcara Kriptografi MD5
Kriptografi MD5 digunakan didalam aplikasi bagi tujuan untuk melindungi
kata laluan pengguna yang disimpan, membaca nilai hash bagi sesebuah fail imej
dan juga bagi mengenkrip kunci pemprosesan. Aplikasi menyediakan suatu tetapan
yang membolehkan pengguna untuk menyimpan kata laluan mereka. Disebabkan
kata laluan ini perlu dilindungi supaya tidak boleh difahami maka penggunaan MD5
dilaksanakan. Begitu juga dengan kunci pemprosesan, ianya dienkrip dengan
menggunakan kriptografi MD5 bagi tujuan melindungi maklumat kunci
pemprosesan tersebut. Bagi fail imej pula, MD5 digunakan bertujuan untuk
mendapatkan nilai hash yang unik bagi fail tersebut. Ini bertujuan untuk
membezakan antara fail imej yang mengandungi maklumat rahsia dan juga fail imej
hos yang asal . Rajah 5.7 menunjukkan bagaimana penggunaan enkripsi keatas kata
laluan dilakukan.
Private Sub txtUserPassword2_Change() If txtUserPassword2.Text = txtUserPassword1.Text Then lblPasswordMatch.Visible = True Me.lblPasswordMatch.Caption = "Password already match" Me.cmdSavePassword.Enabled = True Set MD5 = New clsMD5 MD5pass = MD5.CalculateMD5(Me.txtUserPassword1) txtMD5password.Text = UCase(MD5pass) txtMD5password.locked = TrueElse lblPasswordMatch.Visible = False lblPasswordMatch.Caption = "-"End IfEnd Sub
Rajah 5.7 Kod aturcara enkripsi kata laluan dengan MD5
Keratan kod aturcara yang ditunjukkan pada Rajah 5.7 bertujuan untuk
mengenkrip kata laluan pengguna. Ianya dilakukan dengan memanggil fungsi
CalculateMD5 yang terdapat didalam sub modul clsMD5. Bagi penghasilan nilai
MD5 untuk fail imej pula, keratan kod aturcara adalah seperti Rajah 5.8.
Private Sub cmdBrowseBMP_Click()
….. (keratan kod tidak ditunjukkan sila rujuk lampiran)
'loadImage GetImage (sFileName) If cx.GetFromINI("CRYPTO", "GetFileHashes", App.path & "/settings.ini") = "yes" Then FileManipulation.getFileMD5 (sFileName) Else Me.lblThumbnail.Caption = "-Image Thumbnail-" Me.txtMD5.Text = "Not Generated" End If
….. (keratan kod tidak ditunjukkan sila rujuk lampiran)
End Sub
Rajah 5.8 Kod aturcara untuk mendapatkan nilai MD5 fail bitmap
Pada Rajah 5.8, nilai MD5 bagi sesebuah fail imej akan dihasilkan melalui
penggunaan fungsi getFileMD5 dibawah sub modul FileManipulation. Sebelum itu,
nama dan lokasi fail imej berkenaan perlulah dipilih dan diketahui. Bagi menjanakan
kunci pemprosesan pula, kod aturcara boleh dilihat pada Rajah 5.9
Public Sub generateKey(argument As String)'the argument can be any put "" if passing no argument
Dim tag1 As String 'bitmapfilenameDim tag2 As String 'bitmapfilesizeDim tag3 As String 'textlengthDim generatedKey As String
Dim md_tag1, md_tag2, md_tag3, md_tag4 As StringDim keyMD5Dim sMD5$
sMD5 = FileManipulation.GetMD5(argument)
'so key consist of md5(tag1) + md5(tag2) + md5(tag3)With SmallSteg tag1 = .sFileName tag2 = .lblSize.Caption tag3 = Len(.rtbSecretMessage.Text) Set keyMD5 = New clsMD5 md_tag1 = keyMD5.CalculateMD5(tag1) md_tag2 = keyMD5.CalculateMD5(tag2) md_tag3 = keyMD5.CalculateMD5(tag3) generatedKey = md_tag1 & md_tag2 & md_tag3 & sMD5 'assign it to global pGenerated_key = generatedKey End WithEnd Sub
Rajah 5.9 Kod aturcara untuk penjanaan kunci pemprosesan.
Pada Rajah 5.9, penjanaan kunci pemprosesan ditunjukkan. Fungsi
generateKey digunakan semasa proses pengguna ingin menyembunyikan data
kedalam fail imej. Fungsi ini hanya akan dijalankan oleh aplikasi apabila pengguna
memilih untuk menggunakan teknik ‘advance’.
5.4 Pengujian Aplikasi
Pengujian terhadap aplikasi dilakukan bagi memastikan bahawa aplikasi
bebas daripada ralat. Pengujian yang dilakukan ialah dengan melarikan aplikasi dan
melaksanakan proses-proses tertentu dengan mengambil kira pelbagai aspek
penggunaan dan tindakan.
Pengujian ini dijalankan keatas beberapa proses utama aplikasi seperti
penyembunyian maklumat dan juga pengkekstrakan maklumat. Pengujian dilakukan
dengan teliti dan jika terdapat sebarang ralat maka proses pembetulan akan
dilakukan serta merta.
5.4.1 Pengujian Terhadap Fail-fail Penting Aplikasi.
Aplikasi ini sangat bergantung kepada fail settings.ini kerana tanpa fail ini
sebarang nilai yang ingin disimpan tidak akan berjaya dan seterusnya ralat akan
berlaku. Justeru itu, beberapa pengujian dilakukan terhadap fail settings.ini tersebut.
Antara pengujian yang dilakukan diterangkan selanjutnya.
5.4.1.1 Pengujian Kehadiran Fail Settings.ini
Ujian ini bertujuan untuk memeriksa kewujudan fail settings.ini. Jika fail
tersebut hilang ataupun tidak terdapat didalam direktori aplikasi maka aplikasi akan
memaparkan suatu mesej yang memberitahu pengguna mengenai perkara tersebut.
Lihat Rajah 5.10.
Rajah 5.10 Mesej mengenai kehilangan fail settings.ini
Pada Rajah 5.10, mesej akan memberitahu pengguna mengenai kehilangan
fail settings.ini yang diperlukan oleh aplikasi. Cara untuk mengatasi masalah ini
juga dipaparkan pada mesej berkenaan iaitu dengan mencipta satu fail kosong yang
bernama settings.ini ataupun mencari semula fail settings.ini dan meletakkannya
pada direktori yang betul. Aplikasi membenarkan pengguna untuk mencipta suatu
fail settings.ini yang kosong kerana aplikasi mempunyai satu fungsi AutoRecovery
yang akan menulis semula kandungan atribut dan nilai asal.
5.4.1.2 Pengujian Terhadap Nilai Pada Fail settings.ini
Rajah 5.11 Mesej Auto Recovery fail settings.ini
Jika pengguna memilih untuk melarikan auto recovery maka aplikasi akan
membuat satu fail settings.ini dan menyimpan nilai tetapan yang asal. Selepas itu,
aplikasi akan dapat digunakan seperti biasa. Mesej pada Rajah 5.11 menunjukkan
fail settings.ini mempunyai nilai yang salah.
5.4.2 Pengujian Ketika Menyembunyikan Maklumat.
Pengujian ketika proses penyembunyian dilakukan adalah sangat penting
kerana jika ianya tidak diuji maka aplikasi akan menghadapi masalah ralat dan logik
yang besar. Sebelum proses menyembunyikan maklumat rahsia, fail bitmap dan juga
mesej rahsia perlu diisi terlebih dahulu.Jika pengguna tidak memilih fail imej
ataupun mengisi mesej rahsia maka aplikasi akan memaparkan mesej yang
memberitahu pengguna supaya mengisi dan memilih fail imej seperti Rajah 5.12
Rajah 5.12 Mesej amaran jika pengguna melakukan kesalahan
5.4.3 Pengujian Ketika Mengekstrak Maklumat
Ketika mengekstrak maklumat, fail imej yang mempunyai maklumat rahsia
perlu dipilih terlebih dahulu. Kemudian, pengguna perlu memilih kaedah yang betul
untuk mengekstrak semula maklumat rahsia samada menggunakan kaedah
“normal” ataupun kaedah “advance”. Jika pengguna menggunakan kaedah
“normal” maka untuk mengekstrak maklumat rahsia, pengguna perlu memasukkan
kata laluan yang betul. Jika pengguna memilih kaedah “advance” maka kunci
pemprosesan diperlukan. Rajah 5.13 menunjukkan antara kawalan ralat ke atas
proses ini.
Rajah 5.13 Mesej paparan untuk proses pengekstrakan
5.5 Rumusan
Aplikasi yang dibangunkan ini melibatkan proses steganografi dan
kriptografi yang rumit. Kod aturcara yang dibangunkan perlu diperiksa untuk
memastikan ianya tidak terdedah kepada ralat. Disebabkan aplikasi ini dilarikan
dibawah platfom Windows XP, maka penggunaan library yang sedia ada merupakan
suatu kelebihan.
Pengujian yang dilakukan setiap kali proses pertambahan keatas projek
merupakan suatu kaedah yang dapat memastikan aplikasi berada pada tahap yang
diinginkan berdasarkan fungsi dan juga kawalan ralatnya.
BAB VI
KESIMPULAN
6.1 Pengenalan
Dalam bab ini, perbincangan mengenai pencapaian projek, kekangan ataupun
cabaran yang dihadapi semasa membangunkan projek disentuh. Dalam
membincangkan mengenai pencapaian projek, status projek yang dibina akan dinilai
dari segi tahap projek berfungsi.Untuk kekangan pula, beberapa kekangan yang
dikenalpasti dalam membangunkan projek akan disenaraikan dan jalan penyelesaian
terhadap kekangan juga dikenalpasti dan direkodkan. Disamping semua itu, harapan
semasa membangunkan projek aplikasi steganografi turut dipaparkan.
6.2 Pencapaian Projek
Pada umumnya pencapaian projek boleh dikatakan berada didalam keadaan
yang baik kerana semua fasa-fasa didalam pembangunan projek dapat dilaksanakan
dengan jayanya mengikut tarikh dan masa yang telah ditetapkan. Mengenai projek
iaitu pembangunan aplikasi Steganografi, boleh dikatakan projek pembangunan ini
berjalan dengan agak lancar kerana sumber dan kepakaran dapat diperolehi serta
kekangan semasa dapat diatasi.
Antara pencapaian projek yang berjaya dicapai ialah pada peringkat fasa
kajian dimana proses mencari tajuk dan konsep projek dapat dikenalpasti dan
sumber-sumber yang ingin dijadikan sebagai rujukan dapat diperolehi dengan
mudah.
Pada peringkat analisa pula, konsep dan perjalan aplikasi projek dapat dibuat
dengan mudah kerana konsep–konsep aplikasi steganografi dapat difahami dengan
jelas. Begitu juga pada fasa-fasa berikutnya, pencapaian projek berada pada tahap
yang baik.
Pencapaian projek ini juga tidak terbatas pada projek yang pembangunan
sahaja, ianya juga melibatkan proses pendokumentasian iaitu penyediaan laporan.
Bagi penyediaan laporan pula, pencapaiannya adalah sangat baik kerana laporan
dapat disiapkan mengikuti tarikh yang ditetapkan.
6.3 Kekangan dan Cabaran
Dalam membangunkan projek ini, terdapat beberapa kekangan atau cabaran
yang perlu dihadapi antaranya ialah dari segi penguasaan terhadap konsep projek
yang dibangunkan. Antara kekangan lain yang dihadapi ialah penentuan teknik dan
algoritma yang bersesuai bagi memastikan projek aplikasi steganografi yang
dibangunkan dapat memberikan tahap sekuriti seperti yang diharapkan.
Selain itu, penentuan objek penyembunyian juga merupakan suatu kekangan
yang perlu dihadapi kerana pada masa kini, terdapat banyak objek penyembunyian
yang boleh diguna untuk dijadikan sebagai fail hos penyembunyian data.
Disamping itu, kajian secara lebih terperinci terhadap kod aturcara juga
merupakan suatu cabaran kerana projek yang dibangunkan ini menggunakan kod
aturcara yang agak berlainan dari kod-kod aturcara steganografi yang lazimnya
digunakan.
Cabaran juga tidak terhad disitu sahaja kerana pada fasa rekabentuk,
rekabentuk yang bersesuaian tidak kira samada rekabentuk strruktur ataupun
rekabentuk antaramuka pengguna, kajian dan analisis yang mendalam diperlukan
dan masa yang banyak perlu disumbangkan terhadap fasa rekabentuk ini.
6.4 Harapan
Diharapkan, aplikasi yang dibangunkan ini memenuhi objektif disamping
dapat melindungi maklumat pengguna. Di samping itu, pembaikan aplikasi juga
diharap dapat berterusan.
6.5 Ringkasan
Pada keseluruhannya dapat disimpulkan bahawa fasa-fasa dalam
pembangunan projek berjalan mengikuti masa dan sasaran yang ditentukan.
Kekangan dalam membangunkan aplikasi juga dapat diselesaikan seperti penentuan
teknik yang bersesuaian untuk aplikasi yang dibangunkan. Aplikasi yang
dibangunkan dengan menggunakan Visual Basic ini memberikan kelebihan dari segi
kebolehan interaksi dengan Windows. Pembangunan aplikasi berjalan dengan lancar
dan dapat mengikuti batu tanda yang telah ditetapkan.
Akhir kata, diharapkan aplikasi yang dibangunkan dapat memberi manfaat
kepada pengguna disamping dapat melindungi maklumat.
RUJUKAN
Abd Rahim, M.F (2004), Steganograpfi : penyembunyian teks dalam video,
Universiti Teknologi Malaysia : Tesis Ijazah Sarjana Muda
David, K (2007), Bitmap Format, http://atlc.sourceforge.net
Madani, A.S, Hassad, A.L, A. Wahdan, A.E.M. A Robust Steganography
Technique Using Discrete Cosine Transform Insertion, Department of Computer
Engineering Collage of Engineering and Technology, AAST, Cairo, Egypt
Stamp, M (2006). Information Security Principles and Practice, Wiley
Interscience
Stallings, W (1999). Cryptography and network security principles and
practices, 2nd Edition, Prentice Hall.
Tan, K. Y. (2005), Steganograpfi Menggunakan Teknik Variable Sized LSB
Insertion, Universiti Teknologi Malaysia : Tesis Ijazah Sarjana Muda
Wikipedia(2007), File Tranfer Protocol,
http://en.wikipedia.org/wiki/File_Transfer_Protocol
LAMPIRAN C
Public Function addMessageToImage()
Dim strData As String
Dim B1 As Double
Dim B2 As Double
Dim B3 As Double
Dim k As Double
Dim sLen As Double
'Dim sFileName As String
Dim blnErase As Boolean
Dim convertToBmp As Boolean
Dim killName As String
Dim FileBuffer() As Byte
Dim file As Integer
Dim action
Dim confirmAct
Dim key As String
Dim selectedFileImage As String
Cp = 0
selectedFileImage = smallsteg.sFileName
'get and load the file to container: picture box
With smallsteg
'key = cx.sel_stego_password
'--------set the progress bar visibility-------------
.fraProgressBar.Left = 120
.fraProgressBar.Visible = True
.lblShowProgressPercentage.Visible = True
.Refresh
'----------------------------------------------------
'just for debugging-----cut this code after finish--------
'If cx.perform_stego = True Then
' MsgBox "cx.addmessagetoimage call : " & selectedFile & _
' " " & cx.sel_stego_method & " - [%% " & key & " %%]" & _
' .rtbSecretMessage.Text
'End If
.pgBar.Value = 0
.lblShowProgress.Caption = "Scaling picture width and height"
.picStego.AutoSize = True
.picStego.Picture = LoadPicture(selectedFileImage)
.picStego.Refresh
.picStego.AutoSize = False
DataPicX = .picStego.ScaleWidth
DataPicY = .picStego.ScaleHeight
Xmax = DataPicX - 1
Ymax = DataPicY - 1
PicOverflow = False
'generate random number using randomize
.pgBar.Value = 0
.lblShowProgress.Caption = "Calculating random number"
Randomize
If .rtbSecretMessage.Text <> "" Then
'strData = "TEXT" & Chr(0) & .rtbSecretMessage.Text
strData = "TEXT" & Chr(0) & smallsteg.rtbSecretMessage.Text
'MsgBox strData
.lblShowProgress.Caption = "Reading message.."
Else
'if no text, add chr(0)
strData = "TEXT" & Chr(0) & Chr(0)
End If
'============================
Screen.MousePointer = 11
'right now..there are no file that will be embed to the image so
'let the strdata carry nothing about it
strData = strData & "FILE" & Chr(0) & Chr(0)
'compress the file and add header
sLen = 0
.lblShowProgress.Caption = "Compressing file and add header.."
strData = ULTRA.SetSteganoText(strData)
sLen = Len(strData)
'MsgBox sLen '& "--" & (DataPicX * DataPicY) * 3
Screen.MousePointer = 0
'MsgBox "key:" & cx.sel_stego_password & "[x]"
'=================================================================
===
If smallsteg.currentMethodUsed = "advance" Then
.lblShowProgress.Caption = "Set the key..(advance method)"
cx.generateKey (selectedFileImage)
Call SetSteganoKey(cx.pGenerated_key)
ElseIf smallsteg.currentMethodUsed = "normal" Then
.lblShowProgress.Caption = "Set the key..(normal method)"
Call SetSteganoKey(cx.sel_stego_password)
End If
'=================================================================
===
'set array for # pixels used
.lblShowProgress.Caption = "Set buffer for pixel"
NmbrPix = (DataPicX * DataPicY) - 1
ReDim UsedPix(NmbrPix)
'check data size to fit in image
.lblShowProgress.Caption = "Checking data size"
.pgBar.Value = 100
'MsgBox (sLen + 2) * 8 & " ----- " & (DataPicX * DataPicY) * 3
confirmAct = MsgBox("Carrier Image : " & getFileName(selectedFileImage) & ". " &
vbNewLine & _
Format(((sLen + 2) * 8 * 100) / ((DataPicX * DataPicY) * 3), "##.##") & " % of carrier
storage will be use" & vbNewLine & vbNewLine & _
"Selected Method is : " & cx.sel_stego_method & vbNewLine & _
"Are you sure to proceed this process? ", vbYesNo + vbInformation, "Confirmation")
If confirmAct = vbYes Then
GoTo start
Else
.lblCancelOperation.Visible = False
.fraProgressBar.Visible = False
.Refresh
Exit Function
End If
start:
If (sLen + 2) * 8 > (DataPicX * DataPicY) * 3 Then
MsgBox "Image too small to store all data." & vbCrLf & "Please select a larger image or
decrease the amount of data to save.", vbCritical
.fraProgressBar.Visible = False
Exit Function
End If
'get the first pixel
.lblShowProgress.Caption = "Get pixel"
Call GetNextPixel
'set cancel flag
.lblCancelOperation.Visible = True
cancelOperation = False
'set text length
B1 = sLen And 255
B2 = (sLen And 65280) / 256
B3 = (sLen And 16711680) / 65536
'write data length to image
cx.WritePixel (B1)
cx.WritePixel (B2)
cx.WritePixel (B3)
'start writing all bits to image
.pgBar.Value = 0 'show progress bar value at 0
.pgBar.Max = sLen 'set the max value for progress bar
For k = 1 To sLen
.lblShowProgress.Caption = "Writing data to image. ( " & k & "/" & sLen & " )"
.lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & "%"
WritePixel (Asc(Mid(strData, k, 1)))
If PicOverflow = True Then
MsgBox "Image too small to store all data." & vbNewLine & "Data merge overflow.",
vbCritical
Exit Function
End If
'ProgressShow frmMain.picProgBar, k / sLen
If k Mod 10 = 0 Then DoEvents
If cancelOperation = True Then Exit For
.pgBar.Value = k
Next k
'set last pixel RGB
smallsteg.picStego.PSet (Xp, Yp), RGB(R, G, B)
'refresh image
.lblShowProgress.Caption = "Refresh bitmap file"
smallsteg.picStego.Picture = smallsteg.picStego.Image
.lblCancelOperation.Visible = False
.fraProgressBar.Visible = False
.Refresh
If cancelOperation = True Then
MsgBox "Process was aborted by user.", vbExclamation, "Process Interrupted"
Exit Function
End If
If cancelOperation = False Then
MsgBox "The message successfully hide into the image", vbInformation, "Hiding
complete"
.rtbSecretMessage.Text = ""
If cx.GetFromINI("STEGO", "UseDefaultDirectory", App.path & "/settings.ini") = "no"
Then
If selectedFileImage <> "" Then
With smallsteg.CDialog
On Error GoTo errHandle
.DialogTitle = "Save Carrier file.."
.Filter = "Stegit Bitmap Files (*.bmp)|*.bmp"
.ShowSave
If .FileName <> "" Then
SavePicture smallsteg.picStego.Picture, .FileName
MsgBox "File saved " & "as " & .FileName, vbInformation, "Saved"
If cx.GetFromINI("STEGO", "DefaultMethod", App.path & "/settings.ini") =
"advance" Then
cx.saveSKey
End If
Exit Function
Else
Exit Function
End If
End With
On Error GoTo errHandle
End If
Else
SavePicture smallsteg.picStego.Picture, startup.defaultStegoFilePath & "\" &
getFileName(selectedFileImage)
MsgBox "The image file successfully saved as " & getFileName(selectedFileImage) &
vbNewLine & vbNewLine & _
"Saved Location is " & cx.GetFromINI("STEGO", "DefaultDirectory", App.path &
"/settings.ini") & "\" & vbNewLine & _
"Method of Hiding : " & cx.sel_stego_method, vbInformation
If cx.GetFromINI("STEGO", "DefaultMethod", App.path & "/settings.ini") = "advance"
Then
cx.saveSKey
End If
End If
End If
.Refresh
Exit Function
End With
errHandle:
'Screen.MousePointer = 0
MsgBox "Failed saving " & getFileName(selectedFileImage) & vbNewLine &
err.Description, vbCritical
Exit Function
End Function
LAMPIRAN D
Public Sub extractMethod(mode As String, file As String)
Dim strData As String
Dim B1 As Double
Dim B2 As Double
Dim B3 As Double
Dim sLen As Double
Dim tmp As String
Dim fByte As Byte
Dim tmpFileName As String
Dim tmpfolder As String
Dim FileBuffer() As Byte
Dim fileO As Integer
Dim Pos As Long
Dim k As Single
Dim extractPassword As String
Dim retval
Dim saveFileNameAs As String
Dim MD5
On Error GoTo errHandle
'load image and its size
With smallsteg
Set MD5 = New clsMD5
If LCase(mode) = "key" Then
extractPassword = smallsteg.rtbKey.Text
ElseIf LCase(mode) = "normal" Then
extractPassword = UCase(MD5.CalculateMD5(.txtPasswordReveal.Text))
End If
'clear some control properties
.picStego.Picture = LoadPicture("")
.rtbRevealMsg.Text = ""
'set image
.picStego.AutoSize = True
.picStego.Picture = LoadPicture(file)
.picStego.Refresh
.picStego.AutoSize = False
'get size of image
DataPicX = .picStego.ScaleWidth
DataPicY = .picStego.ScaleHeight
Xmax = DataPicX - 1
Ymax = DataPicY - 1
Cp = 0
'set the stegano key
Call SetSteganoKey(extractPassword)
'setup array for used pixs
NmbrPix = (DataPicX * DataPicY) - 1
ReDim UsedPix(NmbrPix)
'get first pixelset
Call GetNextPixel
'get number of bytes
B1 = ReadPixel
B2 = ReadPixel
B3 = ReadPixel
sLen = B1 + (B2 * 256) + (B3 * 65536)
.fraProgressBar.Visible = True
.lblShowProgress.Caption = "Checking data size"
.pgBar.Value = 0
.pgBar.Max = sLen
.lblCancelOperation.Visible = True
.lblShowProgressPercentage.Visible = True
'check image bitsize
If ((sLen + 2) * 8) > (DataPicX * DataPicY) * 3 Or sLen = 0 Then
'corrupted data lenght
MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _
"This may be caused by the following:" & vbNewLine & _
"- Incorrect password supply" & vbNewLine & _
"- Data in the image is corrupted." & vbNewLine & _
"- The image contain no data.", vbCritical, "Extract data failed"
.fraProgressBar.Visible = False
Exit Sub
End If
cancelOperation = False
PicOverflow = False
For k = 1 To sLen
fByte = ReadPixel
If PicOverflow = True Then
MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _
"This may be caused by the following:" & vbNewLine & _
"- Incorrect password supply" & vbNewLine & _
"- Data in the image is corrupted." & vbNewLine & _
"- The image contain no data.", vbCritical
extractPassword = ""
.fraProgressBar.Visible = False
Exit Sub
End If
strData = strData & Chr(fByte)
.lblShowProgress.Caption = "Reading data from image"
.pgBar.Value = k
.lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & " %"
DoEvents
If cancelOperation = True Then Exit For
Next k
If cancelOperation = True Then
'Extracting data from image aborted.
MsgBox "Reading data from image " & file & " aborted by user.", vbInformation
.fraProgressBar.Visible = False
Exit Sub
End If
'check header and decompres
strData = GetSteganoText(strData)
On Error GoTo errHandleSaveFile
If UltraReturnValue = 0 Then
'get text from strData
strData = Mid(strData, 6)
Pos = InStr(1, strData, "FILE" & Chr(0))
If Pos > 1 Then
smallsteg.rtbRevealMsg.Text = Left(strData, Pos - 1)
smallsteg.rtbRevealMsg.BackColor = vbWhite
Else
smallsteg.rtbRevealMsg.Text = ""
End If
'get file from strData
strData = Mid(strData, Pos + 5)
If Len(strData) > 1 Then
Pos = InStr(1, strData, Chr(0))
tmpFileName = Left(strData, Pos - 1)
strData = Mid(strData, Pos + 1)
FileBuffer() = StrConv(strData, vbFromUnicode)
'get save directory
askAgain:
retval = MsgBox("Save """ & tmpFileName & """ in the same folder as the carrier
image?", _
vbQuestion + vbYesNoCancel)
If retval = vbYes Then
'save file in carrier folder
saveFileNameAs = getFileName(file) & tmpFileName
ElseIf retval = vbNo Then
'show folder brows dialog
tmpfolder = Browse("Select folder to save " & tmpFileName)
If tmpfolder <> "" Then
saveFileNameAs = tmpfolder & tmpFileName
Else
saveFileNameAs = getFileName(file) & tmpFileName
Exit Sub
End If
Else
Exit Sub
End If
'save the file
fileO = FreeFile
Open saveFileNameAs For Binary As #fileO
Put #fileO, , FileBuffer()
Close #fileO
Else
file = ""
End If
'Call GetFile
Else
MsgBox "Failed reading the data from " & getFileName(file) & vbNewLine & _
"This may be caused by the following:" & vbNewLine & _
"- Wrong password." & vbNewLine & _
"- The image contain no data or corrupted.", vbCritical
'Screen.MousePointer = 0
file = ""
'frmMain.txtMain.Text = ""
smallsteg.rtbRevealMsg.Text = ""
'Call GetFile
End If
.fraProgressBar.Visible = False
End With
Exit Sub
errHandle:
'Screen.MousePointer = 0
'"Failed loading image: "
MsgBox "Failed loading the source image. Error description :" & vbNewLine & " - " &
err.Description, vbCritical
smallsteg.fraProgressBar.Visible = False
Exit Sub
errHandleSaveFile:
'Screen.MousePointer = 0
'"Failed loading image: "
MsgBox "Failed saving the extracted file." & vbNewLine & err.Description, vbCritical
smallsteg.fraProgressBar.Visible = False
file = ""
End Sub
Lampiran E
Private Sub cmdBrowseBMP_Click()
On Error GoTo err
If imgLoaded = True Then
'Me.Height = 7590
'Me.Height = formHeightImageLoaded
'value before = 8070
picThumbnail.Picture = LoadPicture("")
picThumbnail.Refresh
imgPreview.Stretch = False
imgPreview.Visible = False
Call lblUnloadImage_Click
End If
With CDialog
.FileName = ""
.DialogTitle = "Select image to be carrier"
.Filter = "Windows Bitmap (*.bmp)|*.bmp|"
.ShowOpen
If .CancelError = True Or err = 32755 Or cx.GetFileExt(.FileName) <> "bmp" Then
MsgBox "Bitmap file load failure. This might be caused by either" & vbNewLine &
_
"- Wrong file format loaded or" & vbNewLine & _
"- Cancellation process of loading bitmap", vbExclamation, "Error to load bitmap"
sFileName = ""
Exit Sub
Else
sFileName = .FileName
End If
End With
'loadImage
GetImage (sFileName)
If cx.GetFromINI("CRYPTO", "GetFileHashes", App.path & "/settings.ini") = "yes"
Then
FileManipulation.getFileMD5 (sFileName)
Else
Me.lblThumbnail.Caption = "-Image Thumbnail-"
Me.txtMD5.Text = "Not Generated"
End If
cmdCloseThumbnail.Visible = True
If imgLoaded = True Then
Me.Height = formHeightImageLoaded '10005
cmdBrowseBMP.Enabled = False
lblStegoInsertFile.Enabled = True
End If
smallsteg.txtLoadBMP.Text = sFileName
If sFileName = "" Then smallsteg.txtLoadBMP.Text = "Load bitmap image here..."
Exit Sub
err:
MsgBox "Fail to load the bmp image" & sFileName & vbCrLf & vbCrLf & err.Description,
vbCritical
If smallsteg.fraProgressBar.Visible = True Then smallsteg.fraProgressBar.Visible = False
End Sub
Lampiran F
Manual Pengguna
1. Menyembunyikan Mesej Rahsia
Mod Penyembunyian
- Menyembunyikan mesej rahsia
kedalam imej bitmap.
1. Klik butang Hide
2. Pada Kekotak Mesej, taip mesej rahsia ataupun
membuka fail teks (.txt) yang sedia ada. Seperti
Rajah A, fail EmailStudent.txt telah dipilih.
3. Kemudian Klik Butang Browse Bmp
Butang untuk memilih fail bitmap.
Kekotak seperti dibawah akan muncul, pilih fail
bitmap anda.
4. Selepas teks rahsia dan fail bitmap sudah sedia,
maka klik pada butang Hide message.Butang Hide message
5. Kekotak Mesej Confirmation akan muncul dan
klik Yes untuk menyembunyikan mesej anda.
6. Ikuti arahan berikutnya.
2. Mengekstrak Maklumat Rahsia
Mod Pengekstrakan
- Mengekstrak semula mesej
rahsia didalam fail bitmap
1. Klik pada butang Reveal
2. Pilih fail imej yang mengandungi data. Klik pada
butang seperti yang ditunjukkan dibawah:
Butang pemilihan fail bitmap yang
mempunyai mesej rahsia.3.
Pilih cara pengekstrakan mesej anda.
Normal: memerlukan
anda menaip kata laluan.
Advance: memerlukan
penggunaan kunci
(.skey)
** Cara mengekstrak mesej mestilah sama dengan cara
penyembunyian mesej anda. Anda boleh mengubahnya
dengan klik Settings -> Stegano -> tandakan always use
this method for stegano process4. Klik pada butang Reveal it!!
Butang pemilihan fail bitmap yang
mempunyai mesej rahsia.
5. Mesej rahsia kemudian akan dipaparkan pada kekotak
mesej.
3. Menukar Tetapan Aplikasi
Mod Tetapan
- Mengubah tetapan aplikasi
dan juga proses seperti
steganografi dan kriptografi
1. Klik pada butang Settings
2. Pilih Tetapan yang sedia ada
.Terdapat 3 jenis tetapan iaitu
- Application:
- Crypto
- Stegano
3. Untuk mengubah nilai tetapan, pilih petak yang
berkaitan dan tekan butang Save settings untuk
menyimpan nilai tetapan yang baru.
4. Menghantar Data Menggunakan FTP
Mod Penghantaran
- menghantar data steganografi
ke Pelayan.
1. Klik pada butang Send.
2. Pilih FTP
3. Masukkan nama
pelayan, nama pengguna dan kata laluan.
4. Klik Butang Connect.
5. Beberapa Fungsi Tambahan Aplikasi
Mini skin
- untuk mengecilkan antaramuka
Tetapan kata laluan
- Pengguna boleh menetapkan penggunaan kata
laluan supaya aplikasi akan menggunakan kata
laluan yang sama untuk semua proses
penyembunyian.
Perbandingan nilai hash MD5 fail bitmap
- Pengguna boleh memeriksa samada bitmap
yang serupa adalah sama nilai hash nya ataupun
tidak.