Telah kita ketahui bahwa kriptografi banyak diimplementasikan pada kehidupan sehari – hari terutama pada era sekarang ini yang sudah serba digital. Banyak aplikasi – aplikasi yang sudah terintegrasi fitur kriptografi seperti pada aplikasi Skype, Thunderbird, Pidgin dll. Pada tulisan kali ini saya mengajak anda sekalian bagaimana mudahnya mengimplementasikan kriptografi untuk membuat aplikasi dengan menggunakan bahasa pemrograman Java. Java menyediakan framework JCE dan JCA yang terdiri dari kelas – kelas dan interface untuk membuat aplikasi kriptografi seperti enkripsi, dekripsi, key generation, message diggest, pembuatan sertifikat digital dll. Kelas – kelas dan interface API ini dapat dilihat pada package java.security dan javax.crypto (klik documentation untuk lebih lengkap). Supaya lebih paham, langsung saja saya berikan contoh impelementasi algoritma AES 256 bit dengan menggunakan JCE dan JCA  :

/**
 *
 * @author agha
 */

import sun.misc.*;
import javax.crypto.*;
import java.security.SecureRandom;
import javax.crypto.spec.SecretKeySpec;

public class AlgoritmaAES {
    static byte[] ciphertext, plaintext, ivBytes;
    public static String encrypt(SecretKeySpec key, String plaintext) throws Exception {
           byte[] pesan = plaintext.getBytes();
           Cipher cipher = Cipher.getInstance("AES");
           cipher.init(Cipher.ENCRYPT_MODE, key);
           ciphertext = cipher.doFinal(pesan);
           String sandi = new BASE64Encoder().encode(cipher text);
           return sandi;
    }
    public static String decrypt(SecretKeySpec key, String ciphertext) throws Exception {
           byte[] sandi = ciphertext.getBytes();
           Cipher cipher = Cipher.getInstance("AES");
           byte[] decodeCipher = new BASE64Decoder().decodeBuffer(cipher text);
           cipher.init(Cipher.DECRYPT_MODE, key);
           plaintext = cipher.doFinal(decodeCipher);
           String pesan = new String(plaintext);
           return pesan;
    }
    public static SecretKeySpec genKey(String key) throws Exception {
           byte[] input = key.getBytes();
           SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
           KeyGenerator kgen = KeyGenerator.getInstance("AES");
           byte[] byteseed = new byte[256];
           secureRandom.setSeed(input);
           kgen.init(256, secureRandom);
           SecretKey kunci = kgen.generateKey();
           byte[] bytes = kunci.getEncoded();
           SecretKeySpec spec = new SecretKeySpec(bytes,"AES");
           return spec;
    }
    public static void main(String[] args) throws Exception {
           String pesan = "Serang kandang ayam jam 5 subuh";
           String kunci = "Indonesia";
           SecretKeySpec key = genKey(kunci);
           System.out.println("Kunci :"+kunci);
          //Enkripsi Pesan
           System.out.println("Plaintext :"+pesan);
           String cipher = encrypt(key,pesan);
           System.out.println("\nEncryption:"+cipher);
          //Dekripsi Pesan
           String plain = decrypt(key,cipher);
           System.out.println("\nDecryption :"+plain);
    }
}

Kelas diatas menggunakan 3 method yaitu encrypt, decrypt dan genKey. Pada method genKey saya menggunakan kelas SecureRandom untuk menggenerate random seed dengan input kunci dari user. Selanjutnya random seed tersebut menjadi parameter input untuk menggenerate kunci AES dengan panjang 256 bit seperti terlihat pada listing code dibawah ini.

...
kgen.init(256, secureRandom);
...

