Bagikan artikel...

Dalam panduan ini, kita akan membahas kriptografi simetris dan asimetris dan ilmu di balik kriptografi cryptocurrency.

Cryptocurrency seperti Bitcoin dan Ethereum menggunakan sistem terdesentralisasi peer-to-peer untuk melakukan transaksi. Karena seluruh proses online, ada kekhawatiran bahwa transaksi mungkin tidak stabil dan dapat diretas. Apa yang akan kita lihat dalam panduan ini adalah bagaimana cryptocurrency menggunakan kriptografi untuk membuat transaksi mereka sangat aman.

Tanda Tangan Digital

Salah satu alat kriptografi yang paling penting yang digunakan dalam mata uang kripto adalah konsep tanda tangan. Apa tanda tangan dalam kehidupan nyata dan apa propertinya? Bayangkan sebuah kertas yang telah Anda tandatangani dengan tanda tangan Anda, apa yang harus dilakukan tanda tangan yang baik?

  • Itu harus memberikan verifikasi . Tanda tangan harus dapat memverifikasi bahwa Anda yang benar-benar menandatangani kertas.
  • Seharusnya tidak bisa dipalsukan . Tidak ada orang lain yang bisa memalsukan dan menyalin tanda tangan Anda.
  • Non-penolakan . Jika Anda telah menandatangani sesuatu dengan tanda tangan Anda, maka Anda seharusnya tidak dapat mengambilnya kembali atau mengklaim bahwa orang lain telah melakukannya dan bukan Anda.

Namun, di dunia nyata, tidak peduli seberapa rumit tanda tangannya, selalu ada peluang pemalsuan, dan Anda tidak dapat benar-benar memverifikasi tanda tangan menggunakan alat bantu visual sederhana, itu sangat tidak efisien dan tidak dapat diandalkan.

Kriptografi memberi kita solusi untuk ini dengan “tanda tangan digital” yang dilakukan melalui penggunaan “kunci”. Jadi, apa kuncinya? Dan bagaimana cara digunakan di blockchain? Sebelum kita menjelajahinya, penting untuk mengetahui lebih banyak tentang kriptografi dasar.

Apa itu Cryptocurrency Kriptografi?

Kriptografi adalah metode menggunakan prinsip-prinsip matematika tingkat lanjut dalam menyimpan dan mentransmisikan data dalam bentuk tertentu sehingga hanya mereka yang ditujukan untuknya yang dapat membaca dan memprosesnya.  Kriptografi telah digunakan selama ribuan tahun oleh orang untuk menyampaikan pesan tanpa deteksi. Bahkan, penggunaan kriptografi paling awal terlihat di makam yang diambil dari Kerajaan Lama di Mesir sekitar tahun 1900 SM. Kriptografi telah ada dalam masyarakat modern melalui satu atau lain cara.

Enkripsi adalah salah satu alat paling penting yang digunakan dalam kriptografi. Ini adalah sarana di mana pesan dapat dibuat tidak dapat dibaca untuk pembaca yang tidak diinginkan dan hanya dapat dibaca oleh pengirim dan penerima. Dalam teknologi modern, ada tiga bentuk enkripsi yang banyak digunakan, kriptografi simetris, kriptografi asimetris, dan hashing.

Kriptografi Simetris

Kriptografi simetris adalah metode kriptografi paling awal yang diketahui manusia. Konsepnya sangat sederhana dan jika kita memecahnya menjadi beberapa langkah, ini akan terlihat seperti:

  • Anda memiliki pesan M yang ingin Anda kirim ke teman Anda.
  • Anda mengenkripsi pesan dengan Kunci dan mendapatkan teks sandi C.
  • Teman Anda mendapatkan teks sandi Anda C.
  • Dia kemudian mendekripsi teks sandi menggunakan Kunci yang sama untuk mengambil pesan M.

Jika kita menunjukkan representasi visual dari proses , ini akan terlihat seperti apa.

Kredit gambar: SSL2BUY

Ada dua jenis kriptografi simetris:

  • Streaming Cipher.
  • Blokir Cipher.

Apa itu stream cipher?

Stream cipher pada dasarnya berarti menggunakan kunci tetap yang menggantikan pesan dengan string karakter pseudorandom.Ini pada dasarnya adalah enkripsi dari setiap huruf satu per satu.

Kami akan membahas 3 jenis stream cipher dalam panduan ini untuk memberi Anda gambaran tentang bagaimana stream cipher bekerja:

  • Papan sekali pakai dengan huruf.
  • Pad sekali pakai dengan gerbang XOR.
  • Daftar shift umpan balik linier.

Papan sekali pakai dengan huruf

Untuk melakukan enkripsi ini kita perlu memiliki kunci yang memiliki jumlah karakter yang sama dengan pesan dan itu harus digunakan hanya satu kali saja (oleh karena itu istilah “bantalan satu kali”).

Misalkan untuk contoh ini kita akan mengirim pesan, “MEET ME OUTSIDE” kepada teman kita Bob. Tapi kami tidak ingin ada yang memotong pesan kami. Inilah sebabnya, Bob dan kami telah memutuskan untuk menggunakan pad sekali pakai yang berbunyi seperti ini:

“BDUFGHWEIUFGW”

Seperti yang Anda lihat, buku catatan juga memiliki jumlah karakter yang sama dengan pesannya, yaitu 13.

Sekarang, ini adalah contoh yang sangat sederhana dari papan sekali pakai, kami menggunakan ini karena kami merasa ini adalah contoh terbaik untuk digunakan untuk memahami taktik ini.

Sekarang, satu hal lagi yang perlu Anda perhatikan, setiap alfabet akan diganti dengan angka yang setara selama proses.

Pemetaan numerik seperti ini:

Selama proses berlangsung, akan ada 6 bagian data yang kita butuhkan yaitu: Pada dasarnya, angka yang setara untuk setiap alfabet. Ok, sekarang setelah kita membangun fondasinya, mari kita beralih ke proses yang sebenarnya.

  • Pesan Asli (OM): Pesan asli yang kami lewati. Dalam hal ini “MEET ME OUTSIDE”.
  • Numerical Original Message (NOM): Setara numerik dari pesan asli,
  • OTP: Pad Sekali Pakai.
  • Numerical OTP (NOTP): Setara numerik dengan OTP.
  • NCT: Teks sandi numerik yaitu NOM + NOTP mod 26
  • CT: Teks sandi yang setara dengan abjad dari angka dalam NCT.

Jadi, kita perlu mengirim pesan “MEET ME OUTSIDE” dan kita perlu menggunakan pad satu kali untuk mengenkripsi itu.

Proses enkripsi

Jadi, mari kita mulai dengan memasukkan pesan ke dalam OM

Kami meletakkan pesan “MEET ME OUTSIDE” di baris OM. Oke, jadi apa yang terjadi di sini?

Selanjutnya, kami menggunakan tabel pemetaan numerik untuk mendapatkan persamaan numerik dari setiap alfabet. Jadi, mari lihat tabel pemetaan dan lihat apa yang kita dapatkan:

Di baris OTP kami memasukkan kunci yang sudah kami berikan yang, jika Anda lupa, “BDUFGHWEIUFGW”. Ini hanya substitusi sederhana, kami akan mengambil nilai-nilai ini dan meletakkannya di baris NOM.

