Arsip untuk ‘Kriptografi’ Kategori

PGP dan GPG

Maret 31, 2009

(Subhan, 2005)PGP bekerja dengan menggabungkan beberapa bagian yang terbaik dari key konvensional (simetrik) dan public key cryptography, sehingga sering disebut hybrid cryptosystem. Ketika seorang pengguna mengenkrip sebuah plaintext dengan menggunakan PGP, maka awal PGP akan mengkompress plaintet ini. Data yang dikompress menghemat waktu, media transmisi  dan yang lebih penting adalah keamanan kriptografi yang kuat. Kebanyakan  teknik analisis sandi mengeksplotasi pola yang ditemukan dalam plaintext untuk men-crack chiper. Kompressi mengurangi pola-pola ini dalam plaintext, dengan cara demikian perbaikan yang lebih baik untuk menghambat analisa kode-kode.

PGP membuat sebuah session key, yaitu sebuah kunci rahasia berupa bilangan acak pada saat itu. Session Key ini berkerja dengan sangat aman, algoritma enkripsi konvesional yang cepat untuk meng-enkrip plaintext. Hasilnya adalah berupah chiper text. Sekali data dienkripsi, lalu session key ini dienkripsi lagi menggunakan kunci publik penerima. Session key yang terenkripsi kunci publik penerima dikirim dengan chipertext ke penerima.

clip_image0021

Gambar Cara Kerja Enkripsi PGP

Proses deskripsi bekerja sebaliknya, penerima menerima pesan lalu membuka pesan tersebut dengan kunci pribadinya, namun pesan tersebut masih terenkripsi dengan session key. Dengan menggunakan PGP, penerima mendekrip chipertext yang terenkripsi secara konvensional.

Sebuah kunci (key) adalah sebuah nilai yang bekerja dengan sebuah algoritma kriptografi untuk menghasilkan sebuah ciphertext yang sepesifik. Kunci pada dasarnya adalah bilangan yang besar.

Ukuran kunci publik dan ukuran kunci rahasia kriptograpi tidak saling barhubungan. Sebuah kunci 80-bit konvensional memiliki kekuatan setara dengan kunci publik 1024-bit. Sebuah kunci 128-bit konvensional setara dengan kunci publik 3000-bit. Jadi semakin besar kunci semakin aman, tetapi algoritma yang digunakan tiap tipe kriptograpi sangat berbeda dan perbendaan ini seperti orang membandingkan antara apel dengan jeruk.

Sementara secara matematis kunci publik dan pribadi berhubungan. Sangat sulit mendapatkan kunci pribadi hanya dengan memberikan kunci publiknya, tetapi mendapatkan kunci pribadi selalu memungkinkan jika diberikan waktu yang cukup dan kekuatan komputasi cukup.

Kunci disimpan dalam bentuk terinkripsi. PGP menyimpan kunci dalam 2 file pada dihardisk, satu untuk kunci publik dan satunya lagi untuk kunci pribadi. File-file ini disebut dengan keyrings. Dalam menggunakan PGP, secara khusus akan ditambahkan kunci publik penerima ke keyring publik. Kunci pribadi disimpan pada keyring pribadi. Jika kehilangan keyring pribadi, maka tidak akan dapat melakukan dekripsi terhadap informasi yang telah terenkripsi pada ring tersebut.

GNU Privacy Guard (GnuPG, atau GPG)

(Sapty, F. R., 2005) GNU Privacy Guard (GnuPG, atau GPG) merupakan software enkripsi email pengganti PGP yang lengkap dan bebas. Pada dasarnya PGP dan GPG adalah sama, hanya pada model pengembangannya saja yang berbeda. GnuPG adalah suatu program yang digunakan untuk mengamankan komunikasi dan penyimpanan data. Program ini dapat menyandikan data serta membuat tanda tangan digital. Karena tidak menggunakan algoritma yang dipatenkan, GnuPG dapat digunakan secara bebas. GnuPG menggunakan kriptografi Public  key (public key cryptography) sehingga para penggunanya dapat saling berkomunikasi secara aman. Dalam sistem Public  key, setiap pengguna mempunyai sepasang kunci yang terdiri dari Private key dan Public  key. Private key dirahasiakan (hanya diketahui oleh pemiliknya), sementara Public  key dapat diberikan pada siapa saja yang dikehendaki pemilik, sehingga pemilik dapat berkomunikasi dengan pengguna lain yang diberi Public  key tersebut.

GPG bebas karena tidak menggunakan algoritma enkripsi yang telah dipatenkan sehingga bisa dipakai oleh siapa saja tanpa batasan. Beberapa fitur yang ditawarkan GnuPG adalah:

  1. Penggantian penuh terhadap pemakaian PGP.
  2. Dapat digunakan sebagai pengganti PGP (yang dipatenkan algoritmanya).
  3. Tidak menggunakan algoritma yang dipatenkan.
  4. Berlisensi GPL.
  5. Ditulis dari nol, sehingga tidak menggunakan kode sumber atau algoritma dari program lainnya.
  6. Implementasi penuh OpenPGP (RFC 2440).
  7. Kemampuan yang lebih baik dibandingkan PGP.
  8. Mampu menerjemahkan / memverifikasi pesan tersandi dari PGP 5.x
  9. Mendukung algoritma ElGamal (tanda tangan dan penyandian), DSA, 3DES, BlowFish, TwoFish, CAST5, MD5, SHA-1, RIPE-MD-160 dan TIGER
  10. Kemudahan implementasi algoritma penyandian baru dengan menggunakan modul ekstensi (extension module).
  11. Identitas pengguna (UserID) diseragamkan dalam suatu bentuk standar.
  12. Mendukung kunci dan tanda tangan yang dapat kadaluwarsa (hanya dapat digunakan dalam jangka waktu tertentu)
  13. Mendukung bahasa Inggris, Denmark, Spanyol, Belanda, Perancis, Jerman, Jepang, Italia, Portugis (brasil dan portugal), Polandia, Rusia, dan swedia
  14. Online Help system.
  15. Dapat mengirimkan Pesan kepada penerima anonim (optional).
  16. Dukungan integral untuk HKP Keyserver (wwwkeys.pgp.net).
  17. Mempunyai banyak program antarmuka grafis.

GnuPG bekerja sempurna di atas sistem operasi Linux dengan platform x86, mips, alpha, sparc64 ataupun powerpc. Sistem operasi lain dengan platform x86 yang juga bekerja adalah FreeBSD, OpenBSD, NetBSD dan bahkan Windows.

Pembuatan kunci dapat menggunakan algoritma DSA maupun ElGamal. Kemudian ditentukan panjang kunci yang akan dibuat. Yang harus dipertimbangkan dalam menentukan panjang kunci, seseorang harus memilih antar aspek kerahasiaan dan waktu yang diperhitungkan. Jika kunci semakin panjang resiko untuk meng-crack pesan akan menurun. Tetapi dengan kunci yang lebih besar waktu kalkulasinya juga bertambah. Panjang kunci minimal pada GnuPG adalah 768 bit. Untuk DSA 1024 bit adalah ukuran yang standar. Password digunakan agar dapat menggunakan fungsionalitas yang dimiliki kunci rahasia. Setelah semua data dimasukkan sistem mulai menggenerate kunci. Proses ini membutuhkan waktu beberapa lama.

Orang lain dapat menghubungi seseorang secara aman dengan kunci publik yang telah dibuat. Mempublish kunci dapat dilakukan dengan mempublishnya pada homepage sendiri (dengan finger) melalui server kunci .Saat menerima kunci publik dari orang lain harus dilakukan  penambahan data ke basisdata kunci.

Sekali sebuah kunci diimpor harus dilakukan validasi. GnuPG menggunakan model kepercayaan yang handal dan fleksibel yang tidak membutuhkan seseorang untuk secara personal memvalidasi setiap kunci yang diimpor. Tetapi beberapa kunci mungkin harus divalidasi secara personal. Sebuah kunci divalidasi dengan memverifikasi fingerprint kunci dan kemudian menandatangani kunci untuk mensertifikasinya sebagai kunci yang valid.

User dapat menarik/mencabut kembali kuncinya untuk beberapa alasan. Misalnya kunci rahasia telah dicuri atau menjadi tersedia untuk orang yang salah. Jika user melupakan passphrasenya atau jika kunci pribadi telah diketahui orang lain atau hilang, sertifikat ini dapat dipublikasikan untuk memberitahukan orang lain bahwa kunci publik tidak dapat digunakan kembali. Kunci publik yang ditarik kembali tetap dapat digunakan untuk memverifikasi tanda tangan yang dibuat di masa lalu, tetapi tidak dapat digunakan lagi untuk mengenkripsi pesan. Juga berdampak pada kemampuan untuk mendekrip pesan yang dikirimkan kepadanya di masa lalu jika user tetap memiliki akses ke kunci privat.

Key Exchange

Maret 31, 2009

Pada umumnya teknik kriptografi adalah untuk mengenkripsi pembicaraan tiap individual dengan adanya kunci. Hal ini dinamakan session key, karena hanya digunakan untuk satu session komunikasi.

Key Exchange dengan Symmetric Cryptography

Pada protokol ini diasumsikan Alice dan Bob berada pada sebuah jaringan tiap orang membagikan kunci rahasia (secret key) dengan Key Distribution Center (KDC) dimana Trent ada pada protokol. Hal ini berarti kunci-kunci harus berada pada tempatnya sebelum protokol dimulai. (Protokol mengabaikan masalah nyata yaitu bagaimana mendistribusikan kunci-kunci rahasia ini dimana kuncdan i berada di tempatnya dan Mallory tidak bisa menebaknya),

  1. Alice menghubungi Trent dan meminta sebuah session key untuk berkomunikasi dengan Bob.
  2. Trent membangkitkan session key yang acak. Dia mengenkripsi 2 (dua) salinan session key tersebut ; satu dengan kunci Alice dan satu yang lain dengan kunci Bob, kemudian Trent mengirim 2 (dua) salinan tersebut kepada Alice.
  3. Alice mendekripsi salinan session key-nya.
  4. Alice mengirim salinan session key lain kepada Bob.
  5. Bob mendekripsi salinan session key miliknya.
  6. Alice dan menggunakan session key untuk berkomunikasi secara aman.

Keamanan dari protokol ini bergantung pada Trent sebagai pihak yang dipercaya. Jika Mallory berhasil menyerang Trent maka dia dapat mempunyai kunci-kunci rahasia yang dibagikan oleh Trent kepada tiap pengguna.

Key Exchange dengan Public Key Cryptography

