• Tidak ada hasil yang ditemukan

IMPLEMENTASI ALGORITMA SHA-256 MENGGUNAKAN VISUAL STUDIO DAN OPENSSL

N/A
N/A
Protected

Academic year: 2021

Membagikan "IMPLEMENTASI ALGORITMA SHA-256 MENGGUNAKAN VISUAL STUDIO DAN OPENSSL"

Copied!
65
0
0

Teks penuh

(1)

IMPLEMENTASI ALGORITMA SHA-256 MENGGUNAKAN VISUAL STUDIO DAN OPENSSL

ARIF FUNNATIQ

PROGRAM STUDI MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA

2013 M / 1434 H

(2)

IMPLEMENTASI ALGORITMA SHA-256 MENGGUNAKAN VISUAL STUDIO DAN OPENSSL

SKRIPSI

Diajukan Kepada

Universitas Islam Negeri Syarif Hidayatullah Jakarta Untuk Memenuhi Salah Satu Persyaratan Dalam

Memperoleh Gelar Sarjana Sains Fakultas Sains dan Teknologi

Oleh:

Arif Funnatiq 106094003177

PROGRAM STUDI MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA

2013 M / 1434 H

(3)

1

(4)

iii

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR – BENAR HASIL KARYA SAYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.

Jakarta, Desember 2013

Arif Funnatiq 10609403177

(5)

iv

PERSEMBAHAN

Skripsi ini saya persembahan untuk Keluarga besarku, Ayahanda, Ibunda, Adik, Kakak, dan kepada Sahabat-sahabatku, serta Keluarga Besar Program Studi Matematika.

MOTTO

Selalu berusaha untuk menjadi orang yang Bijaksana dan Berilmupengetahuan

(6)

v ABSTRAK

Arif Funnatiq, Implementasi Algoritma SHA-256 Menggunakan Visual Studio C++ Dan OpenSSL. Di bawah bimbingan Suma’inna, M.Si dan Hatta Maulana, S.Si, M.Ti.

Keamanan jaringan merupakan hal yang sangat penting karena akses internet terbuka bagi siapapun. Setiap data dapat diakses diinternet dengan sangat mudah terutama data yang sifatnya terbuka dan umum. Sehingga diperlukan keamanan agar pemilik data dapat memastikan bahwa file yang telah diupload belum dirubah oleh pihak ketiga.

Fungsi yang dapat memastikan keaslian data disebut fungsi hash. Fungsi hash yang digunakan adalah SHA generasi ke-2, yaitu SHA-256. Operasi-operasi yang digunakan pada SHA-256 adalah operasi logika bitwise (operator DAN, ATAU, XOR, dan Negasi), penjumlahan modulo 232, geser kanan, dan rotasi kanan. Fungsi hash ini sangat banyak pengaplikasiannya selain untuk memastikan keaslian data, misalnya penyimpanan password, digital signature, dll.

Pada tulisan ini dibahas secara terperinci teknik SHA-256 secara matematis. Serta implementasi SHA-256 menggunakan library open source OpenSSL untuk sebuah program generator hashing SHA-512.

Kata Kunci : Keaslian Data, fungsi sha-2, SHA-256, OpenSSL, SHA-2

(7)

vi

KATA PENGANTAR

مسب الله رلا نحم رلا يمح

Puji Syukur yang dipanjatkan hanya bagi Allah SWT, tuhan semesta alam, dengan nikmat dan karunianya kita semua bisa merasakan indahnya kehidupan ini. Selawat beserta salam semoga tetap terlimpahkan dan selalu tercurahkan kepada Nabi Muhammad SAW, keluarga, sahabat, serta seluruh pengikutnya hingga akhir zaman. Alhamdulillah hirabbil ’alamin penulis ucapkan karena berkat rahmat dan karunia-Nya penulis dapat menyelesaikan Skripsi ini yang berjudul, “Implementasi Algoritma SHA 256 Menggunakan Visual Studio C++ dan Open SSL”.

Akhirnya dengan segala kerendahan hati, penulis menyadari bahwa dalam Skripsi ini masih terdapat banyak kekurangan untuk menuju kesempurnaan, dan penulis mencoba berusaha senantiasa memberikan semaksimal mungkin dengan harapan Skripsi ini dapat bermanfaat.

Dalam kesempatan yang baik ini, perkenankan penulis menghaturkan ucapan Terima Kasih kepada:

1. Dr. Agus Salim, M. Si, Dekan Fakultas Sains dan Teknologi.

2. Yanne Irene, M. Si, Selaku Ketua Program Studi Matematika Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta.

3. Hata Maulana, S. Si, M. TI, dan Suma’inna, M. Si selaku Dosen Pembimbing pertama dan kedua.

(8)

vii 4. Gustina Elfiyanti, M. Si dan Yanne Irene, M. Si, Sebagai dosen penguji

Pertama dan Kedua.

5. Semua dosen Program Studi Matematika UIN Syarif Hidayatullah Jakarta yang telah banyak membantu dalam pemecahan dalam Penulisan Skripsi ini.

6. Ayahanda dan Ibunda beserta Keluarga besarku yang telah memberi semangat dan do’anya.

7. Sahabatku Nur Faizur Rohmat dan Muhammad Sayuti yang senantiasa dengan ikhlas Menyemangati.

8. Teman-teman Se-Jurusan Matematika, yang selalu mensupport.

Kritik dan saran konstruktif sangat penulis harapkan berkaitan dengan penulisan Skrisi ini yang masih jauh dari kesempurnaan. Semoga kita semua senantiasa diridhai dan mendapatkan rahmat dan hidayah-Nya serta selalu berada di jalan yang lurus. Amin.

Jakarta, Desember 2013

Penulis

(9)

viii

DAFTAR ISI

HALAMAN JUDUL ... i

PENGESAHAN... ii

PERNYATAAN ... iii

PERSEMBAHAN... iv

ABSTRAK ... v

KATA PENGANTAR ... vi

DAFTAR ISI ... viii

DAFTAR GAMBAR ... xi

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Permasalahan ... 3