Sekarang, di baris NOTP kami menggunakan tabel pemetaan angka yang sama dan menemukan nilai numerik yang setara dari kunci tersebut yaitu:

“1, 3, 20, 5, 6, 7, 22, 4, 8, 20, 5, 6, 22”.

Di baris baru, untuk teks sandi Angka (NCT) kami menambahkan NOTP dan NOM dan mod hasilnya dengan 26 untuk mendapatkan NCT kami.

Jadi, akhirnya pesan “MEET ME OUTSIDE” berubah menjadi serangkaian karakter pseudo-acak “NHYYSLKYBMNJA”. Itulah cara Anda menemukan nilai untuk NCT dan kemudian Anda menggunakan tabel pemetaan dan menemukan huruf yang sesuai yaitu: “NHYYSLKYBMNJA”.

Begitulah cara proses enkripsi bekerja.

Proses dekripsi

Sekarang kita akan melihat bagaimana kita dapat mendekripsi pesan menggunakan kunci yang sama persis.

Mari kita lihat data yang dimiliki Bob:

  • Dia memiliki pesan terenkripsi yang dia dapatkan dari saya.
  • Dia memiliki kunci yang kita berdua bagi.
  • Dia memiliki tabel pemetaan untuk menemukan setara numerik.

Jadi, bagaimana dia akan mendekripsi pesan menggunakan data ini?

  • Dia akan memetakan nilai numerik kunci dan pesan terenkripsi untuk mendapatkan NCT dan NOTP.
  • Dia kemudian akan menghitung NOM (Nilai numerik dari pesan asli) dengan melakukan perhitungan ini: NOM = NCT – NOTP mod 26.
  • Dia akan menggunakan tabel pemetaan untuk mengambil huruf yang sesuai.

Jadi, mari kita lihat bagaimana cara kerja perhitungan NOM?

Sekarang, jika kita memetakan NOM ke abjad yang setara menggunakan tabel pemetaan maka kita mendapatkan:

“MEET ME DI LUAR”

Dan seperti itu, pesan dienkripsi dan didekripsi menggunakan kunci yang sama.

Pad sekali pakai dengan gerbang XOR

XOR atau “Exclusive OR” adalah gerbang logika. Apa itu gerbang logika? Gerbang logika biasanya menerima 2 input dan memberikan 1 output. Input dan output adalah nilai biner, artinya bisa 1 atau 0.Gerbang logika XOR menerima 2 input biner dan mengeluarkan output tinggi HANYA ketika input berbeda. Artinya, jika A dan B dimasukkan ke gerbang XOR maka C yang keluar akan menjadi 1 HANYA ketika A tidak sama dengan B.

Gerbang XOR terlihat seperti ini:

Seperti inilah tabel kebenaran XOR:

Proses enkripsi

Misalkan Anda memiliki data teks biasa yang ingin Anda kirim ke teman Anda Alice. Pertama, Anda akan mengubahnya menjadi bentuk biner. Misalkan pesan yang Anda miliki adalah ini: 00011110

Sekarang Anda memiliki kunci , kunci yang Anda bagikan dengan penerima Anda dan misalkan Anda telah melewati kunci melalui suatu algoritma yang memberi Anda hasil biner yang setara: 01001010 .

Jadi sekarang setelah Anda memiliki kunci, Anda akan XOR masing-masing bit yang sesuai untuk mendapatkan output teks sandi yang dihasilkan.

Teks Sandi = Kunci XOR Teks Biasa

Jadi jika Anda XOR kedua data kunci yang akan Anda dapatkan adalah:

“01010100”

Ini adalah teks sandi yang Alice dapatkan darimu.

Proses dekripsi

Jadi sekarang, bagaimana Alice akan mendekripsi pesan Anda dan mengambil yang asli?

Ini adalah data yang dia miliki:

  • Teks sandi
  • Kunci.

Jadi apa yang akan dia lakukan? Sederhana saja.

Dia hanya akan XOR kunci dan teks sandi dan dia akan mengambil pesan aslinya! Lihat diri mu sendiri:

Dan seperti itu, dia akan mengambil pesan aslinya.

Daftar shift umpan balik linier

Apa itu register geser umpan balik linier? Ini adalah fungsi yang keluaran masa depannya sepenuhnya tergantung pada keadaan sebelumnya (atau saat ini) . Ini akan menjadi lebih jelas saat Anda terus membaca jadi jangan takut!

Gagasan gaya stream cipher ini adalah untuk menentukan sebelumnya kunci dengan penerima Anda yang akan menjadi fungsi register geser umpan balik linier yang akan digunakan oleh Anda untuk menentukan kode. Misalkan Anda berbicara dengan teman Anda Bob dan menentukan bahwa ini adalah formula yang Anda berdua inginkan (kredit kepada Daniel Rees dari Youtube untuk formula ini).

  • E (i + 3) = E (i + 1) + 2E (i + 2) mod 26.

Dan mari kita asumsikan juga bahwa sebelum mengirim pesan ini, Anda dan Bob menentukan bahwa E (1) = 2 dan E (2) = 4.

Sekarang Anda dapat melihat bahwa dalam persamaan ini, semua output di masa depan tergantung pada output sebelumnya.

Jadi, anggap pesan yang ingin Anda kirim ke Bob adalah “MEET ME” Karena ada 6 karakter, kita perlu menentukan 6 nilai E () untuk bertindak sebagai kunci. Kami sudah menentukan nilai E (1) dan E (2). Sekarang kita perlu menghitung E (3) hingga E (6).

  • E (3) = E (1) + 2E (2) mod 26 = 10.
  • E (4) = E (2) + 2E (3) mod 26 = 24.
  • E (5) = E (3) + 2E (4) mod 26 = 6.
  • E (6) = E (4) + 2E (5) mod 26 = 10.

Jadi, sekarang kita memiliki kunci, mari kita mulai dekripsi .

Proses enkripsi

Jadi sekarang kita memiliki kunci dan pesan, mari kita buat tabel:

Untuk mendapatkan teks sandi numerik, Anda menambahkan kunci dan nilai numerik alfabet yang sesuai yang Anda petakan dari tabel ini yang telah kita lihat sebelumnya:

Sekarang, untuk mendapatkan nilai numerik dari teks sandi, tambahkan kunci dan nilai numerik dari pesan asli dan mod dengan 26.

Jadi, Anda mendapatkan:

Sekarang gunakan tabel pemetaan lagi untuk menemukan huruf yang sesuai dan Anda mendapatkan “OIORSO”. Itu pesan terenkripsi.

Dekripsi pesan ini sangat sulit terutama jika Anda tidak memiliki kunci. Seorang ahli mungkin melihat suatu pola. Anda perlu komputer untuk mengambil kode ini.

Contoh Stream Cipher digunakan di dunia nyata.

The Rivest Cipher 4 dari RC4

  • Digunakan dalam WEP alias protokol setara kabel untuk keamanan jaringan nirkabel.
  • Juga merupakan opsi dalam TLS / HTTPS untuk mengenkripsi lalu lintas web.
  • Karena sudah retak berkali-kali, tidak direkomendasikan untuk digunakan lagi.