Alice dan Bob menggunakan public key cryptography untuk agree atau menyetujui session key yang digunakan untuk mengenkripsi data.  Sehingga Alice dapat mengirim pesan secara aman kepada Bob walaupun Bob tidak mengetahui jatidiri Alice.

  1. Alice mendapat public key Bob dari KDC.
  2. Alice membangkitkan session key yang acak, mengenkripsinya menggunakan public key Bob dan mengirim kepada Bob.
  3. Bob mendekripsi pesan Alice menggunakan private-key miliknya.
  4. Keduanya dapat berkomunikasi menggunakan session key yang sama.

Man-in-the-Middle Attack

Pada attack ini Mallory dapat membuntuti Bob ketika berkomunikasi dan dapat membuntuti Alice ketika ia berkomunikasi. Dibawah ini bagaimana attack ini bekerja :

  1. Alice mengirim public key miliknya kepada Bob. Mallory mencegatnya dan mengganti kunci ini dengan public key miliknya dan dikirim kepada Bob.
  2. Bob mengirim public key miliknya kepada Alice. Mallory mencegatnya dan mengganti kunci ini dengan public key miliknya dan dikirim kepada Alice.
  3. Ketika Alice mengirim pesan kepada Bob, mengenkripsi dengan public key “Bob”, Mallory mencegatnya karena pesan di enkripsi dengan public key miliknya maka pesan didekripsi dengan private-key miliknya, kemudian di enkripsi kembali menggunakan public key Bob dan mengirimnya kepada Bob.
  4. Ketika Bob mengirim pesan kepada Alice, mengenkripsi dengan public key “Alice”, Mallory mencegatnya karena pesan di enkripsi dengan public key miliknya maka pesan didekripsi dengan private-key miliknya, kemudian di enkripsi kembali menggunakan public key Alice dan mengirimnya kepada Alice.

Man-in-the-Middle Attack bekerja karena Alice dan Bob tidak mempunyai jalan untuk memverifikasi satu dengan yang lain.

Protokol Interlock

Protokol ini dibuat oleh Ron Rivest dan Adi Shamir dimana protokol baik untuk menanggulangi Man-in-the-Middle Attack. Dibawah ini bagaimana protokol ini bekerja :

  1. Alice mengirim public key miliknya kepada Bob.
  2. Bob mengirim public key miliknya kepada Alice.
  3. Alice mengenkripsi pesan menggunakan public key Bob, namun ia hanya mengirim sebagian pesan terenkripsi teresebut kepada Bob.
  4. Bob mengenkripsi pesan menggunakan public key Alice, namun ia hanya mengirim sebagian pesan terenkripsi teresebut kepada Alice.
  5. Alice mengirim bagian lain pesan yang terenkripsi kepada Bob.
  6. Bob menempatkan 2 (dua) bagian pesan Alice secara bersama kemudian mendekripsinya dengan private key miliknya. Kemudian Bob mengirim bagian lain pesan yang terenkripsi kepada Alice.
  7. Alice menempatkan 2 (dua) bagian pesan Bob secara bersama kemudian mendekripsinya dengan private key miliknya.

Hal yang penting pada protokol ini adalah sebagian pesan tidak berguna untuk didekripsi tanpa bagian pesan lain. Ada beberapa cara untuk melakukan hal ini, yaitu:

  1. Jika algoritma yang digunakan adalah algoritma block cipher, sebagian dari tiap blok dapat dikirim pada setiap bagian pesan.
  2. Dekripsi pesan bergantung pada initialization vector, yang dapat dikirim pada bagian pesan lain.
  3. Bagian pertama yang dikirim dapat berupa one-way hash dari pesan terenkripsi dan pesan yang terenkripsi dikirim pada bagian kedua.

Key Exchange dengan Digital Signature

Trent menandatangani public key Alice dan Bob. Tanda tangan tersebut dimasukan pada ownership. Sehingga ketika Alice dan Bob menerima kunci tersebut maka mereka memverifikasi tanda tangan Trent.

Dalam hal ini Mallory tidak dapt meniru karena dia tidak mengetahui private key Alice maupun Bob. Maka yang dilakukan oleh Mallory adalah berkompromi (compromise) Trent (dengan break kedalam KDC) maka ia akan mendapatkan private key Trent. Dengan private key Trent maka ia dapat memalsukan tanda tangan untuk membohongi Alice dan Bob, kemudian ia merubah tanda tangan yang ada pada data base untuk menandatangani kunci-kunci secara nyata atau ia menagkap permintaan user dan mereplay dengan kunci-kunci palsu miliknya. Dalam hal ini dimungkinkan man-in-the-middle attack dan membaca komunikasi orang-orang. Pada beberapa jaringan serangan diatas lebih sulit dibandingkan dengan passively sitting pada suatu jaringan.

Key dan Message Transmission

Alice dan Bob tidak perlu untuk menyelesaikan protokol sebelum menukarkan pesan. Pada protokol ini, Alice mengirim pesan M kepada Bob tanpa ada protokol key exchange sebelumnya.

1.     Alice membangkitkan session key K yang random dan mengenkripsi M menggunakan K.  à EK(M)

2.     Alice mendapatkan public key Bob dari database.

3.      Alice mengenkripsi K dengan menggunakan public key Bob à EB(K)

4.     Alice mengirim pesan terenkripsi dan session key terenkripsi kepada Bob. à EK(M), EB(K) (untuk mengamankan dari man-in-the-middle attack, Alice dapat menambah dengan pengunaann tanda tangan).

5.     Bob mendekripsikan session key K menggunakan private key miliknya.

6.     Bob mendekripsi pesan Alice menggunakan session key.

Protokol ini juga dapat dikombinasikan dengan menggunakan digital signature, timestamps dan protokol lain.

Key dan Message Broadcast

Tidak ada alasan Alice tidak dapat mengirim pesan yang terenkripsi kepada beberapa orang sekaligus. Pada contoh dibawah ini Alice akan mengirim pesan terenkripsi kepada Bob, Carol dan Dave.

  1. Alice membangkitkan session key K secara acak dan mengenkripsi M menggunakan kunci K. à EK(M)
  2. Alice mendapatkan public key Bob, Carol dan Dave dari database. à EB(K), EC(K), ED(K)
  3. Alice mengenkripsi K dengan public key Bob, public key Carol dan public key Dave. à EB(K), EC(K), ED(K), EK(M)
  4. Hanya Bob, Carol dan Dave dapat mendekripsi kunci K masing-masing menggunakan private key miliknya.
  5. Hanya Bob, Carol dan Dave dapat mendekripsi pesan Alice menggunakan kunci K.

Protokol ini dapat diimplementasikan pada store-and-forward network. Sebuah central server dapat memforward pesan Alice kepada Bob, Carol dan Dave dengan kunci yang terenkripsi. Server tidak harus aman atau dipercaya selama tidak dimungkinkan untuk mendekripsi pesan.

Basic Protocol Otentikasi

Maret 31, 2009

Ketika Alice akan memasuki sebuah sistem komputer host (atau sebuah mesin ATM, atau sistem telephone banking, atau sistem- sistem lain), bagaimana caranya sistem tersebut misal komputer host tahu siapa yang akan memasuki sistemnya? Dan bagaimana sistem tersebut tahu bahwa yang akan masuk adalah benar-benar Alice bukanlah Eve yang berpura-pura dengan menggunakan identitas Alice? Sederhananya, penggunaan password dapat menyelesaikan permasalahan ini. Caranya Alice memasukkan password-nya, kemudian sistem mengkonfirmasi kebenaran password tersebut. Keduanya baik Alice dan sistem mengetahui password tersebut sebagai suatu pengetahuan yang rahasia dan sistem meminta password tersebut setiap Alice ingin masuk ke dalam sistem.

Otentikasi dengan menggunakan One Way Function

Penemuan Roger Needham dan Mike Guy menyatakan bahwa sistem tidak perlu mengetahui password, sistem hanya berkemampuan untuk dapat membedakan antara password yang valid dan password yang tidak valid. Hal ini mudah dilakukan dengan penerapan one way function. Daripada menyimpan password, sistem lebih diarahkan menyimpan one-way function dari password tersebut.

(1) Alice mengirimkan passordnya kepada sistem.

(2) Sistem menjalankan one-way function pada password.

(3) Sistem membandingkan nilai hasil dari one-way function dengan nilai yang sudah tersimpan sebelumnya.

Karena sistem tidak menyimpan tabel berisi password-pasword yang valid (digunakan), serangan berupa membobol sistem kemudian mencuri password tidak dapat dilakukan. Yang tersimpan hanyalah daftar nilai password hasil one-way function dan nilai tersebut tidak dapat digunakan karena one-way function tidak dapat dibalik untuk mendapatkan password sesungguhnya.

Dictionary Attack dan Salt

Sebuah file yang terenkripsi dengan one-way function masih mempunyai kelemahan. Pada durasi waktu tertentu, Mallory dapat mengumpulkan 1.000.000 password yang lazim digunakan dalam suatu daftar. Kemudian Mallory mengoperasikan semua (1.000.000) password tersebut dengan one-way function dan menyimpan hasil operasi tersebut. Jika setiap password berkapasitas sekitar 8 bytes, maka file yang Mallory simpan tidak lebih dari 8 megabytes, dan ukuran tersebut dapat disimpan hanya dalam sebuah disket (floopy disk). Sekarang, Mallory mencuri sebuah file password yang terenkripsi. Mallory membandingkan file tersebut dengan file kemungkinan password yang terenkripsi miliknya dan melihat file yang bersesuaian.

Usaha yang dilakukan Mallory tersebut dinamakan dictionary attack, dan secara mengejutkan ternyata usaha tersebut terbukti berhasil. Sedangkan Salt adalah suatu cara untuk membuat usaha tersebut menjadi lebih sulit. Salt adalah suatu string acak yang digabungkan dengan password sebelum dioperasikan dengan one-way function. Kemudian nilai salt dan hasil one-way function disimpan ke dalam database sistem. Jika nilai kemungkinan nilai salt cukup besar, maka secara praktis dapat menghindari dictionary attack terhadap password yang lazim digunakan karena Mallory harus membangkitkan one-way function dari semua kemungkinan nilai salt.

Intinya adalah meyakinkan bahwa Mallory harus melakukan percobaan enkripsi dari setiap password pada kamus (dicitonary) yang dimilikinya setiap saat ketika ia mencoba memecahkan password orang lain, daripada hanya melakukan sebuah prakomputasi besar-besaran untuk semua kemungkinan password.

