BAB II TINJAUAN PUSTAKA 2.1 Kriptografi - Implementasi Zero Knowledge Proof Dengan Protokol Feige Fiat Shamir Dan quadratic Linear Congruential Generator

BAB II TINJAUAN PUSTAKA

2.1 Kriptografi

  Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari gabungan dua kata dalam bahasa Yunani yaitu “kriptos” dan “graphia”. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya.

  Selain definisi di atas, Schneier (1996) mengemukakan pendapatnya tentang definisi kriptografi yaitu:ilmu dan seni untuk menjaga keamanan pesan. Penggunaan kata “seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda- beda pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi berkembang menjadi sebuah seni merahasiakan pesan (kata “graphy” di dalam “cryptography” itu sendiri sudah menyiratkan sebuah seni, (Mollin, 2006)). jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

  Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi (Menezes. et al,1996) (Scheiner. B., 1996), yaitu:

  1. Kerahasiaan (Confidentiality), adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun, kecuali yang memiliki kunci rahasia atau otoritas untuk membuka informasi yang telah disandikan.

  2. Integritas Data (Message Integrity), berhubungan dengan penjagaan (perlindungan data) dari upaya-upaya pengubahan data secara tidak sah. Untuk dapat menjaga integritas data, suatu sistem harus memiliki kemampuan untuk mendeteksi pemanipulasian data yang dilakukan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pendistribusian data lain ke dalam data yang asli.

  3. Autentifikasi (Authentication), berhubungan dengan identifikasi, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomuniasi harus saling memperkenalkan diri. Informasi yang dikirimkan harus diautentikasi keasliannya, isi datanya, waktu pengirimannya dan lain sebagainya.

  4. Nirpenyangkalan (Non-repudiation), merupakan usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat, juga sebaliknya.

2.1.1 Konsep Dasar Kriptografi

  Pada kriptografi akan ditemukan beberapa istilah-istilah yang penting untuk diketahui dalam memahami ilmu kriptografi. Istilah-istilah dan konsep dasar kriptografi tersebut akan dijelaskan sebagai berikut.

  a. Enkripsi dan Dekripsi Secara garis besar, prosoes enkripsi adalah proses pengacakan untuk dibaca” oleh seseorang yang tidak mempunyai kunci dekripsi, artinya probabilitas mendapat kembali naskah asli oleh seseorang yang tidak mempunyai kunci dekripsi dalam waktu yang tidak terlaluu lama adalah sangat kecil. Jadi suatu proses enkripsi yang baik menghasilkan naskah acak yang memerlukan waktu yang lama untuk di dekripsi oleh seseorang (Sentot Kromodimoeljo, 2000).

  Sedangkan dekripsi merupakan algoritma atau cara yang dapat digunakan untuk membaca informasi yang telah dienkripsi untuk dapat dibaca kembali (Kurniawan. Y., 2004).

  Secara umum kriptografi mengatasi masalah keamanan data dengan menggunakan kunci, yang dalam hal ini algoritma tidak dirahasiakan lagi, tetapi kunci harus tetap dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan

  deciphering . Kunci biasanya berupa string atau deretan bilangan. Skema

  enkripsi dan dekripsi dengan menggunakan kunci diperlihatkan pada

gambar 2.1 dibawah ini :

  Kunci Kunci

  Plaintext Plaintext Enkrips

  Dekripsi

Gambar 2.1 Skema enkripsi dan dekripsi

b. Plaintext dan Ciphertext

  Pesan merupakan data atau informasi yang dapat dimengerti maknanya, nama lain dari pesan adalah plaintext. Pesan dapat berupa teks, video, gambar dan lain-lain. Ketika pesan ingin dijaga kerahasiaannya maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami oleh orang lain. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan ciphertext. Perbandingan antara plaintext dan ciphertext dapat dilihat pada gambar 2.3a dan 2.3b.

  (a) Plaintext (b) ciphertext

Gambar 2.2 perbandingan plaintext dan ciphertext Kriptanalisis dan kriptologi

  c.

  Tugas utama kriptografi adalah untuk menjaga agar baik plaintext maupun kunci ataupun keduanya tetap terjaga kerahasiannya. Berbeda dengan kriptanalisis (Cryptanalysis) yang merupakan suatau ilmu dan seni untuk memecahkan chipertext menjadi plaintext tanpa memerlukan kunci yang digunakannya. Jika seorang kriptografer mentranformasikan plaintext ke dalam ciphertext dengan menggunakan kunci, maka sebaliknya seorang kriptanalis berusaha memecahkan ciphertext tersebut untuk menemukan

  plaintext atau kunci. Sedangkan studi mengenai kriptografi dan kriptanalis

  tersebut disebut dengan kriptologi (cryptlogy). hubungan antara kriptologi, kriptografi dan kriptanalisis dapat dilihat pada Gambar 2.3.

  Kriptologi Kriptografi kriptanalisis