A5 / 1

  • Gunakan untuk mengenkripsi data dan komunikasi telepon GSM (Global System for Mobile Mobile).
  • Edward Snowden dalam bocorannya mengungkapkan bahwa NSA secara rutin terus memutus GSM untuk keperluan pengawasan sehingga bukan lagi mode enkripsi yang aman.

Jadi, itu cukup banyak tentang stream cipher, saatnya beralih untuk memblokir cipher.

Apa itu cipher blok?

Cipher blok adalah bentuk kriptografi simetris yang menggunakan kunci dengan panjang tetap untuk mengenkripsi blok dengan panjang fix. Mari kita mulai dengan memeriksa cipher substitusi yang sangat umum yang harus Anda lihat sebelumnya:

Jadi, jika seseorang memberi tahu Anda bahwa mereka mendapat pesan yang bertuliskan “EFBD” dan ingin Anda mendekripsi dan mendapatkan pesan aslinya, bagaimana Anda melakukannya?

Anda hanya akan melihat tabel, melihat huruf mana yang sesuai dengan yang mana dan kemudian menggantikannya? Jadi “EFBD” adalah sandi untuk “FACE”.

Sekarang mari kita periksa teks biasa dan ciphertext dan membandingkannya:

  • Biasa: ABCDEF
  • Cipher: FABCDE

Jadi, seperti yang Anda lihat, teks sandi pada dasarnya adalah teks biasa yang digeser satu per satu. Jadi, dalam kasus khusus ini:

  • EFBD = FACE digeser oleh 1

Pada dasarnya, itulah yang dimaksud dengan block cipher. Diberikan input teks biasa dan kunci, ia dapat menghasilkan teks sandi unik. Satu hal lagi yang sangat penting dan harus diperhatikan. Diberi kunci, siapa pun dapat menguraikan teks sandi dari teks biasa dan sebaliknya. Contoh-contoh yang kami berikan di sini semuanya sangat sederhana, cipher blok terjadi dengan potongan besar data.

Jika kita mencari representasi visual dari cipher blok, seperti inilah tampilannya:

Properti lain yang menarik dari cipher blok adalah bahwa jika kunci berubah maka yang mengubah teks cipher keluaran cukup drastis. Mari kita lakukan tes dengan data yang kita miliki sekarang.

Sekarang, kami memiliki 3 tombol untuk 3 teks sandi yang berbeda.

  • Dalam teks sandi 1 kita bergeser ke kanan satu kali.
  • Dalam teks sandi 2 kita bergeser ke kanan dua kali.
  • Dalam teks sandi 3 kami bergeser ke kanan tiga kali.

Jadi, mari kita lihat apa yang terjadi ketika kita mengurai input “WAJAH” melalui semua cipher yang berbeda ini.

  • Saat kunci = 1, FACE menjadi EFBD
  • Saat kunci = 2, FACE menjadi DEAC
  • Saat kunci = 3, FACE menjadi CDFB

Seperti yang Anda lihat, teks sandi output berubah setiap kali Anda mengubah kunci. Dalam contoh kita memiliki data yang sangat sedikit, bayangkan melakukan ini dengan jumlah data BESAR, output akan berubah secara drastis setiap saat.

Ada dua aturan agar block cipher dianggap valid:

  • Anda harus dapat memperoleh teks biasa dari teks sandi dan sebaliknya diberi kunci.
  • Fungsi tersebut harus dapat dihitung secara efisien.

Ada satu hal lagi yang perlu Anda perhatikan ketika memblokir cipher. Ukuran blok ditetapkan sehingga input teks biasa harus memiliki ukuran yang sama dengan ukuran blok. Jika input lebih besar dari blok maka perlu dipecah untuk mendapatkan ukuran yang benar, jika input lebih kecil, maka perlu diisi dengan beberapa data sampah agar sesuai dengan ukuran blok.

Contoh cipher blok

Standar Enkripsi Data (DES)

  • Ukuran blok 64 bit.
  • Ukuran kunci 56 bit.
  • Apakah standar pemerintah sampai 2001.

Standar Enkripsi Lanjut (AES)

  • 128 bit blocksize.
  • Ukuran kunci 128, 192 atau 256 bit.
  • Dianggap sangat aman dan banyak digunakan saat ini

Keuntungan kriptografi simetris

Meskipun kriptografi simetris memiliki beberapa masalah utama (yang akan kita bahas sebentar lagi), keuntungan terbesar dari kriptografi simetris adalah bahwa hal itu membutuhkan sedikit overhead. Anda hanya perlu berbagi satu kunci dengan penerima untuk maju dengan metode ini.

Bahkan sekarang, banyak perangkat lunak menggunakan metode ini bersama dengan kriptografi asimetris untuk menyediakan layanan enkripsi / dekripsi yang cepat dan efisien.

Masalah dengan kriptografi simetris

Meskipun overhead secara signifikan lebih rendah, ada banyak masalah dengan kriptografi simetris.

Masalah # 1: Kunci bersama

Fakta bahwa enkripsi dan dekripsi dilakukan dengan satu kunci tunggal adalah masalah besar. Pertama dan terutama, berbagi kunci perlu dilakukan dengan cara yang sangat aman, jika ada yang memegang kunci maka semua data Anda akan dikompromikan.

Masalah # 2: Tidak dapat diskalakan

Masalah besar lainnya dengan kriptografi simetris adalah bahwa ia tidak scalable sama sekali. Misalkan Alice menjalankan pusat informasi dan mengirim data melalui kriptografi kunci simetris. Tidak apa-apa jika dia hanya berurusan dengan 3-4 klien. Namun, klien terbanyak, kunci publik yang lebih unik yang harus dia tangani dan urus. Akhirnya, itu akan menjadi terlalu sulit untuk ditangani.

Karena kerentanan kriptografi kunci simetris ini, solusi diperlukan, dan pada 1970-an akhirnya tiba.

Terobosan James Ellis

Pada tahun 1970, ahli matematika dan insinyur Inggris James Ellis memikirkan sebuah ide yang didasarkan pada konsep sederhana. Bagaimana jika enkripsi dan dekripsi adalah operasi terbalik berdasarkan 2 kunci yang berbeda? Dalam kriptografi tradisional, yaitu kriptografi simetris, pesan harus dikirim bersama dengan kunci ke orang yang dituju agar mereka dapat mendekripsi pesan, tetapi ini menyajikan ide yang sangat nyata dari seorang penyerang mendapatkan tangan mereka pada kunci.

Ellis membayangkan bahwa penerima pesan tidak mungkin pihak yang pasif, dan mereka harus memiliki “gembok” dan “kunci” untuk diri mereka sendiri. Gembok itu dapat dikirim ke siapa pun di dunia tetapi kuncinya harus dirahasiakan. Jadi, siapa pun dapat mengirim pesan ke penerima dengan menguncinya dengan gembok mereka dan karena hanya penerima yang memiliki kunci, hanya mereka yang dapat membukanya.

Nah, ini teorinya, perlu ada bentuk praktis dari teori ini, dan itu muncul karena dua prinsip cemerlang:

  • Fungsi pintu jebakan.
  • Pertukaran kunci Diffie – Hellman.

Apa fungsi pintu jebakan?

Fungsi trapdoor alias fungsi satu arah adalah fungsi yang mudah untuk beralih dari satu status alias domain ke status lain alias rentang tetapi sulit untuk kembali dari rentang ke domain kecuali Anda memiliki pengetahuan tentang kunci yang disebut fungsi pintu jebakan.