Salt memang dibutuhkan. Kebanyaan sistem UNIX menggunakan hanya 12 bit nilai salt. Meskipun demikian, Daniel Klein mengambangkan program penebak password (password-guessing program) yang dapat meng-crack 40 persen dari password pada sistem yang diberikan dalam waktu satu minggu. David Feldmeier dan Philip Karn membuat daftar sekitar 732.000 password yang tergabungkan dengan setiap dari 4096 kemungkinan nilai salt. Mereka memperkirakan bahwa 30 persen password dari sembarang sistem yang diberikan dapat dipecahkan dengan daftar tersebut.

Salt bukanlah obat mujarab, dengan menambahkan jumlah bit salt tidak menyelesaikan semuanya. Salt hanya memproteksi terhadap dictionary attack yang umumnya dilakukan pada suatu file password, tidak menghindarkan dari concerted attack pada password single. Salt memproteksi penggunaan password sama pada beberapa sistem, tetapi tidak membuat password lebih kuat atau lebih baik.

SKEY

SKEY adalah sebuah program otentikasi yang bergantung pada one-way function pada keamanannya. Untuk mempersiapkan sistem, Alice memasukkan bilangan acak, R. Komputer menghitung nilai f(R),f (f(R)), f(f(f(R))) dan seterusnya, sekitar seratus kali. Sebut saja bilangan tersebut x1, x2, x3,…,x100. Komputer mencetak daftar nilai tersebut dan Alice menyimpan daftar tersebut secara aman. Komputer juga menyimpan x101 pada database login di sebelah nama Alice.

Saat pertama kali Alice login, Alice mengetik namanya dan nilai x100. Komputer menghitung f(xi) dan membandingkannya dengan xi+1 yang tersimpan dalam databasenya. Eve tidak dapat mengambil informasi yang berguna karena setiap nilai hanya digunakan satu kali, dan fungsinya adalah one-way. Dengan kata lain, database tidak berguna bagi attacke. Tentunya ketika Alice menjalankan nilai dari daftarnya, ia harus menginisialisasi ulang sistem.

Otentikasi menggunakan Public Key Cryptography

Meskipun dengan salt, protokol pertama mempunyai masalah keamanan yang serius. Ketika Alice mengirimkan passwordnya kepada sistemnya, siapapun yang mempunyai akses terhadap jalur datanya dapat membacanya. Eve dapat saja mengamati barisan (sequence) milik Alice untuk login. Jika Eve mempunyai akses terhadap memori prosesor sistem, ia dapat melihat password sebelum sistem meng-hash password tersebut.

Public Key Cryptography dapat mengatasi permasalahan ini. Sistem menyimpan file public key setiap user dan setiap user menyimpan private key mereka. Berikut protokol otentikasi menggunakan public key cryptography ketika Alice melakukan login:

(1) Sistem mengirimkan string acak kepada Alice.

(2) Alice mengenkripsi string acak tersebut dengan private key yang dimilikinya kemudian mengirimkan kembali kepada sistem bersama dengan namanya.

(3) Sistem melihat public key Alice dalam database kemudian mendekripsi pesan menggunakan public key tersebut.

(4) Jika hasil dekripsi dengan string yang dikirimkan di awal ternyata cocok, maka Alice diperbolehkan memasuki sistem.

Tidak seorang pun mempunyai akses terhadap private key Alice, maka tidak seorang pun dapat berpura-pura sebagai Alice. Terlebih Alice tidak pernah mengirimkan private key miliknya melalui jalur transmisi menuju sistem. Dengam mengamati tansmisi (interaksi) Eve tidak mendapatkan informasi apapun yang dapat digunakan untuk menarik kesimpulan private key dan berpura-pura sebagai Alice.

Suatu kebodohan jika mengenkripsi sembarang string yang tidak hanya dikirimkan oleh pihak ketiga yang tidak terpercaya namun pada setiap kondisi. Secure proof-of-identity protocols sebagai berikut lebih rumit:

(1) Alice menghitung berdasarkan beberapa bilangan acak dan private key-nya dan mengirimkan hasilnya ke sistem.

(2) Sistem mengirimkan Alice sebuah bilangan acak yang berbeda.

(3) Alice melakukan beberapa perhitungan berdasarkan bilangan acak (baik satu yang ia hitung dan satu lagi yang ia terima dari sistem) dan private key miliknya, dan mengirimkan hasilnya ke sistem.

(4) Sistem melakukan beberapa perhitungan pada bilangan yang berbeda-beda yang diterimanya dari Alice dan public key milik Alice untuk memverifikasi bahwa Alice mengetahui private key miliknya.

(5) Jika ia mengetahui, maka identitasnya valid.

Jika Alice tidak memepercayai sistem lagi sebagaimana sistem mempercayai Alice, maka Alice akan meminta sistem untuk membuktikan identitasnya.

Step (1) terlihat tidak terlalu dibutuhkan dan membingungkan, tapi ini dibutuhkan untuk mencegah attack pada protokol.

Mutual Otentikasi menggunakan Protokol Interlock

Alice dan Bob adalah dua orang user yang ingin mengotentikasi satu sama lain. Masing-masing mempunyai password yang diketahui pihak satu yang lain. Alice mempunyai Pa dan Bob mempunyai Pb. Berikut protokol yang akan berjalan:

(1) Alice dan Bob tukar menukar public key.

(2) Alice mengenkripsi Pa dengan public key Bob dan mengirimnya kepada Bob.

(3) Bob mengenkripsi Pb dengan public key Alice dan mengirimkannya kepada Alice.

(4) Alice mendekripsi yang diterimanya pada step(2) dan memverifikasi kebenarannya.

(5) Bob mendekripsi yang diterimanya pada step (3) dan menverifikasi kebenarannya.

Mallory dapat melakukan man-in-the-middle attack sebagai berikut:

(1) Alice dan Bob saling menukar public key. Mallory menagkap kedua pesan tersebut. Ia menukarkan public key miliknya dengan milik Bob dan mengirimkannya kepada Alice. Kemudian ia menukarkan public key miliknya dengan milik Alice dan mengirikannya kepada Bob.

(2) Alice mengenkripsi Pa dengan public key “Bob” dan mengirimkannya kepada Bob. Mallory menangkap pesan tersebut, mendekripsi Pa dengan private key miliknya, mengenkripsi ulang dengan Alice public key dan mengirimkannya kepada Bob.

(3) Bob mengenkripsi Pb dengan public key “Alice” dan mengirimkannya kepada Alice. Mallory menangkap pesan tersebut, mendekripsi Pb dengan private key miliknya, mengenkripsi ulang dengan public key Alice dan dikirimkan kepada Alice.

(4) Alice mendekripsi Pb dan memverifikasi kebenarannya.

(5) Bob mendekripsi Pa dan memverifikasi kebenarannya.

Alice dan Bob tidak melihat perbedaan apapun. Meskipun, Mallory mengetahui Pa dan Pb. Donald Davies dan Wyn Price menjelaskan bagaimana protokol interlock dapat mengalahkan attack ini. Steve Bellovin dan Michael Merrit mendiskusikan cara untuk menyerang protokol ini. Jika Alice adalah user dan Bob adalah sistem, Mallory dapat berpura-pura sebagai Bob, menjalankan step permulaan dari protokol dengan Alice, kemudian menghentikan koneksi. Mallory dapat melakukan hal ini dengan mensimulasikan jalur noise atau kegagalan jaringan, dimana hasil akhirnya yaitu Mallory mendapatkan password milik Alice. Kemudian Mallory dapat berhubungan dengan Bob dan menyelesaikan protokol, dengan demikian Mallory akan mendapatkan password milik Bob juga.

Protokol dapat diubah sehingga Bob memberikan password miliknya sebelum Alice, berdasarkan asumsi bahwa password milik user (Alice) lebih sensitif dibandingkan password milik sistem (Bob). Hal ini menyebabkan butuhkan attack yang lebih rumit.

SKID

SKID2 dan SKID3 adalah protokol identifikasi berbasis kriptografi simetrik yang dikembangkan oleh RACE’RIPE project. Mereka menggunakan sebuah MAC untuk menyediakan keamanan dan keduanya berasumsi bahwa Alice dan Bob saling memberikan secret key, K.

SKID2 memungkinkan Bob untuk membuktikan identitasnya kepada Alice. Berikut protokolnya:

(1) Alice memilih sebuah bilangan acak, Ra. Kemudian mengirimkannya kepada Bob.

(2) Bob memilih bilangan acak, Rb. Kemudiaan Bob mengirimkan Alice: Rb, Hk(Ra,Rb,B). Hk adalah nilai MAC. B adalah nama Bob.

(3) Alice menghitung Hk(Ra,Rb,B) dan membandingkannya dengan yang ia terima dari Bob. Jika hasilnya identik, maka Alice tahu bahwa ia berhubungan dengn Bob.

SKID3 menyediakan otentikasi mutual antara Alice dan Bob. Step (1) sampai step (3) identik dengan SKID2, kemudian protocol dilanjutkan dengan:

(4) Alice mengirimkan Bob: Hk(Rb,A). A adalah nama Alice.

(5) Bob menghitung Hk(Rb,A) dan membandingkannya dengan yang ia terima dari Alice. Jika hasilnya identik, maka Bob tahu ia sedang berkomunikasi dengan Alice.

Protokol ini tidak aman dari man-in-the-middle attack. Secara umum, man-in-the-middle attack dapat memecahkan sembarang protokol yang tidak mengandung beberapa variabel rahasia.

Otentikasi Pesan

Ketika Bob menerima pesan dari Alice, bagaiman dia tahu pesan tersebut otentik? Ini mudah jika Alice menandatangani pesannya. Tandatangan digital Alice sudah cukup untuk meyakinkan siapapun bahwa pesan tersebut otentik.

Kriptografi simetrik menyediakan beberapa otentikasi. Ketika Bob menerima sebuah pesan dari Alice yang terenkripsi dengan shared key, Bob tahu pesan tersebut berasal dari Alice. Tidak seorang pun diluar mereka yang mengetahui kunci yang mereka gunakan. Meskipun Bob tidak mempunyai cara untuk meyakinkan pihak ketiga akan fakta ini. Bob tidak dapat memeprlihatkan kepada Trean pesan tersebut dan meyakinkan Trent pesan tersebut berasal dari Alice. Trent dapat yakin bahwa pesan berasal dari salah satu yaitu Bob atau Alice (selama tidak seorang pun yang tahu kunci yang mereka gunakan), tetapi tidak dapat mengetahui yang mana milik Bob dan yang mana milik Alice.

