Pembahasan Mengenai Ilmu Kriptografi Serta Cara Memecahkan Kata Sandi

Hallo guys, gimana nih kabarnya? Gue harap kabar kalian baik-baik aja ya? Basa-basi banget ya gue hehe. Langsung aja deh ya. Jadi gini guys kemarin gue baru aja kelar nulis konten dengan topik Energi Ramah Lingkungan. Nah, kali ini gue mau share ilmu pengetahuan yang nggak kalah pentingnya dengan topik gue yang kemarin. Wah, apaan sih yang mau gue bahas kali ini. So, gue mau bahas hal yang mungkin agak sedikit asing ditelingah lo yaitu, sejarah kriptografi atau yang biasa disebut dengan kode rahasia.

So, buat lo semua yang suka dengan tema detektif, agen rahasia, hacking, main sandi rahasia yang cuma diketahui temen se-genk, atau lo yang doyan kode-kodean sama gebetan, yuk gabung sini mari kita simak ceritanya.

But, sebelum kita masuk ke topik utama, gua mau nanya dulu nih. Lo pernah nggak sih nonton film The Imitation Game. Gue yakin sebagian lo pasti udah nonton filmnya, iyakan? Kabar baiknya film yang di adaptasi dari sejarah perang dunia II tersebut baru aja dapat 7 nominasi dan 1 piala oscar, wow nggak? Buat lo yang belom nonton, film ini mengisahkan sepenggal kehidupan Alan Turing, tau dong Alan Turing siapa. Yap, bener sekali alan adalah ahli sejarah sekaligus bapak dari computer science dan artificial intelligence alias A.I. Nah, berbicara soal kecerdasan buatan, artikel gue satu ini juga ada kaitannya dengan kemajuan teknologi yang bisa dibilang hampir tak terbendung lagi. Contoh, dimasa depan, bukan tak mungkin robot menguasai kehidupan manusia.

Balik kebapak komputer. So, Alan Turing adalah seorang jenius yang berjasa besar terhadap peradaban kita seakrang. Tanpa adanya campur tangan beliau mungkin kita tak akan dapat menikmati komputer modern yang telah terbentuk seperti sekarang ini. Keren banget kan, tokoh yang satu ini. Buat lo yang penasaran gimana filmnya, berikut trailernnya:

Hal yang sangat amat menarik dari film ini adalah ketik Alan ditugaskan oleh pemerintahan Inggris untuk  menemukan cara agar dapat memecahkan kode dari mesin Enigma yang dipakai Nazi Jerman untuk mengirim pesan militer rahasia. Dengan memecahkan kode dari mesin Enigma, Alan Turing dan kolega dapat mengetahui setiap pergerakan militer Jerman secara diam-diam sehingga dapat membatu secara signifikan strategi militer sekutu untuk memenangkan Perang Dunia II.

Okay, sebelum kita bahasa detail tentang Enigma, gue mau ceritain dulu tentang kode dalam perang dan memperkenalkan ke lo tentang kode-kode lain yang sangat mendasar. Gimana lo da siap? Yuk, scroll terus kebawah.

Sebetulnya Kode Itu Apasih?

Kode mengkode itu sebenarnya udah sejak ribuan tahun yang lalu. Nah, ngomongin kode-kodean sebetulnya nggak cuma marak digunakan abege jaman now yang sering dipakai buat ngegombal, nyebarin gosip atau sekedar lucu-lucuan. Eh, tapi maksud gue disini itu kode beneran yah, bukan posting status galau buat nyindir gebetan, terus dikasih tuh hastag kode, nggak yah? Kode yang gue maksud disini adalah saat kita mengirim sebuah pesan yang konteksnya rahasia, yang nggak boleh ketahuan oleh pihak lain selain penerima pesan yang kita tuju. Terus, gimana caranya tuh kita bisa ngirim pesan yang nggak bisa diketahui oleh orang lain kecuali si penerima?