1.3 Pembatasan Masalah ... 3

BAB II LANDASAN TEORI ... 5

2.1 Sistem Bilangan ... 5

2.2 ASCII ... 9

(10)

ix

2.3 Kriptografi ... 9

2.4 Fungsi ... 11

2.5 Fungsi PadaSHA-256 ... 15

2.6 Inisial Nilai Hash, Kontanta, dan 6 Fungsi Hashing . ... 18

2.7 Perl ... 19

2.8 Microsoft Visual Studio Express C++ 2008 ... 20

2.9 Halaman Muka Visual Studio Express C++ 2008 ... 20

2.10 OpenSSL ... 22

2.11 Compile dan Install OpenSSL Pada Windows XP ... 23

2.12 Penggunaan OpenSSL Pada Visual Studio ... 25

BAB III METODOLOGI PENELITIAN ... 27

3.1 Secure Hash Algorithm ... 27

3.2 SHA-256 ... 28

3.3 Pembangkitan Konstanta dan Nilai Hash Awal SHA-256 ... 29

3.4 Message Digest SHA-256 ... 32

BAB IV HASIL DAN IMPLEMENTASI ... 39

4.1 Hasil Implementasi Hash SHA-256 ... 39

1) Preprocesing ... 40

2) Perhitungan SHA-256 ... 41

3) Hasil Message Digest ... 46

4.2 Hasil Implementasi Dengan OpenSSL ... 46

(11)

x

BAB V KESIMPULAN DAN SARAN ... 49

5.1 Kesimpulan ... 49

5.2 Saran ... 49

REFERENSI ... 50

LAMPIRAN

(12)

xi

DAFTAR GAMBAR

GAMBAR 2.1... 21

GAMBAR 2.2... 21

GAMBAR 2.3... 24

GAMBAR 2.4... 24

GAMBAR 3.1... 28

(13)

1

BAB I PENDAHULUAN

1.1 Latar Belakang

Berkembangnya teknologi dewasa ini yang sangat pesat memudahkan seseorang dalam bertukar pesan dimanapun ia berada, sehingga perlindungan pesan sangatlah diperlukan agar tidak digunakan untuk hal-hal yang tidak diinginkan, untuk itu diperlukanlah sebuah pelindung untuk mengamankan pesan tersebut.

Sistem keamanan di dalam dunia komputer mulai dijadikan perhatian serius para peneliti dan praktisi teknologi informasi semenjak diketemukannya teknologi jaringan komputer. Hal tersebut dipicu oleh berkembangnya isu di bidang ini adalah karena adanya fenomena pengiriman data melalui media transmisi (darat, laut, dan udara) yang mudah dicuri oleh mereka yang tidak berhak. Data mentah dari sebuah komputer yang dikirimkan ke komputer lain pada dasarnya rawan terhadap “interfensi” dari pihak ketiga, sehingga diperlukan suatu strategi khusus agar paling tidak dua hal terjadi (Kosiur,1997):

1. Data yang dikirimkan tidak dapat secara “fisik” diambil oleh pihak lain yang tidak berhak; atau

(14)

2 2. Data yang dikirimkan dapat “diambil secara fisik”, namun yang

bersangkutan tidak dapat membacanya.

Karena rentannya jalur komunikasi terutama jaringan publik, sehingga diperlukan suatu mekanisme pengamanan yang dapat menjamin data atau pesan yang dikirim belum diubah oleh pihak ketiga.

Ilmu atau teknik yang berguna untuk mengcodekan data sedemikian sehingga tidak dapat dibaca oleh pihak ketiga disebut kriptografi. Salah satu kebutuhan keamanan data adalah otentikasi atau jaminan keaslian data. Jaminan keaslian data adalah kepastian data yang diterima oleh pihak penerima merupakan data yang dikirim oleh pihak penerima yang dikehendaki pihak penerima.

Fungsi yang sesuai untuk aplikasi keamanan seperti otentikasi dan integritas pesan yaitu fungsi hash. Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan mengkonversinya menjadi string keluaran yang panjangnya tetap (umumnya hasil keluaran jauh lebih kecil dari pada ukuran string semula), Hasil keluaran atau enkripsi yang dihasilkan dari fungsi hash disebut message digest.

Untuk mengirim pesan agar dapat diotentisasi pesan tersebut oleh penerima maka hasil message digest diikutsertakan bersamaan dengan pesan tersebut. Message digest ini layaknya seperti tanda tangan digital, hanya saja fungsi hash pada message digest hanya bergantung pada pesan tersebut tidak tergantung pada pengirim, penerima, ataupun kunci.

(15)

3 Fungsi hash satu arah memiliki banyak jenis algoritma. Contohnya Secure Hash Algorithm (SHA). SHA dikembangkan oleh National Institute of Standard and Technology (NIST). SHA sendiri merupakan pengembangan dari fungsi hash sebelumnya yaitu MD5.

Salah satu algoritma dari keluarga SHA generasi kedua yaitu SHA- 256, yang telah dikembangkan dari generasi pertama SHA-1. SHA-256 menggunakan 32 bit untuk masing- masing kata, sehingga menghasilkan message digest 256 bit.

1.2 Permasalahan

Berdasarkan latar belakang diatas, permasalahan yang akan dibahas pada skripsi ini adalah

1. Mengimplementasikan algoritma SHA-256 menggunakan Visual Studio C++ 2008 express dan OpenSSL untuk menghasilkan SHA-256 generator.

2. Membahas konsep-konsep matematis yang melandasi algoritma SHA-256 pada OpenSSL.

3. Membandingkan hasil dari fungsi pemrograman SHA-256 pada OpenSSL dengan perhitungan manual.

1.3 Pembatasan Masalah

Di dalam tugas akhir ini, penulis membatasi permasalahan dalam ruang lingkup, sebagai berikut:

(16)

4 1. Hasil yang diperoleh berupa hexadecimal.

2. Bahasa yang digunakan adalah C++.

3. Perograman hanya dengan pemanggilan fungsi OpenSSL, kemudian ditampilkan.

(17)

5

BAB II

LANDASAN TEORI

