Bab 4
Bab 4
A. Definisi Masalah
A. Identifikasi Masalah
Dalam era digital saat ini, keamanan data merupakan aspek
yang sangat penting dalam berbagai aplikasi dan layanan. Dalam
rangka melindungi integritas, kerahasiaan, dan otentikasi data,
teknologi keamanan seperti JSON Web Token (JWT) dan algoritma
HMAC SHA-256 digunakan secara luas. JWT adalah standar
terbuka (RFC 7519) yang digunakan untuk merepresentasikan
informasi dalam bentuk token yang dapat ditandatangani secara
digital. Metodologi penelitian yang digunakan dalam penelitian ini
adalah metode penelitian deskriptif. Metode deskriptif merupakan
metode yang menggambarkan tujuan dari data yang dikumpulkan
dan mencatat setiap aspek dari situasi yang diselidiki untuk
mendapatkan gambaran yang jelas tentang apa yang dibutuhkan.
Ditemukan bahwa terdapat beberapa kebocoran data ketika tidak
melakukan keamanan data secara berlapis, diantara kasus-kasus
yang pernah terjadi seperti kehilangan data data penting yang
terdapat didalam website dan kebocoran data penting yang
menyebabkan identitas tersebar luaskan. Kesimpulan dari
penggunaan JSON Web Token (JWT) dan algoritma HMAC SHA-
256 untuk keamanan website adalah bahwa kombinasi ini
memberikan lapisan perlindungan yang kuat terhadap ancaman
keamanan yang umum terjadi di lingkungan online.
B. Penyelesaian Masalah
Autentikasi yang Aman : JWT dengan HMAC SHA-256
memungkinkan Anda untuk mengotentikasi pengguna dengan
cara yang aman. HMAC (Hash-based Message Authentication
Code) adalah algoritma yang kuat untuk menghasilkan tanda
tangan digital yang mengamankan data dalam JWT.
Manajemen Sesi yang Tidak Diperlukan : Dalam implementasi
tradisional, server perlu mengelola sesi pengguna. Dengan JWT,
sesi tidak perlu disimpan di server, sehingga mengurangi beban
server dan memudahkan skalabilitas.
Single Sign-On (SSO) : JWT dapat digunakan untuk
mengimplementasikan SSO, di mana pengguna dapat mengakses
beberapa aplikasi dengan satu kali masuk. JWT dapat berisi
klaim tentang identitas pengguna yang dapat digunakan oleh
berbagai layanan tanpa perlu masuk ulang.
Otorisasi yang Fleksibel : JWT dapat menyertakan klaim yang
mendefinisikan izin pengguna. Ini memungkinkan Anda untuk
mengontrol dengan cermat apa yang dapat diakses oleh
pengguna yang telah terotentikasi.
Pengiriman Data Terenkripsi : Anda dapat mengenkripsi data
dalam JWT untuk melindungi informasi sensitif. Dengan
algoritma HMAC SHA-256, Anda dapat yakin bahwa data
tersebut tidak telah diubah oleh pihak yang tidak sah.
Scalability : JWT memungkinkan pengguna untuk terus
mengakses sumber daya tanpa perlu berinteraksi dengan server
untuk validasi token setiap kali. Ini membantu meningkatkan
skalabilitas aplikasi Anda.
Tidak Bergantung pada Koneksi Sesi : Karena JWT tidak
bergantung pada sesi server, aplikasi yang menggunakan JWT
dapat dengan mudah diperluas dan berjalan di berbagai
lingkungan seperti mikroservis dan arsitektur berbasis cloud.
Integritas Data : HMAC SHA-256 memastikan integritas data
dalam JWT. Jika data dalam JWT diubah oleh pihak yang tidak
sah, tanda tangan HMAC SHA-256 akan gagal, dan token tidak
akan dianggap valid.
Mudah Dalam Penggunaan : JWT sangat mudah digunakan
dalam berbagai bahasa pemrograman dan framework. Ini
membuatnya menjadi pilihan yang populer untuk autentikasi
dalam berbagai jenis aplikasi.
Memungkinkan Pembuatan Token dengan Waktu Terbatas :
Anda dapat membuat token JWT dengan waktu terbatas (JWT
yang kadaluarsa), yang membantu melindungi keamanan
aplikasi dengan membatasi durasi penggunaan token.
B. Pembahasan Algoritma
HMAC (Hash-based Message Authentication Code) adalah
konstruksi kriptografis yang menggunakan algoritma hash bersama
dengan kunci rahasia untuk menghasilkan tanda tangan atau kode
otentikasi. SHA-256 adalah salah satu algoritma hash yang populer dan
menghasilkan nilai hash 256- bit. Dalam konteks JWT, algoritma
HMAC SHA-256 digunakan untuk membuat tanda tangan digital dari
token. Proses ini melibatkan penggabungan payload dengan kunci
rahasia, kemudian menghasilkan nilai hash menggunakan algoritma
SHA-256. Nilai hash ini adalah tanda tangan digital yang akan
dimasukkan ke dalam token JWT. Berikut merupakan fungsi dari
Algoritma HMAC SHA-256 dapat dilihat pada gambar.
Keterangan:
ROTR (Right Rotate)
SHR (Right Shift)
Selanjutnya token yang didapat dari JWT tersebut di encryption
dengan JSON Web Encryption (JWE) dengan menggunakan algoritma
HMAC SHA-256 dimana pesan yang diterima diberikan kunci
tambahan yang sama dengan hasilnya dapat dilihat pada gambar berikut.
B. Activity Diagram
Activity Diagram
a. Autentikasi
Pada class ini terjadi checking user,password dan
reqId untuk jenis perintah yang dijalankan untuk database.
b. ReqMaster
Pada class ini terjadi checking perintah apa yg di
berikan oleh JWT untuk merespon balikan data dari
database yang diperlukan.
c. Return
Pada class ini terjadi penampungan data dari
database untuk di teruskan kembali ke Aplikasi yang
meminta sesuai dengan kebutuhannya.
D. Sequence Diagram
Sequence Diagram
F. Deployment Diagram
Use Case Narrative
2. Kekurangan Penelitian
Manajemen Status Sesi Tidak Trivial
JWT adalah mekanisme otentikasi yang stateless, yang
berarti server tidak menyimpan status sesi pengguna. Ini dapat
membuat manajemen status sesi lebih rumit, terutama jika
diperlukan pembatalan atau penonaktifan token tertentu.
Keterbatasan Pada Penyimpanan Data
Ukuran maksimal data yang dapat disimpan dalam JWT
tergantung pada pembatasan ukuran maksimal untuk header dan
payload. Ini dapat menjadi keterbatasan jika informasi tambahan
yang besar perlu disimpan.
Tidak Dapat Dicabut (Non-Revocable)
Setelah token JWT diterbitkan, sulit untuk mencabut atau
mematikan token sebelum waktu kadaluwarsa tanpa menyimpan
status sesi di server. Ini berbeda dengan mekanisme otentikasi
tradisional yang dapat mencabut sesi kapan saja.
Potensi Kerusakan jika Kunci Terungkap
Keamanan JWT bergantung pada kerahasiaan kunci yang
digunakan untuk menandatangani token. Jika kunci bocor, hal ini
dapat membahayakan keamanan sistem secara keseluruhan.
Kurangnya Mekanisme Pembaruan (Refresh)
JWT tidak secara intrinsik mendukung mekanisme
pembaruan atau refresh token tanpa mengganti seluruh token. Ini
dapat menimbulkan kekhawatiran keamanan jika token lama tidak
dapat dengan cepat dinonaktifkan.
Waktu Kadaluwarsa Harus Diatur Saat Pembuatan Token
Waktu kadaluwarsa token harus diatur saat token dibuat. Ini
dapat menjadi kurang fleksibel jika kebutuhan waktu kadaluwarsa
bervariasi.