BAB II TINJAUAN PUSTAKA 2.1. Kriptografi - Implementasi Kombinasi Algoritma Ntruencrypt Dan Steganografi End Of File Pada Pengamanan Data Teks

BAB II TINJAUAN PUSTAKA 2.1. Kriptografi Kriptografi adalah ilmu yang mempelajari bagaimana supaya pesan atau dokumen kita

  aman, tidak bisa dibaca oleh pihak yang tidak berhak. Kriptografi mempunyai sejarah yang sangat panjang. Sejak jaman Romawi, Yulius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan militernya. Pada perang dunia kedua, Jerman dan Jepang menggunakan kriptografi untuk keperluan komunikasi militernya (Kurniawan, 2004).

  Kriptografi berasal dari bahasa Yunani. Menurut bahasa tersebut kata kriptografi dibagi menjadi dua, yaitu kripto dan graphia. Kripto berarti rahasia dan

  

graphia berarti tulisan. Kriptografi adalah ilmu untuk menjaga keamaan pesan ketika

pesan dikirim dari suatu tempat ke tempat yang lain (Ariyus, 2006).

  Sistem kriptografi terdiri dari lima bagian (Sadikin, 2012), yaitu:

  1. Plaintext: pesan atau data dalam bentuk aslinya yang dapat terbaca. Plaintext adalah masukan bagi algoritma enkripsi.

  2. Secret Key: yang juga merupakan masukan bagi algoritma enkripsi merupakan nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.

  3. Ciphertext: merupakan keluaran algoritma enkripsi. Ciphertext dapat dianggap

  4. Algoritma enkripsi: memiliki dua masukan, yaitu teks asli dan kunci rahasia.

  Algoritma enkripsi melakukan trasformasi terhadap teks asli sehingga menghasilkan teks sandi.

  5. Algoritma dekripsi: memiliki dua masukan, yaitu teks sandi dan kunci rahasia.

  Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli.

  Berdasarkan kunci yang dipakai pada proses enkripsi dan dekripsi, kriptografi dibagi ke dalam dua bagian, yaitu kriptografi simetri, kriptografi asimetri.

2.1.1. Kriptografi Simetri

  Algoritma ini sering disebut dengan algoritma klasik karena memakai kunci yang sama untuk kegiatan enkripsi dan dekripsi. Algoritma ini sudah ada sejak lebih dari 4000 tahun yang lalu. Bila mengirim pesan dengan menggunakan algoritma ini, sipenerima pesan harus diberitahu kunci pesan tersebut agar bisa mendekripsikan pesan yang dikirim. Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang tersebut akan dapat melakukan enkripsi dan dekripsi. Algoritma yang memakai kunci simetri di antaranya, Data Encryption Standard (DES), International Data Encryption

  

Algorithm (IDEA), Advanced Encryption Standard (AES) dan One Time Pad (OTP)

(Ariyus, 2008).

  Enkripsi dan dekripsi dengan algoritma simetri dapat dituliskan menjadi:

  

E K (M) = C…………….(1)

D

K (C) = M……………(2)

  Berdasarkan rumus (1), M adalah plaintext, C adalah Ciphertext, Ek adalah algoritma enkripsi dan pada rumus (2) Dk adalah algoritma dekripsi. Proses algoritma simetri dapat dilihat pada gambar 2.1.

  

Kunci

Plaintext Enkripsi Ciphertext Dekripsi Plaintext

Gambar 2.1 Skema Kriptografi Simetri

  Algoritma simetrik dibagi menjadi 2 kategori, yaitu block algorithms dan

  

stream algorithms. Block algorithms, data dienkripsi dalam blok-blok data. Block

cipher akan mengenkripsi blok data satu-persatu sampai blok plaintext terakhir.

  Sedangkan stream algorithms, data dienkripsi dalam bit-bit data (Scheiner, 1996).

2.1.2. Kriptografi Asimetri

  Algoritma asimetri sering juga dengan algoritma kunci publik, dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsi berbeda. Pada algoritma asimetri kunci terbagi menjadi dua bagian, yaitu: 1. Kunci umum (public key): kunci yang boleh semua orang tahu (dipublikasikan).

  2. Kunci rahasia (private key): kunci yang dirahasiakan.

  Kunci-kunci tersebut berhubungan satu sama lain. Dengan kunci publik orang dapat mengenkripsi pesan tetapi tidak bisa mendekripsinya. Hanya orang yang memiliki kunci rahasia yang dapat mendekripsi pesan tersebut. Algoritma asimetri bisa mengirimkan pesan dengan lebih aman daripada algoritma simetri. Contoh, Bob mengirim pesan ke Alice menggunakan algoritma asimetri. Hal yang harus dilakukan adalah:

  1. Bob memberitahukan kunci publiknya ke Alice.

  2. Alice mengenkripsi pesan dengan menggunakan kunci publik Bob 3. Bob mendekripsi pesan dari Alice dengan kunci rahasianya.

  Algoritma yang memakai kunci publik di antaranya, Diffie-Hellman (DH), RSA dan NTRUEncrypt. Enkripsi menggunakan algoritma asimetri dapat dituliskan menjadi:

  