2.1. Sistem Bilangan

Sistem bilangan (number system) adalah suatu cara untuk mewakili besaran dari suatu item fisik. Sistem bilangan yang dipergunakan oleh manusia adalah sistem bilangan desimal, yaitu sistem bilangan yang menggunakan 10 jenis simbol untuk mewakili suatu besaran. Sistem ini banyak digunakan karena manusia mempunyai sepuluh jari untuk dapat membantu perhitungan.

Basis bilangan adalah bilangan yang menjadi dasar terbentuknya bilangan lain dalam suatu sistem bilangan. Basis bilangan ini dikelompokkan ke dalam dua kelompok, yaitu basis sepuluh dan non sepuluh. Basis sepuluh sering disebut juga dengan bilagan desimal yang terdiri dari 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9.

Basis non sepuluh adalah basis bilangan yang kurang atau lebih dari sepuluh.

Beberapa sistem bilangan yang digunakan dalam tugas akhir ini :

Bilangan desimal

Bilangan desimal adalah bilangan yang memiliki jumlah jenis bilangan sebanyak 10

(18)

6 bilangan tersebut adalah 0.1.2.3.4.5.6.7.8.9 (r=10)

Bilangan biner

Bilangan biner adalah bilangan yang memiliki jumlah jenis bilangan sebanyak 2

bilangan tersebut adalah 0 dan 1 (r=2)

Bilangan hexadesimal

Bilangan hexadesimal adalah bilangan yang memiliki jumlah jenis bilangan sebanyak 16

bilangan itu adalah 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F( r=16)

Berikut ini adalah beberapa contoh konversi bilangan[1]:

1. Konversi bilangan biner ke desimal

Akan dikonversikan bilangan biner 110000002 ke dalam bentuk desimal.

110000002 = 1*27 + 1*26 + 0*25 + 0*24 + 0*23 + 0*22 + 0*21 + 0*20

110000002 = 1*128 + 1*64 + 0*32 + 0*16 + 0*8 + 0*4 + 0*2 +0*1

110000002 = 128 + 64

110000002 = 19210

(19)

7 Menurut ilustrasi di atas maka bilangan desimal dari 110000002 adalah 19210.

2. Konversi bilangan desimal ke biner

Bilangan desimal 192 akan dikonversikan kedalam bentuk biner.

2)192 sisa 0

2)96 sisa 0

2)48 sisa 0

2)24 sisa 0

2)12 sisa 0

2)6 sisa 0

2)3 sisa 1

1

Perhitungan berhenti ketika hasil pembagian lebih kecil dari bilangan pembagi (1 < 2), penulisan bilangan dimulai dari bawah. Sehingga bilangan biner yang dihasilkan adalah 110000002 (bilangan ini memiliki panjang 8 bit) .

3. Konversi bilangan hexadesimal ke desimal

Bilangan hexadesimal DE2 akan dikonversikan kedalam bentuk desimal.

(20)

8 DE2 = D*162 + E*161 + 2*160

DE2 = 13*162 + 14*161 + 2*160

DE2 = 13*256 + 14*16+ 2*1

DE2 = 3328 + 224 + 2

DE2 = 3554

4. Konversi bilangan desimal ke hexadesimal

Akan dikonversikan bilangan desimal 2048 dan 3554 ke dalam bentuk hexadesimal.

16)2048 sisa 0 16)3554 sisa 2

16)128 sisa 0 16)222 sisa 14 = E

8 13 13 = D

Perhitungan berhenti ketika hasil pembagian lebih kecil dari bilangan pembagi (masing-masing berurutan yaitu 8 < 16; 13 < 16), penulisan bilangan dimulai dari bawah. Sehingga bilangan hexadseimal yang dihasilkan adalah 800 .

(21)

9 2.2. American Standard Code for Information Interchange (ASCII)

American Standard Code for Information Interchange (ASCII) merupakan suatu standar dalam kode huruf/english karakter sebagai sebuah bilangan, dengan setiap masing-masing karakter diubah menjadi bilangan antara 0-127. Misalnya, kode ASCII untuk huruf besar M adalah 77. Hampir semua komputer menggunakan kode ASCII untuk menunjukkan teks, sehingga memungkinkan untuk melakukan transfer data dari satu komputer ke komputer lain[2].

Standard dari himpunan karakter ASCII hanya memiliki komposisi 7 bit untuk setiap karakter. Namun, beberapa himpunan karakter yang lebih besar memiliki komposisi 8 bit, sehingga memberikan tambahan sejumlah 128 karakter tambahan ASCII. Karakter tambahan ASCII bernilau 128 – 255 digunakan untuk menunjukkan karakter non-english karakter, simbol grafik, dan simbol matematika. 128 karakter tambahan disebut sebagai ASCII extension[3].

2.3. Kriptografi

Kriptografi berasal dari bahasa yunani, crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan). Berdasarkan terminologinya kriptografi adalah ilmu atau seni untuk menjaga keamanan informasi yang dikirim dari suatu tempat ke tempat lain menggunakan persamaan matematis tertentu. Terdapat aspek-aspek yang berkaitan dalam menjaga keamanan informasi seperti kerahasiaan, integritas data, dan otentikasi.

Kriptografi sudah digunakan bangsa mesir untuk mengirim pesan kepada pasukan

(22)

10 yang berada di medan perang 40 abad yang lalu, selain mesir bangsa spartan juga telah menerapkan konsep kriptografi di yunani pada permulaan tahun 400 SM.

Alat yang digunakan untuk kriptografi oleh tentara spartan disebut scytaleI[4].

Tujuan kriptografi yang mendasar meliputi empat tujuan, yaitu[5]:

1. Kerahasiaan

Hal ini berkaitan dengan aspek pengamanan pada perihal isi informasi tersebut. Sehingga isi informasi tidak dapat diketahui meskipun data dalam bentuk fisik telah didapatkan oleh pihak yang tidak memiliki otoritas untuk membacanya.

2. Integritas data

Hal ini berkaitan dengan aspek yang berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubstitusian data kedalam data yan sebenarnya.

