Episode ini membedah MPPE, satu-satunya enkripsi yang dimiliki PPTP: cipher RC4 dengan varian panjang kunci, proses penurunan kunci dari password MS-CHAPv2, mode stateless dan stateful, serta kelemahan seperti absennya integrity check dan forward secrecy.

Enkripsi adalah garis pertahanan terakhir PPTP, dan garis ini sangat tipis. Lapisan keamanan data pada PPTP bernama MPPE (Microsoft Point-to-Point Encryption), dan setiap detail di dalamnya menyimpan kelemahan yang membuat PPTP tidak layak untuk data sensitif.
Episode 6 membedah MPPE dari akar: cipher RC4 yang dipakainya, bagaimana kunci diturunkan dari password MS-CHAPv2, cara mengaktifkannya di pppd, dan kelemahan fundamental yang membuatnya tidak memberikan integritas maupun forward secrecy.
MPPE adalah protokol enkripsi yang didefinisikan di RFC 3078. Ia memakai RC4, stream cipher yang dirancang Ron Rivest di tahun 1987. MPPE tersedia dalam varian 40-bit, 56-bit, dan 128-bit, dengan RC4 128-bit sebagai standar yang direkomendasikan.
RC4 adalah stream cipher, artinya ia mengenkripsi data bit demi bit dengan aliran keystream. Konsekuensinya, setiap kesalahan pada header membuat data tidak bisa didekripsi dengan benar — salah satu alasan MPPE butuh sequence number.
Penting untuk membedakan peran keduanya: MS-CHAPv2 mengautentikasi pengguna, sedangkan MPPE mengenkripsi data. Keduanya bekerja berurutan — autentikasi terjadi lebih dulu di control channel, lalu MPPE menjaga data channel.
Menggabungkan keduanya dalam satu protokol bukan masalah, tapi desain PPTP menurunkannya dari bahan rahasia yang sama, yaitu password. Pada protokol modern, autentikasi dan pertukaran kunci enkripsi memakai mekanisme yang terpisah dan independen, sehingga kegagalan satu lapisan tidak langsung meruntuhkan lapisan yang lain.
Momen paling krusial dalam arsitektur MPPE adalah cara kunci dibuat. Kunci enkripsi MPPE diturunkan langsung dari password user melalui kunci sesi MS-CHAPv2 — bukan dari mekanisme pertukaran kunci yang independen.
Artinya, keamanan enkripsi PPTP sama kuatnya dengan password user. Tidak ada perfect forward secrecy: jika password bocor atau dipecahkan, seluruh sesi yang pernah memakai password tersebut bisa didekripsi secara retroaktif selama traffic-nya terekam.
Penurunan kunci dari password juga berarti panjang efektif kunci hanya sekuat password itu sendiri. Password yang pendek berarti kunci yang lemah, apa pun ukuran nominal 128-bit yang dipakai. Kombinasi ini membuat klaim keamanan MPPE 128-bit sangat menyesatkan.
Alurnya bisa diringkas seperti ini: saat autentikasi MS-CHAPv2 selesai, kedua sisi menghasilkan kunci sesi yang sama dari password dan challenge. Dari kunci sesi inilah MPPE menurunkan kunci RC4 untuk enkripsi data, dengan arah yang berbeda untuk upload dan download.
Karena kedua sisi menghitung kunci dari bahan yang sama, tidak ada pertukaran kunci publik di dalam MPPE. Ini kontras dengan protokol modern yang memakai Diffie-Hellman atau kurva eliptik. Tanpa bahan rahasia bersama yang kuat, seluruh hierarki kunci ikut runtuh — dan bahan itu justru adalah password yang bisa dipecahkan secara offline.
MPPE aktif dengan menambahkan direktif require-mppe-128 di file opsi PPP:
name pptpd
require-mschap-v2
require-mppe-128require-mppe-128 memaksa semua klien memakai enkripsi MPPE 128-bit. Kombinasi require-mschap-v2 dan require-mppe-128 adalah standar konfigurasi paling aman yang bisa dicapai PPTP — dan tetap saja tidak cukup aman untuk data sensitif.
MPPE punya dua mode operasi:
Kebanyakan implementasi modern memakai mode stateless karena lebih toleran terhadap jaringan yang tidak stabil.
RC4 memiliki sejumlah bias statistik yang dikenal sejak lama, dan serangan-serangan seperti Bar Mitzvah dan serangan bias RC4 lainnya semakin memperkuat kesimpulan bahwa RC4 sudah tidak bisa dianggap aman. Beberapa standar (misalnya TLS) secara resmi melarang RC4 karena alasan ini.
MPPE mewarisi seluruh kelemahan RC4 tersebut. Meskipun kunci 128-bit secara nominal besar, bias keystream RC4 mengurangi tingkat keamanan efektifnya.
MPPE tidak menyediakan message authentication code (MAC). Artinya, enkripsi MPPE tidak menjamin integritas data: penerima tidak bisa memverifikasi bahwa paket tidak diubah di tengah jalan. Cipher yang tidak diautentikasi sangat rentan terhadap serangan manipulasi.
Sequence number di header GRE memberikan perlindungan replay terbatas pada mode stateful, tapi pada mode stateless urutan tidak benar-benar dijaga. Kombinasi tidak adanya MAC dan perlindungan replay yang lemah membuat MPPE jauh dari standar enkripsi modern.
Kombinasi kelemahan di atas bukan masalah teoretis. Karena MPPE tidak diautentikasi, penyerang bisa mengubah bit data tanpa terdeteksi, dan karena RC4 memiliki bias statistik, analisis terhadap traffic dalam jumlah besar bisa membocorkan sebagian informasi. Untuk organisasi yang memproses data sensitif, ini bukan tingkat keamanan yang bisa diterima.
VPN modern seperti WireGuard memakai cipher yang diautentikasi seperti ChaCha20-Poly1305, yang sekaligus menjamin kerahasiaan dan integritas, plus pertukaran kunci yang memberikan forward secrecy. Seluruh properti itu tidak tersedia di MPPE.
Satu-satunya konteks di mana MPPE bisa diterima adalah laboratorium dan pengujian keamanan, atau environment legacy dengan traffic non-kritis dan monitoring ketat. Di luar itu, MPPE harus dihindari.
Sebelum menerima sebuah server PPTP, verifikasi bahwa MPPE benar-benar aktif di setiap sesi. Log pppd mencatat opsi yang dinegosiasikan; jika ada klien yang terhubung tanpa MPPE, itu adalah temuan keamanan yang harus segera ditindak.
sudo grep -i mppe /var/log/syslogGunakan grep -i mppe /var/log/syslog untuk melihat baris log yang mengonfirmasi MPPE berhasil dinegosiasikan, termasuk panjang kunci yang dipakai.
Episode 6 membongkar MPPE: stream cipher RC4, penurunan kunci dari password MS-CHAPv2, konfigurasi require-mppe-128, serta kelemahan berupa bias RC4, tidak adanya integrity check, dan tidak adanya forward secrecy.
Inti yang harus dibawa pulang:
require-mppe-128 adalah standar konfigurasi MPPE di pppd.Di episode 7 selanjutnya kita akan membahas routing dan IP forwarding — konfigurasi localip dan remoteip, mengaktifkan IP forwarding, NAT MASQUERADE, proxy ARP, serta konsep split tunneling di sisi client.