Kamis, 16 Mei 2019

KRIPTOGRAFI

Algoritma Kriptografi

Menurut sejarahnya, algoritma kriptografi dapat dikategorikan menjadi 2 kelompok, yaitu sistem cipher klasik dan sistem cipher modern.

Sistem Cipher Klasik
(Algoritma Kriptografi Bersejarah)

Sebelum komputer ada, kriptografi dilakukan dengan algoritma berbasis karakter.

Algoritma yang digunakan termasuk ke dalam sistem kriptografi simetri dan digunakan jauh sebelum sistem kriptografi kunci publik ditemukan.

Terdapat sejumlah algoritma yang tercatat dalam sejarah kriptografi (sehingga dinamakan algoritma kriptografi klasik), namun sekarang algoritma tersebut sudah usang karena ia sangat mudah dipecahkan.

Algoritma kriptografi klasik:
1. Cipher Substitusi (Substitution Ciphers)
2. Cipher Transposisi (Transposition Ciphers)
1. Cipher Substitusi

Ini adalah algoritma kriptografi yang mula-mula digunakan oleh kaisar Romawi, Julius Caesar (sehingga dinamakan juga caesar Cipher), untuk menyandikan pesan yang ia kirim kepada para gubernurnya. 

Caranya adalah dengan mengganti (menyulih atau mensubstitusi) setiap karakter dengan karakter lain dalam susunan abjad (alfabet). 

Misalnya, tiap huruf disubstitusi dengan  huruf ketiga berikutnya dari susunan akjad. Dalam hal ini kuncinya adalah jumlah pergeseran huruf (yaitu k = 3).

Tabel substitusi:

pi : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ci : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Contoh 1. Pesan

HELLO WORLD
disamarkan (enskripsi) menjadi

KHOOR ZRUOG

Penerima pesan mendekripsi Cipherteks dengan menggunakan tabel substitusi, sehingga Cipherteks 

KHOOR ZRUOG

dapat dikembalikan menjadi plainteks semula:

HELLO WORLD

Dengan mengkodekan setiap huruf abjad dengan integer sebagai berikut: A = 0, B = 1, …, Z = 25, maka secara matematis caesar Cipher menyandikan plainteks pi menjadi ci dengan aturan:

ci = E(pi) = (pi + 3) mod 26 (1)

dan dekripsi Cipherteks ci menjadi pi dengan aturan:
  
pi = D(ci) = (ci – 3) mod 26 (2)

Karena hanya ada 26 huruf abjad, maka pergeseran huruf yang mungkin dilakukan adalah dari 0 sampai 25. Secara umum, untuk pergeseran huruf sejauh k (dalam hal ini k adalah kunci enkripsi dan deksripsi), fungsi enkripsi adalah

ci = E(pi) = (pi + k) mod 26 (3)

dan fungsi dekripsi adalah

pi = D(ci) = (ci – k) mod 26 (4)
Catatan :
1. Pergeseran 0 sama dengan pergeseran 26 (susunan huruf tidak berubah)

2. Pergeseran lain untuk k > 25 dapat juga dilakukan namun hasilnya akan kongruen dengan bilangan bulat dalam modulo 26. Misalnya k = 37 kongruen dengan 11 dalam modulo 26, atau 37  11 (mod 26).

3.Karena ada operasi penjumlahan dalampersamaan (3) dan (4), maka caesar Cipher kadang-kadang dinamakan juga additive Cipher.

Kriptanalisis Terhadap Caesar Cipher
Caesar Cipher mudah dipecahkan dengan metode exhaustive key search karena jumlah kuncinya sangat sedikit (hanya ada 26 kunci).

DAFTAR PUSTAKA

[1] http://id.wikipedia.org/wiki/Kriptografi
Tanggal akses: 28 Desember 2006 pukul 10:00.

[2]http://www.geocities.com/amwibowo/resource/komparasi/bab3.html
Tanggal akses: 28 Desember 2006 pukul 10:00.

[3] Munir, Rinaldi. (2004). Bahan Kuliah IF5054 Kriptografi. Departemen Teknik Informatika, Institut Teknologi Bandung.
Tanggal akses: 28 Desember 2006 pukul 10:00.

Kamis, 09 Mei 2019

Eror Detection(2)