3. Otentikasi

Hal ini berkaitan dengan aspek yang berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri.

Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri.

Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

(23)

11 4. Non repudiation

Non repudiation/nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. Sehingga dapat dibuktikan bahwa sebuah pesan berasal dari seseorang.

2.4. Fungsi

Definisi 2.1 Misalkan terdapat dua himpunan A dan B. Suatu fungsi f dari A ke B

adalah aturan yang mengaitkan setiap unsur ke tepat satu unsur b di B , ditulis f (a) = b.

Misalkan,

A = { 2, 3, 5, 7, 11} dan B = { 4, 9, 25, 49, 121, 169, 289}

Didefinisikan dengan f (x) = x2 , maka f merupakan sebuah fungsi dari A ke B karena untuk setiap elemen terdapat tepat satu ( ) .

Beberapa jenis fungsi yang akan digunakan pada penelitian ini adalah sebagai berikut[1]:

1. Fungsi Logika

Fungsi logika/Gerbang logika adalah perangkat fisik atau non fisik yang diterapkan dari fungsi boolean. Gerbang logika melakukan operasi logika

(24)

12 pada satu atau lebih input berupa logika (bernilai benar atau salah), dan menghasilkan keluaran berupa logika (benar atau salah).

Berikut jenis-jenis operasi logika:

Not ( ) didefinisikan sebagai:

