Pada tugas akhir ini sudah dibuat sebuah perangkat lunak yang dapat digunakan untuk
menyelenggarakan ujian secara semi-online. Ujian semi-online adalah ujian serentak di
berbagai lokasi sekaligus yang memanfaatkan adanya server lokal di tiap lokasi ujian.
Pada ujian semi-online, peserta ujian tidak akan berinteraksi dengan sebuah server
pusat, namun hanya dengan server lokal. Penggunaan server lokal ini bertujuan agar
tidak diperlukan server yang menangani seluruh peserta ujian sekaligus dan mengatasi
masalah jaringan internet tiap lokasi ujian.
Dengan adanya server lokal, muncul ancaman terhadap keamanan berkas soal dan
jawaban ujian. Karena itu, dibangun sebuah sistem yang menjaga keamanan berkas
soal dan jawaban ujian. Sistem ini bertujuan agar lokasi ujian dapat mendapat soal
ujian sebelum ujian dimulai dan soal terdekripsi saat ujian dimulai tanpa interaksi
antara server pusat dan lokal. Untuk itu, diajukan tiga alternatif solusi. Alternatif
pertama adalah menggunakan medium atau agen lain, namun lokasi ujian harus memiliki
medium atau agen lain. Alternatif kedua adalah menggunakan enkripsi berbasis
waktu, sehingga soal selesai didekripsi saat ujian dimulai dan tidak dapat didekripsi
sebelumnya. Namun alternatif ini membutuhkan komputasi tercepat di tiap lokasi
ujian. Alternatif ketiga adalah menggunakan secret sharing dan membagikan kunci
ke peserta ujian. Dengan demikian, dibutuhkan banyak peserta yang mengumpulkan
bagian kuncinya untuk membangun kembali kunci dekripsi, namun keamanan kunci
ujian bergantung pada peserta ujian.
Jawaban peserta dienkripsi secara simetris menggunakan kunci yang hanya dimiliki
peserta tersebut untuk menghindari perubahan jawaban. Kunci digabungkan dengan
kunci yang diberikan panitia lokal terlebih dahulu, untuk memastikan peserta hanya
dapat mengerjakan dari lokasi ujian. Selain itu, panitia lokal dapat mengunci sesi
peserta, untuk mencegah autentikasi dari perangkat lain.