Noise merupakan suatu hal yang tidak bisa dihindari dalam sistem komunikasi. Desain sistem telekomunikasi dilakukan untuk  mengetehui pengaruh dari noise tersebut terhadap informasi yang ditransmisikan. Salah satu upaya yang dilakukan adalah dengan  menerapkan  error  control  coding.  Hamming code merupakan contoh dari teknik error control coding yang ada.  Kinerja  Hamming  code     dibedakan  atas jumlah bit  parity  yang  dimiliki. Pada telekomunikasi memungkinkan setiap orang untuk saling berkomunikasi secara cepat dalam jarak yang jauh sekalipun, komunikasi juga menjadi aspek yang sangat penting dalam pertukaran informasi.     Dalam hal ini pada saat transmisi atau pengiriman    data teks juga dapat mengalami kegagalan (error). Error mengakibatkan perubahan isi dari data yang ditransfer kepada penerima (Receiver) berubah atau gagal. Dalam ilmu komputer, terdapat bermacammacam logika untuk mendeteksi dan mengoreksi error tersebut. Salah satu cara untuk mendeteksi error yang sederhana adalah dengan menggunakan Hamming   Code dengan single error correction.

Hamming Code adalah suatu algoritma pendeteksi error yang mampu mendeteksi beberapa error,  namun  hanya  mampu  mengoreksi  satu  error (single error correction). Algoritma pendeteksi error ini sangat cocok digunakan pada  situasi dimana terdapat beberapa   error   yang   teracak   (randomly   occuring errors). Algoritma Hamming  Code menyisipkan (n + 1) check bit ke dalam 2n data bit. Algoritma ini menggunakan operasi EX-OR (Exclusive–OR) dalam proses pendeteksian error. Input dan output data dari algoritma Hamming Code berupa bilangan biner.


Bit

Bit  merupakan  singkatan  dari Binary  Digit. Kata Binary sendiri diambil dari nama Binary Number system (Sistem Bilangan Biner). Setiap angka yang terdiri dari 1 dan 0 disebut bit. Bit hampir selalu digunakan sebagai satuan terkecil dalam penyimpanan dan komunikasi informasi.  Selain  itu  bit  juga  satuan ukuran, yaitu kapasitas informasi dari sebuah digit biner.


  Media Transmisi
     Media   transmisi   adalah   jalur   fisik   yang menghubungkan antara sisi pengirim dan sisi penerima. Secara umum media transmisi dikategorikan ke dalam dua  hal  yaitu  Guided Media  dan  Unguided  Media. Media transmisi yang termasuk ke dalam kategori Guided Media adalah kabel twisted-pair, koaksial dan kabel   serat   optic   (fiber-optic),   sedangkan   media transmisi Unguided Media adalah gelombang radio, gelombang mikro dan inframerah.


  Error Checking Pada Komunikasi Data
Masalah  yang  harus  dihadapi  dalam  sistem komunikasi apapun adalah terjadinya error yang menyebabkan sistem tersebut tidak sesuai dengan yang diinginkan. Hal ini terjadi juga pada sistem komunikasi data. Masalah utama dalam komunikasi data adalah realibility. Sinyal yang dikirim melalui medium tertentu dapat mengalami pelemahan, distorsi, dan adanya keterbatasan  bandwidth.  Hal  tersebut  dapat  membuat data yang dikirim menjadi rusak, hilang, berubah, atau terduplikasi. Error yang terjadi tersebut dapat diakibatkan oleh berbagai hal seperti kesalahan dalam transmisi (hardware), network interface, interferensi elektrik, noise (misal thermal noise), koneksi[5]. Pada saat data berada dalam transmission system terdapat kemungkinan data terkorupsi (data error). Data error tersebut akan diperbaiki oleh receiver melalui proses error detection dan error correction. Proses   error   detection   dilakukan   oleh   transmitter dengan cara menambahkan beberapa bit tambahan ke dalam data yang akan ditransmisikan.

  Hamming Code
Algoritma  Hamming  Code   ditemukan  oleh Richard W. Hamming pada tahun 1940-an. Algoritma Hamming Code merupakan salah satu algoritma pendeteksi error (error detection) yang mampu untuk mendeteksi beberapa error, namun hanya mampu mengoreksi satu error (single error correction). Algoritma pendeteksi error ini sangat cocok digunakan pada situasi dimana  terdapat  beberapa  error  yang teracak (randomly occuring errors)[10]