Selain JCE dan JCA, ada juga library bouncy castle yang disediakan untuk mendukung cryptography pada java. Tidak seperti JCE dan JCA yang sudah tersedia pada JDK, untuk menggunakan bouncy castle, kita harus install library secara manual ke JDK atau secara otomatis dengan menambahkan depedence melalui maven repository. Berikut ini langkah langkah instalasi Bouncy Castle secara manual.

  1. Download terlebih dahulu library bouncy castle di http://www.bouncycastle.org/latest_releases.html, lulu esktrak file yang telah di download
  2. Copy file bcprov-jdk16-14.jar (missal menggunakan jdk 1.6) ke directory jre/lib/ext.Jika menggunakan windows, make file harus dicopy untuk JDK dan JRE pada directory yang sama.
  3. Edit file java.security yang terdapat pada directory  jre/lib/security  dan tambahkan provider BC pada list provider seperti contoh dibawah ini. 
    #
    # List of providers and their preference orders (see above):
    #
    security.provider.1=sun.security.provider.Sun
    security.provider.2=com.sun.net.ssl.internal.ssl.Provider
    security.provider.3=com.sun.rsajca.Provider
    security.provider.4=com.sun.crypto.provider.SunJCE
    security.provider.5=org.bouncycastle.jce.provider.BouncyCastleProvider
    
  4. Test apakah Bouncy Castle telah terinstall di JDK dengan listing code dibawah ini. Jika telah terinstall, maka outputnya adalah BC is Installed ”
    import java.security.Security;
    
    /**
     * Basic class to confirm the Bouncy Castle provider is
     * installed.
     */
    public class SimpleProviderTest
    {
        public static void main(String[] args)
        {
            String providerName = "BC";
    
            if (Security.getProvider(providerName) == null)
            {
                System.out.println(providerName + " provider not installed");
            }
            else
            {
                System.out.println(providerName + " is installed.");
            }
        }
    }
    

Contoh algoritma AES diatas menggunakan provider JCE dan JCA yang dimiliki oleh JDK. Jika kita ingin menggunakan provider BC, maka tambahkan kode provider BC ketika menggunakan method getInstance pada kelas Cipher. Contohnya sebagai berikut

...
Cipher cipher = Cipher.getInstance("AES", "BC");
...

Sekian pengenalan coding kriptografi menggunakan Java dari saya. Semoga bermanfaat 😀

Sumber : David Hook. Beginning Cryptography with Java

Advertisements

Play Framework

Posted: April 30, 2012 in Web Programming
Tags: , ,

Play framework merupakan framework pemrograman web yang memudahkan dan mempercepat proses development aplikasi menggunakan java. Framework ini diciptakan untuk mengatasi tantangan dalam pemrograman J2EE ataupun web menggunakan java yang memiliki masalah dalam lamanya waktu untuk proses build and deploy. Dengan menggunakan framework ini, kita cukup mengedit coding, save lalu merefresh browser untuk melihat hasil coding. Hal ini berbeda dengan pemrograman java web lainnya yang bahkan dalam beberapa kondisi harus melakukan restart server meskipun masih dalam proses development yang hanya mengubah beberapa file saja. Saat ini, play framework sudah rilis versi 2.0 yang mendukung bahasa pemrograman java dan scala.

Proses instalasi play framework sangatlah mudah. Langkah pertama yang harus dilakukan adalah mendownload Play Framework. Kemudian letakkan ekstraksi hasil download, dan setting path pada sistem operasi mengarah pada folder hasil ekstrasi tersebut sehingga anda bisa mengakses file binary play. Untuk mengecek apakah play telah terinstall pada komputer, maka ketikan “play” pada terminal anda. Jika play telah terinstall seharusnya output pada terminal adalah seperti dibawah ini.

Setelah play terinstall, maka kita dapat membuat project baru dengan mengetikkan perintah ” play new <nama_project>” selanjutnya kita dapat menjalankan project dengan masuk terlebih dahulu ke directory project dan ketik perintah ” play run “. Aplikasi web yang baru saja kita jalankan dapat kita lihat pada browser dengan alamat http://localhost:9000

Untuk memulai coding, kita akan banyak melakukan modifikasi pada folder “app”, dimana didalamnya akan terdapat 3 folder lagi yaitu :

  • Models : Berisi kelas-kelas yang dibutuhkan sebagai entity, merupakan suatu kelas java biasa yang mempunya annotation @Entity dan field-field yang akan bersesuaian dengan kolom pada database.
  • Views : Folder ini akan berisi semua tampilan web dengan format html. Dalam file html, dapat digunakan variable-variable yang telah diset pada controller seperti layaknya jstl. Nama file yang dibuat disesuaikan dengana nama method pada controller yang bersangkutan, dan dimasukkan dalam folder sesuai dengan nama Controllernya.
  • Controllers : Folder ini akan berisi kelas-kelas java yang mendefinisikan action-action yang petama kali akan dipanggil ketika aplikasi web menerima request. Konfigurasi mapping dapat kita lihat pada file myApp/conf/routes, misalkan secara default didefinisikan sebagai berikut
     *       /{controller}/{action}                  {controller}.{action}]

    maka untuk setiap request GET/POST (ditandakan dengan tanda *) dengan path /Users/list akan mengambil pada controller dengan nama Users dan method list(). Dan secara otomatis akan mengambil view pada myApp/app/views/Users/list.html.

