RSA: apa itu, algoritma dan penerapan enkripsi

Penulis: IT Sectr Diterbitkan: 2026-04-02 Waktu membaca: 9 mnt

RSA — kriptosistem kunci publik yang menyediakan enkripsi dan tanda tangan digital berdasarkan kompleksitas komputasi faktorisasi bilangan besar. Menurut NIST Special Publication 800-56B Rev. 2 (2023), RSA dengan panjang kunci 2048 bit tetap menjadi standar keamanan untuk sistem pemerintahan dan komersial. Algoritma ini banyak digunakan dalam protokol TLS, tanda tangan digital, dan enkripsi data dalam aplikasi mobile.

Poin utama

  • RSA — algoritma enkripsi asimetris yang menggunakan pasangan kunci: publik dan privat.
  • Keamanan algoritma didasarkan pada kesulitan matematis memfaktorkan bilangan besar menjadi faktor prima.
  • Ukuran kunci 2048 bit dianggap minimal terpercaya sejak 2023 menurut standar NIST.
  • RSA digunakan dalam sertifikat TLS, tanda tangan digital, dan protokol autentikasi.
  • Pengembangan mobile menggunakan RSA melalui pustaka kripto bawaan Android Keystore dan iOS Security Framework.

Apa itu RSA?

RSA — algoritma kriptografi kunci publik yang dikembangkan pada tahun 1977 oleh Ronald Rivest, Adi Shamir, dan Leonard Adleman. Nama ini dibentuk dari huruf pertama nama keluarga penulis. Algoritma ini menjadi sistem kripto asimetris pertama yang praktis diterapkan di mana kunci enkripsi dan dekripsi berbeda.

Sejarah penciptaan

Algoritma RSA dipublikasikan pada tahun 1977 di jurnal Scientific American dan didasarkan pada karya sebelumnya Whitfield Diffie dan Martin Hellman di bidang kriptografi kunci publik. Massachusetts Institute of Technology memperoleh paten untuk RSA pada tahun 1983, yang berlaku hingga tahun 2000. Menurut laporan RSA Laboratories (2023), algoritma ini tetap menjadi salah satu standar kriptografi paling luas di dunia — digunakan di miliaran perangkat setiap hari.

Prinsip asimetris

Tidak seperti sandi simetris di mana kunci yang sama digunakan untuk enkripsi dan dekripsi, RSA beroperasi dengan pasangan kunci yang terkait secara matematis. Kunci publik dapat dipublikasikan untuk semua orang tanpa risiko kompromi sistem. Kunci privat hanya diketahui oleh pemilik dan tidak pernah dikirim melalui jaringan. Menurut studi IBM Security X-Force Threat Intelligence Index (2024), enkripsi asimetris digunakan dalam 96% protokol transmisi data aman modern.

Dasar matematika

Keamanan RSA didasarkan pada masalah faktorisasi — memfaktorkan hasil kali dua bilangan prima besar. Jika bilangan prima p dan q dengan panjang masing-masing 1024 bit dipilih, maka hasil kali n akan menjadi 2048 bit. Menghitung p dan q hanya dengan mengetahui n menggunakan metode modern secara praktis tidak mungkin: menurut penilaian ahli CNRS (2024), memecahkan RSA-2048 memerlukan lebih dari 300 miliar tahun komputasi pada komputer klasik.

Bagaimana algoritma RSA bekerja

Mari kita tinjau siklus kerja lengkap RSA dari pembuatan kunci hingga enkripsi dan dekripsi pesan. Memahami tahapan ini diperlukan untuk implementasi algoritma yang benar dalam aplikasi mobile.

Pembuatan kunci

Proses dimulai dengan memilih dua bilangan prima besar p dan q. Modulus n = p x q dihitung, yang menentukan panjang kunci. Kemudian fungsi Euler phi(n) = (p-1)(q-1) dihitung. Eksponen publik e dipilih, yang relatif prima terhadap phi(n). Eksponen privat d dihitung sebagai invers multiplikatif e modulo phi(n). Menurut NIST SP 800-56B Rev. 2, panjang minimal n harus 2048 bit untuk memberikan perlindungan yang memadai.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Enkripsi dan dekripsi

Untuk mengenkripsi pesan m, pengirim mengubahnya menjadi bilangan bulat yang lebih kecil dari n dan menghitung ciphertext c = m^e mod n. Penerima menggunakan kunci privat d untuk mengembalikan pesan asli: m = c^d mod n. Penting untuk dicatat bahwa RSA tidak dirancang untuk enkripsi data dalam jumlah besar karena kinerjanya yang rendah — ukuran pesan maksimum sama dengan panjang kunci dikurangi byte layanan (sekitar 190 byte untuk RSA-2048 dengan OAEP).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