Algoritma Hamming Code menyisipkan beberapa buah check bit ke dalam data. Jumlah check bit yang disisipkan tergantung pada panjang data. 

Algoritma  Hamming  Code  merupakan  salah satu algoritma pendeteksi error (error detection) dan pengoreksi error (error correction) yang paling sederhana. Algoritma ini menggunakan operasi logika XOR (Exclusive – OR) dalam proses pendeteksian error (error detection) maupun proses pengoreksian error (error correction), sedangkan input dan output data dari algoritma Hamming Code berupa bilangan biner. Untuk data 2n  bit, jumlah check bit yang disisipkan ada sebanyak
c = (n + 1) bit.
Sehingga didapat tabel kenaikan data bit dan check bit
seperti berikut:

Tabel 1 : Tabel kenaikan data bit dan check bit

Data Bit
Check Bit
2
2
4
3
8
4
16
5
32
6
64
7
128
8
256
9

Check bit yang disisipkan ke dalam data ditempatkan pada  posisi  yang  dihitung  berdasarkan  rumus perhitungan posisi check bit berikut:
C i = 2 i – 1
Sehingga didapat tabel posisi check bit seperti berikut:

Tabel 2 : Tabel posisi check bit

Check Bit
Posisi
C1
1
C2
2
C3
4
C4
8
C5
16
C6
32
C7
64
C8
128
C9
256

Check bit ini yang digunakan untuk melakukan proses pendeteksi error (error detection) dan pengoreksi error (error correction). Algoritma proses pendeteksi error (error detection) dan pengoreksi error (error correction)   dari   algoritma   Hamming   Code   adalah sebagai berikut:

 1.Hitung panjang data input dari algoritma Hamming Code yang merupakan hasil penjumlahan dari panjang input data dan panjang check bit. Panjang. data output dari algoritma Hamming Code sama dengan panjang data input dari algoritma Hamming Code.

  2.Tandai semua posisi bit yang merupakan posisi dari check bit. Posisi selain posisi check bit merupakan posisi dari data bit

       3.Tentukan  rumus  perhitungan  dari  masing-masing check bit. Untuk n = 1 hingga jumlah    dari check bit,lakukan hal berikut:

     a. Catat  semua  posisi  dimana  bit  n  dari  member position  bernilai 1,  kecuali  posisi  bit  itu  sendiri. Member  position  merupakan  bentuk  biner  dari posisi bit.

      b. Rumus dari check bit n sama dengan operasi XOR dari posisi posisi yang dicatat.

        4.Hitung nilai dari check bit untuk data input dan data
output.

        5.Jika nilai check bit input tidak sama dengan nilai check bit output berarti terdapat kesalahan  (error). 

    6. Lakukan operasi XOR terhadap check bit input dan check bit output

    7.Konversikan hasil operasi XOR  ke  dalam bentuk bilangan desimal.
    8.Jika  nilai  dari  hasil  operasi  XOR  lebih  besar daripada panjang data input atau nilai dari hasil operasi  XOR  sama  dengan  posisi  dari  check  bit, maka terdapat lebih dari satu kesalahan (error).

    9.Jika  tidak,  maka jumlah kesalahan (error)  hanya satu dan hasil operasi merupakan posisi data yang terdapat kesalahan (error).
 

Analisa Bit Error

Selama pengiriman data baik berupa sinyal digital maupun sinyal analog, data yang dikirim berupa bit dapat mengalami perubahan dan kesalahan (error), hal ini disebabkan karena terjadinya gangguan pada sinyal (noise) pada saat data ditransmisikan melalui sistem transmisi sehingga pesan atau data yang diterima mengalami perubahan ketika sampai pada receiver. Berikut adalah contoh bit ketika mengalami perubahan atau error :
Misalkan   data   yang   dikirim   karakter   D” dimana D”=1000100         sedangkan    data    yang diterima menjadi 1000000. Dari contoh ini dapat diketahui letak dan posisi dimana bit mengalami perubahan atau  error


Analisa Deteksi Bit Check In Error

Error Detection adalah proses pelacakan kesalahan selama transmisi data  berlangsung, yaitu perubahan satu atau beberapa bit dari nilai 1 ke 0″ atau sebaliknya. Contoh untuk menentukan error detection dapat ditentukan dengan  parity check . Parity check menambahkan sebuah bit pada setiap pengiriman sejumlah bit, sehingga jumlah bit bernilai 1 selalu genap/ganjil. Parity bit dapat mendeteksi kesalahan 1 bit atau Kesalahan  bit dalam jumlah ganjil, namun tidak dapat mendeteksi kesalahan dalam jumlah genap.

 