E K (M) = C

  Meskipun kunci publik dan kunci rahasia berbeda, dekripsi dengan menggunakan kunci rahasia (Scheiner, 1996), yaitu

  

D K (C) = M

Gambar 2.2 merupakan gambaran mengenai proses enkripsi dan dekripsi menggunakan algoritma asimetri.

  Kunci Publik Kunci Privat Plaintext Ciphertext Plaintext

  Enkripsi Dekripsi

Gambar 2.2 Skema Kriptografi Asimetri 2.2.

   Landasan Matematika Kriptografi

  Matematika merupakan bagian penting dalam konsep kriptografi, sehingga memerlukan pemahaman beberapa ilmu matematika yang sering digunakan dalam kriptografi. Kriptografi dengan kunci publik berbasis pada persoalan dari teori bilangan yang merupakan bagian dari matematika.

2.2.1. Bilangan Prima

  Sebuah bilangan integer a>1 disebut bilangan prima jika dan hanya jika bilangan tersebut habis dibagi satu dan bilangan itu sendiri. Jumlah bilangan prima telah dibuktikan Euclid (300SM) adalah tak terhingga, namun semakin besar bilangan

2.2.2 Faktor Persekutuan Terbesar (FPB)

  Dua buah bilangan bulat dapat memiliki faktor pembagi yang sama. Faktor pembagi bersama yang terpenting adalah faktor persekutuan terbesar (greatest common divisor-

  

gcd) atau FPB (Munir, 2007). Dua buah bilangan a dan b merupakan bilangan bulat

  tidak nol. FPB dari a dan b adalah bilangan bulat terbesar adalah c sehingga c|a dan c|b, maka FPB a dan b dapat dinyatakan FPB(a,b)=c. Misalkan 36 mempunyai pembagi {1, 2, 3, 4, 6, 9, 12, 18} dan 24 mempunyai pembagi {1, 2, 3, 4, 6, 8, 12}. Faktor pembagi 36 dan 24 {1, 2, 3, 4, 6, 12} yang terbesar adalah 12, sehingga FPB(36, 24) = 12.

  Untuk menemukan FPB dari dua buah bilangan maka digunakan satu algoritma, yaitu algoritma Euclidean. Algoritma Euclidean ditemukan oleh Euclid, seorang matematikawan Yunani yang menuliskan algoritmanya tersebut dalam bukunya yang terkenal, Element. Euclid membuat algoritma yang dapat menemukan gcd dua buah bilangan integer a dan b dengan secara rekursif. Terdapat dua kasus, pertama kasus dasar, yaitu ketika b = 0 gcd(a,0) = a dan kasus umum ketika b

  ≠ 0 gcd(a,b) = gcd(b,a mod b) Kasus dasar menyatakan bila b = 0 maka didefenisikan nilai gcd adalah a. sedangkan kasus umum menyatakan untuk mencari (a,b) dapat direduksi menjadi gcd(b, a mod b). jadi kasus umum dapat dikenakan berkali-kali sampai akhirnya akan bertemu dengan kasus dasar untuk menemukan gcd(a,b) (Sadikin, 2012). Contoh : Carilah FPB dari 88 dan 36 menggunakan algoritma Euclidean Jawab: Aplikasi kasus umum gcd(6,0) = 6 Penjelasan gcd (6,0) = 6 6 mempunyai pembagi {0,1,2,3,6}, sedangkan 0 mempunyai pembagi untuk semua bilangan integer, faktor pembagi 6 dan 0 terbesar adalah 6. Sehingga dapat dibuktikan bahwa gcd(6,0) = 6 karena itu, gcd(96,42) = 6.

2.2.3 Aritmetika Modulo

  Aritmetika modulo merupakan aspek penting dalam komputasi integer, khususnya pada aplikasi kriptografi. Operator yang digunakan pada aritmetika modulo adalah mod. Operator mod memberikan sisa pembagian. Misalkan a adalah bilangan bulat dan m adalah adalah bilangan bulat lebih besar dari nol. Operasi a mod m

  (dibaca “a modulo m ”) memberikan sisa jika a dibagi dengan m.

  Notasi: a mod m = r sedemikian sehingga a = mq + r , dengan 0 ≤ r < m. Bilangan m disebut modulos atau modulo, dan hasil aritmetika modulo m terletak dalam himpunan {0,1,2,…,m-1}(Sadikin, 2012).

  Contoh : Beberapa hasil operasi dengan operator modulo: i. 43 mod 10 = 3, karena 43 = 10.3 + 3 ii. 21 mod 8 = 5, karena 21 = 8.2 + 5 iii. 6 mod 8 = 6, karena 6 = 8.0 + 6 iv. 0 mod 14 = 0, karena 0 = 0.14 + 0 v.

  • – 43 mod 6 = 1 karena – 41 = 6. – 7 +1