Sekian pengantar play framework dari saya, untuk mempelajari lebih lanjut mengenai play framework dapat dilihat dokumentasinya di website resmi  http://www.playframework.org/documentation/2.0/Home atau download Play Framework CookBook di file sharing folder e-book.

Sumber :

Symmetric dan Asymmetric Cryptography merupakan jenis algoritma kriptografi berdasarkan penggunaan kunci. Singkatnya, kriptografi symmetric menggunakan kunci yang sama untuk melakukan proses enkripsi dan dekripsi sedangkan kriptografi asymmetric menggunakan kunci yang berbeda untuk encrypt dan decrypt. Contoh algoritma symmetric adalah AES, DES, RC4 dll sedangkan asymmetric adalah RSA, Elgamal dll. Gambar dibawah ini merupakan proses enkripsi dan dekripsi algoritma symmetric dan asymmetric.

                     Symmetric Algorithm                                                                                         Asymmetric Algorithm

Pada algoritma asymmetric, terdapat dua buah kunci yaitu kunci publik untuk encrypt dan kunci private untuk decrypt. Ketika seseorang (misal Alice) akan mengirimkan pesan ke Bob, maka Alice akan mengenkripsi pesan tersebut menggunakan kunci publik Bob dan Bob akan membuka pesan yang diterimanya menggunakan kunci private. Hal tersebut merupakan kelebihan pada sistem asymmetric karena user cukup menyimpan secara rahasia kunci private miliknya, sedangkan kunci publik dapat disebarkan ke seluruh user yang ingin berkomunikasi dengannya tanpa perlu khawatir orang yang tidak berhak dapat membuka pesan menggunakan kunci publik yang telah disebar tersebut.

Pada sistem symmetric, kunci yang digunakan untuk encrypt dan decrypt adalah sama, sehingga user yang saling berkomunikasi menggunakan sistem symmetric harus saling berkirim kunci yang sama karena jika mereka tidak menggunakan kunci yang sama maka pesan tidak dapat terbuka di sisi penerima. Jika terdapat seseorang yang berada di tengah2 proses kirim terima kunci dan berhasil mendapatkan kunci tersebut maka maka semua pesan dapat terbuka. Berbeda dengan sistem asymmetric, user hanya perlu mengirimkan kunci publik supaya orang lain dapat berkomunikasi dengan dirinya. User tidak perlu takut penyerang dapat merekonstruksi private key dari kunci publik yang didapatkannya.

Kompleksitas pendistribusian kunci  pada symmetric lebih tinggi dibandingkan dengan asymmetric. Setiap satu kunci pada  symmetric digunakan oleh dua user atau satu grup untuk berkomunikasi. Saya ilustrasikan sebagai berikut, ketika user A akan berkomunikasi dengan user B mereka menggunakan kunci X dan ketika user A berkomunikasi dengan user C mereka akan menggunakan kunci Y. Maka ketika user B,C,D akan mengirimkan pesan ke user A, user A akan menggunakan 3 buah kunci yang berbeda untuk membuka pesan yang diterima. Berbeda dengan sistem asymmetric, user B,C,D cukup menggunakan kunci publik A untuk mengirimkan pesan dan A cukup menggunakan kunci private nya untuk membuka pesan tersebut.

Akan tetapi, sistem symmetric lebih cepat dalam komputasi dan ciphertext yang dihasilkan lebih sedikit sehingga tidak membebani bandwith pada saat proses pengiriman pesan. Biasanya symmetric dan asymmetric sering digunakan bersamaan pada suatu sistem. Sebagai contoh pada sistem video conference Agievic, asymmetric digunakan untuk pendistribusian kunci symmetric, kunci symmetric ini digunakan untuk untuk mengenkripsi komunikasi video conference.

Konsep e-KTP saat ini sedang dalam tahap pembangunan di Indonesia. E-KTP digunakan di Indonesia untuk menggantikan ktp konvensional dengan menggunakan konsep Single Identity Number (SIN). Melalui e-KTP ini, maka setiap penduduk akn mempunyai satu nomor identitas untuk berbagai macam keperluan. Sebenarnya apa sih e-KTP itu? berikut ini merupakan penjelasan tentang e-KTP dan keamanannya yang diambil dari website resminya.

