Feeds:
Posts
Comments

Archive for the ‘Kriptografi’ Category

How Long The Key Should We Use

KunciJudul di atas saya dapatkan ketika mengikuti sebuah seminar tentang Cryptography and IT Security yang dipresentasikan oleh Santi Indarjani (seorang dosen sekaligus praktisi di bidang kriptografi). Beliau mengangkat judul tersebut karena menemukan permasalahan dalam penggunaan kunci enkripsi. Apakah panjang kunci input pada aplikasi algoritma enkripsi berpengaruh pada optimalisasi sistem keamanan dari aspek lojik? Bagaimana peluang keberhasilan sebuah serangan terhadap suatu sistem enkripsi berdasarkan panjang kunci yang digunakan?

Kunci yang dimaksudkan adalah suatu rangkaian bit yang dibutuhkan sebagai input awal pada suatu proses enkripsi/dekripsi. Sering juga disebut sebagai seed atau kunci input atau kunci sesi (session key). Kunci ini harus dijamin kerahasiaannya, karena dengan mengetahui kunci ini maka seseorang yang memiliki algoritma enkripsi yang sama dapat melakukan proses dekripsi. Karena aplikasi penyandian dalam suatu sistem aplikasi elektronika digital berbasis biner (bit nol dan satu), maka ukuran kunci juga terukur dalam bit. Tingkat kesulitan dari percobaan semua kemungkinan kunci bertambah secara eksponensial sejalan dengan jumlah bit yang digunakan. Contoh pada DES digunakan 56-bit (dari 64 bit input), maka jumlah percobaan yang harus dilakukan untuk mendapatkan kunci yang benar adalah 256 , sementara pada AES dengan kunci 128 bit jumlah kemungkinan kuncinya 2128 .

Penentuan panjang kunci dalam disain maupun penggunaan algoritma kriptografis, perlu mempertimbangkan dua hal. Pertama prinsip bahwa panjang kunci menghasilkan tingkat keamanan yang lebih tinggi, sementara prinsip kedua semakin pendek kunci maka akan lebih efisien. Oleh karenanya sangat penting menentukan panjang kunci yang optimal dengan mengevaluasi kemungkinan kunci berhasil ditebak, versus efek panjang kunci terhadap waktu yang dibutuhkan untuk proses enkripsi maupun dekripsi.

Sementara itu perkembangan teknologi komputasi berkembang dengan cepat dalam menyelesaikan proses perhitungan skala tinggi. Menurut Moore’s Law setiap 18 bulan kekuatan komputasi berkembang dua kali lipat. Hal ini akan berpengaruh kepada tingkat keberhasilan pemecahan kunci dengan bruce force attack. Realita menunjukkan bahwa para penyerang yang terorganisir akan menggunakan sejumlah komputer secara bersama-sama untuk melakukan pemecahan kunci. Jika digunakan n komputer, maka secara teoritis kunci akan ditemukan dalam waktu (1/n)T, dimana T adalah waktu yang dibutuhkan jika menggunakan satu komputer.

Bruce Schneier dalam bukunya Applied Cryptography membuat daftar persyaratan keamanan untuk informasi yang berbeda seperti terlihat pada tabel :

Tipe Trafik

Lifetime

Panjang Kunci Minimum

Informasi taktis militer Menit/jam 56-64 bit
Produk announcements, harga saham, merger Hari/minggu 64 bit
Rencana bisnis jangka panjang Tahun 64 bit
Rahasia perdagangan dekade 112 bit
Rahasia H-Bom >40 tahun 128 bit
Identitas agen intelijen >50 tahun 128 bit
Rahasia pribadi >50 tahun 128 bit
Rahasia diplomatik >65 tahun Minimal 128 bit
Data sensus US 100 tahun Minimal 128 bit

Variasi tingkat keamanan dikaitkan dengan panjang kunci yang harus digunakan dan target perlindungan yang diharapkan terlihat pada tabel :