Secara diagram diwakili seperti ini:

Kredit gambar: Cornell.edu

Fungsi pintu jebakan didasarkan pada ide kunci. Di mana kunci publik (K) digunakan untuk pergi dari domain ke jangkauan. Untuk kembali ke domain dari jangkauan kita harus menggunakan fungsi pintu jebakan yang juga dikenal sebagai kunci pribadi (k). Hal ini juga tersirat bahwa kunci privat dan kunci publik secara matematis terkait satu sama lain dan juga mereka harus berhubungan satu sama lain melalui fungsi pintu jebakan lain f () sedemikian sehingga K = f (k) sehingga kunci privat tidak mungkin untuk dijadikan ditentukan oleh kunci publik.

Contoh sederhananya adalah penggandaan angka besar. Misalkan Anda memiliki dua angka 171 dan 118 maka mudah untuk menentukan bahwa 171 * 118 = 20178. Namun, jika Anda hanya tahu 20178 maka sulit bagi Anda untuk menentukan apa angka awal itu kecuali Anda memiliki kunci dengan Anda, di hal ini pengetahuan hanya satu dari dua angka, untuk menentukan yang kedua.

Apakah pertukaran kunci Diffie-Hellman?

Misalkan, ada dua orang Alice dan Bob dan mereka ingin menyerang bank. Namun, mereka berada di kedua sisi bank dan mereka hanya dapat berkomunikasi satu sama lain melalui jalur bersama yang sedang disadap oleh bank.

Sesuatu seperti ini.

Perlu diingat, semua yang Alice dan Bob katakan satu sama lain akan dikuping oleh bank. Jadi, bagaimana mereka berdua memutuskan tanggal untuk menyerang bank tanpa bank mengetahuinya dan tanpa Alice dan Bob secara eksplisit bertukar informasi itu?

Teka-teki ini dapat dijawab oleh pertukaran kunci Diffie-Hellman; itu adalah konsep dimana dua pihak dapat memperoleh informasi rahasia tanpa membagikannya.

Untuk memahami cara kerja Diffie-Hellman, kita perlu menggunakan salah satu aplikasi paling terkenal dari teori ini, pertukaran warna rahasia.

Untuk ini ada 3 hal yang perlu Anda ingat:

  • Alice dan Bob sama-sama secara terbuka sepakat bahwa kuning akan menjadi cat umum yang akan mereka gunakan.
  • Alice kemudian diam-diam menjaga dirinya sendiri bahwa dia juga akan menggunakan oranye bersama dengan kuning.
  • Diam-diam Bob memutuskan bahwa ia akan menggunakan aqua bersama dengan kuning.

Tahap satu

Karena secara terbuka dinyatakan bahwa kuning akan menjadi warna pilihan:

  • Bank: Memiliki Kuning
  • Alice: Memiliki Kuning
  • Bob: Memiliki Kuning

Tahap Dua

Sekarang Alice bercampur dalam warna pribadinya alias oranye dengan kuning dan mendapat warna komposit yang akan kita sebut CA.

Pada saat yang sama, Bob mencampur aqua warna pribadinya dengan kuning dan menciptakan warna komposit CB.

Jadi, pada akhir tahap dua inilah yang terlihat seperti:

  • Bank: Kuning
  • Alice: CA
  • Bob: CB

Tahap Tiga

Sekarang, Alice dan Bob akan saling mengirim warna masing-masing, yang segera akan disadap oleh bank. Namun, bank kini menghadapi masalah.

Kombinasi warna adalah fungsi pintu jebakan.

Meskipun mudah bagi seseorang untuk menggabungkan dua warna dan menghasilkan warna ketiga, tidak mungkin bagi mereka untuk menentukan dua warna pertama dari warna ketiga yang diberikan. Jadi, bank akan mendapatkan CA dan CB tetapi tidak akan tahu warna apa yang telah dibuat.

Jadi, inilah yang terlihat seperti sekarang:

  • Bank: Kuning, CA, CB.
  • Alice: CB
  • Bob: CA.

Tahap Empat

Sekarang, Alice dan Bob sekali lagi akan mencampur warna rahasia mereka ke dalam campuran yang telah mereka terima dari orang lain, jadi sekarang keduanya akan memiliki campuran kuning, oranye dan aqua yang berwarna coklat. Namun, bank hanya akan memiliki CA dan CB karena mereka tidak tahu apa warna rahasianya.

Jadi, inilah yang terlihat seperti sekarang:

  • Bank: Kuning, CA dan CB.
  • Alice: Brown.
  • Bob: Brown.

Dan di sinilah triknya, dengan tidak mengungkapkan warna rahasia mereka, baik Bob maupun Alice memiliki, warna cokelat, meskipun mereka tidak pernah secara eksplisit bertukar cokelat satu sama lain.

Seperti inilah diagram dari seluruh pertukaran ini:

Ini adalah representasi dari pertukaran Diffie-Hellman, tetapi cara matematika diperlukan untuk memastikan bahwa mungkin ada aplikasi praktis ini juga. Untuk alasan ini, fungsi modulus digunakan.

Bentuk matematika dari pertukaran Diffie-Hellman

Misalkan ada generator g untuk bidang hingga ukuran n. Dan di bidang itu, kami memilih dua nilai acak a dan b. Akan sulit bagi penyerang untuk menentukan g ^ ab hanya diberikan g, g ^ a dan g ^ b. Ini adalah kondisi yang mengaktifkan fungsi pintu jebakan. Dengan kondisi ini, dua pihak dapat bertukar pesan dan mencapai kesimpulan yang sama tanpa secara eksplisit berkomunikasi satu sama lain.

Jadi, secara matematis inilah yang terjadi.

Alice memilih nilai acak “a” dari bidang n dan menentukan pesan M1 sedemikian rupa sehingga:

  • M1 = g ^ a mod n.

Demikian pula, Bob memilih nilai acak “b” dari bidang n dan membuat pesan M2 sedemikian rupa sehingga:

  • M2 = g ^ b mod n.

Baik Alice dan Bob sekarang dapat menyampaikan pesan satu sama lain.

Alice sekarang menentukan pesan khusus K dengan melakukan hal berikut:

  • K = M2 ^ a mod n = g ^ ab mod n.

Bob sekarang menentukan pesan K yang sama dengan:

  • K = M1 ^ a mod n = g ^ ab mod n.

Jadi, baik Alice dan Bob mencapai kesimpulan yang sama tanpa secara eksplisit berbagi informasi ini.

Pertukaran kunci Diffie-Hellman ini sangat berharga dalam pembentukan kriptografi asimetris:

Apa itu kriptografi asimetris?

Kriptografi asimetris menggunakan dua kunci, kunci publik dan pribadi untuk mengenkripsi dan mendekripsi data tertentu. Penggunaan satu kunci membatalkan penggunaan yang lain.

Representasi diagram itu terlihat seperti ini:

Kesopanan gambar: SSL2BUY

Ada dua dunia nyata penggunaan kriptografi asimetris yang akan kita bahas dalam panduan ini dan keduanya penting karena alasan mereka sendiri:

  • Algoritma Rivest-Shamir-Adleman alias RSA.
  • Kriptografi Kurva Elliptical.

