BAB 3
ANALISIS DAN PERANCANGAN
3.1Analisis Sistem
Sistem yang baik tentu dibangun dengan perancangan yang baik pula. Analisis sistem adalah suatu bentuk penguraian suatu sistem informasi yang yang lengkap ke dalam bagian-bagian komponennya dengan tujuan mengindentifikasi dan mengevaluasi permasalahan, kesempatan, hambatan, serta kebutuhan yang diharapkan sehingga dapat dilakukan usulan perbaikan untuk meningkatkan kualitas sistem yang sudah ada (Whitten et al. 2004). Hal ini bertujuan untuk mempelajari apakah komponen-komponen tersebut bekerja dan berinteraksi sesuai dengan tujuan mereka. Ada tiga fase analisis sistem yaitu analisis masalah, analisis kebutuhan dan analisis proses. 3.1.1 Analisis Masalah
Gambar 3.1 Diagram Ishikawa Masalah Penelitian.
3.1.2 Analisis Kebutuhan
Analisis kebutuhan dibagi menjadi dua bagian, yaitu kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.
3.1.2.1 Kebutuhan Fungsional
Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut:
a. Sistem harus mampu membaca informasi yang berada dalam file citra JPEG. b. Kunci Double Playfair yang dibangkitkan adalah bilangan bulat positif dari 0
sampai 255.
3.1.2.2 Kebutuhan Non Fungsional
Kebutuhan fungsional mencakup beberapa karakteristik berikut: 1. Performa
Sistem yang akan dibangun dapat menunjukkan hasil dari pengambilan citra ke dalam bentuk semula.
2. Efisiensi
Perangkat lunak yang dibangun harus sesederhana mungkin agar tidak menyulitkan pengguna dan bersifat ramah pengguna (user friendly).
3. Ekonomis
Perangkat lunak yang dibangun harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya apapun.
4. Manajemen kualitas
Perangkat lunak yang dibangun harus memiliki kualitas yang baik yaitu proses pembangkitan kunci yang cepat dan proses enkripsi, dekripsi yang akurat.
5. Kontrol
3.1.3. Arsitektur Umum Sistem
Arsitektur umum sistem dapat dilihat pada gambar 3.2 dibawah ini.
Gambar 3.2 Arsitektur umum sistem
3.2. Pemodelan Sistem
Pemodelan aplikasi yang dirancang bertujuan untuk menggambarkan semua kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan aplikasi dilakukan dengan membuat use-case diagram dan activity diagram.
3.2.1. Use-Case Diagram
Untuk menganalisa komponen-komponen yang berperan dalam sistem yang dirancang, penulis menggunakan use-case diagram agar proses penganalisaan komponen dapat dilakukan dengan mudah. Use-case diagram sistem pada aplikasi yang dirancang dapat dilihat pada Gambar 3.3.
Gambar 3.3 Use-Case Diagram Pada Sistem 3.2.2. Activity Diagram
3.2.2.1 Activity Diagram Proses Pembangkit Kunci
3.2.2.3 Activity Diagram Proses Dekripsi
Gambar 3.6 Activity Diagram Proses Dekripsi 3.2.2.4 Sequence Diagram
Gambar 3.7 Sequence diagram proses enkripsi
3.2.3 Flowchart
Flowchart merupakan suatu bagan yang menggambarkan urutan suatu proses secara rinci menggunakan simbol-simbol tertentu dan menggambarkan hubungan antara satu proses dengan proses lainnya dengan menggunakan tanda panah.
3.2.3.1 Flowchart Pembangkitan Kunci
Pembangkitan kunci dilakukan dengan mengacak bilangan dan kemudian dicek apakah bilangan tersebut merupakan bilangan prima dengan Algoritma The Sieve of Eratosthenes. Flowchart pembangkitan kunci dapat dilihat pada Gambar 3.9.
Uji dengan The Sieve of
Eratosthenes
Bangkitkan p,α, β dan d
Tidak
3.2.3.2 Flowchart Enkripsi Algoritma ElGamal
Pada enkripsi ElGamal terdapat dua parameter masukan yaitu kunci publik dan plainteks (citra yang akan dienkripsi) dan menghasilkan keluaran berupa cipherteks. Adapun flowchart dari proses enkripsi dapat dilihat pada Gambar 3.10.
Mulai
Gambar 3.10 Flowchart proses Enkripsi pada ElGamal 3.2.3.3 Flowchart Dekripsi ElGamal
Mulai
Gambar 3.11 Flowchart proses Dekripsi pada ElGamal 3.2.3.4 Flowchart Sistem
(a) (b) (c)
Simpan Kunci Publik dan Kunci Privat
(a) Flowchart Pembangkitan Kunci (b) Flowchart Enkripsi (c) Flowchart Dekripsi Gambar 3.12 Flowchart SubProcess
3.3. Perancangan Antarmuka (Interface)
3.3.1. Rancangan Halaman Utama
Halaman Menu merupakan halaman yang pertama kali ditampilkan saat sistem dijalankan. Pada halaman Menu terdapat beberapa menu untuk mengakses halaman lain. Rancangan halaman Menudapat dilihat pada Gambar 3.13.
Gambar 3.13 Rancangan Interface Halaman Menu
Tabel 3.1 Keterangan Gambar Rancangan Interface Halaman Menu
No Keterangan
1 Menustrip “Menu” untuk menampilkan halaman utama dari sistem
2 Menustrip “Implementasi” untuk memiliki 3 submenu yaitu:
- Submenu“Key Generator” untuk pembangkitan kunci yang dibutuhkan
dalam proses enkripsi dan dekripsi
- Submenu“Enkripsi” untuk proses enkripsi terhadap berkas citra
- Submenu“Dekripsi” untuk proses dekripsi terhadap berkas citra
3 Menustrip “About” untuk menampilkan halaman penggunaan sistem
3 Menustrip “Help” untuk menampilkan halaman petunjuk penggunaan sistem
4 Label untuk menampilkan judul sistem
5 Label untuk menampilkan nama dan nim pembuat sistem
6 Picturebox untuk menampilkan logo USU
7 Label untuk menampilkan program studi dan fakultas pembuat sistem
3.3.2 Halaman Key Generator
Gambar 3.14 Rancangan Interface Halaman Key Generator Tabel 3.2 Keterangan Gambar Rancangan Interface Halaman Key Generator
No Keterangan
1 Groupbox yang berisi field-field untuk proses pembangkit kunci
2 Textbox untuk menampilkan nilai P
3 Textbox untuk menampilkan nilai Alpha
4 Textbox untuk menampilkan nilai Beta
5 Textbox untuk menampilkan nilai X
6 Button untuk proses pembangkit kunci
7 Button untuk menyimpan kunci publik
8 Button untuk menyimpan kunci privat
3.3.3 Halaman Enkripsi
Gambar 3.15 Rancangan Interface Halaman Enkripsi Tabel 3.3 Keterangan Gambar Rancangan Interface Halaman Enkripsi
No Keterangan
1 Groupbox yang berisi field-field informasi citra asli
2 Groupbox yang berisi field-field untuk kunci Double Playfair
3 Groupbox yang berisi field-field untuk proses enkripsi
4 Groupbox yang berisi field-field untuk proses imput kunci Double Playfair
5 Groupbox yang berisi field-field untuk pengambilan kunci publik
6 Button untuk mengambil citra dari direktori file
7 Picturebox untuk menampilkan citra
8 Button untuk mengubah warna RGB ke Greyscale
9 Button untuk melakukan proses enkripsi citra
10 Button untuk menyimpan hasil enkripsi citra
11 Button untuk mengambil kunci publik yang telah disimpan
12 Richtext untuk menampilkan hasil nilai dari enkripsi citra
13 Button untuk melakukan proses enkripsi kunci
3.3.4 Halaman Dekripsi
Halaman Dekripsi merupakan halaman yang tampil saat pengguna memilih submenu Dekripsi. Pada halaman ini pengguna dapat melakukan proses dekripsisehingga akan menampilkan citra asli. Rancangan halaman dekripsi dapat dilihat pada Gambar 3.16.
Gambar 3.16 Rancangan Interface Halaman Dekripsi Tabel 3.4 Keterangan Gambar Rancangan Interface Halaman Dekripsi
No Keterangan
1 Groupbox yang berisi field-field informasi citra asli
2 Groupbox yang berisi field-field untuk pengambilan kunci privat
3 Groupbox yang berisi field-field untuk kunci Double Playfair
4 Groupbox yang berisi field-field untuk proses dekripsi
5 Groupbox yang berisi field-field untuk proses import kunci Double Playfair
6 Button untuk mengambil citra dari direktori file
7 Picturebox untuk menampilkan citra
8 Button untuk melakukan import kunci double playfair
10 Button untuk menyimpan hasil dekripsi citra
11 Button untuk mengambil kunci privat yang telah disimpan
12 Richtext untuk menampilkan hasil nilai dari dekripsi citra
3.3.5 Halaman About
Halaman About merupakan halaman yang ditampilkan oleh sistem jika pengguna sistem memilih menu About. Adapun rancangan antarmuka dari halaman About dapat dilihat pada Gambar 3.17.
Tabel 3.5 Keterangan Gambar Rancangan Interface Halaman About
No Keterangan
1 Label yang berisi Penjelasan singkat aplikasi 2 Label yang berisi nama
3 Label yang berisi NIM
3.3.6 Halaman Help
Halaman Help merupakan halaman yang ditampilkan oleh sistem jika pengguna sistem memilih menu Help. Adapun rancangan antarmuka dari halaman Help dapat dilihat pada Gambar 3.18.
Tabel 3.6 Keterangan Gambar Rancangan Interface Halaman Help
No Keterangan
1 Label yang berisi petunjuk penggunaan
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini penulis memaparkan bagaimana implementasi dari sistem dan juga hasil pengujian aplikasi yang dilakukan pada Algoritma Kriptografi ElGamal dan Algoritma Double Playfair Cipher yang sudah dibangun menggunakan Sharp Development.
4.1 Implementasi Sistem
Implementasi sistem merupakan proses penerapan dari hasil analisis dan perancangan sistem ke dalam sebuah bahasa pemrograman. Implementasi sistem pada penelitian ini dibangun menggunakan bahasa pemrogaman C#. Proses implementasi yang dirancang pada sistem ini dibagi menjadi 4 menu, yaitu : Menu, Implementasi, About dan Help.
4.1.1. Menu
Menu merupakan halaman utama, artinya merupakan halaman yang pertama kali muncul ketika sistem dijalankan. Menu menampilkan judul sistem, nama pembuat sistem, logo dan informasi universitas. Tampilan halaman Menu dapat dilihat pada gambar 4.1.
4.1.2. Implementasi
Implementasi memilki 3 submenu didalamnya, yaitu Key Generator, Enkripsi, dan Dekripsi.
4.1.2.1 Submenu Key Generator
Pada submenu Key Generator, user dapat membangkitkan bilangan prima, alpha, beta dan d. Kunci tersebut akan disimpan sebagai kunci publik dan kunci privat yang akan digunakan untuk proses enkripsi dan dekripsi. Tampilandari submenu Key Generator dapat dilihat pada Gambar 4.2.
Gambar 4.2 Submenu Key Generator
4.1.2.2 Submenu Enkripsi
Gambar 4.3 Submenu Enkripsi
4.1.2.3 Submenu Dekripsi
Submenu Dekripsi merupakan proses yang harus dilakukan oleh penerima pesan untuk melakukan dekripsi agar dapat melihat citra asli yang telah dimampatkan dan diacak sebelumnya. Tampilan dari submenu Dekripsi dapat dilihat pada Gambar 4.4.
4.1.3. Menu About
Pada menu About menampilkan penjelasan singkat mengenai sistem aplikasi yang telah dibuat. Tampilan dari submenu About dapat dilihat pada Gambar 4.5.
Gambar 4.5 Menu About
4.1.4. Menu Help
Gambar 4.6 Menu Help 4.2 Pengujian Sistem
Pada tahap ini akan dilakukan pengujian keberhasilan sistem dalam menjalankan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. Citra yang akan dienkripsi adalah citra yang berukuran 200 x 200 piksel. Tampilan dari citra yang akan diuji dapat dilihat pada Gambar 4.7.
Gambar 4.7 Citra yang akan diuji
4.2.1 Pengujian proses key generator
1. Tekan tombol Bangkitkan Kunci untuk mendapatkan nilai p, alpha, d, dan beta. Hasil pembangkit kunci dapat dilihat pada Gambar 4.8.
Gambar 4.8 Hasil nilai kunci publik dan kunci privat
2. Tekan tombol simpan kunci public untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file kunci publik (*.public) yang akan digunakan dalam proses enkripsi. Form Save File Dialog dapat dilihat pada Gambar 4.9.
Gambar 4.9 Save File Dialog untuk menyimpan kunci public
3. Tekan tombol simpan untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file kunci privat (*.private) yang akan digunakan dalam proses dekripsi. Form Save File Dialog dapat dilihat pada Gambar 4.11.
Gambar 4.11 Save File Dialog untuk menyimpan kunci privat
Kemudian menampilkan Message Box sebagai informasi kunci berhasil disimpan seperti terlihat dari Gambar 4.12.
Gambar 4.12 Message box informasi berhasil simpan kunci
4.2.2. Pengujian proses enkripsi
Setelah memilih submenu enkripsimaka akan dilakukan proses enkripsi citra. Berikut langkah – langkah untuk melakukan proses enkripsi.
Proses Enkripsi
Langkah-langkah dalam mengenkripsi pesan:
7. Terima kunci publik (p,α, β) = (271, 107, 39)
9. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan P1 = C = 67
Maka dari perhitungan di atas, kita mendapatkan nilai c1 dan c2 sebagai cipherteks nya yaitu (238, 212). Proses diatas akan berulang untuk membaca semua blok pesan untuk menghasilkan cipherteks.
12.Kirim c1 = 238 dan c2 = 212.
1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih berkas citra (*bmp) yang akan dikompresi. Form Open File Dialog dapat dilihat pada Gambar 4.13.
Gambar 4.13 Open File Dialog input file citra.
Gambar 4.14 Tampilan sistem menampilkan citra terpilih
2. Jika gambar tersebut adalah citra RGB maka tekan tombol Grayscale untuk membuat gambar yang telah dipilih menjadi grayscale. Hasil perubahan citra menjadi Grayscale terlihat pada Gambar 4.15.
Gambar 4.15 Hasil konversi gambar RGB menjadi Grayscale
Gambar4.16 Tampilan input kata kunci
1. Tekan tombol Pembangkitdan akan muncul Open File Dialog dan pilih berkas teks (.*publik). Form Open File Dialog dapat dilihat pada Gambar 4.17
Gambar 4.17 Open File Dialog input file kunci publik
Kemudian pada textbox akan tempil nilai kunci publik tersebut, seperti terlihat pada Gambar 4.18.
Gambar 4.18 Tampilkan nilai kunci publik
Gambar 4.19 Message Box informasi proses enkripsi kunci berhasil
3. Tekan tombol enkripsi citra untuk melakukan enkripsi pada citra hingga muncul Richtext terisi dengan nilai enkripsiseperti terlihat pada Gambar 4.20.
Gambar 4.20 Richtext informasi proses enkripsi berhasil
Gambar 4.21 Save File Dialog hasil enkripsi citra
Kemudian menampilkan Message Box sebagai informasi gambar berhasil disimpan seperti terlihat dari Gambar 4.22.
Gambar 4.22 Message Box gambar berhasil disimpan
4.2.3. Pengujian proses dekripsi
Setelah memilih submenu enkripsimaka akan dilakukan proses dekripsi citra. Berikut langkah – langkah untuk melakukan proses dekripsi citra.
Proses Dekripsi
Dalam mendeskripsi pesan digunakan perhitungan P = c2 x (c1d)-1 mod p. Perhitungan tersebut dapat disederhanakan dengan teorema Fermat:
�= �2��1 �−1−�����
� =�2������
Langkah-langkah dalam mendekripsi pesan: 4. Terima (c1, c2) dari sender = ( 238, 212)
Maka diperoleh P = 67, dalam karakter dalam ASCII adalah C, sesuai dengan plainteks yang dikirim sender.
6. Kemudian menggabungkan blok m1, m2, ... menjadi plainteks yang utuh
1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih berkas (*jpeg). Kemudian sistem akan menampilkan direktori dari berkas yang terpilih seperti terlihat pada Gambar 4.23.
2. Tekan tombol pembangkit, dan akan muncul Open File Dialog dan pilih berkas teks (.*private). Form Open File Dialog dapat dilihat pada Gambar 4.24.
Gambar 4.24 Open File Dialog input kunci privat.
Kemudian pada textbox akan tempil nilai kunci privat tersebut seperti terlihat pada Gambar 4.25.
Gambar 4.25 Tampilan nilai kunci privat
Gambar 4.26 Tampilan citra setelah di dekripsi
1. Tekan tombol simpan untuk menyimpan citra sebelum dienkripsi. Form Save File Dialog akan muncul seperti terlihat pada Gambar 4.27.
Gambar 4.27 Save File Dialog untuk menyimpan citra
Gambar 4.28 Message Dialog informasi gambar berhasil disimpan 4.2.5 HasilPengujian.
Hasil pengujian yang didapatkan melalui penelitian ini berupa hasil dari proses enkripsi pada menu Enkripsi dan proses dekripsi pada menu Dekripsi. Pengujian dilakukan terhadap citra dengan resolusi yang berbeda-beda. Adapun hasil uji coba, dapat dilihat pada gambar berikut ini:
4.2.5.1 HasilPengujian ke-1
Uji coba ini dilakukan pada gambar dengan resolusi 400 x 400 piksel, dengan menginputkan kata kunci “saya & temu” pada kedua kunci double Playfair cipher untuk mengenkripsi citra yang telah di input, dan menginput publik key untuk mengenkripsi kunci dari double playfair, lalu di dapat hasil perubahan citranya. Hasil uji coba dapat dilihat pada Gambar 4.29 berikut:
(a. Enkripsi)
(b. Dekripsi)
Gambar 4.29 Hasil Uji Coba ke-1
4.2.5.2HasilPengujian ke-2
Uji coba ini dilakukan pada gambar dengan resolusi 450 x 450 piksel, dengan menginputkan kata kunci “foto & kaca” pada kedua kunci double Playfair cipher untuk mengenkripsi citra yang telah di input, dan menginput publik key untuk mengenkripsi kunci dari double playfair, lalu di dapat hasil perubahan citranya.Hasil uji coba dapat dilihat pada Gambar4.30 berikut:
Pada proses selanjutnya hasil citra yang telah dienkripsi kemudian di input kembali, lalu import private key dan kunci double playfair yang telah dienkripsi kunci pada proses enkripsi sebelumnya, dan di dapat hasil dari perubahan citra kembali seperti sebelum dilakukan enkripsi citra. Hasil uji coba dapat dilihat pada Gambar 4.30 berikut:
(b. Dekripsi)
Uji coba ini dilakukan pada gambar dengan resolusi 500 x 500 piksel, dengan menginputkan kata kunci “sana & kiru” pada kedua kunci double Playfair cipher untuk mengenkripsi citra yang telah di input, dan menginput publik key untuk mengenkripsi kunci dari double playfair, lalu di dapat hasil perubahan citranya.Hasil uji coba dapat dilihat pada Gambar 4.31 berikut:
(a. Enkripsi)
Pada proses selanjutnya hasil citra yang telah dienkripsi kemudian di input kembali, lalu import private key dan kunci double playfair yang telah dienkripsi kunci pada proses enkripsi sebelumnya, dan di dapat hasil dari perubahan citra kembali seperti sebelum dilakukan enkripsi citra. Hasil uji coba dapat dilihat pada Gambar 4.31 berikut:
Gambar 4.31 Hasil Uji Coba ke-3 4.2.5.4 Hasil Pengujian ke-4
Uji coba ini dilakukan pada gambar dengan resolusi 550 x 550 piksel, dengan menginputkan kata kunci “kalu & gich” pada kedua kunci double Playfair cipher untuk mengenkripsi citra yang telah di input, dan menginput publik key untuk mengenkripsi kunci dari double playfair, lalu di dapat hasil perubahan citranya.Hasil uji coba dapat dilihat pada Gambar4.32 berikut:
(a. Enkripsi)
Pada proses selanjutnya hasil citra yang telah dienkripsi kemudian di input kembali, lalu import private key dan kunci double playfair yang telah dienkripsi kunci pada proses enkripsi sebelumnya, dan di dapat hasil dari perubahan citra kembali seperti sebelum dilakukan enkripsi citra. Hasil uji coba dapat dilihat pada Gambar 4.32 berikut:
(b. Dekripsi)
Gambar 4.32 Hasil Uji Coba ke-4
4.2.5.5 Hasil Pengujian ke-5
mengenkripsi kunci dari double playfair, lalu di dapat hasil perubahan citranya. Hasil uji coba dapat dilihat pada Gambar 4.33 berikut:
(a. Enkripsi)
Pada proses selanjutnya hasil citra yang telah dienkripsi kemudian di input kembali, lalu import private key dan kunci double playfair yang telah dienkripsi kunci pada proses enkripsi sebelumnya, dan di dapat hasil dari perubahan citra kembali seperti sebelum dilakukan enkripsi citra. Hasil uji coba dapat dilihat pada Gambar 4.33 berikut:
Dari uji coba yang telah di lakukan di atas diperoleh hasil seperti pada Tabel 4.1 berikut:
Tabel 4.1 Hasil Uji Coba untuk 5 kali pengujian
No Resolusi (Piksel)
Ukuran dalam kilobyte Citra Enkripsi Dekripsi
1 400 x 400 105 625 625
Dari Tabel 4.1 dapat dibuat grafik perbandingan hasil pengujian antara ukuran file plainteks dan cipherteks seperti Gambar 4.34.
Gambar 4.34 Grafik perbandingan hasil pengujian antara ukuran file citra asli, hasil dekripsi, hasil enkripsi.
400 450 500 550 600
Citra Asli Dekripsi Enkripsi
Ukuran (kilobyte)
BAB 5
KESIMPULAN DAN SARAN
Bab ini akan disimpulkan, aplikasi telah dapat melakukan proses pemampatan data. Pada bab ini juga disajikan saran-saran yang bermanfaat sebagai masukan bagi pengembangan Aplikasi pengamanan file citra Jpeg menggunakan Algoritma Elgamal dan Algoritma Double Playfair Cipher yang lebih baik.
5.1. Kesimpulan
1. Aplikasi yang dirancang dalam penelitian telah mampu melakukan proses pengamanan file citra dengan melakukan enkripsi dan dekripsi pada file citra. 2. Enkripsi citra dengan menggunakan algoritma Double Playfair Cipher dapat
mengamankan citra.
3. Enkripsi kunci dengan menggunakan algoritma Elgamal dapat mengamankan kunci Double Playfair.
4. File yang sudah di enkripsi menjadi cipherimage memiliki karakter yang lebih banyak atau panjang dibandingkan dengan file sebelum dilakukan proses enkripsi.
5.2 Saran
Adapun saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut:
1. Sistem ini hanya mampu melakukan pengamanan pada citra Jpeg (*.Jpeg), sehingga untuk pengembangan selanjutnya dapat dilakukan pada citra berformat *.BMP, *.TIF, *.PNG, dan format citra lainnya.
2. Sistem dapat dikembangkan dengan menambahkan jenis data yang dapat diamankan seperti audio dan video.
3. Sistem hanya berjalan pada perangkat desktop, diharapkan kedepannya bisa dikembangkan menjadi sistem yang dapat berjalan pada perangkat mobile. 4. Sistem dapat dikembangkan dengan menambahkan rentang waktu pada setiap
proses enkripsi dan dekripsi agar membantu dalam membandingkan citra asli dan citra setelah diubah.