Security Level

Security (bit)

Protection

Comment

1

32

Serangan real time oleh individu Hanya dapat diterima untuk otentikasi

2

64

Perlindungan jangka pendek melawan organisasi kecil Seharusnya tidak digunakan untuk system konfidensial baru

3

72

Perlindungan jangka pendek melawan organisasi medium  

4

80

Perlindungan jangka waktu singkat melawan agencies Perlindungan ≤ 4 tahun

5

96

Standar tingkatan Menggunakan tiga kunci 3 DES » perlindungan 10 tahun

6

112

Perlindungan jangka menengah Sekitar 20 tahun

7

128

Perlindungan jangka panjang Sekitar 30 tahun

8

256

Foreseeable future  

Akhirnya beberapa hal yang bisa dijadikan pertimbangan dalam menentukan panjang kunci adalah perkembangan teknologi komputasi, teori empiris Moore’s Law sebagai parameter estimasi panjang kunci, serta klasifikasi data yang akan diamankan terkait dengan masa kerahasiaan yang dibutuhkan. Pada aplikasi kunci simetrik untuk masa kerahasiaan jangka panjang, minimal digunakan kunci 128 bit. Sedangkan untuk aplikasi asimetrik, dilakukan dengan mencari panjang kunci yang ekivalen dengan kunci simetrik yang direkomendasikan.

Read Full Post »

Berita Rahasia

Di era keterbukaan informasi ini ternyata memang masih dibutuhkan hal-hal yang sifatnya rahasia, terutama yang menyangkut privasi seseorang. Oleh karenanya ada saja yang berusaha untuk mengirim pesan dengan cara dirahasiakan seperti berikut ini :

˙ɐuʌƃʌʎɹɐɹɔ ʎʌɟun ɐuxɐɹƃuzɹz ɐub ‘ɐuxʌbʌbɐɹɔ uʇuozɹʎ ɐuʇɐɹb uzuɟuʍǝɹx ɐʌʎuʍɐɹz ɐuxu ulɐuɐudɐɹǝ ɥƃʌ ɹǝuɾƃsqɟ uɟuɟxuǝ ‘ʌɐʌ uɐudɐɹǝ ɐuxɟɥʎɥzɹz xɥƃɐɥ ˙(bʌsǝ) ɐqʌƃudʌsʌƃɐɹbʌ ldɐɹɥpɹǝs qʌbuǝ ƃuxʇɐuǝɹɔ ɐub ʎɹɟɐqɔ ʌƃǝɹɔɹɟ ‘ʎʌdɹx nʌoɹʎ ʇɐul ƃuxʇɐuǝɹɔ xɥƃɐɥ ʌsuǝʇqƃɔʌǝx ubuɔ ɐuxɟɥxqsʌb ɐuxu uʇɥʍ ɐuɾulǝux uǝuɔ ɐuxnuozuɐɹz uɟɹƃuxɐɹı

˙bɐqzbɹǝ ʌb ndǝuɹɟɹǝ ƃsqɟqǝdʌz lnɔuǝʇqƃɔlǝd ʌƃʌʎɹɐɹɔ ǝqʌɐɹɟ ‘ɐuɟɹƃuxɐɹı zuɐnƃuǝuzuǝ ɐuxʌuɔzuɟʌb ɥƃʌ ʎun ˙ubu ʇɐul uzƃʌǝqʇʎu xuɟɥǝɹz ɐub uɟʌʎuɐuʇɐɹz xɥƃɐɥ ɐuxɟɥxqsʌb ɐuxu uʇɥʍ uʌbɐʌ ˙uzƃʌǝqʇʎu ʌɟuxʌsʌƃɐɹƃq ɐub ‘ʌɟɔʌǝxɹb ‘ʌɟɔʌǝxɐɹ ʌƃǝɹɔɹɟ ‘ɥǝuo ʌsuǝʇqƃɔʌǝx xʌɐxɹƃ ɐuxʇɐuozɹʇɐɹz xɥƃɐɥ ʌɟuƃʌʎʌɟusʌb ɐuxu uʌbɐʌ ɐuxƃɥoɹlɐɹz ƃuxʌǝɹɟ uxʌǝɹzu ‘bɐqzbɹǝ ‘ƃsqɟqǝdʌz ɟuxǝuz ʌǝub ǝuoux