Apa itu algoritma RSA?

Algoritma RSA adalah algoritma kriptografi asimetris yang paling banyak digunakan dan populer dalam sejarah. Ini dinamai profesor MIT Rivest, Shamir dan Adleman yang menemukan algoritma ini. Sekarang, bagaimana cara kerjanya? Ide ini berasal dari terobosan yang dimiliki Diffie-Hellman.

Jadi, ini adalah variabel yang akan kami kerjakan:

Misalkan Anda memiliki pesan rahasia “m”. “M” dinaikkan ke kekuatan angka acak e dan kemudian modulus itu dengan angka acak N akan memberi Anda teks sandi c.

Pada dasarnya m ^ e mod N = c

Catat, itu MUDAH untuk melakukan fungsi ini untuk mendapatkan output c TAPI diberikan hanya c, e dan N sulit untuk mendapatkan pesan “m”. Ini akan membutuhkan banyak trial and error. Ini adalah fungsi pintu jebakan satu arah yang akan kami terapkan untuk menemukan “m”.

Namun sekarang, ide fungsi trapdoor adalah memiliki kunci yang akan membuat proses pembalikan (dekripsi) menjadi mudah bagi penerima. Jadi, untuk itu kita perlu mencari variabel acak “d” yang akan memungkinkan proses ini:

  • c ^ d mod N = m.

Sekarang perlu diingat, c = m ^ e mod N, jadi ganti.

  • m ^ e ^ d mod N = m.

ATAU

  • m ^ ed mod N = m

Jadi, dalam persamaan di atas:

  • Kunci publik = e dan N.
  • Kunci pribadi = d.

Sekarang, bahkan sebelum kita mulai melihat metode di balik kegilaan ini, mari kita lakukan perhitungan sederhana untuk melihat bagaimana seluruh proses bekerja. (Berteriaklah ke saluran youtube Anthony Vance untuk contoh ini).

Misalkan pesan yang harus Anda kirim adalah 42. Dengan kata lain, m = 42.

Bersamaan dengan itu:

  • e = 17.
  • N = 3233.
  • d = 2753

Proses enkripsi

c = m ^ e mod N.

Menggunakan substitusi sederhana:

c = 42 ^ 17 mod 3233 = 2557.

Jadi teks sandi adalah 2557.

Proses dekripsi

Mari kita lakukan c ^ d mod N.

2557 ^ 2753 mod 3233

Ini memberi kita nilai m yaitu 42.

Jenius bukan?

Sekarang, ingat ketika kita berbicara tentang fungsi pintu jebakan, kita sampai pada kesimpulan bahwa kunci privat dan publik harus merupakan turunan matematis satu sama lain dengan cara:

F (kunci pribadi) = kunci publik, di mana F () adalah fungsi pintu jebakan lain.

Seharusnya sulit bagi siapa pun untuk menentukan kunci privat dari kunci publik. Kenyataannya, seharusnya sangat sulit sehingga dibutuhkan dekade komputer paling kuat di dunia selama beberapa dekade untuk mengambil satu dari yang lain.

Untuk menjawab teka-teki ini, kita kembali berabad-abad dan bertemu dengan jenius kita berikutnya, Euclid.

Faktorisasi Euclid dan prima

Euclid menemukan berabad-abad yang lalu bahwa angka berapa pun> 1 dapat ditulis sebagai produk bilangan prima.

  • Misalnya. 15 dapat ditulis sebagai 5 * 3.
  • 255 dapat ditulis sebagai 5 * 17 * 3.

Mari kita kembali ke dua persamaan kita:

C = m ^ e mod N.

Di sini, N adalah kunci dalam fungsi pintu jebakan. Sementara N mungkin diketahui secara publik, sulit untuk menentukan faktor prima yang membentuk angka N. Jika Anda tahu faktor prima, maka adalah permainan anak-anak untuk menemukan produk N.

Misalnya. Anda dapat menggunakan browser web Anda untuk melipatgandakan dua angka besar dan menemukan produk dalam waktu kurang dari satu detik:

Butuh kurang dari satu detik, 0,22 detik, untuk melakukan perhitungan. Dan semakin besar angkanya, akan memakan waktu lebih sedikit, tetapi tetap saja, perhitungan akan dilakukan dengan sangat cepat.

Namun, jika Anda memasukkan sejumlah besar dan meminta komputer Anda untuk menemukan faktor prima maka mungkin perlu berhari-hari, berbulan-bulan, bahkan bertahun-tahun untuk menemukan faktor prima.

Ini adalah fungsi pintu jebakan yang digunakan cryptographers untuk menentukan nilai N. Ini pada dasarnya adalah jantung dari trik.

Inilah yang harus Anda lakukan untuk menggunakan algoritma RSA:

  • Pertama, buat bilangan prima acak besar P1.
  • Hasilkan bilangan prima acak besar kedua P2.
  • Temukan N dengan menghitung P1 dan P2.
  • Sembunyikan nilai P1 dan P2 dan buat N publik.
  • N harus menjadi jumlah yang besar dan akan membutuhkan mesin paling canggih dalam dekade dunia untuk menemukan nilai-nilai P1 dan P2.
  • Jadi untuk meringkas, N adalah pintu jebakan dan faktor utamanya P1 dan P2 adalah kunci untuk pintu jebakan.

Ok, jadi sekarang kita telah menentukan bagaimana N dihitung dan pintu jebakan yang bekerja di dalamnya. Tetapi kami masih belum menentukan nilai “e” dan “d” dan kami masih belum melihat bagaimana kunci privat diturunkan dari kunci publik. Untuk menghasilkan semua nilai yang tersisa ini, kita perlu menemukan fungsi yang tergantung pada mengetahui faktorisasi N. Dan untuk itu kita perlu pergi dan mengunjungi jenius berikutnya, Leonhard Euler.

Euler dan mudah pecah

Pada 1760, matematikawan Swiss Leonhard Euler melakukan beberapa studi path breaking. Dia mempelajari sifat angka-angka dan lebih khusus lagi kemampuan pemecahan angka-angka yang dia sebut fungsi phi.

Pada dasarnya diberikan phi (N) di mana N adalah bilangan bulat acak, nilai N akan menjadi jumlah angka antara 1 dan N yang tidak berbagi faktor umum dengan N.

Jadi, jika N adalah 8 maka:

Angka antara 1-8 adalah: 1,2,3,4,5,6,7 dan 8.

Di antara angka-angka ini, hanya 1,3,5 dan 7 tidak berbagi faktor dengan 8 kecuali 1.

Artinya, phi (8) = 4.

Sekarang, menghitung fungsi phi sulit kecuali untuk satu kasus. Untuk mengetahuinya, lihat grafik berikut. Grafik melacak distribusi nilai phi melalui bilangan bulat hingga 1000.

Lihat garis hijau lurus di atas yang diatur dengan mudah? Itu adalah phi bilangan prima. Karena definisi bilangan prima adalah bilangan prima tidak dapat dipisahkan dari dirinya sendiri, untuk bilangan prima p p phi (p) = p-1.

Mari kita lihat ini dalam praktik. Misalkan Anda memiliki bilangan prima 7.

Angka-angka antara 1 dan 7 adalah: 1,2,3,4,5,6,7.