e-KTP atau KTP Elektronik adalah dokumen kependudukan yang memuat sistem keamanan / pengendalian baik dari sisi administrasi ataupun teknologi informasi dengan berbasis pada database kependudukan nasional. Penduduk hanya diperbolehkan memiliki 1 (satu) KTP yang tercantum Nomor Induk Kependudukan (NIK). NIK merupakan identitas tunggal setiap penduduk dan berlaku seumur hidup. Nomor NIK yang ada di e-KTP nantinya akan dijadikan dasar dalam penerbitan Paspor, Surat Izin Mengemudi (SIM), Nomor Pokok Wajib Pajak (NPWP), Polis Asuransi, Sertifikat atas Hak Tanah dan penerbitan dokumen identitas lainnya (Pasal 13 UU No. 23 Tahun 2006 tentang Adminduk). E-KTP nantinya diharapkan dapat memberikan manfaat sebagai identitas jati diri tunggal, tidak dapat dipalsukan, tidak dapat digandakan dan dapat dipakai sebagai kartu suara dalam pemilu atau pilkada.

Mengapa harus e-KTP? Proyek e-KTP dilatarbelakangi oleh sistem pembuatan KTP konvensional di Indonesia yang memungkinkan seseorang dapat memiliki lebih dari satu KTP. Hal ini disebabkan belum adanya basis data terpadu yang menghimpun data penduduk dari seluruh Indonesia. Fakta tersebut memberi peluang penduduk yang ingin berbuat curang terhadap negara dengan menduplikasi KTP-nya. Beberapa diantaranya digunakan untuk hal – hal seperti menghindari pajak, memudahkan pembuatan paspor yang tidak dapat dibuat di seluruh kota, mengamankan korupsi dan menyembunyikan identitas (misalnya oleh para teroris)

Autentikasi Kartu Identitas (e-ID) biasanya menggunakan biometrik yaitu verifikasi dan validasi sistem melalui pengenalan karakteristik fisik atau tingkah laku manusia. Ada banyak jenis pengamanan dengan cara ini, antara lain sidik jari (fingerprint), retina mata, DNA, bentuk wajah, dan bentuk gigi. Pada e-KTP, yang digunakan adalah sidik jari. Penggunaan sidik jari e-KTP lebih canggih dari yang selama ini telah diterapkan untuk SIM (Surat Izin Mengemudi). Sidik jari tidak sekedar dicetak dalam bentuk gambar (format jpeg) seperti di SIM, tetapi juga dapat dikenali melalui chip yang terpasang di kartu. Data yang disimpan di kartu tersebut telah dienkripsi dengan algoritma kriptografi tertentu.

Struktur e-KTP terdiri dari sembilan layer yang akan meningkatkan pengamanan dari KTP konvensional. Chip ditanam di antara plastik putih dan transparan pada dua layer teratas (dilihat dari depan). Chip ini memiliki antena didalamnya yang akan mengeluarkan gelombang jika digesek. Gelombang inilah yang akan dikenali oleh alat pendeteksi e-KTP sehingga dapat diketahui apakah KTP tersebut berada di tangan orang yang benar atau tidak. Untuk menciptakan e-KTP dengan sembilan layer, tahap pembuatannya cukup banyak, diantaranya:

  • Hole punching, yaitu melubangi kartu sebagai tempat meletakkan chip
  • Pick and pressure, yaitu menempatkan chip di kartu
  • Implanter, yaitu pemasangan antenna (pola melingkar berulang menyerupai spiral)
  • Printing,yaitu pencetakan kartu
  • Spot welding, yaitu pengepresan kartu dengan aliran listrik
  • Laminating, yaitu penutupan kartu dengan plastik pengaman

E-KTP dilindungi dengan keamanan pencetakan seperti relief text, microtext, filter image, invisible ink dan warna yang berpendar di bawah sinar ultra violet serta anti copy design. Penyimpanan data di dalam chip sesuai dengan standar internasional NISTIR 7123 dan Machine Readable Travel Documents ICAO 9303 serta EU Passport Specification 2006. Bentuk KTP elektronik sesuai dengan ISO 7810 dengan form factor ukuran kartu kredit yaitu 53,98 mm x 85,60 mm.