˙ʌsuǝʇqƃɔʌǝx ʇɐubʌo ʌb ƃɹɟʌǝ ɐuxɥxuʎɹz xɥƃɐɥ ʇɐʌƃɐɹɔ ƃuʇɐuɟ ‘ulɐƃɥǝɥɐɹz ˙ɥƃʌ ƃɥǝɹɔ ʌǝuƃ ʌǝɹʇɹɐ ʌb ubu ʇɐul ɟʌƃuzɹƃuz ɐuʌʎnuɹx ʎɹıɹʎ ɐuxƃuxʇɐʌɐɹz uɐɥʇ ‘uʌbɐʌ ʌb ʌsuǝʇqƃɔʌǝx ubuɔ ʌɟuǝƃɐɹɟɐqxǝɹo xɥƃɐɥ ɐuxɟɥƃɥzɹz ƃsqɟqǝdʌz ɐuxuƃuʇɐɹz ‘ɐubɐuɐu ɐunouɐuzbuɔ ‘uʌbɐʌ ʌb ƃsqɟqǝdʌz ƃɹɟʌǝ ɐɹzɹʍuɐuz ǝɥƃxɹǝʌb

Sekiranya ada yang tahu maksudnya, silahkan terjemahkan artinya. Bagi yang udah berusaha cari tahu tapi gak ketemu juga, temukan caranya seperti disini dan disitu.

Read Full Post »

Kriptografi untuk anak-anak

cryptokids.jpgMengenalkan ilmu pengetahuan kepada anak-anak memang harus menarik dan disesuaikan dengan dunia anak-anak yang penuh dengan permainan. Demikian pula halnya bila akan mengenalkan ilmu kriptografi yang oleh sebagian orang dikenal sebagai ilmu yang membutuhkan kemampuan berfikir yang cukup lumayan. Lihat saja teori matematika tingkat lanjut yang biasa ditemukan bila kita mempelajari kriptografi.

Bagaimana halnya dengan anak-anak? Apakah mereka harus pandai dan menguasai ilmu matematika tingkat tinggi tersebut lebih dahulu sebelum belajar kriptografi?

Ternyata kriptografi juga bisa dipelajari dengan mudah bagi anak-anak, justru bisa menjadi suatu hal yang menarik bila dikemas dalam bentuk permainan. Hal inilah yang dilakukan oleh National Security Agency (NSA) sebagai lembaga yang berkecimpung di bidang kriptografi Amerika. Untuk mengenalkan ilmu kriptografi bagi anak-anak, NSA membuat sebuah situs yang bertajuk CryptoKids. Melalui situs ini anak-anak dapat mengenal apa itu sandi dan bermain-main dengannya layaknya seorang Cryptographer atau seorang Cryptanalyst.

Media ini tidak saja berguna bagi anak-anak, tapi juga orang dewasa yang ingin mengenal (baru mengenal) apa itu kriptografi. Jadi bagi siapa saja yang ingin dan baru kenal kriptografi, kiranya dapat memanfaatkannya.

 

Read Full Post »

SHA – Algoritma Kriptografi HASH

Digital SignatureHash atau kadang disebut dengan digest adalah semacam tanda tangan untuk sebuah teks atau file data. Sebagai contoh SHA-1 menghasilkan 160 bit tanda tangan untuk sebuah teks.

Hash bukanlah enkripsi – tidak dapat didekripsi untuk mendapatkan teks asli (ia merupakan sebuah fungsi kriptografi satu arah yang memiliki ukuran panjang tertentu yang diperoleh dari teks sumber dengan panjang yang beragam)

