Transcript for:
Pengantar Kriptografi dan Algoritmanya

Halo, selamat berjumpa kembali dalam channel YouTube PT. Timber Jaya Indonesia. Kita melanjutkan episode kedua dari topik kriptografi. Kalau dalam episode pertama, bagian akhir kita membahas tentang dua algoritma, yaitu algoritma simetrik. dan algoritma asimetrik. Kita review sedikit, kalau algoritma asimetrik adalah kalau key encrypt dan key decrypt-nya sama. Sedangkan algoritma asimetrik, apabila key encrypt dan key decrypt-nya berbeda, tapi key ini sepasang. Dan kita sebut private key, yaitu kalau key ini hanya dimiliki atau disimpan oleh pihak yang mengenerate atau membangkitkan kunci secara aman, tidak boleh didistribusikan. Kemudian ada key pasangannya, yaitu key public key, yang boleh didistribusikan ke semua orang, ke setiap device yang ada, tanpa perlu ada pengamanan khusus. Nah, sekarang kita mau menginjak ke topik algoritma asimetrik yang lebih dalam. Sekarang kita masuk lebih dalam ke... Algoritma asimetrik. Dalam kasus ini, kita memilih public key sebagai key yang dipakai untuk meng-encrypt. Jadi, encryptor meng-encrypti memakai public key dari si decryptornya. Jadi, decryptor mengirimkan public key-nya ke encryptor. Karena public, jadi dia boleh mengirimkannya ke siapa saja, masuk ke encryptor ini. Encryptor akan meng-encrypt informasi plain menjadi cipher, kemudian dikirim ke decryptor. Decryptornya akan mendecrypt memakai private key dari decryptor, private key dia sendiri. Dalam proses ini, algoritma asymmetric menyediakan service confidentiality. Kenapa bisa begitu? Karena... yang bisa mendekrypt hanya yang memiliki private key. Sedangkan private key ini dimiliki oleh hanya si decryptor ini saja. Jadi decryptor yang lain tidak bisa mendekrypt, karena dia tidak memiliki private key dari si decryptor yang hijau ini. Jadi kalau ada pihak enkryptor mau mengirimkan informasi ke decryptor, maka dia harus meng-encrypt dengan public. key dari si decryptor. Bukan public key dari dia, tapi public key dari si penerima. Dan si penerima, decryptor, akan mendecrypt melalui private key si penerima. Metode seperti ini cocok untuk distribusi key simetrik. Jadi misalnya si encryptor ini menjerit key simetrik, dia mau mengirimkan ke decryptor dari sisi yang kanan, maka dia meng-encrypt key simetrik tadi dengan public key dari si decryptor. Setelah ter-encrypt, dia akan mengirimkan ke decryptor, dan hanya si decryptor ini yang bisa mendecrypt melalui private key si decryptor itu sendiri. Jadi orang lain yang punya decryptor, algoritma yang sama, tapi key-nya berbeda, dia tidak bisa. Mendecrypt, karena ini key sepasang. Jadi kalau ini public key dari decryptor, decryptnya harus melalui private key dari si decryptor tersebut. Tidak bisa memakai private key yang lain. Skenario berikutnya ini kebalik. Jadi kita mengencrypt melalui private key si encryptor. Jadi dia mengencrypt melalui private key yang dia generate sendiri. kemudian dikirimkan ke pihak mana saja, pihak si decryptor atau pihak penerima akan mendecrypt dengan public key yang sudah dikirim oleh si encryptor. Jadi si public key-nya dipakai untuk mendecrypt informasi cipher yang dikirim oleh si encryptor dan mendapatkan informasi yang plain. Jadi kalau kasusnya seperti ini, gunanya apa? Kan semua orang punya public key dari si encryptor, berarti semua orang bisa mendecrypt. Memang fungsi skenario seperti ini tidak bisa untuk service confidentiality, karena didegrip oleh public key yang dimiliki oleh banyak orang, bahkan oleh siapa saja boleh memiliki. Makanya ini bukan service confidentiality, tapi ada service lain yang akan dilayani. Kalau kita lihat di sini, ini ada plane 1, jadi informasi awalnya yang sebelum di-encrypt. Kalau dikirimkan juga ke si decryptor, dan decryptornya membandingkan antara plane 1 yang dikirim secara plane dengan hasil yang dia decrypt dengan publiki si encryptor, dan plane 2 ini hasilnya, di-compare sama, maka dia bisa melakukan service proof of origin. Artinya dia bisa membuktikan siapa yang mengirimkan informasi servernya, yaitu yang mempunyai private key yang sepasang dengan public key yang dia pakai. Kalau ini private key si encriptor, dia memakai public key si encriptor, dan hasilnya sama antara plane yang dikirimkan dan plane yang dia decrypt, hasil decrypt, maka berarti pemilih private key yang sepasang. sepasang dengan public key yang dia pakai adalah yang mengirim. Kemudian hal yang kedua, selain dari proof of origin, juga non-repudiation. Karena si encriptor ini hanya yang memiliki private key encriptor, pihak lain tidak memiliki, maka dia hanya yang bisa mengirim, dan kalau dia mengirim, diterima oleh si decryptor, Si decryptor bisa membuktikan bahwa si pengirim pernah meng-encrypt data plane satu ini dengan private key-nya. Karena tidak ada orang lain yang punya private key dari si encryptor. Jadi si pihak encryptor tidak bisa menyangkal, non-repudiation. Dia tidak bisa menyangkal pernah mengirimkan informasi ke pihak decryptor. Kemudian yang ketiga, service integrity. Kalau ada orang di tengah jalan mengganti message ciphernya dengan message cipher yang lain, maka saat dibantingkan hasilnya plan 2 dan plan 1 tidak sama. Sehingga bisa dipastikan bahwa informasi yang dikirim sudah dirubah. Jadi, service seperti ini menyediakan integrity artinya... membuktikan bahwa informasi yang dikirim tidak dirubah di tengah jalan. Tidak ada orang yang merubah informasi cipher dengan informasi cipher yang lain. Kalau hasil plane 1 dan plane 2 di-compare, hasilnya sama. Nah, proses compare di sini disebut sebagai verify digital signing atau verify signing. Kalau proses encrypt di sini disebut sebagai proses signing. Di sini signing, di sini verify. Jadi algoritma simetrik dengan metode seperti ini, meng-encrypt dengan private key dan meng-decrypt dengan public key, bisa membuktikan tiga hal. Jadi waktu plane 1 dan plane 2-nya di-compile sama, maka kita bisa membuktikan siapa yang mengirim. Yang mengirim adalah yang memiliki private key dari encriptornya, yang sepasang dengan public key dari encriptor yang dipakai untuk mendecrypt. Karena ini sepasang, jadi public key dari yang mengirim public key tadi, kalau dia punya pasangan private key, dia memakai private key-nya untuk mengencrypt dan didecrypt oleh public key yang sepasang, maka waktu plane 1 dan plane 2 ini sama. Berarti si pengirimnya adalah tadi, si pengirim public key atau yang mempunyai private key encriptor. Yang kedua, dia tidak bisa menyangkal bahwa dia pernah melakukan enkripsi karena hanya dia yang mempunyai private key-nya. Jadi karena hanya dia yang punya private key-nya, dia tidak bisa menyangkal bahwa dia pernah meng-encrypt plane 1 menjadi cipher dan dikirim ke decryptor. Karena hasilnya setelah didegrip sama seperti informasi plan 1 yang dikirim. Ini service non-repudiation. Yang ketiga, kita bisa membuktikan integrity, artinya Informasi yang dikirim ini tidak dirubah di tengah jalan diganti dengan informasi cipher yang lain. Kalau dibandingkan sama, oh berarti memang plane 1 dan plane 2 tidak dirubah, kemudian dikirim oleh si enkryptor yang memiliki private key enkryptor, dan dia pernah melakukan, tidak bisa menyangka bahwa dia tidak melakukan. Jadi ada tiga servis. yang bisa dilayani dengan skema seperti ini. Berikutnya metode pengenkripan. Kalau kita punya data yang besar, maka saat mengenkrip kita harus ada dua macam cara. Yaitu yang pertama dibagi berdasarkan blok, disebut sebagai blok cipher, enkripsi dengan blok cipher. Ini contohnya misalnya triple dash, dia akan membagi setiap 64 bit atau 8 byte di-encrypt. 8 byte berikutnya di-encrypt proses kedua. 8 byte berikutnya di-encrypt proses ketiga dan seterusnya. Kalau AES per 128 bit atau 16 byte. Jadi ini disebut sebagai block cipher karena dia meng-encrypt per blok. Blok pertama di-encrypt, blok kedua di-encrypt, blok ketiga di-encrypt. Nanti mendecryptnya juga sama. Jadi blok pertama di-decrypt, blok kedua di-decrypt, blok ketiga di-decrypt, baru digabungkan. Nah kalau kunci RSA, panjang bloknya itu sepanjang kunci public key-nya. Jadi kalau dia punya kunci public 1024, 1024 bit, maka panjang bloknya juga 1024 bit. Meskipun nanti ada header dan... footer di belakang harus dipotong, tapi kira-kira ya sekitar segitu, lebih kecil sedikit. Kalau dia memakai key yang 4096, ya dia maksimal yang di-encrypt per bloknya 4096, meskipun datanya agak kurang sedikit ya, ada pemotongan di depan dan di belakang. Nah proses peng-encryptan yang lain adalah stream cipher. Kalau ini ya Kita enggak perlu bagi, tapi mengalir saja. Seperti air mengalir, di-encrypt terus-menerus. Jadi tidak ada pembagian blok, tapi secara stream. Ini ada contoh algoritma, ada RC4, ada ORIG, SIL, dan lain-lain. Kemudian kalau kita meng-encrypt pakai blok cipher, yang jadi masalah kadang data kita tidak sesuai dengan atau tidak terbagi. habis dengan block-nya. Jadi ini misalnya 8 byte, padahal data kita tinggal tersisa 6 byte. Berarti kita kurang 2 byte tersisa. Kita kurang 2 byte. Nah, kurang 2 byte-nya ini kita padding. Kita tambahkan, kita padding. Ada yang tambahnya random, ada yang tambahnya byte 0000, atau ya ada metode-metode yang lain. Ini sebutnya sebagai padding di block server. Kemudian karena berdasarkan block, kadang kita berpikir gini, kalau saya nge-encrypt block 1, block 2, block 3, semuanya caranya sama, key-nya sama, tidak ada perbedaan, maka orang kemungkinan bisa menerka hasil dari encrypt-an kita, karena mungkin ada yang sudah berulang. Jadi blok 1 hasilnya sama seperti blok ke-97. Kemudian ke blok 207 sama. Nah, berulang. Orang tahu, oh berarti kalau ini sama, berarti data clearing-nya sama. Jadi level security-nya agak berkurang. Metode yang seperti tadi disebut sebagai electronic codebook, ICD, artinya setiap blok di-encrypt dengan cara yang sama. Kalau bloknya sama, key-nya sama, algoritma yang sama, hasilnya sama. Nah, ada metode yang lain, yaitu cipher blockchaining. Artinya, setiap blok, meskipun munyai di-encrypt dengan algoritma yang sama dan key yang sama, tapi saat sebelum di-encrypt, datanya diolah dulu, sehingga hasil encrypt-nya berbeda. Ini disebut sebagai cipher blockchaining. Bisa di-exhort dulu, explosive or dengan suatu data, atau di-exclusive or hasil dari encrypt block sebelumnya. Ini disebut sebagai CPC. Ada juga metode yang lain, server feedback block atau CFB, ada OFB, ada CTR, dan GCM. GCM ini yang sekarang mulai ngetrend, mulai banyak dipakai orang, galois atau counter. Kemudian tadi, waktu kita meng-encrypt per block, kadang block. tersebut sebelumnya diperlakukan khusus. Misalnya di-exhort atau di-exhort dengan suatu data sebelumnya. Nah kalau data blok pertama di-exhort dengan apa? Nah itu disebut dengan initial vector. Jadi IV, initial vector adalah data yang dipakai untuk meng-exhort dari blok pertama sebelum di-encrypt. Ini metode pakai IV tidak ada di ECB, tapi ada di CBC. Lanjut kita dengan algoritma HES. Jadi kalau algoritma HES ini tidak ada kunci, tapi ada peringkasan dan proses satu arah. Ini yang one way. Jadi proses encrypt diganti dengan proses yang disebut sebagai HES. Jadi plain text, informasi yang plain, dimasukkan ke algoritma hash akan menghasilkan cipher. Sudah, stop, titik. Tidak ada kunci dan tidak diproses selanjutnya. Tidak ada yang mendegrip. Hasil dari hash ini kadang disebut sebagai hash atau digest. Ada yang ngomong digest, ada yang ngomong hasil dari hash. Tidak bisa dipakai untuk mendapatkan data aslinya atau plainnya. Jadi, Kenapa tidak bisa? Karena ada peringkasan. Jadi misalnya data plain text kita ini 1 kilobyte. Waktu di hash hasilnya enggak lagi 1 kilobyte. Tapi misalnya contoh hasilnya cuma 16 byte. Tentu saja data 16 byte tidak bisa dipakai untuk mencari data 1 kilobyte. Karena ada peringkasan, jadi data awalnya tidak mungkin dicari dari data cipher. Dan proses ini satu arah, enggak ada algoritmanya untuk kebalikannya. Algoritma ini dipakai untuk mengamankan password biasanya. Karena apa? Kalau password dimasukkan ke algoritma hash menjadi cipher, orang tidak bisa mengetahui password aslinya, awalnya apa, yang plain apa. plain text-nya. Jadi orang meskipun punya kumpulan data password yang sudah di hash, percuma dia tidak bisa melakukan atau mengetahui data plain-nya. Contoh-contoh algoritma hash itu ada MD2, MD4, MD5, kemudian ada SAA1, SAA2, dan SAA3, dan lain sebagainya ini. Kemudian yang dalam kurung ini panjang bit hasil peringkasannya, ini 128 bit, ini 160 bit, ini ada yang 224 bit, 256 sampai 512. Nah, ada algoritma hash yang sudah lama, yang sudah tidak dipakai lagi. Kenapa? Karena mungkin bitnya ini terlalu pendek, sehingga orang bisa membuat diksineri, kamus. Dia bisa membuat... macam-macam kombinasi plane untuk menghasilkan cipher tertentu yang 128 bit ini, misalnya MD5. Jadi dia tinggal kumpulin aja semua data-data plane yang sudah pernah di hash, dapat cipher 128 bit, dia mendapatkan semua kemungkinan yang ada, dua pangkat 128, berapa itu terserah. Yang penting nanti dia kalau sudah cukup lengkap, dia bisa mengetahui, oh kalau hasil hash-nya, hasil cipher-nya ini A, maka plain-nya A. Ini bisa terjadi karena bit hasil hash-nya ini terlalu singkat, jadi kurang aman. Maka algoritma hash yang baru bit-nya lebih panjang. Kegunaan praktisnya bagaimana? Misalnya untuk... mengamankan password, jadi saat orang membuat password pertama kali, dia akan membuat hash-nya disimpan, nanti waktu yang kedua dan seterusnya, waktu dia memasukkan password Dilakukan proses hash lagi, kemudian hasil digest atau ciphernya ini di-compare. Kalau hasil dari yang pertama dan yang berikutnya sama, oh berarti passwordnya yang plain textnya sama. Kalau hasilnya berbeda, oh berarti beda, salah password, ditolak. Kalau hasilnya sama, oke diterima. Yang berikutnya metode message authentication code MAC. Ini mirip dengan hash, cuma ada kuncinya dan ada peringkasan. Nah, biasanya ini dipakai memakai algoritma simetrik, entah triple dash, entah IS. Yang terutama yang CBC yang ada initial vector dan hasil block sebelumnya dipakai untuk mengolah data dari block yang akan di-encrypt. Nah, hasil dari blok terakhirnya yang disimpan. Jadi misalnya ada seribu blok, plain text-nya dibagi jadi seribu blok, yang disimpan cuma blok terakhirnya yang ke seribu. Nanti mirip dengan hash, dia juga tidak bisa dipakai untuk mendapatkan hasil aslinya. Sorry, tidak bisa dipakai untuk mendapatkan awal dari data plain-nya. Karena ya... Tidak mungkin satu blok yang sudah ke seribu bisa mendapatkan full seribu blok aslinya. Tidak mungkin. Ini biasanya dipakai untuk service integrity. Bisa juga dipakai untuk mengamankan password. Kalau mengamankan password dengan MAC lebih aman karena ada faktor key-nya, ada faktor kuncinya. Tadi kalau hash tidak ada key, jadi... kalau saya meng-encrypt password saya di komputer ini, kemudian di komputer lain saya encrypt passwordnya yang sama, hasilnya sama, karena enggak ada key-nya. Kalau pakai MAC, Message Authentication Code, saya bisa bedain antara komputer 1 dan komputer 2, key-nya beda. Sehingga kalau password saya sama, hasilnya, hasil MAC-nya bisa berbeda, karena ada beda key. Jadi ini lebih aman dibanding dengan metode S. Cara meng-compare-nya mirip. Jadi kalau ini password, kita lakukan MAC lagi dengan key yang sama. Di blok terakhirnya kita compare. Apakah blok terakhir yang sekarang dengan yang tersimpan sama atau tidak. Kalau sama berarti passwordnya sama. Kalau beda berarti ditolak, passwordnya salah. Sekarang kita lanjut dengan algoritma HMAC. Algoritma HMAC ini mirip dengan algoritma MAC, Message Authentication Code yang tadi, cuman sebetulnya berbeda di dalam proses encryption-nya. Kalau algoritma MAC, proses encryption-nya berdasarkan algoritma simetrik, entah itu Ripple Dash atau IIS. Kalau HMAC ini, algoritma encryption-nya... berdasarkan algoritma hash, tapi di sini memiliki key. Nah, ini keunikan dari algoritma Hamek. Jadi, dia mirip seperti Mac, tapi prosesnya memakai proses hash dan memiliki key. Jadi, algoritma ini ada kunci, kemudian ada peringkasan. Jadi, kalau kita punya message yang panjang, masuk ke algoritma Hamek. maka kita akan mendapatkan nilai Hamek yang kita bisa tentukan berapa panjangnya, dan itu lebih kecil dibanding mesinnya. Dan proses ini sendiri karena di dalamnya adalah proses hash, maka prosesnya satu arah. Kita tidak bisa membalikkan dari cipher menjadi plain. Jadi tidak bisa mendapatkan mesin aslinya. Kalau pemakaiannya mirip seperti HMAC untuk service integrity dan seperti biasa ada verify HMAC dan generate HMAC. Generate HMAC untuk mendapatkan nilai ciphernya, verify HMAC untuk mencocokkan apakah cipher dan plane-nya sama atau tidak. Sekarang kita masuk ke teknik tanda tangan digital. Kalau zaman dulu, waktu kita masih mengirimkan surat pakai kertas, maka setelah selesai kita menulis isi surat, Terakhir biasanya kita tanda tangan. Nah, demikian juga di dunia digital, kita bisa memakai kriptografi untuk menanda tanganin mesej yang akan kita kirim dari pengirim ke penerima. Caranya dengan memakai kombinasi antara teknik-teknik algoritma asimetrik dan asimetrik dan mungkin juga hash, nanti kita akan bahas. Dan biasanya setelah nanti... Surat selesai kita tulis, kita tanda tanganin, kita akan masukkan ke dalam amplop. Nanti juga ada teknik digital amplop. Sekarang kita bahas soal tanda tangan digital. Kalau seorang mau tanda tanganin surat, maka dia bisa dipastikan berasal dari siapa yang tanda tangan. Kemudian yang tanda tangan ini tidak bisa menolak bahwa dia pernah menulis surat ini. Kemudian yang ketiga, kalau ada perubahan, dia tidak bisa mengelak. Atau kalau ada orang merubah isinya, maka akan diketahui bahwa ini bukan dari si pengirim yang tanda tangan di ketas surat tersebut. Nah, servis-servis seperti ini disediakan juga oleh tanda tangan digital. Oke, sebelum pihak pengirim... mengirimkan surat dengan tanda tangan digital ke pihak penerima, maka pihak pengirim akan mengenerate biasa asymmetric key, private key, dan public key. Kemudian sisi public key disebar biasa, disebar ke siapa saja, dan si penerima menerima public key dari si pengirim. Berikutnya, Pengirim menyiapkan pesan, kemudian pesan ini dimasukkan ke dalam algoritma hash, dimasukkan ke dalam algoritma hash, mendapatkan hash dari pesannya, kemudian di-encrypt dengan encriptor asymmetric. Maka akan mendapatkan hash dari pesan yang sudah di-encrypt oleh encriptor asymmetric dengan private. key dari si pengirim. Siapa yang bisa menandatanganin ini? Hanya yang memiliki private key. Siapa? Ya si pengirim itu sendiri. Dengan menandatanganin seperti ini, metode seperti ini, artinya waktu nanti dia mengirimkan pesan, pesan ini dikirimkan si pihak penerima, jadi pesan dan hash dari pesan yang sudah di-encrypt dengan private key, maka dia tidak bisa menghindar dari bahwa pesan ini dikirim oleh dia, dan memang pesan ini pernah ditandatanganin oleh dia, kemudian pesan ini berasal dari dia, dan kalau si penerima mencocokkan antara hasil hash-nya yang sudah di-signing, ditandatangan, dengan pesan yang nanti di-hash, sama, maka dia tidak bisa, maaf, maka dia bisa, penerima bisa memastikan bahwa pesannya tidak dirubah. Jadi setelah pesan dan hash dari pesan yang sudah di-encrypt diterima penerima, maka pesan tersebut akan dimasukkan ke dalam algoritma hash yang sama dengan algoritma hash si pengirim. masuk ke algoritma hash, akan mendapatkan hash dari pesan. Kemudian digital signature, tanda tangan digital, yaitu hash dari pesan yang di-encrypt private key yang sudah dikirim ke penerima, ini di-decrypt dengan public key. Setelah di-decrypt, akan mendapatkan hash. Hash ini di-compare. Apakah... hasilnya sama. Kalau hasilnya sama, berarti tadi ada tiga service, ini betul dikirim oleh si pengirim, si pengirim pernah menuliskan pesan ini, dan pesan ini tidak berubah di tengah jalan. Tidak ada yang mengganti informasi dari pesan yang dikirim. Ini teknik tanda tangan digital. Berikutnya, Ini soal hash kemudian di-encrypt dengan encriptor asymmetric. Ini disebut sebagai generate signature. Sedangkan proses mendegrate dari pesan yang di-hash, yang sudah di-encrypt, didegrate, kemudian dibandingkan dengan pesan yang di-hash kembali, ini adalah proses verify signature. Yang di sini generate, yang si penerima men-verify. Sekarang kita lanjut dengan teknik unplug digital. Tadi kalau dalam konvensional surat kertas, Setelah ditanda tangan, maka akan dimasukkan ke dalam amplop. Nah, sekarang juga sama dalam dunia kriptografi digital, ada teknik amplop digital. Tujuannya adalah confidentiality, supaya orang tidak bisa membaca pesan yang akan kita kirimkan. Jadi, kebalikan dari tadi, tanda tangan digital. Di sini si penerima harus mengenerate public dan private. Asymmetric. Kemudian seperti biasa, public-nya akan dikirim ke pengirim. Jadi kalau mau encryption, envelope, digital envelope, mau aman, confidentiality, maka harus pakai public key dari si penerima. Public key si penerima dikirim, kemudian pengirim menyiapkan pesan, kemudian pengirim mengenerate symmetric key. Supaya apa? Karena kalau pakai asymmetric lambat, kalau pesannya besar prosesnya cukup lama, jadi harus pakai algoritma simetrik. Pesannya di-encrypt dengan algoritma simetrik yang tadi random, menjadi pesan yang sudah di-encrypt dengan algoritma simetrik. Kemudian key yang tadi randomnya di-encrypt dengan public key dari si... penerima, dibuat jadi berendangan, kedua ini dikirimkan ke pihak penerima. Nah, di sisi pihak penerima dibuka, kemudian key yang di-encrypt oleh public key di-decrypt untuk mendapatkan key simetriknya, kemudian pesan yang di-encrypt oleh key simetrik di-decrypt juga, tapi dengan decryptor simetrik. yang tadi decryptor asimetrik, maka si penerima menerima pesannya. Jadi pengiriman ini aman, orang tidak tahu apa isi pesannya karena di-encrypt dengan teknik digital envelope. Sekarang kita masuk ke teknik gabungan yang akan menggabungkan tanda tangan digital dan envelope digital. Oke, kita lihat. A akan mengirimkan ke B. Tentu saja sebagai persiapan, pertukaran kunci dahulu. A mengenerate public dan private key, kemudian B juga mengenerate public dan private key-nya. A memiliki private key A dan public key A, sedangkan B memiliki public key B dan private key B. Kemudian public key-nya masing-masing dikirimkan. Jadi A mengirimkan public key A-nya ke B, B mengirimkan public key B ke A. Kemudian terjadi pertukaran kunci. Selanjutnya kita mau melihat fokus ke bagian pengiriman. A sudah memiliki private key A yang dia generate dengan public key A, dan dia sudah menerima public key B. Dia mempersiapkan pesan, karena pesannya mau di digital envelope, jadi dia harus mengenerate key symmetric dengan random number generator, meng-encrypt pesan dengan key symmetric, memakai encriptor symmetric, mendapatkan pesan yang di-encrypt oleh key symmetric. Pesan yang di-encrypt oleh key symmetric. Kemudian key symmetric-nya harus kita confidentiality, jadi di-encrypt oleh public key B dengan encriptor asymmetric, mendapatkan encrypted key symmetric yang di-encrypt oleh public key B, public key dari si penerima. Kemudian setelah digital envelope, kita akan terapkan tanda tangan digital. Jadi kedua message ini, Kita gabungkan, kita lakukan hash, kita encrypt dengan encryptor asimetrik. memakai private key A, private key sepengirim, proses ini disebut generate signature, akan mendapatkan signature. Nah, tiga message ini, encrypted pesan, kemudian encrypted key, dan signature-nya akan didirin ke B. Orang kadang ada pilihan lain, jadi waktu menerapkan digital signature bisa antara encrypted pesan dan key simetriknya, juga dia bisa digital signature dari pesannya saja yang masih clear, atau pesan yang sudah di-encrypt. Ini tergantung keperluannya. Kalau kita mau mengamankan pesan dan juga key yang encrypted, maka kita pilih yang kita digital signature adalah encrypted pesan dan key simetriknya. E, di sisi penerima. B, punya public key B, private key B, dan public key A. Ketiga message tadi dibongkar. Kemudian karena tadi signature-nya berdasarkan encrypted pesan dan encrypted key, maka encrypted pesan dan encrypted key-nya di hash mendapatkan nilai hash digest yang pertama. Signature-nya kita decrypt dengan public key dari si A. Kita decrypt, mendapatkan digest kedua. Digest kedua dan pertama ini kita compare, apakah sama? Kalau sama berarti kita bisa membuktikan tiga hal, yaitu pesannya tidak dirubah, dalam hal ini adalah encrypted pesannya tidak dirubah. Yang kedua, kita tahu siapa pengirimnya, proof of origin, yaitu A. Dan yang ketiga, kita bisa yakin bahwa A sudah pernah menandatangani pesan ini. Artinya dia tidak bisa menolak, non-repudiation. Sekarang digital envelope-nya bagaimana? Oke, setelah ini diverify, sama. Nah, digital envelope-nya. Kalau ini tidak terverify, sudah lupakan. Tidak perlu diproses lagi. Tapi kalau ini oke, di-compare sama, kita lanjut, yaitu key symmetric-nya kita decrypt dengan private key B. Karena confidentiality, maka didecrypt dengan private key dari penerima. Mendapatkan key symmetric. Key symmetric-nya dipakai untuk mendecrypt pesan, mendapatkan pesan. Jadi pesan yang dikirimkan aman, ini dipakai amplop digital, kemudian bisa diverify siapa pengirimnya. Pengirimnya tidak bisa menolak bahwa dia pernah menandatangani dan mesinnya tidak berubah. Jadi confidentiality terlaksana, proof of origin terlaksana, kemudian non-repudiation terlaksana, dan integrity. terlaksana. Ini teknik gabungan dari asimetrik, kemudian simetrik, dan juga head. Oke, kembali tanpa terasa, kita sudah melewati 30 menit dan kita sudah membahas kriptografi episode kedua, dan soal pengantar kriptografi ini sudah selesai. Kiranya apa yang saya sharingkan bisa bermanfaat bagi Anda sekalian, rekan-rekan sekalian. Kiranya tetap mengikuti channel PT. Dimerjaya ini. Siapa tahu nanti ada informasi yang lain yang masih terkaitan dengan data security yang bisa menambah wawasan dan pengetahuan kita semua. Terima kasih. Sampai jumpa di lain kesempatan.