( ) {

And ( ) didefinisikan sebagai:

( ) {

( ) didefinisikan sebagai:

( ) {

( ) didefinisikan sebagai :

( ) {

( ) didefinisikan sebagai :

( ) {

( ) didefinisikan sebagai :

( ) {

(25)

13

( ) didefinisikan sebagai :

( ) {

2. Fungsi Satu Arah

Jenis-jenis fungsi pada himpunan:

Fungsi injektif (fungsi satu-satu)

Fungsi surjektif (fungsi pada)

Fungsi bijektif (fungsi satu-satu pada)

Fungsi satu arah adalah fungsi yang pada (surjektif) namun tidak satu- satu (injektif). Misalkan dan . Fungsi f dikatakan satu-satu jika untuk setiap dengan berlaku ( ) ( ) atau untuk setiap dengan ( ) ( ) berlaku x1=x2. Fungsi f dikatakan pada jika untuk setiap ( ) ( ). Fungsi pada yang tidak satu-satu disebut fungsi satu arah karena tidak memiliki invers[1].

Contoh :

Misalkan terdapat dua himpunan A dan B. A = { -3, -2, -1, 0, 1, 2, 3 }, dan B = { 0, 1, 2, 3 }. Fungsi deidefinisikan :

( ) | |

(26)

14 Sehingga hasil pemetaan ( ) ( ) ( ) ( ) ( ) ( ) ( ) . Dapat dilihat bahwa untuk setiap maka terdapat sehingga f(x) = y yang mengakibatkan fungsi f merupakan fungsi pada. Dan juga terdapat dengan -3 ≠ 3 namun ( ) ( ) , hal ini mengakibatkan fungsi f tidak satu-satu. Oleh karena itu, fungsi f bisa dikatakan fungsi satu arah.

3. Fungsi Hash

Fungsi hash adalah fungsi h yang mengaitkan string ke string dan minimal memenuhi 2(dua) syarat berikut[1]:

Kompresi: h memetakan masukan x string bit dengan panjang sebarang ke string bit dengan panjang tetap.

Mudah dihitung : jika diberikan h dan sebarang masukan x, maka mudah untuk mendapatkan nilai h(x).

Fungsi kriptografi hash yang ideal memiliki 4(empat) ciri utama[5]:

Fungsi tersebut mudah menghitung nilai hash h jika diberikan sembarang pesan apapun.

Tidak mungkin untuk didapatkan sebuah pesan dari nilai hash h.

Tidak mungkin untuk merubah pesan tanpa merubah nilai hash h.

(27)

15

Tidak mungkin untuk ditemukan 2(dua) message berbeda dengan nilai hash h yang sama.

4. Fungsi rekursif

Fungsi rekursif adalah metode dimana solusi untuk memecahkan masalah bergantung pada solusi untuk kasus sebelumnya pada masalah yang sama. Sehingga fungsi itu harus memiliki nilai awal yang ditentukan sebelumnya.

Selain itu hasil perhitungan bergantung pada hasil perhitungan sebelumnya.

Misalkan:

Dari definisi di atas terlihat bahwa fungsi an memiliki nilai awal yaitu a0. Jika tidak diketahui nilai a0 maka tidak bisa dilakukan perhitungan an untuk n

≥ 1. Selain untuk menghitung nilai an maka harus diketahui nilai an-1 yang merupakan hasil perhitungan sebelumnya. Oleh karena itu, fungsi di atas merupakan fungsi rekursif[1].

2.5. Fungsi pada SHA-256

Operasi-operasi berikut dilakukan terhadap lima algoritma keamanan hash dan dioperasikan untuk w-bit words (nilai w tergantung masing-masing algoritma). SHA-1, SHA-224 and SHA-256 dioperasikan pada 32-bit words

(28)

16 (w=32), dan SHA-384, SHA-512, SHA512/224 dan SHA-512/256 dioperasikan pada 64-bit words (w=64)[6].

Berikut Operasi yang digunakan pada SHA-512 adalah[6]:

1. Operasi logika pada bilangan biner

And (∧) ,Or (∨) ,Xor ( ) , and Komplement (¬).

2. Penjumlahan modulo 2w (+)

Untuk mengoperasikan x + y dartikan sebagai berikut:

( )

Maka

3. Operasi geser kanan ( >> )

Misalkan x >> n maka akan dihilangkan n bit paling kanan pada x dan kemudian diisi dengan angka 0 sejumlah n di sisi kiri.

4. Operasi geser kiri ( << )

Misalkan x << n maka akan dihilangkan n bit paling kiri pada x dan kemudian diisi dengan angka 0 sejumlah n di sisi kanan.

5. ROT Rn (x)

(29)

17 Operasi rotasi kanan, misalkan x adalah w bit word dan n adalah suatu integer dengan .

( ) ( ) ∨ ( )

6. ROT Ln (x)

Operasi rotasi kanan, misalkan x adalah w bit word dan n adalah suatu integer dengan .

( ) ( ) ∨ ( )

7. SHRn (x)

Operasi geser kanan sebanyak n bit pergeseran, misalkan x adalah w bit word dan n adalah suatu integer dengan .

( ) Cat:

Berikut adalah hubungan kesamaan, dengan nilai w tetap pada masing- masing hubungan

ROTL

n

(x) ≈ ROTR

w-n

(x) ROTR

n

(x) ≈ ROTL

w-n

(x) Contoh

Misalkan x = 11000101001101112 , n = 7 , w = 16 ROTR

n

(x) = ROTR

7

(1100010100110111) = 0110111110001010 ROTL

n

(x) = ROTL

7

(1100010100110111) = 1001101111100010 ROTR

7

(x) = ROTL

16-7

(1100010100110111) ROTL

16-7

(1100010100110111) = ROTL

9

(1100010100110111) ROTL

9

(1100010100110111) = 0110111110001010

SHR n (x) = SHR 7 (1100010100110111) = 0000000110001010

(30)

18 2.6. Inisial Nilai Hash, Konstanta, dan 6 Fungsi Hashing

SHA-256 manggunakan enam fungsi logika, dimana setiap fungsi beroperasi pada 32-bit words masing-masing input sebagai x, y, z. Hasil dari setiap funsinya adalah bilangan 32 bit word yang baru[6].

Ch(x, y, z)= (x ∧ y) (¬x ∧ z)

Maj (x, y, z)= (x ∧ y) (x ∧ z) (y ∧ z)

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

SHA 256 menggunakan 64 barisan konstanta 32 bit, . Konstanta ini disajikan dalam bentuk bilangan heksadesimal.

428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5 d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174 e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da 983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967 27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85 a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070

19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3

748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2

(31)

19 Nilai buffer SHA-256 yang digunakan sejumlah 8 baris H0, H1, …, H7

( )

( )

( )

( )

( )

( )

( )

( )

2.7. Perl

Perl adalah bahasa permrograman tingkat tinggi, dapat digunakan untuk segala keperluan, bahasa pemrograman dinamis. Perl dirilis pertama kali pada tanggal 18 desember 1987. Vesri terbaru dan stabil perl adalah versi 5.18, rilis bulan mei 2013. Perl yang penulis gunakan adalah perl versi 5.16.3 untuk windows (x86)[7].

(32)

20 Dalam tugas akhir ini perl digunakan sebagai penerjemah linux di windows, sehingga dapat meng-compile open source yang pada dasarnya berjalan di linux untuk dijadikan aplikasi yang dapat berjalan di windows[7].

Perl merupakan bahasa pemrograman yang open source dan gratis.

Perl dapat diunduh di http://www.activestate.com/activeperl/downloads.

2.8. Microsoft Visual Studio Express C++ 2008

Microsoft Visual Studio Express merupakan Integrated Development Environments (IDE) dikembangkan oleh Microsoft sebagai versi kecil dari microsoft visual studio. Edisi Express dimulai dari Visual Studio 2005. Edisi Express digunakan hanya untuk penggemar dan pelajar saja bukan untuk pengembang perangkat lunak professional[8].

Microsoft Visual Studio Express ini tidak open source namun gratis.

Freeware ini dapat diunduh di http://win.freewareupdate.com/download-visual- studio-express/ atauhttp://www.microsoft.com/visualstudio/eng/downloads.

2.9. Halaman Muka Visual Studio Express C++ 2008

Untuk mencapai halaman muka Visual Studio Express C++ 2008 dan membuat proyek baru lakukan langkah-langkah sebagai berikut :

1. Aktifkan Sistem Operasi windows XP.

2. Menu -> All Programs -> Microsoft Visual C++ 2008 Express -> Microsoft Visual C++ 2008 Express.

(33)

21 Gambar. 2.1 Menu Pertama

3. Terbuka halaman muka Microsoft Visual C++ 2008 Express.

Gambar. 2.2. Halaman Muka Microsoft C++ 2008 Express

4. Untuk membuat poject baru pilih, File -> new -> Project

5. Setelah terlihat jendela New Project pilih, Visual C++ -> Win32 -> Win32 Console Application

6. Isi Name, Location , dan Solution Name sesuai kebutuhan.

(34)

22 7. Apabila terlihat tab Win32 Application Wizard klik Next.

8. Pada radion button pilih “console application”, hilangkan centang

“precompiled header”, dan centang “empty project”. Klik “Finish”

Buat lembaran project untuk penulisan sorce code. Langkah-langkah sebagai berikut:

1. Setelah langkah-langkah diatas selesai, pada jendela Solution Explorer pilih

“Source Files”-> klik kanan -> Add -> New item

2. Akan terlihat jendela Add New Item, pilih Visual C++ -> C++ File(.cpp)

3. Beri nama di kolom name, dan tekan Add.

2.10. OpenSSL

OpenSSL adalah implementasi protocol SSL dan TSL bersifat open source, sehingga diperlukanproses compile untuk digunakan. Inti library nya ditulis dalam bahasa pemrograman C, dengan library tersebut OpenSSL dapat menerapkan fungsi kriptografi dan terdapat berbagai fungsi yang dapat digunakan.

Wrapper pada OpenSSL dapat membuat library OpenSSL pada berbagai jenis bahasa computer[9].

OpenSSL dapat diunduh dihttp://www.openssl.org/source/.

(35)

23 2.11. Compile dan Install OpenSSL Pada Windows XP

Untuk mengcompile OpenSSL dilakukan langkah-langkah sebagai berikut:

1. Buat Folder baru “C:\openssl-1.0.1b-dev” (tergantung versi yang diunduh, dalam hal ini openssl-1.0.1b).

2. Unduh source OpenSSL. Penulis menggunakan “openssl-1.0.1b.tar.gz”.

3. Ekstrak hasil unduh ke dalam folder “C:\openssl-1.0.1b-dev”.

4. Unduh dan Install ActiveState Perl. Dapat dilihat subbab 2.7.

5. Pastikan “C:\perl\bin\” berada dalam sistem.

6. Buat folder baru “C:\openssl-1.0.1b” berfungsi sebagai tempat penyimpanan semua library yang telah di built (biarkan kosong untuk sementara).

7. Buka command prompt windows (cmd).

8. Pindahkan dan jalankan “C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools>vsvars32.bat”.

(36)

24 Gambar 2.3Command Prompt Windows

9. Dari command prompt pindahkan path ke “C:\openssl-1.0.1b-dev”.

10. Setelah pindah ke “C:\openssl-1.0.1b-dev”, jalankan“perl Configure VC- WIN32 no-asm --prefix=C:\openssl-1.0.1b”(huruf besar-kecil berpengaruh / case sensitive).

11. Jalankan “ms\do_ms” pada tahap ini agar bahasa-bahasa seteah ini dikenali.

12. Jalankan “nmake –f ms\ntdll.mak” pada tahap ini seharusnya berjalan proses compile.

13. Jalankan “nmake –f ms\ntdll.mak test” dilakukan pengetesan fungsi-fungsi OpenSSL yang telah decompile.

14. Jalankan “nmake –f ms\ntdll.mak install” untuk menyelesaikan proses- proses yang dijalankan diatas dilakukan penginstallan, dalam hal ini copy ke dalam foder “C:\openssl-1.0.1b”.

(37)

25 Setelah prose-proses diatas dilakukan maka OpenSSL siap digunakan.

2.12. Penggunaan OpenSSL Pada Visual Studio

Karena library yang telah dibahas bersifat dinamis, maka library harus diikutsertakan dalam source code.

Selain itu harus dilakukan pengaturan pada compiler Visual Studio Express ini. Langkah-langkah pengaturan mengikutsertakan library OpenSSL sebagai berikut:

1. Buat source code yang ingin dibuat (penulis menganggap source code sudah dibuat).

2. Pada setiap project (bukan setiap lembar kode). Pilih menu Project ->

Properties

Gambar 2.4. Sub Menu Poject 3. Setelah terlihat property pages, pastikan

(38)

26 a) C/C++ -> General -> Additional Include Directories

Bernilai: C:\openssl-1.0.1b\include\

b) Linker -> General -> Additional Library Directories Bernilai: C:\openssl-1.0.1b\lib\

c) Linker -> Input -> Additional Dependencies

4. Copy library LIBEAY32.DLL dan SSLEAY32.DLL dari “C:\openssl- 1.0.1b\bin\” ke dalam folder debug dari proyek yang telah dibuild tersebut.

(39)

27

BAB III

METODOLOGI PENELITIAN

Pada bab ini akan dibahas cara kerja Secure Hash Algorithm-256 (SHA-256) dan instalasi OpenSSL pada Visual Studio C++ 2008 Express Edition dengan Platform OS (Operating System) Windows XP.

3.1. Secure Hash Algorithm

Secure Hash Algorithm adalah sejenis algoritma kriptografi hash yang dibuat oleh National Security Agency (NSA) dan diterbitkan oleh Nastional Institute of Standard and Technology (NIST). Berikut perkembangan SHA[10]:

SHA-0 : merupakan retronim (nama lain untuk versi baru yang merupakan turunannya) untuk versi asli dari fungsi hash 160-bit, diterbitkan pada tahun 1993 dengan sama “SHA”. Algoritma ini ditarik sesaat setelah diterbitkan karena “significant flaw” yang dirahasiakan dan kemudian mengalami sedikit direvisi menjadi SHA-1.

SHA-1 : sebuah fungsi hash 160-bit yang menyerupai MD5. Didesain oleh NSA sebagai bagian untuk algoritma Digital Signature. Kelemahan SHA-1 ditemukan dan kemudian tidak lagi diakui sebagai standar untuk kriptografi setelah tahun 2010.

(40)

28

SHA-2 : algoritma yang dijadikan standar dan memiliki kesamaan fungsi hash, dengan ukuran blok berbeda dikenal dengan SHA-256 dan SHA-512.

SHA-256 menggunakan 32-bit words dan SHA-512 menggunakan 64-bit words. Namun ada algoritma potongan dari masing-masing standar, dikenal dengan SHA-224 32-bit dan 384 64-bit.

SHA-3 : fungsi hash yang sebelumnya bernama Keccak, terpilih sebagai pemenang pada kompetisi yang diadakan oleh NIST tahun 2012. Fungsi keccak memiliki struktur yang sangat berbeda dari keluarga SHA lainnya.

3.2. SHA-256

SHA-256 dalam satu kali iterasi memiliki alur sebagai berikut[10]:

Gambar 3.1 Satu iterasi dalam keluarga SHA-2 Komponen berwarna biru melakukan operasi sebagai berikut:

Ch(x, y, z)= (x ∧ y) ⊕ (¬x ∧ z)

Maj (x, y, z)= (x ∧ y) ⊕ (x ∧ z) ⊕ (y ∧ z)

{ }( ) ( ) ⊕ ( ) ⊕ ( )

(41)

29

{ }( ) ( ) ⊕ ( ) ⊕ ( )

SHA-256

Ukuran Output : 256 bit Ukuran Blok : 512 bit Maksimal Message : 264 – 1 bit

Ukuran Word : 32 bit (masing-masing potongan dari 1 blok 512)

Round : 64

Operasi Perhitungan : +, and, or, xor, shr, rot

Ditemukan Collision : Tidak ditemukan nilai yang beririsan

3.3. Pembangkitan Konstanta dan Nilai Hash Awal SHA-256

Agar didapatkan nilai Hash awal H00, H10, H20, H30, H40, H50, H60, H70 dilakukan langkah-langkah sebagai berikut[11]:

1. Akar kuadratkan masing-masing 8 bilangan prima pertama 2 ... 19.

2. Ambil bagian bilangan pecahannya saja dari hasil akar bilangan prima diatas.

3. Bilangan pecahan tersebut dikalikan dengan 232 (untuk algortima sha-256).

4. Ambil bagian cacahnya dari bilangan.

5. Hasilnya dijadikan bilangan heksadesimal.

(42)

30 Contoh :

1. 2.

3. =

1779033703,9520993849027770600526 4. 177903370310

5. 6A09E66716. Jadi H00

= 6a09e667

Lakukan langkah diatas untuk masing-masing bilangan prima selanjutnya 3 hingga 19.

Menghasilkan :

H00 = 6a09e667 H10

= bb67ae85 H20

= 3c6ef372 H30 = a54ff53a H40

= 510e527f H50

= 9b05688c H60 = 1f83d9ab H70

= 5be0cd19

Hampir sama seperti langkah-langkah membangkitan nilai hash.

Untuk diperoleh nilai-nilai konstanta dilakukan langkah sebagai berikut[11]:

(43)

31 1. Akar kubikkan (akar pangkat tiga) masing-masing 64 bilangan prima

pertama. Yaitu:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311,

Ambil bilangan pecahannya saja dari hasil akar bilangan prima diatas.

2. Bilangan pecahan tersebut dikalikan dengan 232 (untuk algortima sha-256).

3. Ambil bagian cacahnya dari bilangan.

4. Hasilnya dijadikan bilangan heksadesimal.

Contoh :

1. 2.

3. =

1116352408,8404644807431890114042 4. 111635240810

428a2f9816. Jadi K0{256}

= 428a2f98

Lakukan langkah diatas untuk masing-masing bilangan prima selanjutnya 3 hingga 311.

(44)

32 3.4. Message Digest SHA-256

Tahap pembentukan nilai hash ( message digest ) dengan SHA-256 melakukan 2 (dua) tahap utama, yaitu[1]:

1. Preprocessing

Tahapan ini terdiri dari tiga tahap, yaitu padding the message M, partisi message M menjadi beberapa blok, inisialisasi nilai hash awal.

a) Message Padding

Tujuan dari message padding ini adalah agar pesan yang sudah dipadding/ditambah merupakan kelipatan dari 512 bit. Penyisipan padding bisa dilakukan sebelum perhitungan hash SHA dimulai atau kapan-pun selama isi bagian blok message yang telah dipadding dipanggil oleh fungsi komputasi hash.

Untuk melakukan padding pesan dibagi menjadi blok-blok message yang panjangnya 512 bit. Akibat pembagian ini maka jumlah blok terakhir akan kurang dari atau sama dengan 512 bit. Sehingga blok terakhir harus dilakukan message padding agar blok terakhir memiliki panjang 512 bit. Langkah-langkah melakukan message padding adalah sebagai berikut[1]:

(45)

33

Input pesan, yaitu berupa karakter yang termasuk dalam ASCII dan kemudian dilakukan pengkonversian ke dalam bentuk biner berupa rangkaian bit.

Rangkaian bit tersebut kemudian dibagi menjadi blok-blok dengan panjang masing-masing 512 bit. Hal ini menyebabkan blok terakhir memiliki panjang kurang dari atau sama dengan dengan 512 bit.

Lakukan penambahan bit-bit isian pada blok terakhir pesan.

Tambahkan bit ‘1’ kemudian diikuti dengan k bit ‘0’ sesuai dengan ketentuan berikut:

1. Apabila panjang bit blok terakhir kurang dari 448 bit maka ditambahkan bit ‘1’ kemudian tambahkan sebanyak k bit

‘0’ sehingga jumlah bit blok terakhir menjadi 448 bit.

2. Apabila panjang bit blok terakhir lebih dari atau sama dengan 448 bit maka tambahkan bit ‘1’ kemudian tambahkan bit ‘0’ sehingga panjang bit blok terakhir menjadi 512 bit. Kemudian dibuat blok bit baru berisikan bit ‘0’ sepanjang 448 bit.

3. Apabila panjang bit blok terakhir sama dengan 512 bit maka harus dibuat blok baru sepanjang 448 bit yang berisi

(46)

34 bit ‘1’ pada bit pertama diikuti dengan bit ‘0’ sebanyak 447 bit sehingga panjang bit pada blok terakhir 448 bit.

Misalkan panjang pesan M dalam bit adalah , dengan pesan

“abc”. Diperoleh , karena terdapat 3 huruf dengan masing-masing huruf bernilai 8 bit. Kemudian dibagi menjadi blok-blok yang masing-masing panjangnya 512 bit.

Karena panjang bit pesan hanya 24 bit maka hanya didapatkan 1 blok.

Kemudian tambahkan bit “1” pada akhir pesan dalam hal ini setelah nilai bit “abc” dan diikuti penambahan bit “0”

sejumlah k, dimana k adalah solusi terkecil non-negative dari solusi persamaan .

Kemudian tambahkan 64 bit yang bernilai sebesar nilai yang ditulis dalambentuk 64 bit.

(47)

35

b) Partisi Message

Blok message dan hasil paddingnya dipartisi/dibagi menghasilkan sejumlah N blok masing-masing berukuran 512 bit, M(1), M(2), …, M(n). Kemudian masing-masing blok 512 bit dipartisi menjadi blok-blok baru yang lebih kecih berukuran 32 bit. Blok 32 bit pertama dari blok message ke-i dinotasikan dengan ( ), blok 32 bit kedua dinotasikan dengan ( ), hingga bernilai ( ).

Contoh

Pada contoh sebelumnya dengan pesan ‘abc’

c) Inisialisasi Hash awal SHA-256

Algoritma SHA menggunakan heksadesimal 32 bit sebagai buffer, dengan nilai buffer Hash pada hasil message padding 512 pertama H0, 512 bit berikutnya H1, 512 bit berikutnya H2 (bersifat rekursif karena untuk didapatkan H1 diperlukan H0) dan seterusnya hingga semua hasil message padding diproses.

Dengan nilai Hash awal yang telah didapat pada pembangkitan nilai Hash SHA-256 sebagai berikut:

(48)

36 H00

= 6a09e667 H10

= bb67ae85 H20 = 3c6ef372

H30

= a54ff53a H40

= 510e527f H50 = 9b05688c

H60

= 1f83d9ab H70

= 5be0cd19

2. Perhitungan Hash SHA-256

Pada tahap perhitungan hash SHA-256 digunakan fungsi, operasi yang terdapat di bab 2 dan konstanta di bab 3. Operasi penjumlahan (+) dikerjakan dengan operasi modulo 232.

Setiap blok pesan, M(1), M(2), ..., M(N), dengan nilai N merupakan jumlah bol hasil message padding.

Untuk tiap blok pesan M(i) akan diproses sebagai berikut:

For i=1 sampai N:

a) Persiapkan penjadwalan pesan {Wt}