Jika pesan tidak terenkripsi, Alice dapat juga menggunakan MAC. MAC juga dapat meyakinkan Bob bahwa pesan tersebut otentik, tetapi memiliki permasalahan yang sama dengan solusi kriptografi asimetrik.

Simple Key-management in Internet Protocol ( SKIP )

Mei 30, 2008

Perkembangan internet memberikan pengaruh pada peningkatan pengguna komersial yang amat pesat, masalah baru menjadi pembicaraan terhadap dua komunitas yang berbeda. Jaringan tidaklah seperti praktek penelitian yang dilakukan di lapangan dan umumnya kelompok pengguna, tetapi dimana pemanfaatan investasi uang yang dapat direalisasikan.
Terdapat dua hal berbeda yang harus dilakukan dalam mengamankan suatu jaringan internet pada pengunaan skala besar. Kedua tindakan tersebut antara lain aplikasi coupled security vs network coupled security. Salah satu contoh dari network coupled security adalah SKIP atau Simple Keymanagement in IP.
Untuk menyediakan fasilitas keamanan yang kuat dan penting pada internet, banyak yang menawarkan solusi keamanan. Bagaimanapun, solusi-solusi tersebut mayoritas terisolasi. Beberapa solusi yang terisolasi tersebut bekerjasama secara terbatas dengan suatu aplikasi, beberapa solusi juga bersama dengan sistem operasi tertentu atau bahkan tertanam pada link layer. Kita harus mengetahui solusi umum yang memperkenalkan keamanan pada network layer dan mendirikan suatu pondasi dalam menyatukan solusi. Lebih jauh lagi kita dapat menunjukkan bagaimana otentikasi dan enkripsi dapat disebarkan sepanjang jaringan internet berada. Hal ini akan terlaksana dengan memperluas fungsi dari protokol key management “Simple Keymanagement in Internet Protocol” atau SKIP, dimana sebagai salah satu upaya pada network layer key management yang sekarang ini dilakukan pada Internet Engineering Task Force (IETF).
Masalah yang tidak bergantung pada penempatan mekanisme security adalah key management. Terkadang, sebuah infrastruktur harus menyantumkan perizinan komunikasi antar kawan untuk memeriksa identitas mereka, dan mendirikan infrastruktur rahasia yang digunakan untuk bulk data encryption (sampah data enkripsi).
Tujuan utama dari pengamanan pada IP layer adalah untuk mendapatkan komunikasi secara privasi dan terotentikasi antara end systems, atau antara suatu jaringan yang lengkap melalui firewall. Sistem yang bekerja terstruktur seperti keberadaan ciri – ciri IP misalnya kemampuan untuk re-routing, load balancing, dan crash recovery yang terpelihara, dan hanya pengeluaran tambahan yang minimal yang diperkenalkan dalam rangka pengamanan jaringan. Pada saat itu juga, sistem tersebut bersifat flexible dan cukup luas untuk dapat mengizinkan bagi perkembangan selanjutnya seperti per-user atau per-port keying, mendukung smartcard, secure multicasting, migrasi kepada IPv6, penambahan algoritma baru, dsb.
Saat ini, dua tindakan berbeda pada key management (Oakley dan SKIP) digunakan oleh IETF working group pada IP security (IPSEC). Meskipun mereka menawarkan kegunaan yang biasa, tindakan pokok mereka dalam menghadapi masalah key management sangat berbeda.
“Simple Key Management in the Internet Protocol” (SKIP) bersandar pada fakta bahwa sertifikat publik terkadang disediakan untuk antarkomunikasi (peer). Tidak ada sesuatu hal yang diperlukan selama asosiasi komunikasi berada, hubungan dari satu host ke host lain menjadi mudah. Sebagaimana SKIP tidak memperkenalkan kembali dugaan terhadap bagian sulit dari stateless IP layer, keberadaan dari bagian rahasia didisain secara mutlak. Masing-masing partisipan mengakses sertifikat, yang terdiri dari public value dari peer, dengan mengambil database atau mendapatkan kembali melalui built-in sertificate discovery protocol.
Perolehan public value dari komunikasi peer dikombinasikan dengan secret value sistem itu sendiri dengan menggunakan Diffie-Hellman scheme, menghasilkan kesamaan, bagian rahasia pada kedua sisi. Sebagaimana bagian rahasia harus dapat digunakan untuk jangka waktu yang lama, tidak digunakan untuk enkrip data secara langsung. Justru, lalu lintas kunci acak dibangkitkan dan digunakan untuk mengenkrip data, dan lalulintas kunci acak ini terenkripsi dengan long-lived shared secret, menggunakan algoritma symmetric. komunikasi In-band digunakan sebagai pilihan untuk mentransfer algoritma dan bulk traffic keying material.
SKIP sertificate discovery adalah cara pengukuran terpopuler dimana komunikasi peers dapat mengambil sertifikat satu sama lain. Certificate Discovery Protocol (CDP) mengizinkan untuk meminta pembuatan menggunakan komunikasi out-of-band, dan lebih efisien jika simple request-response protocol dapat dibuat untuk menyediakan data yang cukup kepada peer untuk mendirikan shared secret. Protokol ini tepatnya mengizinkan masing-masing komunikasi dari berbagai macam server, selama sertifikat penerima terdiri dari signature yang berasal dari entitas yang terpercaya. Setelah melindungi secara singkat beberapa batasan dari aspek key management pada SKIP, kita akan kesulitan tentang bagaimana CDP dapat digunakan untuk menyediakan penyebaran yang lebih luas dari infrastruktur pengamanan komunikasi pada internet.
Pengembangan yang lebih besar
Dengan menggunakan mekanisme pengamanan pada network layer, maka keamanan dalam melakukan hubungan melalui internet dapat diperoleh tanpa harus mengamankan aplikasi yang digunakan. Dua pihak atau lebih yang ingin melakukan hubungan komunikasi yang aman bisa menggunakan SKIP untuk memenuhi aspek keamanan yang diinginkan selama mereka mengkonfigurasi SKIP sebagai protokol key manajeman pada kebijakan tiap-tiap pihak yang ingin melakukan hubungan komunikasi.
Tingkat keamananya terletak pada kemampuan SKIP untuk mengamankan layer network. Pihak yang ingin meng-upgrade mesinnya agar dapat memperoleh keamanan pada layer network rata-rata mempunyai keinginan bahwa jumlah overhead dan masalah-masalah baru yang mungkin timbul dapat dikurangi sekecil mungkin. Dengan demikian mesinnya dapat mempunyai kemampuan untuk meggunakan mode ‘privacy’ yang merupakan fitur dari SKIP tanpa harus memperoleh sertifikat dan pengguna dalah hal ini administrato dapat dijinkan untuk menetapkan dan mengontrol mesinnya dengan mudah.
Jika lalu lintas komunikasi dalam menyediakan privacy dan otentikasi semakin meningkat antara host semakin meningkat, maka solusi yang paling mudah adalah bahwa mekanisme ini akan mewajibkan tiap-tiap host untuk mengamankan semua traffic dan juga mengharapkan setiap host mengamankan semua komunikasi yang diterima. Bagaimanapun juga, banyak host yang belum memiliki kemampuan untuk melakukan komunikasi secara aman, dengan demikian host yang menjalankan kebijakan ini tidak akan bisa melakukan komunikasi dengan host yang tidak menggunkan kebijakan ini secara aman dengan kata lain akan melepaskan kemampuannya untuk berkomunikasi dengan host-host lain di internet yang tidak menggunakan kebijakan ini.
Untuk memperkenankan penggunaan enkripsi dan otentikasi pada network layer yang saat ini pemakaiannya sudah meluas, maka dibutuhkan protocol key manajemen dan “policy engine” yang mengijinkan 3 (tiga) jenis koneksi yaitu ‘clear’, ‘secure’ dan ‘optionally secure’.
Setelah pemberian alasan untuk penempatan keamanan mesin di network layer, kita telah menjelaskan sekarang bagaimana SKIP dapat digunakan dengan cepat menyebarkan keamanan diseluruh internet. Berdasarkan kebijakan peserta dan adanya system operasi yang memungkinkan keamanan komunikasi, bagian yang lebih besar pada internet mungkin menjadi aman dibagianya. Ini dicapai oleh penyediaan dynamic-up dan downgrading pada keamanan dua titik komunikasi. SKIP menyediakan banyak kemungkinan.
Asumsikan bahwa sebuah PGP seperti infrastruktur public key yang digunakan didalam network layer keamanan pemaketan akan tersedia juga, user dapat melakukan teknik yang dikenali dengan baik pada web-of-trust untuk berkembang menjadi lingkungan yang aman. User telah menyimpan didalam sebuah lingkungan hirarki yang hanya dapat menambah sertifikat yang disediakan oleh CA-nya. Ini fleksibel yang memungkinkan oleh tiga pesan baru untuk menyusun sebuah share secret didalam SKIP. Tiga pesan adalah sertifikat tradisional, sebuah pesan menyediakan material kunci yang tidak terotentikasi langsung dan kebanyakan nilainya berharga untuk pesan yang menyediakan material kunci otentikasi langsung dan meneruskan keamanan yang pasti. Pesan yang lalu hanya dapat digunakan jika identitas ( dan sertifikat ) pihak yang mungkin telah diketahui, namun kebanyakan terambil menjadi pertimbangan sebagaimana menyediakan otentiksi untuk pihak yang mungkin dan pihak yang tidak dikenali melawan passive attacker didalam sebuah pesan tunggal. Tiga tipe pesan dapat dikombinasikan menjadi dua jalan pertukaran, penyediaan seri protokol , setiap propertis yang berharga.
Pemeberitahuan lain untuk pembelajaran lebih lanjut adalah bagaimana menyediakan material kunci efisien dan skala aturan untuk anggota sebuah himpunan grup yang besar dan bagaimana menilai menggunakan ring kunci. Sebagaimana mereka disediakan oleh infrastruktur PGP. Mengalamatkan aspek teori “web of trust” dan sebuah relasi yang efisien dan solusi praktis yang harus ditemukan.

El Gamal Attack

Mei 16, 2008

Alice memilih prima p dan basis s, dimana 2 £ s £ p-2. kemudian memilih privat a, dimana 2 £ a £ p-2, dan menghitung a = sa (mod p). Publik Alice adalah (p,s,a).

Jika Alice ingin menandatangani M Î {0,1,…,p-1}, ia memilih kunci session acak k, dengan 1 £ k £ p-2 dan gcd(k, p-1) = 1. Alice menggunakan k untuk menghitung :