Tanda tangan digital pada RSA

RSA juga digunakan untuk membuat tanda tangan digital — mekanisme verifikasi keaslian dan integritas data. Pemilik menandatangani hash pesan dengan kunci privatnya, dan siapa pun dapat memverifikasi tanda tangan dengan kunci publik. Menurut laporan Sectigo Certificate Transparency (2025), lebih dari 85% sertifikat TLS di internet menggunakan RSA untuk tanda tangan digital, menjadikan algoritma ini sebagai fondasi kepercayaan komunikasi web.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Ukuran kunci dan tingkat keamanan

Panjang kunci secara langsung mempengaruhi kekuatan kriptografi RSA. Dengan meningkatnya daya komputasi, ukuran kunci minimum yang diizinkan secara teratur ditinjau oleh organisasi standardisasi internasional. Mari kita lihat rekomendasi saat ini dari NIST dan regulator lainnya.

Panjang kunciSetara simetrisStatus
1024 bit80 bitDilarang sejak 2023
2048 bit112 bitStandar minimal
3072 bit128 bitDirekomendasikan untuk sistem baru
4096 bit256 bitUntuk data rahasia

Dampak pada kinerja

Peningkatan panjang kunci RSA secara signifikan mempengaruhi waktu eksekusi operasi. Pembuatan kunci dengan panjang 4096 bit memakan waktu sekitar 10 kali lebih lama dari 2048 bit. Operasi enkripsi dan dekripsi dengan kunci panjang memerlukan lebih banyak sumber daya komputasi, yang kritis untuk perangkat mobile dengan konsumsi daya terbatas.

Ancaman kuantum

Dengan perkembangan komputasi kuantum, RSA dapat dipecahkan menggunakan algoritma Shor dalam waktu polinomial. Algoritma ini, yang diusulkan oleh Peter Shor pada tahun 1994, memungkinkan faktorisasi bilangan besar dalam waktu O((log n)^3) operasi. Menurut IBM Quantum Roadmap (2025), pemecahan praktis RSA-2048 diharapkan tidak lebih awal dari tahun 2035, namun NIST sudah merekomendasikan transisi bertahap ke algoritma pasca-kuantum CRYSTALS-Kyber dan CRYSTALS-Dilithium.

Penerapan RSA dalam pengembangan mobile

RSA secara aktif digunakan dalam aplikasi mobile untuk memastikan transmisi data yang aman, memverifikasi keaslian server, dan melindungi transaksi digital. Integrasi dilakukan melalui API kriptografi standar dari kedua platform utama.

Android Keystore

Platform Android menyediakan Android Keystore — penyimpanan sistem kunci kriptografi yang dilindungi pada tingkat perangkat keras oleh Trusted Execution Environment. Kunci RSA yang dihasilkan di KeyStore tidak dapat diekstraksi dari perangkat bahkan jika aplikasi dikompromikan. Ini memberikan perlindungan terhadap berbagai serangan, termasuk malware dengan akses root.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

Di iOS, untuk bekerja dengan RSA digunakan Security Framework dengan akses ke Secure Enclave pada perangkat dengan chip A7 dan yang lebih baru. Secure Enclave adalah koprosesor khusus yang terisolasi dari prosesor utama, yang melakukan operasi kriptografi dan menyimpan kunci dalam enclave perangkat keras. Kunci RSA dapat dihasilkan baik di dalam Secure Enclave maupun di Keychain perangkat lunak dengan berbagai tingkat akses.

Enkripsi hibrida dalam praktik

Dalam aplikasi mobile nyata, RSA jarang digunakan untuk enkripsi langsung data besar. Praktik standar adalah skema hibrida: aplikasi menghasilkan kunci sesi AES, mengenkripsinya dengan kunci publik RSA server, dan mengirimkannya ke server. Semua lalu lintas berikutnya dienkripsi dengan AES, yang 100–1000 kali lebih cepat daripada transmisi data langsung melalui RSA.

Kelebihan dan keterbatasan RSA

Seperti algoritma kriptografi lainnya, RSA memiliki kelebihan dan kekurangan yang perlu dipertimbangkan saat merancang sistem yang aman. Penilaian objektif membantu memilih alat yang tepat untuk tugas tertentu.

Kelebihan utama