Simplenya ya, sama aja ketika lo ngirim pesan kertan ke sohib-sohib lo di kelas yang dioper-oper antar temen yang lain. Anak jaman now masih suka iseng kayak gini nggak yah? Jaman gue dulu sekarang jujur sering banget sih. Nah, untuk mencegah ada temen yang iseng buka isi pesen kertas itu atau ketahuan sama guru terus dibuka dan dibacakan di depan kelas, gak jarang ada siswa kreatif yang nulis pesen itu berupa kode yang memiliki sandi tertentu. Misalnya, setiap huruf diubah menjadi simbol tertentu yang udah disepakati bersama, atau misalnya lo sama sohib lo udah bikin rumus tersendiri untuk cara membaca kode tersebut. Jadi, kalau misalnya lo lagi apes terus pesan kertas lo ketahuan sama guru, doi juga gak bakalan ngerti isi pesen lo itu apaan.

Nah, mungkin buat lo yang suka bikin kode dan sandi buat kirim pesen ke sobat-sobat lo itu cuma sekedar iseng doang, tapi kurang-lebih sebetulnya memang itulah yang sering digunakan para agen intelijen dan mata-mata untuk mengirim pesan militer dan informasi rahasia lainnya. Cuma, kode yang mereka gunakan jauh lebih rumit aja.

Di era modern, informasi rahasia yang berhubungan sama politik dan pertahanan, selalu menjadi faktor penting dalam menyelesaikan konflik militer dan nggak jarang juga informasi rahasia itu bisa jadi kunci kemenangan. Pengiriman informasi rahasia dalam peperangan mulai dilakukan intensif di era perang dunia pertama yang kemudian berkembang jadi sandi teleprinter tahun 1917. Dalam kondisi penuh konflik tersebut, baru deh manusia berpikir keras secara kreatif untuk mengembangkan banyak hal, terutama juga metode untuk membuat kode dan sandi yang sangat sulit untuk dipecahkan. Sampai akhirnya di antara perang dunia pertama dan kedua, metode statistik mulai dipake dalam kriptanalisis dan pengembangan sandi, yang akhirnya menghasilkan Enigma pada tahun 1932.

Gimana, penasaran nggak gimana sih struktur kode yang digunakan para agen rahasia pemerintah untuk ngirim pesan rahasia? Nah, sebelum masuk ke bagian militer, gue akan memperkenalkan lo dulu teknik-teknik bikin kode dasar dan simpel banget yang langsung bisa lo bikin sekarang juga buat berkirim pesan rahasia ke teman-teman lo.

Teknik-Teknik Sederhana Kriptografi

Seperti yang gue katakan diatas ilmu yang melekat dengan kode-kodean itu biasa disebut dengan Kriptografi. Nah, kalau lo kuliah jurusan ilmu komputer, lo bakal pelajarin ini sebagai mata kuliah wajib lho. Kriptografi yang dalam bahasa Yunani adalah Kriptos atau rahasia dan graphein adalah tulisan yang mempelajarin serta praktek dan cara-cara yang memungkinkan komunikasi secara aman, alias rahasia. Dalam konteks ini ada tiga komponen yang menjadi bagian utama yaitu :

  1. pesan rahasia (plaintext)
  2. kunci (key) dan
  3. sandi (ciphertext)

Di dalam dunia persandian jaman old, ada dua cara untuk memecahakan sandi, yaitu substitusi dan transposisi. Pada tulisan ini, gue akan bahas sandi substitusi aja ya. Sandi substitusi mengubah satu huruf atau karakter di pesan plaintext, menurut aturan kunci key, menjadi karakter lain di sandi rahasi ciphertext.

  • Sandi Caesar

Contoh paling simpelnya sandi substitusi adalah sandi Caesar. Sandi Caesar adalah sandi substitusi yang menggunakan kunci yang panjangnya 1 karakter doang karakter diambil dari alfabet. Biasanya, para pihak yang terlibat udah sepakat dan sama-sama tau kalau mereka bakal pake Sandi Caesar dengan kunci karakter tertentu untuk bertukar pesan rahasia.

Pengirim pesan: punya pesan asli, tau kunci, tau pake Sandi Caesar. Dia gunain untuk menghasilkan sandi rahasia.
Penerima pesan: tau kunci, tau pake Sandi Caesar, tau sandi rahasia. Dia gunain buat memecahkan sandi rahasia untuk mendapatkan pesan asli.

