jurnal adnan

8
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D /E/F, No. xx, BULAN XX TAHUN 20xx JPE UNHAS © 201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section Hal | 1 Evaluasi Kinerja Algoritma Tanda Tangan Digital RSA Untuk Aplikasi E-Voting Menggunakan Komputer Berbasis Prosesor Multicore Adnan, ST, MT, PhD Jurusan Teknik Elektro Fakultas Teknik Universitas Hasanuddin Email address: [email protected]  Abstrak Paper ini menyajikan hasil evaluasi kinerja perangkat lunak paralel yang diaplikasikan untuk sistem e -voting menggunakan bahasa cilk for menggunakan komputer paralel berbasis prosesor multicore. Evaluasi dilakukan dengan melakukan simulasi data pemungutan suara sebagai array berukuran 1024 bertipe multipecision integer. Simulasi  pemungutan suara dilakukan dengan cara memberi nilai random ke setiap elemen array tadi. Algoritma tanda tangan digital rsa 1024 bit diterapkan pada setiap elemen array. Setiap elemen array ditandatangani secara berulang -  berulang sehingga jumlah operasi tanda tangan digital rsa mencapai jumlah sekitar 590000 hingga 620000 operasi. Menggunakan komputer dengan 24 inti prosesor, aplikasi mampu melakukan 14200 operasi tanda tangan digital perdetik..  Kata-kunci: multicore, multithreading, e-voting, RSA, paralleli sm . I. Pendahuluan Hukum moore mengatakan bahwa dalam setiap 18 bulan chip-chip semikonduktor akan meningkat dua kali lipat kepadatannya. Ini berarti  bahwa, dengan ukuran yang sama, prosesor-  prosesor dapat dibuat lebih kompleks dua kali lipat. Tren peningkatan dua kali lipat ini telah memajukan arsitektur-arsitektur komputer seperti  prosesor-prosesor  pipeline dan  superscalar  yang canggih. Dan tren tersebut masih terus akan  berlanjut dengan penemuan transistor gate 3 dimensi oleh intel. Untuk mengambil manfaat dari tren peningkatan dua kali lipat tersebut, peneliti memilih arsitektur  prosesor multicore. Tujuan yang ingin dicapai dengan arsitektur multicore adalah exploitasi  paralelisme untuk meningkatkan kinerja  perangkat lunak. Para peneliti sebelumnya mempunyai masalah yakni, dengan meningkatnya kerapatan chip-chip prosesor berpengaruh terhadap peningkatan kerapatan termal prosesor-  prosesor itu. Prosesor-prosesor akan menjadi lebih  panas sehingga menaikkan frekuensi clock  prosesor-prosesor tidak dapat dilakukan lebih lanjut agar meningkat kinerjanya. Demikian juga ternyata membuat unit-unit pipeline dan superscalar yang lebih kompleks tidak dapat diikuti oleh peningkatan kinerja yang signifikan. Daripada membuat unit pipeline dan superscalar yang lebih kompleks, para peneliti menduplikasi sejumlah inti prosesor pada chip yang sama. Sistem multiprosesor berbagi memori tradisional yang digunakan pada server-server dan workstasion-workstasion. Sistem multiprosesor,  jika dapat dikatakan, dulunya tidak tersedia pada komputer-komputer pribadi. Namun dengan  perkembangan teknologi terbaru, komputer- komputer pribadi bahkan laptop dan telepon seluler telah menjadi komputer multiprosesor  berbasis prosesor multicore. Digunakannya prosesor multicore pada komputer  pribadi memberi pengaruh terhadap bagaimana  perangkat lunak harus dikembangkan. Program-  program yang berjalan pada komputer multicore haruslah merupakan program-program paralel. Karena komputer multicore adalah sistem komputer multiprosesor, maka komputer multicore dapat diprogram seperti bagaimana sistem multiprosesor pernah diprogram. Untungnya teknik pemrograman untuk sistem multiprosesor telah mendapatkan dukungan yang mapan. Pemrograman multithreading  dengan

Upload: jesus-edwards

Post on 15-Oct-2015

40 views

Category:

Documents


0 download