Kelebihan utama RSA adalah solusi dari masalah fundamental distribusi kunci — kunci publik dapat dipublikasikan secara bebas tanpa risiko mengompromikan seluruh sistem. Universalitas algoritma terlihat dalam dukungan untuk enkripsi dan tanda tangan digital dengan pasangan kunci yang sama. Selain itu, RSA memiliki ekosistem dukungan yang luas: pustaka tersedia untuk semua bahasa dan platform.

Keterbatasan utama

Kekurangan utama RSA adalah kinerja rendah dibandingkan dengan algoritma simetris. Dekripsi RSA-2048 pada prosesor mobile modern memakan waktu sekitar 5–15 milidetik, sementara AES-256 memproses gigabyte data dalam waktu yang sama. Juga, RSA rentan terhadap serangan kuantum melalui algoritma Shor, yang membatasi penerapannya dalam sistem dengan perlindungan data jangka panjang.

Rekomendasi penggunaan

Untuk proyek mobile, para ahli NIST merekomendasikan: gunakan RSA hanya untuk enkripsi kunci dan tanda tangan digital, pilih panjang kunci setidaknya 3072 bit untuk proyek baru, kombinasikan RSA dengan AES dalam skema hibrida, dan pantau perkembangan standar pasca-kuantum untuk migrasi terencana dalam jangka panjang.

Pertanyaan yang sering diajukan

Apa perbedaan antara RSA dan AES?

RSA — algoritma asimetris dengan pasangan kunci, digunakan untuk enkripsi data dalam jumlah kecil dan tanda tangan digital. AES — algoritma simetris dengan satu kunci bersama, bekerja 100–1000 kali lebih cepat dari RSA. Dalam sistem modern, keduanya dikombinasikan: RSA melindungi transmisi kunci sesi AES, dan AES mengenkripsi lalu lintas utama.

Ukuran kunci RSA apa yang dianggap aman saat ini?

Ukuran aman minimum sejak 2023 menurut NIST SP 800-131A Rev. 2 adalah RSA-2048. Kunci 1024 bit secara resmi dilarang untuk sistem pemerintahan AS. Untuk proyek baru, direkomendasikan 3072 bit, yang memberikan margin keamanan dan ketahanan setara dengan enkripsi simetris 128-bit.

Bisakah RSA digunakan dalam aplikasi mobile?

Ya, RSA banyak digunakan dalam aplikasi mobile. Android menyediakan Android KeyStore untuk pembuatan perangkat keras dan penyimpanan aman kunci RSA. iOS — Security Framework dengan dukungan Secure Enclave. Untuk enkripsi data besar, skema hibrida RSA + AES direkomendasikan, di mana RSA hanya mengenkripsi kunci sesi.

Bisakah RSA-2048 dipecahkan?

Pada komputer klasik, memecahkan RSA-2048 secara praktis tidak mungkin — menurut perkiraan saat ini, diperlukan lebih dari 300 miliar tahun komputasi terus-menerus. Namun, komputer kuantum dengan jumlah qubit yang cukup dapat memecahkan RSA-2048 dalam beberapa menit menggunakan algoritma Shor. Menurut perkiraan IBM, komputer semacam itu tidak akan muncul sebelum tahun 2035.

Apa alternatif RSA yang ada?

Di antara algoritma asimetris, ECC (Elliptic Curve Cryptography) populer, memberikan keamanan setara dengan panjang kunci yang lebih kecil — ECC 256-bit setara dengan RSA-3072. Untuk era pasca-kuantum, NIST memilih CRYSTALS-Kyber untuk enkripsi dan CRYSTALS-Dilithium untuk tanda tangan digital pada tahun 2024.

Kesimpulan

  • RSA — algoritma enkripsi asimetris berdasarkan kesulitan faktorisasi bilangan besar.
  • Pasangan kunci — publik untuk enkripsi dan privat untuk dekripsi, memecahkan masalah distribusi kunci.
  • Ukuran 2048 bit adalah standar keamanan minimum sejak 2023.
  • Kinerja RSA 2–3 orde lebih rendah dari sandi simetris, oleh karena itu digunakan dalam skema hibrida.
  • Tanda tangan digital pada RSA digunakan di 85% sertifikat TLS internet.
  • Platform mobile Android dan iOS menyediakan API bawaan untuk bekerja dengan RSA.
  • Migrasi pasca-kuantum — hingga 2035 RSA akan tetap menjadi standar utama, kemudian transisi ke algoritma baru akan dimulai.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga