Kriptografi Dasar

af.maghribi
Network Evolution
Published in
6 min readJan 19, 2021

Kriptografi, seni macam apa itu?

Kriptografi atau kriptologi berasal dari bahasa Yunani κρυπτός kryptós, “tersembunyi, rahasia”; dan γράφειν graphein, “menulis”, atau -λογία logi, “ilmu”. Makna kriptografi secara harfiah ialah “seni” menulis secara tersembunyi untuk menyampaikan pesan-pesan yang perlu dijaga kerahasiaannya. Di Indonesia, ilmu kriptografi atau bisa juga disebut kriptologi disebut juga dengan sandisastra. Tujuan dari ilmu kriptografi adalah melakukan berbagai upaya komunikasi antar individu atau kelompok secara aman tanpa kehadiran pihak-pihak yang tidak diinginkan. Pun salah satu tujuannya yang lain ialah menganalisis komunikasi yang sulit dipahami. Jika kalian sudah pernah menonton film “The Imitation Game”, film itu membahas tentang cara Inggris memecahkan kriptografi enigma yang dibuat oleh jerman pada perang dunia kedua.

Untuk apa sih ilmu kriptografi itu?

Dalam dunia “Information Security”, Kriptografi sangat diperlukan sebagai pelindung terakhir dari sebuah data yang sensitif/rahasia. Alasannya karena, jika pada suatu sistem web, seorang hacker berhasil masuk ke sistem dan mendapatkan data-data rahasia didalamnya. Dengan menggunakan suatu algoritma kriptografi tertentu, sebelumnya data-data ini sudah di enkripsi. Sehingga hacker tersebut memang mendapatkan data-data rahasia tetapi dalam kondisi terenkripsi dan tidak mempunyai makna. Jika algoritma kriptografi yang kita pakai sangat bagus dan tepat dalam penerapannya, maka hacker sangat sulit untuk mendapatkan data-data rahasia yang asli.

Apa aja sih jenis-jenis nya ?

Dalam kriptografi, biasanya kita menyebut data/pesan yang masih asli sebagai plaintext dan data yang sudah di enkripsi sebagai ciphertext. Selain itu juga ada istilah lain seperto: Encoding, Hash, dan Enkripsi. Bedanya apasih?

Mohon disimak baik-baik ya, biar ngga bikin bingung orang kalo diajak diskusi :)

Encoding

Encoding merupakan transformasi/perubahan karakter-karakter kedalam suatu format yang sudah distandarisi untuk memudahkan transmisi data dan efisiensi penyimpanan. Format encoding yang sangat sering dipakai pada komputer adalah ASCII (American Standard Code for Information Interchange). Dalam ASCII ini terdapat karakter lowercase, uppercase, alphabet, numeric, symbol, dll. Dimana setiap karakter ASCII ini memiliki sebuah value yang dapat direpresentasikan dengan format Decimal, Hexadecimal, Octal, dan Binary. Dalam memasuki dunia kriptografi kita juga harus paham bagaimana cara konversi diantara format data tersebut. Terdapat juga beberapa jenis encoding yang terkenal yaitu Base32, Base64, Unicode, UUencode, Morsecode. Cara atau tools decodernya tinggal searching saja di google,banyak bertebaran. Biasanya encoding ini digunakan untuk membuat ciphertext menjadi printable (tercetak) karena biasanya hasil dari sebuah enkripsi unprintable (tidak tercetak) yaitu sebuah nilai yang tidak ada pada tabel ASCII. http://www.asciitable.com/

https://gchq.github.io/CyberChef/

Hash

Hash function atau Hashing digunakan untuk memetakan data arbitari ke data yang fixed. Hasil hash function biasa disebut hash value, digest dan hash codes. Hashing biasa digunakan dengan Hash Table, yaitu salah satu struktur data pada Computer Science untuk pencarian data yang cepat. Dalam dunia kriptografi ada yang namanya Cryptographic Hash Function, dimana disini pemetaan data menjadi sebuah string digest yang menggunakan algoritma yang dirancang dengan one-way function, yaitu fungsi yang infeasible untuk dikembalikan. Satu-satunya cara untuk mendapatkan nilai message dari suatu hash digest adalah dengan brute-force search serta menggunakan rainbow table yang berisi pasangan hashdigest dan message. Hashing pada information security digunakan pada digital signature, Hash Message Authentication Code (HMAC). Bisa juga digunakan untuk mengecek integritas dan keaslian sebuah file yang disebut checksum atau dipakai untuk Password Verify. Jenis-jenis hash antara lain : MD4, MD5, SHA-1, SHA-3, SHA-256, SHA-512, Dll.

https://gchq.github.io/CyberChef/

Enkripsi

