Kamis, 06 Juni 2013

CRYPTOGRAPHY

Apa sich Cryptography itu?

        Kriptografi di Indonesia disebut persandian yaitu secara singkat dapat berarti seni melindungi data dan informasi dari pihak-pihak yang tidak dikehendaki baik saat ditransmisikan maupun saat disimpan. Di Indonesia instansi pemerintah yang secara resmi menangani kriptografi nasional adalah Lembaga Sandi Negara.
Sedangkan ilmu persandiannya disebut kriptologi yaitu ilmu yang mempelajari tentang bagaimana tehnik melindungi data dan informasi tersebut beserta seluruh ikutannya. Ilmu ini di Indonesia dapat dipelajari di Sekolah Tinggi Sandi Negara (STSN) yang merupakan satu-satunya perguruan tinggi kriptografi di Indonesia.
pada dasarnya kriptografi digunakan untuk menjaga kerahasian mengenai suatu informasi. selain fungsi utama tersebut kriptografi juga berguna untuk :
  • Menjaga kerahasiaan/privacy/confidentiality informasi terhadap akses pihak-pihak yang tidak memiliki kewenangan terhadap informasi tersebut.
  • Menjaga keutuhan informasi (integrity) sehingga informasi yang ditransmisikan tidak mengalami perubahan baik oleh pihak yang tidak berhak ataupun sesuatu hal lain (misalnya transmisi yang buruk).
  • Memastikan identitas (otentikasi) baik orang, mesin, program ataupun kartu bahwa memang pihak yang benar-benar berhak/asli/yang dimaksud. Otentikasi dapat juga digunakan untuk menyamarkan identitas (anonimity) terhadap yang tidak berhak.
  • Mencegah penyangkalan (non-repudiation) bahwa data tersebut memang benar adalah data yang dikirimkan oleh pihak pengirim.


Bagaimana Algoritma Cryptograhy ?
     Algoritma tersebut harus memiliki kekuatan untuk melakukan (dikemukakan oleh Shannon):
  • konfusi/pembingungan (confusion), dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya
  • difusi/peleburan (difusion), dari teks terang sehingga karakteristik dari teks terang tersebut hilang.

sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritmas sandi harus memperhatikan kualitas layanan/Quality of Service atau QoS dari keseluruhan sistem dimana dia diimplementasikan. Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode untuk menguji kehandalan algoritma sandi adalah kriptanalisa.
Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang / plaintext dan yang berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D.
Enkripsi : E(P)=C
Dekripsi : D(C)=P atau D(E(P))=P
Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi :
  • kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik
  • kunci-asimetris/asymetric-key
Berdasarkan arah implementasi dan pembabakan jamannya dibedakan menjadi :

Berdasarkan kerahasiaan kuncinya dibedakan menjadi :

Pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Sedangkan pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci publik(public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Bila elemen teks terang dienkripsi dengan menggunakan kunci pribadi maka elemen teks sandi yang dihasilkannya hanya bisa didekripsikan dengan menggunakan pasangan kunci pribadinya. Begitu juga sebaliknya, jika kunci pribadi digunakan untuk proses enkripsi maka proses dekripsi harus menggunakan kunci publik pasangannya.

Macam – macam Enkripsi dalam Crytography :
  • Algoritma Simentris


Algoritma Simetris adalah algoritma yang menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi. Algoritma ini juga sering disebut sebagai Kriptografi klasik
Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma:
  • Data Encryption Standard (DES)
  • Advance Encryption Standard (AES)
  • International Data Encryption Algoritma (IDEA)
  • A5
  • RC4


Kelebihan dari Algoritma Simentris ini adalah:
  • Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma asimetris.
  • Karena kecepatan operasinya yang cukup tinggi, maka dapat digunakan pada system real-time.


Kekurangan dari Algoritma Simentris ini adalah:
  • Untuk tiap pengiriman pesan dengan user yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.
  • Permasalahan dalam pengiriman kunci itu sendiri yang disebut "key distribution problem".


  • Algoritma Asimetri  


Algoritma Asimetri adalah algoritma yang menggunakan sepasang kunci atau 2 kunci kriptografi yang berbeda, salah satunya digunakan untuk proses enkripsi dan yang satu lagi digunakan untuk dekripsi, dan algoritma asimentri ini juga sering disebut algoritma kunci public, pada algoritma ini terbagi dua kunci yaitu :
Kunci Umum yaitu kunci yang boleh semua orang boleh  tahu.
Kunci Pribadi yaitu kunci yang dirahasiakan hanya boleh diketahui oleh satu orang.
Algoritma yang memakai kunci public diantarannya adalah :
  • Digital Signature Algorithm(DSA)
  • RSA
  • Diffie - Hellman(DH)
  • Elliptic Curve Crytography(ECC)



Kelebihan dari Algoritma Asimetri ini adalah:
  • Masalah keamanan pada distribusi kunci dapat lebih baik.
  • Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit.


Kekurangan dari Algoritma Asimetri ini adalah:
  • Kecepatan yang lebih rendah bila dibadingkan dengan algoritma simetris.
  • Untuk tinkat keamanan sama, kunci yang digunakan lebih panjang dibandingkan dengan algoritma simetris

  
  • Fungsi Hash Kriptografis


Fungsi Hash sering disebut sebagai fungsi hash satu arah (one way function),message digest , fingerprint, fungsi kompresi , dan message authentication code(MAC), Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data. Fungsi hash adalah fungsi yang secara efisien mengubah string input dengan panjang berhingga menjadi string output dengan panjang tetap yang disebut nilai hash. Atau hal ini juga merupakan  suatu fungsi matematikan yang mengambil input panjang variable dan mengubahnya kedalam urutan biner dengan panjang yang tetap . Fungsi Hash Umumnya digunakan untuk keperluan autentikasi dan integritas data biasanya digunakan bila ingin membuat sidik jari dari suatu pesan . Sidik jari pada pesan merupakan suatu tanda yang menandakan bahwa pesan tersebut benar - benar dari orang yang diinginkan .

Sifat-Sifat Fungsi Hash Kriptografi
  • Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit (secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
  • Tahan preimej kedua (Second preimage resistant): bila diketahui input m1 maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan hash(m1) = hash(m2)
  • Tahan tumbukan (Collision-resistant): sulit mencari dua input berbeda m1 dan m2 yang menyebabkan hash(m1) = hash(m2)


Ada beberapa macam fungsi hash yang relative sederhana yang dapat digunakan dalam penyimpanan database:
  • Metode Pembagian Bersisa (Division-Remainder Method) Jumlah lokasi memori yang tersedia dihitung, kemudian jumlah tersebut digunakan sebagai pembagi untuk membagi nilai yang asli dan menghasilkan sisa. Sisa tersebut adalah nilai hashnya. Secara umum, rumusnya h(k)= k modm. Dalam hal ini “M” adalah jumlah lokasi memori yang tersedia pada array. Fungsi hash tersebut menempatkan record dengan kunci “K” pada suatu lokasi memori yang beralamat h(k). Metode ini sering menghasilkan nilai hash yang sama dari dua atau lebih nilai aslinya atau disebut dengan bentrokan. Karena itu, dibutuhkan mekanisme khusus untuk menangani bentrokan yang disebut kebijakan resolusi bentrokan.
  • Melipat (Folding) Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian menambahkan nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai nilai hashnya.
  • Transformasi Radiks (Radix Transformation) Karena nilai dalam bentuk digital, basis angka atau radiks dapat diganti sehingga menghasilkan urutan angka-angka yang berbeda. Contohnya nilai desimal (basis 10) bisa ditransformasikan kedalam heksadesimal (basis 16).Digit atas hasilnya bisa dibuang agar panjang nilai hash dapat seragam.
  • Pengaturan Ulang Digit Radiks (Radix Transformation) Metode ini mengubah urutan digit dengan pola tertentu. 

Contoh Cryptograhy pada program Java menggunakan MD 5 :

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SimpleMD5 {

    private String convertToHex(byte[] data)
    {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < data.length; i++) {
            int halfbyte = (data[i] >>> 4) & 0x0F;
            int two_halfs = 0;
            do {
                if ((0 <= halfbyte) && (halfbyte <= 9)) {
                    buf.append((char) ('0' + halfbyte));
                } else {
                    buf.append((char) ('a' + (halfbyte - 10)));
                }
                halfbyte = data[i] & 0x0F;
            } while (two_halfs++ < 1);
        }
        return buf.toString();
    }

    public String MD5(String text)
            throws NoSuchAlgorithmException, UnsupportedEncodingException {
        MessageDigest md;
        md = MessageDigest.getInstance("MD5");
        byte[] md5hash = new byte[32];
        md.update(text.getBytes("iso-8859-1"), 0, text.length());
        md5hash = md.digest();
        return convertToHex(md5hash);
    }

   public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
     SimpleMD5 mySimpleMD5 = new SimpleMD5();
     String input = "Mencoba";
     System.out.println("Input: " + input);
     System.out.println("MD5  : " + mySimpleMD5.MD5(input));
  }
}

Kelompok 1 (CRYPTOGRAPHY)
  • M. Ainur Rois (11.01.53.0033)
  • Gugun Guanza (11.01.53.0014)
  • Akhmad Try Sutrisno (11.01.53.0054)
  • Febrian Edy Pratama (11.01.53.0003)
  • Winarno (11.01.53.0038)

Link Sumber :

Link UNISBANK : Universitas Ku
Link Blog Pak Rahman : Pak Rahman

Tidak ada komentar:

Posting Komentar