\{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 :