Alfabet yang dipakai untuk merangkai pesan atau plaintext diberi indeks nomor seperti gambar di atas. Karakter yang dipake sebagai kunci juga diambil dari alfabet. Kunci ini umumnya bakal ditambahin atau buat menggeser karakter pesan asli untuk membentuk sandi. Kalau ketika ditambahkan atau digeser menghasilkan indeks lebih dari 25, urutan indeks bakal balik lagi ke 0. Dari Z mentok, balik lagi ke A. Penasarankan? Noh gue kasih contoh deh…

Misalnya, kita mau tulis ZENIUS dengan kunci B. Huruf Z-E-N-I-U-S dalam urutan alfabetik adalah 25-4-13-8-20-18. Kunci “B”, nilai indeksnya 1. Dengan menambahkan kunci B (1) ke pesan kita, sandi yang terbentuk jadinya ditambahin aja +1 atau geser ke kanan 1x semuanya, jadi seperti ini: 26-5-14-9-21-19.

Lalu yang lebih dari 25, kita ulang ke 0. Berhubung yang yang lebih dari 25 cuma satu karakter, jadinya yang diubah karakter pertama itu doang. Jadinya seperti ini: 0-5-14-9-21-19. Nah, dari indeks alfabet ini, kita ubah lagi ke dalam bentuk abjad, jadi sandi yang kita dapet adalah AFOJVT.

Jadi, waktu gue kirim sandi rahasia bentuknya adalah AFOJVT menggunakan kunci yang gua gunakan adalah B (1), kemudian oleh si penerima pesan, tinggal dikurangin indeksnya sama dia atau digeser ke kiri 1x, sandi tersebut didekripsi dan dibaca menjadi ZENIUS.

Ngerti kan caranya? Ini masih tergolong sandi yang simpel banget.

Nah, kalau udah ngerti, coba pecahkan sandi rahasia yang gue kasih ya. Sandi rahasianya, ORUBKEUA. Pake kunci, G. Tulis jawabannya ya..

  • Sandi Atbash

Sandi klasik lain contohnya adalah sandi Atbash. Sandi Atbash ini menukar urutan huruf yang dari depan ke belakang jadi belakang ke depan seperti di bawah ini:

Pesan: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Sandi: ZYXWVUTSRQPONMLKJIHGFEDCBA

Dengan menggunakan sandi Atbash, pesan ZENIUS akan menjadi sandi AVMRFH. Si penerima pesan, tinggal tukar balik aja tuh urutan hurufnya. Nama Atbash ini sendiri berasal dari penggunaan pertamanya dalam huruf Yahudi, yaitu Aleph-Tav-Beth-Shin, huruf pertama, terakhir, kedua, dan kedua sebelum terakhir dalam bahasa Yahudi. Kalau dalam huruf latin namanya kurang lebih akan jadi Azby. Jadi nama dari sandi ini sendiri, menggambarkan mekanismenya, lucu yah?

  • Sandi Polialfabet

Sandi substitusi ada juga yang kuncinya lebih dari 1 karakter, biasa disebut sebagai sandi polialfabet. Yang paling umum adalah sandi Vigenere. Tekniknya sama aja kayak Sandi Caesar, bedanya, kuncinya aja lebih dari 1 karakter. Berarti kita masih bisa memanfaatkan indeks urutan alfabet yang kita gunakan untuk Sandi Caesar sebelumnya.

Langsung ke contoh penggunaannya. Kita mau tulis pesan ZENIUS dengan kunci 3 huruf UAN. Caranya sama aja kayak Sandi Caesar, tinggal lo tambahin aja indeks nomornya. Berhubung kuncinya (UAN) terdiri dari 3 karakter, sedangkan pesannya (ZENIUS) terdiri dari 6 karakter, kita bisa ngulangin kuncinya sehingga panjang karaktern kunci = panjang karakter pesan –> UANUAN. Ini berlaku untuk semua case, di mana panjang karakter kunci tidak sama dengan panjang karakter pesan. Tinggal lo ulangi aja karakter kunci.

Misal, pesan = IVANWASKITA (11 karakter), kunci = UNYU (4 karakter). Tinggal lo ulang aja karakter kuncinya jadi 11 karakter –> UNYUUNYUUNY.