Hash dapat digunakan oleh beberapa aplikasi untuk :

  1. validate a password (memvalidasi password); nilai hash dari password akan disimpan, kemudian ketika password diotentikasi, maka password yang dimasukkan oleh user akan dihitung hashnya dan jika hashnya sesuai maka password dinyatakan valid. Namun untuk mendapatkan password yang asli tidak dapat diperoleh dari hash yang telah disimpan.

  2. Challenge handshake authentication; untuk menghindari kesalahan pengiriman password dalam kondisi “clear”, client dapat mengirim nilai hash sebuah password melalui internet untuk divalidasi oleh server tanpa beresiko disadapnya password yang asli.

  3. anti-tamper ; untuk memastikan data tidak berubah selama ditransmisikan. Penerima akan menghitung nilai hash dan mencocokkan dengan hash yang dikirimkan, apabila nilainya sama berarti data yang dikirimkan tidak berubah.

  4. digital signatures; dilakukan dengan cara mengenkrip nilai hash sebuah dokumen dengan menggunakan private key, sehingga menghasilkan tanda tangan digital untuk dokumen tersebut. Orang lain dapat mengecek otentikasi dokumen tersebut dengan cara mendekrip tanda tangan tersebut menggunakan public key untuk mendapatkan nilai hash yang asli dan membandingkannya dengan nilai hash dari teks.

SHA-1 merupakan algoritma hash yang banyak digunakan dalam SSL (Secure Sockets Layer), PGP (Pretty Good Privacy), XML Signature, dan beberapa aplikasi lainnya.

Berikut merupakan pseudocode SHA-1 :

Initialize variables:
h0 := 0x67452301
h1 := 0xEFCDAB89
h2 := 0x98BADCFE
h3 := 0x10325476
h4 := 0xC3D2E1F0

Pre-processing:
append the bit '1' to the message
append k bits '0', where k is the minimum number >= 0 such that the resulting message
    length (in bits) is congruent to 448 (mod 512)