Kartu identitas elektronik telah banyak digunakan di negara-negara di Eropa antara lain Austria, Belgia, Estonia, Italia, Finlandia, Serbia, Spanyol dan Swedia, di Timur Tengah yaitu Arab Saudi, Uni Emirat Arab, Mesir dan Maroko, dan di Asia yaitu India dan China. Mendagri Gamawan Fauzi membeberkan keunggulan Kartu Tanda Penduduk Elektronik (e-KTP) yang akan diterapkan di Indonesia, dibandingkan dengan e-KTP yang diterapkan di RRC dan India. Gamawan menyebut, e-KTP di Indonesia lebih komprehensif. Di RRC, Kartu e-ID tidak dilengkapi dengan biometrik atau rekaman sidik jari. Di sana, e-ID hanya dilengkapi dengan chip yang berisi data perorangan yang terbatas. Sedang di India, sistem yang digunakan untuk pengelolaan data kependudukan adalah sistem UID (unique Identification), yang di Indonesia namanya NIK (Nomor Induk Kependudukan). “UID diterbitkan melalui register pada 68 titik pelayanan, sedangkan program KTP elektronik di Indonesia akan dilaksanakan di 6.214 kecamatan,” ujar Gamawan. “Dengan demikian, KTP elektronik yang akan diterapkan di Indonesia merupakan gabungan e-ID RRC dan UID India, karena KTP elektronik dilengkapi dengan biometrik dan chip,”

Sumberhttp://www.e-ktp.com/2011/06/hello-world/

Kriptografi – Introduction

Posted: April 26, 2012 in Cryptography
Tags: ,

Menurut  Bruce Schneier dalam bukunya Applied Cryptography (e-book bisa download di box.net file sharing saya), kriptografi secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Ilmu ini sudah dikenal dan digunakan sejak jaman sebelum masehi, sebagai contoh sistem sandi klasik yaitu sistem caesar, viginere, scytale dll. Kriptografi sendiri menggunakan teknik matematika untuk mengacak pesan dan membuatnya tidak dapat terbaca oleh pihak yang tidak berhak. Kekuatan suatu algoritma kriptografi harus memiliki konsep konfusi dan difusi (Claude Shannon). Confusion adalah mengaburkan hubungan antara plaintext dan ciphertext yang menimbulkan kesulitan dalam usaha musuh untuk mencari keteraturan dan pola statistik antara plaintext dan ciphertext. Sedangkan Difusi adalah menyebarkan redudansi plaintext dengan menyebarkan masukan ke seluruh ciphertext. Gambar di bawah ini merupakan konsep difusi dan confusi

Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan, kekuatan kriptografi modern terletak pada kerahasiaan kunci yang digunakan pada algoritma sehingga algoritma kriptografi dapat saja diketahui oleh berbagai pihak tanpa takut kehilangan kerahasiaan bagi para pemakainya. Terdapat 4 tujuan kriptografi yang memenuhi aspek – aspek keamanan informasi yaitu :

  • Confidentiality (Kerahasiaan), berhubungan dengan kerahasiaan data dalam hal ini berarti menjaga isi informasi dari siapapun kecuali yang berhak dan memiliki kunci rahasia untuk membuka/mengupas informasi yang telah disandi. Contohnya adalah Symetric dan Asymetric.
  • Integrity (Integritas data), berhubungan keutuhan data dalam hal ini berarti penjagaan data dari perubahan secara tidak sah. Informasi dikirimkan antara beberapa pihak melalui saluran yang tidak aman yang memiliki kerawanan dari pihak yang tidak berhak. Oleh karena itu,suatu sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak seperti penyisipan, penghapusan, pemalsuan dan perubahan data lainnya. Contohnya yaitu Hash function.
  • Authentication (Otentikasi), berhubungan dengan identifikasi baik terhadap informasi sistem secara kesatuan. Saat kita mendapatkan informasi, kita harus dapat memastikan bahwa informasi tersebut benar2 dikirim user yang sah. Jika dalam sistem, maka sistem harus dapat memastikan bahwa user yang masuk ke sistem adalah user yang sah. Contohnya yaitu password, token, private key
  • Non repudiation (nirpenyangkalan), merupakan usaha untuk mencegah terjadinya penyangkalan terhadap informasi yang telah dikirimkan/dibuat. Contohnya adalah Digital Certificate pada konsep PKI. Pada digital certificate terdapat informasi mengenai pengirim seperti publik key yang telah di sah kan dan ditandatanagi oleh CA. Pengirim tidak dapat menyangkal pesan yang dikirimkan karena pesan tersebut dapat dibuka oleh penerima dengan publik key yang terdapat pada digital certificate milik pengirim.