Dalam enkripsi, kita menggunakan suatu Algoritma dan sebuah kunci. Maksudnya adalah suatu plaintext dimasukan ke suatu fungsi yang menggunakan algoritma tertentu yang membutuhkan sebuah kunci yang random atau sudah ditentukan. Fungsi ini melakukan rentetan proses yang menghasilkan suatu text yang acak atau tidak bermakna yang disebut ciphertext. Dalam enkripsi, prosesnya dapat reversible. Maksudnya adalah ketika proses dekripsi (mengembalikan Ciphertext ke Plaintext), jika kita mengetahui kunci yang dipakai, maka kita dapat dengan mudah untuk mendapatkan plaintextnya. Secara garis besar ada 2 tipe metode kriptografi yang dipakai, Classic Cryptography dan Modern Cryptography.

Perbedaan mendasar dari keduanya adalah Classic Cryptography menggunakan metode manipulasi karakter, digit, dan simbol secara langsung dan teknik yang digunakan hanya pihak-pihak yang terlibat, sedangkan Modern Cryptography menggunakan metode manipulasi bit sequence binary dari sebuah plaintext dan algoritma yang dipakai dapat diketahui oleh semua orang. Tetapi yang membuat Modern Cryptography sangat powerful adalah kompleksitas dan cara komputasi dari algoritma yang dipakai, karena sangat sulit sekali untuk menembus celah algoritma-nya.

Classic Cryptography

Tipe kriptografi ini sangat sering kita temui pada soal-soal CTF dasar. Pada umumnya kriptografi klasik ini menggunakan sistem substitusi dan penggeseran antar karakter plaintext. Sebenarnya banyak sekali mode enkripsi klasik yang ada seperti Caesar, ROT13, Vigenere, dan Substitution Cipher.

https://gchq.github.io/CyberChef/

Modern Cryptography

Tipe kriptografi ini sangat sering dijumpai pada protokol-protokol interaksi data yang ada. Modern kriptografi ini sudah seperti corestone pada information and communication security. Tipe ini lebih cocok digunakan pada industri karena mempunyai pondasi konsep matematik seperti teori angka, kompleksitas komputasional, dan probabilitas. Bekerja dengan cara memanipulasi struktur bit binary dari sebuah plaintext. Pada modern kriptografi,dibagi lagi menjadi 2 kriteria dasar,yaitu symmetric dan asymmetric.

Symmetric Algorithm
Pada sistem symmetric ini proses enkripsi dan dekripsinya menggunakan sebuah kunci rahasia yang sama. Biasanya kunci yang dipakai pada proses ini didapatkan dari algoritma random, dengan cara merandom string sesuai bit yang dikehendaki. Penggunaan algoritma random ini untuk menjaga keamanan dari sebuah kunci agar tidak mudah ditebak dan dibrute-force. Contoh enkripsi symmetric yang cukup populer antara lain : AES, OTP, Bitwise Encryption dan 3DES. Dibawah merupakan contoh penggunakan AES-128 bit.

https://gchq.github.io/CyberChef/

Asymmetric Algorithm
Pada kasus asymmetric algorithm, kita tidak memerlukan yang namanya kunci rahasia, melainkan kita menggunakan yang disebut public dan private key. Sehingga kita kenal juga dengan istilah Public-key Cryptography. Pada kriptosistem ini algoritma untuk dekripsinya pasti berbeda dengan enkripsinya, maksudnya alur dekripsinya bukan reverse dari alur enkripsinya, karena menggunakan key yang berbeda. Dalam hal ini pengirim pesan akan membuat pasangan public-private key. Public key digunakan untuk mengenkripsi pesan dan private key digunakan untuk mendeskripsi pesan. Tentu saja prinsip dan konsep algoritma asymmetric ini agak berbeda dengan symmetric, dimana symmetric mempunyai algoritma yang kompleks tetapi sedikit menggunakan number theory yang kompleks seperti masalah discreate logarithm dan modular arithmetic, sedangkan algoritma asymmetric yang ada saat ini menggunakan prinsip number theory yang kompleks. Karena algoritma asymmetric sangat kuat dalam bidang pemecahan masalah diskrit, maka sering digunakan untuk keamanan data dan protokol yang berskala besar. Contoh enkripsi asimetrik antara lain : RSA, ElGamal, ECDH.

https://sectigostore.com/blog/ecdsa-vs-rsa-everything-you-need-to-know/

Nah, gimana sekarang udah mulai dapet pencerahan tentang kriptografi kan? Mungkin nanti saya buat lanjutan tentang cara implementasi yang baik dan bagaimana memecahkan implementasi kriptografi yang kurang baik (CTF problem based).

Yang ingin ngulik-ngulik teknik-tenik kriptografi bisa belajar disini:

--

--