append length of message (before pre-processing), in bits, as 64-bit big-endian integer

Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
    break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15

    Extend the sixteen 32-bit words into eighty 32-bit words:
    for i from 16 to 79
       w[i] := (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1

    Initialize hash value for this chunk:
    a := h0
    b := h1
    c := h2
    d := h3
    e := h4

    Main loop:
    for i from 0 to 79
        if 0 ≤ i ≤ 19 then
            f := (b and c) or ((not b) and d)
            k := 0x5A827999
        else if 20 ≤ i ≤ 39
            f := b xor c xor d
            k := 0x6ED9EBA1
        else if 40 ≤ i ≤ 59
            f := (b and c) or (b and d) or (c and d)
            k := 0x8F1BBCDC
        else if 60 ≤ i ≤ 79
            f := b xor c xor d
            k := 0xCA62C1D6

        temp := (a leftrotate 5) + f + e + k + w[i]
        e := d
        d := c
        c := b leftrotate 30
        b := a
        a := temp

    Add this chunk's hash to result so far:
    h0 := h0 + a
    h1 := h1 + b
    h2 := h2 + c
    h3 := h3 + d
    h4 := h4 + e

Produce the final hash value (big-endian):
digest = hash = h0 append h1 append h2 append h3 append h4

Read Full Post »

RSA Public Key Encryption

Algoritma RSA merupakan algoritma kunci publik yang dibuat oleh Ron Rivest, Adi Shamir dan Leonard Adleman. Berikut merupakan perhitungan matematika dibalik enkripsi kunci publik RSA :

  1. Pilih P dan Q, dua bilangan prima besar
  2. Pilih E dimana E lebih besar dari 1, E adalah kurang dari PQ dan E relatif prima terhadap (P-1)(Q-1) (tidak memiliki faktor prima yang sama). E tidak harus prima tetapi harus ganjil.  (P-1)(Q-1) tidak dapat prima karena merupakan bilangan genap.
  3. Hitung D dimana (DE-1) dibagi sempurna oleh (P-1)(Q-1). Ahli matematika menuliskan sebagai DE = 1 (mod(P-1)(Q-1)) dan mereka menyebut D multiplicative inverse dari E. Lebih mudahnya pilih integer X yang menghasilkan D = (X(P-1)(Q-1)+1)/E yang menghasilkan bilangan integer (bulat), gunakan nilai D.
  4. Fungsi Enkripsi adalah C = (T^E) mod PQ, dimana C adalah ciphertext (positive integer), T adalah plaintext (positive integer), dan ^ menunjukkan pangkat. Message yang dienkripsi, T, harus lebih kecil dari modulus PQ.
  5. Fungsi Dekripsi adalah T = (C^D) mod PQ, dimana C adalah ciphertext (positive integer), T adalah plaintext (positive integer), dan ^ menunjukkan pangkat.


Public key adalah pasangan (PQ, E).

Private key adalah D.

Perkalian PQ adalah modulus (biasa disebut N dalam literatur).

E adalah public exponent. D adalah secret exponent.

 

Public key dapat dipublikasikan, karena tidak ada metode yang mudah untuk menghitung D,P, atau Q bila yang diberikan hanya (PQ, E).

Jika P dan Q masing-masing 1024 bit, susah dan membutuhkan waktu yang sangat lama untuk dapat memfaktorkan modulus menjadi P dan Q.

 Contoh :

 P  = 61

Q  = 53

PQ = 3233

E  = 17

D  = 2753

 
Public Key adalah (E, PQ)

Private Key adalah D

 Enkripsi :

 encrypt(T) = (T^E) mod PQ

                     = (T^17) mod 3233

 encrypt(123) = (123^17) mod 3233

                         = 337587917446653715596592958817679803 mod 3233

                         = 855

 

Dekripsi :

 decrypt(C) = (C^D) mod PQ

                     = (C^2753) mod 3233

 

 decrypt(855) = (855^2753) mod 3233

                         = 123

 

Satu cara untuk menghitung nilai 855^2753 mod 3233 adalah sebagai berikut:

 2753 = 101011000001 basis 2, kemudian

             2753 = 1 + 2^6 + 2^7 + 2^9 + 2^11

                     = 1 + 64  + 128 + 512 + 2048

 
Tabel Perpangkatan dari 855:

             855^1 = 855 (mod 3233)

            855^2 = 367 (mod 3233)

            855^4 = 367^2 (mod 3233) = 2136 (mod 3233)

            855^8 = 2136^2 (mod 3233) = 733 (mod 3233)

            855^16 = 733^2 (mod 3233) = 611 (mod 3233)

            855^32 = 611^2 (mod 3233) = 1526 (mod 3233)

            855^64 = 1526^2 (mod 3233) = 916 (mod 3233)

            855^128 = 916^2 (mod 3233) = 1709 (mod 3233)

            855^256 = 1709^2 (mod 3233) = 1282 (mod 3233)

            855^512 = 1282^2 (mod 3233) = 1160 (mod 3233)

            855^1024 = 1160^2 (mod 3233) = 672 (mod 3233)

            855^2048 = 672^2 (mod 3233) = 2197 (mod 3233)

 
Berdasarkan tabel perhitungan tersebut diatas, diperoleh:

             855^2753 (mod 3233)

            = 855^(1 + 64  + 128 + 512 + 2048) (mod 3233)

            = 855^1 * 855^64 * 855^128 * 855^512 * 855^2048 (mod 3233)

            = 855 * 916 * 1709 * 1160 * 2197 (mod 3233)

            = 794 * 1709 * 1160 * 2197 (mod 3233)

            = 2319 * 1160 * 2197 (mod 3233)

            = 184 * 2197 (mod 3233)

            = 123 (mod 3233)

            = 123

Read Full Post »