2.3. Polynomial Ring

  1. R dengan operator penjumlahan (+)

  • 0 + R = R + 0 = R ( identitas penjumlahan)

  ∀a,b ∈ R : a + b = b + a (komutatif)

  • ∀a,b,c ∈ R : (a + b) + c = a + (b + c) (asosiatif)
  • 1 -1 -1
  • 2. Operator perkalian (x)

  = a + a = 0 (invers) ∀a ∈ R : a ∈ R : a + a

  ∀a,b ∈ R : a × b = b × a (komutatif)

  • ∀a,b,c ∈ R : a × (b × c) = (a × b) × c (asosiatif)
  • 1 x R = R x 1 = R ( identitas perkalian)

  3. Gabungan perkalian dan penjumlahan ∀a,b,c ∈ R : a x (b + c) = (a x b) + (a x c) (distributif)

  • Struktur aljabar field merupakan pengkhususan terhadap struktur aljabar ring.

  Kondisi operator untuk field adalah kondisi operator untuk ring dengan tambahan operator perkalian x memiliki invers untuk semua simbol yang bukan identitas penjumlahan. Setiap ring di mana setiap elemen non-zero mempunyai invers perkalian disebut field (Sadikin, 2012).

  Polynomial berderajat n mempunyai bentuk umum: n n-1

  2

  1

  • f(x) = a x + a x x + a x a

  n n-1

  2

  1

  • …+a dimana a merupakan bilangan real. Meskipun rumus umum terlihat rumit, untuk lebih sederhana dapat dilihat pada contoh:

  4

  3

  2

  f(x) = 6x + 7x + x + 5 Jika R adalah suatu ring, maka R[x] adalah polynomial ring dengan variable x. Setiap elemen dari R[x] adalah polynomial dengan variabel x dan koefisien dari ring

  

R . Sebaliknya, setiap polynomial dengan variabel x dan koefisien dari ring R

merupakan elemen dari R[x] (Kromodimoejo, 2010).

  Sebagai contoh, dengan ring untuk koefisien berupa field K = Z/

  3 Z,

  5

  