Jadi, kalau gua kirim sandi polialfabet TEACUF dengan formula kunci UANUAN, maka sang penerima bisa membaca pesan tersebut sebagai ZENIUS. Segini doang sih, masih gampang dimengerti lah, ya?

Oke, last challenge nih, ya. Menggunakan Sandi Vigenere, coba pecahkan sandi rahasia ini: Riyigssonv msmhrzu dengan kunci zenius. Selamat utak-atik ya hehe…

  • Sandi Berlapis

Untuk memperkuat sandi, pesan rahasia militer melakukan sandi beruntun, misalnya setelah kita lakukan Atbash ke kata ZENIUS menjadi AVMRFH, kita sandikan lagi dengan sandi polialfabet 3 huruf UAN menjadi UVZLFU. Nah lho, sandinya emang sama-sama ngga bisa dibaca, tapi buat orang yang gak tau kuncinya, akan jauh lebih susah untuk dapetin pesan asilnya.

Enigma sendiri juga make sandi beruntun polialfabet seperti ini nih, tapi bukan cuma 2, 3, atau 4 lapis, tapi 9 lapis. Gila ya? Makanya Enigma ini konon adalah mesin enkripsi yang tidak mungkin bisa dipecahkan, saking rumitnya kunci yang digunakan. Selain itu, kunci yang digunakan oleh mesin ini juga berganti-ganti terus dalam 24 jam. Kebayang gak tuh gimana caranya kalo pesan rahasia 9 lapis ini dicoba untuk dipecahkan secara manual oleh otak manusia?

Nah, dengan kejeniusan seorang Alan Turing, dia akhirnya membuat sebuah mesin yang bisa mengkomputasi setiap kode menjadi pesan dengan delay waktu hanya beberapa menit, gokil gak tuh? Keren-nya lagi, mesin yang dia buat ini akhirnya menjadi pelopor dari alat yang kita kenal sekarang sebagai komputer.

Okay, sekarang gua ajak lo semua buat sejenak menjadi seorang Alan Turing, kita sama-sama oprek kerumitan dari mesin ENIGMA!

The Enigma

Enigma adalah mesin mekanikal dan elektrikal yang mengubah pesan menjadi sandi. Gambarannya seperti di bawah:


Kalau kita mau bikin sandi, yang kita perlu lakukan cuma ketik aja pesan kita huruf per huruf, terus catet lampu yang menunjukan karakter sandi mana yang nyala di lampboard. Terus kalau kita mau translate kode balik ke pesan rahasia kita, tinggal masukin kodenya terus catet lagi lampu-berhuruf mana yang nyala. Gampang kan? Cara pakenya memang gampang, tapi bikin kodenya ternyata nggak sesimpel itu.

Inilah gambaran sederhana ketika Enigma membuat kode berlapis. Pertama-tama ketika kita mengetik suatu pesan melalui keyword, informasi tersbut bakal masuk ke yang namanya plugboard (1). Abis keluar dari plugboard, dia bakal masuk ke rotor kanan (2), lalu ke rotor tengah (3), rotor kiri (4), reflector (5), balik masuk ke rotor kiri (6), tengah (7), kanan (8), lalu masuk lagi ke plugboard (9). Setelah keluar dari plugboard, baru deh sinyal listriknya masuk ke papan lampu, nyalain huruf mana yang akan jadi kodenya. Di masing-masing step itu, huruf yang kita masukin bakal diubah jadi huruf lain, jadi Enigma itu sandi 9 tingkat!

Yuk kita bahas gimana ketiga part ini – rotor, plugboard, reflector – masing-masing mengubah sinyal huruf kita.

  • Plugboard

Plugboard di Enigma ini terdiri dari satu papan listrik yang isinya huruf sama colokan di masing-masing huruf. Nempel di situ ada 10 pasang huruf yang dihubungin sama kabel yang dicolokin ke sana. Gunanya plugboard ini adalah generate sandi level satu, mengubah huruf karakter yang di-input melalui keyboard jadi huruf lain or not. Contohnya:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
E H S R A G F B Z J K L M N O R V P C X Y W V T U I

