Dalam dunia pengembangan aplikasi modern, terutama yang melibatkan komunikasi antara client dan server, keamanan data menjadi hal yang sangat krusial. Data sensitif seperti token autentikasi, informasi pengguna, hingga data transaksi sering kali dikirim melalui jaringan publik seperti internet. Tanpa mekanisme perlindungan yang tepat, data tersebut berpotensi disadap atau dimanipulasi oleh pihak yang tidak berwenang.
Salah satu teknologi kriptografi yang banyak digunakan untuk mengamankan komunikasi adalah RSA Encryption. Artikel ini akan membahas secara mendalam mengenai apa itu RSA, bagaimana cara kerjanya, masalah keamanan apa yang coba diselesaikan oleh RSA, serta bagaimana mengimplementasikannya pada aplikasi PHP, khususnya menggunakan CodeIgniter 4.
Apa Itu RSA Encryption?
RSA adalah sebuah algoritma kriptografi yang digunakan untuk melakukan proses enkripsi dan dekripsi data. Nama RSA sendiri berasal dari tiga penemunya:
- Ron Rivest
- Adi Shamir
- Leonard Adleman
Algoritma ini pertama kali dipublikasikan pada tahun 1977 dan hingga saat ini masih menjadi salah satu algoritma kriptografi kunci publik yang paling banyak digunakan di dunia.
Referensi dari Wikipedia : https://en.wikipedia.org/wiki/RSA_cryptosystem
RSA termasuk dalam kategori asymmetric cryptography atau kriptografi kunci publik. Artinya, RSA menggunakan dua buah kunci berbeda:
- Public Key → digunakan untuk mengenkripsi data
- Private Key → digunakan untuk mendekripsi data
Kunci publik dapat dibagikan kepada siapa saja, sementara kunci privat harus dijaga kerahasiaannya oleh pemilik sistem.
Masalah Apa yang Ingin Diselesaikan oleh RSA?
Sebelum adanya kriptografi kunci publik, sistem enkripsi menggunakan metode symmetric encryption. Pada metode ini, proses enkripsi dan dekripsi menggunakan kunci yang sama.
Masalahnya muncul ketika dua pihak ingin berkomunikasi secara aman melalui internet. Bagaimana cara mereka bertukar kunci rahasia tanpa diketahui pihak ketiga?
RSA hadir untuk menyelesaikan masalah ini dengan pendekatan yang berbeda.
Dengan RSA:
- Pihak server membuat pasangan kunci (public dan private)
- Public key dapat dibagikan ke siapa saja
- Client mengenkripsi data menggunakan public key
- Hanya server yang bisa membuka data tersebut menggunakan private key
Dengan mekanisme ini, bahkan jika data yang dikirim melalui jaringan berhasil disadap, pihak ketiga tetap tidak dapat membaca isi data tersebut tanpa memiliki private key.
Bagaimana Cara Kerja RSA Secara Sederhana?
RSA bekerja berdasarkan konsep matematika yang cukup kompleks, terutama yang berkaitan dengan bilangan prima besar dan faktorisasi.
Secara sederhana prosesnya dapat dijelaskan sebagai berikut:
- Server menghasilkan dua bilangan prima besar.
- Kedua bilangan tersebut digunakan untuk membentuk pasangan kunci RSA.
- Kunci publik dibagikan kepada client.
- Client mengenkripsi data menggunakan kunci publik.
- Server mendekripsi data menggunakan kunci privat.
Keamanan RSA bergantung pada kesulitan memfaktorkan bilangan besar. Dengan ukuran kunci seperti 2048-bit, proses pemecahan kunci secara brute force akan membutuhkan waktu yang sangat lama bahkan dengan komputer modern.
Kegunaan RSA dalam Dunia Nyata
RSA digunakan di banyak sistem keamanan modern, di antaranya:
- HTTPS / SSL certificate
- Secure API communication
- Digital signature
- Key exchange pada protokol TLS
- Email encryption (PGP)
- Secure login system
Dalam konteks pengembangan aplikasi web atau mobile, RSA sering digunakan untuk:
- Melindungi data sensitif yang dikirim dari client ke server
- Mencegah sniffing pada jaringan publik
- Menjamin bahwa data hanya bisa dibaca oleh server
Keterbatasan RSA
Meskipun sangat kuat dari sisi keamanan, RSA memiliki beberapa keterbatasan:
- Proses enkripsi relatif lebih lambat dibandingkan algoritma simetris
- Tidak efisien untuk mengenkripsi data berukuran besar
- Ukuran data yang bisa dienkripsi terbatas
Sebagai contoh, dengan RSA 2048-bit, data yang bisa dienkripsi biasanya hanya sekitar 190 byte.
Karena itu, dalam sistem produksi sering digunakan pendekatan Hybrid Encryption, yaitu kombinasi antara RSA dan AES.
Implementasi RSA di PHP
Untuk menggunakan RSA di PHP, salah satu library yang cukup populer dan stabil adalah phpseclib.
Library ini menyediakan implementasi berbagai algoritma kriptografi termasuk RSA tanpa bergantung pada ekstensi OpenSSL.
Install Library
composer require phpseclib/phpseclib
Membuat RSA Key Pair
Langkah pertama adalah membuat pasangan kunci RSA.
<?php
use phpseclib3\Crypt\RSA;
$rsa = RSA::createKey(2048);
file_put_contents('private.pem', $rsa->toString('PKCS8'));
file_put_contents('public.pem', $rsa->getPublicKey()->toString('PKCS8'));
echo "Key generated";
Kode di atas akan menghasilkan dua file:
- private.pem
- public.pem
Implementasi RSA Wrapper di CodeIgniter 4
Agar lebih mudah digunakan di seluruh project, kita bisa membuat sebuah wrapper library.
<?php
namespace App\Libraries;
use phpseclib3\Crypt\RSA;
class RsaWrapper
{
protected $private;
protected $public;
public function __construct()
{
$privatePath = WRITEPATH . 'keys/private.pem';
$publicPath = WRITEPATH . 'keys/public.pem';
$this->private = RSA::loadPrivateKey(
file_get_contents($privatePath)
);
$this->public = RSA::loadPublicKey(
file_get_contents($publicPath)
);
}
public function encrypt(string $plaintext): string
{
return base64_encode(
$this->public->encrypt($plaintext)
);
}
public function decrypt(string $cipher): string
{
return $this->private->decrypt(
base64_decode($cipher)
);
}
}
Contoh Penggunaan di Controller
<?php
$rsa = new \App\Libraries\RsaWrapper();
$data = "Halo RSA";
$encrypted = $rsa->encrypt($data);
$decrypted = $rsa->decrypt($encrypted);
echo $encrypted;
echo $decrypted;
Output yang dihasilkan akan menunjukkan bahwa data yang dienkripsi dapat dikembalikan ke bentuk aslinya menggunakan private key.
Menguji RSA melalui API
Dalam implementasi nyata, biasanya client akan mengenkripsi data menggunakan public key sebelum mengirimkannya ke server.
Server kemudian akan melakukan proses dekripsi menggunakan private key.
Proses ini sering digunakan pada:
- API mobile
- Aplikasi web
- Sistem pembayaran
Best Practice Menggunakan RSA
Beberapa praktik terbaik dalam menggunakan RSA antara lain:
- Gunakan minimal RSA 2048-bit
- Simpan private key di server dengan aman
- Jangan pernah mengirim private key ke client
- Gunakan Base64 untuk transport data
- Gunakan RSA hanya untuk data kecil
Untuk data besar, sebaiknya gunakan kombinasi RSA dan AES agar performa tetap optimal.
Kesimpulan
RSA merupakan algoritma kriptografi yang sangat penting dalam sistem keamanan modern. Dengan menggunakan konsep kunci publik dan privat, RSA memungkinkan komunikasi yang aman bahkan melalui jaringan publik.
Dalam pengembangan aplikasi berbasis PHP atau CodeIgniter 4, implementasi RSA dapat dilakukan dengan relatif mudah menggunakan library seperti phpseclib.
Namun perlu diingat bahwa RSA bukanlah solusi tunggal untuk semua masalah keamanan. Pengembang tetap perlu memahami bagaimana RSA bekerja, kapan sebaiknya digunakan, serta bagaimana mengkombinasikannya dengan teknologi keamanan lainnya.
Dengan pemahaman yang baik, RSA dapat menjadi salah satu komponen penting dalam membangun aplikasi yang aman dan andal.
Mungkin cukup sekian untuk pembahasan kali ini, semoga artikel ini bisa bermanfaat, Terimakasih.


Posting Komentar