Analisa Algoritma Hamming Code

Berikut adalah contoh data teks yang akan ditransmisikan dan mengalami kesalahan (Error) menggunakan algoritma Hamming code: Data teks yang akan di transmisikan adalah DEDI" Penyelesain:
1.Data   masing-masing   karakter   terlebih   dahulu diubah   ke   dalam   kode   ASCII   kemudian   di- XORkan. Data teks yang dikiri
 DEDI = 0100 0100 0100 0101 0100 0100 0100 1001

sedangkan data yang diterima menjadi
            DEDI = 0100 0000 0100 0101 0100 0100 0100 1001

    2.Hitung   panjang   data   input   dan   output   dari Algoritma  Hamming  Code.  Untuk  data        2n    bit, jumlah check bit yang disisipkan ada sebanyak c = (n + 1) bit. Panjang input dan output data = 32 bit = 25 sehingga jumlah check bit : 5 + 1 = 6 dan panjang data  input  dan  output  dari  Algoritma  Hamming Code = 32+6 bit = 38 bit.


 Check Digit
               Dipergunakan pada :
       Universal Product Code (UPC)
       SBN 10
       SBN 13
           Bank Account Number
           Credit Card Number
       ISSN
       Identity Card
            Dll
   UPC
            Angka terakhir pada UPC adalah check digit
      Cara pengecekan UPC :
     1.      Tambahkan angka-angka yang berada di posisi ganjil
     2.      Hasilnya dikalikan 3, kemudian ditambah dengan angka-angka yang berada di posisi genap
     3.      Hasilnya dimodulus dengan 10 dan harus menghasilkan angka 0
             
        Contoh 036000291452
       1.      0+6+0+2+1+5 = 14 dan 14x3 = 42
       2.      42+3+0+0+9+4+2 = 60
       3.      60 mod 10 = 0
    Credit card number 
   Umumnya terdiri dari 16 digit dan angka terakhir adalah check digit.
   Algoritma Luhn ini telah digunakan di beberapa industri antara lain: 

 1.   Perbankan, yaitu pada penomoran kartu kredit
      2.   Telekomunikasi,  yaitu  pada penomoran  identitas  perangkat  bergerak  secara internasional   (International   Mobile  Equipment   Identity/  IMEI)      (GSM Association, 2011)

Berikut ini adalah ilustrasi cara kerja algoritma Luhn:
Misalkan pada sebuah nomor kartu kredit 4563 7849 0347 5356, angka terakhir yaitu “6 sebenarnya merupakan check digit yang ditambahkan  sebagai angka  verifikasi. Untuk mengetahui apakah nomor kartu tersebut adalah nomor kartu yang valid atau tidak, maka dilakukan langkah sebagai berikut:
Langkah 1:
Kalikan setiap angka pada digit genap, dihitung dari kanan (belakang), yaitu sebagai berikut:

4
5
6
3
7
8
4
9
0
3
4
7
5
3
5
6
x2

x2

x2

x2

x2

x2

x2

x2

8

12

14

8

0

8

10

10



Langkah 2:

Jumlahkan seluruh digit angka, baik angka hasil perkalian maupun angka lainnya: Jumlah = (8) + 5 + (1+2) + 3 + (1+4) + 8 + 8 + 9 + 0 + 3 + 8 + 7 + (1+0)+ 3 + (1+0) +6

Jumlah = 78, karena angka 78 bukan kelipatan 10 maka nomor kartu kredit di atas tidak valid.

DAFTAR PUSTAKA
          [1]. GSM Association. 2011. IMEI Allocation and Approval Guidelines Version6.0 Luhn, H.P. 1960.
Computer for Verifying Number. US Patent Office2,950,048. 
[2].Jogyanto  HM,  Analisis  &  Desain”,  PenerbitANDI, Yogjakarta, 2005
[3]. Jusak,  Teknologi  Komunikasi  Data  Modern”,
Penerbit ANDI, Yogyakarta, 2013
[4]. Ariyus, Doni & Andri, Rum K.R, Komunikasi
Data”, Penerbit Andi, Yogyakarta, 2008
 [5].NURWATI,2019.Error Detection.Jakarta,Budi Luhur.