Gambar 2.3 Hubungan Kriptologi, kriptanalisi, dan kriptografi

2.1.2 Jenis Kriptografi

  Terdapat dua jenis algoritma kriptografi berdasarkan jenis kuncinya, yaitu: a. Algoritma Simetri

  Algoritma simetri disebut juga sebagai algoritma konvensional adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Disebut konvensional karena algoritma yang biasa digunkan orang sejak berabad-abad yang lalu adalah jenis algoritma ini. Algoritma simetri ssering juga disebut sebagai algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka dapat berkomunikasi dengan aman. Keamanan algoritma simetri tergantung pada kunci, agar komunikasi tetap aman, maka kunci harus tetap dirahasiakan.

  Algoritma simetri dapat dibagi dalam dua kategori, jenis pertama beroperasi pada plaintext yang berupa satu bit tunggal pada satu waktu, yang disebut dengan stream algorithms (algoritma aliran atau stream

  

ciphers ). Jenis kedua beroperasi pada plaintext dalam grup bit-bit, grup bit-

  bit ini blok yang disebut sebagai algoritma blok atau kode rahasia blok (block cipher).

  Proses dari skema kriptografi simetri dapat dilihat pada Gambar2.4

  Kunci Privat, K Plaintext, P Ciphertext, C Plaintext, P

  Enkripsi Dekripsi E K (P)=C D K (C)=P

Gambar 2.4 Kriptografi Simetri

  b. Algoritma Asimetri Algoritma asimetrik (juga disebut algoritma kunci publik) didesain sedemikian sehingga kunci yang digunakan untuk enkripsi berbeda dari kunci yang digunakan untuk dekripsi. Kunci dekripsi tidak dapat (sedikitnya dalam waktu yang diterima) dihitung dari kunci enkripsi.

  Algoritma asimetri disebut algoritma kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh mengetahuinya. Setiap orang dapat menggunakan kunci enkripsi tersebut untuk mengenkripsi pesan, namun hanya orang tertentu (pemilik rahasia) yang dapat melakukan dekripsi terhadap pesan tersebut. Dalam sistem ini kunci enkripsi deisebut dengan kunci publik, sedangkan kunci dekripsi disebut dengan kunci privat.

  Proses dari skema kriptografi asimetri dapat dilihat pada Gambar 2.5.

  Enkripsi E K1 (P)=C Dekripsi D K2

  (C)=P Kunci Publik, K

1 Kunci Privat, K

2 Palintext, P Ciphertext, C Plaintext, P

Gambar 2.5 Skema kriptografi kunci asimetri