Pada proses ini, penjadwalan pesan dihitung terlebih dahulu agar lebih mudah. Karena sebenarnya nilai Wt dipakai saat perhitungan nilai T1

yang akan dihitung nanti.

(49)

37 {

( )

{ }( ) { }( )

Fungsi { } { } telah dibahas pada subbab 2.6 b) Inisialisasi delapan variabel berjalan

Isi delapan variabel a, b, c, d, e, f, g, dan h awal dengan nilai hash ke (i-1), H(i-1). Isi delapan variabel sebagai berikut:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

c) Lakukan iterasi dalam iterasi, For t = 0 sampai 63 { }( ) ( ) { }

{ }( ) ( ) h = g

g = f f = e e = d + T1

d = c c = b b = a a = T1 + T2

(50)

38 Fungsi ∑{ } , ∑{ } , Ch, Maj, telah dituliskan pada subbab 2.6.

Proses ini dilakukan 0 ≤ t ≤ 79 dengan menggunakan variabel a, b, c, d, e, f, g, dan h awal pada proses b menghasilkan variabel a, b, c, d, e, f, g, dan h baru yang akan digunakan untuk proses perhitungan hash intermediate.

d) Menghitung hash intermediate ke-i H(i), untuk setiap i pada blok pesan M(i)

( ) ( )