Dalam kriptografi, proses utama yang paling banyak digunakan adalah enkripsi dan deksripsi. Enkripsi adalah proses yang digunakan untuk menyandi plaintext (teks terang) yaitu mengubah teks terang menjadi teks yang tidak dapat dibaca oleh pihak yang tidak berhak (ciphertext). Sedangkan dekripsi merupakan proses kebalikannnya, yaitu mengubah ciphertext menjadi plaintext sehingga dapat dibaca oleh pihak yang berhak dengan menggunakan kunci yang sah. Idealnya ciphertext hasil enkripsi hanya dapat dibuka oleh pemegang kunci yang sah, akan tetapi sekarang ini banyak teknik – teknik yang digunakan untuk membobol ciphertext tanpa menggunakan kunci ataupun mendapatkan kunci secara tidak sah. Proses ini disebut dengan cryptanalyisis. Teknik – teknik serangan pada cryptanalysis akan saya jelaskan pada tulisan selanjutnya.

Telah dijelaskan sebelumnya bahwa pada kriptografi terdapat proses enkripsi dan dekripsi. Sekarang saya akan mencoba memberikan contoh proses penyandian tersebut.

  • Algoritma : Caesar
  • Plaintext   : Indonesia Raya
  • Kunci         : 13
  • Enkripsi    : Proses enkripsi pada algoritma Caesar sangatlah mudah. Kita cukup merubah huruf dengan algoritma Encrypt = (Plaintext + Kunci) mod 26. Jika huruf A bernilai 1 dan kunci adalah 2, maka A+2 = C. Karena plaintext nya adalah Indonesia Raya dan kunci 13, maka Ciphertext =Vaqbarfvn Enln
  • Dekripsi    : Proses dekripsi adalah kebalikan dari proses enkripsi. Algoritma yang digunakan adalah Decrypt = (Ciphertext – Kunci) mod 26, sehingga Vaqbarfvn Enln – 13 dan Plaintext = Indonesia Raya

Algoritma caesar merupakan algoritma yang mudah karena hanya menggunakan operasi (+) dan (-) serta kemungkinan 26 kunci. Kita dapat membobolnya dengan mudah menggunakan brute force attack atau frequency analysis. Oleh karena itu, kita dapat melakukan variasi terhadap informasi yang akan kita encrypt sehingga dapat menambah kesulitan bagi si penyerang untuk mendapatkan plaintext. Cara – cara yang dapat digunakan diantaranya adalah menyingkat informasi. Sebagai contoh terdapat sebuah kalimat “Kita serang Indonesia besok”, maka kalimat tersebut dapat kita singkat menjadi  “kta srng ndnsa bsk”. Jika penyerang menemukan plaintext “srngnds” ketika mencoba membuka ciphertext, maka penyerang akan menganggap bahwa dia belum menemukan plaintext karena informasi maih belum dapat dibaca. Sama halnya ketika kita menambahkan huruf tidak berarti seperti “cksblabrv” pada depan dan belakang informasi menjadi  “cksblabrvindonesiarayahkbsdvb”. Penyerang akan kesulitan karena terkadang penyerang hanya mencoba beberapa huruf pertama atau terakhir pada informasi untuk mengetahui plaintext. Cara lain yang dapat dilakukan adalah menggunakan random  key (contoh pada algoritma viginere). Biasanya seseorang akan menyandi pesan mereka dengan kunci yang mudah dibaca seperti “garudaindonesia”,”jakarta”,”majalengka” dll. Kunci – kunci tersebut dapat dengan mudah ditebak karena kata tersebut terdapat dalam kamus.  Oleh karena itu, dalam penyandian kita dapat menggunakan random key seperti “hebvbevibeiuvbenovuebrv”, “tfygifyubyvbeeuyveu”, dll