r = sk (mod p) dan t = k-1 (M – ra) (mod (p-1))

Bob menerima (M,r,t) dari Alice dan memeriksa apakah 1 £ r £ p-1. Jika tidak, maka tanda tangan tersebut ditolak. Jika benar, Bob menghitung v = sM (mod p) dan w = ar . rt (mod p). Jika v = w (mod p), maka tanda tangan valid.

Cara kerja elgamal adalah sebagi berikut :

Alice membuat tanda tangan (M,r,t). Kemudian v = w (mod p), dimana

v = sM (mod p) dan w = ar . rt (mod p)

yang memenuhi

w = ar . rt (mod p) = (sa)r (sk)t (mod p)

= sra . skk’(M – ra) (mod p)

= s M (mod p)

= v (mod p)

Jika penyerang Trudy mampu mengitung logaritma diskrit dengan efisien, ia dapat memperoleh nilai a (privat Alice) dari a. Untuk memalsukan tanda tangan Alice, Trudy perlu menemukan nilai r dan t sehingga s M = ar . rt.

Metode serangan terhadap elgamal

Jika Trudy dapat menebak k dari tanda tangan (M, r, t), maka ia dapat menghitung ra = M – kt (mod (p-1)) sehingga dapat juga menghitung kunci rahasia a (privat Alice).

Alice pasti menggunakan kunci session yang berbeda untuk setiap pesan yang ditandatangani, anggap Alice menggunakan k untuk M dan M’ , dimana M ¹ M’ . Lalu Trudy dapat menghitung t – t’ = k-1 (M – M’) (mod (p-1)), dengan begitu dapat diperoleh k, karena

k = (M – M’)(t-t’)-1 (mod (p-1))

dengan begitu maka Trudy dapat memperoleh nilai a dari k.

Trudy dapat membuat suatu pesan M dengan tanda tangan yang valid (M,r,t). Pertama Trudy memilih b dan c, dimana gcd(c,p-1) = 1. Lalu menetapkan r = sbac (mod p) dan menghitung nilai t = -rc-1 (mod (p-1)). Terakhir, M = -rbc-1 (mod (p-1)) sehingga mendapatkan tanda tanan yang valid untuk pesan (M,r,t) karena

ar . rt (mod p) = (sa)r . (sbac)-rc’ (mod p)

= (sar) . (sb sac)-rc’ (mod p)

= (sar)(s-brc’)(s-ar) (mod p)

= s-rbc’ (mod p)

= sM (mod p)

Implementasi Stream Cipher

Mei 16, 2008

Pendahuluan

Berkembangnya teknologi komunikasi dan informasi telah memberikan kecepatan dan kemudahan bagi manusia dalam mengolah maupun bertukar informasi. Akan tetapi, seiring dengan hal tersebut berkembang pula ancaman – ancaman terhadap keamanan informasi terutama informasi yang bersifat rahasia. Salah satu teknik yang dapat dilakukan untuk mengamankan suatu informasi adalah dengan menggunakan kriptografi.

Secara umum kriptografi dapat diklasifikasikan menjadi dua, yaitu kriptografi kunci simetrik (symmetric key cryptography) yang berarti kunci yang digunakan untuk enkripsi sama dengan kunci yang digunakan untuk dekripsi, dan kriptografi kunci asimetrik (public key cryptography).

Secara umum, kriptografi kunci simetrik dibagi menjadi dua yaitu stream cipher dan block cipher. Pada stream cipher proses menyandi dilakukan terhadap karakter setiap teks terang per satuan waktu. Sedangkan pada block cipher proses menyandi dilakukan terhadap kelompok karakter teks terang atau dalam blok teks terang (Menezes et al. 1997).

Untuk mengimplementasikan algoritma kriptografi ke dalam suatu aplikasi, diperlukan beberapa tahapan evaluasi terhadap beberapa calon algoritma. Dari beberapa calon algoritma tersebut akan dipilih satu algoritma yang memenuhi standar evaluasi terbaik untuk diimplementasikan pada aplikasi yang diinginkan.

Implementasi Algoritma Stream Cipher

Jika algoritma stream cipher akan diimplementasikan pada suatu aplikasi tertentu, maka perlu dilakukan penyeleksian. Seleksi dilakukan untuk menentukan algoritma stream cipher yang akan diimplementasikan sesuai dengan environment dan requirement yang dibutuhkan oleh aplikasi tersebut.

Ada beberapa project dari organisasi tertentu yang melakukan evaluasi terhadap algoritma stream cipher dengan tujuan masing – masing. Beberapa project yang dimaksud antara lain:

NESSIE (New European Schemes for Signature,Integrity and Encryption)

Merupakan suatu research project yang dilaksanakan oleh information Societies Technology (IST). Project ini bertujuan untuk mencari suatu algoritma yang baik diterapkan pada berbagai environment serta baik secara keamanannya. Project ini mempunyai beberapa kriteria antara lain long-term security, market rrequirement, efisiensi dan fleksibilitas serta dapat diimplementasikan pada lingkungan yang spesifik.

Beberapa Evaluasi yang dilakukan oleh NESSIE

Security evaluation

Hasil yang diharapkan dari evaluasi ini adalah algoritma yang tahan terhadap kriptanalisa standar, lolos uji statistik dan perkiraan jangka waktu pengamanan yang diberikan.

Performance Evaluation

Merupakan bagian terpenting dalam menilai suatu algoritma: efisiensi adalah kriteria yang sangat penting dalam menentukan penerapan suatu algoritma.

Metodologi

Setiap kandidat dibagi menjadi tiga bagian yaitu setup, precomputation, algoritma utamanya. Kemudian masing – masing algoritma kandidat akan dites pada empat platform yang berbeda. Empat platform tersebut adalah smart cards, 32 –bit PCs, 64- bit machines dan Field Programmable Gate Arrays (FPGA).

Beberapa parameter yang digunakan sebagai alat ukur performance pada empat platform tadi antara lain RAM, kecepatam, code size, chip area dan power consumption.

Selain kedua evaluasi sebelumnya project ini juga mempertimbangkan resistansi implementasi yang dilakukan terhadap physical attack misalnya timing attack, fault analysis dan power analysis.

eSTREAM

Adalah project yang dilakukan oleh The European Network of Excellence for Cryptography (ECRYPT) dengan tujuan untuk mengidentifikasi algoritma stream cipher yang mungkin dapat diimplementasikan pada berbagai environment, tahan terhadap negative cryptological or technical issue serta algoritma yang prospek pengembangannya pada masa yang akan datang bagus.

Metodologi yang digunakan hampir sama dengan metodologi yang diterapkan oleh NESSIE.

3 Model Aplikasi Kriptografi

Mei 15, 2008

Three New Models for the Application

of Cryptography


Introduction

Perkembangan internet menuntut kita agar dapat membangun dan merancang arsitektur keamanan dengan baik. Baik E-commerce maupun e-mail pribadi sama-sama perlu untuk diamankan. Begitu juga dengan perusahaan yang ingin bekerja sama secara elektronik dengan rekan bisnisnya. Tapi sangat disayangkan, kecenderungan penggunaan teknologi sekarang adalah membeli dan menginstall produk keamanan tanpa mengerti secara jelas bagaimana pemanfaatan produk tersebut.

Terdapat empat model untuk aplikasi kriptografi, masing-masing mempunyai kegunaan yang berbeda terhadap aplikasi yang dirasa efektif dari teknologi enkripsi. Model pertama menganalisis bagaimana implementasi enkripsi menyediakan kebutuhan penerima akan data yang terenkripsi. Model yang kedua menjelaskan bagaimana aplikasi enkripsi dibedakan berdasarkan logical network layer. Model aplikasi enkripsi yang ketiga adalah topological, yang menggambarkan konsep end-to-ends, host-to-host dan link-to-link. Model yang ke empat adalah model yang berdasarkan operational state of data. Jumlah operational state pada data terlindungi secara kriptografis secara bervariasi, tergantung pada format layanan enkripsi yang dipilih.

Business Analysis

Kebutuhan akan pengamanan data harus dianalisis dan ditentukan dengan jelas sebelum model dapat diaplikasikan. Salah satu perselisihan yang sering terjadi pada keamanan informasi yaitu tentang ketepatan dalam analisis jumlah resiko yang dihadapi. Baik pihak yang tidak menyetujui pengukuran terhadap sejumlah resiko yang memberikan tingkat keamanan yang diinginkan, maupun pihak yang menyetujui diperlukannya pengukuran terhadap tingkat keamanan sehingga memberikan tindak lanjut terhadap analisis. Analisis secara individu baik secara kuantitatif maupun kualitatif harus dilakukan untuk memberikan petunjuk dalam mengeluarkan sumber daya yang dibutuhkan untuk keamanan secara tepat. Suatu arsitektur keamanan hanya dapat dioptimalkan ketika pihak pengembang suatu sistem keamanan paham betul mengenai persyaratan dalam kebutuhan pengamanan data.

Suatu sistem keamanan informasi harus dapat memberikan layanan yang lengkap seperti kerahasiaan data, otentikasi, keaslian data, keutuhan data, dan non-repudiasi. Ketika keseluruhan layanan keamanan tersebut terpenuhi, maka berbagai jenis serangan terhadap sistem keamanan dapat diatasi dengan baik. Sebagai contoh, analisis terhadap keamanan perekonomian tidak lengkap tanpa mengetahui dengan jelas sumber daya yang tersedia. Kekurangan dana, dukungan internal, ataupun keahlian staf yang rendah akan menghambat kesuksesan pencapaian keberhasilan sistem.

Recipient Model

Pemilihan dari fungsi kriptografi dan implementasi harus berdasarkan hubungan antara originator dan recipient. Terdapat tiga kemungkinan pilihan penerima.

Model pertama adalah personal encryption yaitu penggunaan layanan kriptografi tanpa membuat proteksi kriptografi pada saat sharing data. Seseorang yang melakukan mengenkripsi data untuk penggunaan pribadinya tentu memiliki prioritas yang berbeda ketika seseorang mengenkripsi data-nya untuk orang lain. Pada banyak kasus, seseorang yang menggunakan personal encryption adalah untuk mengamankan data konfidensial dari ancaman akses secara fisik. Enkripsi data secara individu ini menempatkan kecepatan dan kemudahan penggunaan sebagai prioritas utama. Sedangkan standar dan interoperability tidak begitu penting untuk personal encryption.