Satu-satunya angka yang berbagi faktor dengan 7 dalam seri ini adalah … 7!

Jadi phi (7) = 6.

Demikian pula, jika Anda menemukan phi dari bilangan prima besar katakan 541 maka:

Phi (541) = 541-1 = 540.

Menjadi sangat sederhana untuk menghitung phi untuk bilangan prima. Dan ini mendapatkan, bahkan lebih penting, ketika Anda mempertimbangkan sifat multiplikasi fungsi phi. Apa sifat multiplikasi dari fungsi phi?

Untuk dua angka A dan B:

Phi (A * B) = phi (A) * phi (B).

Sekarang, mari kita kembali ke algoritma. Alice telah menentukan dua bilangan prima besar P1 dan P2 dan telah menentukan angka N dengan melakukan P1 * P2.

Jadi, menggunakan properti multiplikatif dari fungsi phi:

Phi (N) = phi (P1) * phi (P2).

ATAU

Phi (N) = (P1-1) * (P2-1).

Dan seperti itu, kami telah menemukan fungsi pintu jebakan untuk phi. Jika kita mengetahui faktor utama N maka mudah untuk menghitung phi (N).

Untuk misalnya. angka 77 memiliki faktor prima 7 dan 11.

Jadi phi (77) = (7-1) * (11-1) = 60.

Menjadi sangat mudah ketika Anda mengetahui faktor utama N.

Sekarang, satu bit terakhir dari matematika diperlukan. Kami memiliki fungsi phi dan kami memiliki fungsi eksponensial modular yang telah kami tentukan sebelumnya, kami perlu menggabungkan keduanya dalam satu persamaan yang rapi.

Dan untuk ini, kita kembali ke Euler untuk meminta bantuan.

Teorema Euler

Teorema Euler menyatakan bahwa:

Untuk dua angka m dan n yang tidak berbagi faktor:

m ^ phi (n) ≡ 1 mod n

Berarti, untuk dua angka m dan n, selama mereka tidak berbagi faktor, m dinaikkan ke phi (n) dibagi n akan selalu meninggalkan sisa 1. Mari kita lihat ini dalam contoh.

Misalkan, m = 8 dan n = 5.

Phi (5) = 4

Jadi, 8 ^ 4 = 4096.

Mengganti ini dalam persamaan teorema Euler:

4096 ≡ 1 mod 5 berlaku karena 4096 saat dibagi 5 meninggalkan sisa 1.

Sekarang, persamaan: m ^ phi (n) ≡ 1 mod n perlu dimodifikasi sedikit sebelum kita mendapatkan solusi akhir kita.

Modifikasi # 1

1 ^ k = 1 untuk semua k.

Jadi, dengan mengingat hal ini, jika dalam m ^ phi (n) ≡ 1 mod n kita mengalikan ph eksponen (n) dengan angka k, solusi akhir akan menjadi 1 ^ k yang masih 1.

Sekarang, ini memodifikasi persamaan seperti ini:

m ^ k * phi (n) ≡ 1 mod n

Modifikasi # 2

Untuk semua m, m * 1 = m.

Jadi, dalam persamaan yang dimodifikasi, jika kita mengalikan kedua sisi dengan m kita mendapatkan:

m * m ^ k * phi (n) ≡ m * 1 mod n

Yang menjadi:

m ^ k * phi (n) +1 ≡ m mod n

Sekarang, ini adalah bentuk terakhir dari persamaan kami.

Sebelum kita melanjutkan, mari kita bawa kembali persamaan lama untuk menyegarkan ingatan kita:

  • c = m ^ e mod N.
  • m = c ^ d mod N
  • m ^ e * d mod N = m

Sekarang, checkout persamaan terakhir tidak sama dengan persamaan modifikasi baru kami:

m ^ k * phi (n) +1 ≡ m mod n

Dan ini adalah terobosan.

Dengan membandingkan dua persamaan, kita mendapatkan:

e * d = k * phi (n) + 1

Kami AKHIRNYA memiliki persamaan di mana nilai e dan d tergantung pada phi (n).

Sekarang, karena kita sudah tahu nilai e, mudah untuk menghitung d, kunci privat, HANYA jika faktorisasi N diketahui (yang merupakan rahasia yang disimpan Alice untuk dirinya sendiri).

Jadi, d = (k * phi (n) + 1) / e.

Ini adalah pintu jebakan yang akan membatalkan enkripsi yang dilakukan oleh kunci pribadinya e dan n.

Contoh untuk melihat bagaimana semua ini bekerja

Misalkan Bob dan Alice bertukar pesan.

Bob ingin mengirim pesan M ke Alice di mana M = 89.

Sekarang, Alice perlu membuat kuncinya.

Dia gunakan untuk bilangan prima p1 dan p2 di mana:

P1 = 53.

P2 = 59.

N = P1 * P2 = 53 * 59 = 3127.

Phi (N) = Phi (P1) * Phi (P2) = (P1 – 1) * (P2 – 1) = 52 * 58 = 3016

Sekarang, dia perlu menghasilkan nilai e yang tidak memiliki faktor dengan nilai phi (N).

Jadi, dia memutuskan e = 3.

Sekarang, dia akan membuat kunci privatnya d:

d = (k * phi (N) + 1) / e

Mengambil k = 2 kita dapatkan:

d = (2 * 3016 +1) / 3 = 2011.

Sekarang, dia akan mengunci semua nilai kecuali N dan e yang merupakan kunci publiknya dan menjadikan pengetahuan keduanya bersifat global.

Bob mengenkripsi pesannya

Sekarang, Bob perlu mengirim pesan M, yaitu 89, dan ia perlu menghitung teks sandi c sehingga:

c = M ^ e mod N.

Sekarang, kita tahu bahwa: M = 89, e = 3 dan N = 3127.

Jadi: c = 89 ^ 3 mod 3127 = 1394.

Dia kemudian mengirimkannya ke Alice.

Alice mendekripsi pesannya

Alice mendapatkan teks sandi dan yang harus dia lakukan adalah mendekripsi menggunakan kunci privatnya dan yang kita tahu adalah tahun 2011.

Jadi, Alice melakukan perhitungan ini: c ^ d mod N

1394 ^ 2011 mod 3127 yang merupakan 89 alias pesan asli M.

Dan ini, adalah algoritma RSA, algoritma kriptografi yang paling banyak digunakan

Apa itu kriptografi kurva elips?

Kriptografi kurva elips adalah apa yang digunakan oleh bitcoin, ethereum dll untuk keperluan enkripsi mereka. Jadi apa itu kurva elips? Kurva elips adalah setiap kurva yang memenuhi persamaan berikut:

Y ^ 2 = x ^ 3 + kapak + b

Di mana (x, y) adalah titik pada kurva dan a dan b adalah konstanta.

Ada kurva tak terbatas yang bisa Anda buat. Berikut ini adalah bagaimana salah satu dari kurva ini, secara umum, terlihat seperti:

Apa saja sifat-sifat kurva elips?

  • Kurva simetris melintasi sumbu x.
  • Setiap garis yang melewati 2 titik pada kurva akan memotong kurva pada titik ketiga.
  • Setiap garis singgung pada kurva akan memotong kurva pada satu titik lagi.

Pertunjukan matematika di kurva.