2.1.3 Protokol Kriptografi

  Protokol adalah aturan yang berisi rangkaian langkah-langkah, yang melibatkan dua atau lebih orang, yang dibuat untuk menyelesaikan suatu kegiatan. Protokol digunakan untuk mengabtraksikan proses penyelesaian suatu tugas dari mekanisme yang digunakan.

  Protokol kriptografi adalah protokol yang menggunakan kriptografi dengan melibatkan sejumlah algoritma kriptografi. Protokol kriptografi memiliki urutan dari awal hingga akhir, setiap langkah harus dilakukan secara berurutan, dan langkh tidak dapat dikerjakan bila langkah sebelumnya belum selesai.

  Beberapa jenis protokol kriptografi antara lain:

  a. Abritated protocol Arbiter adalah pihak ketiga yang dipercaya yang melengkapi

  transaksi antara dua pihak atau lebih. Contohnya yaitu penjualan mobil dengan menggunakan jasa makelar, transaksi yang menggunakan kartu kredit, dan lain-lain. Pada protocol di dalam computerarbiter adalah pihak ketiga yang menjamin tidak ada kecurangan yang dilakukan ke dua belah pihak. Arbiter biasanya adalah program atau mesin yang yang mengirim kembali pesan dari atu user ke user lain dalam jaringan computer.Arbiter selalu berpartisipasi dalam setiap transaksi.

  Ada beberapa kelemahan menggunakan protocol jenis arbiter. Sangat sulit menemukan seorang atau pihak arbiteryang dapat dipercaya, mampu menjamin tidak terjadi kecurangan, dan mampu menyimpan kerahasiaan data-data yang perlu disembunyikan. Selain itu harus ada biaya tambahan untuk membayar arbiter. Karena menggunakan prosedur dan pihak tambahan dalam komunikasi, maka waktu dalam melakukan transaksi maupun komunikasi akan semakin lama. Delainya pun akan bertambah besar. Bila banyak transaksi yang dilakukan dalam waktu yang hamper bersamaan, maka akan terjadi kemacetan yang dalam bahasa kerennya disebut bottleneck atau leher botol. Kerahasiaannya pun tergantung pada seberapa besar pihak ketiga mampu menjaga kerahasiaan data-data penting.

   Adjudicated protocol b.

  Protokol ini berbeda dengan protocol yang sebelumnya. Untuk protocol ini, menggunakan pihak ketiga yang hanya bertindak sebagai juri bila terjadi kecurangan. Contoh yang bsa dilihat dalam kehidupan adalah adanya notaris dalam sengketa tanah.

  Dalam protocol ini juga terdapat beberapa kelemahan termasuk analisis yang digunakan atau dilakukan harus setelah masalah terjadi dan tidak ada upaya untuk melakukan pencegahan. Tetapi keuntungannya adalah tidak perlu mengeluarkan banyak biaya dibanding dengan menggunakan arbiter karena keterlibatan pihak ketiga terbatas pada adanya masalah.

  Protocol ini tidak melibatkan pihak ketiga. Prosedur yang digunakan adalah masing-masing pihak yang melakukan hubungan mempunyai kontrol terhadap pihak lainnya. Kelebihannya adalah biaya yang dikeluarkan lebih rendah dibanding dengan dua protocol sebelumnya, tetapi kekurangannya adalah sangat sulit melakukan pengamatan pada setiap kondisi.

  2.2 Pembangkit Bilangan Acak (Cryptographcally-secure Pseudo-Random Number Generator)

  Cryptographically-secure Pseudo-Random Number Generator (CPRNG) adalah suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random). CPRNG ini tidak dapat diterapkan dalam prakteknya.Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu.Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya.Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu (Cryptographically-secure

  Pseudo-Random Number Generator) .

  Suatu Cryptographically-secure Pseudo-Random Number Generator(CPRNG) merupakan suatu algoritma yang menghasilkan suatu urutan nilai dimana elemen- elemennya bergantung pada setiap nilai yang dihasilkan.Output dari CPRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak.Kebanyakan algoritma dari Cryptographically-secure Pseudo-Random

  Number Generator ditujukan untuk menghasilkan suatu sampel yang secara

  seragam terdistribusi. CPRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metoda kriptografi. Tingkat kerumitan dari CPRNG ini menentukan tingkat keamanan dari metoda kriptografi.Semakin rumit (kompleks) CPRNG yang digunakan maka semakin tinggi tingkat keamanan dari metode kriptografi.

   Quadratic Linear Congruential Generator Quadratic Linear Congruential Generator (QLCG) adalah salah satu

  pembangkit bilangan acak yang dikemukakan oleh Jim Reeds (1294,1295,1296) dan Joan Boyar (1251) dengan rumus:

  • − −
  • = � �

  dimana adalah bilangan acak ke-n dari deretnya, adalah bilangan acak

  −1

  sebelumnya, a dan b merupakan bilangan pengali (increment), c merupakan konstanta dan m merupakan modulus. (D. E. Knuth(1981)).

  • 11
  • 5 ) 17 dan adalah 0. Hasil perhitungan dapat dilihat pada Tabel 2.1.

  5

  14 Dari hasil contoh pada tabel 2.1 dapat diketahui bahwa keunggulan QLCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit.

  12

  5

  11

  10

  6

  9

  1

  8

  14

  7

  5

  6

  6

  Periode QLCG pada dasarnya tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari m. QLCG akan mempunya periode penuh (m-1) jika memenuhi syarat dimana (b-a) mod m=1, m adalah bilangan kelipatan 2 dan c adalah bilangan ganjil. Keunggulan QLCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Jika dilihat dari angka yang dihasilkan, algoritma Qudratic Linear

  4

  1

  3

  14

  2

  5

  1

  X