( ) ( )

( ) ( )

( ) ( )

( ) ( )

( ) ( )

( ) ( )

( ) ( )

Cat : Apabila jumlah blok lebih dari satu maka H(i) akan menjadi working variabel pada proses ke-i.

3. Hasil Message digest

Hasil enkripsi dari proses SHA-256 akan diperoleh setelah semua blok M N yang masing-masing panjangnya 512 bit diproses. Setelah dilakukan semua langkah komputasi sebanyak N, maka diperoleh 256 bit message digest dari pesan M.

(51)

39

BAB IV

HASIL DAN IMPLEMENTASI

4.1. Hasil Implementasi Hash SHA-256

Pada hasil SHA-256 ini diambil message sebagai contoh adalah “abc”.

Sesuai dengan algoritma SHA-256 yang telah diterangkan pada bab sebelumnya, Untuk diperoleh message digest “abc” dikonversi bentuk binary sesuai dengan ASCII.

Message : a b c

Heksadesimal : 61 62 63

Binary : 01100001 01100010 01100011

Sebelum melakukan dua tahap utama, akan dibangkitkan setiap nilai konstanta 64 bit, { } { } { }. Nilai K akan bernilai tetap untuk proses apapun. Dengan nilai { } { } { }dapat dilihat pada subbab 2.6.