Algoritma yang telah saya jelaskan diatas seperti caesar dan viginere adalah sistem sandi klasik dengan kunci yang sama untuk membuka dan menyandi. Perkembangan teknologi saat ini menyebabkan komputasi menjadi cepat sehingga banyak algoritma sandi yang mudah sekali dibobol keamanannya. Oleh karena itu, sekarang ini banyak diciptakan algoritma sandi dengan perhitungan yang kompleks yang dapat menambah kesulitan penyerang dalam melakukan break terhadap algoritma. Contoh algoritma kriptografi modern saat ini adalah AES, DES, RSA, RC4, MICKEY dll.

Web 2.0

Posted: April 21, 2012 in Web Technology
Tags: ,

Pada tahun 2004, muncul konsep web 2.0 yang merupakan teknologi web dari penggabungan teknologi-teknologi HTML, CSS, JavaScript, XML, dan AJAX untuk membangun web. Web 2.0 disebut sebagai suatu generasi kedua dari layanan berbasis web dalam dunia komputer yang dijalankan langsung diatas internet sebagai platformnya. Menurut Tim O’reily, web 2.0 adalah revolusi bisnis dalam industri komputer yang disebabkan oleh penggunaan internet sebagai platform dan merupakan suatu percobaan untuk memahami berbagai aturan untuk mencapai keberhasilan pada platform baru tersebut. Contoh perkembangan Web 2.0 saat ini banyak digunakan  pada situs jejaring sosial seperti Blog, Facebook dan Twitter atau bahkan Youtube, Wikipedia, Perangkat komunikasi, dan folksonomi.

Web 2.0 melibatkan pengguna dalam membangun konten. Sebagai hasilnya muncullah basis pengetahuan yang sangat besar yang meruapakan hasil gabungan dari pengetahuan banyak orang. Sebagai contoh ketika user membuka Google dan mengetikkan kata kunci untuk melakukan pencarian, akan muncul banyak halaman situs yang kita dapatkan dari hasil pencarian tersebut yang merupakan hasil dari tulisan pengguna lain. Contoh lainnya adalah Wikipedia. Wikipedia adalah ensiklopedi online yang memperbolehkan semua orang untuk membuat dan mengedit artikel. Hasilnya adalah ensiklopedi online besar yang sangat lengkap artikelnya. Adapun kelebihan dari konsep web 2.0 adalah sebagai berikut :

  • Mengubah paradigma masyarakat internet tentang proses pembuatan dan cara kerja sebuah website yang dahulunya dianggap susah. seperti PHP, ASP dan HTML.
  • Memungkinkan orang yang benar benar tidak mengerti sama sekali tentang internet atau web, untuk membuat sebuah aplikasi web base dengan adanya berbagai alat dan software penunjang dalam membangun sebuah website.
  • Menghadirkan cara baru dalam melakukan design tampilan website menggunakan CSS table. Hal ini membuat website tampil dengan elegan, profesional dan dinamis.

Web 2.0 menggunakan internet sebagai platformnya. Yang dimaksud internet sebagai platform berarti aplikasi-aplikasi tersebut dijalankan langsung di atas Internet dan bukan di atas satu sistem operasi tertentu. Contohnya adalah Google yang bisa diakses dari sistem operasi mana pun. Selain itu, kekuatan aplikasi Web 2.0 terletak pada data. Aplikasi-aplikasi Internet yang berhasil selalu didukung oleh basis data yang kuat dan unik. Contohnya adalah Amazon yang memiliki data buku yang bukan hanya lengkap, tapi juga sangat kaya dengan hal-hal seperti review, rating pengguna, link ke buku-buku lain, dan sebagainya.

Dari penjelasan di atas, dapat disimpulkan bahwa pada dasarnya web 2.0 memungkinkan adanya pertukaran informasi secara interaktif. Pihak yang terlibat dalam pertukaran informasi tersebut dapat berperan secara aktif untuk melakukan perubahan terhadap  informasi.

Aplikasi berbasis web

Posted: April 14, 2012 in Web Technology
Tags:

Penggunaan internet saat ini hampir dapat ditemui pada setiap lapisan masyarakat.  Sebagian  besar perangkat media informasi seperti handphone atau komputer telah terkoneksi dengan jaringan internet. Oleh karena  itu , aplikasi-aplikasi yang kini muncul dan berkembang pun dirancang agar dapat dijalankan menggunakan media internet.