Model kedua adalah workgroup encryption yaitu penggunaan layanan kriptografi untuk pemenuhan kebutuhan privacy dari sebuah grup yang anggotanya telah saling mengenal dan berbagi data. Sama halnya pada personal encryption, pada model workgroup encryption juga tidak menginginkan data yang sensitif dapat dilihat oleh administrator sistem. Enkripsi dapat digunakan untuk mengimplementasikan sebuah bentuk akses kontrol yaitu penggunaan password untuk mengakses data yang dienkripsi. Masalah pada workgroup encryption adalah mengenai bagaimana cara mengaturnya.

Model ketiga adalah transactional encryption yaitu penggunaan layanan kriptografi untuk mengamankan data antara pemilik data dan penerima dimana pada awalnya mereka tidak saling percaya. Transaksi berjalan tanpa ada pihak yang saling mengenal. E-commerce dan aplikasi Web sangat bergantung pada hal ini. Konfidensial memang penting namun pada banyak transaksi, kemampuan untuk mengidentifikasi dan pencegahan penyangkalan (repudiation) sangatlah lebih penting. Agar suatu transaksi dapat berjalan, maka penerima harus benar-benar yakin bahwa pengirim adalah orang yang sebenarnya dan juga yakin bahwa pengirim tidak akan menyangkal telah melakukan transaksi. Layanan kriptografi lain yang dapat dijalankan adalah menggunakan time stamp dan digital notary service. Mekanisme otentikasi dan kontrol non-repudiation dilakukan secara elektronik. Karakteristik teknik yang membedakan transactional encryption dengan workgroup atau personal encryption adalah interoperability. Transactional encryption bergantung pada penggunaan standar yang sama untuk mendapatkan interoperability yang baik. Tidak hanya menggunakan standar algoritma enkripsi tetapi juga format data standar seperti PKCS#7 dan X.509.

Network Layer Model

Model OSI layer sudah sangat familiar untuk menjelaskan hirarki dari implementasi jaringan. Layanan yang berjalan pada suatu layer saling berkorespondensi dengan layanan yang berada pada layer yang sama dengan protokol jaringan tertentu. Sedangkan layanan antar layer dalam OSI model dapat saling berkomunikasi dengan suatu mekanisme khusus yang disebut API. Layanan enkripsi dapat diimplementasikan dalam setiap layer yang memiliki keuntungan dan kerugian yang berbeda. Perkembangan protocol dalam jaringan semakin berkembang seiring dengan kemajuan teknologi jaringan saat ini. Demikian juga dengan penempatan layanan enkripsi yang spesifik terhadap layer jaringan pun agak berbeda. Pentingnya model jenis ini dalam keamaman adalah bagaimana memahami posisi pada layer jaringan tertentu yang dapat memberikan dampak terhadap karakteristik layanan kriptografi yang diinginkan. Semakin tinggi layer dalam hirarki jaringan diimplementasikan maka semakin banyak pula fungsi kriptografi yang disediakan, begitu pula sebaliknya.

Layer Physical adalah layer terendah dalam hirarki jaringan. Penyediaan layanan enkripsi dalam layer ini sangat jarang. Namun, dewasa ini beberapa jaringan LAN telah mengembangkan penggunaan Ethernet yang dapat memberikan fungsi enkripsi didalamnya. Kebanyakan dalam sistem ini sebenarnya berada dalam layer Data Link. Salah satu bentuk enkripsi dalam layer Physical yaitu dengan menggunakan penyebaran spektrum yang mengacak perubahan frekuensi selama transmisi data.

Perkembangan yang paling hebat adalah pengembangan dalam layer Data Link dan Network karena dalam layer ini memberikan interoperabilitas diantara beberapa host dan elemen jaringan. Yang biasanya digunakan untuk implementasi VPN. Layer Data Link digunakan untuk mendukung L2TP, PPTP, dan L2F. Keuntungan dari layer ini adalah sebuah layanan enkripsi dapat mendukung beberapa protocol Transport, contohnya seperti VPN yang mendukung TCP/IP dan SPX/IPX. Protocol keamanan IPSec yang berada dalam layer Network kurang fleksibel daripada layanan keamanan dalam layer Data Link, walaupun protocol ini mendukung TCP dan UDP. Sedangkan kekurangan dari layer Data Link yaitu tingkat yang rendah terhadap transparansi dalam autentikasi, contohnya VPN dapat mengidentifikasi dan mengautentikasi sampai pada tingkat user atau host sehingga pertukaran data tidak terlihat melalui VPN.

Pada layer Session tidak dipertimbangkan relevansi terhadap standar implementasi dari Internet Protocol. Contoh layanan keamanan dalam layer ini adalah SSL. SSL masih terlalu lambat dalam memberikan layanan pertukaran data dalam jaringan. SSL hampir sama dengan VPN, yang memberikan autentikasi dari host ke host atau host ke user, namun SSL memberikan tingkat pengaturan yang lebih tinggi dari VPN. Contohnya yaitu seorang perancang HTML memiliki pilihan dalam spesifikasi suatu URL yang melibatkan SSL didalamnya sehingga siapapun yang mengakses web server akan langsung terproteksi oleh SSL. Bahkan user dapat memilih mode dengan SSL atau tidak.

Pada layer Presentation, tidak spesifik pada format data, namun lebih umum dalam standar penggunaan representasi data. Pada layer ini sudah memberikan layanan kompresi dan enkripsi file yang memberikan pula layanan verifikasi keutuhan data dan non-repudiasi. Layanan keamanan jaringan dalam layer ini diberikan pula fungsi tanda tangan digital seperti PGP, S-MIME, dan HTTPS.

Layer teratas yaitu layer Application memberikan akses terhadap data yang paling tinggi seperti format file dalam bentuk word processor, spreadsheet, atau field suatu database. Pada layer ini fungsi kriptografi tidak terlihat namun sudah terintegrasi didalamnya dengan lengkap. Dalam layer ini, suatu sistem pembayaran elektronik (e-cash) dapat dijalankan dengan aman dan lengkap.

Topological Model

Model topological mengarah pada ruang lingkup fisik dari implementasi kriptografi jaringan. Terdapat dua analogi yaitu kita sebut saja label “a” dan label “b”. Pada label “a” digambarkan seorang user di internet berinteraksi dengan server organisasi. User ini mungkin dial menggunakan ISP, dihubungkan melalui kabel modem atau DSL. Pada label “b” digambarkan user di sebuah partner organisasi. Pada kasus “b” perimeter keamanan adalah menggunakan firewall sedangkan pada kasus “a” hanya menggunakan PC pribadi. Catatan bahwa end-point selalu rentan karena enkripsi sangat terbatas pada lingkup ini.

End-to-end encryption merupakan proteksi data dari host awal menuju host tujuan dengan transmisi yang tidak terproteksi. Pada lingkungan yang kompleks, end-to-end encryption biasanya berada pada layer presentation atau application.

SSL dan IPSec transport mode menyediakan otentikasi dan privacy antara workstation dan remote server. SSL session menyediakan privacy antara Web browser pada client dan Web server pada remote host. SSL dibatasi pada apa yang dapat ia sediakan, tetapi hal ini membuat SSL dapat diimplementasikan secara luas pada enkripsi jaringan. SSL mudah diimplementasikan dan semua Web server memakai sebagai standar serta SSL tidak memerlukan kemampuan programing. SSL tidak menyediakan proteksi end-to-end tetapi memproteksi segmen transmisi yang lebih rentan terhadap outside attack.

Bentuk lain dari host-to-host encryption adalah virtual private network (VPN). Seperti SSL, VPN menyediakan host authentication dan privacy. VPN arsitektur lebih mengarah kepada host-to-host. Host-to-host berarti layanan kriptografi disediakan antara dua host, paling tidak salah satunya bukan end-point. VPN tidak memproteksi transmisilewat security parameter yang ditambahkan.

Information State Model

Berdasarkan pembahasan sebelumnya, telah diketahui bahwa tidak ada arsitektur enkripsi yang mampu memberikan proteksi secara menyeluruh. Artinya, masih memungkinkan ketika data melalui proses pembuatan, penyalinan, atau pengiriman, maka fungsi kriptografi tidak berjalan. Maka dari itu, ketika pengembangan suatu arsitektur keamanan dilakukan, keseluruhan arus data harus diperhitungkan dengan baik untuk menjamin tingkat keamanan yang diinginkan.

Kelemahan dalam pengamanan data dapat terjadi melalui beberapa cara meliputi :

§ Kesalahan manusia untuk memasukkan atau membaca data yang diingat atau dituliskan;

§ Informasi pada layar yang dapat diketahui oleh orang lain;

§ Virtual memory dapat disimpan dalam bentuk plain dalam ruang swap harddisk;

§ Jika terjadi crash dalam proses, OS dapat menyimpan sore dump dari file dalam bentuk plain.

Beberapa tipe yang berbeda dari automatisasi enkripsi telah dikembangkan untuk mengurangi peranan user dalam mengamankan data. Beberapa produk bahkan sudah masuk ke dalam hard drive atau filesystem ketika produk enkripsi lainnya yang masih membutuhkan konfigurasi dalam direktori yang spesifik untuk menyimpan file yang terenkripsi. Setelah user mengautentikasi dirinya dalam suatu sistem keamanan, maka file yang terenkripsi dalam media penyimpanan tersebut akan langsung mendekripsi data yang ada didalamnya sehingga dapat diakses langsung.

Algoritma W7 (Stream cipher)

Maret 27, 2008

A. DESKRIPSI

A.1. Algoritma W7 dengan basis LFSR

Algoritma W7 merupakan algoritma stream cipher synchronous dengan key input sepanjang 128 bit. Dalam algoritma W7 digunakan LFSR sebagai dasar dalam perancangannya. Algoritma W7 menggunakan 8 kombinasi LFSR yang dioperasikan secara parallel. Setiap kombinasi LFSR tersebut terdiri dari 3 buah shift register. Kombinasi dari 3 shift register tersebut akan menghasilkan 1 bit kunci stream sehingga output dari algoritma W7 adalah 8 bit (1byte) rangkaian kunci tiap 1 satuan waktu.

Pada gambar 2 dapat dilihat salah satu kombinasi LFSR yang digunakan dalam algoritma W7,sedangkan pada gambar 3 merupakan bagan dari key generator algoritma W7.

Gambar 2. Salah satu kombinasi LFSR yang digunakan dalam algoritma W7

 

