Vanish adalah website chat aman yang dirancang dengan fokus utama pada privasi dan keamanan data. Website ini menerapkan berbagai algoritma kriptografi modern dan klasik untuk melindungi pesan teks, file, dan gambar, memastikan bahwa hanya pengirim dan penerima yang dituju yang dapat mengakses informasi.
Proyek ini dibuat untuk memenuhi Tugas Akhir Mata Kuliah Kriptografi kelas IF-B.
- Reza Rasendriya Adi Putra (123230030)
- Gusti Rama (123230040)
Vanish mengimplementasikan tiga fungsionalitas kriptografi utama untuk mengamankan berbagai jenis data:
-
Super-Enkripsi (Pesan Teks)
- Pesan teks diamankan menggunakan tiga lapisan enkripsi (Caesar Cipher, XOR Cipher, dan RSA) sebelum dikirim.
- Hanya ciphertext akhir yang disimpan di database, sehingga administrator server pun tidak dapat membaca isinya.
- Kunci (Caesar Shift & Kunci XOR) harus disepakati secara manual antara pengirim dan penerima.
-
Enkripsi File (Semua Jenis File)
- Mengamankan pengiriman file (dokumen, video, audio, .zip, dll.) menggunakan algoritma block cipher simetris Blowfish.
- Kunci enkripsi (berbasis password) harus dibagikan secara aman kepada penerima untuk dekripsi.
-
Steganografi (Teks/Gambar dalam Gambar)
- Menyembunyikan pesan teks rahasia atau gambar rahasia lain di dalam sebuah gambar sampul (cover image).
- Menggunakan metode Adaptive LSB (Least Significant Bit), yang secara cerdas menyisipkan data di area gambar yang paling kompleks untuk menghindari deteksi visual.
- Nilai Threshold bertindak sebagai kunci yang harus disepakati oleh kedua belah pihak.
-
Keamanan Database & Login
- Login: Menggunakan hashing PBKDF2-HMAC-SHA256 dengan salt unik untuk setiap pengguna, mencegah serangan rainbow table.
- Database: Seluruh data sensitif di dalam database (username, pesan, nama file, dan data file itu sendiri) dienkripsi menggunakan ChaCha20-Poly1305, sebuah stream cipher modern yang terautentikasi (AEAD).
- Frontend: Streamlit
- Backend: Python
- Database: MySQL
- Bahasa: Python
- Library Utama:
pycryptodome(RSA, Blowfish, ChaCha20-Poly1305, PBKDF2)mysql-connector-python(Koneksi Database)pandas(Manipulasi Data)Pillow (PIL)&numpy(Pemrosesan Gambar & Steganografi)python-dotenv(Manajemen Konfigurasi)
Ikuti langkah-langkah ini untuk menjalankan proyek Vanish di environment lokal Anda.
- Python 3.13+
- Server Database MySQL (atau MariaDB)
git clone https://github.com/Gusti-Rama/Kriptografi_tugas_akhir
cd Kriptografi_tugas_akhir- Buka client MySQL Anda (phpMyAdmin).
- Buat database baru dengan nama
vanish(atau nama lain pilihan Anda). Gunakan collation utf8mb4_general_ci.CREATE DATABASE vanish CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- Impor file SQL yang ada di folder database
database/vanish.sql.
-
Install semua dependensi yang diperlukan:
pip install -r requirements.txt
-
Copy paste file
.env.exampledan rename menjadi.env: -
Buka dan edit file
.envdengan konfigurasi database Anda dan kunci enkripsi unik.# Konfigurasi Database DB_HOST=localhost DB_USER=root DB_PASSWORD=password_database_anda DB_NAME=vanish DB_PORT=port_database_anda #biasanya 3306 # Kunci untuk enkripsi database Chacha20 DB_ENCRYPTION_KEY=buat-kunci-rahasia-yang-sangat-kuat-disini
PENTING:
DB_ENCRYPTION_KEYadalah kunci master untuk mengenkripsi/mendekripsi data di database. Jangan pernah ubah kunci ini setelah website digunakan, atau semua data yang ada di database tidak akan bisa dibaca kembali.
Setelah semua konfigurasi selesai, jalankan Streamlit:
streamlit run app.pyWebsite akan terbuka di browser Anda.
Proyek ini dilisensikan di bawah MIT License.