SKRIPSI
SKRIPSI
PERSETUJUAN
ii
PERNYATAAN
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan namanya.
PENGHARGAAN
Dengan menyebut nama Allah Subhanahu Wa Ta’aala yang Maha Pengasih lagi
Maha Penyayang, penulis panjatkan segala puji dan syukur atas kehadirat-Nya yang
telah melimpahkan rahmat dan hidayah kepada penulis sehingga penulis dapat
menjalankan perkuliahan sampai kepada penyusunan skripsi ini.
Penulis mendoakan keberkahan kepada kedua orang tua tercinta Ibu Rina
Sembiring dan Bapak Denny M. Ginting yang senantiasa memberikan do’a, kasih
sayang, dan kebahagiaan kepada penulis sehingga penulis dapat memperoleh
pendidikan yang menjadi jalan untuk sampai kepada penyusunan skripsi ini.
Pada kesempatan ini juga penulis memberikan ucapan terima kasih yang
sebesar-besarnya kepada semua pihak yang telah memberikan bimbingan dan
bantuan atas kekurangan yang dilakukan oleh penulis:
1. Bapak Dr. Muriyanto Amin, S.Sos., M.Si. selaku Rektor Universitas Sumatera
Utara.
2. Ibu Dr. Maya Silvi Lydia, B.Sc., M.Sc. selaku Dekan Fakultas Ilmu Komputer
dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Mohammad Andri Budiman, S.T., M.Comp.Sc., M.E.M., S.C.J.P.
selaku Wakil Dekan 1 Fakultas Ilmu Komputer dan Teknologi Informasi
Universitas Sumatera Utara. Dan selaku Dosen Pembimbing 1 yang telah
memberikan motivasi yang luar biasa kepada penulis, serta dengan penuh
kesabaran telah memberikan bimbingan yang berharga dan bantuan kepada
penulis.
4. Ibu Dr. Amalia, S.T., M.T. selaku Ketua Program Studi S-1 Ilmu Komputer
Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
5. Ibu Dian Rachmawati, S.Si, M.Kom. selaku Dosen Pembimbing Akademik
dan Dosen Pembimbing II yang telah memberikan motivasi yang luar biasa
kepada penulis selama penulis menjalankan perkuliahan sampai kepada
penyusunan skripsi ini, serta memberikan bimbingan dan saran yang berharga
kepada penulis.
iv
6. Ibu Dr. Elviawaty Muisa Zamzami ST., MT., MM selaku Dosen Pembanding
I yang telah memberikan saran dan kritik yang membangun kepada penulis
terhadap penyusunan skripsi ini.
7. Bapak Dr. Eng Ade Candra ST., M.Kom. selaku Dosen Pembanding II yang
telah memberikan saran, kritik, dan motivasi yang membangun kepada penulis
terhadap penyusunan skripsi ini.
8. Seluruh Bapak dan Ibu Dosen Program Studi S-1 Ilmu Komputer yang telah
memberikan waktu dan tenaga untuk mengajar dan membimbing sehingga
penulis dapat sampai kepada tahap penyusunan skripsi ini.
9. Seluruh Staf Pegawai Fakultas Ilmu Komputer dan Teknologi Informasi
Universitas Sumatera Utara yang telah banyak memberikan bantuan kepada
penulis selama masa perkuliahan sampai kepada tahap penyusunan skripsi ini.
10. Kakak Ira Yuta Merlendy, Kakak Marisa Aldriana, Kakak Cindy Laurent
Ginting, Kakak Defhy Regina Ginting dan juga sepupu penulis Muhammad
Syahbana Ginting yang telah mendo’akan memberikan kebahagiaan dan
dukungan yang berharga, serta menjadi sumber motivasi dan panutan untuk
penulis.
11. Sahabat rekreasi penulis, Muhammad Harris Pratama, Zettaya Serepina, Yulia
Permata Sukma Nasution, Rima Ara Rizki, Nafira Yuzra, Haratua Aurelio
Siahaan yang telah memberikan kebahagiaan, warna, dan dukungan yang
berharga kepada penulis.
12. Sahabat penulis, Nabila Putri yang telah memberikan dukungan dan motivasi
kepada penulis.
13. Sahabat dan teman-teman seperkuliahan penulis, Rhania Ramadina Nasution,
Rivany Indiyati, Asri Yulianingrum, Annisa Mukhri, Nikita Ananda Putri
Masaling, Afita Puspa Sari, Nurul Liza Sevita, Tengku Azzahra, Devina Kaur,
Jessica Graciela, Shinta Waoma, Dwi Aulia Andini, Benyamin Pravalent
Siregar, Krisna Febriansyah, Mohammad Raja, Dimas Eka Putra, Paskahl
Herbert Simarmata, Dharmawan, M. Fahrur Rozi, Alexander Tarigan, M.
Ramadhan, M. Syarif Ridho Rambe, Fauzan Zaman, Yudha Triya, Khairul
Ariandi, Kelvin Wijaya dan teman-teman lainnya yang belum dapat penulis
sebutkan satu persatu.
v
ABSTRAK
ABSTRACT
The increasing number of messages that are exchanged remotely causes the need
for these messages to be kept confidential. In addition, the parties involved must
also be guaranteed their validity. The method that can be used to fulfill these two
objectives is to use a cryptographic method with a public key setting. In this study,
the researcher implemented a signcryption technique with an encrypt-then-sign
scheme by encrypting and decrypting messages using the Generalization of the
ElGamal Algorithm which has a superior level of security from the previous
ElGamal Algorithm. Then perform the digital signature generation and verification
process using the Ong-Schnorr-Shamir Algorithm which has the advantage of fast
computation time with a level of security equivalent to the previous Ong-Schnorr
Algorithm. This study shows the results of testing messages in the form of text with
the extension *.docx or *txt which have a number of characters up to 10000
characters in the encryption process with the Generalization of the ElGamal
Algorithm can run well. However, when the resulting ciphertext is too large, the
next process, namely the signing process with the Ong-Schnorr-Shamir Algorithm,
will produce an "overflow" output because it is too large. This study also shows that
the encrypt-then-sign process takes longer than the verify-then-decrypt process.
DAFTAR ISI
PERSETUJUAN ..................................................................................................... i
PERNYATAAN ..................................................................................................... ii
ABSTRAK ............................................................................................................ vi
DAFTAR GAMBAR
DAFTAR TABEL
BAB I
PENDAHULUAN
publik dan proses dekripsi sama dengan Algoritma ElGamal aslinya. Selama
proses enkripsi dilakukan dua kali perhitungan eksponensial modular yaitu
dengan jumlah faktor prima dari plainteks dan dengan kunci pribadi.
(Ranasinghe & Athukorala, 2021).
Shamir yang akan digunakan untuk proses encrypt then sign dan verify then
decrypt pada pesan.
1. Studi Pustaka
Pada tahap ini penulis akan melakukan pengumpulan referensi yang
berkaitan dalam penelitian. Pengumpulan referensi yang terkait dengan
algoritma kunci publik Generalization of the ElGamal dan algoritma digital
signature Ong-Schnorr-Shamir yang akan digunakan dalam penulisan
penelitian ini. Referensi yang digunakan berupa jurnal, e-book, makalah
skripsi, dan situs internet.
2. Analisis dan Perancangan
Pada tahap ini penulis akan melakukan analisa terhadap hal – hal yang akan
dibutuhkan dalam penelitian dan membuat rancangan sistem dalam sebuah
diagram alir (flowchart) dan tampilan antarmuka (interface).
3. Implementasi
BAB I PENDAHULUAN
BAB II
LANDASAN TEORI
2.1 Kriptografi
Kriptografi adalah ilmu dan seni yang bertujuan untuk menyelesaikan
permasalahan yang melibatkan kerahasiaan, autentikasi, integritas dan
nirpenyangkalan (Schneier, 2015).
Kunci Kunci
digital oleh The National Institute of Standarts and Technology (NIST) dengan
kekurangan yang dimiliki jika dibandingkan dengan RSA Cryptosystem
sebelumnya yaitu membutuhkan waktu verifikasi yang lebih lama daripada
Algoritma RSA Digital Signature dan pada masa algoritma DSA dikenalkan
banyak perusahaan yang telah menggunakan standar RSA Cryptosystem dan
sulit untuk mengenal Algoritma DSA. (Schneier, 2015)
H1 = (1 + 9)73 mod 73
H1 = 1073 mod 73 = 10 (mod 73)
jumlah faktor prima dari plainteks dan dengan kunci pribadi. Jika hanya ada
satu faktor prima yang dimiliki oleh plainteks maka metode ini dilakukan mirip
dengan algoritma ElGamal aslinya. Proses pembuatan kunci publik dan proses
dekripsi juga sama dengan Algoritma ElGamal aslinya. (Ranasinghe &
Athukorala, 2021).
Pembangkitan Kunci
1. Pilih sebuah bilangan prima yang besar p dan sebuah akar primitif g dalam
modulo p dengan g < p
2. Pilih sebuah bilangan x sebagai kunci pribadi untuk proses dekripsi dengan
x dalam 1<x<p-1
3. Hitung a ≡ gx mod p
4. p, g, dan a dipublikasikan
Proses Enkripsi
2. Pilih sebuah bilangan y sebagai kunci pribadi untuk proses enkripsi dengan
y dalam 1<x<p-1
3. Lalu enkripsi m dengan
a. d ≡ gi mod p
b. b ≡ dy mod p
c. c ≡ m. aiy mod p
4. Kirim ciphertext yaitu b dan c
Proses Dekripsi
1. Terima ciphertext
Pembangkitan kunci
1. Misalkan p = 17, g = 3
Pembuktian g = 3 akar primitive dalam modulo 17
Hitung nilai totient dari p, karena 17 adalah angka prima maka nilai
totient(17) = 17-1 = 16
Hitung nilai ordo dari 3 dalam modulo 17
e 3e (mod 17)
1 31 (mod 17) = 3
2 32 (mod 17) = 9
3 33 (mod 17) = 10
4 34 (mod 17) = 13
5 35 (mod 17) = 5
6 36 (mod 17) = 15
7 37 (mod 17) = 11
8 38 (mod 17) = 16
9 39 (mod 17) = 14
10 310 (mod 17) = 8
11 311 (mod 17) = 7
12 312 (mod 17) = 4
13 313 (mod 17) = 12
Maka didapat nilai ord17 (3) = 16. Karena nilai ordo n (mod m) = totient(n)
yaitu ord17 (3) = 16 sama dengan totient(17) = 16, maka terbukti bahwa 3
adalah akar primitive dalam modulo 17
2. Misalkan kunci pribadi (dekripsi) yaitu x = 5
3. Hitung a ≡ gx mod p
a ≡ 35 mod 17
Dari a diketahui : x = 3, y = 5, n = 17
(1) Awal z = 1
(2) Ketemu 1 z = x . z2 mod n = 3. 12 mod 17 = 3
(3) Ketemu 0 z = z2 mod n = 32 mod 17 = 9
(4) Ketemu 1 z =x . z2 mod n = 3. 92 mod 17 = 5
Maka didapat a ≡ 5 (mod 17)
4. p, g, dan a dipublikasikan
Proses Enkripsi
1. Misalkan pesan yang akan dikirim m adalah 14. Kemudian cari faktorisasi
prima dari 14 yaitu i.e., 2 x 7
Maka i = 2
2. Misalkan kunci pribadi (enkripsi) y = 4
3. Lalu enkripsi m dengan
d ≡ gi mod p
d ≡ 32 mod 17
d ≡ 9 (mod 17)
b ≡ dy mod p
b ≡ 94 mod 17
b ≡ 6561 mod 17
b ≡ 16 (mod 17)
c ≡ m. aiy mod p
c ≡ 14. 58 mod 17
c ≡ 14 . 16 (mod 17)
1. Misalkan pesan m
2. Pilih nilai acak r yang relatif prima dengan n
3. Hitung S1 dan S2
S1 = ½ * (M/r + r) mod n
4. Kirim S1 dan S2
1. Terima S1 dan S2
2. Hitung verifikasi dengan rumus
Pembangkitan Kunci
1. Misalkan n = 21 dan k = 5
Untuk membuktikan bahwa 21 dan 5 adalah relatif prima dapat
menggunakan Algoritma Euclidean untuk mencari nilai GCD(n,k). Jika
GCD(n,k) = 1 maka terbukti bahwa n dan k adalah relatif prima.
GCD(21,5)
21 mod 5 = 1
5 mod 1 = 0 (stop)
Hasil GCD(21,5) = 1 maka terbukti bahwa relatif prima
2. Hitung nilai h = - (k-1)2 mod n
h = - (k-1)2 mod n
h = - (5-1)2 mod 21
7 7 * 5 (mod 21) = 14
8 8 * 5 (mod 21) = 19
9 9 * 5 (mod 21) = 3
10 10 * 5 (mod 21) = 8
11 11 * 5 (mod 21) = 13
12 12 * 5 (mod 21) = 18
13 13 * 5 (mod 21) = 2
14 14 * 5 (mod 21) = 7
15 15 * 5 (mod 21) = 12
16 16 * 5 (mod 21) = 17
17 17 * 5 (mod 21) = 1 stop
h = - (17)2 mod 21
h = - (289) mod 21
h = 5 mod 21
1. Misalkan pesan m = 12
2. Misal r = 2 yang relatif prima dengan n
3. Hitung S1 dan S2
S1 = ½ * (M/r + r) mod n
S1 = 11 * (134) mod 21
S1 = 1474 mod 21
S1 = 4 (mod 21)
S2 = k /2 * (M/r - r) mod n
S2 = 55 * (130) mod 21
S2 = 7150 mod 21
S2 = 10 (mod 21)
4. Kirim S1 dan S2
1. Terima S1 dan S2
2. Hitung verifikasi dengan rumus
42 + 5 * 102 = 12 (mod 21 )
16 + (5 * 100) = 12 (mod 21 )
16 + 500 = 12 (mod 21)
516 mod 21 = 12 (mod 21)
12 (mod 21) = 12 (mod 21) maka terbukti valid
- Tanda tangan digital sulit untuk dipalsukan karena hanya pengirim yang
memiliki kunci pribadi untuk melakukan proses sign.
- Tanda tangan digital sulit untuk diubah karena tanda tangan digital akan
dibangkitkan berdasarkan pesan yang ingin dikirim. Jika pesan atau tanda
tangan digital mengalami perubahan pada saat pengiriman maka tanda
tangan digital tidak dapat diverifikasi.
- Tanda tangan digital tidak dapat digunakan kembali karena setiap pesan
akan membangkitkan tanda tangan digital yang berbeda.
Hitung d, b, dan c
d ≡ gi mod p
d ≡ 35 mod 17
d ≡ 243 (mod 17)
d ≡ 5 (mod 17)
b ≡ dy mod p
b ≡ 56 mod 17
b ≡ 15625 mod 17
b ≡ 2 (mod 17)
c ≡ m. aiy mod p
c ≡ 72. 55.6 mod 17
c ≡ 72. 530 mod 17
c ≡ 67,055,225,372,314,453,125,000 mod 17
c ≡ 9 (mod 17)
k=5
h = - (k-1)2 mod n =
h = - (5-1)2 mod 21
h = - (17)2 mod 21
h = - (289) mod 21
h = 5 mod 21
Defhy ( recipient verify )
untuk b = 2
S1 = ½ * (M/r + r) mod n
S2 = k/2 * (M/r – r ) mod n
M=b=2
S1 = 2-1 * (M * (r-1) + r) mod n
S1 = 2-1 * (2 * (4-1) + 4) mod 21
S1 = 11 * (2 * (4-1) + 4) mod 21
S1 = 11 * (2 * (16) + 4) mod 21
S1 = 11 * (36) mod 21
S1 = 396 mod 21
S1 = 18 (mod 21)
untuk c = 9
nilai random r = 4
S1 = ½ * (M/r + r) mod n
S2 = k/2 * (M/r – r ) mod n
M=c=9
Selfhy mengirim ciphertext yaitu b dan c yang telah diberikan tanda tangan
digital kepada Defhy yaitu (S1,S2) milik b dan (S1,S2) milik c
Defhy menerima ciphertext yaitu b dan c serta (S1,S2) milik b dan (S1,S2)
milik c dan melakukan verifikasi signature menggunakan kunci publik milik
Selfhy yaitu :
n = 21
h = 5 (mod 21)
Hitung :
untuk c = 9
S1 = 11 (mod 21)
S2 = 14 (mod 21)
Hitung :
Hitung bx
bx = 25 (mod 17)
bx = 15 (mod 17)
m = c. (bx)-1 mod 17
m = 9. (15)-1 mod 17
m = 9. 8 mod 17
m = 72 (mod 17)
Maka pesan yang telah didekripsi dan dapat dibaca oleh Defhy yaitu m = 72 =
“H”
BAB III
ANALISIS DAN PERANCANGAN SISTEM
Pada Gambar 3.1 memperlihatkan Root Cause A Tree Diagram yang berisi
akar penyebab dari permasalahan yang ingin diselesaikan dalam penelitian ini.
1. Sistem dapat melakukan fungsi untuk menerima masukan yang berupa file
berekstensi .txt dan . docx
2. Sistem dapat melakukan fungsi untuk pembangkitan kunci dengan
algoritma Generalization of the ElGamal dan Algoritma Ong-Schnorr-
Shamir
3. Sistem dapat melakukan fungsi untuk melakukan proses enkripsi dan
dekripsi pada file dengan algoritma Generalization of the ElGamal
1. User Interface
Sistem dapat menampilkan tampilan antarmuka yang dapat berinteraksi
dengan baik terhadap pengguna.
2. Kualitas
Sistem dapat melakukan proses encrypt-then-sign dan verify-then-decrypt
dengan input dan output yang tepat.
3. Pedoman untuk menjalankan sistem
Sistem dapat menampilkan pedoman yang berisi alur kerja signcryption
pada sistem.
4. Kontrol
Sistem dapat menampilkan pemberitahuan kepada pengguna ketika
menerima masukan yang tidak dapat diterima oleh sistem.
Hasil dari verifikasi akan menghasilkan satu nilai yaitu valid atau
invalid. Setelah berhasil memvalidasi tanda tangan digital milik dari ciphertext
maka selanjutnya penerima dapat mendekripsi ciphertext menggunakan
Algoritma Generalization of the ElGamal dengan kunci pribadi milik
penerima.
3.3 Flowchart
Flowchart atau diagram alir umum pada sistem yang akan menggambarkan
input, proses, dan output dari sistem yang dibangun.
Mulai
Generate p, g, x
Hitung a
a = gx mod p
Mulai
Generate n
dan k
Hitung h
h = - (k-1)2 mod n
Output kunci
publik yaitu h, n
dan kunci pribadi
yaitu k
Selesai
Keterangan:
Keterangan:
Keterangan:
Keterangan:
Keterangan:
Keterangan:
12. TextBox untuk menampilkan karakter dari tanda tangan digital yaitu S2
yang dibangkitkan dari ciphertext b
13. Button untuk menyimpan tanda tangan digital yang dibangkitkan dari
ciphertext b
14. TextBox untuk menampilkan karakter dari tanda tangan digital yaitu S1
yang dibangkitkan dari ciphertext c
15. TextBox untuk menampilkan karakter dari tanda tangan digital yaitu S2
yang dibangkitkan dari ciphertext c
16. Button untuk menyimpan tanda tangan digital yang dibangkitkan dari
ciphertext c
17. Button untuk melakukan proses pembangkitan tanda tangan digital
18. TextBox untuk menampilkan waktu proses pembangkitan tanda tangan
digital
Keterangan:
Keterangan:
BAB IV
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi
Implementasi pada penelitian ini berupa sistem yang menggunakan teknik
signcryption yaitu program yang dapat melakukan proses encryption dan
decryption menggunakan Algoritma Generalization of the ElGamal. Dan
melakukan proses signing dan verify menggunakan Algoritma Ong-Schnorr-
Shamir. Format data yang digunakan untuk melakukan proses signcryption
adalah berupa data teks dengan ekstensi *.txt dan *.docx. Sistem ini dibangun
dengan bahasa pemrograman C# menggunakan IDE Sharp Develop 5.1. Sistem
ini memiliki interface yang berupa halaman main form, halaman menu form,
halaman generate key, halaman encrypt then sign, halaman verify then decrypt.
menu encrypt then sign untuk melakukan proses encryption dan signing,
selanjutnya menu verify then decrypt untuk melakukan proses verify dan
decryption.
1. Pengguna dapat menekan button browse untuk mencari file pesan digital
yang berupa teks dengan berekstensikan .docx atau .txt. Selanjutnya pesan
akan ditampilkan untuk melihat isi dari file yang disebut sebagai plaintext
dan sekaligus akan ditampilkan juga jumlah dari karakter plaintext tersebut
2. Selanjutnya pengguna dapat menekan button browse untuk mencari kunci
dari sisi penerima dan kunci dari sisi pengirim yang telah disimpan
sebelumnya. Kunci y adalah kunci pribadi dari pengirim dan kunci p, g, dan
a adalah kunci publik dari penerima
1. Pengguna dapat menekan button browse untuk mencari file ciphertext b dan
c dan karakter beserta jumlah karakter dari ciphertext b dan c akan
ditampikan
1. Pengguna dapat menekan button browse untuk mencari file ciphertext b dan
c dan karakter dari ciphertext b dan c akan ditampikan
2. Selanjutnya pengguna dapat menekan button browse untuk mencari file
kunci dari sisi pengirim yang telah disimpan sebelumnya. Kunci n dan h
adalah kunci publik dari pengirim
3. Selanjutnya pengguna dapat menekan button browse untuk mencari file
digital signature yaitu S1 dan S2 milik ciphertext b dan S1 dan S2 milik
ciphertext c lalu digital signature akan ditampilkan.
4. Kemudian pengguna dapat menekan button verify untuk melakukan proses
verify dengan Algoritma Ong-Schnorr-Shamir. Jika hasil verifikasi digital
signature terhadap ciphertext terbukti benar maka sistem akan
menampilkan “Valid”. Namun jika hasil verifikasi terbukti salah maka
sistem akan menampilkan “Invalid”.
1. Pengguna dapat menekan button browse untuk mencari file ciphertext b dan
c dan karakter dari ciphertext b dan c akan ditampikan
2. Selanjutnya pengguna dapat menekan button browse untuk mencari file
kunci dari sisi penerima yang telah disimpan sebelumnya. Kunci x adalah
kunci pribadi dari penerima dan kunci p adalah kunci publik dari penerima
3. Selanjutnya pengguna dapat menekan button decrypt untuk melakukan
proses decryption dengan Algoritma Generalization of the ElGamal. Hasil
decryption yang menjadi plaintext semula akan ditampilkan beserta waktu
proses decryption
4. Kemudian pengguna dapat menekan button save untuk menyimpan
plaintext ke dalam lokal.
1. Pesan atau plaintext yang dapat dimasukkan ke dalam sistem ini adalah file
yang berekstensikan .docx atau .txt.
2. Pesan yang terenkripsi atau ciphertext dan kunci disimpan dalam bentuk file
yang berekstensikan .txt
3. Analisis waktu proses encryption, signing, verify, dan decryption dilakukan
dengan satuan millisecond (ms)
Pada Gambar 4.9 yang memperlihatkan kunci yang dibangkitkan dari sisi
penerima (recipient) dan pengirim (sender). Kunci x, p, g, dan a dari sisi
penerima dibangkitkan dengan Algoritma Generalization of the ElGamal yang
akan digunakan pada saat proses encryption dan decryption. Dan kunci y, k, n,
h dari sisi pengirim dibangkitkan dengan Algoritma Generalization of the
ElGamal dan Algoritma Ong-Schnorr-Shamir yang akan digunakan pada saat
proses encryption, signing, dan verify. Kemudian pengguna dapat menyimpan
kunci-kunci tersebut agar dapat digunakan pada proses selanjutnya.
Selanjutnya hitung:
. .
. .
. .
161 161 * 20 (mod 371) = 252
162 162 * 20 (mod 371) = 272
163 163 * 20 (mod 371) = 292
164 164 * 20 (mod 371) = 312
165 165 * 20 (mod 371) = 332
166 166 * 20 (mod 371) = 352
167 167 *20 (mod 371) = 1 stop
Maka hasil invers modulo dari 20 mod 371 adalah 167 (mod 371)
- Selanjutnya hitung kuadrat dari 167 (mod 371) = 27889 ( mod 371)
- Kemudian untuk menghitung h = - 27889 mod 371 maka hitung:
371 - (27889 mod 371) = 371 – (64) = 307 (mod 371)
Selanjutnya untuk setiap Mi akan dicari nilai i yaitu jumlah faktor prima dari
Mi . Hitung faktor prima dari Mi :
Maka didapat ciphertext yaitu b dan c yang dapat dilihat pada tabel berikut.
GCD(46,371)
371 mod 46 = 3
46 mod 3 = 1
3 mod 1 = 0 (stop)
Index Mi b c
1 M1 1183 2519
2 M2 2497 617
3 M3 437 1284
4 M4 437 2226
5 M5 2497 1928
S1 = 186 * (233334) mod 371 = 43400124 mod 371 = 173 (mod 371)
Kemudian hitung S2
S2 = k /2 * (M/r - r) mod n
S2 = k * (2-1) * (M * (r-1) - r) mod n
S2 = 20 * (2-1) * (1928 * (46-1) - 46) mod 371
S2 = 20 * (186) * (1928 * (121) - 46) mod 371
S2 = 3720 * 233242 mod 371 = 867660240 mod 371 = 314 (mod 371)
Maka hasil proses signing terhadap ciphertext b dan c dapat dilihat pada
tabel berikut.
2 (280,228) (66,29)
3 (306,6) (166,174)
4 (306,6) (23,282)
5 (280,228) (173,314)
Index Mi b (S1,S2)i
1 M1 1183 (177,23)
2 M2 2497 (280,228)
3 M3 437 (306,6)
4 M4 437 (306,6)
5 M5 2497 (280,228)
Index Mi c (S1,S2)i
1 M1 2519 (127, 136)
2 M2 617 (66,29)
3 M3 1284 (166,174)
4 M4 2226 (23,282)
5 M5 1928 (173,314)
Index bi ci
1 1183 2519
2 2497 617
3 437 1284
4 437 2226
5 2497 1928
- Untuk M2
bix = 24971627 mod 3083 = 1323
M2 ≡ ci . (bix)-1 mod p
M2 ≡ 617 * (1323)-1 mod 3083
M2 ≡ 617 * 1799 mod 3083 ≡ 1109983 mod 3083 ≡ 103
- Untuk M3
bix = 4371627 mod 3083 = 805
M3 ≡ ci . (bix)-1 mod p
M3 ≡ 1284 * (805)-1 mod 3083
M3 ≡ 1284 * 2903 mod 3083 ≡ 3727452 mod 3083 ≡ 105
- Untuk M4
bix = 4371627 mod 3083 = 805
M4 ≡ ci . (bix)-1 mod p
M4 ≡ 2226 * (805)-1 mod 3083
M4 ≡ 2226 * 2903 mod 3083 ≡ 6462078 mod 3083 ≡ 110
- Untuk M5
bix = 24971627 mod 3083 = 1323
M5 ≡ ci . (bix)-1 mod p
M5 ≡ 1928 * (1323)-1 mod 3083
M5 ≡ 1928 * 1799 mod 3083 ≡ 3468472 mod 3083 ≡ 97
M1 65 A
M2 103 g
M3 105 i
M4 110 n
M5 97 a
b = 43413
7305.237 3711.57 2259.595 5182.684 4614,771
c = 42354
BAB V
PENUTUP
5.1 Kesimpulan
Penulis menarik beberapa kesimpulan yang didapat berdasarkan hasil analisis dan
pengujian dari implementasi sistem pada penelitian ini yang menggunakan teknik
signcryption dengan Algoritma Generalization of the ElGamal dan Algoritma Ong-
Schnorr-Shamir pada file atau pesan yang berekstensikan *.docx atau *.txt:
1. Implementasi dari teknik signcryption yaitu encrypt then sign dan verify then
decrypt dengan Algoritma Generalization of the ElGamal dan Algoritma Ong-
Schnorr-Shamir pada file teks berhasil dilakukan dengan plaintext atau
pembangkitan kunci yang tidak terlalu besar.
2. Proses encryption dan decryption dengan Algoritma Generalization of the
ElGamal dapat berjalan dengan baik dengan plaintext yang berukuran hingga
10000 karakter atau lebih namun menghasilkan ciphertext yang berkali lipat
lebih besar dari plaintext semula yang menyebabkan proses selanjutnya yaitu
proses signing dengan Algoritma Ong-Schnorr-Shamir menghasilkan keluaran
“overflow” untuk ciphertext yang sangat besar.
3. Waktu proses encryption dan decryption dengan Algoritma Generalization of
the ElGamal berbanding lurus antara jumlah karakter. Semakin besar jumlah
karakter yang akan dilakukan encryption atau decryption maka waktu real
running time akan semakin lama.
4. Waktu penerapan Algoritma Generalization of the ElGamal pada proses
decryption lebih cepat daripada proses encryption.
5. Waktu penerapan Algoritma Ong-Schnorr-Shamir pada proses verify lebih
cepat daripada proses signing.
5.2 Saran
Penulis memberikan beberapa saran yang dapat digunakan untuk penelitian
berikutnya:
DAFTAR PUSTAKA
Agrawal, M., & Biswas, S. (2003). Primality and identity testing via Chinese
remaindering. Journal of the ACM, 50(4), 429–443.
https://doi.org/10.1145/792538.792540
An, J. H., Dodis, Y., & Rabin, T. (2002). On the security of joint signature and
encryption. Lecture Notes in Computer Science (Including Subseries Lecture
Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 2332,
83–107. https://doi.org/10.1007/3-540-46035-7_6
Budiman, M. A., Tarigan, J. T., & Winata, A. S. (2020). Arduino UNO and
Android Based Digital Lock Using Combination of Vigenere Cipher and
XOR Cipher. Journal of Physics: Conference Series, 1566(1).
https://doi.org/10.1088/1742-6596/1566/1/012074
Ong, H., Schnorr, C. P., & Shamir, A. (1984). An efficient signature scheme
based on quadratic equations. Proceedings of the Annual ACM Symposium
on Theory of Computing, 208–216. https://doi.org/10.1145/800057.808683
LAMPIRAN
LISTING PROGRAM
MainFrom.cs
/*
* Created by SharpDevelop.
* User: Selfhy Ginting
* Date: 12/13/2021
* Time: 11:18 PM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace skripsiSAG
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void BtnStartClick(object sender, EventArgs e)
{
this.Hide();
MenuForm menu = new MenuForm();
menu.ShowDialog();
}
}
}
GenerateKey.cs
namespace skripsiSAG
{
/// <summary>
/// Description of GenerateKey.
/// </summary>
public partial class GenerateKey : Form
{
public GenerateKey()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
int p, value_p, g, value_g, a, x, value_z, q;
int y, value_n, n, k, value_h;
textP.Text= p.ToString();
textG.Text= g.ToString();
textX.Text= x.ToString();
textA.Text = a.ToString();
}
}
EncryptThenSign.cs
namespace skripsiSAG
{
/// <summary>
/// Description of EncryptThenSign.
/// </summary>
public partial class EncryptThenSign : Form
{
public EncryptThenSign()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
string metode;
int p,g,a,y;
int[] d,c1,c2;
int f,r,value_r,k,n;
int[] fp;
int [] agina1, agina2;
//---------------------------------------------------------------signing
}//partial form
}
VerifyThenDecrypt.cs
namespace skripsiSAG
{
/// <summary>
/// Description of VerifyThenDecrypt.
/// </summary>
public partial class VerifyThenDecrypt : Form
{
public VerifyThenDecrypt()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
int n,h;
int[] s1B,s2B,s1C,s2C;
int x,p;
int[] c1;
int[] c2;
int[] cSB;
int[] cSC;
{
int counter=0;
int [] vB = new int [s1B.Length];
int [] squareS1 = new int[s1B.Length];
int [] squareS2 = new int[s1B.Length];
var verifyTimerB = new Stopwatch();
verifyTimerB.Start();
for (int i=0; i<s1B.Length;i++){
squareS1[i] = s1B[i]*s1B[i];
squareS2[i] = s2B[i]*s2B[i];
vB[i] = ( squareS1[i] + (h*squareS2[i])) % n;
if (vB[i] == (cSB[i]%n)){
counter++;
}
//verifyB.Text+=vB[i];
}
if(counter==cSB.Length){
verifyB.Text="Valid";
}else {
verifyB.Text="Invalid";
}
verifyTimerB.Stop();
verifyBTime.Text=(int.Parse(verifyTimerB.Elapsed.ToString("fffffff"))/10000f).ToSt
ring();
}
}else {
verifyC.Text="Invalid";
}
verifyTimerC.Stop();
verifyCTime.Text=(int.Parse(verifyTimerC.Elapsed.ToString("fffffff"))/10000f).ToSt
ring();
}
}
}