Output dari algoritma W7 tidak diambil langsung dari setiap LFSR, tetapi diambil dengan mengkombinasikan bit output akhir dari setiap shift register dengan operasi exclusive_OR (XOR). Output akhir dari setiap shift register merupakan hasil dari suatu fungsi filter nonlinier yang merupakan operasi XOR dari dua buah nilai yaitu, output dari LFSR dan operasi AND dari beberapa bit dalam LFSR.

 

C0

C1

C2

C3

C4

C5

C6

C7

Output 8-bit/1-byte kunci tiap satu satuan waktu

LFSR 0 LFSR 1 LFSR 2 LFSR 3 LFSR 4 LFSR 5 LFSR 6 LFSR 7

 

 

 

 

 

 

 

 

Gambar 3. Bagan key generator algoritma W7

Fungsi feedback yang digunakan merupakan sebuah fungsi polynomial karakteristik yang primitive dengan Greatest Common Divisor (GCD) dari panjang tiap stage sama dengan 1.

 

A.2. Inisialisasi Awal

Panjang total dari ketiga LFSR yang dikombinasikan dalam algoritma W7 adalah sebanyak 128 stage, masing-masing stage adalah 38, 43 dan 47 stage. Initial state dari tiap-tiap LFSR adalah bit-bit dari 128 bit bit kunci yang dimasukkan. Dari 128 bit kunci input tersebut satu persatu dimasukkan dalam tiap stage dari ketiga LFSR secara berurutan mulai dari LFSR 1 stage pertama sampai dengan LFSR 3 stage terakhir.

Berikut ini adalah pemetaan 128 bit kunci sebagai inisial state pada tiap stage dari ketiga LFSR tersebut :

LFSR 1 (38 bit) : Stage 0 = bit kunci ke-0

Stage 1 = bit kunci ke-1

Stage 2 = bit kunci ke-2

: :

: :

Stage 37 = bit kunci ke-37

 

LFSR 2 (43 bit) : Stage 0 = bit kunci ke-38

Stage 1 = bit kunci ke-39

: :

: :

Stage 42 = bit kunci ke-80

LFSR 3 (47 bit) : Stage 0 = bit kunci ke-81

Stage 1 = bit kunci ke-82

: :

: :

Stage 46 = bit kunci ke-127

Output yang digunakan sebagai kunci penyandian stream diambil mulai dari byte ke-1032. Setelah dibangkitkan 1031 byte pertama yang muncul diabaikan.

 

A.3. Proses Pembangkitan Rangkaian Kunci

Proses pembangkitan rangkaian kunci diawali dengan beberapa bit dari beberapa LFSR untuk dikombinasikan dari tiap LFSR untuk dioperasikan dengan operasi AND. Hasil operasi AND tersebut kemudian di XOR dengan output dari tiap LFSR. Hasil akhir dari tiap LFSR tersebut dikombinasikan dengan operasi XOR untuk mendapatkan 1 bit kunci dari rangkaian kunci bit kunci stream yang akan digunakan untuk menyandi setelah pengambilan 1 bit output dilanjutkan dengan bergesernya setiap shift register dari ketiga LFSR yang dikendalikan oleh clock dari majority function.

Berikut ini adalah table dari bit-bit yang dioperasikan dalam fungsi feedback, fungsi filter dan bit-bit clock :

Kombinasi LFSR 0

LFSR 0a (38 bit)

Fungsi feedback : 37 32 29 27 26 21 20 14 12 10 9 8 5 2 0

Clock : 22

Output filter : 37 (36,33) (32,29) (28,25,22)

LFSR 0b (43 bit)

Fungsi feedback : 42 5 3 2

Clock : 25

Output filter :42 (41,39) (38,36) (35,33,31)

LFSR 0c (47 bit)

Fungsi feedback : 46 4

Clock : 27

Output filter : 46 (45,40) (39,34) (33,28,23)

Kombinasi LFSR 1

LFSR 1a (34 bit)

Fungsi feedback : 37 36 34 31 28 27 26 25 24 22 16 15 10 9 7 4

Clock : 5

Output filter : 37 (3,0) (7,4) (14,11,8)

LFSR 1b (43 bit)

Fungsi feedback : 42 39 38 36

Clock : 18

Output filter : 42 (2,0) (5,3) (10,8,6)

LFSR 1c (47 bit)

Fungsi feedback : 46 41

Clock : 20

Output filter : 46 (5,0) (11,6) (22,17,12)

Kombinasi LFSR 2

LFSR 2a (38 bit)

Fungsi feedback : 37 28 21 18 17 16 14 10 9 7 4 0

Clock : 21

Output filter : 37 (35,32) (31,28) (27,24,21)

LFSR 2b (43 bit)

Fungsi feedback : 42 29 16 5 4 3 2 0

Clock : 24

Output filter : 42 (40,38) (37,35) (34,32,30)

LFSR 2c (47 bit)

Fungsi feedback : 46 32 18 4

Clock : 26

Output filter : 46 (44,39) (38,33) (32,27,22)

Kombinasi LFSR 3

LFSR 3a (38 bit)

Fungsi feedback : 37 36 32 29 27 26 22 20 19 18 15 13

Clock : 16

Output filter : 37 (4,1) (8,5) (15,12,9)

LFSR 3b (43 bit)

Fungsi feedback : 42 41 39 38 37 36 25 12

Clock : 19

Output filter : 42 (3,1) (6,4) (11,9,7)

LFSR 3c (47 bit)

Fungsi feedback : 46 41 27 13

Clock : 21

Output filter : 46 (4,1) (12,7) (21,18,13)

Kombinasi LFSR 4

LFSR 4a (38 bit)

Fungsi feedback : 37 24 22 11 7 5 3 1

Clock : 20

Output filter : 37 (34,31) (30,27) (26,23,20)

LFSR 4b (43 bit)

Fungsi feedback : 42 34 26 19 18 17 12 5 4 3

Clock : 23

Output filter : 42 (39,37) (36,34) (33,31,24)

LFSR 4c (47 bit)

Fungsi feedback : 46 4 3 0

Clock : 25

Output filter : 46 (43,38) (37,32) (31,26,21)

Kombinasi LFSR 5

LFSR 5a (38 bit)

Fungsi feedback : 37 35 33 31 29 25 14 12

Clock : 17

Output filter : 37 (5,2) (9,6) (16,13,10)

LFSR 5b (43 bit)

Fungsi feedback : 42 38 37 36 29 24 23 22 15 7

Clock : 20

Output filter : 42 (4,2) (7,5) (12,10,8)

LFSR 5c (47 bit)

Fungsi feedback : 46 45 42 41

Clock : 22

Output filter : 46 (5,2) (13,8) (22,19,14)

Kombinasi LFSR 6

LFSR 6a (38 bit)

Fungsi feedback : 37 5 4 0

Clock : 19

Output filter : 37 (33,30) (29,26) (25,22,19)

LFSR 6b (43 bit)

Fungsi feedback : 42 29 28 25 17 14 13 9 4 3

Clock : 22

Output filter : 42 (38,36) (35,33) (32,30,28)

LFSR 6c (47 bit)

Fungsi feedback : 46 32 18 10 7 4

Clock : 24

Output filter : 46 (42,37) (36,31) (30,25,20)

Kombinasi LFSR 7

LFSR 7a (38 bit)

Fungsi feedback : 37 36 32 31

Clock : 18

Output filter : 37 (6,3) (10,7) (17,14,11)

LFSR 7b (43 bit)

Fungsi feedback : 42 38 37 28 27 24 16 13 12

Clock : 21

Output filter : 42 (5,3) (8,6) (13,11,9)

LFSR 7c (47 bit)

Fungsi feedback : 46 41 38 35 27 13

Clock : 23

Output filter : 46 (6,3) (14,9) (23,20,15)

A.3. Proses Enkripsi Dan Dekripsi Algoritma W7

Proses enkripsi dari algoritma W7 adalah 1 byte kemudian di XOR dengan 1 byte teks terang untuk menghasilkan 1 byte teks sandi, demikian pula proses dekripsinya. Setiap 1 byte teks sandi di XOR dengan 1 byte kunci yang sama dengan saat menyandi untuk mendapatkan 1 byte teks terang. Proses enkripsi dilakukan setelah run up rangkaian kunci sebanyak 1031 byte. Bagan proses enkripsi dari algoritma W7 dapat dilihat pada gambar 4 dibawah ini :

Key Stream Generator

 
 

 

Ki (byte kunci ke-1032)

XOR

Plain (Pi)

       
 
 
   

 

Cipher(Ci)

Gambar 4. Bagan proses enkripsi dari algoritma W7

B. ANALISIS

B.1. Panjang Periode Kunci Algoritma W7

Algoritma W7 menggunakan 8 kombinasi LFSR, dimana setiap kombinasi terdiri dari 3 buah shift register dimana panjang stage masing-masing shift register yaitu 38, 43 dan 47 memiliki GCDnya adalah 1 dan tiap shift register merupakan polynomial karakteristik yang primitive maka periode dari tiap LFSR tersebut ≤ (238-1)(243-1)(247-1)

Karena W7 menggunakan 8 buah kombinasi LFSR untuk menghasilkan 8 bit/1 byte persatuan waktu maka periode dari algoritma W7 adalah ≤ ((238-1)(243-1)(247-1))8.

 

B.2. Kerandoman Kunci Yang Dihasilkan Dari Algoritma W7

Dilihat dari basis yang digunakannya adalah LFSR, dimana sudah diketahui bahwa LFSR lulus dalam kerandoman golomb maka algoritma W7 dapat dikatakan cukup kuat. Tetapi untuk memastikan bahwa output yang dihasilkan tetap sesuai dengan yang diharapkan, maka output yang dihasilkannya pun harus diuji terlebih dahulu dengan uji yang telah disepakati.

 

B.3. Crypanalisa Terhadap Algoritma W7

Karena Algoritma W7 dengan Algoritma A5/1 tidak terlalu berbeda jauh maka attack yang dapat dilakukannya tidak terlalu berbeda juga. Attack yang dapat/pernah dilakukan pada A5/1 diantaranya :

Ø Brute force attack : Dengan menggunakan komputer dengan kecepatan proses yang sangat tinggi maka Algoritma A5/1 dapat dipecahkan.

Ø Alex Biryukof dan Adi Shamir (Co-Inventor of RSA) mengklaim mampu membuka algoritma A5/1yang digunakan GSM kurang dari 1 detik menggunakan PC dengan RAM 128 MB dan Hard Drives yang sangat besar.

Dari gambaran diatas dapat dilihat bahwa crypanalysis terhadap Algoritma W7 masih mungkin dapat dilakukan.

BREAKING THE CODE

Februari 13, 2008