Penambahan properti kurva

Misalkan ada dua titik pada kurva V dan A. Mari kita lacak mereka pada kurva dan letakkan garis melaluinya. Ini akan memotong kurva pada titik ketiga.


Kami akan menyebut titik X ketiga ini, dan kami akan merefleksikannya pada kurva seperti ini:

Refleksi X adalah titik yang kebetulan (V + A). Ini adalah properti aditif dari kurva elips.

Catatan menarik. Jika kita menambahkan dua refleksi satu sama lain alias jika kita menambahkan X dan V + A pada grafik di atas, kita akan mendapatkan infinity. Alasan untuk itu adalah bahwa garis melalui X dan (V + A) akan memotong kurva pada tak terhingga.

Properti perkalian kurva

Sekarang, bagaimana jika kita ingin menambahkan nomor ke dirinya sendiri? Seperti misalkan kita memiliki poin V, apa yang kita lakukan untuk menemukan 2V? Kita akan menjalankan garis singgung melalui V dan memotongnya pada suatu titik dalam grafik dan kemudian menemukan pantulan titik pada kurva. Refleksi itu akan menjadi 2V.

Ini juga merupakan properti multiplikatif dari grafik karena kami menemukan titik yang pada dasarnya adalah perkalian bilangan bulat dengan titik itu sendiri. Sekarang anggaplah kita ingin menemukan 3V. Kami akan bergabung dengan V dan 2V dan kemudian mencerminkan titik persimpangan, seperti ini:

Anda melihat bagaimana titik-titik siklus melintasi grafik? Inilah yang memberinya keamanan.

Sifat matematika dari kurva elips

Properti # 1: Poin pada kurva membentuk grup Abelian

Properti grup Abelian adalah sebagai berikut:

  • Mereka memiliki identitas.
  • Yang memiliki inverses alias refleksi.
  • Poinnya adalah makna asosiatif untuk tiga titik A, B dan C pada kurva: (A + B) + C = A + (B + C).
  • Poin ditutup pada kurva.
  • Poin-poin tersebut adalah makna komutatif untuk dua poin A dan B. A + B = B + A.

Properti # 2: Perkalian pada kurva cepat

Semua perkalian yang dilakukan pada kurva dapat dilakukan dengan sangat cepat. Sekarang anggaplah kita memiliki titik P dan kami ingin menemukan 100P. Alih-alih menambahkan nomor itu sendiri 100 kali kita dapat melakukan hal berikut:

  • Tambahkan titik P ke dirinya sendiri untuk mendapatkan 2P.
  • Tambahkan 2P dan P untuk mendapatkan 3P.
  • Tambahkan 3P ke dirinya sendiri untuk mendapatkan 6P.
  • Tambahkan 6P ke dirinya sendiri untuk mendapatkan 12P.
  • Tambahkan 12P ke dirinya sendiri untuk mendapatkan 24P.
  • Tambahkan 24P dan P untuk mendapatkan 25P.
  • Tambahkan 25P ke dirinya sendiri untuk mendapatkan 50P.
  • Tambahkan 50P ke dirinya sendiri untuk mendapatkan 100P.

Jadi, alih-alih melalui 99 langkah, Anda memotong semuanya menjadi hanya 8 langkah.

Properti # 3: Pembagian pada kurva lambat

Sementara perkalian cepat, pembagiannya sangat lambat. Misalkan kita memiliki Q = nP dan kami ingin menemukan nilai n dengan membagi Q dengan P. Kami tidak dapat melakukan itu. Kita harus secara manual melalui angka satu per satu untuk menemukan nilai yang memenuhi persamaan. Ini membuatnya sangat lambat. Ini disebut masalah logaritmik diskrit dan inilah yang memberi kurva fungsi jebakannya yaitu mudah untuk mengalikan n dan P untuk mendapatkan Q tetapi diberi Q dan P tidak mungkin untuk mendapatkan n.

Kurva elips pertukaran kunci Diffie-Hellman

Jadi, sampai sekarang kita telah melihat berbagai properti kurva dan kita juga telah melihat bahwa kurva memiliki fungsi pintu jebakan. Sekarang bagaimana kita menentukan apakah itu dapat digunakan untuk kriptografi atau tidak? Mari kita mengujinya dengan pertukaran kunci Diffie-Hellman. Misalkan kita memiliki Alice dan Bob dan mereka ingin memiliki rahasia bersama tanpa ada yang tahu apa itu dan tanpa secara eksplisit bertukar informasi satu sama lain. Bagaimana mereka melakukan itu melalui kurva elips?

  • Pertama, mereka secara terbuka akan menyetujui kurva untuk digunakan dan titik P pada kurva. Ini akan menjadi pengetahuan umum dan tersedia untuk semua orang.
  • Namun secara rahasia, Alice akan memilih titik rahasia “a” dan Bob akan memilih titik rahasia “b”.
  • Alice akan menghitung “aP” dan mengirimkannya ke Bob. Namun, siapa pun dapat mencegat pesan ini, bahkan dengan sepengetahuan P, mereka tidak akan pernah dapat menentukan nilai “a” karena, seperti yang telah kami tentukan, ada fungsi pintu jebakan yang akan membuat pembagian menjadi tidak layak.
  • Demikian pula, Bob akan datang dengan nilai “bP” dan mengirimkannya ke Alice.
  • Alice kemudian akan melipatgandakan kunci rahasianya ke pesan yang ia dapat dari Bob untuk mendapatkan (bP). Bob akan melakukan hal yang sama dan menghasilkan b (aP). Karena semua titik pada kurva adalah Abelian: a (bP) = b (aP). Dan seperti itu, mereka menemukan sebuah informasi rahasia yang dibagikan.

Jadi seperti yang bisa kita lihat. Kurva memenuhi pertukaran kunci Diffie-Hellman.

Jadi bagaimana cara kerja verifikasi tanda tangan pada kurva elips?

(Catatan: Inilah yang secara khusus terjadi dalam bitcoin)

Sebelum kita melihat bagaimana prosesnya bekerja, mari kita periksa variabel-variabel tertentu dan artinya bahwa kita akan menggunakan persamaan berikut.

  • Kunci pribadi = d.
  • Pesan = z.
  • Kunci publik = Q.

G akan menjadi titik konstan pada grafik yang akan disediakan oleh bitcoin.

  • “K” adalah angka acak yang akan dihasilkan secara otomatis untuk setiap tanda tangan unik.
  • “N” adalah konstanta lain yang akan disediakan oleh Bitcoin.

Oke, jadi sekarang mari kita lihat bagaimana matematika di belakang verifikasi bekerja.

Menandatangani pesan

Kunci publik Q = dG. (Tidak mungkin mendapatkan kunci pribadi dari Q dan G karena pembagian tidak layak).

Sekarang kita akan mengalikan G dengan angka acak “k” dan plot titik itu pada grafik. Koordinat titik tersebut adalah (x, y). yaitu (x, y) = kG

Selanjutnya, kami menentukan dua nilai r dan s sehingga:

r = x mod n.

s = (z + rd) k ^ -1 mod n

Alasan mengapa kita menghasilkan r dan s adalah karena ini adalah koordinat dari tanda tangan kita.

Jadi, kami mengirim poin untuk verifikasi.

Memverifikasi pesan

