KONSTRUKSI ALGORITME FUNGSI HASH HLI
RACHMAWATI DWI ESTUNINGSIH
SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR
BOGOR 2014
PERNYATAAN MENGENAI TESIS DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA*
Dengan ini saya menyatakan bahwa tesis berjudul Konstruksi Algoritme Fungsi Hash HLI adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir disertasi ini.Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.
Bogor, Januari 2014 Rachmawati Dwi Estuningsih NIM G551110011
RINGKASAN
RACHMWATI DWI ESTUNINGSIH. Konstruksi Algoritme Fungsi Hash HLI. Dibimbing oleh SUGI GURITMAN dan BIB PARUHUM SILALAHI.
Kriptografi adalah studi teknik matematik yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi asal data. Integritas data adalah suatu layanan yang berkaitan dengan pengubahan data dari pihak-pihak yang tidak berwenang. Kriptografi yang terkait dengan tujuan keamanan integritas data adalah fungsi hash. Fungsi hash merupakan fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut sebagai nilai hash. Penggunaan fungsi hash dalam menjaga integritas dan autentikasi informasi antara lain dalam pembuatan digital signature, virus protection, dan distribusi software.
Gambaran sederhana fungsi hash dalam menjaga integritas dan autentikasi informasi yang dikirim adalah pengirim mengirim informasi dan nilai hash kepada penerima. Jika nilai hash informasi yang dikirim sama dengan nilai hash yang dikirim oleh pengirim, maka informasi tidak mengalami perubahan. Jika sebaliknya, maka berarti pesan telah mengalami perubahan.
Fungsi hash harus memiliki sifat satu arah dan tahan tumbukan. Fungsi hash dikatakan bersifat satu arah apabila secara komputasi tak layak menentukan input jika diketahui nilai hash sehingga . Sedangkan, sifat tahan tumbukan dari fungsi hash adalah secara komputasi tak layak menentukan pasangan input dan dengan sehingga outputnya sama, .
Tujuan dari penelitian ini adalah membuat konstruksi algoritme fungsi hash yang diberi nama HLI, menganalisis kecepatan dan keamanan dari fungsi hash hasil konstruksi. Selanjutnya, dibandingkan dengan fungsi hash yang telah ada sebelumnya yaitu SWIFFT.
Fungsi hash HLI dikonstruksi dengan operasi polinomial modular dengan . Ring polinomial modular yang dinotasikan sebagai
adalah himpunan semua polinomial berderajat paling banyak dengan koefisien dalam . Representasi yang lebih sederhana dari dan lebih memudahkan jika diimplementasikan dalam komputer adalah bahwa dapat dipandang sebagai himpunan semua vektor intejer modulo berdimensi . Sedangkan terhadap operasi vektor, adalah latis . Selanjutnya latis yang didefinisikan dari ring polinomial disebut latis ideal.
Fungsi hash HLI melibatkan algoritme adisi dan multiplikasi dari ring . Algoritme adisi melibatkan sebanyak operasi jumlah modulo dan algoritme multiplikasi melibatkan sebanyak operasi kali modulo . Jadi secara umum algoritme fungsi hash HLI melibatkan operasi kali modulo dan operasi jumlah modulo . Namun, jika inputnya biner maka algoritme multiplikasi hanya melibatkan operasi kali modulo , sehingga algoritme fungsi hash melibatkan operasi kali modulo dan operasi jumlah modulo .
Keamanan dari fungsi hash dapat dilihat dari terpenuhinya dua sifat yaitu satu arah dan tahan tumbukan. Pembuktian bahwa fungsi hash HLI bersifat satu arah mengikuti pembuktian dari Micciancio. Fungsi hash HLI bersifat tahan
tumbukan karena telah dipilih polinomial yang tak teruraikan atas dan monik. Selain itu terbukti bahwa untuk setiap vektor satuan hasil kali ring dari dan merupakan vektor pendek. Jika input dari fungsi hash merupakan bilangan biner maka fungsi hash HLI hanya melibatkan operasi penjumlahan modulo . Sehingga waktu yang digunakan hampir sama dengan SWIFFT. Keunggulan fungsi hash HLI adalah mempunyai ukuran kunci yang lebih kecil daripada SWIFFT. Hal ini berpengaruh pada memori untuk penyimpanan kunci lebih kecil.
SUMMARY
RACHMAWATI DWI ESTUNINGSIH. Algorithm Construction of HLI Hash Function. Supervised by SUGI GURITMAN and BIB PARUHUM SILALAHI.
Cryptography is a study of mathematical techniques related to aspects of information security regarding on confidentiality, data integrity, entity authentication, and data origin authentication. Data integrity is a service, which is associated with the conversion of data carried out by unauthorized parties. To maintain data integrity, one can use hash functions. An hash function is a computationally efficient function to map an arbitrary length bitstring to a fixed length bitstring called as hash value. The use of hash function in maintaining the information integrity and authentication is in digital signatures, virus protection, and software distribution.
Illustration of the hash function in the integrity and authentication of information that is emailed as follow. The sender sends the information and hash value to the recipient. If the hash value of the information is equal to the hash value that is sent by the sender, then information has not been changed. Otherwise the information has been changed.
An hash function has two properties, one way and collision resistance. An hash function is called one way if it is computationally infeasible to find any input such that when given any hash value . Meanwhile an hash function is called collision resistant if it is computationally infeasible to find any
two inputs where such that .
The purpose of this study is to construct a HLI hash function algorithm, to analyze the speed and security of the hash functions as a results of construction. Furthermore, it is to compare it with SWIFFT.
Hash function is constructed based on the result of algebraic operations on modular polynomial ringwith . Modular polynomial ring noted as is a set of all polynomials of degree at most with coefficients in . can be represented as a set of integer vector of modulo in dimension . So, it is simple to implement in a computer. In vector operations, is lattice . Furthermore, alattice that is defined from certain polynomial ring is called ideal lattice.
HLI hash function is consists of addition and multiplication algorithm in the ring. Addition algorithm consists of sumation operations of modulo and multiplication consists of multiplication operations of modulo . Generally, algorithm of HLI hash function consists of multiplication operations of modulo and addition operations of modulo . However, if the input is binary number then multiplication algorithm only consists of multiplication operation of modulo , so algorithm of HLI hash function consists of multiplication operations of modulo and addtion operations of modulo
.
An hash function is secured if it has two properties, i.e., one way and collision resistance. HLI hash function hash is one way, it is following the proof of Micciancio. It is has collision resistant because of polynomial is irreducible over and monic. Moreover, it is proved that for every unit vector
, the vector is small vector. If the input of hash function is a binary number then HLI hash function only involves addition operations of modulo . So the time that used almost same with SWIFFT. The excellence of HLI hash function is the key size smaller than SWIFFT. This effect on memory for key storage is smaller.
© Hak Cipta Milik IPB, Tahun 2013
Hak Cipta Dilindungi Undang-Undang
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan atau menyebutkan sumbernya. Pengutipan hanya untuk kepentingan pendidikan, penelitian, penulisan karya ilmiah, penyusunan laporan, penulisan kritik, atau tinjauan suatu masalah; dan pengutipan tersebut tidak merugikan kepentingan IPB
Dilarang mengumumkan dan memperbanyak sebagian atau seluruh karya tulis ini dalam bentuk apa pun tanpa izin IPB
Tesis
sebagai salah satu syarat untuk memperoleh gelar Magister Sains
pada
Program Studi Matematika Terapan
KONSTRUKSI ALGORITME FUNGSI HASH HLI
SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR
BOGOR 2014
Judul Tesis : Konstruksi Algoritme Fungsi Hash HLI Nama : Rachmawati Dwi Estuningsih
NIM : G551110011
Disetujui oleh Komisi Pembimbing
Dr Sugi Guritman Ketua
Dr Ir Bib Paruhum Silalahi, Mkom Anggota
Diketahui oleh
Ketua Program Studi Matematika Terapan
Dr Jaharuddin, MS
Dekan Sekolah Pascasarjana
Dr Ir Dahrul Syah, MScAgr
Tanggal Ujian: 5 Desember 2013
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian ini ialah kriptografi, dengan judul Konstruksi Algoritme Fungsi Hash HLI.
Terima kasih penulis ucapkan kepada Bapak Dr Sugi Guritman dan Bapak Dr Ir Bib Paruhum Silalahi, MKom selaku pembimbing, serta Bapak Dr Ir Fahren Bukhari, MSc selaku penguji luar yang telah banyak memberi saran. Di samping itu, penghargaan penulis sampaikan kepada Direktur Akademi Kimia Analisis Bogor yang telah memberikan kesempatan untuk melanjutkan studi. Ungkapan terima kasih juga disampaikan kepada suami, anak, ibu, ayah, serta seluruh teman-teman, atas segala doa dan kasih sayangnya.
Semoga karya ilmiah ini bermanfaat.
Bogor, Januari 2014 Rachmawati Dwi Estuningsih
DAFTAR ISI
DAFTAR TABEL vi DAFTAR GAMBAR vi DAFTAR LAMPIRAN vi 1 PENDAHULUAN 1 Latar Belakang 1 Tujuan Penelitian 2 Manfaat Penelitian 2 2 TINJAUAN PUSTAKA 3 Fungsi 3 Fungsi Hash 3 Aljabar 6 Latis 8 Kompleksitas Waktu 9 Polinomial Atas 10Ring Polinomial Modular 11
Penelitian Terkait 13
3 METODE 16
Mengkonstruksi algoritme fungsi hash berbasis latis 16 Menganalisis kecepatan dari algoritme fungsi hash hasil konstruksi 16 Menganalisis keamanan dari fungsi hash hasil konstruksi 16
4 HASIL DAN PEMBAHASAN 18
Konstruksi Algoritme Fungsi Hash HLI 18
Analisis Kecepatan 20
Analisis Keamanan 22
Perbandingan dengan SWIFFT 23
5 SIMPULAN DAN SARAN 25
Simpulan 25
Saran 25
DAFTAR PUSTAKA 26
DAFTAR TABEL
1 Bentuk Oh-besar 10
2 Hasil Program Fungsi Hash HLI 22
3 Perbandingan Ukuran Kunci dari SWIFFT dan HLI 24
4 Perbandingan Umum SWIFFT dan HLI 24
DAFTAR GAMBAR
1 Hubungan antara Panjang Input dan Waktu Running Program 22
DAFTAR LAMPIRAN
1 Program Fungsi Hash HLI 27
2 Hasil Program Fungsi Hash 30
1 PENDAHULUAN
Latar Belakang
Perkembangan teknologi komputer dan telekomunikasi pada saat ini mempengaruhi cara masyarakat dalam berkomunikasi. Salah satunya adalah cara masyarakat melakukan pertukaran informasi atau pesan, yang dahulu biasanya melalu pos sekarang banyak yang beralih dengan menggunakan email melalui jaringan internet. Karena email menggunakan jaringan internet yang merupakan infrastruktur telekomunikasi yang dapat dipergunakan oleh banyak pihak maka terbuka peluang penyadapan informasi oleh pihak lain. Oleh karena itu aspek keamanan dalam pertukaran informasi menjadi sangat penting.
Kriptografi adalah studi teknik matematik yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi asal data. Integritas data adalah suatu layanan yang berkaitan dengan pengubahan data dari pihak-pihak yang tidak berwenang. Untuk menjamin integritas data, kita harus mampu mendeteksi manipulasi data dari pihak-pihak yang tidak berwenang. Manipulasi data diartikan sebagai hal-hal yang berkaitan dengan penghapusan, penyisipan, dan penggantian data.
Untuk menjaga integritas data dapat digunakan fungsi hash. Fungsi hash merupakan fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut sebagai nilai hash. Penggunaan fungsi hash dalam menjaga integritas dan autentikasi informasi antara lain dalam pembuatan digital signature, virus protection, dan distribusi software.
Gambaran sederhana fungsi hash dalam menjaga integritas dan autentikasi informasi yang dikirim adalah pengirim mengirim informasi dan nilai hash kepada penerima. Jika nilai hash informasi yang dikirim sama dengan nilai hash yang dikirim oleh pengirim, maka informasi tidak mengalami perubahan. Jika sebaliknya, maka berarti pesan telah mengalami perubahan.
Fungsi hash yang banyak digunakan dewasa ini umumnya dirancang berbasis aritmetik boolean, mirip dengan pola konstruksi algoritme sistemkripto kunci simetrik. Namun, fungsi hash tersebut telah mendapat banyak serangan untuk melemahkan sifat keamanannya. Beberapa contoh metode serangan yang dimaksud seperti; kriptanalisis linear, kriptanalis diferensial, dan kriptanalis tanggal lahir yang umumnya berbasis teori kombinatorika dan peluang. Efektifitas serangan-serangan itu dikarenakan konstruksi fungsi yang bersangkutan umumnya tidak disertai bukti keamanan teoritik yang berlandaskan pada problem komputasi matematik.
Sebenarnya telah dicoba konstruksi fungi hash yang tumpuan keamanannya berlandaskan problem komputasi dalam area teori bilangan. Karena kinerja algoritmenya sangat lambat maka fungsi hash tersebut kurang aplikatif. Hal inilah yang menarik minat para peneliti kriptografi untuk merancang algoritme fungsi hash yang efisien dan didukung bukti keamanan teoritik berlandaskan problem komputasi matematik. Problem komputasi latis diharapkan dapat menjadi dasar untuk mendapatkan fungsi hash yang ideal. Pada dasa warsa terakir ini penelitian di bidang kriptografi berbasis latis meningkat.
2
Sistemkripto berbasis problem latis mulai diperkenalkan pada pertengahan tahun 1990-an. Pengenalan ini berdasarkan pada keunggulan dari problem latis, yaitu menjanjikan pembuktian keamanan kuat yang berdasarkan worst-case hardness, implementasi yang efisien, dan kriptografi berbasis latis diyakini aman terhadap komputer kuantum.
Konstruksi kriptografi berbasis latis pertama kali disajikan oleh Ajtai pada tahun 1996. Ajtai mendefinisikan keluarga fungsi satu arah yang keamanannya bertumpu pada problem komputasi kasus terburuk dari aproksimasi SVP dengan faktor nc, dimana n adalah dimensi latis dan konstanta c>0. Selanjutnya, Goldreich (1996) menunjukkan bahwa fungsi satu arah tersebut merupakan fungsi hash yang tahan tumbukan.
Pada tahun 2002, Micciancio menggunakan latis cyclic sebagai sumber kerumitan baru dan membentuk fungsi satu arah yang efisien dari asumsi kompleksitas kasus terburuk. Peikert (2005) memodifikasi asumsi dari fungsi yang dibentuk Micciancio dapat ditunjukkan bahwa fungsi tersebut merupakan fungsi hash yang tahan tumbukan.
Lyubashevsky (2008) mengkonstruksi algoritme fungsi hash berbasis latis yang mengutamakan efisiensi yang disebut SWIFFT. Pada dasarnya fungsi hash SWIFFT adalah varian yang sangat optimal dari fungsi hash dan sangat efisien dalam praktek karena penggunaan Fast Fourier Transform (FFT) di Zq.
Dalam penelitian ini akan dikonstruksi algoritme keluarga fungsi hash sebagai varian dari SWIFFT, kemudian dilakukan analisis kecepatan dan keamanan dari fungsi hash hasil konstruksi.
Tujuan Penelitian
Tujuan dari penelitian ini adalah:
1. Melakukan konstruksi algoritme fungsi hash berbasis latis. 2. Menganalisis kecepatan dari fungsi hash hasil konstruksi. 3. Menganalisis keamanan dari fungsi hash hasil konstruksi.
Manfaat Penelitian
Manfaat dari penelitian ini antara lain:
1. Memberikan rangkuman mengenai fungsi hash berbasis latis. 2. Memberikan varian baru dari fungsi hash berbasis latis.
3. Menjadi acuan bagi pengguna fungsi hash dalam hal kecepatan dan keamanan dari fungsi hash berbasis latis.
4. Metode untuk pembuktian keamanan fungsi hash dapat digunakan sebagai acuan pembuktian dari fungsi hash yang lain.
3
2 TINJAUAN PUSTAKA
Fungsi
Definisi 2.1.1 (Fungsi) Suatu fungsi dari himpunan ke himpunan , dinotasikan , didefinisikan sebagai suatu aturan yang memetakan setiap anggota ke tepat satu anggota (Menezes et al. 1996).
Dalam hal ini , disebut domain dan disebut kodomain dari . Jika dan adalah hasil pemetaan dari oleh , maka disebut imej dari dan disebut preimej dari oleh , dan dinotasikan . Himpunan imej dari semua anggota disebut imej dari dan dinotasikan . Jelas bahwa Ada tiga sifat fungsi yaitu injektif (satu-satu), surjektif (onto), dan bijektif (korespondensi satu-satu)
Definisi 2.1.2 (Injektif) Suatu fungsi disebut fungsi injektif jika setiap anggota dari adalah imej dari paling banyak satu anggota (Menezes et al. 1996).
Dari definisi tersebut maka (kardinalitas harus sama atau kurang dari kardinalitas ).
Definisi 2.1.3 (Surjektif) Suatu fungsi disebut fungsi surjektif jika untuk setiap anggota merupakan imej dari paling sedikit satu anggota A, atau . Dengan kata lain, dan kardinalitas lebih kecil dari kardinalitas (Menezes et al. 1996).
Definisi 2.1.4 (Bijektif) Suatu fungsi disebut fungsi bijektif jika merupakan fungsi injektif dan juga fungsi surjektif (Menezes et al. 1996).
Fungsi Hash
Definisi 2.2.1 (Fungsi hash) Fungsi hash adalah fungsi yang secara komputasi
efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut dengan nilai hash (Menezes et al. 1996).
Secara umum fungsi hash dibagi menjadi dua, yaitu: fungsi hash tak berkunci dan fungsi hash berkunci. Fungsi hash tak berkunci mempunyai spesifikasi mengatur parameter input tunggal (pesan). Sedangkan fungsi hash berkunci mempunyai spesifikasi mengatur dua parameter input berbeda (pesan dan kunci). Fungsi hash juga dapat didefinisikan sebagai berikut:
Definisi 2.2.2 (Fungsi hash) Fungsi hash adalah fungsi yang mempunyai
minimal dua sifat berikut:
1. Kompresi: memetakan input dengan sembarang panjang bit yang berhingga, ke output dengan panjang bit tetap .
2. Kemudahan komputasi: diketahui dan suatu input , mudah dihitung (Menezes et al. 1996).
4
Sedangkan berdasarkan kegunaannya fungsi hash dibedakan menjadi dua, yaitu:
1. MDC (Manipulation Detection Code), merupakan subkelas dari fungsi hash tak berkunci. MDC bertujuan untuk memberikan jaminan integritas data sebagaimana diperlukan dalam aplikasi khusus. Dua bahasan yang termasuk dalam MDC adalah:
a. Fungsi hash satu arah (one way hash function/OWHF):fungsi hash ini bersifat bahwa jika diketahui suatu nilai hash, maka untuk menentukan sembarang inputnya adalah tak layak.
b. Fungsi hash tahan tumbukan (collision resistant hash function/CRHF): fungsi hash ini mempunyai sifat bahwa jika diketahui suatu nilai hash, maka untuk menentukan sembarang dua inputnya adalah tak layak. 2. MAC (Massage Authentication Code), merupakan subkelas dari fungsi
hash berkunci. MAC mempunyai dua parameter berbeda, yaitu: input pesan dan kunci rahasia. MAC bertujuan untuk menjamin integritas data dan asal data.
Berikut ini tiga sifat fungsi hash tak berkunci dengan input dan output :
1. Ketahanan preimej (preimage resistance), jika diketahui sembarang nilai hash , maka secara perhitungan tak layak mencari sehingga
. Istilah lain untuk ketahanan preimej adalah satu-arah (one-way). 2. Ketahanan preimej kedua (2nd-preimage resistance), jika diketahui ,
maka secara perhitungan tak layak mencari sehingga
. Istilah lain untuk ketahanan preimej kedua adalah ketahanan tumbukan lemah (weak collision resistance).
3. Ketahanan tumbukan (collision resistance), secara perhitungan tak layak mencari dua input berbeda sehingga . Istilah lain untuk ketahanan tumbukan adalah ketahanan tumbukan kuat (strong collision resistance).
Hubungan logika dari ketiga sifat tersebut dinyatakan dalam proposisi berikut ini:
Proposisi 2.2.3 Fungsi hash yang mempunyai sifat ketahanan tumbukan, maka
dijamin mempunyai sifat ketahanan preimej kedua. Kontraposisinya, fungsi hash yang gagal bersifat ketahanan preimej kedua, maka pasti tidak tahan tumbukan.
Bukti:
Andaikan mempunyai sifat ketahanan tumbukan dan ambil satu input . Karena tahan tumbukan, maka tak layak mencari dengan sehingga
. Ini berarti bersifat tahan preimej kedua.
Proposisi 2.2.4 Fungsi hash yang tidak tahan preimej kedua, tidak ada jaminan
tahan preimej. Begitu pula sebaliknya, fungsi hash yang gagal bersifat tahan preimej, juga tidak menjamin tahan preimej kedua.
Berdasarkan sifat-sifat di atas, berikut ini dipertegas mengenai definisi OWHF dan CRHF.
5
Definisi 2.2.5 (OWHF) OWHF adalah fungsi hash dengan dua sifat pada definisi
fungsi hash ditambah sifat ketahanan preimej dan ketahanan primej kedua. Istilah lain OWHF adalah fungsi hash satu arah lemah (Menezes et al. 1996).
Definisi 2.2.6 (CRHF) CRHF adalah fungsi hash yang bersifat kompresi dan
kemudahan komputasi ditambah sifat ketahanan preimej dan ketahanan tumbukan. Istilah lain untuk CRHF adalah fungsi hash satu arah kuat (Menezes et al. 1996). Sedangkan definisi lengkap untuk MAC diberikan berikut ini:
Definisi 2.2.7 (Algoritme MAC) Algoritme MAC adalah keluarga fungsi
dengan parameter kunci rahasia k mempunyai sifat:
1. Kemudahan komputasi (ease of computation): diketahui fungsi , diberikan nilai dan input , maka mudah dihitung. Hasil fungsi ini disebut nilai-MAC atau MAC saja.
2. Kompresi (compression): memetakan input dengan sembarang panjang bit berhingga, ke output dengan panjang bit tetap . Selanjutnya diberikan suatu deskripsi dari keluarga fungsi , untuk setiap nilai tetap yang dibolehkan (musuh tidak boleh mengetahui), sifat keamanan berikut dipenuhi:
3. Ketahanan komputasi (computation resistance): diberikan nol atau lebih pasangan teks-MAC , secara komputasi tak layak menghitung sembarang pasangan untuk sembarang input baru
(termasuk mungkin untuk suatu (Menezes et al. 1996). Jika ketahanan komputasi tidak dipenuhi, algoritme MAC disebut pemalsuan MAC. Ketahanan komputasi mengakibatkan secara perhitungan tak layak menentukan kunci jika diketahui satu atau lebih pasangan teks-MAC . Sebaliknya, ketahanan kunci tidak harus mengakibatkan ketahanan komputasi. Hubungan logika sifat keamanan fungsi hash yang berkunci dan yang tak berkunci diberikan dalam proposisi berikut:
Proposisi 2.2.8 Jika adalah fungsi hash yang tahan komputasi (berarti tahan terhadap serangan pilih teks tanpa tahu kunci ), maka:
1. pasti tahan tumbukan 2. tahan preimej.
Bukti:
Misalkan adalah tahan komputasi, maka:
1. Jika telah dipilih pasangan , tanpa tahu tidak layak menghitung (memilih) pasangan dengan sehingga
.
2. Andaikan tidak tahan preimej, tanpa tahu bisa dipilih pasangan dengan adalah preimej dari .
Kebanyakan fungsi hash didisain melalui proses iteratif yang menginputkan bitstring dengan panjang sembarang dan mengoutputkan bitstring dengan panjang tetap. Misalkan adalah bitstring dengan panjang sembarang
, nilai hash adalah bitstring dengan panjang tetap dihitung melalui tahapan proses berikut:
6
1. Proses penambahan bit ekstra (padding). Input dibagi menjadi blok, ,
Yang setiap blok mempunyai panjang Jika bukan kelipatan dari , maka dilakukan penambahan bit ekstra (padding) agar blok terakhir mempunyai panjang . Sering juga ditambahkan blok ekstra sebagai representasi biner rata kanan dari . Blok ini menyimpan informasi panjang yang asli.
2. Proses kompresi. Setiap blok akan bertindak sebagai input dari fungsi kompresi yang menghitung secara iteratif dengan rumusan
.
adalah vektor inisial yang nilainya didefinisikan sebelumnya, adalah nilai berantai yang disebut variabel berantai (channing variable) merupakan bitstring dengan panjang . Output dari proses ini adalah .
3. Proses finalisasi. Proses ini sifatnya opsional, yaitu mentransformasikan oleh fungsi ke bitstring dengan panjang m,
.
Jika proses ini tidak dilakukan berarti adalah fungsi identitas, yaitu .
Aljabar
Di sini akan diberikan definisi dari ruang vektor dan basis sebagai dasar aljabar dari latis. Nantinya dapat dilihat bahwa latis yang dibangkitkan oleh suatu basis mempunyai kemiripan dengan subruang vektor dalam yang direntang oleh basis .
Definisi 2.3.1 (Ruang Vektor) Diberikan sembarang himpunan dan sembarang
field . Pada didefinisikan aturan jumlah dan aturan perkalian skalar vektor. disebut ruang vektor atas jika terhadap aturan-aturan tersebut memenuhi 10 aksioma-aksioma berikut:
1. .
2. .
3. .
4. , dalam hal ini .
5. .
6. .
7. .
8. .
9. .
10. dimana 1 adalah unsur identitas dari terhadap operasi kali (Anton and Rorres 2000).
Definisi 2.3.2 (Subruang) Misalkan adalah ruang vektor atas skalar dan . disebut subruang dari jika juga merupakan ruang vektor atas terhadap operasi yang sama dengan (Anton and Rorres 2000).
7
Definisi 2.3.3 (Kombinasi Linear) Misalkan adalah ruang vektor atas skalar .
Didefinisikan himpunan terdiri atas vektor dalam . Suatu vektor disebut kombinasi linear dari jika sehingga
(Anton and Rorres 2000).
Teorema 2.3.4 Misalkan adalah ruang vektor atas skalar , dan adalah himpunan yang terdiri atas vektor dalam . Himpunan yang anggotanya semua kombinasi linear dari , dinotasikan , yaitu
, merupakan subruang dari (Anton and Rorres 2000).
Dalam hal ini disebut subruang yang direntang oleh . Selanjutnya, 〈A〉 merupakan subruang terkecil yang memuat , artinya untuk setiap subruang
dari yang memuat , pasti .
Definisi 2.3.5 (Bebas Linear) Misalkan adalah ruang vektor atas skalar , dan
adalah himpunan yang terdiri atas vektor dalam . disebut bebas linear jika
. Ingkarannya, disebut terpaut linear jika
(Anton and Rorres 2000).
Definisi 2.3.6 (Basis) Misalkan adalah ruang vektor atas skalar , dan adalah
himpunan berhingga vektor-vektor di dalam . Dikatakan adalah basis untuk jika bebas linear dan (Anton and Rorres 2000).
Definisi 2.3.7 (Ring) Ring adalah himpunan dengan dua operasi biner, yaitu
penjumlahan dan perkalian yang memenuhi aksioma-aksioma berikut : a. bukan himpunan kosong
b. c. d. e. f. g.
h. (Anton and Rorres 2000).
Definisi 2.3.8 (Ideal) Diketahui ring komutatif dengan elemen satuan dan . Himpunan disebut ideal pada jika dan hanya jika memenuhi ketiga aksioma berikut:
a. b.
8
Misalkan merupakan suatu ideal dari R. Dibentuk koleksi himpunan = dan disebut sebagai koset. Diperhatikan bahwa I juga merupakan koset, yaitu . Diperhatikan juga bahwa
karena dan berakibat .
Lemma 2.3.9 (Ring kuosen) Diketahui ring komutatif dengan elemen satuan
dan ideal sejati pada . Didefinisikan penjumlahan dan perkalian koset sebagai berikut:
a. b.
maka merupakan ring komutatif dengan elemen satuan dan ring tersebut dinamakan ring kuosen terhadap (Anton and Rorres 2000).
Definisi 2.3.10 (Homomorfisme) Diberikan ring dan . adalah homomorfisme ring jika memenuhi
a.
b. .
Selanjutnya, jika surjektif disebut epimorfisme dan jika bijektif disebut isomorfisme.
Latis
Latis merupakan objek geometrik dalam ruang dimensi- yang dapat diilustrasikan sebagai himpunan titik-titik dengan susunan yang teratur dan periodik. Berikut ini definisi latis secara matematik:
Definisi 2.4.1 (Latis) Misalkan adalah himpunan vektor bebas linear dalam ruang vektor . Latis yang dibangkitkan oleh adalah himpunan
beranggotakan semua kombinasi linear dari anggota-anggota . Dalam hal ini, disebut dengan basis untuk dan dapat dinyatakan sebagai matriks
.
Definisi 2.4.2 (Parallelepiped dasar) Untuk sembarang latis dengan basis
dapat didefinisikan himpunan
yang disebut parallelepiped dasar atau daerah fundamental dasar dari latis . Paralellepiped merupakan bangun pejal setengah terbuka. Jika diilustrasikan dalam ruang berdimensi dua, maka paralellepiped merupakan bidang jajaran genjang setengah terbuka.
9
Definisi 2.4.4 (Dual latis) Dual dari latis , dinotasikan , didefinisikan sebagai
.
Dalam pendefinisian masalah latis digunakan aproksimasi dengan faktor aproksimasi dan kualitas dari solusinya diukur dengan sembarang fungsi dari latis yaitu .
Definisi 2.4.5 (Shortest independent vectors problem yang diperumum, notasi: ) Diberikan basis latis , carilah buah vektor latis yang bebas linear
dengan ).
Definisi 2.4.6 (Guaranteed distance decoding, notasi: ) Diberikan basis
latis dan sebuah titik target , carilah titik latis dengan , dimana adalah rank dari latis.
Definisi 2.4.7 (Incremental guaranteed distance decoding problem,
notasi: ) Diberikan basis latis berdimensi- , himpunan -vektor latis yang bebas linear , titik target , dan bilangan
real , carilah vektor latis dengan .
Definisi 2.4.8 ( ) Diberikan ideal dengan polinomial
monik berderajat , carilah dan .
Definisi 2.4.9 ( ) Diberikan ideal dan
dengan , carilah dan .
Kompleksitas Waktu
Fungsi kompleksitas waktu adalah ukuran matematis berapa lama algoritme mampu menyelesaikan suatu masalah. Fungsi kompleksitas waktu adalah yang mengambil nilai input integer positif dan mempunyai sifat akan membesar jika membesar. Berikut diberikan pengertian dominasi fungsi sebagai dasar dalam mempelajari fungsi kompleksitas waktu.
Definisi 2.5.1 (Dominasi fungsi) Misalkan . Kita katakan bahwa mendominasi (atau didominasi ) jika ada konstanta dan
sedemikian sehingga
, dimana .
Definisi 2.5.2 (Fungsi kompleksitas waktu) Fungsi kompleksitas waktu
adalah fungsi yang mengukur banyaknya operasi dalam suatu algoritme yang mempunyai variabel input .
Berikut ini beberapa bentuk Oh-besar yang sering muncul dalam analisis algoritme:
10
Tabel 1 Bentuk Oh-Besar
Bentuk Oh-besar Nama
O(1) O( O(n) O( O( ) O( ) O( ), m=0, 1, 2, … O( ), c>1 O(n!) Konstan Logaritmik Linear Kuadratik Kubik Polinomial Eksponensial Faktorial
Definisi 2.5.3 (Big Oh) Suatu fungsi jika .
Polinomial Atas
Definisi 2.6.1 (Polinomial atas ) Diberikan field , suatu ekspresi dalam notasi
, berbentuk
disebut polinomial dalam x atas jika .
Polinomial dikatakan berderajat n, notasi deg , jika
dan untuk setiap . Dalam hal demikian, disebut koefisien pemimpin (leading) dan sukunya disebut suku pemimpin. Polinomial dengan koefisien pemimpin disebut monik.
Didefinisikan sebagai himpunan semua polinomial atas , maka dapat dituliskan
.
Definisi 2.6.2 (Pembagian polinomial) Misalkan , dikatakan membagi habis , notasi , jika ada sehingga
. Dalam hal demikian, disebut pula faktor atau pembagi dari , atau disebut kelipatan dari .
Proposisi 2.6.3 (Algoritme pembagian) Untuk dan , selalu bisa ditemukan sepasang polinomial sehingga berlaku
dimana .
Definisi 2.6.4 (Polinomial teruraikan dan tak-teruraikan)
Polinomial dikatakan teruraikan (reducible) atas jika ada keduanya tak-konstan (berderajat positif) sehingga
11 polinomial teruraikan atas . Jadi, dikatakan tak-teruraikan atas jika hanya mempunyai faktor konstan atau dirinya sendiri. Dengan kata lain,
konstan atau konstan.
Ring Polinomial Modular
Misalkan adalah suatu ideal dalam , berarti untuk setiap
dan berlaku . Proposisi berikut menegaskan bahwa struktur beranalog dengan .
Proposisi 2.7.1 memiliki struktur daerah ideal utama. Artinya, untuk setiap ideal dalam , ada tepat satu polinomial monik dan berderajat
terkecil dalam sehingga , terkadang
dinotasikan .
Berdasarkan proposisi 2.7.1, untuk selanjutnya setiap disebut ideal dalam dimaksudkan monik dan berderajat terkecil dalam .
Untuk suatu , himpunan
disebut koset dari yang memuat dan jelas merupakan subhimpunan dari . Keluarga koset dinotasikan
.
Ketika pada didefinisikan operasi jumlah koset dan kali koset:
Maka diperoleh proposisi sebagai berikut
Proposisi 2.7.2 merupakan ring dan disebut ring kuosen.
Dengan memandang bahwa adalah grup terhadap operasi jumlah dan J adalah subgrup normal, maka merupakan partisi dari .
Proposisi 2.7.3 (Teorema Dasar Homomorfisme) Diberikan ring dan , jika
adalah epimorfisme ring, maka isomorfik dengan (notasi: dengan pemadanan isomorfisme
.
Untuk intejer positif , ambil polinomial monik dengan deg
. Didefinisikan pemetaan dengan rumus untuk setiap ,
Dengan dihitung sebagai sisa dari dibagi , sehingga diperoleh lemma berikut
12
Bukti:
Ambil , berdasarkan proposisi 2.6.3, berarti ada sehingga
Akibatnya ada sehingga
Dan ada sehingga
.
Teorema 2.7.5 Ring dan adalah isomorfik.
Bukti:
Berdasarkan Lemma 2.7.4, adalah epimorfisme ring.
Akibatnya, dengan Proposisi 2.7.3 diperoleh .
Dalam hal ini,
. Sedangkan
. Karena deg dan dari definisi mod, maka bisa dinyatakan
. Sehingga, dari Teorema 2.7.5, pemadanan isomorfisme dan
bisa dinyatakan sebagai berikut. Jika
dan maka
dan . Akibatnya diperoleh proposisi berikut
Proposisi 2.7.6 Aritmetik ring dapat dibawa (diisomorfismekan) ke aritmetik polinomial modular , yaitu
13 Ambil sembarang , maka dapat dipandang sebagai anggota berderajat , akibatnya untuk setiap diperoleh . Perkalian ini, kemudian didefinisikan sebagai aturan kali skalar di dalam . Karena adalah grup komutatif terhadap operasi jumlah ring, maka diperoleh teorema berikut
Teorema 2.7.7 Terhadap operasi jumlah ring dan aturan kali skalar,
merupakan ruang vektor atas dengan basis baku . Selanjutnya, dan adalah dua ruang vektor yang isomorfik dengan pemadanan isomorfisme
.
Penelitian Terkait
Konstruksi kriptografi berbasis latis pertama kali disajikan oleh Ajtai pada tahun 1995. Ajtai merepresentasikan keluarga fungsi satu arah yang keamanannya bergantung pada worst-case hardness dari nc-aproksimasi SVP untuk beberapa konstan . Berikut algoritme fungsi hash dari Ajtai:
Paramater : bilangan bulat Kunci : matriks
Fungsi hash : diberikan oleh .
Selanjutnya, Goldreich (1996) menunjukkan bahwa fungsi hash yang dikemukakan oleh Ajtai merupakan fungsi hash yang tahan tumbukan dengan memilih parameter . Namun fungsi hash ini mempunyai ukuran kunci yang besar sehingga kurang efisien dalam prakteknya. Pada tahun 2002, Micciancio menggunakan latis cyclic sebagai sumber kerumitan baru dan membentuk fungsi satu arah yang efisien dari asumsi kompleksitas kasus terburuk. Sembarang matriks A diganti dengan blok matriks
dengan setiap blok adalah matriks seperti berikut
,
Dengan menggunakan notasi matriks bisa ditulis
dengan ,
14
Berikut ini algoritmenya:
Parameter : bilangan bulat dengan dan vektor .
Kunci : m/n vektor .
Fungsi hash : diberikan oleh
.
Peikert (2005) menunjukkan bahwa fungsi tersebut merupakan fungsi hash yang tahan tumbukan. Selanjutnya, Lyubashevsky (2008) mengkonstruksi algoritme fungsi hash berbasis latis yang mengutamakan efisiensi yang disebut SWIFFT. Pada dasarnya fungsi hash SWIFFT adalah varian yang sangat optimal dari fungsi hash dan sangat efisien dalam praktek karena penggunaan Fast Fourier Transform (FFT) di Zq. Berikut ini algoritme dari SWIFFT:
Parameter : Bilangan bulat dengan , q bilangan prima, dan .
Kunci : m/n vektor .
Input : m/n vektor .
Output : vektor .
Keluarga fungsi hash berbasis latis mempunyai aspek keamanan yang bertumpu pada masalah komputasi kasus terburuk dari aproksimasi latis. Analisis keamanan dari keluarga fungsi hash berbasis latis meliputi sifat satu arah dan tahan tumbukan yaitu dengan menunjukkan bahwa untuk menemukan invers dan tumbukan dari fungsi hash serumit menyelesaikan masalah aproksimasi latis yang mendasarinya. Hal ini diharapkan dapat memberikan keamanan yang lebih kuat daripada pendekatan klasik yang berlandaskan pada teori kombinatorika dan peluang.
Sebuah fungsi hash berbasis latis memiliki sifat satu arah jika dapat dibuktikan bahwa masalah menemukan invers dari fungsi tersebut dapat direduksi dengan waktu polinomial dari masalah latis yang tidak dapat diselesaikan dengan waktu polinomial. Selanjutnya, untuk membuktikan bahwa fungsi hash hasil konstruksi bersifat satu arah, akan ditunjukkan untuk mencari invers dari fungsi hash serumit menyelesaikan masalah latis dalam kasus terburuk yaitu masalah SIVP (Shortest Independent Vector Problem). Peikert dan Rossen (2006) menunjukkan sifat satu arah melalui dua langkah, yaitu:
1. Masalah latis dalam kasus terburuk ( ) dapat direduksi menjadi masalah kasus terburuk menengah yaitu incremental GDD ( ) 2. Masalah kasus terburuk menengah ( ) dapat direduksi menjadi
masalah mencari invers dari fungsi hash hasil konstruksi.
Sebuah fungsi hash berbasis latis terbukti tahan tumbukan jika masalah menemukan tumbukan dari fungsi tersebut dapat direduksi dengan waktu polinomial dari masalah latis yang tidak dapat diselesaikan dengan waktu polinomial. Hal ini berarti jika dapat ditemukan tumbukan dari fungsi hash dengan waktu polinomial, maka dengan algoritme reduksi dengan waktu polinomial yang menggunakan algoritme menemukan tumbukan dapat diperoleh
15 solusi untuk masalah latis yang tidak dapat diselesaikan dengan waktu polinomial. Ini merupakan kontradiksi, sehingga untuk menemukan tumbukan tidak semudah menyelesaikan masalah latis tersebut. Lyubashevsky dan Micciancio (2006) telah menunjukkan bahwa fungsi hash berbasis latis bersifat tahan tumbukan dengan menunjukkan Lemma 2.8.1 dan Teorema 2.8.2 sebagai berikut:
Lemma 2.8.1 Ada reduksi dari ke dengan waktu polinomial.
Teorema 2.8.2 Misalkan keluarga fungsi hash yang dikonstruksi dengan
dan . Untuk , ada reduksi
dengan waktu polinomial dari untuk suatu ke masalah menemukan tumbukan dari fungsi hash hasil konstruksi.
16
3 METODE
Penelitian ini merupakan telaah pustaka sehingga tahap pertama dari penelitian ini adalah mengkaji beberapa jurnal dan buku yang terkait dengan fungsi hash dan konsep latis yang mendasarinya. Selanjutnya dilakukan konstruksi fungsi hash berbasis latis sebagai varian dari fungsi hash berbasis latis yang sudah dikembangkan. Fungsi hash harus memenuhi sifat kemudahan komputasi sehingga fungsi hash hasil konstruksi akan dianalisis kecepatannya. Selain itu harus memenuhi sifat one way dan collision resistant sehingga fungsi hash hasil konstruksi juga akan dianalisis keamanannya.
Mengkonstruksi algoritme fungsi hash berbasis latis
Tahap pertama adalah telaah pustaka dari jurnal dan buku yang terkait dengan fungsi hash berbasis latis, selanjutnya dirangkum dan dikembangkan menjadi algoritme fungsi hash berbasis latis yang baru. Berikut langkah-langkahnya:
1. Mempelajari landasan teori mengenai -ary latis.
2. Mengkaji konstruksi fungsi hash dari Ajtai dan pengembangannya. 3. Mengkaji fungsi hash berbasis latis ideal dan latis cyclic.
4. Mengkaji fungsi hash SWIFFT.
5. Mengkonstruksi algoritme keluarga fungsi hash dengan membuat kunci fungsi hash yang lebih kecil ukurannya memilih polinomial tak terurai yang berbeda dengan SWIFFT.
Menganalisis kecepatan dari algoritme fungsi hash hasil konstruksi
Fungsi hash hasil konstruksi akan dianalisis kecepatannya dengan cara: 1. Mempelajari landasan teori mengenai analisis algoritme.
2. Mendefinisikan fungsi kompleksitas waktu dari fungsi hash hasil konstruksi dengan menghitung banyaknya operasi dalam fungsi hash hasil konstruksi yang terdiri dari banyaknya operasi dasar (jumlah, kurang, kali, bagi), operasi assignment, dan perbandingan (ekspresi logika).
3. Menentukan order atau bentuk Oh-besar dari fungsi kompleksitas waktu sebagai ukuran efisiensi fungsi hash hasil konstruksi.
Menganalisis keamanan dari fungsi hash hasil konstruksi
Keamanan dari fungsi hash sangat penting, sehingga perlu dianalisis kemananan dari fungsi hash hasil konstruksi dengan cara sebagai berikut:
1. Menganalisis sifat satu arah (one way) dari fungsi hash berbasis latis, yang terkait dengan salah satu masalah komputasi dalam latis yaitu Shortest Independent Vector Problem (SIVP). SIVP adalah jika
17 diberikan suatu basis latis , maka tentukan vektor bebas
linear dengan yang
meminimalkan .
2. Menganalisis sifat tahan tumbukan (resistant collision) dari fungsi hash berbasis latis, yang terkait dengan salah satu masalah komputasi dalam latis yaitu Shortest Vector Problem (SVP). SVP adalah jika diberikan suatu basis latis , maka tentukan vektor terpendek tak nol yang berada dalam latis .
3. Menganalisis sifat tahan tumbukan dengan menunjukkan bahwa polinomial yang tak teruraikan atas dan monik serta untuk setiap vektor satuan hasil kali ring dari dan merupakan vektor pendek.
18
4 HASIL DAN PEMBAHASAN
Konstruksi Algoritme Fungsi Hash HLI
Misalkan bilangan prima ganjil, dinotasikan
sebagai field intejer bilangan prima. Selanjutnya diambil polinomial
yang bersifat monik berderajat . Polinomial dapat ditulis sebagai vektor intejer bilangan prima
. Ring polinomial modular adalah himpunan semua polinomial berderajat paling banyak dengan koefisien dalam , yaitu
.
Untuk sembarang yang ditulis
didefinisikan operasi penjumlahan sebagai berikut
dan operasi perkalian yaitu
.
Representasi yang lebih sederhana dari dan lebih memudahkan jika diimplementasikan dalam komputer adalah bahwa dapat dipandang sebagai himpunan semua vektor intejer berdimensi , yaitu
.
Selanjutnya, suatu latis berdimensi yang didefinisikan dari ring polinomial modular secara umum disebut latis ideal. Untuk mendapatkan latis ideal sebagai berikut: untuk suatu maka ada ideal
dan . Sehingga diperoleh
.
Lemma 4.1.1
Setiap ideal dengan polinomial berderajat-n yang monik dan tak teruraikan, isomorph dengan latis berdimensi penuh dalam .
Bukti:
Misalkan dengan dan berderajat paling banyak . Jelas bahwa polinomial bebas linear pada . Jika polinomial bebas linear pada , maka latis memuat n vektor
bebas linear yaitu . Jika polinomial tidak
bebas linear, maka ada polinomial tak nol
sehingga . Jadi untuk suatu
19 atau , padahal dan polinomial berderajat maka hal tersebut tidak mungkin kecuali kalau dan adalah 0.
Dari sini dapat dikonstruksi sebuah keluarga fungsi hash berbasis latis, yaitu dengan memilih parameter adalah bilangan bulat dimana habis dibagi oleh dan adalah bilangan prima. Input dari fungsi hash ini adalah dengan . Kunci dari fungsi hash adalah dua vektor sembarang . Dari kunci inilah nantinya akan dibangkitkan vektor-vektor yang lain yaitu
untuk . Selanjutnya, dapat didefinisikan keluarga fungsi hash:
dimana . Berikut algoritme fungsi hash berbasis latis secara umum:
1. Parameter : dan adalah bilangan bulat dan adalah bilangan prima. 2. Kunci : dua vektor sembarang
3. Input : dengan .
4. Output: .
Fungsi hash ini harus bersifat kompresi yang artinya panjang output harus lebih kecil dibanding panjang input. Panjang input dari fungsi hash HLI adalah Sedangkan panjang output adalah Jadi agar fungsi hash HLI memenuhi sifat kompresi maka parameter yang dipilih di atas harus memenuhi
.
Dalam penelitian ini dipilih yang merupakan polinomial monik dan tak teruraikan. Pemilihan modulo pada perkalian polinomial dalam menyebabkan multiplikasi dari sembarang dua anggota dalam representasi vektor menjadi lebih sederhana dan lebih mudah jika diimplementasikan dengan komputer. Berikut ini ilustrasinya:
. Dari hasil ini, diambil , maka
dan berikutnya diperoleh
Secara umum, untuk berlaku
Sehingga algoritme multiplikasi dalam adalah sebagai berikut:
Input: vektor dalam
Output: vektor sebagai hasil multiplikasi dari dan dalam .
1. Inisialisasi dan .
20
a. dimana menotasikan putaran dari ke kanan satu satuan.
b. dimana adalah vektor yang semua komponennya 0 selain komponen ke- yaitu .
3. Jika , hitung .
4. Return
Langkah-langkah dalam algoritme di atas pada dasarnya merupakan perkalian matriks intejer modular , yaitu
Sehingga algoritme untuk fungsi hash ini adalah sebagai berikut: Kunci : dua vektor sembarang
Input : dengan .
Output: vektor sebagai hasil multiplikasi dan adisi dalam ring .
1. Inisialisasi .
2. Untuk bilangan bulat s/d , hitung: a. b. c. d. 3. Return Analisis Kecepatan
Analisis kecepatan di sini maksudnya adalah menghitung banyaknya operasi dalam algoritme fungsi hash yang dikonstruksi. Pertama akan dihitung banyaknya operasi dalam algoritme penjumlahan dalam ring , yaitu sebagai berikut:
1. Sebuah operasi assigment sebagai statemen awal untuk variabel s yang merupakan banyaknya elemen vektor yang akan dijumlahkan.
2. Inti dari operasi penjumlahan di sini ada dalam blok statemen ‘if’ yaitu sebuah operasi untuk mengecek apakah salah satu vektor yang akan dijumlahkan merupakan vektor nol kemudian:
a. Jika salah satu vektor merupakan vektor nol maka ada sebuah assigment yang menyatakan hasil penjumlahan merupakan vektor yang satunya. Dengan kata lain di sini tidak perlu operasi penjumlahan modulo .
21 b. Jika kedua vektor bukan vektor nol maka untuk dilakukan sebanyak
kali operasi penjumlahan modulo .
Selanjutnya, dalam algoritme multiplikasi dalam ring ada algoritme perkalian skalar dan vektor modulo dan algoritme memutar vektor ke kanan satu satuan. Oleh karena itu sebelum menghitung banyak operasi perkalian dalam ring, akan dihitung operasi dalam perkalian skalar dan vektor modulo sebagai berikut:
1. Sebuah operasi assigment yang menyatakan variabel awal adalah banyak elemen vektor.
2. Dalam menghitung hasil perkalian ada buah operasi perkalian modulo . Sedangkan banyak operasi dalam algoritme memutar vektor satu satuan ke kanan adalah:
1. Sebuah operasi assigment yang menyatakan variabel awal adalah banyak elemen vektor.
2. Dalam memutar vektor ada dua operasi yaitu mengambil elemen terakhir dari vektor kemudian menyisipkan elemen tersebut sebagai elemen pertama dari vektor.
Perhitungan banyak operasi dari dua algoritme di atas dapat digunakan untuk menghitung banyaknya operasi dari algoritme perkalian dua vektor dalam ring yaitu:
1. Ada 2 operasi assigment sebagai statemen awal untuk variabel dan T, variabel merupakan banyak elemen dari vektor.
2. Variabel H sebagai hasil perkalian skalar dan vektor modulo yang melibatkan operasi perkalian modulo .
3. Dalam blok statement ‘for’ yang diulang
a. Ada empat buah operasi yaitu variabel S sebagai hasil memutar vektor, variabel c sebagai hasil penjumlahan, variabel T sebagai hasil penyisipan c ke vektor S, dan variabel b.
b. Jika b bukan nol maka ada operasi perkalian modulo dan operasi penjumlahan modulo .
Algoritme fungsi hash dapat dihitung banyak operasinya adalah sebagai berikut:
1. Ada lima buah operasi assigment sebagai statement awal untuk variabel n, m, k, H dan C.
2. Dalam blok statemen ‘for’ yang diulang kali, yaitu: a. Empat buah assigment untuk variabel a, b, K dan C
b. Sebuah multiplikasi dalam ring yang melibatkan operasi perkalian modulo .
c. Dua buah adisi dalam ring yang masing-masing melibatkan
operasi penjumlahan modulo .
Jika diambil parameter maka dalam algoritme fungsi hash tidak melibatkan multiplikasi dalam ring . Sehingga hanya melibatkan penjumlahan dalam ring yang terdiri operasi penjumlahan modulo yang diulang sebanyak kali. Jadi algoritme fungsi hash dengan parameter dan input dengan panjang terdiri dari operasi modulo .
Selain dihitung kompleksitas algoritme, juga dilakukan percobaan menghitung waktu lamanya program dalam menghitung nilai hash. Dalam
22
percobaan ini diambil parameter , sedangkan panjang input ( ) diambil dalam 6 titik. Untuk memperoleh nilai waktu, di sini setiap nilai m diulang sebanyak 5 kali kemudian dihitung rata-ratanya sehingga diperoleh hasil sebagai berikut:
Tabel 2 Hasil Program Fungsi Hash HLI Panjang Input (bit) Waktu (detik)
1024 0,33 2048 0,643 4096 1,373 8192 2,718 16384 5,357 32768 10,745
Jika disajikan dalam grafik sebagai berikut:
Gambar 1 Hubungan antara Panjang Input dan Waktu Running Program Dari Gambar 1 dapat dilihat bahwa untuk input dengan bilangan biner dihasilkan waktu yang linear dengan panjang input. Dari Tabel 2 dilakukan uji linearitas untuk mengetahui apakah panjang input dan waktu mempunyai hubungan yang linear atau tidak. Uji linearitas dengan menggunakan program Minitab menghasilkan nilai . Karena nilai kurang dari 5%=0,05 maka dapat disimpulkan bahwa terdapat hubungan yang linear antara panjang input dan waktu.
Analisis Keamanan
Keamanan dari fungsi hash dapat dilihat dari terpenuhinya dua sifat yaitu satu arah dan tahan tumbukan. Fungsi hash bersifat satu arah jika diketahui suatu
0 2 4 6 8 10 12 0 5000 10000 15000 20000 25000 30000 35000 W a k t u ( d e t i k )
23 nilai hash maka untuk menentukan inputnya adalah tidak layak. Pembuktian bahwa fungsi hash berbasis latis bersifat satu arah mengikuti pembuktian dari Micciancio (2002). Selanjutnya, fungsi hash disebut bersifat tahan tumbukan jika diketahui suatu nilai hash maka untuk menentukan sembarang dua input yang berbeda adalah tak layak. Pembuktian fungsi hash dengan tak teruraikan atas bersifat tahan tumbukan telah ditunjukkan oleh Lyubashevsky (2006). Menurut Lyubashevsky(2006) untuk mendapatkan sifat tahan tumbukan maka polinomial
harus bersifat:
a. adalah polinomial monik, berderajat , tak teruraikan atas , b. Untuk setiap vektor satuan , hasil kali ring dari
dan merupakan vektor pendek, artinya terbatas .
Polinomial merupakan polinomial berderajat n dan monik karena koefisien dari suku pemimpin adalah satu. Dalam penelitian ini dipilih parameter n yang sesuai untuk aplikasi nyata, umumnya dipilih nilai n adalah kuasa 2 ( disesuaikan dengan ukuran mesin. Telah diperiksa untuk n=8, 16, 32, 64, 128, 256, 512, 1024 dengan menggunakan software matematika bahwa polinomial bersifat tak teruraikan. Untuk sifat kedua ditunjukkan dengan teorema berikut
Teorema 4.3.1 Jika dan adalah sembarang dua vektor satuan anggota
dan , maka .
Bukti:
Ambil sembarang vektor satuan dan , maka representasi polinomial bisa dituliskan sebagai dan dengan
sehingga diperoleh representasi dari adalah
jika , maka bukti selesai karena yang berarti adalah vektor satuan sehingga . Jika , maka bukti juga selesai karena
sehingga . Jika , maka ada
dengan sehingga
Karena maka jelas bahwa dan sehingga
diperoleh . Dari sini diperoleh .
Walaupun dalam teorema 4.3.1 menyatakan bahwa terbatas ke , akan tetapi dari buktinya nilai adalah yang lebih kecil dibandingkan dengan untuk .
Perbandingan dengan SWIFFT
Perbandingan fungsi hash HLI dan SWIFFT secara khusus dengan
parameter disajikan dalam Tabel 3.
24
Tabel 3 Perbandingan Ukuran Kunci dari SWIFFT dan HLI dengan
Ukuran (bit) SWIFFT HLI
Input 1024 1024
Kunci 8192 1025
Output 513 513
Tabel 4 Perbandingan umum SWIFFT dan HLI
Keterangan SWIFFT HLI
Kunci vektor sembarang dalam 2 vektor sembarang dalam Perhitungan Menggunakan Fast Fourier
Transform
Menggunakan operasi dalam ring polinomial modular
. Waktu
Tabel 3 menunjukkan bahwa untuk parameter yang sama antara fungsi hash SWIFFT dan HLI diperoleh ukuran kunci dari fungsi hash HLI lebih kecil ukurannya dibandingkan kunci dari fungsi hash SWIFFT. Ukuran kunci ini berpengaruh dalam penyimpanannya. Ukuran kunci yang lebih pendek membutuhkan memori penyimpanan yang lebih kecil sehingga dapat meringankan kinerja dari mesin.
Tabel 4 memperlihatkan perbedaan antara SWIFFT dan HLI adalah pada proses perhitungannya. SWIFFT menggunakan Fast Fourier Transform dan HLI menggunakan operasi dalam ring polinomial modular. Operasi dalam ring polinomial modular lebih sederhana dibandingkan Fast Fourier Transform, sehingga dipercaya bahwa fungsi hash HLI kecepatannya lebih baik dibanding SWIFFT walaupun waktunya sama-sama linear.
25
5 SIMPULAN DAN SARAN
Simpulan
Fungsi hash HLI dikonstruksi dengan parameter bilangan bulat dan bilangan prima adalah
dimana input dari fungsi hash adalah dan kuncinya
. Dengan input dari fungsi hash merupakan bilangan biner maka fungsi hash HLI hanya melibatkan operasi penjumlahan modulo . Sehingga waktu yang digunakan hampir sama dengan SWIFFT. Keunggulan fungsi hash HLI adalah mempunyai ukuran kunci yang lebih kecil daripada SWIFFT.
Saran
Fungsi hash HLI dapat dianalisis lebih lanjut mengenai pembuktian keamanannya berdasarkan kerumitan kasus terburuk (worst case hardness) sehingga diperoleh fungsi hash dengan keamanan kuat.
26
DAFTAR PUSTAKA
Anton H, Rorres C. 2000. Elementary Linear Algebra 10th Edition. John Wiley and Sons. Canada.
Atjai M. 1995. Generating Hard Instances of Lattice Problems. 28th ACM Symposium on Theory of Computing, 98-108. Philadelphia.
Cai J Y, Nerurkar. 1997. An Improved Worst-case Connection for Lattice Problems. Proc. 38th IEEE Symp. On Found. Of Comp. Science, 468-477. Goldreich O, Goldwasser S, Halevi S. 1996. Collision-free Hashing from Lattice
Problems. Technical report TR96-056, Electonic Colloquium on Computational Complexity.
Guritman S. 2003. Pengantar Kriptografi. Handout mata kuliah Pengantar Kriptografi. Fakultas Matematika dan Ilmu Pengetahuan Alam IPB. Bogor. Guritman S, Supriyo P T. 2004. Modul Matematika Diskret. Departemen
Matematika FMIPA IPB, Bogor.
Guritman S. 2009. Kriptografi Kurva Eliptik. Departemen Matematika FMIPA IPB, Bogor.
Guritman S. 2012. Latis dan Aplikasinya. Lecture Note Pelatihan di Lembaga Sandi Negara. Bogor.
Lyubashevsky V, Micciancio D. 2006. Generalized Compact Knapsacks are Collision Resistant. ICALP(2) pages 144-155.
Lyubashevsky V, Micciancio D, Peikert C, Rosen A. 2008. SWIFFT: A Modest Proposal for FFT Hashing. Proceedings of Fast Software Encryption.
Menezes A, van Oorschot P, Vanstone S. 1996. Handbook of Applied Cryptography. CRC Press.
Micciancio D. 2002. Generalized Compact Knapsack, Cyclic Lattice, and Efficient One-way Function from Worst-case Complexity Assumptions. Preliminary versions in FOCS.
Micciancio D, Regev O. 2004. Worst-case to Average-case Reduction Based on Gaussian Measures. Proc. 45th Annual IEEE Symp. On Foundations of Science, 372-381.
Nguyen PQ, Valee B. 2010. The LLL Algoritm: Survey and Applications. Springer –Verlag. Berlin.
Peikert C, Rosen A. 2006. Efficient Collision-resistant Hashing from Worst-case Assumptions on Cyclic Lattice. 3rd Theory of Cryptography Conference (TCC).
27 Lampiran 1 Program Fungsi Hash HLI
> restart:
> with(LinearAlgebra):
Prosedur Aljabar Vektor Intejer Modular
AcakVM membangkitkan vektor intejer dalam ruang dimensi m secara acak
dengan komponen dalam range intejer
> AcakVM:=proc(m::posint,M::posint)
local AcIn::procedure, p::integer, L::list: AcIn:=rand(M): L:=[seq(AcIn(),i=1..m)]: return(L); end proc: Contoh: > m:=8: M:=11: > A:=AcakVM(m,M);
AddV menjumlahkan 2 vektor.
> AddV:=proc(V::list,W::list) local m::integer, L::list: m:=nops(V):
L:=[seq(V[i]+W[i],i=1..m)]: return(L);
end proc:
AddVM menjumlahkan 2 vektor modulo M.
> AddVM:=proc(S::list,T::list,M::posint) local R::list, s,j,t::integer:
s:=nops(S): t:=s:
if S=[0] then return(T); elif T=[0] then return(S); elif s=nops(T) then
R:=[seq((S[i]+T[i]) mod M,i=1..s)]; elif nops(S)<nops(T) then
subsop(seq(i=(S[i]+T[i]) mod M,i=1..nops(S)),T); else
subsop(seq(i=(S[i]+T[i]) mod M,i=1..nops(T)),S); end if: end proc: Contoh: > m:=5: M:=7: > V:=AcakVM(m,M); > W:=AcakVM(m,M);
28
> U:=AddVM(V,W,M);
MultSVM mengalikan skalar dengan vektor modulo prima M.
> MultSVM:=proc(k::integer,V::list,M::posint) local m::integer, L,H::list:
m:=nops(V):
L:=[seq((k*V[i]) mod M,i=1..m)]: return(L); end proc: Contoh: > m:=5: M:=7: > V:=AcakVM(m,M); > U:=MultSVM(4,V,M);
PutarV memutar vektor V ke kanan 1 satuan.
> PutarV:=proc(V::list)
local H::list, n::integer: n:=nops(V): H:=[V[n],op(1..n-1,V)]: return(H); end proc: Contoh: > m:=5: M:=8: > V:=AcakVM(m,M); > H:=PutarV(V);
MultRM mengalikan dua vektor sebagai anggota ring R mod M.
> MultRM:=proc(A::list,B::list,M::posint) local L,H,S,T::list, m,j,b,c::integer: m:=nops(A): T:=A: H:=MultSVM(B[1],T,M): for j from 2 to m do S:=PutarV(T): c:=S[1]+S[2]: T:=subsop(2=c,S): b:=B[j]: if b<>0 then L:=MultSVM(b,T,M): H:=AddVM(H,L,M):
29 end if: end do: return(H); end proc: > n:=4: m:=5: > V:=AcakVM(n,m); > >
FHash menghitung nilai hash
> FHash:=proc(X::list,Y::list,Z::list,M::posint) local C,H,K,L,N::list, a,b,m,n,j,p::integer: n:=nops(Y): p:=nops(X): m:=p/n: H:=[seq(0,i=1..n)]: C:=Y: for j from 1 to m do a:=(j-1)*n+1: b:=j*n: K:=[op(a..b,X)]: L:=MultRM(C,K,M): N:=AddVM(L,Z,M): C:=N: H:=AddVM(H,N,M): end do: return(H); end proc:
30
Lampiran 2 Hasil Program Fungsi Hash Contoh:
31 > > > > >
32
Lampiran 3 Pembuktian bahwa Bersifat Tak Teruraikan
> irreduc(x^8-x-1); true > irreduc(x^16-x-1); true > irreduc(x^32-x-1); true > irreduc(x^64-x-1); true > irreduc(x^128-x-1); true > irreduc(x^256-x-1); true > irreduc(x^512-x-1); true > irreduc(x^1024-x-1); true
33
RIWAYAT HIDUP
Penulis dilahirkan di Karanganyar pada tanggal 25 Mei 1985 sebagai anak dari pasangan Sutardi dan Siti Maryami. Penulis merupakan anak kedua dari dua bersaudara.
Pendidikan sarjana ditempuh mulai tahun 2003 di Program Studi Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam UGM, lulus pada tahun 2007. Pada tahun 2011, penulis mendapat beasiswa dari Akademi Kimia Analisis Bogor untuk melanjutkan studi di Sekolah Pascasarjana Mayor Matematika Terapan IPB.
Penulis bekerja sebagai dosen di Akademi Kimia Analisis Bogor sejak tahun 2008. Mata kuliah yang diampu adalah matematika dasar dan komputasi data.