Tabel 2.1 Contoh QLCG

  −1

  2

  −1

  Contoh: = (7

  

Congruential Generator (QLCG) memiliki kelemahan.Sebab angka (bilangan

acak) yang dihasilkan dapat diprediksi urutan kemunculannya.

  Sebenarnya, QLCG tidak dapat digunakan untuk kriptografi karena bilangan acaknya dapat diprediksi urutan kemunculannya dapat dilihat pada (tabel 2.1). Meskipun secara teoritis QLCG mampu menghasilkan bilagan acak yang, namun ia sangat sensitif terhadap pemilihan nilai a, b, c dan m. Pemilihan nilai – nilai yang buruk dapat mengarah pada implementasi QLCG yang tidak bagus.

   Zero Knowledge Proof

2.4 Zero-knowledge proof adalah protokol kriptografi yang dapat

  digunakan oleh seseorang (misalnya Tian yang bertindak sebagai prover) untuk membuktikan kepemilikannya akan suatu secret piece atau informasi rahasia kepada orang lain (misalnya Tika, yang bertindak sebagai verifier) tanpa perlu mengungkapkan isi secret piece tersebut atau memberikan suatu cara bagi Tika untuk mengetahui isi rahasia tersebut.

  Proses pembuktian kepemilikan rahasia yang dilakukan oleh Tian ini termasuk ke dalam interactive protocol, dimana Tika akan menanyakan serangkaian pertanyaan kepada Tian. Jika Tian benar-benar mengetahui isi rahasia, maka ia akan dapat menjawab keseluruhan pertanyaan dengan benar. Setelah serangkaian pertanyaan diajukan (misalnya 10 atau lebih pertanyaan) Tika akan yakin bahwa Tian benar-benar memiliki informasi rahasia seperti yang ia katakan.

  

Zero-Knowledge Proof harus memenuhi tiga sifat yaitu:

  a. Completeness:yaitu jika prover memang tahu suatu pernyataan, verifier selalu akan dapat menerimanya.

  b. Soundness:yaitu jika prover memang tidak mengetahui pernyataan yang

  benar, verifier tidak dapat menerimanya, kecuali dalam kemungkinan yang kecil.

  c. Zero-knowledge:yaitu walaupun setelah interaksi dilakukan verifier akan

  sebenarnya verifier sendiri tetap tidak akan mengetahui pernyataan yang sebenarnya.

  Contoh yang sering digunakan untuk menjelaskan konsep zero-

  

knowledge proof biasanya menggunakan gua atau terowongan yang bercabang dan

  terdapat suatu pintu yang menghubungkan kedua cabang yang hanya dapat dibuka oleh seseorang yang mengetahui suatu kode rahasia Di dalam gua itu hanya terdapat dua orang yakni Tian dan Tika. Tian mengaku mengetahui kata rahasia untuk membuka pintu itu, tetapi ketika Tian diminta untuk membuktikannnya, Tian tidak mau memberitahukan kata kuncinya kepada Tika. Cara yang digunakan Tian untuk membuktikan bahwa ia tahu kata rahasia tanpa memberitahukannya kepada Tika adalah dengan menggunakan zero knowledge proof.

  Tian dalam hal ini adalah pihak yang akan membuktikan bahwa ia mengetahui rahasia disebut dengan Prover, sedangkan Tika dalam hal ini adalah pihak yang diyakinkan disebut dengan verifier. Gambar di bawah ini adalah ilustrasi zero knowledge proof di dalam gua.

  Tika Tian

  Gambar2.6 Ilustrasi Zero knowledge proof

  Gua itu memiliki 2 jalur untuk sampai ke pintu rahasia yaitu jalur A dan jalur B. Langkah-langkah pembuktiannya adalah sebagai berikut : a. Tika berada di posisi A, sedangkan Tian berada di posisi B.

  b. Tian akan berjalan menuju ke pintu dengan menggunakan jalan C atau D sesuai dengan keinginan Tian dan dilakukan secara acak.

  c. Setelah itu, Tika akan berjalan ke posisi B dan dia meneriakkan jalan C atau D sesuai dengan keinginannya agar Tian berjalan kearah posisi B dengan menggunakan jalan itu.

  d. Jika Tian tahu kata rahasia, maka ia akan mampu menuruti semua permintaan Tika, tetapi jika ia ingin mengelabui Tika, maka Tian memiliki probabilitas setengah untuk berhasil. e. Agar pembuktian yang dilakukan akurat maka langkah 1 sampai 5 harus diulang n kali dan Tika percaya jika Tian mampu memenuhi seluruh permintaan Tika.

2.5 Feige Fiat Shamir

  Konsep zero-knowledge protocol digunakan dalam beberapa protokol untuk identifikasi (zero-knowledge identification protocol). Protokol pertama jenis ini adalah protokol Feige-Fiat-Shamir. Ada tiga aktor yang berperan dalam protokol Fiat- Shamir yaitu trusted center (sebut saja Tim), prover (Tian) dan verifier (Tika). Tim membuat suatu modulus seperti RSA n = pq, mengumumkan n tetapi merahasiakan p dan q. Tian membuat secara acak (menggunakan random number generator) kunci

  2

  privat s, dimana 0 < s < n dan gcd(s; n) = 1. Kunci publik Tian adalah v = s mod n dan v diregistrasi ke Tim. Tika dapat memperoleh kunci publik Tian v yang telah diregistrasi, dari Tim. Langkah-langkah berikut diulang t kali, setiap kali dengan nilai- nilai acak yang baru, agar Tian dapat diidentifikasi oleh Tika.

  a. Tian memilih secara acak, menggunakan random number generator, r, 0

  2 < r < n , dan mengirim x = r mod n kepada Tika

b. Tika memilih secara acak, menggunakan random number generator, e, e ∈ {0,1}, dan mengirimnya ke Tian.

  e c. Tian mengkomputasi y = rs mod n dan mengirim y ke Tika.

  2 e

  d. Jika y = 0 atau y (mod n) maka Tika menolak dan proses ≡ xv identikasi gagal.

  Jika langkah-langkah diatas telah diulang t kali tanpa penolakan maka identifikasi Tian diterima oleh Tika. Probabilitas bahwa Tian telah berhasil menipu

  t Tika adalah 1 dalam 2 .

  Keamanan dari Feige-Fiat-Shamir berdasarkan pada sukarnya mengkalkulasi akar kuadrat modulo pq jika p dan q tidak diketahui (hanya produknya n = pq yang diketahui). Fungsi pengacakan menggunakan parameter e adalah agar Tian tidak curang. Jika Tika selalu meminta y = r (e = 0) maka jelas Tian tidak perlu mengetahui s untuk menjawabnya. Jika Tika selalu meminta y = rs

  

( mod n), Tian juga dapat mengelabui Tika tanpa mengetahui sebagai berikut. Pada

  langkah 1 Tian mengirim

  2 1 ( x v

  • - mod n)

  ≡ r

  kepada Tika. Ketika diminta untuk mengirim y = rs (mod n) maka Tian mengirim y = r. Jadi Tika terkelabui karena

  2

  1 xv v

  • - v(mod n)

  ≡ r

  2

  (mod n) r

  2

  (mod n): y

  2 Dengan pengacakan, jika Tian mengirim x = r (mod n) maka ia kadang 2 -1

  harus menggunakan s, sedangkan jika ia mengirim x=r v (mod n) maka ia kadang harus mencari akar kuadrat modulo n karena ia harus mengirim

  2 -1 -2 y = (r v ) (mod n).

  Untuk menunjukkan bahwa tidak ada rahasia yang bocor ke Tika, kita gunakan cara standar yaitu dengan simulasi. Seseorang yang tidak mengetahui p, q dan s akan tetapi mengetahui apa yang akan diminta Tika untuk e tentunya akan

  2 2 -1 (

  dapat berperan sebagai Tian dengan mengirim x = r (mod n) atau x = r v mod n) tergantung pada nilai e. Informasi yang dikeluarkan oleh Tian dapat dikeluarkan oleh siapa saja tanpa mengetahui p; q dan s, jadi tidak memberi tahu nilai p; q dan s .

  Sebetulnya Fiat-Shamir membocorkan 1 bit dari nilai s, yaitu sign (+ atau -) dari s. Protokol Feige-Fiat-Shamir menutup kebocoran ini. Selain itu Feige

  

Fiat-Shamir melakukan k “pembuktian" secara paralel yang mengurangi interaksi

  antara Tian dan Tika karena langkah-langkah tidak perlu diulang sebanyak pada Fiat-Shamir, bahkan langkah-langkah tidak perlu diulang jika k cukup besar.

  Dalam Feige-Fiat-Shamir, Tian membuat k kunci privat s

  1 , s 2 , ......, s k

  dimana gcd(s , n ) = 1 untuk setiap i, dan mempublikasikan k kunci publik v ,

  i

  1 v 2 ,......., v k dimana

  2 v i = s i (mod n) untuk setiap i. Langkah-langkah Feige-Fiat-Shamir adalah sebagai berikut.

  a.

   Tian memilih secara acak, menggunakan random number generator, r,0

  2 < r < n , dan s mod n kepada Tika.

  ∈ {-1, 1}, dan mengirim x = sr

  b. , e ,..., e , e Tika memilih secara acak e 1 2 k i

  ∈{0, 1} untuk setiap i, dan mengirimnya ke Tian.

  e 1 e2 ek

  c. Tian mengkomputasi y = rs 1 s 2 ...s k (mod n) dan mengirim y ke Tika.

  2 e1 e2 ek

  d. Jika y v 2 ...v k (mod n) maka Tika menolak dan proses

  ≡ ± xv1 identifikasi gagal.

  Jika k = 20, maka probabilitas bahwa Tian berhasil mengelabui Tika kurang dari 1 dalam sejuta, dengan hanya 1 putaran langkah-langkah diatas.

  2 Untuk Feige-Fiat-Shamir ada yang menggunakan v i = 1=s i mod n

  untuk kunci publik. Jika demikian, maka pada langkah 4, Tika harus memeriksa

  

2

  1

  2

  … ( ≡ ± )

  2 Contoh :

  Jika n=35 (bilangan pengali yang prima 5 dan 7), kemudian bilangan kuadrat yang mungkin adalah:

  2

  1: x ≡1 (mod 35) mempunyai penyelesaian: x = 1, 6, 29,or 34.

  2 4:x ≡ 4 (mod 35) mempunyai penyelesaian: x = 2,12, 23,or33.

  2 9: x ≡9 (mod 35) mempunyai penyelesaian :x = 3,17,18, or32.

  2 11:x ≡11(mod 35)mempunyai penyelesaian: x = 9,16,19,or26.

  2 14: x ≡14 (mod 35) mempunyai penyelesaian: x = 7 or 28.

  2 15: x ≡15 (mod 35) mempunyai penyelesaian: x = 15 or 20.

  2 16: x ≡16(mod 35)mempunyai penyelesaian:x=4,11, 24, or31.

  2 21: x ≡21 (mod 35) mempunyai penyelesaian: x = 14 or 21.

  2 25: x ≡25 (mod 35) mempunyai penyelesaian: x = 5 or 30.

  2 29: x ≡29(mod 35)mempunyai penyelesaian:x= 8,13,22 or 27.

  2 30: x ≡30 (mod 35) mempunyai penyelesaian: x = 10 or 25.

  Inversi (mod 35) dan akar pangkat duanya adalah:

Tabel 2.2 Inversi (mod 35)

  • -1 -1 v v S=sqrt(v )

  1

  1

  1

  4

  9

  3

  9

  4

  2

  11

  16

  4 Catatan bahwa 14, 15, 21, 25 dan 30 tidak mempunyai inversi dengan (mod 35) karena angka-angka tersebut tidak relatif prima dengan 35. Maka Tian mendapat kunci publik k = 4 dengan nilai:{4,11,16,29}. Kunci privat yang berhubungan adalah {3,4,9,8}. Kemudian langkah-langkah protokol Feige Fiat

  Shamir sebagai berikut:

  )) mod 35=11 Tian dan tika mengulang protokol ini sampai t kali, dengan bilangan acak yang berbeda setiap pengulangan, sampai Tika percaya. Dengan angka yang kecil seperti contoh di atas, maka tidak terlihat keamanan data yang sebenarnya. Tetapi dengan angka sepanjang 512 bit atau lebih, maka Tika tidak akan dapat mempelajari apa-apa tentang kunci rahasia Tian.

  ))mod 35=31 dan dikirim ke Tika

  1

  )*(16 )*(29

  1

  )*(11

  

1

  12

  d. Tika memeriksa bahwa 3

  1

  a. Tian memilih sebuah bilangan acak r= 16, hitung 16

  )*(9 )*(8

  

1

  )*(4

  1

  c. Tian menghitung 16*((3

  b. Tika mengirim Tian bilangan biner acak {1,1,0,1}.

  (mod35)=11, dan kemudian angka tersebut dikirim ke Tika.

  2

  • ((4