Dalam contoh di atas, kita hubungin A sama E, B sama H, C sama S dan seterusnya. Di kode Enigma standar Jerman, bakal ada 6 huruf yang ngga berpasangan, dalam contoh kita tadi, J sampai O. Kalau kita ketik ZENIUS, yang keluar dari plugboard ini adalah IANZYC. Karena hubungan kabel ini berpasangan dan ga berubah, kalau kita masukin IANZYC ke dalem plugboard yang keluar kembali menjadi ZENIUS. Ngerti kan? Nah, itu baru lapis satu doang looh..

  • Rotor dan reflektor

Ada tiga rotor yang dipakai di Enigma, masing-masing di posisi kanan, tengah dan kiri. Masing-masing rotor ini mengambil input huruf dari proses sebelumnya berarti rotor kanan pertama mengambil input dari plugboard lalu mengubahnya jadi huruf lain dengan proses Caesar. Di ujung tiga rotor ini bakal ada reflector yang juga akan ngubah huruf yang dia dapet jadi huruf lain juga. Di bawah adalah kode rotor dan reflektor Enigma yang digunakan pasukan Jerman:

Nah, tabel di atas inilah kurang lebih penggambaran sistem acak kode berlapis. Kebayang kan lo gimana caranya para cryptanalyst ahli pemecah kode dibuat keblinger karena ada 1,59 x 10^14 banyak kemungkinan yang harus mereka pecahkan untuk setiap karakter huruf pesan rahasia yang dikirimkan?

Kalau lo perhatiin contoh gambar yang gue kasih di atas, tipe rotor itu semua ada 8, tapi di gambar itu yang dipake cuma 3. Maksudnya apa? Maksudnya jika rotor yang dipake untuk pengiriman sandi itu diganti atau ditukar tempatnya, seluruh mekanisme pengacakan sandinya jadi beda. Sehingga penerima pesan harus tau rotor mana aja dan posisinya masing-masing yang dipake sama pengirim pesan. Terus, gimana caranya dong pasukan Jerman tau kode satu sama lain? Ternyata, mereka terbitin edaran kaya gini nih setiap bulan:

Dari tanggal 1 sampai 31, edaran ini ngasih tau semua operator Enigma rotor mana aja yang dipake dan posisinya kiri tengah kanan. Jadi Setiap kali mau nulis atau baca pesan, semua Enigma harus disetting seperti ini, supaya pesan yang dikirim dan diterima sama.

Inilah kehebatan Jerman dalam memakai Enigma. Pertama, Enigmanya sendiri udah susah banget buat dibaca setiap harinya. Kuncinya, yang dicetak dalam edaran kaya di atas, di refresh tiap sebulan sekali. Jadi kalau seandainya mesin Enigma dan edaran itu direbut sama pihak sekutu, ya cuma bisa jalan buat sebulan, karena awal bulan depan udah diganti lagi tuh kode. Ada lagi system Kenngruppen di edaran itu, yang dibuat untuk mengecoh pasukan sekutu dengan membuat pesan asal-asalan yang banyak untuk menipu sang pemecah kode. Sekutu memang kelabakan banget nih ngadepin kode Jerman yang susah banget dipecahin. Mereka harus bisa mecahin kode ini pagi-pagi setiap hari karena besoknya lagi kunci kodenya udah berubah sesuai dengan perubahan jenis rotor, posisi rotor, dan pasangan-pasangan plugboard yang dipake.

Terus gimana caranya Alan Turing memecahkan kode Mesin Enigma?

Sebelum cara pemecahan kode ini diselesaikan oleh Turing dan kolega, seorang matematikawan Polandia bernama Marian Rejewski adalah orang pertama yang menemukan struktur detail mesin Enigma yang digunakan angkatan bersenjata Jerman. Jerih payahnya terbayarkan ketika dia berhasil menciptakan mesin Bomba yang berhasil memecahkan kode Enigma. Tapi karena Polandia keburu diserang Jerman duluan tahun 1939, para intelegen Polandia sempat kocar-kacir sebelum akhirnya berhasil melarikan salah satu mesin Enigma dan mesin Bomba ke Inggris. Sejak saat itulah, para matematikawan jago dan ahli-ahli statistik paling jago di Eropa seperti, Gordon Welchman, Max Newman, dan Alan Turing berkumpul di Bletchley Park dan meneruskan upaya pemecahkan kode Enigma.

