\{0}, Implementasi aritmetika Optimal Extension Field (OEF) menggunakan bahasa pemrograman C

2 penjumlahan + dan perkalian ∙, dengan syarat: 1. , + merupakan grup komutatif dengan nilai identitas 0. 2. \{0}, ∙ merupakan grup komutatif dengan nilai identitas 1. 3. Sifat distributif berlaku: a + b ∙ c = a∙c + b∙c untuk a,b,c ∈ Hankerson et al. 2004. Field Prima Field prima merupakan suatu field yang anggotanya terdiri atas 0 sampai dengan p- 1 dengan p bilangan prima. Operasi aritmetika pada field prima merupakan operasi modulo p sehingga hasilnya merupakan struktur field Hankerson et al. 2004. Optimal Extension Field OEF OEF adalah field berhingga dengan : 1. = 2 ± untuk n dan c berupa integer dengan log 2 |c| n2; dan 2. Terdapat sebuah polinomial tak-teruraikan fz = z m – ada dalam [ ] Jika c ∈{+1}, maka OEF disebut Tipe I. Jika = 2, maka OEF disebut Tipe II. OEF Tipe I mempunyai keuntungan aritmetika yang sederhana dalam subfield , sedangkan OEF Tipe II memungkinkan penyederhanaan dalam aritmetika extension field Hankerson et al. 2004. Polinomial Tak-teruraikan Irreducible Polynomial dalam OEF Misalkan a dan n adalah prima relatif dengan a, n 0, maka bilangan terkecil x yang membuat a x ≡ 1 mod n disebut order dari a mod n. Contoh dalam : anggota adalah {0, 1, 2, 3, 4, 5, 6} 2 1 mod 7 = 2 2 4 mod 7 = 2 2 2 mod 7 = 4 2 5 mod 7 = 4 2 3 mod 7 = 1 2 6 mod 7 = 1 Yang membuat hasil pangkatnya 1 adalah 3 dan 6. Karena 3 6, maka order dari 2 adalah 3. Misalkan r, n adalah integer dan prima relatif dengan n 0. Jika order dari r adalah jumlah elemen pada field berhingga selain nol, maka r disebut primitive root modulo n. Contoh dalam : anggota adalah {0, 1, 2, 3, 4, 5, 6} 3 1 mod 7 = 3 3 4 mod 7 = 4 3 2 mod 7 = 2 3 5 mod 7 = 5 3 3 mod 7 = 6 3 6 mod 7 = 1 Order dari 3 adalah 6 dan 6 sama dengan jumlah anggota selain nol. Oleh karena itu, 3 merupakan elemen primitif dalam . Menurut Bailey dan Paar 1998, misalkan m 2 dan ∈ . Maka, binomial x m – tak- teruraikan dalam jika dan hanya jika dua syarat berikut dipenuhi :  setiap faktor prima dari m membagi order e dari dalam , tetapi tidak dengan p-1e.  p ≡ 1 mod 4 jika m ≡ 0 mod 4 dan sebagai akibat dari teorema tersebut adalah misalkan adalah elemen primitif primitive root modulo n dalam dan m adalah pembagi dari p-1. Maka, x m – adalah suatu polinomial tak-teruraikan. Algoritme Karatsuba Satu Iterasi Rumus umum untuk algoritme Karatsuba satu iterasi adalah : misalkan ada dua polinomial berderajat d dengan jumlah koefisien m = d + 1 = = Untuk i = 0 sampai m-1, hitung = Untuk i = 1 sampai 2m-3 dan s+t=i dengan m -1 t s 0, hitung , = + + Selanjutnya, = ≡ dapat dihitung sebagai berikut = = Untuk ganjil, 0 i 2m-2 , nilai adalah , , − , + 3 Untuk genap, 0 i 2m-2 , nilai adalah , , − , + + Mahfouz 2004. Algoritme Invers dalam Contoh dalam field , misalkan terdapat a ∈ . x ∈ dikatakan invers dari a jika ax mod p = 1.Terdapat beberapa algoritme invers dalam seperti algoritme extended Euclidean dan algoritme binary. Algoritme extended Euclidean merupakan perluasan dari algoritme Euclidean untuk mencari nilai x dan y sehingga ax + by = d dimana d = gcda,b. Algoritme Binary Invers merupakan algoritme invers yang mengganti operasi pembagian pada algoritme extended Euclidean dengan operasi shift pembagian dengan 2 dan pengurangan Hankerson et al. 2004. Pemetaan Frobenius Frobenius Map Diberikan dengan p = 2 – 1 dan fz = – , misalkan pemetaan Frobenius pada diberikan oleh : → mod f.  Iterasi ke-i dari adalah pemetaan : → ⌋  Jika m adalah square-free, maka ≡1 mod m dan oleh karena itu, mod m = j untuk semua 0 j m-1. Nilai ⌋ dapat dihitung pada proses prekomputasi karena nilainya bersifat tetap Hankerson et al. 2004. Menggunakan pemetaan Frobenius ini memberi kemudahan dalam melakukan perhitungan . Untuk menghitung , cukup dilakukan perkalian koefisien polinomial dengan nilai koefisien Frobenius yang bersesuaian. Algoritme Addition-Chain Algoritme ini digunakan untuk menghitung = ⋯ dengan cepat menggunakan bantuan Pemetaan Frobenius. Contoh penggunaan algoritme ini untuk m = 5 T 1  a p T 1  T 1 a= a p+1 T 2  = T 1  =  Hankerson et al. 2004. Left to Right Exponentiation Left to right exponentiation adalah salah satu algoritme pemangkatan. Ide dari algoritme ini adalah memangkatkan az sampai a n z. Contoh, menghitung a 13 pada field dapat dilakukan dengan = = . . Contoh tersebut dapat diuraikan sebagai berikut a. tulis 13 dalam biner : 1101 b. inisialisasi nilai awal hasil pangkat x = 1 c. mulai dari bit paling signifikan - x = x 2 mod p - jika nilai bitnya 1, x = xa mod p Mahfouz 2004; Hankerson et al. 2004. Pengujian Blackbox Pengujian blackbox memfokuskan pada keperluan fungsional dari software sehingga metode ini memungkinkan pengembang software untuk membuat himpunan kondisi input yang akan melatih seluruh syarat-syarat fungsional suatu program. Pengujian blackbox berusaha untuk menemukan kesalahan dalam beberapa kategori, diantaranya : 1. kesalahan fungsi 2. kesalahan interface 3. kesalahan struktur data 4. kesalahan performa 5. kesalahan inisialisasi dan terminasi Salah satu metode pengujian blackbox adalah comparison testing. Dalam beberapa situasi dimana keandalan suatu software amat kritis, beberapa aplikasi sering menggunakan software dan hardware ganda. Ketika software ganda dibuat, tim pengembang software lainnya membangun versi independen dari aplikasi dengan spesifikasi yang sama. Setiap versi dapat diuji dengan data uji yang sama untuk memastikan seluruhnya menyediakan output yang sama. Kemudian seluruh versi dieksekusi secara paralel dengan perbandingan hasil real- time untuk memastikan konsistensi Pressman 2001. METODE PENELITIAN Metode penelitian yang digunakan dalam penelitian ini adalah studi literatur, analisis, implementasi dan pengujian. Metode penelitian 4 dapat dilihat pada Gambar 1. Penjelasan untuk masing-masing langkah adalah sebagai berikut : Studi Literatur Tahapan ini diperlukan untuk mempelajari prinsip dasar aritmetika optimal extension field. Selain itu, juga mempelajari algoritme serta kajian umum lain yang berkaitan dengan field tersebut. Gambar 1 Metodologi Penelitian Analisis Dalam aritmetika OEF, hal yang paling penting adalah penentuan parameter yang digunakan, yaitu n, c, m dan . Hankerson et al. 2004 dan Cohen et al. 2006 menyebutkan bahwa keamanan kunci kriptografi kurva elips 160 bit setara dengan kunci RSA konvensional 1024 bit. Oleh karena itu, dilakukan pemilihan parameter sehingga nm mendekati 160. Pada tahap ini, dilakukan analisis mencakup penentuan nilai parameter n, c, m dan yang akan dipakai. Kemudian, akan ditentukan cara merepresentasikan OEF tersebut. Implementasi Tahap ini mencakup implementasi operasi- operasi aritmetika dalam OEF. Operasi-operasi yang diimplementasikan adalah penjumlahan, pengurangan, perkalian, kuadrat, reduksi, pemangkatan dan invers pada aritmetika OEF menggunakan bahasa pemrograman C. Lingkungan Pengembangan Sistem dibangun dan diuji dengan menggunakan hardware dan software dengan spesifikasi tertentu. Hardware yang digunakan berupa netbook dengan spesifikasi: 1. Prosesor Intel Atom N450 1,66 GHz 2. RAM 1 GB Software yang digunakan yaitu: 1. Sistem Operasi Windows 7 2. Bloodshed Dev-C++ 4.9.9.2 3. Notepad++ 4. Winmerge Pengujian Pengujian pada penelitian ini dilakukan dengan metode black box. Pengujian dilakukan dengan membandingkan output yang dihasilkan dengan output yang seharusnya. Karena setelah dicari, belum ditemukan software yang melakukan perhitungan serupa, output yang benar dicari secara hitung manual. Selain itu, dari pengujian ini akan dihitung kecepatan eksekusi dari masing-masing operasi. Operasi- operasi yang akan diuji adalah penjumlahan, pengurangan, perkalian, kuadrat, reduksi, pemangkatan dan invers. HASIL DAN PEMBAHASAN Analisis Dalam implementasi OEF, hal pertama yang harus dilakukan adalah menentukan parameter n, c, m dan yang akan digunakan. Pada penelitian ini, konfigurasi p yang digunakan adalah p = 2 n – c dengan n, c 0. OEF yang akan diimplementasikan adalah dengan panjang 8 bit dan 16 bit sehingga yang dicari adalah nilai n dan c yang membentuk p 2 8 dan p 2 16 . Untuk pemilihan m, syaratnya adalah membentuk polinomial tak teruraikan x m – . m dapat dibentuk dari faktor-faktor p-1. Selain itu, syarat yang lain adalah m jika dikalikan dengan n hasilnya mendekati 160. Nilai 160 dipilih karena jika menggunakan nilai tersebut, tingkat keamanan sistem kriptografi kurva elips yang dihasilkan dapat setara dengan 1024 bit. Untuk pemilihan , dipilih yang merupakan elemen primitif primitive root modulo p dalam . Dalam penelitian ini, parameter yang digunakan untuk OEF 8 bit adalah  n = 7, c = 1, m = 21, = 3 Tipe I, nm = 147  n = 6, c = 3, m = 30, = 2 Tipe II, nm = 180 sedangkan untuk OEF 16 bit  n = 14 , c = 3, m = 12 , = 2 Tipe II, nm = 168  n = 13 , c = 1, m = 13 , = 2 Tipe III, nm = 169 Studi Literatur Analisis Implementasi Pengujian 5 Untuk memudahkan penyebutan dalam tulisan ini, OEF yang menggunakan parameter : - n = 7, c = 1, m = 21 , = 3 selanjutnya akan disebut OEF nomor 1 - n = 6, c = 3, m = 30 , = 2 selanjutnya akan disebut OEF nomor 2 - n = 14, c = 3, m = 12, = 2 selanjutnya akan disebut OEF nomor 3 - n = 13, c = 1, m = 13, = 2 selanjutnya akan disebut OEF nomor 4 Anggota adalah polinomial, misalkan az ∈ maka az dapat ditulis sebagai berikut = = + ⋯ + + + dengan a i = 0, 1, 2, ..., p i = 0, 1, 2, ..., m-1 dan p = 2 n – c Dalam implementasinya, az dapat direpresentasikan dalam suatu array yang berisi nilai koefisien representasi dengan i bersesuaian dengan indeks dari array tersebut. Representasi diilustrasikan pada Gambar 2. Indeks m-1 ... 2 1 Isi ... Gambar 2 Representasi pada array Implementasi Operasi-operasi aritmetika pada optimal extension field ini diimplementasikan dalam bahasa pemrograman C. Bahasa pemrograman C merupakan bahasa prosedural sehingga dalam pengimplementasiannya berbentuk fungsi. Beberapa jenis tipe data dalam bahasa pemrograman C dapat dilihat pada Tabel 1. Tabel 1 Tipe data dalam bahasa pemrograman C Tipe Data Panjang Bit char 8 short 16 long 32 Untuk merepresentasikan nilai-nilai dari suku polinomial OEF, digunakan tipe data long unsigned yang mempunyai panjang 32 bit. Dalam penelitian ini, yang diimplementasikan adalah OEF 8 bit dan 16 bit. Oleh karena itu, tipe data tersebut sudah dapat menampung hasil perkalian dalam aritmetika subfield yang nilai maksimalnya 2 16 - 1 2 16 - 1 2 32 - 1. Dalam implementasinya, polinomial OEF direpresentasikan dengan tipe data struct sebagai berikut typedef struct { long unsigned num; int length; } fpm; Operasi aritmetika optimal extension field ini diimplementasikan dalam bentuk fungsi- fungsi. Beberapa fungsi-fungsi dasar yang digunakan adalah :

a. copy_fpm

Fungsi ini digunakan sebagai operasi sama dengan = pada fpm. Fungsi ini akan menyalin nilai koefisien suku-suku polinomial dari suatu fpm ke fpm yang lain. Algoritme dari fungsi copy_fpm adalah sebagai berikut Input : fpm b dan a Output : b = a 1. Alokasi memory untuk b sebesar a.length 2. n  0

3. while n a.length do 4. b