TRANSCRIPT

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 1

    Evaluasi Kinerja Algoritma Tanda Tangan Digital RSA

    Untuk Aplikasi E-Voting Menggunakan Komputer Berbasis

    Prosesor Multicore

    Adnan, ST, MT, PhD

    Jurusan Teknik Elektro Fakultas Teknik

    Universitas Hasanuddin

    Email address: [email protected]

    Abstrak

    Paper ini menyajikan hasil evaluasi kinerja perangkat lunak paralel yang diaplikasikan untuk sistem e-voting menggunakan bahasa cilk for menggunakan komputer paralel berbasis prosesor multicore. Evaluasi dilakukan dengan melakukan simulasi data pemungutan suara sebagai array berukuran 1024 bertipe multipecision integer. Simulasi pemungutan suara dilakukan dengan cara memberi nilai random ke setiap elemen array tadi. Algoritma tanda tangan digital rsa 1024 bit diterapkan pada setiap elemen array. Setiap elemen array ditandatangani secara berulang-berulang sehingga jumlah operasi tanda tangan digital rsa mencapai jumlah sekitar 590000 hingga 620000 operasi. Menggunakan komputer dengan 24 inti prosesor, aplikasi mampu melakukan 14200 operasi tanda tangan digital perdetik.. Kata-kunci: multicore, multithreading, e-voting, RSA, parallelism.

    I. Pendahuluan

    Hukum moore mengatakan bahwa dalam setiap

    18 bulan chip-chip semikonduktor akan

    meningkat dua kali lipat kepadatannya. Ini berarti

    bahwa, dengan ukuran yang sama, prosesor-

    prosesor dapat dibuat lebih kompleks dua kali

    lipat. Tren peningkatan dua kali lipat ini telah

    memajukan arsitektur-arsitektur komputer seperti

    prosesor-prosesor pipeline dan superscalar yang

    canggih. Dan tren tersebut masih terus akan

    berlanjut dengan penemuan transistor gate 3

    dimensi oleh intel.

    Untuk mengambil manfaat dari tren peningkatan

    dua kali lipat tersebut, peneliti memilih arsitektur

    prosesor multicore. Tujuan yang ingin dicapai

    dengan arsitektur multicore adalah exploitasi

    paralelisme untuk meningkatkan kinerja

    perangkat lunak. Para peneliti sebelumnya

    mempunyai masalah yakni, dengan meningkatnya

    kerapatan chip-chip prosesor berpengaruh

    terhadap peningkatan kerapatan termal prosesor-

    prosesor itu. Prosesor-prosesor akan menjadi lebih

    panas sehingga menaikkan frekuensi clock

    prosesor-prosesor tidak dapat dilakukan lebih

    lanjut agar meningkat kinerjanya. Demikian juga

    ternyata membuat unit-unit pipeline dan

    superscalar yang lebih kompleks tidak dapat

    diikuti oleh peningkatan kinerja yang signifikan.

    Daripada membuat unit pipeline dan superscalar

    yang lebih kompleks, para peneliti menduplikasi

    sejumlah inti prosesor pada chip yang sama.

    Sistem multiprosesor berbagi memori tradisional

    yang digunakan pada server-server dan

    workstasion-workstasion. Sistem multiprosesor,

    jika dapat dikatakan, dulunya tidak tersedia pada

    komputer-komputer pribadi. Namun dengan

    perkembangan teknologi terbaru, komputer-

    komputer pribadi bahkan laptop dan telepon

    seluler telah menjadi komputer multiprosesor

    berbasis prosesor multicore.

    Digunakannya prosesor multicore pada komputer

    pribadi memberi pengaruh terhadap bagaimana

    perangkat lunak harus dikembangkan. Program-

    program yang berjalan pada komputer multicore

    haruslah merupakan program-program paralel.

    Karena komputer multicore adalah sistem

    komputer multiprosesor, maka komputer

    multicore dapat diprogram seperti bagaimana

    sistem multiprosesor pernah diprogram.

    Untungnya teknik pemrograman untuk sistem

    multiprosesor telah mendapatkan dukungan yang

    mapan. Pemrograman multithreading dengan

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 2

    POSIX Threads[1] dan Win Thread telah lama

    dikenal oleh para pakar. Pada level pemrograman

    yang tinggi OpenMP[2] dan bahasa cilk[3][4]

    telah cukup lama tersedia. Kini penerapan

    pemrograman paralel untuk sistem komputer

    multicore pada berbagai bidang harus

    disosialisasikan secara luas.

    Tujuan dari penelitian yang diangkat dalam paper

    ini adalah mengusulkan penerapan teknik

    pemrograman paralel menggunakan bahasa

    cilkplus untuk aplikasi e-voting. Menyertai usulan,

    paper ini menyajikan evaluasi kinerja perangkat

    lunak e-voting paralel yang ditulis menggunakan

    bahasa cilkplus.

    II. Aplikasi E-Voting berbasis Prosesor Multicore

    Bagian ini memberikan survey terhadap

    prosesor-prosesor multicore, teknik dan model

    pemrograman dan membahas aplikasi e-voting

    untuk penerapan prosesor multicore.

    II.1. Prosesor Multicore

    Prosesor multicore dikembangkan setelah

    upaya meningkatkan frekuensi clock sebuah

    prosesor tidak dapat lagi dilakukan karena

    keterbatasan fisik. Selain itu, terjadi suatu

    hambatan yang disebabkankan peningkatan

    kecepatan memori tidak dapat mengikuti

    kemajuan kecepatan prosesor sehingga

    meningkatkan kecepatan prosesor tidak begitu

    berarti terhadap peningkatan kinerja.

    Pada sisi yang lain kemajuan teknologi

    semikonduktor mengakibatkan kerapatan

    perangkat semikonduktor berlipat dua kali dalam

    kurun waktu 18 bulan. Pada area yang sama,

    jumlah transistor meningkat dalam kurun waktu

    tersebut. Pemanfaatan perkembangan tersebut

    untuk menambahkan unit pipeline dan unit

    fungsional pada prosesor superpipeline dan

    superscalar tidak dapat meningkatkan kinerja

    komputr secara signifikan. Independensi instruksi-

    instruksi dalam sebuah alur eksekusi berjumlah

    terbatas adalah menjadi penyebabnya.

    Daripada menambahkan unit-unit fungsional

    pada prosesor pipeline dan superscalar tidak

    menguntungkan secara signifikan, perancang

    arsitektur komputer memutuskan membuat inti

    eksekusi prosesor menjadi beberapa duplikat yang

    identik. Inti-inti eksekusi tersebut terdiri dari unit

    kendali, unit eksekusi dan register-register dalam

    sebuah chip multicore. Pada gambar 1 sebuah

    prosesor AMD terdiri dari empat buah inti yang

    identic. Masing-masing inti terhubung ke memori

    cache level 1 dan level 2. Selain memori cache

    L1 dan L2, inti-inti pengeksekusi memiliki

    memori cache L3 secara bersama (shared).

    Hierarki memori-memori cache tersebut

    menyediakan akses dengan bandwidth yang tinggi

    serta latency yang rendah.

    SRI dan cross bar switch milik prosesor

    multicore pada gambar 1 menyediakan

    fleksibilitas akses ke memori utama. Inti-inti

    dapat mengakses memori utama lokal yang

    terhubung melalui RAM controller. Selain

    mengakses memori lokal, inti-inti prosesor dapat

    pula mengakses memori-memori remote milik

    prosesor lain melalui hypertransport link.

    Hypertransport link memungkinkan untuk

    meningkatkan skalabilitas prosesor multicore.

    Dengan keberadaan beberapa unit

    pengeksekusi, sistem operasi dapat melihat

    perangkat keras terdiri dari beberapa prosesor

    logikal dan menjadwalkan sejumlah thread-thread

    secara simultan. Sehingga misalnya sistem operasi

    dapat meluncurkan empat buah thread pada

    masing-masing core 0, core 1, core 2 dan core 3.

    Gambar 1. Prosesor multicore AMD Sistem operasi dapat saja memberikan

    sejumlah thread-thread untuk beberapa aplikasi

    Shared L3 cache

    Core 0

    L1

    cache

    System request Interface and Cross bar switch

    RAM controller Hypertransport

    Core 1

    L1

    cache

    Core 2

    L1

    cache

    Core 3

    L1

    cache

    L2

    cache

    L2

    cache L2

    cache L2 cache

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 3

    yang berbeda agar perpindahan dari satu aplikasi

    ke aplikasi dapat menjadi lancar. Namun sistem

    operasi dapat juga memberikan sejumlah thread-

    thread untuk sebuah aplikasi agar waktu eksekusi

    aplikasi menjadi lebih singkat. Teknik yang

    pertama disebut multiprocessing sedangkan yang

    terakhir disebut multithreading. Multithreading

    dapat diterapkan untuk aplikasi dimana komputasi

    sangat intensif yang salah satunya adalah aplikasi

    yang dibahas pada paper ini. Pada aplikasi multithreading, sebuah proses

    atau program terdiri dari sejumlah thread-thread yang independen. Thread-thread independen tersebut berjalan pada masing-masing inti prosesor (processor core). Sebuah program pada awalnya hanya memiliki sebuah thread yang disebut thread master. Dalam perjalan eksekusi, program dapat meminta thread-thread tambahan, Dalam hal ini sistem operasi berperan untuk membuat thread dan menugaskan prosesor-prosesor logika untuk menjalankan thread-thread tersebut. Hasil survey terhadap produk-produk prosesor multicore baik produk Intel dan AMD diperlihatkan pada tabel 1. Untuk platform komputer desktop, Intel mengeluarkan prosesor seri core ix, sedangkan AMD mengeluarkan produk Phenom. Untuk target platform server, Intel mempunyai prosesor xeon dan AMD mempunyai Opteron. Nampak pada tabel 1, jumlah thread prosesor intel dapat lebih banyak daripada jumlah core. Hal demikian karena keunggulan Intel dengan teknologi hyperthreading. Tabel 1. Prosesor Multicore Produk Intel dan AMD No Prosesor #core #thread 1 Intel Core i5 4 4 2 Intel Core i7 4 8 3 Intel Xeon E5-2407 4 4 4 Intel Xeon E5-1620 4 8 5 Intel Xeon E5-4650 8 16 6 Intel Xeon E7-2830 8 16 7 Intel Xeon E7-8870 10 20 8 AMD Phexon II X6 6 6 9 AMD Opteron seri 6100 12 12 10 AMD Opteron seri 6200 16 16

    . II.2. Pemrograman Prosesor Multicore

    Prosesor multicore merupakan desain mutakhir dari shared memory multiprocessor. Pada shared memory multiprocessor terdapat

    beberapa prosesor dan sebuah ruang memori tunggal yang terhubung melalui jaringan interkoneksi seperti bus, cross bar atau lain sebagainya.

    Untuk pemrograman sistem shared memory multiprocessor terdapat dua pilihan model pemrograman yang dapat digunakan. Model pemrograman yang pertama adalah model message passing dan model shared memory. Meskipun model message passing merupakan model pemrograman dengan paradigma sistem memori terdistribusi, model ini dapat diterapkan pada sistem shared memory multiprocessor. Pada model pemrograman message passing, komputasi parallel terhadap data dapat dilakukan melalui mekanisme komunikasi. Komunikasi antar prosesor dalam hal ini tidak melalui perangkat komunikasi, tetapi melalui shared memory. Komunikasi ini dapat bersifat point to point, broadcast ataupun multicast.

    Model pemrograman shared memory merupakan teknik pemrograman yang cocok untuk sistem prosesor multicore. Model ini juga dapat dikategorikan dalam dua kelas. Model yang pertama yaitu shared memory multiprocessing dan yang kedua adalah shared memory multithreading. Shared memory multiprocessing kurang popular penggunaan disebabkan karena sistem operasi menggunakan lebih banyak siklus clock untuk membuat dan mengelola dan proses-proses dibandingkan membuat dan mengelola thread-thread. Disamping itu sinkronisasi pada shared memory multiprocessing menyumbang overhead yang lebih besar dibandingkan shared memory multithreading. Oleh karenanya multithreading lebih menarik untuk dibahas dalam paper ini.

    Terdapat dua level parallelisme yang dapat dilakukan dengan teknik multithreading. Yang pertama disebut paralelisme level thread dan yang kedua disebut level paralelisme task.

    Paralelisme level thread adalah bentuk paralelism yang paling primitive. Sebuah program aplikasi terdiri dari beberapa thread yang berjalan secara konkuren menjalankan kode program yang sama namun mengerjakan set-set data yang berbeda. Bentuk seperti ini juga dikenal sebagai pemrograman Single Program Multiple Data (SPMD). Umumnya sinkronisasi eksekusi program dilakukan menggunakan barrier yang cenderung berujung pada situasi di mana thread yang telah selesai harus menunggu thread lain tanpa melakukan kerja (works) apapun. Teknik worksharing seperti ini telah dikenal pada standar OpenMP versi yang pertama.

    Parallelism level task merupakan sebuah teknik yang relative lebih baru dibandingkan

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 4

    dengan level paralelisme thread. Teknik ini melakukan dekomposisi komputasi menjadi sub bagian-bagian fungsional yang lebih kecil yag disebut task. Dengan demikian terdapat sejumlah task yang dapat dieksekusi secara paralel oleh sejumlah thread yang berbeda.

    Dekomposisi task dapat dilakukan secara statis maupun secara dinamis. Dengan dekomposisi task secara statis, derajat paralelisme secara statis ditetapkan oleh pembuat program. Dengan demikian selama eksekusi paralel pada program, parallelism tidak bertambah dan berkurang. Ini berbeda dengan dekomposisi secara dinamis. Derajat paralelisme dapat bertambah sehingga dekomposisi secara dinamis ini sangat cocok untuk diterapkan menggunakan prosesor-prosesor multicore. Paralelisme level task ini digunakan pada bahasa Cilk dan standar OpenMP versi 3 sejak tahun 2008. II.3 Penggunakan Prosesor Multicore Pada Aplikasi E-Voting E-voting adalah sistem pemungutan suara secara elektronik. Dalam pembahasan paper ini, pengertian e-voting dibatasi pada penggunaan teknologi informasi untuk mendukung proses pemungutan suara dalam rangka pemilihan umum ataupun pemilihan kepala daerah. Dalam prakteknya, skema pemungutan suara secara umum terdiri dari sejumlah perangkat teknologi informasi yang tersebar di semua tempat pemungutan suara (TPS) dan sebuah server yang berfungsi menerima dan merekapitulasi jumlah peroleh suara dari seluruh TPS. Pada sistem e-voting pemilih melakukan pemilihan menggunakan komputer yang terdapat pada TPS dimana dia ditetapkan untuk memilih. Komputer pada TPS kemudian melakukan rekapitulasi penghitungan suara pada saat pemilihan telah ditetapkan telah selesai waktunya. Hasil rekapitulasi perhitungan suara kemudian dikirim sebagai pesan elektronik melalui jaringan internet. Untuk membuktikan kepemilikan pesan yang sebenarnya, pesan harus diberikan tanda tangan secara digital sebelum dikirimkan. Seperti yang telah diilustrasikan dalam paper sebelumnya[5] skema e-voting menggunakan perangkat teknologi informasi diperlihatkan pada gambar 2. Dengan skema seperti itu, terdapat celah ke amanan dimana ada pihak penyerang yang mungkin mengirim suara palsu. Pihak penyerang menggunakan komputernya untuk mengirim surat suara elektronik ke server. Hal ini dapat dicegah dengan melakukan pengecekan keaslian pesan elektronik menggunakan teknologi

    tanda tangan digital. Mekanisme keamanan dengan menggunakan tanda tangan digital ini sangat terjamin keamananya, selama kunci privat yang digunakan untuk menandatangani surat suara elektronik tidak dapat diakses oleh pihal lain, meskipun kunci public dapat disebarkan. Untuk mekanisme tanda tangan digital ini RSA[4] atau DSA[5] dapat digunakan.

    Gambar 2. Arsitektur Umum Sistem E-Voting berbasis jaringan

    Gambar 3 memperlihatkan sebuah flowchart

    aplikasi e-voting. Asumsi bahwa pointer bernama current digunakan oleh sebuah prosesor untuk mengakses pesan-pesan dalam sebuah struktur antrian surat suara yang telah diterima sebelumnya. Asumsikan bahwa server memiliki database kunci publik atau memiliki ke database tersebut. Dalam sebuah loop prosesor melakukan proses sebagai berikut. Prosessor mengambil pesan yang ditunjukkan oleh pointer current jika ada pesan. Kemudian pointer current menunjuk ke pesan berikutnya agar supaya prosesor dapat mengambil pesan berikutnya pada saat perulangan selanjutnya. Berdasarkan pesan yang diambil, prosesor melakukan look-up database untuk mendapatkan kunci public RSA milik pengirim pesan. Menggunakan kunci tersebut prosesor dapat melakukan verifikasi apakah pesan dikirimkan dari komputer yang sah milik TPS. Verifikasi pesan ini dilakukan dengan menerapkan algoritma tanda tangan digital RSA. Jika pesan valid maka surat suara diekstrak hasil votingnya dan kemudian suara diakumulasikan. Jika pesan tidak valid maka ia diabaikan. Proses kemudian berulang untuk mengambil pesan berikutnya yang ditunjuk oleh pointer current.

    Deskripsi algoritma dari flowchart gambar 3 menggunakan paradigma pemrograman sequential processing. Sedangkan aplikasi yang dikehendaki

    Komputer TPS

    internet

    Server

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 5

    untuk prosesor multicore adalah paradigma pemrograman paralel. Permasalahan pertama yang muncul dengan pemrograman parallel adalah bahwa beberapa thread mengakses sebuah antrian pesan secara simultan menggunakan sebuah pointer. Kesulitannya adalah beberapa thread melakukan update secara simultan terhadap pointer current. Operasi update simultan seperti itu beresiko terhadap akses ke antrian, yakni thread mungkin mengambil elemen antrian bukan yang seharusnya disebabkan pointer current telah di update oleh thread yang lain. Disamping itu, lebih dari satu thread dapat memproses sebuah elemen antrian yang sama secara simultan yang pada akhirnya membuat komputasi melakukan perhitungan yang salah yang dikenal sebagai kondisi balapan (race condition). Kondisi balapan pada kasus multi akses ke elemen antrian suara diperlihatkan pada model OpenMP sebagai berikut

    #pragma omp parallel num_thread(24)

    #pragma omp for

    for(i=0;inext;

    pesan = current.msg;

    } Karena sejumlah thread membaca dan kemudian mengupdate pointer current secara simultan, pesan yang diakses oleh 24 thread yang berbeda menjadi tidak tentu Seperti yang diuraikan pada paper sebelumnya[5] bahasa data paralel cilk_for diusulkan untuk aplikasi e-voting berbasis prosesor multicore. Pada paper tersebut diusulkan komputer dengan prosesor multicore digunakan pada aplikasi server KPU seperti pada gambar 2. Server dengan prosesor multicore diusulkan karena potensi kinerja yang dimilikinya.

    Pada server yang diilustrasikan pada gambar 2 menerima pesan-pesan elektronik berjumlah sangat banyak. Server harus memverifikasi bahwa pesan-pesan tersebut bersumber dari komputer TPS yang sah dengan menggunakan algoritma tanda tangan digital seperti RSA. Perolehan suara pemilihan dalam pesan yang valid saja yang diakumulasikan. Sedangkan pesan palsu diabaikan. Karena jumlah pesan berjumlah sangat banyak dibutuhkan sistem komputasi berkinerja tinggi.

    Gambar 3. Flowchart sistem E-Voting

    Gambar 4. Penggunaan prosesor multicore pad aplikasi e-voting Dalam hal ini sejumlah thread dapat berjalan pada inti-inti prosesor yang berbeda secara paralel untuk mendapatkan hasil dalam waktu yang lebih cepat. Secara paralel thread-thread pada multicore melakukan komputasi sederhana seperti pada persamaan 1. Kondisi balapan ada komputasi paralel persamaan 1 dapat dengan mudah diatasi menggunakan variabel reduksi. II.4. Tanda Tangan Digital RSA

    Antrian pesan

    H T Processor multicore

    Pesan dari

    TPS

    Database

    kunci publik

    TPS

    Multi

    akses

    mulai

    current = pesan.next

    key = look_up(pesan)

    verfikasi(pesan,key)

    valid

    If(pesan)

    Suara[] += pesan.suara[]

    F

    pesan = current

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 6

    RSA adalah sebuah algoritma enkripsi asimetris menggunakan pasangan kunci privat dn kunci publik. Kekuatan teknik enkripsi RSA tidak terletak pada algorimanya. Justru kekuatan teknik enkripsi RSA terletak pada panjang kunci privatnya. Serangan terhadap teknik ini mencakup algoritma faktorisasi dan serangan brute-force. Panjang kunci privat 1024 bit dianggap cukup memadai keamanannya.

    Kunci privat dan kunci public RSA dibangkitkan menggunakan dua buah bilangan prima p dan q yang besar dengan ukuran 512 bit hingga 2048 bit. Kedua bilangan prima p dan q dapat dibuang atau disimpan secara sangat rahasia setelah pasangan kunci telah diperoleh.Langkah-langkah menghitung pasangan kunci RSA adalah sebagai berikut :

    1 Pilih dua bilagan prima p dan q yang

    besar 2 Hitung n = pq 3 Hitung (n) = (p-1) (q-1) 4 Hitung kunci public d yang relative prima

    terhadap (n) 5 Hitung kunci privat e sedemikian

    sehingga ed = 1 mod (n). Pasangan bilangan prima p dan q dapat dibuang atau disimpan secara sangat rahasia. Demikian juga dengan kunci privat e harus disimpan dengan cara yang sangat rahasia. Sedangkan kunci publik d dapat disebarluaskan bersama dengan n. Karena n dapat diakses oleh banyak pihak, maka p dan q dapat diperoleh kembalik dengan cara memfaktorkan n. Namun faktorisasi tersebut tidaklah membutukan waktu yang singkat. Kunci privat e dapat digunakan untuk melakukan enkripsi terhadap plain text M sehingga menghasilkan cipertext dengan menghitung modular exponentiation sebagai berikut

    C = ..(1)

    Sedangkan kunci public d digunakan untuk melakukan dekripsi terhadap chipetext C sehingga menghasilkan plain text M yang semula dengan menggunakan modular exponentiation yang sama sebagai berikut

    = mod n.(2)

    Adapun dalam penggunaannya untuk tanda tangan digital, kunci privat dapat digunakan untuk menandatangi surat suara elektronik dengan perhitungan yang sama pada persamaan 1. Sedangkan persamaan 2 digunakan untuk

    melakukan pengujian terhadap keaslian surat suara yang diterima oleh server. Dengan demikian, dalam hal aplikasi e-voting, penandatanganan dilakukan menggunakan kunci privat milik komputer TPS sedangkan pengujian keaslian dilakukan pada sisi server.

    III. Experiment

    Bagian ini membahas experiment untuk evaluasi

    kinerja program paralel dengan algoritma tanda

    tangan digital RSA menggunakan komputer

    berbasis prosesor multicore.

    III.1. Perangkat Lunak Yang Digunakan

    Dalam eksperimen ini, antrian pesan-pesan hasil

    pemungutan suara disimulasikan dengan

    menggunakan array bertipe integer. Jumlah

    elemen array ada sebanyak 1024. Setiap elemen

    array ditanda tangani secara berulang-ulang

    dengan kunci RSA 1024 bit sedemikian sehingga

    jumlah operasi tanda tangan berkisar 590000

    hingga 620000 operasi tanda tangan. Proses tanda

    tangan dilakukan secara paralel. Algoritma RSA

    dalam eksperimen ini diimplementasikan

    menggunakan pustaka GMP 4. Program

    dikompilasi menggunakan Intel C compiler

    dengan pustaka intel Cilkplus yang tersedia pada

    perangkat lunak Intel Parallel Studio. Pada saat

    program dikompilasi, digunakan opsi O3 lgmp.

    III.1. Metode

    Dalam penelitian ini, lunak yang

    dikembangkan berdasar pada teknik pemrograman

    parallel menggunakan teknik worstealing dan

    algoritma divide and conquer.

    Teknik workstealing[6][7][8][9] adalah

    teknik pemrograman parallel dimana prosesor-

    prosesor logika atau thread-thread yang tidak

    memiliki kerja secara aktif mencari tugas-tugas

    dari thread yang lain. Thread-thread yang lain bias

    sibuk atau membuat banyak tugas-tugas. Metode

    yang digunakan adalah thread membuat tugas-

    tugas seperti melakunan pemanggilan sub

    program/function. Dengan demikian thread tidak

    banyak mengorbankan siklus clock untuk

    membuat tugas-tugas. Teknik ini sangat efisien

    dan dikenal dengan teknik lazy task creation[10].

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 7

    Untuk memanfaatkan sejumlah sumber daya

    komputasi seperti prosesor multicore, komputasi

    di distribusikan ke setiap core-core yang dimiliki.

    Dalam hal ini, aplikasi memanfaatkan paralelisme

    dalam for-loop. Satu bahasa yang melakukan

    paralelisme pada loop adalah bahasa cilk_for.

    Bahasa cilk_for ini menggunakan pendekatan

    divide-and-conquer untuk mengimplementasikan

    parallel for-loop. Algoritma divide-and-

    conquer melakukan transformasi loop menjadi

    suatu bentuk pohon biner dimana pada daun-daun

    pohon biner itulah thread-thread mengeksekusi

    setiap iterasi dengan menggunakan teknik

    workstealing.

    III.2. Konfigurasi Percobaan

    Eksperimen dilakukan pada sebuah komputer

    multicore dengan spesifikasi sebagai berikut

    a. Dua Prosesor AMD 6168 1,9 GHz b. Total 24 core processor c. RAM DDR 3 1066 MHz 4 GB d. Sistem Operasi Linux Centos 5.5

    III.3. Pelaksanaan dan Hasil Percobaan

    Percobaan penggunakan prosesor multicore pada

    algoritma RSA 1024 bit dilakukan secara

    berulang-berulang mengikuti pengaturan jumlah

    inti prosesor. Pada percobaan yang pertama kali

    hanya digunakan sebuah inti prosesor untuk

    melakukan sebanyak 594177 tanda tangan digital.

    Percobaan diulang dengan jumlah inti prosesor

    dan jumlah operasi yang berbeda seperti yang

    ditunjukan pada tabel 2. Tabel 2 menunjukkan

    waktu-waktu eksekusi algoritma RSA dengan

    jumlah prosesor core yang berubah-ubah. Jumlah

    prosesor core ini diubah-ubah dengan mensetting

    variabel lingkungan CILK_NWORKERS yaitu

    jumlah worker. Jumlah worker 1 mengeksekusi

    594177 tanda tangan RSA dalam waktu 961 detik

    76 milidetik. Dan jumlah worker 24

    mengeksekusi 595238 tanda tangan RSA dalam

    waktu 41 detik 968 milidetik. Meskipun jumlah

    operasi tanda tangan yang terakhir ini lebih

    banyak, speedup S24 menggunakan 24 prosesor

    core yaitu

    =

    =

    =

    Tabel 2. Waktu Eksekusi algoritma RSA

    menggunakan parallel-for-loop

    CILK

    NWORKERS

    Jumlah operasi

    (tanda tangan rsa)

    Waktu

    eksekusi

    1

    2

    4

    8

    16

    24

    594177

    619386

    598981

    620156

    600420

    595238

    961 s 760 ms

    501 s 586 ms

    243 s 124 ms

    126 s 808 ms

    61 s 504 ms

    41 s 968 ms

    IV. Kesimpulan Dengan metode workstealing dan divide-and-

    conquer yang diimplementasikan oleh bahasa cilk_for sejumlah besar operasi tanda tangan digital RSA dieksekusi dengan peningkatan kecepatan 22.9 kali menggunakan prosesor core sebanyak 24. Sehingga efisiensi sumberdaya prosesor yaitu 95%. Dengan demikian metode yang digunakan dapat membantu aplikasi e-voting untuk mempercepat waktu pemrosesan surat suara digital.

    Kepustakaan

    [1] Nichols, B., Buttlar, D., and Farrell, J.~P.} Pthreads programming - a POSIX standard for better multiprocessing, O'Reilly, 1996.

    [2] OpenMP ARB. Openmp application program interface, v.3.0. Online, 2008.

    [3] R. Blumofe et~al., ``Cilk: An efficient multithreaded runtime system,'' Journal of Parallel and Distributed Computing, vol.~37, no. 1, pp. 55--69, 1996.

    [4] M. Frigo, C.E. Leiserson, and K.H. Randall, ``The implementation of the Cilk-5 multithreaded language,'' ACM SIG PLAN Notices}, vol.33, no.5, pp. 212--223, May 1998.

    [5] Adnan, Metode Divide and Conquer Parallel dan Parallel-Reduce Pada Cilk for Untuk Aplikasi E-Voting Berbasis Sistem Prosesor Multicore, Seminar Nasional Aplikasi Teknologi Informasi 2013. pp L13-L18.

    [6] Blumofe, R.D., and Leiserson, C.E. Scheduling multithreaded computations by work stealing. J. ACM 46 (September 1999), 720--748.

    [7] Efficient work stealing strategies for fine-grain task parallelism.In Proceedings of the 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and PhD Forum\/} (Washington, DC, USA, 2011), IPDPSW '11, IEEE Computer Society, pp.~577--583.

    [8] Adnan, and Sato, M.Dynamic multiple work stealing strategy for flexible load

  • Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS

    201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section

    Hal | 8

    balancing.Information and Systems, IEICE Trans. E95-D, 6 (2012), 1565--1576.

    [9] A work stealing scheduler for parallel loops on shared cache multicores. In Proceedings of the 2010 conference on Parallel processing (Berlin, Heidelberg, 2011), Euro-Par 2010,

    Springer-Verlag, pp.~99--107. [10] Mohr, E., Kranz, D.~A., and Halstead, Jr.,

    R.~H. Lazy task creation: A technique for increasing the granularity of parallel programs. IEEE Trans. Parallel Distrib. Syst. 2\/} (July 1991), 264--280.