Pada awalnya, mereka mencoba untuk memecahkan kode enigma dengan cara manual, namun ternyata cara itu sangatlah sulit karena mekanisme sandi berlapis ditambah para pengirim pesan selalu merubah kombinasi rotor setiap harinya. Sampai akhirnya Turing dan kolega mencoba meneruskan inspirasi mesin Bombe yang mampu memecahkan sandi mesin Enigma dengan waktu yang lebih cepat daripada waktu manual, tapi tetap dibutuhkan waktu lebih dari 18 jam untuk bisa menyelesaikan seluruh pesan sandi.

Sampai akhirnya Turing menemukan celah pada mesin Enigma. Cara kerja mesin Engima dengan 9 level kode dan rotor yang bergerak dengan mekanisme roda yang berputar, sehingga tidak memungkinkan satu huruf keluar sebagai huruf itu sendiri. Jadi, kalau kita masukin huruf A ke Enigma, huruf A nggak bakal nyala. Hal ini memungkinkan mesin pemecah kode untuk mencari lokasi kata-kata umum di sandi. Begitu lokasi kata-kata itu sudah ketemu di sandi, kemungkinan kombinasi rotor dan posisi rotor langsung turun drastis, jadi nggak semua kemungkinan yang sampe 10 pangkat 14 itu perlu dicoba sama para pemecah kode.

Akhirnya, mesin Bombe dapat digunakan dengan sangat efisien sehingga memungkinkan Sekutu untuk memecahkan kode Enigma setiap paginya dalam waktu 20 menit aja. Tentu saja, pemecahan informasi ini tidak secara gamblang diberitakan, bahkan tidak diberitahukan secara penuh pada pihak militer Inggris dan sekutu. Kenapa begitu? Alan Turing sengaja hanya membocorkan rencana-rencana tertentu yang dianggap krusial supaya pihak Jerman tidak curiga bahwa mesin Enigma yang mereka miliki sudah berhasil dibongkar oleh pihak sekutu.

Bisa lo bayangkan sendiri gimana rasanya Alan Turing dan kolega harus menghadapi tantangan berikutnya baik moral maupun teknis untuk memilah informasi yang mereka berikan pada pihak militer Sekutu, dan mana yang sengaja tidak diberitahukan, agar tidak menimbulkan kecurigaan.

Mungkin sampai di sini lo semua berpikir bahwa Alan Turing adalah seorang jenius luar biasa yang telah mengubah sejarah baik dalam teknologi informasi maupun tatanan struktur politik dunia, hanya dengan menjadi seorang ahli matematika tuh kan siapa bilang ahli matematika tidak bisa mengubah dunia? Akan tetapi jangan lo sangka Alan Turing diperlakukan sebagai seorang pahlawan perang, kehidupan pribadinya bisa dibilang sangat tragis.

Setelah Perang Dunia II, dia ditangkap dan dihukum karena pengakuannya sebagai seorang homoseksual. Konsekuensinya dia dikeluarkan dari kerjaannya sebagai Konsultan Kriptografi di Departemen Komunikasi Inggris waktu itu, dan diwajibkan meminum obat yang membuat hormon dalam tubuhnya tidak stabil sampai menyebabkan dia impoten dan tumbuh payudara seperti perempuan.

Tiga tahun setelah dia dihukum, akhirnya Turing memutuskan untuk bunuh diri di umur 41 dengan memakan apel yang mengandung sianida. Akhirnya, setelah lebih dari 50 tahun, pada tahun 2014 pemerintah Inggris secara resmi menyatakan permintaan maaf atas perlakuan mereka terhadap Alan Turing. Tanpa kontribusi Turing, gue mungkin ngga bisa tulis dokumen seperti ini buat dijadiin blog dan kemajuan kita dalam penggunaan komputer mungkin tidak akan maju sepesat sekarang, yagak? So, semoga ini dapat bermanfaat dan menambah wawasan kita semua yaa. Seeyounextarticle. broooo!