Seperti apa trend aplikasi yang diperlukan saat ini? Jika melihat kecenderungan yang terjadi saat ini, masyarakat banyak memilih aplikasi online berbasis web. Beberapa contohnya yaitu aplikasi perpustakaan, Aplikas pengadaan barang, Aplikasi kepegawaian, bahkan aplikasi yang sedang menjadi trend seperti Facebook, twitter, Yahoo mail dan Gmail. Sedangkan Aplikasi yang terinstall di komputer atau PC biasa disebut aplikasi desktop. Aplikasi ini tidak lagi menjadi pilihan utama dikarenakan  bentuk aplikasi seperti itu seringkali memberikan kerugian, misalnya ketika program yang sudah diinstall ke komputer atau PC tiba-tiba hilang atau rusak maka untuk menggunakannya kembali, harus dilakukan proses install ulang. Sedangkan pada  aplikasi yang berbasis web, yang harus dilakukan cukup dengan menyalakan browser lalu memanggil alamat lokasi aplikasi itu, dirasa lebih mudah dengan mengurangi resiko kehilangan program karena virus dan lain-lain.

Aplikasi berbasis web merupakan sebuah aplikasi yang dapat diakses melalui internet atau intranet, pada saat ini ternyata lebih banyak digemari dan lebih luas pemakaiannya. Sebagian besar perusahaan-perusahaan menggunakan Aplikasi berbasis Web dalam merencanakan sumber daya mereka dan untuk mengelola perusahaan mereka. Aplikasi berbasis web dapat digunakan untuk berbagai macam tujuan yang berbeda. Sebagai contoh, Aplikasi ini dapat digunakan untuk melakukan transaksi dan memberikan cara yang mudah dalam penyimpanan data di database

Aplikasi web memberikan kelebihan  untuk pengguna agar dapat lebih menghemat biaya daripada membeli aplikasi perkantoran dan menginstall perangkat lunak pada klien, untuk secara rutin upgrade software pada klien, dan untuk mempertahankan sistem operasi klien. Sebuah aplikasi web dapat berjalan pada Mac atau PC, pada Internet Explorer atau Firefox, sehingga mengurangi biaya untuk mendukung sebuah organisasi atau perusahaan. Beberapa kemudahan dan keuntungann lain dalam penggunaan aplikasi berbasis web antara lain:

  1. Dapat diakses darimana dan kapan saja dengan menggunakan jaringan  internet.
  2. Bersifat Multi platform, yang dalam hal ini berartidapat digunakan pada sistem operasi apa pun, hal tersebut dikarenakan aplikasi berbasis Intranet/Internet dan diakses melalui browser, maka kita bisa mengakses aplikasi tersebut dengan sistem operasi apa pun, seperti system operasi Linux, Windows atau Mac OS
  3. Program yang kita perlukan hanyalah browser (Mozilla Firefox, Internet Explorer maupun browser lainnya), jadi tidak perlu menginstall program lain. Hal ini memudahkan kita karena tidak perlu lagi menginstall untuk menggunakan suatu aplikasi.
  4. Dapat diakses lewat banyak media seperti : komputer atau handphone yang sudah sesuai dengan standar WAP
  5. Tidak perlu spesifikasi komputer yang tinggi untuk menggunakan aplikasi berbasis web.
  6. Terkait dengan isu lisensi (hak cipta), kita tidak memerlukan lisensi ketika menggunakan web-based application, sebab lisensi itu telah menjadi tanggung jawab dari web penyedia aplikasi (seperti misalnya saat menggunakan MS-Office versi Google).
  7. Selalu mendapatkan versi terbaru dari aplikasi. Karena aplikasi tersebut terpasang di server Intranet/Internet, perusahaan pembuat aplikasi bisa memperbarui aplikasinya terus-menerus. Begitu kita mengakses aplikasi itu, yang kita dapatkan pasti adalah versi terbaru.

Melihat kenyataan yang terjadi pada saat ini,  dalam jangka waktu yang relatif singkat, Internet dan World Wide Web (biasa disebut dengan Web) telah berkembang dengan sangat pesat sehingga dapat melampaui kecepatan perkembangan teknologi lainnya di dunia. Internet dan Web juga berkembang pesat dalam hal jangkauan dan luas bidang kegunaan yang secara nyata mempengaruhi beberapa aspek kehidupan. Segala bidang kehidupan turut merasakan dampak dari perkembangan yang terjadi. Bidang  Industri, Biro perjalanan, Rumah sakit, Perbankan, Pendidikan dan Pemerintahan menggunakan Web untuk meningkatkan efisiensi operasional dalam menjalankan fungsinya.