Kemudian akan dibangkitkan nilai Hash awal,8 baris 32 bit H0, H1,

…, H7. Dengan nilai H0, H1, …, H7 dapat dilihat pada subbab 2.6.

(52)

40 Setelah nilai konstanta dan Hash awal didapatkan, langkah selanjutnya dua langkah utama dalam pembentukan message digest.

1) Preprocessing

a) Padding

Message “abc” memiliki panjang message . Gunakan persamaan untuk mencari nilai k (k adalah banyaknya bilangan nol selain dari bilangan 128 bit terakhir dari message. Untuk ketentuan lebih jelasnya dapat dilihat subbab 3.4.

Sehingga menghasilkan bilangan sebagai berikut:

Kemudian tambahkan 64 bit yang bernilai sebesar nilai yang ditulis dalam bentuk 64 bit.

b) Partisi Message

Pada contoh kali ini hanya terdapat 1 blok message 512 bit M(1). Yaitu :

Gambar

Gambar 2.4. Sub Menu Poject  3.  Setelah terlihat property pages, pastikan
Gambar 3.1  Satu iterasi dalam keluarga SHA-2  Komponen berwarna biru melakukan operasi sebagai berikut:
Gambar 4.1. Project SHA 256

Referensi

Garis besar

Dokumen terkait

Parameter parameter yang digunakan antara lain jumlah iterasi sebanyak 3 kali pada proses Alternating sequential filter, nilai threshold untuk binerisasi citra hasil

Umpan balik sistem ini yaitu sensor arus, digunakan untuk mengetahui arus yang terpakai pada 4 buah stopkontak yang terpasang pada peralatan listrik, nilai tersebut akan diubah

Penggunaan sebuah piranti server terdedikasi kurang efisien apabila hanya digunakan untuk sistem operasi tunggal dengan kebutuhan sumberdaya kecil. Mesin

Dasar yang digunakan filter Wiener untuk menentukan suatu segmen sinyal termasuk noise atau sinyal gempabumi adalah adanya perbedaan signifikan pada kandungan frekuensi noise

Nilai α digunakan saat perhitungan pemulusan level, dimana hasil nilai level tersebut akan digunakan untuk nilai pemulusan lainnya (trend dan musiman) pada periode yang

menghitung fungsi keanggotaan masing-masing variabel, variabel yang digunakan adalah suhu dan frekuensi. Variabel suhu dibagi menjadi 2 yaitu keanggotaan suhu rendah dan suhu tinggi,

Setelah mendapatkan nilai fungsi terbaik yang merupakan solusi dari persamaan fitness maka tahap selanjutnya adalah menghitung gain K untuk selanjutnya digunakan

Berdasarkan hasil implementasi program dan percobaan seperti dalam Tabel 1, maka metode Monte Carlo dapat digunakan untuk menghitung nilai integral lipat dua fungsi dua variabel