3

  2

  x + 2x + x + 2

  • 2x
  • x
  • 2, a = 2,
  • +2x
  • +x
  • +2 dan p 2 = x
  • +2x
  • +x
  • +p
  • x
  • x
  • 2x
  • 2. Penjumlahan koefisien dilakukan dengan aritmetika R, dalam contoh menggunakan aritmatika modulo 3.

  • +2x dan p
  • +2x )( 2x+1)= 2x
  • +2x
  • +2 . Perkalian koefisien dilakukan dengan aritmetika R, dalam contoh menggunakan aritmatika modulo 3.
  • p
  • � Sedangkan, untuk aritmetika perkalian ditulis menjadi: p
  • )
  • =0

  =0

  � ) + (∑

  =0

  = ( ∑

  2

  1

  � maka aritmetika penjumlahan pada polynomial ring ditulis menjadi: p

  =0

  ∑

  2 =

  � dan p

  =0

  ∑

  1 =

  Menggunakan notasi penjumlahan p

  2

  3

  2

  1 .p 2 = (x

  � ) =

  ∑

  ax , =0

  � )) = (

  i , =0 −

  ∑

  = ( ∑

  �

  =0

  ∑

  =0

  ∑

  =0

  1 .p 2 = (

  � . (∑

  =0

  ∑

  � ) =

  =0

  � ) . (∑

  =0

  ∑

  p

  2 = 2x+1 maka

  2

  5

  4

  = 2, a

  3

  = 0, a2 = 1, a

  1

  a

  2

  3

  = 0 untuk i > n dan i < 0. Untuk contoh x

  5 = 1.

  i

  berlaku untuk setiap i Z tetapi a

  a i

  ≠ 0. Sebetulnya

  n

  adalah elemen dari ring R, dan a

  i

  dimana n adalah degree dari p dan a i adalah koefisien untuk suku dengan pangkat i jadi setiap a

  = 2 dan a

  Aritmatika dalam Polynomial ring R[x] adalah sebagai berikut:

  1 = x

  1

  3 Z , jika p

  2. Perkalian dilakukan dengan mengalikan setiap suku dari polynomial pertama dengan setiap suku dari polynomial kedua dan menjumlahkan semua hasil perkalian. Sebagai contoh, dengan R = Z/

  2

  3

  4

  5

  = x

  2

  , maka p

  1. Penjumlahan dilakukan dengan menjumlahkan semua suku dari kedua polynomial (suku dengan pangkat yang sama dijadikan satu dengan menjumlahkan koefisien).

  2

  3

  4

  2

  3

  5

  3 Z , jika p 1 = x

  Sebagai contoh, dengan R = Z/

  �

2.4. Algoritma NTRUEncrypt NTRUEncrypt ditemukan oleh Jeffrey Hoffstein, Jill Pipher dan Joseph Silverman.

  Algoritma ini pertama kali diperkenalkan oleh Hoffstein pada CRYPTO’96 dan dipublikasikan pada tahun 1998. Algoritma ini telah dimodifikasi sejak pertama kali diperkenalkan, NTRU telah berganti nama menjadi NTRUEncrypt (Rosenberg, 2004).

  N Polynomial ring ( p Z)[x]/(x -1), merupakan bagian penting dalam algoritma

  ℤ/

NTRUEncrypt , di mana modulo p akan mereduksi koefisien pada polinomial.

Aritmetika pada polynomial ring yaitu penjumlahan, perkalian dan invers merupakan bagian penting dalam algoritma NTRUEncrypt. Ring ini memiliki irreducible

  N polynomial

  X -1. Karakter irreducible polynomial mirip dengan bilangan prima, yaitu tidak bisa difaktorkan ke dalam bentuk polinomial lain, tidak bisa habis dibagi kecuali dengan dirinya dan satu. Contoh

  N pada perkalian polynomial dengan N=3 pada -1).

  Irreducible polynomial

  3

  ℤ/ ℤ[X]/(X

  2

  2

  a × b = (1 + 2x + 2x ) × ( 2x + x )

  2

  3

  4

  = 2x + 5x + 6x + 2x

  3

  4 Polynomial hasil perkalian terdapat 6x dan 2x (melebihi nilai N-1=3-1=2), maka N

  diperlukan reduksi terhadap hasil perkalian. Irreducible polynomial adalah x -1, maka

  N

  3

  3

  4

  x -1 = 0, sehingga x = 1. 6x dan 2x akan direduksi menjadi:

  3

  3

  6x = 6 × x = 6 × 1 = 6, dan

  4

  3

  2x = 2x × x = 2x × 1 = 2x, Sehingga hasil a × b, menjadi:

  2

  2

  a × b = (1 + 2x + 2x ) × ( 2x + x )

  2

  3

  4

  = 2x + 5x + 6x + 2x

  2

  = 2x + 5x + 6 + 2x

  2

  = (6 + 4x + 5x ) mod 3

  2

  • –1), N merupakan bilangan prima.

  11

  3

  42 ees677ep1 192 677

  2

  11

  3 157 ees887ep1 192 887

  2

  11

  3

  81 ees1087ep1 192 1087

  2

  3

  2

  63 ees1087ep2 256 1087

  2

  11

  3 120 ees1171ep1 256 1171

  2

  11

  3 106 ees1499ep1 256 1499

  2

  11

  3

  11

  55 ees761ep1 128 761

  Ada empat parameter yang digunakan untuk membangkitkan kunci yaitu bilangan integer N, p, q dan df, dimana N dan p merupakan bilangan prima, gcd(p,q) = gcd(N,q) = 1. N : dimensi dari polynomial yang digunakan (polinom akan memiliki derajat N

  11

  p : small modulus, koefisien dari polynomial akan direduksi dengan modulo p, p adalah bilangan prima. q : large modulus, koefisien dari polynomial akan direduksi dengan modulo q, q merupakan bilangan kelipatan 2. df: nilai yang akan digunakan untuk membangkitkan polynomial f pada proses pembangkitan kunci privat.

  Menyangkut masalah keamanan, NTRU Cryptosystems, Inc merekomendasikan penggunaan parameter standar EES (Escrowed Encryption

  

Standard ) pada implementasi algoritma NTRUEncrypt sesuai dengan data pada tabel

2.1 berikut.

Tabel 2.1 Standar Parameter pada Algoritma NTRUEncrypt

  

Parameter set Security level N q p df

  ees401ep1 112 401

  2

  11

  3 113 ees541ep1 112 541

  2

  3

  3

  49 ees659ep1 112 659

  2

  11

  3

  38 ees449ep1 128 449

  2

  11

  3 134 ees613ep1 128 613

  2

  11

  79

  Parameter set merupakan nama parameternya. Escrowed Encryption Standard

  merupakan singkatan dari EES. Angka setelah ees pada ees401ep1, ees541ep1 dan yang lainnya menunjukkan derajat polynomial-nya atau nilai N. Ep2 digunakan jika terdapat dua parameter dengan N yang sama tetapi dengan tingkat keamanan yang lebih tinggi. Kolom security level merupakan tingkat keamanan kunci dalam satuan

  bit .

2.4.1. Pembangkitan Kunci

  Algoritma NTRUEncrypt merupakan algorima kriptografi kunci publik atu algoritma asimetri, maka dibutuhkan dua kunci, yaitu kunci publik dan kunci privat. Pembangkitan kunci NTRUEncrypt antara lain:

  1. Tentukan parameter N, p, q dan df. Tabel 1 dapat digunakan untuk menentukan parameter yang digunakan berdasarkan level keamanan yang bersesuaian.

  2. Bangkitkan dua polinom kecil secara acak, yaitu f dan g dari ring ( ℤ/

  p

  ℤ)[x]/(x

  N -1).

  Isi dari polinom f dan g bersifat rahasia karena jika salah satunya diketahui oleh pihak lain, maka orang dapat mendekripsikan pesan. Metode yang dapat digunakan untuk membangkitkan polynomial acak f adalah dengan mendistribusikan secara acak nilai 1 sebanyak df, nilai -1 sebanyak df-1, selebihnya nilai 0 ke dalam koefisien polynomial. Polinomial g dapat dibangkitkan dengan cara yang sama menggunakan parameter dg yang dihasilkan dari nilai N/3. Polynomial g akan memiliki koefisien bernilai -1 dan 1 sebanyak dg, dan sisanya adalah 0.

  3. Hitung invers dari f modulus p (fp) dan invers diri f modulus q (fq), f*f p = 1 (modulus p) dan f*f q = 1(modulus q). Tidak semua polynomial mempunyai invers. Jika ternyata nilai invers tidak ditemukan, maka harus dicari lagi nilai f yang lain. 4. hitung kunci publik (polinom H) dengan rumus H = (p × f q × g) mod q dan kunci

  Contoh: Langkah-langkah menentukan kunci privat dan kunci publik pada NTRUEncrypt 1. Menentukan nilai N, p, q, df yaitu N=7, p=3, q=32, df =2.

  N

  2. Bangkitkan polinomial acak f pada ring (

  3 -1) yang mempunyai nilai

  ℤ/ ℤ)[x]/(x df=4.

  2

  3

  f = x - x + x

  N

  3. Bangkitkan polynomial acak g pada ring ( -1) yang mempunyai nilai

  3

  ℤ/ ℤ)[x]/(x df=2.

  2

  3

  4

  g = -1 + x - x + x

  4. Invers polynomial f modulo p (fp) dan f modulo q (fq) adalah:

Tabel 2.2 Nilai Invers f Modulo p (fp) k A B Q R t

  1 t 2 t

  7

  3

2 Init x - 1 x - x + - -

  1 - x

  7

  3

  2

  4

  3

  4

  3

  • 1 x - 1 x - x x + x x + 2

  1 2x + 2x x + 2x + 2 + x + 1

  3

  2

  2

  4

  3

  6

  5

  • 2 x - x

  1 1 2x + 2x x + x + x + 2 x + 1

  4

  2

  x

  • x + 1 x + 2x 2x

  4

  3

  6

  5

  7

  3 x + 2 1 x + 2 + 2x + 2x x + x x - 1

  4

  2

  • x + 1 x + 2x 2x

  6

  5

  7

  1 x + x x - 1 - -

  • 4 -

  4

  2

  x + + 2x 2x

Tabel 2.2 merupakan tabel untuk mencari nilai invers f modulo p (fp), dimana

  Q = (A : B) dan R = A mod B, sedangkan nilai t = t

  1 - (Q x t 2 ). Nilai fp merupakan

  nilai t

  1 pada proses terakhir. Sedangkan, untuk mencari nilai invers f modulo q (fq),

  prosesnya sama dengan proses mencari fp. Nilai invers fp terdapat pada tabel 2.3

Tabel 2.3 Nilai Invers f Modulo q (fq) k A B Q R t

  1 t

  2 T

  7

  3

2 Init x - 1

  1 - - - + x - x x

  7

  3

  2

  4

  3

  4

  1 31x

  • 1 x - 1 x + - x x + x x +

  3

  x + 31x + 31 31x + x +

  31

  1

  3

  2

  2

  4

  6

  5

  2 x + 31x x + 31 x + 1

  1 1 + + 31x x + x

  3

  4

  2

  • x

  31x + x + x + 31x 1 + 31x

  4

  6

  5

  7

  1 x + 31 31x x + + x x - 1

  • 3 x + 31

  3

  4

  2

  31x + + x + x + 31x 1 31x

  6

  5

  7

  • 4
    • 1 - x + x x - 1 -

  4

  2

  • x + 31x 31x

  2

  4

  5

  6 Berdasarkan tabel 2.2 dan tabel 2.3, maka nilai fp = 2x + 2x + x + x + x dan

  2

  4

  5

  6

  nilai fq = 31x + 31x + x + x + x

  5. Kunci publik polinom H H = (p × f × g) mod q

  q

  2

  4

  5

  6

  2

  3

  4 H = (3 × (31x + 31x + x + x + x ) × (-1 + x - x + x )) mod 32

  2

  4

  5

  6

  = 6x + 3x + 29x + 29x + 29x

  2

  3

  2

  • Maka diperoleh kunci privat f = x - x + x , dan kunci publik H = 6x + 3x

  4

  5

  6 29x + 29x + 29x .

2.4.2. Enkripsi Pesan

  Setelah melakukan pembangkitan kunci, langkah selanjutnya adalah mengenkripsi pesan. proses enkripsi antara lain:

  N

  2. Bangkitkan polinom kecil r secara acak pada ring ( p -1). Polinom ini ℤ/ ℤ)[X]/(X adalah blinding value yang berfungsi untuk menyamarkan pesan.

  3. Enkripsi polynomial m dengan rumus berikut: e = (r × H + m) mod q Polinom e adalah pesan terenkripsi yang akan dikirimkan. Contoh: Langkah- langkah mengenkripsi pesan string “d” dengan menggunakan kunci publik H

  2

  4

  5

  6

  = 6x + 3x + 29x + 29x + 29x adalah sebagai berikut:

  1. Pesan string “d” diubah ke dalam bentuk polynomial m menjadi:

  2

  3

  5

  6

  m = - x + x - x - x - x Langkah-langkah mengubah string “d” menjadi polynomial: Nilai ASCII string “d” adalah 100 100 : 3 = 33 sisa bagi 1 33 : 3 = 11 sisa bagi 0 11 : 3 = 3 sisa bagi 2 3 : 3 = 1 sisa bagi 0 Maka dihasilkan array dengan m = [1 0 2 0 1], karena N = 7 maka nilai m = [1 0 2 0 1 0 0] koefisien polynomial m harus diantara -1,0,1 maka nilai m dikurangi 1, maka nilai m = [0 -1 1 -1 0 -1 -1]

  2

  3

  

5

  6 Maka polynomial m = - x + x - x - x - x

  2. Bangkitkan polinom r sebagai blinding value:

  2

  r = 1 + x - x 3. e merupakan polinom hasil enkripsi: e = (r × H + m) mod q

  2

  2

  4

  5

  6

  2

  3

  5

  6

  e = ((1 + x - x ) × (6x + 3x + 29x + 29x + 29x ) + (- x + x - x - x ))

  • – x mod 32

  2

  3

  4

  5

  6

  = 8x + 10x + 28x + 26x + 25x + 28x

  2

  3

  4

2.4.3. Dekripsi Pesan

  Langkah-langkah pada proses dekripsi adalah sebagai berikut:

  1. Hitung nilai polinom a dengan rumus berikut: a = (f × e) mod q, dimana koefisien polinom a berada pada interval

  • –q/2 dan q/2.

2. Hitung nilai polinom b dengan rumus berikut: b = a mod p, koefisien polinom b berada pada interval -1 dan 1.

  3. Hitung nilai polinom c dengan rumus berikut: c = (f p × b) mod p, koefisien polinom b berada pada interval -1 dan 1. Polinom c merupakan polinom hasil dekripsi pesan. Contoh:

  2

  3

  4

  5

  6 Langkah-langkah mendekripsi pesan e = 8x + 10x + 28x + 26x + 25x + 28x

  dengan nilai

  2

  3

  f = x - x + x

  2

  4

  5

  6

  fp = 2x + 2x + x + x + x

  2

  4

  5

  6

  fq = 31x + 31x + x + x + x Proses dekripsi polinom e adalah sebagai berikut:

  1. Polinom a = (f × e) mod q a = (f × e) mod q

  2

  3

  2

  3

  4

  5

  6

  a = ((x - x + x ) × ( 8x + 10x + 28x + 26x + 25x + 28x )) mod 32

  2

  3

  4

  5

  

6

  = (-3 - 3x + 4x + 2x - 6x + 8x - 5x ) mod 32

  2. Polinom b = a mod p b = a mod p

  2

  3

  4

  5

  

6

  b = (-3 - 3x + 4x - 2x - 6x + 8x - 5x ) mod 3

  2

  3

  5

  6

  = (x - x - x + x ) mod 3

  3. Polinom c = (f p × b) mod p c = (f p × b) mod p

  2

  4

  5

  6

  2

  

3

  5

  6

  c = ((2x + 2x + x + x + x ) × (-x - x - x + x )) mod 3

  2

  3

  5

  6

  2

  3

  5

  6 Polinom m= - x + x - x + x - x , maka array m = [0 -1 1 -1 0 -1 -1], untuk

  mengubah kembali dalam bilangan ASCII maka m ditambahkan dengan 1, maka nilai m = [1 0 2 0 1 0 0], m diubah kembali ke nilai ASCII 1  (1 x 3) + 0 = 3 0  (3 x 3) + 2 = 11 2  (11 x 3) + 0 = 33 0  (33 x 3) + 1 = 100 1  100 Maka dihasilkan nilai m = 100, 100 merupakan nilai ASCII dari string “d”.

2.5. Citra Digital

  Citra adalah gambar pada bidang dwimatra (dua dimensi). Citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya menerangi objek, objek memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh alat-alat optik, misalnya mata pada manusia, kamera, pemindai dan sebagainya, sehingga bayangan objek yang disebut citra terekam.

  Citra ada dua macam, yaitu citra kontinu dan citra diskrit. Citra kontinu dihasilkan dari sistem optik yang menerima sinyal analog, misalnya mata manusia dan kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi terhadap citra kontinu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga mampu menghasilkan citra diskrit, misalnya kamera digital dan scanner (Munir, 2007).

  Citra digital dibentuk oleh kumpulan titik yang dinamakan piksel (pixel atau

  

picture element ). Setiap piksel digambarkan sebagai satu kotak kecil. Setiap piksel

  mempunyai koordinat posisi. Sistem koordinat yang dipakai untuk menyatakan citra

  N-1 x Posisi sebuah piksel M-1 y

Gambar 2.3 Sistem Koordinat Citra Berukuran M x N (M Baris dan N Kolom)

  Dengan sistem koordinat yang mengikuti gambar 2.3, sebuah piksel mempunyai koordinat berupa (x, y)

  Dalam hal ini,  x menyatakan posisi kolom;  y menyatakan posisi baris;  piksel pojok kiri-atas mempunyai koordinat (0, 0) dan piksel pada pojok kanan- bawah mempunyai koordinat (N-1, M-1).

2.5.1. Format File Citra Bitmap

  Citra bitmap sering disebut juga dengan citra raster. Citra bitmap menyimpan data kode citra secara digital dan lengkap. Citra bitmap dipresentasikan dalam bentuk matriks atau dipetakan dengan bilangan biner atau sistem bilangan lain. Citra ini dan lukisan digital. Bila citra ini diperbesar maka tampilan di monitor akan tampak pecah-pecah (Sutoyo, dkk. 2009).

  Citra dalam format BMP lebih bagus daripada citra dalam format yang lainnya, karena citra dalam format BMP umumnya tidak dimampatkan sehingga tidak ada informasi yang hilang. Terjemahan bebas bitmap adalah pemetaan bit. Artinya, nilai intensitas pixel di dalam citra dipetakan ke sejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap pixel panjangnya 8 bit. Delapan bit ini

  8

  merepresentasikan nilai intensitas pixel. Dengan demikian ada sebanyak 2 = 256 derajat keabuan, mulai dari 0 sampai 255 (Munir, 2007).

  Citra dalam format BMP ada tiga macam: citra biner, citra berwarna, dan citra hitam-putih (greyscale). Citra biner hanya mempunyai dua nilai keabuan, 0 dan 1. Oleh karena itu, 1 bit sudah cukup untuk merepresentasikan nilai pixel. Citra berwarna adalah citra yang lebih umum. Warna yang terlihat pada citra bitmap merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru. Setiap pixel disusun oleh tiga komponen warna: R (red), G (green), dan B (blue). Kombinasi dari ketiga warna RGB tersebut menghasilkan warna yang khas untuk pixel yang bersangkutan. Setiap komponen panjangnya 8 bit, jadi ada 256 nilai keabuan untuk warna merah, 256 nilai keabuan untuk warna hijau, dan 256 nilai keabuan untuk warna biru. Nilai setiap pixel tidak menyatakan derajat keabuannya secara langsung, tetapi nilai pixel menyatakan indeks tabel RGB yang memuat nilai keabuan merah (R), nilai keabuan hijau (G), dan nilai keabuan biru (B) untuk pixel yang bersangkutan. Pada citra hitam- putih, nilai R = G = B untuk menyatakan bahwa citra hitam-putih hanya mempunyai satu kanal warna. Citra hitam-putih umumnya adalah citra 8-bit (Munir, 2007).

  Citra yang lebih kaya warna adalah citra 24-bit. Setiap pixel panjangnya 24 bit, karena setiap pixel langsung menyatakan komponen warna merah, komponen warna hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8 bit. Citra

  24

Gambar 2.4 Contoh Gambar dengan Format Bitmap (.bmp)

2.6. Steganografi

  Steganografi adalah ilmu menyembunyikan teks pada media lain yang telah ada sedemikian sehingga teks yang tersembunyi menyatu dengan media itu. Media tempat penyembunyian pesan dapat berupa media teks, gambar, audio atau video. Steganografi yang kuat memiliki sifat yang tertanam teks tersembunyi sulit dibedakan dengan media asli namun teks tersembunyi tetap dapat diekstraksi (Sadikin, 2012).

  Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi (keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis sama seperti keadaan aslinya (Munir, 2007).

  Steganografi berbeda dengan kriptografi, letak perbedaannya adalah pada hasil keluarannya. Hasil dari kriptografi biasanya berupa data yang berbeda dari bentuk aslinya dan biasanya data seolah-olah berantakan sehingga tidak dapat diketahui kesamaan persepsi tersebut adalah oleh indera manusia (khususnya visual), namun bila digunakan komputer atau perangkat pengolah digital lainnya dapat dengan jelas dibedakan antara sebelum proses dan setelah proses (Alfian, 2013).

Gambar 2.5 Perbedaan Steganografi dan Kriptografi

  Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah (Munir, 2007):

  1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia.

  2. Robustness. Data yang disembunyikan harus tahan (robust) terhadap berbagai operasi manipulasi yang dilakukan pada citra penampung, seperti pengubahan kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan (cropping), enkripsi, dan sebagainya. Bila pada citra penampung dilakukan operasi-operasi pengolahan citra tersebut, maka data yang disembunyikan seharusnya tidak rusak (tetap valid jika diekstraksi kembali) 3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (reveal). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih

  Steganografi membutuhkan dua properti, yaitu wadah penampung dan data rahasia yang akan disembunyikan. Steganografi digital menggunakan media sebagai wadah penampang, misalnya citra, audio, teks dan video (Sutoyo,dkk. 2009). Gambar 2.6 adalah ilustrasi untuk menggambarkan proses penyimpanan (penyisipan) pesan ke dalam media digital dengan teknik steganografi. Secret message adalah pesan yang akan disisipkan ke dalam cover image. Cover image adalah media digital atau gambar.

  

Embedding Algorithm merupakan algoritma yang digunakan untuk menyisipkan

pesan. Sedangkan stego image adalah gambar yang telah disisipi oleh secret message.

  Sedangkan Extraction Algorithm digunakan untuk mengekstraksi pesan rahasia.

  Secret Secret Message

  Message Embedding Extraction

Stego Image

Algorithm Algorithm

  Cover Cover Image Image

Gambar 2.6 Proses Penyisipan dan Ekstraksi Data Rahasia

2.6.1. End of File Metode EOF merupakan salah satu teknik yang digunakan dalam Steganografi.

  Metode ini menggunakan cara dengan menyisipkan data pada akhir file. Sehingga, tidak akan mengganggu kualitas data awal yang akan disisipkan pesan. Namun, ukuran file setelah disisipkan pesan rahasia akan bertambah. Sebab, ukuran file yang telah disisipkan pesan rahasia sama dengan ukuran file sebelum disisipkan pesan rahasia yang disisipkan. Untuk mengenal data yang disisipkan pada akhir file, diperlukan suatu tanda pengenal atau simbol pada awal dan akhir data yang akan disisipkan (Alfian, 2013). Misalnya matriks pada sebuah citra dengan skala keabuan 6x6 piksel sebagai berikut: 98 167 10 101 56 200

  105 29 199 8 100 150 Citra tersebut akan disisipkan sebuah pesan, yaitu “YANSEN”. Kode ASCII dari pesan tersebut adalah:

  89 65 78 83 69 78 Pesan tersebut akan disisipkan dengan menggunakan metode EOF, sehingga citra menjadi:

  98 167 10 101 56 200 89 105 29 199 8 100 150 65 88 102 25 55 127 55 78 30 188 99 37 230 12 83 78 94 91 234 45 108 69 34 67 90 111 121 11 78

  Langkah-langkah menyisipkan pesan dengan metode EOF antara lain: 1. Menginputkan ciphertext yang akan disisipkan.

  2. Menginputkan citra yang akan menjadi media penyisipan ciphertext.

  3. Membaca nilai setiap pixel citra.

  4. Menyisipkan ciphertext ke dalam citra, yaitu pada akhir pixel citra . Sedangkan langkah-langkah mengekstraksi pesan yang sudah disisipkan dengan metode EOF antara lain:

  1. Menginputkan citra yang telah disisipkan ciphertext (stego image).

  2. Membaca nilai pixel stego image yang terdapat pada citra.

  3. Mengambil ciphertext yang terdapat pada akhir pixel citra.