1) The Davinci Code

waktu itu aku membaca buku tentang kriptografi (bukan bersifat informational, hanya saja ceritanya berdasarkan pada ilmu kriptografi). dan pada halaman terakhir buku itu tertuliskan:

16-39-44-16-39-101-84-20-5-60-16-16-117-117-85-60

aku telah mencoba beberapa kali dan ternyata aku telah menemukan jawabannya!

jika kamu tertantang cobalah pecahkan code ini, i’ll give u a gift if u are right…

TEA, a Tiny Encryption Algorithm (Descryption and Application)

Desember 18, 2007

Abstraksi

Oleh: Fitria Sekarwulan Risdhafany

NPM: 0605100679

 

Dalam paper ini akan dijelaskan mengenai deskripsi algoritma TEA (Tiny Encription Algorithm) yang merupakan algoritma penyandian Block Cipher yang berbasis pada feistel network. Disertakan pula source code-nya dalam Bahasa C dan flowchart dari aplikasi algoritma penyandian TEA.

Keywords : Tiny Encryption Algorithm, Aplikasi Algoritma Sandi Modern, Bahasa C

 

A. DESKRIPSI ALGORITMA TEA (TINY ENCRYPTION ALGORITHM)

Tiny Encription Algorithm (TEA) merupakan suatu algoritma sandi yang diciptakan oleh David Wheeler dan Roger Needham dari Computer Laboratory, Cambridge University, England pada bulan November 1994. Algoritma ini merupakan algoritma penyandian block cipher yang dirancang untuk penggunaan memory yang seminimal mungkin dengan kecepatan proses yang maksimal.

System penyandian TEA menggunakan proses feistel network dengan menambahkan fungsi matematik berupa penambahan dan pengurangan sebagai operator pembalik selain XOR. Hal ini dimaksudkan untuk menciptakan sifat non-linearitas. Pergeseran dua arah (ke kiri dan ke kanan) menyebabkan semua bit kunci dan data bercampur secara berulang ulang.

TEA memproses 64-bit input sekali waktu dan menghasilkan 64-bit output. TEA menyimpan 64-bit input kedalam L0 dan R0 masing masing 32-bit. Sedangkan 128-bit kunci disimpan kedalam k[0], k[1], k[2], dan k[3] yang masing masing berisi 32-bit. Diharapkan teknik ini cukup dapat mencegah penggunaan teknik exshautive search secara efektif. Hasil outputnya akan disimpan dalam L16 dan R16.

Bilangan delta berasal dari golden number, digunakan delta=(√5 -1)231. Suatu bilangan delta ganda yang berbeda digunakan dalam setiap roundnya sehingga tidak ada bit dari perkalian yang tidak berubah secara teratur. Berbeda dengan sruktur feistel yang semula hanya mengoperasikan satu sisi yaitu sisi sebelah kanan dengan sebuah fungsi F, pada algoritma TEA kedua sisi dioperasikan dengan sebuah fungsi yang sama. Struktur penyandian TEA dapat dilihat pada gambar 1.1

 

tea.jpg

Gambar 1.1. Algoritma TEA

 

tea-1-round.jpg

Gambar 1.2. Satu cycle TEA (dua round).

Proses diawali dengan input-bit teks terang sebanyak 64-bit. Kemudian 64-bit teks terang tersebut dibagi menjadi dua bagian, yaitu sisi kiri (L0) sebanyak 32-bit dan sisi kanan (R0) sebanyak 32-bit. Setiap bagian teks terang akan dioperasikan sendiri-sendiri. R0 (z) akan digeser kekiri sebanyak empat (4) kali dan ditambahkan dengan kunci k[0]. Sementara itu z ditambah dengan sum (delta) yang merupakan konstanta. Hasil penambahan ini di-XOR-kan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara z yang digeser kekanan sebanyak lima (5) kali dengan kunci k[1]. Hasil tersebut kemudian ditambahkan dengan L0 (y) yang akan menjadi R1.

Sisi sebelah kiri akan mengalami proses yang sama dengan sisi sebelah kanan. L0 (y) akan digeser kekiri sebanyak empat (4) kali lalu ditambahkan dengan kunci k[2]. Sementara itu, Y ditambah dengan sum (delta). Hasil penambahan ini di-XOR-kan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara Y yang digeser ke kanan sebanyak lima (5) kali dengan unci k[3]. Hasil tersebut kemudian ditambahkan dengan R0 (Z) yang akan menjadi L1.

Struktur dari penyandian dengan algoritma untuk satu cycle (dua round) dapat dilihat pada gambar 1.2. berikut adalah langkah langkah penyandian dengan algoritma TEA dalam satu cycle (dua round) :

1. Pergeseran (shift)

Blok teks terang pada kedua sisi yang masing masing sebanyak 32-bit akan digeser kekiri sebanyak empat (4) kali dan digeser ke kanan sebanyak lima (5) kali.

2. Penambahan

Setelah digeser kekiri dan kekanan, maka Y dan Z yang telah digeser akan ditambahkan dengan kunci k[0]-k[3]. Sedangkan Y dan Z awal akan ditambahkan dengan sum (delta).

3. Peng-XOR-an

Setelah dioperasikan dengan penambahan pada masing-masing register maka akan dilakukan peng-XOR-an dengan rumus untuk satu round adalah sebagai berikut :

y = y + (((z<<4)+k[0])^z+sum^((z>>5)+k[1]))

z = z + (((y<<4)+k[2]^y+sum^((y>>5)+k[3]))

dalam hal ini sum=sum+delta.

Hasil penyandian dalam satu cycle satu blok teks terang 64-bit menjadi 64-bit teks sandi adalah dengan menggabungkan y dan z. Untuk penyandian pada cycle berikutnya y dan z ditukar posisinya, sehingga y1 menjadi z1 dan z1 menjadi y1 lalu dilanjutkan proses seperti langkah-langkah diatas sampai dengan 16 cycle (32 round).

4. Key Schedule

Pada algoritma TEA, key schedule-nya sangat sederhana. Yaitu kunci k[0] dan k[1] konstan digunakan untuk round ganjil sedangkan kunci k[2] dan k[3] konstan digunakan untuk round genap.

5. Dekripsi

Dalam proses dekripsi sama halnya seperti pada proses penyandian yang berbasis feistel cipher lainnya. Yaitu pada prinsipnya adalah sama pada saat proses enkripsi. Namun hal yang berbeda adalah penggunaan teks sandi sebagai input dan kunci yang digunakan urutannya dibalik. Pada proses dekripsi semua round ganjil menggunakan k[1] terlebih dahulu kemudian k[0], demikian juga dengan semua round genap digunakan k[3] terlebih dahulu kemudian k[2].

Pada rumus enkripsi diketahui :

L0 = L0 + f ( R0 , k[0], k[1], sum )

R0 = R0 + f ( L0, k[2], k[3], sum )

Sehingga untuk proses dekripsi digunakan rumus :

L0 = L0 + f ( R0 , k[1], k[0], sum )

R0 = R0 + f ( L0, k[3], k[2], sum )

 

B. Source code and Application in C language

Encryption code

#include <stdio.h>

main()
{
/* deklarasi */
unsigned long v[2],v0,v1, sum=0, i; /* set up */
unsigned long delta=0×9e3779b9; /* a key schedule constant */
unsigned long k[4],k0,k1,k2,k3,k4; /* tempat penyimpanan key */

/* input kunci */
printf(“TEA ENCRYPTION by FITRIA SEKARWULAN RISDHAFANY\n\n”)
printf(“kunci k[0-3] masing-masing panjangnya 32 bit/8 karakter hexadecimal\n”);
printf(“masukkan kunci k0=”); scanf(“%lx”,&k[0]);
printf(“masukkan kunci k1=”); scanf(“%lx”,&k[1]);
printf(“masukkan kunci k2=”); scanf(“%lx”,&k[2]);
printf(“masukkan kunci k3=”); scanf(“%lx”,&k[3]);

/* input teks terang */
printf(“\nkunci v[0-1] masing-masing panjangnya 32 bit/8 karakter hexadecimal\n”);
printf(“masukkan plain text=”); scanf(“%lx”,&v[0]);
printf(“masukkan plain text=”); scanf(“%lx”,&v[1]);

/* proses */
v0=v[0]; v1=v[1];
k0=k[0]; k1=k[1]; k2=k[2]; k3=k[3];

for (i=0; i < 32; i++)
{ /* basic cycle start */
sum += delta;
v0 += (v1<<4)+k0 ^ v1+sum ^ (v1>>5)+k1;
v1 += (v0<<4)+k2 ^ v0+sum ^ (v0>>5)+k3; /* end cycle*/
}
v[0]=v0; v[1]=v1;

/* output */
printf(“\n\nTeks sandi= %lx %lx”,v[0],v[1]);

getch();
}

 

Decryption Code

#include <stdio.h>

main()
{
/* deklarasi */
unsigned long v[2],v0,v1, sum= 0xC6EF3720, i; /* set up */
unsigned long delta=0×9e3779b9; /* a key schedule constant */
unsigned long k[4],k0,k1,k2,k3,k4; /* tempat penyimpanan key */

/* input kunci */
printf(“TEA DECRYPTION by FITRIA SEKARWULAN RISDHAFANY\n\n”)
printf(“kunci k[0-3] masing-masing panjangnya 32 bit/8 karakter hexadecimal\n”);
printf(“masukkan kunci k0=”); scanf(“%lx”,&k[0]);
printf(“masukkan kunci k1=”); scanf(“%lx”,&k[1]);
printf(“masukkan kunci k2=”); scanf(“%lx”,&k[2]);
printf(“masukkan kunci k3=”); scanf(“%lx”,&k[3]);

/* input teks terang */
printf(“\nkunci v[0-1] masing-masing panjangnya 32 bit/8 karakter hexadecimal\n”);
printf(“masukkan teks sandi=”); scanf(“%lx”,&v[0]);
printf(“masukkan teks sandi=”); scanf(“%lx”,&v[1]);

/* proses */
v0=v[0]; v1=v[1];
k0=k[0]; k1=k[1]; k2=k[2]; k3=k[3];

for (i=0; i < 32; i++)
{ /* basic cycle start */

v1 -= (v0<<4)+k2 ^ v0+sum ^ (v0>>5)+k3;

v0 -= (v1<<4)+k0 ^ v1+sum ^ (v1>>5)+k1;

sum -= delta;
}
v[0]=v0; v[1]=v1;

/* output */
printf(“\n\nPlain text= %lx %lx”,v[0],v[1]);

getch();
}