Jumat, 19 April 2013
Rabu, 10 April 2013
[Comp Security] Praktikum 4 - Digital Signature
Definisi
Secara mudahnya Digital Signature adalah bentuk tiruan tanda tangan konvensional ke dalam bentuk digital. Tetapi bukan file scan tanda tangan di kertas. Sebutan digital signature
ini sebenarnya konsep. Dalam dunia nyata, tanda tangan digital itu
bentuknya adalah rangkaian byte-byte yang jika diperiksa bisa digunakan
untuk memeriksa apakah suatu dokumen digital, juga termasuk email, benar
berasal dari orang tertentu atau tidak. tandatangan digital merupakan salah satu cara untuk memberikan authentication, integrity dan non - repudiation pada dokumen digital yang
akan dikirimkan/didistribusikan.
Prinsip yang digunakan dalam tanda
tangan digital adalah data yang dikirimkan harus ditanda tangani oleh pengirim dan tanda tangan bisa diperiksa oleh penerima untuk memastikan
keaslian data yang dikirimkan. Proses ini menganalogikan proses
penandatanganan dokumen kertas oleh yang berwenang sebelum dikirimkan.
Dengan cara ini pengirim bertanggungjawab terhadap isi dokumen dan
dapat dicek keaslian dokumen oleh penerima.
Misalnya, Kuma mengirimkan dokumen penting kepada John melalui email.
Ternyata, Vladimir yang tahu kabar ini kemudian mencoba memalsukan email
Kuma. Dokumen attachment Kuma diganti. Ketika John terima email Kuma (yang attachmentnya
sudah diganti oleh Vladimir), dia merasa aneh, karena isinya tidak
sesuai dengan pembicaraan sebelumnya. John curiga. John memeriksa
(mem-verifikasi) digital signature pada email tersebut. John tahu, ternyata surat itu tanda tangannya tidak cocok.
Implementasi:
Pre-requisit sebelum konsep ini bisa diimplementasikan?
Kuma harus punya pasangan public key dan private key. Caranya? Di-generate (dibangkitkan)!
Bagaimana membuat tanda tangan digital?
- Kuma mengambil nilai hash dari pesan/data. Fungsi hash yang bisa pakai misalnya MD5 atau SHA1
- Kuma mengenkrip nilai hash tersebut dengan algoritma enkripsi public key, contohnya RSA (dipakai di S/MIME; sedangkan PGP pakai algoritma El Gamal). Hasil enkripsi hash dengan private key pengirim inilah yang disebut digital signature.
- Kuma menempelkan (concat) digital signature ke pesan/data.
- Kuma mengirim pesan/data yang sudah ditempeli digital signature tersebut kepada John
Bagaimana mem-verifikasi tanda tangan digital?
- John mengambil emailnya, kemudian memisahkan bagian tanda tangan digital dengan bagian pesan / datanya
- John mendekrip digital signature pesan tersebut dengan public key Kuma. Public key Kuma sudah pernah diberikan oleh Kuma sebelumnya, atau bisa diambil dari website Kuma.
- Hasil dekripsi digital signature kemudian dicocokkan dengan nilai hash bagian pesan / data email tersebut
- Jika hasilnya sama, berarti tanda tangan digital dinilai valid sedangkan bila beda, berarti digital signature tidak valid (dokumen telah dipalsukan atau pengirimnya pasti bukan Kuma).
Sifat tanda tangan digital
Menurut Arrianto Mukti Wibowo sifat dimiliki oleh tanda tangan digital adalah:
- Otentik, tak bisa/sulit untuk ditulis/ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah menandatanganinya.
- Hanya sah untuk dokumen (pesan) itu saja atau kopinya yang sama persis. Tanda tangan itu tidak bisa dipindahkan ke dokumen lainnya, meskipun dokumen lain itu hanya berbeda sedikit. Ini juga berarti bahwa jika dokumen itu diubah, maka tanda tangan digital dari pesan itu tidak lagi sah
- Dapat diperiksa dengan mudah, termasuk oleh pihak-pihak yang belum pernah bertatap muka langsung dengan penandatangan.
Menurut Arrianto Mukti Wibowo, dkk, penggunaan digital signature berawal dari penggunaan teknik kriptografi yang digunakan untuk mengamankan informasi yang hendak ditransmisikan/disampaikan kepada orang yang lain yang sudah digunakan sejak ratusan tahun yang lalu. Dalam suatu kriptografi suatu pesan dienkripsi (encrypt) dengan menggunakan suatu kunci (key). Hasil dari enkripsi ini adalah berupa chipertext tersebut kemudian dikirimkan kepada tujuan yang dikehendakinya. Chipertext tersebut kemudian didekripsi (decrypt) dengan suatu kunci untuk mendapatkan informasi yang telah enkripsi tersebut.
Terdapat dua macam cara dalam melakukan enkripsi yaitu dengan menggunakan kriptografi simetris (symetric crypthography/secret key crypthography) dan kriptografi non-simetris (asymetric cryptography) yang kemudian lebih dikenal sebagai public key cryptography.
Teknologi tanda tangan digital memanfaatkan teknologi kunci publik. Sepasang kunci publik-privat dibuat untuk keperluan seseorang. Kunci privat disimpan oleh pemiliknya, dan dipergunakan untuk membuat tanda tangan digital.
Sedangkan kunci publik dapat diserahkan kepada siapa saja yang ingin memeriksa tanda tangan digital yang bersangkutan pada suatu dokumen. Proses pembuatan dan pemeriksaan tanda tangan ini melibatkan sejumlah teknik kriptografi yaitu fungsi hash dan sistem kripto kunci publik
*sumber:
- http://en.wikipedia.org/wiki/Digital_signature
- Eko Aribowo, Herman Yuliansyah, Nur Rochmah. Petunjuk Praktikum Keamanan Komputer, Teknik Informatika Universitas Ahmad Dahlan, Yogyakarta 2013
- http://geniuskronis.wordpress.com/2011/01/06/konsep-sederhana-tentang-digital-signature/
Senin, 08 April 2013
[Comp Visi] Praktikum 4 - Matriks Affine 1
Petunjuk Praktikum
1. Memasukkan Citra: Memanggil citra tertentu yang akan ditransformasikan
2. Transformasi Affine : Menghitung matriks transformasi dari parameter-parameter transformasi yang diinputkan secara spesifik oleh user, dan kemudian dijadikan parameter untuk memanggil citra
3. Simpan citra : menyimpan citra hasil transformasi
Fungsi-Fungsi *nb: sebaiknya dicopy ke notepad terlebih dahulu
1. Memasukkan citra
function Load_image_callback(hObject,eventdata, handles)
global gg gc;
h=guidata(gcbo);
set(h.message_text,'String',''); %Hapus pesan
gg=gg+2;
h.image_filename=1;
h.image_pathname=1;
%panggil file citra dan nama path
[filename, pathname] = uigetfile ( ...
{'*.bmp;*.tif.*.jpg;*.pcx;*.png;*.hdf;*.xwd;*.ras;*.pbm;*.pgm; *.ppm; *.pnm', 'All MATLAB SUPPORTED IMAGE Files
(*.bmp,*.tif,*.jpg,*.pcx,*.png,*.hdf,*.xwd,*.ras,*.pbm,*.pgm,*.ppm,*.pnm)'} ..., 'Pick a file');
if filename ~=0
gg=1;
h.gg=1;
h.image_filename=filename; %nama file citra
h.image_filename=pathname; %nama file citra
set(h.Showaxes,'visible','off');
axes(h.axes1);
set(h.figure1_title,'Visible','on');
image_1=imread([pathname filename]); %panggil citra
imshow(image_1); %tampilkan citra yang dipanggil
h.image_1=image_1;
set(h.axes2,'Visible','off');
axes(h.axes2);
cla;
set(h.figure2_title,'Visible','off');
gc=0;
h.axis12=0;
guidata(gcbo,h);
end
++++++
2.Transformasi Affine
function Transform_Callback(hObject, eventdata, handles)
global gg gc;gc=0;
h=guidata(gcbo);
if gg~=2
h=guidata(gcbo);
image_1=h.image_1; %dapatkan citra 1
hb(1)=num_check(h.rot); %rotasi
hb(2)=num_check(h.xscale); % Skala dalam sumbu-x
hb(3)=num_check(h.yscale); % Skala dalam sumbu-y
hb(4)=num_check(h.xshear); % Shear
hb(5)=num_check(h.yshear);
hc=sum(hb);
switch hc
case=0
a=str2num(get(h.xscale,'String'));
b=str2num(get(h.xshear,'String'));
c=str2num(get(h.yshear,'String'));
d=str2num(get(h.yscale,'String'));
th=str2num (get(h.rot,'String')); %2*pi/10;
ch=get(h.deg,'Value');
swtich ch
case 0
th=th;
otherwise
th=th*pi/180;;
end
k=1;
TT=k*[cos(th) -sin(th); sin(th) cos(th)\*[a b; c d];
TTT=[ 1 0 0 ; 0 1 0 ; 0 0 1];
TTT(1:2,1:2)=TT;
set(h.message_text,'String','Lagi proses transformasi...tunggu');
tform=marketform('affine',TTT);
[image_2] = imtransform(image_1,tform);
h.image_2=image_2;
axes(h.axes2);
set(h.figure2_title,'Visible','on');
imshow(image_2,[]);
set(h.message_text,'String','Done');
set(h.Showaxes,'Visible'.'on');
guidata(gcbo,h);
otherwise
set(h.message_text,'String','Invalid value: Masukkan hanya bilangan real');
end
end
++++++
3.Simpan citra : Menyimpan citra hasil transformasi
function Save_image_Callback(hObject, eventdata, handles)
global gg gc;h=guidata(gcbo);
set(h.message_text,'String','');
if gc~=0
dot='.';pathname=h.image_pathname;
[filename,pathname]=uiputfile('*,*','Simpan hasil Transformasi');
if filename~=0
cobalagi=find(filename==dot);
if ~isempty(cobalagi)
image_ex=filename(cobalagi+1:end);
valid_ex=['BMP';'TIF';'JPG';'PCX';'PNG';'HDF';'XWD';'RAS';'PBM';'PGM';'PPM';'PNM';];
p=['\<' image_ex '\>'];
g=regexpi(valid_ex,p);
b=cell2mat(g);
if b~=0 & length(image_ex)==3
CMap=colormap(h.axes1);
h.savedimage_filename=filename;
h,savedimage_pathname=pathname;
imwrite(h.image_2,CMap,[pathname filename]);
savedto=['Simpan citra ke: ' pathname filename];
set(h.message_text,'String',savedto);
else
set(h.message_text,'String','Invalid file extension: citra tidak disimpan, gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
else
set(h.message_text,'String','Empty file extension: citra tidak disimpan,gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
end
end
Read More..
1. Memasukkan Citra: Memanggil citra tertentu yang akan ditransformasikan
2. Transformasi Affine : Menghitung matriks transformasi dari parameter-parameter transformasi yang diinputkan secara spesifik oleh user, dan kemudian dijadikan parameter untuk memanggil citra
3. Simpan citra : menyimpan citra hasil transformasi
Fungsi-Fungsi *nb: sebaiknya dicopy ke notepad terlebih dahulu
1. Memasukkan citra
function Load_image_callback(hObject,eventdata, handles)
global gg gc;
h=guidata(gcbo);
set(h.message_text,'String',''); %Hapus pesan
gg=gg+2;
h.image_filename=1;
h.image_pathname=1;
%panggil file citra dan nama path
[filename, pathname] = uigetfile ( ...
{'*.bmp;*.tif.*.jpg;*.pcx;*.png;*.hdf;*.xwd;*.ras;*.pbm;*.pgm; *.ppm; *.pnm', 'All MATLAB SUPPORTED IMAGE Files
(*.bmp,*.tif,*.jpg,*.pcx,*.png,*.hdf,*.xwd,*.ras,*.pbm,*.pgm,*.ppm,*.pnm)'} ..., 'Pick a file');
if filename ~=0
gg=1;
h.gg=1;
h.image_filename=filename; %nama file citra
h.image_filename=pathname; %nama file citra
set(h.Showaxes,'visible','off');
axes(h.axes1);
set(h.figure1_title,'Visible','on');
image_1=imread([pathname filename]); %panggil citra
imshow(image_1); %tampilkan citra yang dipanggil
h.image_1=image_1;
set(h.axes2,'Visible','off');
axes(h.axes2);
cla;
set(h.figure2_title,'Visible','off');
gc=0;
h.axis12=0;
guidata(gcbo,h);
end
++++++
2.Transformasi Affine
function Transform_Callback(hObject, eventdata, handles)
global gg gc;gc=0;
h=guidata(gcbo);
if gg~=2
h=guidata(gcbo);
image_1=h.image_1; %dapatkan citra 1
hb(1)=num_check(h.rot); %rotasi
hb(2)=num_check(h.xscale); % Skala dalam sumbu-x
hb(3)=num_check(h.yscale); % Skala dalam sumbu-y
hb(4)=num_check(h.xshear); % Shear
hb(5)=num_check(h.yshear);
hc=sum(hb);
switch hc
case=0
a=str2num(get(h.xscale,'String'));
b=str2num(get(h.xshear,'String'));
c=str2num(get(h.yshear,'String'));
d=str2num(get(h.yscale,'String'));
th=str2num (get(h.rot,'String')); %2*pi/10;
ch=get(h.deg,'Value');
swtich ch
case 0
th=th;
otherwise
th=th*pi/180;;
end
k=1;
TT=k*[cos(th) -sin(th); sin(th) cos(th)\*[a b; c d];
TTT=[ 1 0 0 ; 0 1 0 ; 0 0 1];
TTT(1:2,1:2)=TT;
set(h.message_text,'String','Lagi proses transformasi...tunggu');
tform=marketform('affine',TTT);
[image_2] = imtransform(image_1,tform);
h.image_2=image_2;
axes(h.axes2);
set(h.figure2_title,'Visible','on');
imshow(image_2,[]);
set(h.message_text,'String','Done');
set(h.Showaxes,'Visible'.'on');
guidata(gcbo,h);
otherwise
set(h.message_text,'String','Invalid value: Masukkan hanya bilangan real');
end
end
++++++
3.Simpan citra : Menyimpan citra hasil transformasi
function Save_image_Callback(hObject, eventdata, handles)
global gg gc;h=guidata(gcbo);
set(h.message_text,'String','');
if gc~=0
dot='.';pathname=h.image_pathname;
[filename,pathname]=uiputfile('*,*','Simpan hasil Transformasi');
if filename~=0
cobalagi=find(filename==dot);
if ~isempty(cobalagi)
image_ex=filename(cobalagi+1:end);
valid_ex=['BMP';'TIF';'JPG';'PCX';'PNG';'HDF';'XWD';'RAS';'PBM';'PGM';'PPM';'PNM';];
p=['\<' image_ex '\>'];
g=regexpi(valid_ex,p);
b=cell2mat(g);
if b~=0 & length(image_ex)==3
CMap=colormap(h.axes1);
h.savedimage_filename=filename;
h,savedimage_pathname=pathname;
imwrite(h.image_2,CMap,[pathname filename]);
savedto=['Simpan citra ke: ' pathname filename];
set(h.message_text,'String',savedto);
else
set(h.message_text,'String','Invalid file extension: citra tidak disimpan, gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
else
set(h.message_text,'String','Empty file extension: citra tidak disimpan,gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
end
end
Read More..
Rabu, 03 April 2013
[Comp Security] Praktikum 3 - Information Hiding
dalam praktikum ini tidak membahas bagaimana proses penyembunyian informasi dengan algoritma tertentu dan mengimplementasikannya pada pemrograman, namun membahas bagaimana menyembunyikan informasi digital pada data digital lain, dengan menggunakan aplikasi yang tersedia. Hal ini akan dibahas dalam mata kuliah Kriptografi.
software yang digunakan:
-Stegopic v1.0.0
-Stegopic v1.0.0
-Stools 4.0
penggunaan tools:
1. Pastikan anda sudah mengcopy file software S-Tool4. Jalankan tanpa diinstal
2. Penyembunyian data,
- tentukan file host/induk (yang akan disisipi) kemudian drag and drop pada window tersebut
- tentukan file informasi yang akan disembunyikan, drag and drop pada file host yang telah ada pada window Stool -> masukkan password sesuai dengan selera
3. Sehingga terbentuk stego medium yang telah disisipi dengan file informasi dengan nama window hiden data, simpanlah file tesebut. Lakukan analisa atas file stego medium dan host yang belum ditempeli.
- lakukan revealing dengan click kanan. Betulkah data yg termuat (hasil revealing) sama dengan data asli? jelaskan analisa anda
- bagaimana anda membedakan kedua file tersebut secara indrawi?adakah perbedaan?jelaskan!
- Bagaimana anda membedakan kedua file tersebut dengan software, software apa yang anda gunakan dan bagaimana caranya? Antara lain ukuran file, histogram, resolusi dll
- lakukan modifikasi terhadap file stego medium, jelaskan langkah modifikasi yang anda lakukan! bagaimana pengaruhnya terhadap informasi yang terkandung?
apa kesimpulan anda atas keempat proses pada no 3. a..c
5. Setelah semua file tersimpan, lakukan pengecekan atas file-file stego medium tersebut, apakah muatan informasi yang terkandung didalamnya terdeteksi?jelaskan software apa yang anda gunakan, dan apa hasilnya?
6. Apa kesimpulan anda tentang penyembunyian informasi digital dengan metodi steganography dengan menggunakan software yang ada?
1. Steganography
Landasan Teori
Steganography
berbeda dengan cryotigraphy, letak perbedaannya adalah komponen
inputnya dan hasil keluarannya. Proses steganography membutuhkan minimal
2 komponen input/objek yaitu file host (stego medium) yang akan
dijadikan sebagai induk penyembunyian dan informasi digital yang akan
disembunyikan. Hasil dari crptography biasanya berupa data yang berbeda
dari bentuk aslinya dan biasanya datanya seolah-olah berantakan (namun
dapat dikembalikan ke data semula). Sedangkan hasil keluaran dari
steganography secara visual (indrawi) memiliki bentuk yang sama dengan
data aslinya, tentu saja persepsi ini oleh indra manusia, tetapi tidak
oleh komputer atau pengolah data digital lainnya. Selain itu pada
steganography keberadaan informasi disembunyikan / tidak diketahui dan
terjadi penyampulan tulisan (covered writing). Sedangkan pada
cryptography informasi dikodekan dengan enkripsi atau metode pengkodean
dan informasi diketahui keberadaannya tetapi tidak dimengerti maksudnya.
-File host : file objek yang akan disisipi data digital lain
-File informasi : file yang akan disisipkan dalam data digital lain
-File stego medium : file induk yang sudah disisipi file informasi
Definisi
Steganografi (steganography) adalah ilmu dan seni menyembunyikan pesan rahasia (hiding message) sedemikian sehingga keberadaan (eksistensi) pesan tidak terdeteksi oleh indera manusia.
•Kata steganorafi berasal dari Bahaya Yunani yang berarti “tulisan tersembunyi” (covered writing).
•Steganografi membutuhkan dua properti: wadah penampung dan data rahasia yang akan disembunyikan.
•Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, suara, teks, dan video.Data rahasia yang disembunyikan juga dapat berupa citra, suara, teks, atau video.
•Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui keberadaannya.
•Di negara-negara yang melakukan penyensoran informasi, steganografi sering digunakan untuk menyembunyikan pesan-pesan melalui gambar (images), video, atau suara (audio).
•Kata steganorafi berasal dari Bahaya Yunani yang berarti “tulisan tersembunyi” (covered writing).
•Steganografi membutuhkan dua properti: wadah penampung dan data rahasia yang akan disembunyikan.
•Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, suara, teks, dan video.Data rahasia yang disembunyikan juga dapat berupa citra, suara, teks, atau video.
•Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui keberadaannya.
•Di negara-negara yang melakukan penyensoran informasi, steganografi sering digunakan untuk menyembunyikan pesan-pesan melalui gambar (images), video, atau suara (audio).
Kriteria Steganografi yang Bagus
• Steganografi yang dibahas di sini adalah penyembunyian data di dalam citra digital saja. Meskipun demikian, penyembunyian data dapat juga dilakukan pada wadah berupa suara digital, teks, ataupun video.
• Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah:
1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia.
2. Robustness. Data yang disembunyikan harus tahan terhadap manipulasi yang dilakukan pada citra penampung (seperti pengubahan kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan (cropping), enkripsi, dan sebagainya). Bila pada citra dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak.
3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (recovery). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih lanjut.
• Steganografi yang dibahas di sini adalah penyembunyian data di dalam citra digital saja. Meskipun demikian, penyembunyian data dapat juga dilakukan pada wadah berupa suara digital, teks, ataupun video.
• Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah:
1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia.
2. Robustness. Data yang disembunyikan harus tahan terhadap manipulasi yang dilakukan pada citra penampung (seperti pengubahan kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan (cropping), enkripsi, dan sebagainya). Bila pada citra dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak.
3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (recovery). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih lanjut.
Least Significant Bit Modification
2. Watermarking
Definisi
• Pada dasarnya, teknik watermarking adalah proses menambahkan kode identifikasi secara permanen ke dalam data digital. Kode identifikasi tersebut dapat berupa teks, gambar, suara, atau video. Selain tidak merusak data digital produk yang akan dilindungi, kode yang disisipkan seharusnya memiliki ketahanan (robustness) dari berbagai pemrosesan lanjutan seperti pengubahan, transformasi geometri, kompresi, enkripsi, dan sebagainya. Sifat robustness berarti data watermark tidak rusak akibat pemrosesan lanjutan tersebut.
• Salah satu karya intelektual yang dilindungi adalah produk dalam bentuk digital, seperti software dan produk multimedia seperti teks, musik (dalam format MP3 atau WAV), gambar/citra (image), dan video digital (VCD). Selama ini penggandaan atas produk digital tersebut dilakukan secara bebas dan leluasa. Pemegang hak cipta atas produk digital tersebut tentu dirugikan karena ia tidak mendapat royalti dari usaha penggandaan tersebut.
• Salah satu cara untuk melindungi hak milik intelektual atas produk multimedia (gambar/foto, audio, teks, video) adalah dengan menyisipkan informasi ke dalam data multimedia tersebut dengan teknik digital watermarking. Informasi yang disisipkan ke dalam data multimedia disebut watermark, dan watermark dapat dianggap sebagai sidik digital (digital signature) atau stempel digital dari pemilik yang sah atas produk multimedia tersebut.
• Pemberian signature dengan teknik watermarking ini dilakukan sedemikian sehingga informasi yang disisipkan tidak merusak data digital yang dilindungi.
• Watermark di dalam data digital tidak dapat dideteksi oleh orang yang tidak mengetahui rahasia skema penyisipan watermark, dan juga watermark tidak dapat diidentifikasi dan dihilangkan.
• Watermark dapat digunakan sebagai bukti kepemilikan untuk membantu digital publisher melindungi materi yang mempunyai hak cipta (copyright).
• Jika ada orang lain yang mengklaim bahwa produk digital yang didapatkannya adalah miliknya, maka pemegang hak cipta atas karya multimedia tersebut dapat membantah klaim tersebut dengan proses verifikasi. Caranya, watermark diekstraksi dari produk digital yang disengketakan. Watermark yang diekstraksi tersebut dibandingkan dengan watermark pemegang hak cipta. Jika sama, berarti memang dialah pemegang hak cipta produk multimedia tersebut.
• Gambar 7.4 memperlihatkan sebuah gambar (image) paprika yang disisipi dengan watermark berupa gambar hitam putih yang menyatakan identifikasi pemiliknya (Shanty). Perhatikanlah bahwa setelah disisipi watermark, gambar paprika tetap kelihatan mulus, seolah-olah tidak pernah disisipi watermark sebelumnya. Sebenarnya tidaklah demikian, gambar paprika tersebut mengalami sedikit perubahan akibat watermarking, namun mata manusia mempunyai sifat kurang peka terhadap perubahan kecil ini, sehingga manusia sukar membedakan mana gambar yang asli dan mana gambar yang sudah disisipi watermark.
• Berdasarkan tipe dokumen yang diberi watermarking dapat diklasifikasikan menjadi:
1. Image Watermarking
2. Video Watermarking
3. Audio Watermarking
4. Text Watermarking
• Watermarking dapat juga dikategorikan sebagai visible watermarking (watermark terlihat oleh indera manusia) dan invisible watermarking (watermark tidak tampak).
• Watermarking dapat juga dikategorikan sebagai blind watermarking (proses verifikasi watermark tidak membutuhkan citra asal) dan non blind watermarking (proses verifikasi watermark membutuhkan citra asal) .
• Salah satu cara untuk melindungi hak milik intelektual atas produk multimedia (gambar/foto, audio, teks, video) adalah dengan menyisipkan informasi ke dalam data multimedia tersebut dengan teknik digital watermarking. Informasi yang disisipkan ke dalam data multimedia disebut watermark, dan watermark dapat dianggap sebagai sidik digital (digital signature) atau stempel digital dari pemilik yang sah atas produk multimedia tersebut.
• Pemberian signature dengan teknik watermarking ini dilakukan sedemikian sehingga informasi yang disisipkan tidak merusak data digital yang dilindungi.
• Watermark di dalam data digital tidak dapat dideteksi oleh orang yang tidak mengetahui rahasia skema penyisipan watermark, dan juga watermark tidak dapat diidentifikasi dan dihilangkan.
• Watermark dapat digunakan sebagai bukti kepemilikan untuk membantu digital publisher melindungi materi yang mempunyai hak cipta (copyright).
• Jika ada orang lain yang mengklaim bahwa produk digital yang didapatkannya adalah miliknya, maka pemegang hak cipta atas karya multimedia tersebut dapat membantah klaim tersebut dengan proses verifikasi. Caranya, watermark diekstraksi dari produk digital yang disengketakan. Watermark yang diekstraksi tersebut dibandingkan dengan watermark pemegang hak cipta. Jika sama, berarti memang dialah pemegang hak cipta produk multimedia tersebut.
• Gambar 7.4 memperlihatkan sebuah gambar (image) paprika yang disisipi dengan watermark berupa gambar hitam putih yang menyatakan identifikasi pemiliknya (Shanty). Perhatikanlah bahwa setelah disisipi watermark, gambar paprika tetap kelihatan mulus, seolah-olah tidak pernah disisipi watermark sebelumnya. Sebenarnya tidaklah demikian, gambar paprika tersebut mengalami sedikit perubahan akibat watermarking, namun mata manusia mempunyai sifat kurang peka terhadap perubahan kecil ini, sehingga manusia sukar membedakan mana gambar yang asli dan mana gambar yang sudah disisipi watermark.
• Berdasarkan tipe dokumen yang diberi watermarking dapat diklasifikasikan menjadi:
1. Image Watermarking
2. Video Watermarking
3. Audio Watermarking
4. Text Watermarking
• Watermarking dapat juga dikategorikan sebagai visible watermarking (watermark terlihat oleh indera manusia) dan invisible watermarking (watermark tidak tampak).
• Watermarking dapat juga dikategorikan sebagai blind watermarking (proses verifikasi watermark tidak membutuhkan citra asal) dan non blind watermarking (proses verifikasi watermark membutuhkan citra asal) .
Perbedaan Steganografi dengan Watermarking
• Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan antara keduanya. Jika pada steganografi informasi rahasia disembunyikan di dalam media digital dimana media penampung tidak berarti apa-apa, maka pada watermarking justru media digital tersebut yang akan dilindungi kepemilikannya dengan pemberian label hak cipta.
• Meskipun steganografi dan watermarking tidak sama, namun secara prinsip proses penyisipan informasi ke dalam data digital tidak jauh berbeda.
• Data watermark yang lazim disisipkan ke dalam data digital adalah teks, citra, atau suara. Watermark berupa teks misalnya pernyataan atau pesan yang mengindikasikan kepemilikan dokumen (copyright notification). Watermark berupa teks mengandung kelemahan karena kesalahan satu bit akan menghasilkan hasil teks yang berbeda pada waktu verifikasi (ektraksi).
• Watermark berupa suara atau citra lebih disukai karena kesalahan pada beberapa bit watermark tidak menghasilkan perubahan yang berarti pada waktu verifikasi. Hasil ekstraksi watermark yang mengandung kesalahan tersebut masih dapat dipersepsi secara visual (atau secara pendengaran jika watermark-nya berupa suara). Citra yang sering digunakan sebagai watermark biasanya logo perusahaan atau lambang.
• Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan antara keduanya. Jika pada steganografi informasi rahasia disembunyikan di dalam media digital dimana media penampung tidak berarti apa-apa, maka pada watermarking justru media digital tersebut yang akan dilindungi kepemilikannya dengan pemberian label hak cipta.
• Meskipun steganografi dan watermarking tidak sama, namun secara prinsip proses penyisipan informasi ke dalam data digital tidak jauh berbeda.
• Data watermark yang lazim disisipkan ke dalam data digital adalah teks, citra, atau suara. Watermark berupa teks misalnya pernyataan atau pesan yang mengindikasikan kepemilikan dokumen (copyright notification). Watermark berupa teks mengandung kelemahan karena kesalahan satu bit akan menghasilkan hasil teks yang berbeda pada waktu verifikasi (ektraksi).
• Watermark berupa suara atau citra lebih disukai karena kesalahan pada beberapa bit watermark tidak menghasilkan perubahan yang berarti pada waktu verifikasi. Hasil ekstraksi watermark yang mengandung kesalahan tersebut masih dapat dipersepsi secara visual (atau secara pendengaran jika watermark-nya berupa suara). Citra yang sering digunakan sebagai watermark biasanya logo perusahaan atau lambang.
sumber :
- Eko Aribowo, Herman Yuliansyah, Nur Rochmah. Petunjuk Praktikum Keamanan Komputer, Teknik Informatika Universitas Ahmad Dahlan, Yogyakarta 2013
- bahan kuliah ke-7 steganografi dan watermarking ITB oleh Ir. Rinaldi Munir, M.T.
- http://ridi09.blogspot.com/2012/11/pengenalan-steganografi-steganografi.html?zx=1bf2450049a29742
Senin, 01 April 2013
[Comp Visi] Praktikum 3 - THRESHOLD
silakan dicopy gan.. ke notepad! biar aman gan..soalnya ada yang kena spasi turun tuh ...
++++++
% 1.Code Instalasi______________
function varargout = treshold(varargin)
.................
.............
if nargout > 0
varargout{1} = fig;
end
%Tambahkan Code disini
global global_max_value;
global global_min_value;
global_max_value = 255;
global_min_value = 0;
slider_step(1) = 1/255;
slider_step(2) = 10/255;
set(handles.slider_Max,'sliderstep', slider_step, 'max', 255, 'min', 0, 'Value', global_max_value);
set(handles.slider_Min,'sliderstep', slider_step, 'max', 255, 'min', 0, 'Value', global_min_value);
set(handles.edit_Max,'string', global_max_value);
set(handles.edit_Min,'string', global_min_value);
set(handles.listbox_DisplayScale, 'HandleVIsibility','off','Visible','off');
set(handles.text3.'Visible','off');
set(handles.axes1.'Visible','off');
set(handles.axes2.'Visible','off');
global loaded_image;
global image_filename;
global selected_scale;
global axes1_image;
global axes2_image;
global selected_scale;
loaded_image =[];
image_filename = '';
axes1_image = [];
axes2_image = [];
selected_scale = 1;
% 2.Function Slider______________
function varargout = slider_Max_Callback(h, eventdata,handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = round(get(handles.slider_Max,'Value'));
if (max_value >= global_min_value)
global_max_value = max_value;
set(handles.edit_Max,'string',global_max_value);
end
set(handles.slider_Max,'Value',global_max_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = slider_Min_callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = round(get(handles.slider_Min,'Value'));
if (min_value <=global_max_value)
global_min_value = min_value;
set(handles.edit_Min,'string',global_min_value);
end
set(handles.slider_Min,'value',global_min_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = edit_Max_Callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = str2double(get(handles.edit_Max,'string'));
if((max_value <= 255) & (max_value >= global_min_value) & (max_value~= NaN))
global_max_value = round(max_value);
set(handles.slider_Max,'Value',global_max_value);
end
set(handles.edit_Max,'string',global_max_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = edit_Min_Callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = str2double(get(handles.edit_Min,'string'));
if((min_value >= 0) & (min_value <= global_max_value) & (min_value~= NaN))
global_min_value = round(min_value);
set(handles.Slider_Min,'string',global_min_value);
display_threshold(h, eventdata, handles, varargin);
% 2.Function Threshold_____________________
function display_threshold, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
global axes1_image;
global axes2_image;
global selected_scale;
set(handles.text_messages,'string','');
axes(handles.axes2);
set(handles.axes2,'HandleVisibility','on', 'Visibile','on','Units','pixels');
if (selected_scale ~= 1)
set(handles.text_messages,'string','Finding thresholding regions);
axes2_image = threshold_grayscale_image(axes1_image,global_min_value,global_max_value);
message = strcat('Thresholded image between',num2str(global_min_value),' and ', ... num2str (global_max_value));
set(handles.text5,'string',message);
try
set(handles.text_messages,'string','Displaying Axes2 image');
warning off'
imshow(axes2_image);
warning on;
set(handles.text_messages,'string','');
catch
set(handles.text_messages,'string','Error displaying Axes2');
end
end
set(handles.axes2,'HandleVisibility','off');
%-----------------------------
function varargout = pushbutton_Overlap_Callback(h, eventdata, handles, varargin)
global axes1_image;
global axes2_image;
global selected_scale;
set(handles.text_messages,'string','');
%if (~isempty(axes1_image) & ~isempty(axes2_image) & (selected_scale ~=1))
if (~isempty(axes1_image) & ~isempty(axes2_image))
figure;
clf;
set(handles.text_messages,'string','Displaying images');
if (selected_scale == 1)
overlap_image (:,:,1) = uint8(double(axes1_image(:,:,1)) .*double(axes2_image));
overlap_image (:,:,2) = uint8(double(axes1_image(:,:,2)) .*double(axes2_image));
overlap_image (:,:,3) = uint8(double(axes1_image(:,:,3)) .*double(axes2_image));
else
overlap_image = uint8(double(axes2_image) .*double(axes1_image));
end
try
warning off;
imshow(overlap_image);
warning on;
set(handles.text_messages,'string','');
catch
set(handles.text_messages,'string','Errror displaying Overlapping images');
end
end
%-----------------------------
function varargout = pushbutton_save_Callback(h, eventdata, handles, varargin)
global axes2_image;
if ~isempty(axes2_image)
% save_as_file = strcat (get(handles.edit_Save_As,'string'),'.tif');
save_as_file = get(handles.edit_Save_As,'string');
message = strcat('Are You Sure That You Want To Save As : ',save_as_file);
reply = questdlg(message,'Saving File...','Yes','No','No');
if (strcmp(reply,'Yes') == 1)
set(handles.text_messages,'string','Starting to save thresholded image');
try
imwrite(axes2_image, save_as_file);
set(handles.text_messages,'string','');
msgbox('Save Completed','','none');
catch
set(handles.text_messages,'string',strcat('Error saving into',save_as_file));
end
end
end
Read More..
++++++
% 1.Code Instalasi______________
function varargout = treshold(varargin)
.................
.............
if nargout > 0
varargout{1} = fig;
end
%Tambahkan Code disini
global global_max_value;
global global_min_value;
global_max_value = 255;
global_min_value = 0;
slider_step(1) = 1/255;
slider_step(2) = 10/255;
set(handles.slider_Max,'sliderstep', slider_step, 'max', 255, 'min', 0, 'Value', global_max_value);
set(handles.slider_Min,'sliderstep', slider_step, 'max', 255, 'min', 0, 'Value', global_min_value);
set(handles.edit_Max,'string', global_max_value);
set(handles.edit_Min,'string', global_min_value);
set(handles.listbox_DisplayScale, 'HandleVIsibility','off','Visible','off');
set(handles.text3.'Visible','off');
set(handles.axes1.'Visible','off');
set(handles.axes2.'Visible','off');
global loaded_image;
global image_filename;
global selected_scale;
global axes1_image;
global axes2_image;
global selected_scale;
loaded_image =[];
image_filename = '';
axes1_image = [];
axes2_image = [];
selected_scale = 1;
% 2.Function Slider______________
function varargout = slider_Max_Callback(h, eventdata,handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = round(get(handles.slider_Max,'Value'));
if (max_value >= global_min_value)
global_max_value = max_value;
set(handles.edit_Max,'string',global_max_value);
end
set(handles.slider_Max,'Value',global_max_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = slider_Min_callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = round(get(handles.slider_Min,'Value'));
if (min_value <=global_max_value)
global_min_value = min_value;
set(handles.edit_Min,'string',global_min_value);
end
set(handles.slider_Min,'value',global_min_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = edit_Max_Callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = str2double(get(handles.edit_Max,'string'));
if((max_value <= 255) & (max_value >= global_min_value) & (max_value~= NaN))
global_max_value = round(max_value);
set(handles.slider_Max,'Value',global_max_value);
end
set(handles.edit_Max,'string',global_max_value);
display_threshold(h, eventdata, handles, varargin);
function varargout = edit_Min_Callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = str2double(get(handles.edit_Min,'string'));
if((min_value >= 0) & (min_value <= global_max_value) & (min_value~= NaN))
global_min_value = round(min_value);
set(handles.Slider_Min,'string',global_min_value);
display_threshold(h, eventdata, handles, varargin);
% 2.Function Threshold_____________________
function display_threshold, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
global axes1_image;
global axes2_image;
global selected_scale;
set(handles.text_messages,'string','');
axes(handles.axes2);
set(handles.axes2,'HandleVisibility','on', 'Visibile','on','Units','pixels');
if (selected_scale ~= 1)
set(handles.text_messages,'string','Finding thresholding regions);
axes2_image = threshold_grayscale_image(axes1_image,global_min_value,global_max_value);
message = strcat('Thresholded image between',num2str(global_min_value),' and ', ... num2str (global_max_value));
set(handles.text5,'string',message);
try
set(handles.text_messages,'string','Displaying Axes2 image');
warning off'
imshow(axes2_image);
warning on;
set(handles.text_messages,'string','');
catch
set(handles.text_messages,'string','Error displaying Axes2');
end
end
set(handles.axes2,'HandleVisibility','off');
%-----------------------------
function varargout = pushbutton_Overlap_Callback(h, eventdata, handles, varargin)
global axes1_image;
global axes2_image;
global selected_scale;
set(handles.text_messages,'string','');
%if (~isempty(axes1_image) & ~isempty(axes2_image) & (selected_scale ~=1))
if (~isempty(axes1_image) & ~isempty(axes2_image))
figure;
clf;
set(handles.text_messages,'string','Displaying images');
if (selected_scale == 1)
overlap_image (:,:,1) = uint8(double(axes1_image(:,:,1)) .*double(axes2_image));
overlap_image (:,:,2) = uint8(double(axes1_image(:,:,2)) .*double(axes2_image));
overlap_image (:,:,3) = uint8(double(axes1_image(:,:,3)) .*double(axes2_image));
else
overlap_image = uint8(double(axes2_image) .*double(axes1_image));
end
try
warning off;
imshow(overlap_image);
warning on;
set(handles.text_messages,'string','');
catch
set(handles.text_messages,'string','Errror displaying Overlapping images');
end
end
%-----------------------------
function varargout = pushbutton_save_Callback(h, eventdata, handles, varargin)
global axes2_image;
if ~isempty(axes2_image)
% save_as_file = strcat (get(handles.edit_Save_As,'string'),'.tif');
save_as_file = get(handles.edit_Save_As,'string');
message = strcat('Are You Sure That You Want To Save As : ',save_as_file);
reply = questdlg(message,'Saving File...','Yes','No','No');
if (strcmp(reply,'Yes') == 1)
set(handles.text_messages,'string','Starting to save thresholded image');
try
imwrite(axes2_image, save_as_file);
set(handles.text_messages,'string','');
msgbox('Save Completed','','none');
catch
set(handles.text_messages,'string',strcat('Error saving into',save_as_file));
end
end
end
Read More..
Langganan:
Postingan (Atom)