Pengamanan File PDF Menggunakan Algoritma Rsa Digital Signature Dan Fungsi Hash Sha-3 Berbasis Web
Pengamanan File PDF Menggunakan Algoritma Rsa Digital Signature Dan Fungsi Hash Sha-3 Berbasis Web
SKRIPSI
171401117
MEDAN
2021
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana
Ilmu Komputer
171401117
MEDAN
2021
PERSETUJUAN
PERNYATAAN
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
171401117
Puji dan syukur dipanjatkan kepada Tuhan Yang Maha Esa, karena atas rahmat
Nya, penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk
memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer
Universitas Sumatera Utara.
Semoga Tuhan Yang Maha Esa memberikan berkat karunia kepada semua pihak
yang telah memberikan bantuan, semangat, perhatian, motivasi, serta dukungan kepada
penulis dalam menyelesaikan skripsi ini.
Penulis,
ABSTRAK
Tanda tangan biasanya digunakan pada dokumen sebagai bukti tertulis bahwa dokumen
tersebut telah disahkan oleh orang yang bersangkutan. Tanda tangan juga membuktikan
apakah dokumen tersebut asli dari pemilik tanda tangan jika dokumen tersebut
diserahkan ke pihak lain. Dokumen bisa berupa cetakan fisik maupun digital. Namun,
pada cetakan digital diperlukan sebuah pengamanan dikarenakan dokumen dapat
diubah dengan mudah oleh siapapun melalui jaringan tanpa pembuktian dari pemilik
tanda tangan meskipun sudah ditandatangani dengan cara dipindai atau di foto. Salah
satu solusi pengamanan tersebut adalah menggunakan metode RSA Digital Signature
yang merupakan kombinasi algoritma RSA dengan Digital Signature. Algoritma RSA
adalah algoritma kriptografi kunci publik. Sedangkan Digital Signature adalah skema
keamanan yang menjamin keaslian file atau pesan dari segi otentikasi, anti
penyangkalan, dan integritas menggunakan fungsi hash. Penelitian ini
mengimplementasikan RSA Digital Signature dan fungsi hash SHA-3 berbasis web
untuk mengamankan keaslian file PDF menggunakan bahasa pemrograman PHP. Hasil
penelitian adalah sistem berbasis web yang dapat menjamin keaslian file menggunakan
RSA Digital Signature pada beberapa file PDF. Pengujian terhadap sejumlah file PDF
berukuran dari 6 KB, 245 KB, hingga 23285 KB dilakukan menggunakan tiga web
browser, yaitu Google Chrome, Microsoft Edge, dan Mozilla Firefox dengan total
waktu proses rata-rata antara pembangkitan kunci, tanda tangan, dan verifikasi pada
masing-masing web browser adalah 1,2562 detik, 1,2483 detik, dan 1,2775 detik.
Kata kunci: Algoritma RSA, Tanda Tangan Digital, Fungsi Hash, SHA-3, Keccak,
Tanda Tangan, Verifikasi, Otentikasi, Anti Penyangkalan, Integritas File
ABSTRACT
Generally, the signature is used to approve and show a document that has been approved
by the signer. The document can be a soft copy or hard copy. However, a soft copy
needs security since the document could be modified by a third person through network
without approval by the signer. Even though, their signature is from the image scanner
or photos. The solution to this problem is using RSA Digital Signature Algorithm
consisting of combination between RSA and Digital Signature. RSA Algorithm is
public key cryptography algorithm. While Digital Signature is a security scheme that
ensures the originality of file or message from authentication, non-repudiation, and file
or message integrity. This research implemented a web-based RSA Digital Signature
Algorithm and SHA-3 hash function to secure the originality of PDF files by using PHP
programming language. The result of this research is the web can run as well and ensure
security to the originality of PDF files from authentication, non-repudiation, and file
integrity on multiple PDF files with size from 6 KB, 245 KB, up to 23285 KB. The files
has tested using web browsers: Google Chrome, Microsoft Edge, and Mozilla Firefox
with the total average processing time between key generation, signatures, and
verification on the web browsers are 1.2562 seconds, 1.2483 seconds, and 1.2775
seconds.
DAFTAR ISI
Halaman
PERSETUJUAN ............................................................................................................ ii
PERNYATAAN ............................................................................................................ ii
ABSTRAK .................................................................................................................... vi
BAB 1 ............................................................................................................................ 1
PENDAHULUAN ......................................................................................................... 1
BAB 2 ............................................................................................................................ 7
2.8. SHA-3............................................................................................................ 18
BAB 3 .......................................................................................................................... 27
BAB 4 .......................................................................................................................... 52
4.2.3. Pengujian waktu proses pada beberapa file PDF di berbagai web browser 74
BAB 5 .......................................................................................................................... 80
5.1. Kesimpulan.................................................................................................... 80
DAFTAR TABEL
Halaman
Tabel 2. 1. Perbandingan RSA Digital Signature dan RSA untuk Enkripsi ............... 14
Tabel 2. 2. Perulangan d*5 mod 624 = 1 .................................................................... 15
Tabel 2. 3. Perhitungan b = 25 x 2^l dengan 0 ≤ l ≤ 6 ................................................ 21
Tabel 2. 4. Perhitungan Round Nr............................................................................... 21
DAFTAR GAMBAR
Halaman
Gambar 3. 18. Halaman untuk membaca detail tanda tangan PDF ............................ 48
Gambar 3. 19. Halaman verification .......................................................................... 49
Gambar 3. 20. Halaman pop-up untuk verifikasi pdf secara manual ......................... 50
Gambar 3. 21. Halaman untuk membaca detail verifikasi PDF ................................. 51
DAFTAR GRAFIK
Halaman
DAFTAR LAMPIRAN
Halaman
PENDAHULUAN
Tanda tangan biasanya digunakan pada dokumen sebagai bukti tertulis bahwa dokumen
tersebut telah disahkan oleh orang yang bersangkutan. Tanda tangan juga membuktikan
apakah dokumen tersebut asli dari pemilik tanda tangan jika dokumen diserahkan ke
pihak lain. Dokumen bisa berupa cetakan fisik maupun secara digital. Namun, pada
cetakan digital diperlukan sebuah pengamanan dikarenakan dokumen dapat diubah
dengan mudah oleh siapapun melalui jaringan tanpa pembuktian dari pemilik tanda
tangan meskipun sudah ditandatangani dengan cara dipindai atau di foto.
Sebagai contoh permasalahan yaitu tentang RUU Cipta Kerja atau omnibus law
yang disahkan menjadi UU oleh Badan Legislasi DPR terus berubah isinya selama 3
pekan sejak 5 Oktober 2020 sebelum disahkan oleh presiden. Alasan terjadi perubahan
isi UU adalah isi UU mengalami tipo atau perbedaan format kertas yang mengakibatkan
jumlah halaman berbeda, namun terdapat pasal yang mengalami perubahan ketika
Menteri Sekretaris Negara (Mensetneg) menyerahkan draf UU ke MUI dan
Muhammadiyah diantaranya yaitu menghapus Pasal 40 angka 7 di dokumen RUU versi
812 halaman dan perubahan tersebut adalah kesepakatan sebelumnya antara pemerintah
dan DPR (Kompas.com, 2020). Hal tersebut menimbulkan kekeliruan apakah dokumen
yang diserahkan oleh Menteri Sekretaris Negara adalah dokumen asli dari DPR atau
tidak.
Salah satu cara untuk mengatasi permasalahan tersebut yaitu menggunakan tanda
tangan digital atau disebut Digital Signature. Digital Signature adalah sebuah skema
keamanan yang memastikan dokumen tersebut asli dengan memecah dokumen menjadi
bit hash, menggunakan kunci rahasia sebagai enkripsi untuk membuat otentikasi, lalu
otentikasi menjadi tanda tangan (Stallings, 2011). Tujuan dari Digital Signature adalah
memberikan jaminan bahwa dokumen dimiliki oleh penandatangan, dan penandatangan
tidak bisa membantah kepemilikannya terhadap dokumen tersebut. Untuk menangani
masalah isi dokumen yang berubah, Digital Signature menggunakan Fungsi hash
berupa Message Digest untuk menjamin isi dokumen tidak mengalami perubahan. Jika
dikaitkan dengan permasalahan diatas, Digital Signature dapat membuktikan dokumen
yang dikirimkan dari Mensetneg ke MUI dan Muhammadiyah adalah dokumen
terontetikasi asli dari DPR melalui tanda tangan digital dengan cara menverifikasinya.
Selain RSA, terdapat algoritma kunci publik lain yang bisa digunakan pada
Digital Signature seperti algoritma Ellipctic Curve El-Gamal. Berdasarkan penelitian
dari Adekunle Micheal Adeshina, meskipun algoritma RSA lebih lambat dibandingkan
Elliptic Curve El-Gamal dalam hal pembuatan kunci, tetapi algoritma RSA mempunyai
waktu yang lebih cepat dibandingkan Elliptic Curve El-Gamal dalam hal membuat
tanda tangan dan memverifikasi. Selain itu, algoritma RSA Digital Signature lebih
cocok digunakan pada file berukuran besar (Adeshina, 2020). Hal ini membuat penulis
memilih menggunakan RSA Digital Signature untuk mengamankan file dari berukuran
kecil hingga file berukuran besar seperti file UU Cipta Kerja dengan jumlah halaman
mencapai kurang lebih 1000 halaman.
Sedangkan pada fungsi hash, terdapat beberapa jenis fungsi hash yaitu MD5,
SHA-1, SHA-2, SHA-3, Whirlpool, dan sebagainya. Perbandingan yang dilakukan oleh
(Pittalia, 2019) pada fungsi hash tersebut dalam bentuk tabel perbandingan bahwa SHA-
3 yang merupakan secure hash algorithm terbaru untuk menggantikan SHA-2
mempunyai ukuran blok terbesar diantara MD5, SHA-1, SHA-2, dan Whirlpool, yaitu
sebesar 1600-2*bits. Oleh karena itu, penulis memilih SHA-3 sebagai integritas
dokumen ketika membuat tanda tangan.
Mengetahui cara mengimplementasikan RSA Digital Signature dan fungsi hash SHA-
3 pada website untuk menjamin pengamanan pada keaslian file PDF dari segi otentikasi,
anti penyangkalan, dan integritas file.
1. Studi Pustaka
Pada tahap ini dilakukan pencarian referensi sebagai pendukung penelitian yang
berhubungan dengan RSA, Digital Signature dan SHA-3 berupa jurnal, buku,
artikel ilmiah, situs internet, maupun makalah.
2. Analisis dan Perancangan
Pada tahap ini dilakukan analisis terhadap keperluan sistem penelitian dalam
rancangan diagram alir (flowchart), Use case diagram, Activity diagram, Sequence
diagram, dan diagram Ishikawa.
3. Implementasi
Pada tahap ini akan dilakukan pembuatan sistem berbasis web menggunakan
markup HTML, CSS, dan bootstrap untuk tampilan website. Bahasa pemrograman
Javasript untuk membuat bilangan prima. Bahasa pemrograman PHP untuk proses
RSA Digital Signature. Dan database menggunakan MySql.
4. Pengujian
Sistem yang dibangun akan dilakukan pengujian apakah sistem berjalan dengan
baik, pengujian berdasarkan contoh permasalahan, dan waktu sistem memproses
file PDF.
5. Dokumentasi
Pada tahap ini dilakukan pembuatan laporan dari hasil analisa dan perancangan
sistem dalam format penulisan berbentuk skripsi.
BAB 1: PENDAHULUAN
Bab ini membahas tentang latar belakang masalah, rumusan masalah, batasan masalah,
tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika penulisan yang
akan digunakan.
Bab ini membahas landasan teori mengenai kriptografi, website dan keamanan web,
modulo, tanda tangan, Digital Signature, algoritma RSA Kunci Publik dan RSA Digital
Signature, Fungsi Hash, dan SHA-3.
Bab ini membahas tentang analisi kebutuhan dan perancangan sistem yang akan
dibangun berdasarkan dengan rumusan masalah dan batasan masalah dalam penelitian
ini
Bab ini membahas tentang implementasi sistem RSA Digital Signature dan Fungsi
Hash SHA-3 berbasis web menggunakan Bahasa pemrograman PHP berdasarkan
analisis dan perancangan sistem kemudian dilakukan pengujian sistem.
Bab ini membahas kesimpulan dari hasil penelitian yang dilakukan beserta saran untuk
pengembangan penelitian selanjutnya.
LANDASAN TEORI
2.1. Website
Website adalah kumpulan halaman informasi yang dapat diakses di seluruh dunia
melalui jaringan internet dimanapun dan kapanpun melalui smartphone maupun
komputer. Informasi yang dapat dimasukkan ke website berupa teks, gambar, video,
suara, maupun media lainnya. Website dapat dimiliki oleh individu, organisasi, atau
perusahaan untuk menyimpan suatu informasi yang ingin disampaikan secara umum.
Selain menyediakan informasi, website juga digunakan sebagai penghubung antar
pengguna untuk saling berkomunikasi, misalnya penggunaan social media seperti
facebook, Instagram, twitter, whatsapp, dan sebagainya. Untuk menggunakan website,
pengguna memerlukan web browser yang tersedia di smartphone maupun komputer.
Sisi server bertanggung jawab mengatur masukan, bacaan, edit, dan penghapusan
data di database, login, serta mengatur keamanan website. Keamanan sangat diperlukan
karena data yang dimasukkan melalui website bisa saja berupa data sensitif seperti
nomor kartu kredit, nomor induk penduduk, dokumen rahasia, dan sebagainya. Jika data
tersebut diambil atau diubah oleh pihak ketiga, data dapat disalahgunakan untuk
kepentingan pihak ketiga dan akan merugikan pengguna. Untuk mengatasinya, Bahasa
pemrograman untuk back-end dapat meminimalisir kebocoran informasi dari celah-
celah yang ada dengan menggunakan teknik kriptografi (Wadisman, Nozomi, &
Rahmawati, 2021).
2.2. Kriptografi
Kriptografi adalah istilah untuk teknik matematika yang menyediakan layanan
keamanan dengan menggunakan desain dan analisis (Martin, 2013). Kriptografi sudah
digunakan selama ribuan tahun yang lalu untuk mengamankan komunikasi dua arah.
Dimana pengirim dan penerima memiliki kunci masing-masing. Pengirim akan
mengirim pesan ke penerima dan kunci digunakan untuk mengubah pesan yang
berbentuk plaintext menjadi pesan teracak yang tidak dapat diketahui isi pesan pengirim
dan penerima oleh pihak lain yang disebut ciphertext. Proses tersebut disebut proses
enkripsi. Ketika penerima menerima pesan dari pengirim, penerima akan menggunakan
kuncinya untuk mengubah ciphertext kembali menjadi plaintext yang bisa dibaca.
Proses tersebut disebut sebagai proses dekripsi (Stinson & Paterson, 2018).
1. Kunci Simetris
Kunci simetris adalah model klasik dari kriptografi yang menggunakan kunci
rahasia (private key) sebagai enkripsi pesan dan dekripsi pesan. Namun, jika
salah satu kunci enkripsi maupun dekripsi diketahui oleh pihak lain, hal ini
membuat kriptografi kunci simetris tidak aman digunakan untuk pertukaran
pesan (Stinson & Paterson, 2018).
● Ciphertext: pesan yang diacak tergantung isi plaintext dan private key.
2.3. Modulo
Modulo atau modulus adalah salah satu bagian perhitungan untuk mendapatkan sisa
hasil bagi. Misal, sisa hasil bagi dari 100 dibagi 9 adalah 1. Sehingga ditulis 100 mod 9
= 1. Dalam pemrograman, modulo dijadikan salah satu operator dengan nama operator
mod.
Misal, terdapat bilangan bulat a dan b, a dikatakan kongruen dengan b modulo m jika
dan hanya jika a mod m & b mod m. Ditulis dengan a ≡ b (mod m).
Contoh:
Tanda tangan mempunyai karakteristik sebagai bukti yang otentik, tidak dapat
dilupakan maupun dipindah untuk digunakan ulang, dokumen yang diberi tanda tangan
tidak dapat diubah dan anti penyangkalan (Malik Hakim & Afifah S, 2020). Tanda
tangan bisa berupa tulis tangan pada dokumen fisik atau berupa gambar tanda tangan
yang dicetak untuk dokumen elektronik yang disebut sebagai Digitize Signature. Tanda
tangan yang membutuhkan pengamanan berupa bit hash dan algoritma kunci publik
pada dokumen elektronik disebut sebagai Digital Signature.
Fungsi dari Digital Signature sebagai berikut (Nurhaida, Ramayanti, & Riesaputra,
2017):
1. Integritas
Integritas dapat mendeteksi perubahan data oleh pihak lain yang tidak ada
keterlibatannya terhadap dua pihak yang sedang berinteraksi, seperti penyisipan,
penghapusan, dan mengedit data.
2. Otentikasi
Interaksi antar dua pihak harus saling bertukar informasi data, waktu pengiriman,
dan sebagainya.
3. Anti penyangkalan
Upaya untuk mencegah penolakan transmisi informasi oleh pengirim.
Algoritma RSA (Rivest-Shamir-Adleman) ditemukan oleh Ron Rivest, Adi Shamir, dan
Len Adleman pada tahun 1977 dan dipublikasikan pada tahun 1978. RSA menjadi
algoritma yang sering diterapkan untuk enkripsi kunci publik (Stallings, 2011).
C = me mod n
Keterangan:
C = nilai ciphertext
m = nilai plaintext
Setelah nilai plaintext menjadi ciphertext, proses akan berlanjut ke dekripsi. Proses
dekripsi dirumuskan sebagai berikut:
m = Cd mod n
Keterangan:
d = kunci rahasia
Perbedaan skema penggunaan dari RSA Digital Signature dengan RSA untuk enkripsi
dapat dilihat seperti pada Tabel 2.1 (Martin, 2013):
Jika proses enkripsi–dekripsi RSA mengikuti karakteristik dari skema RSA Digital
Signature seperti yang dijelaskan pada Tabel 2.1, maka algoritma RSA akan
menggunakan kunci rahasia pada proses enkripsi yang dirumuskan sebagai berikut:
C = md mod n
m = Ce mod n
Berikut adalah contoh Algoritma RSA jika mengikuti karakteristik dari skema RSA
Digital Signature.
1. Bilangan prima p = 13 dan q = 53.
2. n = 13 * 53 = 689.
Algoritma:
For d = 2 to Φ(n) do
return d
endif
endfor
2 10
3 15
4 20
...
...
125 1
6. Kunci publik adalah [5, 689] dan kunci rahasia adalah [125].
Proses Enkripsi
Misal, pengirim mengirimkan pesan dengan nilai plaintext adalah 600 dan
menggunakan kunci rahasia untuk proses enkripsi.
● C = 600125 mod 689
● C = 110
Proses Dekripsi
Pesan diterima, karena nilai m yang didapatkan oleh penerima sama dengan nilai
plaintext pengirim.
Fungsi hash adalah salah satu algoritma kriptografi untuk menjamin integritas pada
sebuah data dengan membangun sebuah string yang menjadi identitas data. Jika data
diubah, maka identitas data tidak valid. Bahkan jika data dikirimkan ke jaringan yang
tidak aman, integritas data bisa diperiksa dengan menghitung ulang identitas dan
memverifikasi bahwa identitas tidak berubah (Stinson & Paterson, 2018). Inputan dari
fungsi hash adalah data string dengan panjang tertentu, dan keluarannya berupa string
acak dengan ukuran tetap atau disebut sebagai Message Digest. Inti dari fungsi hash
adalah sebagai tanda tangan untuk data yang digunakan untuk membuat tanda tangan
digital atau Digital Signature (Soleh, 2011).
Algoritma fungsi hash yang digunakan saat ini adalah MD5 dan variasi SHA
seperti SHA-1, SHA-2, dan SHA-3. Fungsi hash dapat digabungkan dengan algoritma
2.8. SHA-3
SHA-3 atau disebut keccak ditemukan oleh Bertoni, Demen, Peeters, dan Van Assche.
SHA-3 menggunakan rancangan yang disebut konstruksi spons. Inputan pesan berupa
M dengan panjang sembarang. Lalu M dilapisi oleh padding sehingga panjang adalah
kelipatan r, kemudian pesan dipecah menjadi beberapa blok dengan panjang r (Stinson
& Paterson, 2018).
Proses SHA-3 dimulai dengan pengisian pada data (padding) dalam bentuk state.
Kemudian dilanjutkan kedalam struktur SHA-3 yang menggunakan konstruksi spons,
dimulai dari data diserap oleh spons (absorbing), blok pesan XOR menjadi bagian dari
state, sepenuhnya diubah menggunakan fungsi permutasi f, dan hasilnya diremas
(squeezing) dimana pada fase ini blok keluaran dibaca dari subset dalam keadaan yang
sama menggunakan fungsi transformasi permutasi f (Sari, 2021). Setiap state memiliki
panjang sesuai dengan panjang permutasi, yaitu b. Algoritma keccak menerima tiga
parameter input, yaitu bit rate (r), capacity (c), dan difersity (d). Secara umum proses
keccak adalah (Soleh, 2011):
1. Input message preprocessing (P), yaitu menerapkan padding ke pesan input.
Panjang pesan input padding harus kelipatan r, di mana r = bit rate.
2. Pecahkan pesan masukan menjadi P0, P1, P2 ... Pi, di mana i = kelipatan panjang
kecepatan bit dari panjang pesan masukan.
3. Absorbing pada semua pecahan input.
4. Squeezing hingga l, di mana l = kelipatan panjang output r / w untuk memenuhi
panjang output yang dibutuhkan, r = laju bit, w = panjang saluran dari status.
5. Keluarannya adalah rangkaian keluaran yang dikompresi dalam kisaran kecepatan
bit tertentu.
2.8.1. State
Proses yang dilakukan dalam state keccak didasarkan pada setiap potongan state.
Jumlah bit di setiap potongan dalam state tetap, yaitu 5 x 5 atau 25 bit. Ukuran setiap
jalur dalam state adalah 1, 2, 4, 8, 16, 32, atau 64.
Harap dicatat bahwa state adalah string bit dengan panjang b, terdiri dari nol. Blok
pertama dari pesan ter padding adalah XOR dengan bit pertama r pada state.
Kemudian terapkan fungsi f untuk memperbarui state. Sisa dari blok padding
pesan akan mengulangi proses ini. Setiap blok di xor-kan dengan bit r pertama
dari state terkini kemudian fungsi f diterapkan untuk memperbarui state.
● Fase squeezing (pemerasan)
Fungsi spon keccak menerapkan konstruksi spons dengan terlebih dahulu melakukan
proses inisialisasi. Proses inisialisasi terbagi menjadi 2 tahap, yaitu:
1. Memasangkan setiap bit pada state dengan nol untuk inisial state
2. Menerapkan padding pada pesan input sehingga pesan input adalah kelipatan dari
panjang bit rate yang ditentukan di awal. Proses ini akan menambahkan sesedikit
mungkin 1 dan 0 hingga panjang pesan mencapai kelipatan dari panjang status bit
rate yang ditentukan.
Fungsi permutasi Keccak-f adalah fungsi utama dalam keccak yang mengambil state
sebagai input. Keccak-f[b] atau keccak-f[r+c] merupakan persamaan dari fungsi
keccak-f berdasarkan persamaan b = 25 x 2l dengan 0 ≤ l ≤ 6. Maka kemungkinan nilai
b ditunjukkan pada Tabel 2.3 (Soleh, 2011):
l Hasil b
0 25
1 50
2 100
3 200
4 400
5 800
6 1600
Operasi permutasi sering disebut dengan Round Nr. Round ini ada di dalam setiap fungsi
keccak-f. Jumlah round mempunyai persamaan Nr = 12 + 2l. Jumlah round yang
direkomendasikan untuk tiap keccak-f[b] dituliskan pada Tabel 2.4.
Nr
l
12
0
14
1
16
2
18
3
20
4
22
5
24
6
Inputan dari fungsi permutasi keccak-f menjalankan 5 operasi yaitu diffusion (theta),
inter-slice dispersion (rho), disturbing horizontal/vertical alignment (phi), non-
linearity (chi), dan break symetri (iota).
1. Diffusion (θ)
Operasi diffusion hanya meng-xor-kan 11 bit menjadi satu. Akibatnya, setiap bit
mempengaruhi sebelas bit lainnya. Selama Proses operasi ini terjadi 50 XOR dan
5 rotasi.
For x = 0 to 4 do
C[x] = a[x,0]
For y = 0 to 4 do
End for
Endfor
For x = 0 to 4 do
For y = 0 to 4 do
End for
Endfor
Kegunaan dari operasi ini adalah mempercepat difusi antara slice. Operasi ini
terdiri dari operasi translasi dalam lane yang bersifat linier berupa pergeseran
ulang yang berkebalikan dengan pergeseran sebelumnya.
A[0,0] = a[0,0]
[[x,y]] = [[1,0]]
For t = 0 to 23 do
A[x,y] = ROT(a[x,y],(t+1)(t+2)/2)
[[x,y]] = [[0,1],[2,3]]*[[x,y]]
End for
Kegunaan dari operasi non-linearity adalah membuat round keccak menjadi non-
linier.
For y = 0 to 4 do
For x = 0 to 4 do
End for
End for
Berikut ini beberapa penelitian yang relevand engan penelitian yang akan dilakukan
penulis adalah sebagai berikut:
Tujuan dari analisis sistem adalah untuk mengamati atau mengidentifikasi masalah dan
sistem sebelum dilakukan perancangan sistem untuk menyelesaikan masalah. Analisis
sistem akan dilakukan dalam beberapa tahap sebagai berikut:
1. Sistem harus menjamin keamanan pada keaslian file PDF dari segi otentikasi, anti
penyangkalan, dan integritas.
2. Sistem harus membentuk kunci publik dan kunci rahasia antar user menggunakan
algoritma RSA.
3. Sistem harus dapat melakukan proses tanda tangan pada file PDF sebelum
dikirimkan ke user penerima. Sedangkan user penerima melakukan proses
verifikasi pada file PDF yang dikirim oleh user pengirim.
1. Performa
Sistem dapat membuktikan apakah dokumen yang dikirim adalah dokumen asli
dengan membandingkan nilai hash dengan nilai verifikasi yang hasilnya berupa
Valid atau Tidak Valid pada keaslian file PDF.
2. Efisiensi
Sistem yang dibangun akan didesain secara sederhana agar mudah digunakan oleh
user.
3. Dokumentasi
Sistem yang akan dibangun akan menyimpan data kunci dari algoritma RSA,
tanda tangan, file PDF, tanggal dikirim, dan data akun user.
4. User friendly
Tampilan pada sistem akan didesain responsive agar dapat digunakan di web
browser komputer dan web browser smartphone.
5. Manajemen kualitas
Sistem yang akan dibangun harus memiliki kualitas waktu dalam pembangkitan
kunci, tanda tangan, dan verifikasi dokumen PDF.
6. Kontrol
Sistem tidak akan mengunduh file PDF jika hasil verifikasi tidak valid.
Tujuan dari pemodelan sistem untuk menggambarkan interaksi antara user dengan
sistem yang dirancang serta alur proses dalam kerja sistem. Pemodelan sistem
digambarkan dalam bentuk diagram dengan menggunakan UML (Unified Modelling
Language). Diagram tersebut adalah use case diagram, activity diagram, dan sequence
diagram.
Use Case Diagram digunakan untuk menggambarkan hubungan interaksi antara aktor
(user) dengan sistem yang dirancang. Use case diagram pada penelitian digambarkan
pada Gambar 3.2.
Sequence diagram adalah gambaran hubungan antar request dari user dan respond dari
sistem. Untuk sistem dalam penelitian ini. Sequence diagram terbagi 2 yaitu sequence
diagram untuk pengirim dan sequence diagram untuk penerima.
rahasia dan nilai dari message digest. Akhirnya, nilai tanda tangan dan pdf dikirim
ke penerima dan/atau disimpan di database. Dan user dapat nilai tanda tangan,
kunci publik, dan Message Digest file PDF
3.3. Flowchart
Flowchart adalah alur kerja pada sebuah sistem secara sistematis. Pada penelitian ini,
flowchart terdiri dari bilangan prima, pembangkitan kunci algoritma RSA, proses tanda
tangan menggunakan RSA Digital Signature, dan proses verifikasi menggunakan RSA
Digital Signature.
Bilangan prima digunakan untuk membuat kunci publik dan kunci rahasia algoritma
RSA. Pada Gambar 3.9 adalah flowchart bilangan prima yang dimulai dari user
menekan tombol ‘Generate’ pada sistem web. Sistem akan membuat array prime_list
yang terisi kosong. Pada penelitian ini, sistem ingin mengambil bilangan prima antara
100 hingga 1000. Oleh karena itu, sistem menggunakan perulangan mencetak angka i
dari 100 hingga 1000. Selama perulangan tersebut, variabel flag adalah penanda bahwa
cetakan angka adalah bilangan prima lalu dilanjutkan pada percabangan yang akan
menentukan bilangan prima. Jika i (adalah angka yang tercetak) modulo j (syarat, j
(dimulai dari 2) < i) menghasilkan 0. Maka sistem akan menganggap nilai i tersebut
adalah bukan bilangan prima dengan flag = 1 dan dilanjutkan ke nilai i berikutnya. Jika
hasil modulo bukan 0, maka sistem akan terus melakukan perhitungan hingga j selisih
i. Jika semua hasil hitungan i modulo j bukan 0, maka sistem menganggap nilai i
tersebut adalah bilangan prima dengan flag = 0 lalu bilangan prima tersebut akan
dimasukkan (push) ke dalam array prime_list. Setelah semua data pada prime_list terisi
bilangan prima, sistem akan memilih satu nilai dari data prime_list secara acak untuk
nilai variabel p dan q.
Contoh:
prime_list = []
• i = 100 (flag 0)
j = 2,
100 mod 2 = 0 (flag 1, 100 bukan bilangan prima. Dilanjutkan ke i = 101)
• i = 101 (flag 0)
j = 2,
101 mod 2 = 1 (flag 0)
j = 3,
101 mod 3 = 2 (flag 0)
j = 4,
101 mod 4 = 1 (flag 0)
j = 5,
101 mod 5 = 1 (flag 0)
… hingga j = 100
j = 100,
101 mod 100 = 1 (flag 0)
Jadi, 101 adalah bilangan prima sehingga nilai i dimasukkan ke array prime_list
= [101]. Perhitungan dilanjutkan ke I = 102.
• i = 102 (flag 0)
j = 2,
102 mod 2 = 0 (flag 1, 102 bukan bilangan prima. Dilanjutkan ke i = 103)
• i = 103
j = 2,
103 mod 2 = 1 (flag 0)
j = 3,
103 mod 3 = 1 (flag 0)
j=4
103 mod 4 = 3 (flag 0)
… hingga j = 102
j = 102
Sistem akan terus mengidentifikasi bilangan prima hingga i = 1000 sehingga array
prime_list sebagai berikut:
prime_list = [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173,
179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, …, 997]
Setelah prime_list terisi bilangan prima, sistem akan memilih bilangan prima secara
acak dari prime_list untuk variabel p dan q.
ke database. Jika username penerima terisi, nilai signature dan pdf akan dikirim dan
disimpan di database.
mendownload pdf. Jika tidak sama, sistem akan menganggap keaslian PDF tidak valid
dan penerima tidak dapat mengunduh PDF. Semua proses tersebut digambarkan dalam
bentuk diagram flowchart pada Gambar 3.12.
bentuk web yang ditampilkan melalui komputer. Perancangan interface terdiri dari
halaman login, registrasi, halaman utama, halaman signature, dan halaman verification.
No. Keterangan
No. Keterangan
No. Keterangan
No. Keterangan
Text untuk menampiklan tanggal dan waktu selesai tanda tangan atau tanggal
5
dikirim ke penerima
Gambar 3. 17. Halaman pop-up untuk membuat tanda tangan dan kirim
Tabel 3.5 merupakan keterangan Gambar 3.17.
Tabel 3.5. Keterangan halaman pop-up untuk membuat tanda tangan dan kirim
(Gambar 3.17)
No. Keterangan
Button untuk memproses tanda tangan dan kirim ke penerima dan disimpan
6 ke database (jika username kosong, sistem hanya akan menyimpan hasil
proses tanda tangan ke database)
No. Keterangan
No. Keterangan
Button untuk menampilkan halaman pop-up berisi upload pdf, input kunci
1
publik, dan input nilai tanda tangan (untuk verifikasi secara manual)
Tabel 3.8. Keterangan halaman pop-up untuk verifikasi manual (Gambar 3.20)
No. Keterangan
Tabel 3.9. Keterangan halaman untuk membaca rincian verifikasi (Gambar 3.21)
No. Keterangan
Button untuk mendownload pdf (untuk penerima yang menerima pdf dan
2
tanda tangan dari pengirim melalui sistem ini)
Bab ini membahas implementasi sistem serta pengujian algoritma RSA Digital
Signature dan fungsi hash SHA-3 termasuk faktor tujuan dari Digital signature sendiri.
Yaitu, otentikasi, anti penyangkalan, dan integritas dokumen PDF.
Sistem yang dibangun pada penelitian ini menggunakan HTML, CSS, CSS Framework
Bootstrap untuk tampilan website, Bahasa pemrograman Javascript untuk generate
bilangan prima, Bahasa pemrograman PHP untuk proses RSA Digital Signature,
database menggunakan MySql, dan web browser Google Chrome versi 95.0.4638.69
(64-bit). Sedangkan spesifikasi komputer yang digunakan adalah:
“Tanda tangan & Kirim” untuk menandatangani PDF dan mengirimkannya ke user
penerima yang diisikan di form username. Jika user mengosongkan username, sistem
hanya akan menandatangani file PDF. Untuk tampilan halaman pop-up digambarkan
melalui Gambar 4.5.
Jika user mengklik salah satu data nama file pada tabel verifikasi, maka user akan
diarahkan ke halaman baru yang berisikan rincian file PDF yang diverifikasi. Gambar
4.9 merupakan halaman rincian file PDF.
Sebelum sistem digunakan oleh user sesungguhnya, maka dilakukan pengujian pada
sistem. Tujuan dari pengujian sistem untuk mengetahui apakah sistem berjalan dengan
baik sesuai dengan rancangan maupun teori atau tidak berjalan dengan baik. Pengujian
yang dilakukan di penelitian ini berupa pengujian pada proses pembuatan kunci dengan
algoritma RSA, proses penandatangan, dan proses verifikasi file pdf. Lalu dilakukan
pengujian untuk membuktikan tujuan Digital Signature yaitu pengamanan keaslian
PDF dari segi otentikasi, anti penyangkalan, dan integritas pesan berdasarkan gambaran
contoh permasalahan pada penelitian ini. Kemudian dilakukan pengujian kompabilitas
pada beberapa web browser. Serta pengujian waktu proses RSA Digital Signature pada
beberapa file PDF dari berukuran kecil hingga file PDF berukuran besar.
Diketahui user pengirim dengan username Aryadd820 ingin mengirimkan file PDF
kepada user penerima dengan username Dias1999. Bilangan prima sudah di generate
oleh user dengan p = 193 dan q = 773. Dan file PDF yang diupload mempunyai memori
sebesar 3544 KB bernama file4.pdf. Seperti yang digambarkan pada Gambar 4.10.
GCD(Φ(n), e) = 1
GCD(148224, e) = 1
Berdasarkan source code berikut:
e GCD(148224, e)
2
2
3
3
4
4
1
5
2 10
3 15
4 20
...
...
29645 1
Berdasarkan source code diatas, sistem akan membaca dan mengambil isi dari file
pdf dengan menggunakan file_get_contents yang sudah didapat dari direktori
folder upload. Lalu mengambil message digest menggunakan fungsi hash sha3-
256.
Message digest :
a3a5d838eb6674110f8bf9633e587c06fba7e78652b903f563020abf5243d733
Lalu message digest tersebut dipecah menjadi beberapa blok array $hash_array:
$hash_array = [a3a5, d838, eb66, 7411, 0f8b, f963, 3e58, 7c06, fba7, e786, 52b9,
03f5, 6302, 0abf, 5243, d733]
Sebelum mengimplementasikan sistem antarmuka, penulis sudah menguji
algoritma RSA Digital Signature untuk proses signature dan verifikasi dalam
bentuk raw (data mentah) tanpa antarmuka. Jika mengikuti signature dan verifikasi
sesuai landasan teori, hasil signature dan verifikasi adalah 0 seperti Gambar 4.11.
Hal ini dikarenakan ketika proses signature, md menghasilkan nilai sangat besar
dan PHP tidak dapat menghitung karena nilai lebih dari 2147483647 untuk sistem
32 bit.
$sign_array = [];
foreach ($hash_array as $hash_value) {
$data[0] = 1;
$mValue = hexdec($hash_value);
for ($i = 0; $i <= $d; $i++) {
$rest[$i] = pow($mValue, 1) % $n;
if ($data[$i] > $n) {
$data[$i + 1] = $data[$i] * $rest[$i] % $n;
} else {
$data[$i + 1] = $data[$i] * $rest[$i];
}
}
$get_sign = $data[$d] % $n;
array_push($sign_array, dechex($get_sign));
}
$signv_id = hexdec($sign_array[0].$sign_array[1]);
$sign_value = implode(":", $sign_array);
• … hingga $i = 29644
Diketahui $data[29644] = 4018041416
4018041416 > 149189 (true)
$data[29644 + 1] = 4018041416 x 41893 mod 149189
$data[29645] = 9126
Telah didapatkan $data[29645] = 9126
12. $sign_value menggabungkan data $sign_array dengan pembatas antar data “:”.
Sehingga nilai tanda tangan adalah:
23a6:7d33:c13e:136a5:a8c3:20d4d:14af3:1ed20:daaf:99fb:e442:117d7:1074e
:20f3a:342a:1357c
3. Verifikasi
Username Dias1999 telah menerima kiriman dari Aryadd820 yang dapat dilihat di
halaman verification. Seperti yang ditunjukkan pada Gambar 4.14.
$signs = explode(":",$getSignV);
$ver_array = [];
foreach ($signs as $sign) {
$sign_dec = hexdec($sign);
$data[0] = 1;
for ($i=0; $i <= $getPubKeyE ; $i++) {
$rest[$i] = pow($sign_dec, 1) % $getPubKeyN;
if ($data[$i] > $getPubKeyN) {
$data[$i+1] = $data[$i] * $rest[$i] % $getPubKeyN;
} else {
$data[$i+1] = $data[$i] * $rest[$i];
}
}
$get_ver = $data[$getPubKeyE] % $getPubKeyN;
array_push($ver_array, dechex($get_ver));
}
$newVer = [];
foreach ($ver_array as $ver) {
if (strlen($ver) >= 2) {
array_push($newVer, $ver);
}
else if (strlen($ver) < 2) {
$ver_combine = "0".$ver;
array_push($newVer, $ver_combine);
}
}
$get_ver = implode("", $newVer);
return $get_ver;
• $i = 5
41893 > 149189 (false)
$data[5 + 1] = 163 x 1926
$data[6] = 382315518
9. Setelah $data terisi, sistem mendapatkan verifikasi dengan mengguanakan
perhitungan sebagai berikut
• $get_ver = $data[5] mod 149189
$get_ver = 41893 mod 149189
$get_ver = 41893
a3a5d838eb6674110f8bf9633e587c06fba7e78652b903f563020abf5243d733
Dikarenakan nilai verifikasi dan nilai hash sama, maka sistem akan menganggap
hasil verifikasi “Valid” dan file pdf dapat diunduh. Gambar 4.16 adalah gambar
rincian file pdf setelah diverifikasi.
Pengujian ini menggunakan contoh permasalahan yang dibahas pada latar belakang
maupun analisis masalah. Dilanjutkan dari user yang diuji sebelumnya, ditambahkan
user ketiga dengan nama Duta200899. User tersebut ingin menverifikasi keaslian file
dari user Aryadd820. Dan user Duta200899 mendapatkan file pdf dari user Dias1999
melalui aplikasi pengiriman lain dengan nama file Aryadd820_20211130-
234134_file4.pdf dan ID tanda tangan. Cara menverifikasi PDF yaitu mengklik tombol
upload PDF di halaman verifikasi, lalu memasukkan ID tanda tangan dan upload pdf
yang dikirimkan oleh Dias1999.
Gambar 4. 20. Perbandingan file pdf asli (kiri) dengan modifikasi berupa coretan
(kanan)
Maka hasil verifikasi file pdf yang termodifikasi akan menjadi “Tidak valid” seperti
Gambar 4.21.
Gambar 4. 21. Tampilan inbox jika tidak valid (atas) dan rincian verifikasi (bawah)
Tabel 4.3 adalah hasil pengujian pada file4.pdf.
Total 0.62
1. Analisis otentikasi
User pengirim membangkitkan kunci publik dan kunci rahasia serta nilai tanda
tangan dari pengirim menggunakan RSA Digital Signature. Semua data telah
disimpan di database lalu dilakukan pengiriman file, tanda tangan, dan kunci publik
ke user penerima. Kemudian user penerima menggunakan kunci publik dan tanda
tangan untuk menverifikasi PDF. Dalam hal ini, terjadi interaksi atau otentikasi
berupa informasi tanda tangan, pdf, dan kunci yang jelas antara user pengirim
dengan penerima dengan database sebagai perantaranya.
Berdasarkan Tabel 4.3, user Aryadd820 dan user Dias1999 saling terotentikasi
karena Aryadd820 membuat kunci rahasia, kunci publik, dan tanda tangan. Lalu
4.2.3. Pengujian waktu proses pada beberapa file PDF di berbagai web browser
Selain menggunakan web browser Google Chrome. Pengujian ini menambahkan dua
web browser lagi yaitu:
Uji coba yang dilakukan adalah menguji ketiga web mengenai proses signature dan
verifikasi pada 6 file PDF dengan ukuran memori yang berbeda dikirim satu persatu,
bilangan prima p = 499 dan q = 503 sehingga kunci publik[n, e] adalah [250997, 5] dan
kunci rahasia[d] adalah [199997], dan hasil verifikasi keseluruhan file PDF Valid.
Dengan skema pengujian seperti Gambar 4.22.
Web Browser
Nama
file Google Chrome Microsoft Edge Mozilla Firefox
(ukura
n KB)
Kunc Kunc Kunc
Sign Ver Sign Ver Sign Ver
i i i
File1.p 0.015 1.281 0.003 0.012 1.060 0.005 0.012 1.093 0.002
df (6 4 4 3 9 1 7 3 1 1
KB)
File2.p 0.014 1.044 0.006 0.015 1.157 0.008 0.013 1.122 0.006
df (245 5 8 7 4 3 2 2 1 6
KB)
File3.p 0.010 1.071 0.014 0.015 1.086 0.016 0.015 1.105 0.015
df (893 8 7 8 1 2 9 5 0 8
KB)
File4.p 0.014 1.127 0.059 0.013 1.099 0.050 0.012 1.116 0.050
df 2 0 3 0 4 6 0 7 5
(3544
KB)
File5.p 0.012 1.119 0.097 0.013 1.162 0.098 0.011 1.223 0.088
df 9 4 8 5 8 5 3 0 8
(6632
KB)
File6.p 0.012 1.313 0.317 0.010 1.349 0.314 0.012 1.427 0.337
df 8 2 4 6 0 8 1 0 9
(23285
KB)
Rata- 0.013 1.159 0.083 0.013 1.152 0.082 0.012 1.181 0.083
rata 4 6 2 4 4 5 7 1 6
Total
rata-
rata
1.2562 1.2483 1.2775
(Kunci
+ sign +
ver)
Berdasarkan Tabel 4.4, dikarenakan inputan bilangan prima pada semua file sama
(yaitu p = 499 dan q = 503), maka hasil kunci publik dan kunci rahasia pada semua file
pdf adalah sama (kunci publik[n, e] = [250997, 5] dan kunci rahasia[d] = [199997])
sehingga waktu proses pembangkitan kunci hampir tidak berbeda di antara 6 file.
Grafik 4.1 dan Grafik 4.2 merupakan penyajian grafik dari Tabel 4.4 yang masing-
masing grafik adalah perbandingan waktu proses signature dan perbandingan waktu
proses verifikasi.
1.6000
1.4000
1.2000
Waktu Proses
1.0000
0.8000 Chrome
Edge
0.6000
Firefox
0.4000
0.2000
0.0000
file1 file2 file3 file4 file5 file6
File PDF
0.4000
0.3500
0.3000
Waktu Proses
0.2500
0.2000
0.1500
0.1000
0.0500
0.0000
file1 file2 file3 file4 file5 file6
File PDF
Berdasarkan Grafik 4.2, semakin besar ukuran memori file PDF semakin lama proses
verifikasi yang dibutuhkan berpengaruh pada ketiga web browser tersebut. File6 yang
merupakan file terbesar mempunyai waktu yang lebih tinggi dibanding file lain.
Berdasarkan Grafik 4.1 dan Grafik 4.2, dapat disimpulkan bahwa waktu proses
antara ketiga web browser tidak menunjukkan perbedaan yang signifikan jauh. Jadi,
user dapat menggunakan sistem dengan browser apapun. Tabel 4.5 merupakan rata-
rata waktu signature dan verifikasi tiap 6 file yang diuji.
Tabel 4. 5. Rata-rata waktu proses signature dan verifikasi ketiga web browser tiap 6
file PDF (detik)
File6.pdf (23285
1.3631 0.3234
KB)
1.6000
1.4000
1.2000
Waktu Proses
1.0000
0.8000
0.6000
0.4000
0.2000
0.0000
File 1 File 2 File 3 File 4 File 5 File 6
File PDF
Signature Verifikasi
Bab ini membahas tentang kesimpulan yang dapat diambil berdasarkan analisis dan
pengujian untuk menjawab rumusan masalah dalam penelitian ini. Serta saran dari
penulis untuk pengembangan sistem ini.
5.1. Kesimpulan
Sistem telah berjalan dengan baik pada web browser Google Chrome, Microsoft Edge,
dan Mozilla Firefox sesuai dengan tujuan Digital Signature. Yaitu menjamin keamanan
pada keaslian PDF dari segi otentikasi, anti penyangkalan, dan integritas file. Penelitian
ini menggunakan algoritma RSA Digital Signature dan Fungsi Hash SHA-3 telah
mendapatkan kesimpulan sebagai berikut:
4. Perbedaan waktu proses pada web browser Google Chrome, Microsoft Edge, dan
Mozilla Firefox tidak menunjukkan perbedaan waktu signifikan jauh.
5.2. Saran
Saran yang diberikan oleh penulis untuk pengembangan selanjutnya pada sistem ini
sebagai berikut:
1. Sistem ini hanya mampu mengamankan file PDF dari segi otentikasi, anti
penyangkalan, dan integritas file. Diharapkan pengembangan selanjutnya
menggunakan algoritma kriptografi tambahan agar keamanan semakin terjamin.
2. Diharapkan pengembangan selanjutnya menggunakan algoritma kunci publik lain
yang baru atau lebih baik lagi untuk skema Digital Signature.
3. Sistem diharapkan dapat menjamin keaslian file berformat docx, ppt, xls, dan
sebagainya.
4. Sistem diharapkan dapat mengolah bilangan prima yang lebih besar dari 1000 agar
algoritma RSA dapat membangkitkan kunci yang lebih aman.
5. Sebaiknya sistem menggunakan Bahasa pemrograman lain yang dapat menghitung
nilai yang lebih besar sesuai dengan algoritma RSA Digital Signature.
DAFTAR PUSTAKA
Kompas.com. (2020). Tiga Pekan sejak Pengesahan, Naskah UU Cipta Kerja Terus
Berubah dan Belum Bisa Diakses. Retrieved December 20, 2020, from
https://nasional.kompas.com/read/2020/10/26/10510741/tiga-pekan-sejak-
pengesahan-naskah-uu-cipta-kerja-terus-berubah-dan-belum?page=all
Nurhaida, I., Ramayanti, D., & Riesaputra, R. (2017). Digital Signature & Encryption
Implementation for Increasing Authentication, Integrity, Security and Data Non-
Repudiation. International Research Journal of Computer Science (IRJCS) Issue,
4(11), 4–14. http://doi.org/10.26562/IRJCS.2017.NVCS10080
Pranata, A., & Iryanto, C. (2019). DIGITAL SIGNATURE USING RSA DAN SHA -
1 Anggi Pranata 1 ) , Cahyo DIGITAL SIGNATURE USING RSA DAN SHA –
1, (December).
Soleh, M. Y. (2011). Studi dan Implementasi Algoritma Keccak. Program Studi Teknik
Informatika Sekolah Teknik Elektro Dan Informatika Institut Teknologi Bandung.
Stinson, D. R., & Paterson, M. B. (2018). Crytography Theory and Practice Fourth
Edition (4th ed.). Boca Raton: CRC Press, Taylor & Francis Group.
LISTING PROGRAM
sign_controller.php
<?php
require_once("../controller/connect.php");
require_once("../controller/auth.php");
function e_key($lambda_n){
if (gmp_strval(gmp_gcd($e, $lambda_n)) == 1) {
return $e;
return false;
if ($d * $e % $lambda_n == 1) {
return $d;
return false;
function renderUser($connect){
$uchk_query = $connect->query($user_check);
$datas_user = $uchk_query->fetchAll(PDO::FETCH_ASSOC);
return $datas_user;
if (isset($_POST['signnow'])) {
$start_timeK = microtime(true);
$user_received = $_POST['username'];
$prime_p = $_POST['pprime'];
$prime_q = $_POST['qprime'];
if (!$prime_p || !$prime_q) {
header("Location: ../view/signature.php?status=primes-error");
header("Location: ../view/signature.php?status=primes-same");
else {
$pdf_name = $_FILES['pdfupload']['name'];
$pdf_temp = $_FILES['pdfupload']['tmp_name'];
if ($ext == 'pdf') {
$senderID = $_SESSION['user']['id'];
$senderUN = $_SESSION['user']['username'];
$n = $prime_p * $prime_q;
$e = e_key($lambda_n);
$d = d_key($e, $lambda_n);
$end_timeK = microtime(true);
$start_timeS = microtime(true);
// pindahkan pdf
$dir = "../pdffiles/";
if ($pdf_upload) {
// hashing pdf
// proses signature
$sign_array = [];
$data[0] = 1;
$mValue = hexdec($hash_value);
} else {
array_push($sign_array, dechex($get_sign));
$signv_id = hexdec($sign_array[0].$sign_array[1]);
$end_timeS = microtime(true);
$datas_user = renderUser($connect);
if ($data_user['username'] == $user_received) {
$username_r = $user_received;
$id_r = $data_user['id'];
$sign_query = $connect->query($sign_sql);
//username kosong
if (!$user_received) {
if ($sign_query) {
header("Location: ../view/signature.php?status=sign-success");
} else {
header("Location: ../view/signature.php?status=query-error");
}
Universitas Sumatera Utara
Universitas Sumatera Utara
A-6
// username tersedia
if ($username_r == $user_received) {
$sign_chk = $connect->query($sign_id);
$datas_sign = $sign_chk->fetchAll(PDO::FETCH_ASSOC);
if ($data_sign['pdf_newname'] == $pdf_newname) {
$sign_idf = $data_sign['id'];
$ver_query = $connect->query($ver_sql);
header("Location: ../view/signature.php?status=signsend-
success");
} else {
header("Location: ../view/signature.php?status=query-error");
else {
header("Location: ../view/signature.php?status=username-notfound");
} else {
header("Location: ../view/signature.php?status=upload-error");
} else {
header("Location: ../view/signature.php?status=ext-error");
} else {
die("access denied");
?>
ver_controller.php
<?php
require_once("../controller/connect.php");
require_once("../controller/auth.php");
$signs = explode(":",$getSignV);
$ver_array = [];
$sign_dec = hexdec($sign);
$data[0] = 1;
} else {
array_push($ver_array, dechex($get_ver));
$newVer = [];
if (strlen($ver) >= 4) {
array_push($newVer, $ver);
$ver_combine = "0".$ver;
array_push($newVer, $ver_combine);
return $get_ver;
function sha3Hash($getPDF){
$dir = "../pdffiles/";
return $hash_output;
$start_time = microtime(true);
if (isset($_GET['verification'])) {
$dataID = $_GET['verification'];
$dataCheck = $connect->query($renderData);
$datas = $dataCheck->fetchAll(PDO::FETCH_ASSOC);
$getID = $data['id'];
$getSignId = $data['sign_id'];
$getPDF = $data['pdf_newname'];
$getSignV = $data['sign_value'];
$signCheck = $connect->query($signData);
$signDatas = $signCheck->fetchAll(PDO::FETCH_ASSOC);
$getPubKeyN = $signData['pubkey_n'];
$getPubKeyE = $signData['pubkey_e'];
$getSignBy = $signData['sign_by'];
// hashing pdf
$hash_values = sha3Hash($getPDF);
//proses verifikasi
if ($ver == $hash_values) {
$verify = "Valid";
} else {
$end_time = microtime(true);
// update database
$query = $connect->query($sql);
if ($query) {
header("Location: ../view/ver-
dt.php?info=$dataID&verify=success&hex=$hash_values&ver=$ver");
} else {
header("Location: ../view/ver-dt.php?info=$dataID&verify=failed");
// verifikasi manual
if (isset($_POST['vernow'])) {
$signValue = $_POST['signvalue'];
$receivedID = $_SESSION['user']['id'];
if (!$signValue) {
header("Location: ../view/verification.php?status=input-error");
} else {
$pdf_name = $_FILES['uploadpdf']['name'];
$pdf_temp = $_FILES['uploadpdf']['tmp_name'];
if ($ext == 'pdf') {
// cek id signature
$query = $connect->query($check_data);
$querydatas = $query->fetchAll(PDO::FETCH_ASSOC);
$signID = $querydata['id'];
$getSignV = $querydata['sign_value'];
$getSignVid = $querydata['signv_id'];
$getSignBy = $querydata['sign_by'];
$getN = $querydata['pubkey_n'];
$getE = $querydata['pubkey_e'];
//upload pdf
$dir = "../pdffiles/";
$pdf_newname = "(".date("Ymd-His").")".$pdf_name;
if ($pdf_upload) {
// hashing pdf
$hash_values = sha3Hash($pdf_newname);
// proses verifikasi
if ($ver == $hash_values) {
$verify = "Valid";
} else {
$end_time = microtime(true);
$query = $connect->query($sql);
if ($query) {
header("Location:
../view/verification.php?status=success&hex=$hash_values&ver=$ver");
} else {
header("Location: ../view/verification.php?status=failed");
} else {
header("Location: ../view/verification.php?status=pdf-failed");
} else {
header("Location: ../view/verification.php?status=input-
notfound&sign=$getSignFr");
} else {
header("Location: ../view/verification.php?status=ext-error");
else {
die("Access Denied!");
?>
Data Pribadi
Agama : Islam
Kebangsaan : Indonesia
Sumatera Utara
Email : aryadutadias@gmail.com
Pendidikan Formal
Pendidikan Non-Formal
Pengalaman Kerja
Kemampuan