Penguji akan melakukan persamaan sederhana:

z * s ^ -1 * G + r * s ^ -1 * Q

Nilai dari persamaan ini akan memberi kita titik (x, y).

Sekarang, verifier hanya dapat membandingkan koordinat x. Mereka tidak memiliki koordinat x yang diberikan langsung kepada mereka dari pengirim, tetapi mereka memiliki nilai r dan n.

Dan seperti yang kita sudah tahu bahwa r = x mod n, dan kemudian mereka bisa menyelesaikannya untuk x.

Jika nilai x cocok, maka ini berarti tanda tangan diverifikasi!


Bonus: Melihat lebih dalam matematika

Mari kita periksa persamaan yang harus dilakukan verifier sekali lagi:

  • Langkah 1: z * s ^ -1 * G + r * s ^ -1 * Q

Kita tahu bahwa Q = d * G, mari kita gantikan nilainya.

  • Langkah 2: z * s ^ -1 * g + r * s ^ -1 * d * G

Kita dapat mengambil (z + r * d) yang umum

  • Langkah 3: (z + r * d) * s ^ -1 * G

Sekarang ingat, kita telah menetapkan bahwa s = (z + r * d) * k ^ -1 mod n, mari kita gantikan nilainya di sini:

  • Langkah 4: (z + r * d) * (z + r * d) ^ – 1 * k * G

The (z + r * d) * (z + r * d) ^ – 1 saling membatalkan dan kita dibiarkan dengan:

  • Langkah 5: k * G yang merupakan koordinat (x, y) yang awalnya dikirim pengirim.

Apa yang bisa salah dalam kurva elips?

Meskipun tak perlu dikatakan bahwa kurva elips adalah mode kriptografi terbaik di luar sana, faktanya tetap bahwa ia memiliki beberapa kerentanan:

  • Bagaimana jika kurva yang salah dipilih? Jika kurva memiliki loop di dalamnya maka ada kemungkinan bahwa 1001P = P untuk setiap titik P pada kurva.
  • Kurva yang lemah mungkin dipilih yang dapat dipecah menjadi.

Ini memiliki kelemahannya tetapi itu adalah kelemahan yang cukup mudah dikelola.

RSA vs EEC. Mengapa bitcoin dan ethereum memiliki kurva elips?

Alasan mengapa EEC dipilih daripada RSA adalah karena ia menawarkan tingkat keamanan yang sama dengan RSA dengan mengkonsumsi bit yang jauh lebih sedikit. Misalnya. untuk kunci 256-bit dalam EEC untuk menawarkan tingkat keamanan yang sama RSA harus menyediakan kunci 3072-bit. Demikian pula, untuk kunci 384-bit dalam EEC, RSA harus menyediakan kunci 7680-bit untuk memberikan tingkat keamanan yang sama! Seperti yang dapat dilihat, EEC jauh lebih efisien daripada RSA.

Fakta Menarik: NSA telah menyatakan bahwa kunci 384-bit dalam EEC cukup kuat dan aman untuk mengenkripsi dokumen rahasia tingkat atas.

Bagaimana cara kerjanya di blockchain?

Seperti disebutkan di atas, bitcoin dan ethereum menggunakan kriptografi kurva elips. Jadi, apa yang terjadi ketika seseorang mengirimi Anda uang di blockchain? Mereka mengirim Anda uang ke alamat publik Anda yang pada dasarnya adalah hash kunci publik Anda dan beberapa informasi tambahan. Seperti yang telah kita lihat di atas, kunci publik diturunkan secara matematis dari kunci pribadi Anda.

Kunci publik dan pribadi keduanya nilai integer besar dan mereka diwakili, demi singkatnya, melalui Format Impor Dompet (WIF) yang terdiri dari huruf dan angka. Contoh kunci pribadi dan alamat publik terlihat seperti ini di WIF:

Jelas, Anda tidak boleh membagikan kunci pribadi Anda dengan dunia seperti yang baru saja kami lakukan! Kunci pribadi digunakan untuk keluar dari transaksi yang ingin dilakukan pengguna. Jadi, jika seseorang memiliki akses ke kunci pribadi Anda, mereka dapat menandatangani transaksi menggunakan kunci pribadi Anda dan, pada dasarnya, mencuri dari Anda. Juga, seperti yang Anda lihat, kunci pribadi lebih panjang dari alamat publik.

Jadi, bagaimana kunci publik berasal dari kunci pribadi di blockchain? Mari kita ambil contoh bitcoin untuk contoh khusus ini.

Misalkan, Alice ingin membuat kunci-kuncinya sehingga ia dapat melakukan transaksi pada blockchain. Inilah yang akan dia lakukan:

  • Pertama, dia akan menghasilkan kunci privat 256-bitnya. Dia bisa melakukannya secara manual ATAU dia akan menggunakan generator otomatis. Ini adalah contoh generator alamat pribadi yang dapat Anda temukan di wallet-generator.net:
  • Selanjutnya, ia harus membuat alamat publik yang mana algoritma di dalam dompet itu akan lakukan secara otomatis dengan mengikuti langkah-langkah ini.
  • Pertama, kunci pribadinya akan diuraikan melalui algoritma hashing SHA 256 untuk mendapatkan hash.
  • Kemudian hash akan diuraikan melalui fungsi RIPE MD 160 dan hash baru akan dihasilkan dan salinannya akan disimpan di samping, mari kita sebut BAGIAN A.
  • Kemudian hash akan di-hash melalui SHA 256 untuk menghasilkan hash lainnya.
  • Kemudian hash baru akan di-hash melalui SHA 256 lagi untuk menghasilkan hash lain. 7 bit pertama hash ini akan disimpan, sebut saja BAGIAN B.
  • BAGIAN A dan BAGIAN B akan ditambahkan dan hasilnya adalah alamat publik.

Tidak mungkin proses ini dibalik sedemikian rupa sehingga alamat publik dapat digunakan untuk menghasilkan kunci privat. Diperlukan komputer paling kuat di dunia 40000000000000000000000000000000000 tahun untuk menyelesaikan perhitungan ini! Aman untuk mengatakan alamat dan kunci Anda aman.

Jadi, bagaimana proses penandatanganan bekerja (gambaran sederhana)?

Misalkan Alice ingin mengirim 500 BTC ke Bob. Dia akan mengikuti langkah-langkah berikut:

  • Dia akan membuat transaksi dan menandatanganinya dengan kunci pribadinya.
  • Dia akan mengirim transaksi ke alamat publik Bob.
  • Bob kemudian dapat mendekripsi pesan dengan menggunakan kunci publik Alice untuk memverifikasi bahwa memang Alice yang mengirimnya bitcoin dan transaksi dianggap selesai.

Jika ini ditampilkan dalam gambar, akan terlihat seperti ini:

Cryptocurrency Kriptografi: Kesimpulan

Jadi, seperti yang bisa dilihat, kriptografi kunci publik alias kriptografi asimetris adalah salah satu tulang punggung cryptocurrency. Tidak mungkin bahkan membayangkan bagaimana bitcoin dan ethereum akan aman tanpa itu. Setiap kali Anda melakukan transaksi, bersyukurlah kepada semua ahli matematika dan kriptografer yang telah membuat media luar biasa ini menjadi mungkin.


Bagikan artikel...