Kamis, 03 Mei 2012

Algoritma Kriptografi


Secara teori maka algoritma kriptografi dapat dibedakan menjadi dua jenis: 1) Algoritma Simetris dan 2) Algoritma Assimetris.

1) Symmetric Algorithms
Algoritma kriptografi simetris atau disebut juga algoritma kriptografi konvensional. Algoritma ini menggunakan kunci yang sama untuk proses enkripsi dan proses dekripsi. Algoritma kriptografi simetris dibagi menjadi 2 kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedang pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok). Contoh algoritma kunci simetris yang terkenal adalah DES (Data Encryption Standard). 

Gambar Prosedur kerja algoritma simetris



2) Asymmetric Algorithms
Algoritma kriptografi asimetris adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma ini disebut juga algoritma kunci umum (publik key algorithm) karena kunci untuk enkripsi dibuat umum (publik key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key). Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA dan ECC.

Syarat – syarat yang harus dipenuhi oleh suatu algoritma publik-key yaitu (Stalling, 1995):
  1. Mudah secara komputasi bagi suatu pihak B untuk mengkonstruksi sepasang kunci asimetris (kunci publik KU, kunci pribadi KR).
  2. Mudah secara komputasi bagi pengirim A, dengan memiliki kunci publik B dan pesan yang ingin dienkripsi, M, untuk menghasilkan ciphertext (C).
  3. Mudah secara komputasi bagi penerima B untuk mendekripsi ciphertext yang dihasilkan dengan menggunakan kunci pribadinya untuk mengembalikan pesan aslinya.
  4. Tidak bisa secara komputasi bagi pihak ketiga untuk memperoleh kunci pribadi KRb hanya dengan mengetahui kunci publik KUb.
  5. Tidak bisa secara komputasi bagi pihak ketiga untuk mengembalikan data asli M hanya dengan mengetahui kunci publik KUb dan ciphertext C.
  6. Walaupun bukanlah suatu keharusan bagi semua aplikasi publik-key, namun persyaratan keenam bisa ditambahkan 
  7. Fungsi enkripsi dan dekripsi bisa diterapkan dengan urutan yang dibalik.

Kegunaan dari persyaratan keenam adalah untuk penerapan tanda tangan digital (digital signature) yang digunakan memecahkan isu otentikasi (authentication) dalam masalah keamanan data.

Gambar Prosedur Kerja Algoritma Assymetris



Menurut Stalling (Stalling, 1995), proses enkripsi publik-key sederhana melibatkan empat tahap berikut:
  1. Setiap user di dalam jaringan membuat sepasang kunci untuk digunakan sebagai kunci enkripsi dan dekripsi dari pesan yang akan diterima.
  2. User kemudian mempublikasikan kunci enkripsinya dengan menempatkan kunci publiknya ke tempat umum. Pasangan kunci yang lain tetap dijaga kerahasiaannya.
  3. Jika user A ingin mengirimkan sebuah pesan ke user B, ia akan mengenkripsi pesan tersebut dengan menggunakan kunci publik user B.
  4. Pada saat user B ingin mendeskripsikan  pesan dari user A, ia akan menggunakan kunci pribadinya sendiri. Tidak ada pihak lain yang bisa mendekripsi pesan itu karena hanya B sendiri yang mengetahui kunci pribadi B.

Pengantar Kriptografi


Cryptography adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek-aspek pada keamanan informasi misalnya kerahasiaan, integritas data, otentikasi pengirim / penerima data, dan otentikasi data. Cryptography (kriptografi) berasal dari bahasa Yunani yaitu dari kata ‘crypto’ dan ‘graphia’ yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut cryptology. Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah.

Menurut Stalling, ada beberapa tuntutan yang terkait dengan isu keamanan data, yaitu:
1. Confidentiality; yakni menjamin bahwa data-data tersebut hanya bisa diakses oleh pihak-pihak tertentu saja.
2. Authentication; yakni baik pada saat mengirim atau menerima informasi, kedua belah pihak perlu mengetahui bahwa pengirim dari pesan tersebut adalah orang yang sebenarnya seperti yang diklaim.
3. Integrity; yaitu Tuntutan ini berhubungan dengan jaminan setiap pesan yang dikirim pasti sampai pada penerimanya tanpa ada bagian dari pesan tersebut yang diganti, diduplikasi, dirusak, diubah urutannya, dan ditambahkan.
4. Nonrepudiation; yakni Mencegah pengirim maupun penerima mengingkari bahwa mereka telah mengirimkan atau menerima suatu pesan/informasi. Jika sebuah pesan dikirim, penerima dapat membuktikan bahwa pesan tersebut memang dikirim oleh pengirim yang tertera. Sebaliknya, jika sebuah pesan diterima, pengirim dapat membuktikan bahwa pesannya telah diterima oleh pihak yang ditujunya.
5. Access Control yaitu Membatasi sumber-sumber data hanya kepada orang-orang tertentu. 
6. Availability; yakni Jika diperlukan setiap saat semua informasi pada sistem komputer harus tersedia bagi semua pihak yang berhak atas informasi tersebut.

Dari keenam aspek keamanan data tersebut, empat diantaranya dapat diatasi dengan menggunakan cryptography yaitu confidentiality, integrity, authentication, dan nonrepudiation. 
1) Confidentiality
Confidentiality & privacy terkait dengan kerahasiaan data atau informasi. Pada sistem e-government kerahasiaan data-data pribadi (privacy) sangat penting. Hal ini kurang mendapat perhatian di sistem e-government yang sudah ada. Bayangkan jika data pribadi anda, misalnya data KTP atau kartu keluarga, dapat diakses secara online. Maka setiap orang dapat melihat tempat dan tanggal lahir anda, alamat anda, dan data lainnya. Data ini dapat digunakan untuk melakukan penipuan dan pembobolan dengan mengaku-aku sebagai anda (atau keluarga anda). Ancaman atau serangan terhadap kerahasiaan data ini dapat dilakukan dengan menggunakan penerobosan akses, penyadapan data (sniffer, key logger), social engineering (yaitu dengan menipu), dan melalui kebijakan yang tidak jelas (tidak ada). Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.
2) Authentication
Otentikasi merupakan identifikasi yang dilakukan oleh  masing – masing pihak yang saling berkomunikasi, maksudnya beberapa pihak yang berkomunikasi harus mengidentifikasi satu sama lainnya. Informasi yang didapat oleh suatu pihak dari pihak lain harus diidentifikasi untuk memastikan keaslian dari informasi yang diterima. Identifikasi terhadap suatu informasi dapat berupa tanggal pembuatan informasi, isi informasi, waktu kirim dan hal-hal lainnya yang berhubungan dengan informasi tersebut. Aspek ini berhubungan dengan metode untuk menyatakan bahwa informasi betul-betul asli, orang yang mengakses atau memberikan informasi adalah betul-betul orang yang dimaksud, atau server yang kita hubungi adalah betul-betul server yang asli. 
Masalah pertama, membuktikan keaslian dokumen, dapat dilakukan dengan teknologi watermarking dan digital signature. Watermarking juga dapat digunakan untuk menjaga “intelectual property”, yaitu dengan menandai dokumen atau hasil karya dengan “tanda tangan” pembuat. Masalah kedua biasanya berhubungan dengan akses kontrol, yaitu berkaitan dengan pembatasan orang yang dapat mengakses informasi. 
Dalam hal ini pengguna harus menunjukkan bukti bahwa memang dia adalah pengguna yang sah, misalnya dengan menggunakan password Aspek / servis dari security biometric (ciri-ciri khas orang), dan sejenisnya. Ada tiga hal yang dapat ditanyakan kepada orang untuk menguji siapa dia: 
• What you have (misalnya kartu ATM) 
• What you know (misalnya PIN atau password) 
• What you are (misalnya sidik jari, biometric) 
3) Integrity
Aspek integrity (integritas) terkait dengan keutuhan data. Aspek ini menjamin bahwa data tidak boleh diubah (tampered, altered, modifed) tanpa ijin dari yang berhak. Acaman terhadap aspek integritas dilakukan dengan melalui penerobosan akses, pemalsuan (spoofing), virus yang mengubah atau menghapus data, dan man in the middle attack (yaitu penyerangan dengan memasukkan diri di tengah-tengah pengiriman data). Proteksi terhadap serangan ini dapat dilakukan dengan menggunakan digital signature, digital certificate, message authentication code, hash function, dan checksum. Pada prinsipnya mekanisme proteksi tersebut membuat kode sehingga perubahan satu bit pun akan mengubah kode.
4) Nonrepudiation 
Aspek ini menjaga agar seseorang tidak dapat menyangkal telah melakukan sebuah transaksi. Sebagai contoh, seseorang yang mengirimkan email untuk memesan barang tidak dapat menyangkal bahwa dia telah mengirimkan email tersebut. Aspek ini sangat penting dalam hal electronic commerce. Penggunaan digital signature, certifiates, dan teknologi kriptografi secara umum dapat menjaga aspek ini. Akan tetapi hal ini masih harus didukung oleh hukum sehingga status dari digital signature itu jelas legal.
Setiap tindakan yang dilakukan dalam sebuah sistem yang aman telah diawasi (logged), ini dapat berarti penggunaan alat (tool) untuk melakukan pengecekan sistem berfungsi sebagaimana seharusnya. "Log" juga tidak dapat dipisahkan dari bagian keamanan "system" yang dimana bila terjadi sebuah penyusupan atau serangan lain akan sangat membantu proses investigasi. "Log" dan catatan waktu, sebagai contoh, bagian penting dari bukti di pengadilan jika cracker tertangkap dan diadili. Untuk alasan ini maka "nonrepudiation" dianggap sebagai sebuah faktor penting didalam keamanan jaringan komputer yang berkompeten.


Password

Mengapa PASSWORD (terus) bertahan?
Oleh Steven J. Ross, CISA
diterjemahkan oleh Stanley Karouw ST., MTI

Merupakan rahasia umum bahwa password, sebagai sarana otentikasi yang dapat diandalkan, telah dirasakan sejak lama kegunaannya. Premis password sebenarnya cukup sederhana, yakni: Jika Anda tahu sesuatu, dan hanya anda yang tahu itu, maka acuan untuk rahasia itu, menunjukan bahwa anda adalah orang yang anda maksud.. Dan jika "sesuatu" adalah kombinasi dari karakter string, maka tidak mungkin bahwa siapa pun bias mengetahui apa yang anda rahasiakan dan dapat meniru anda! Premisnya cukup mudah tapi tidak semudah itu juga.

Satu hal yang pasti, bahwa mengetahui rahasia tidak berarti akan membuktikan bahwa Anda adalah Anda. Ini hanya membuktikan bahwa Anda adalah orang yang mengaku sebagai Anda atas dasar pengetahuan yang dianggap rahasia. Lebih buruk lagi, kebanyakan para praktisi telah menciptakan mitos password "lebih baik", yakni password yang berisi karakter khusus, angka tertentu dan panjang sedemikian rupa cenderung tidak mungkin ditebak. Cobalah j4R1d% x3. Silakan, coba. Coba mengetik itu. Tidak mudah, bukan? Sekarang tutup mata Anda dan mencoba untuk mengingatnya. Bahkan lebih keras, eh? Jika Anda harus menggunakan password seperti itu, Anda akan menuliskannya, tidak diragukan lagi, sehingga merusak premis yang diketahui (atau diketahui) hanya oleh Anda.

Namun kita semua cenderung memiliki (banyak) password. Saya memiliki password dari sebuah password di atas password lainnya. Satu untuk LAN, satu lagi untuk WAN, satu lagi untuk e-mail, satu lagi untuk timesheets dan aplikasi lainnya. Dan ada lagi password yang hanya saya gunakan di kantor. Ataupun untuk melakukan transaksi online.

Profesional keamanan komputer dan Auditor Sistem Informasi telah menghabiskan bertahun-tahun untuk mendukung password menjadi "lebih baik" yang sulit untuk dilihat kekurangannya sekarang, namun tetap ada kekurangan. Mereka memberikan perlindungan, tetapi sebenarnya itu hanya perasaan perlindungan. 

Password adalah bentuk rahasia bersama, berguna hanya jika TETAP menjadi rahasia. Memiliki password yang banyak kadang2 tidak menguntungkan, karena Anda tidak dapat mengingat mereka semua. Jadi jika Anda seperti saya dan kebanyakan pengguna lain, hanya ada dua alternatif: membuat sebuah (atau beberapa) password yang semua sama dan tidak menuliskannya, tapi menghafalnya. Dan tentu saja, SELALU meluangkan waktu untuk "direpotkan" dengan mengganti password secara rutin dan teratur.

Banyak situs web melindungi password Anda dengan SSL, dan bahwa memang perlindungan kuat. Dalam hal ini, Anda tidak hanya merasa aman, Anda aman, tetapi hanya saat Anda berjalan di bawah SSL. Password yang anda masukkan aman, kecuali orang lain mendapatkannya lebih dulu. Ini seperti memiliki kunci terbaik dunia di pintu depan dan kemudian membagi-bagikan kunci.
Untungnya, garis-garis besar solusinya menjadi jelas. Dalam waktu dekat, saya yakin kita akan mengganti password. Mungkin cara yang lebih baik untuk menempatkan itu adalah bahwa kita akan mengganti semua password hantadengan satu. Hanya saja tidak akan menjadi kata sandi seperti itu. Ini akan memberi kita akses yang sama seperti yang kita miliki, mungkin lebih baik, tetapi kita tidak perlu mengingat apa pun, tidak perlu menuliskan apa pun. Ini disebut sertifikat. Tentu saja, sertifikat bukan solusi sempurna. Mereka datang dengan kantong masalah mereka sendiri, tetapi merupakan kantong jauh lebih kecil daripada yang dibawa oleh semua password. Intinya adalah bahwa sertifikat-string digital menggunakan fungsi kriptografi untuk memastikan identitas-mendapatkan kepercayaan dari pihak ketiga untuk menjamin Anda. Semua orang yang dapat membaca sertifikat tahu Anda adalah yang Anda katakan, bahwa Anda bisa melakukan apa yang Anda katakan anda bisa lakukan.
Tapi sampai semua orang memiliki sertifikat, sampai semua orang (atau setidaknya banyak kita) menggunakan mereka, password akan bertahan. Mereka ada karena kita telah membuat mereka ada dan mereka tidak akan hilang sampai kita semua menyadari kelemahan mereka. Kita semua harus masuk dengan sertifikat atau kita semua akan ditinggalkan. Ini adalah cara baru dalam melakukan sesuatu, suatu tatanan baru. Tentu saja perubahan menakutkan. Tapi semua password yang Anda bawa cukup menakutkan juga.

Steven J. Ross, CISA
Direktur di Deloitte & Touche, alamt kontak di stross@dttus.com
(diterjemahkan dan diedit seperlunya oleh Stanley Karouw, ST., MTI sebagai studi kasus dalam Mata Kuliah Audit Sistem Informasi)

Sequence Diagram


Menggambar Sequence Diagram
Apa tujuan membuat UML Sequence Diagram? Ada beberapa tujuan mengapa harus membuat Sequence Diagram diantaranya adalah 1). untuk menggambarkan interaksi antar objek di dalam dan di sekitar sistem termasuk pengguna, display, dan sebagainya, yang digambarkan dengan hubungan message dan waktu; 2) untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu.
Cara menggambarkan sequence diagram:
1) Sequence diagram terdiri atas dimensi vertikal (waktu) dan dimensi horizontal (obyek-obyek yang terkait).
2) Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan.
3) Masing-masing objek, termasuk aktor, memiliki lifeline vertikal.
4) Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metode dari class.
5) Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah message.
6) Untuk objek-objek yang memiliki sifat khusus, standar UML mendefinisikan icon khusus untuk objek boundary, controller dan persistent entity.


Berikut saya berikan contoh sebuah proses menggambar Sequence Diagram. Proses bisnis yang digambarkan adalah proses pembelian minuman yang dilakukan oleh seorang actor lewat vending machine. Untuk mempermudah proses penggambaran maka bisnis proses ini dibagi menjadi 3 bagian dengan scenario yang berbeda-beda.

Identifikasi dan klasifikasi obyek adalah: 
Front adalah interface, register adalah controller untuk pembayaran, dan dispenser adalah controller untuk pilihan minuman. 
Scenario pertama mendemonstrasikan proses pembelian dimana:
1) Actor mengisi uang (insert input) sesuai dengan harga minuman. 
2) Input ini diteruskan ke bagian register control. Oleh karena jumlah uang yang dimasukkan sama persis dengan harga minuman, maka dari itu proses ini berhenti disini saja.
3) Selain uang, actor juga menyeleksi minuman yang diinginkan (select selection). Dispenser controller mengirim minuman tersebut ke front. 
Lihar Gambar Sequence Diagram Skenario Pertama dibawah ini:
 Sequence Diagram (Membeli Minuman – Part 1)
Sumber: Schmuller (1999, hal.109)

Scenario kedua:
1) Ada 2 kondisi untuk input yaitu input = price dan input > price.
2) Jika input=price dan pilihan minuman tersedia,maka dispenser akan langsung mengirim minuman tersebut. (Prosesnya sama dengan gambar sequence diagram di atas).
3) Perbedaan antara kedua sequence diagram ini yaitu diagram kedua menambahkan sebuah kondisi jika input > price.
4) Ada 2 hal yang akan divalidasi di sini yaitu:
a. Jika tidak ada uang kembalian tersedia di register controller, maka register akan mengembalikan input (uang) dan transaksi berakhir.
b. Jika ada uang kembalian, maka register akan meneruskan transaksi ini dengan mengirimkan message ke dispenser controller. Kemudian, register akan mengembalikan uang kembalian tersebut. Setelah itu, dispenser controller akan mengirimkan minuman sesuai pilihan si actor.
Lihat Gambar Sequence Diagram Skenario Kedua dibawah ini:

Sequence Diagram (Membeli Minuman – Part 2)
Sumber: Schmuller (1999, hal.111)

Scenario ketiga:
1) Proses ketiga ini adalah lanjutan dari proses sebelumnya.
2) Perbedaannya terletak pada pilihan minuman.
3) Ada 2 hal mengenai pilihan minuman yang akan divalidasi di sini yaitu:
c. Jika minuman yang diinginkan tidak tersedia di dispenser controller, maka dispenser akan menampilkan message untuk memberitahukan hal tersebut ke actor.
d. Jika pilihan minuman tersedia, maka dispenser controller akan mengirimkan minuman sesuai pilihan si actor lewat front interface.
Lihat Gambar Sequence Diagram Skenario Ketiga dibawah ini:

Sequence Diagram (Membeli Minuman – Part 3)
Sumber: Schmuller (1999, hal.111)


TIPS menggambar Sequence Diagram adalah:
PASANGKAN dengan Use Case Tabel !!!
(dan COCOKKAN dengan ACTIVITY DIAGRAM)

Sebuah Video tentang Sequence Diagram, dapat dilihat disini:
http://www.youtube.com/watch?v=4WDbte6cPa8&feature=relmfu

Sebuah Tutorial Menggambar Sequence Diagram dengan menggunakan Visual Paradigm, dapat dilihat disini:
http://www.youtube.com/watch?v=18_kVlQMavE&feature=related


Inovasi e-University

PERUBAHAN!!!
Saya kira kata magis ini yang semakin menjamur dimana-mana. Panggung politik, dari level internasional hingga lokal, mengusung tema ini sebagai ikon. Begitu pun dalam dunia pendidikan. Tapi benarkah PERUBAHAN benar-benar diimplementasikan?
Just recently, saya diberi tahu lewat ACM (atau Association Computer Machinery, dimana saya adalah salah satu membernya) bahwa MIT telah memulai program PERUBAHAN yang disebut MITx. Program MITx ini dipelopori oleh seorang peneliti Anant Agarwal (Staf Pengajar Senior MIT, yang telah berpengalaman mengajar selama 20 tahun, dalam bidang Circuits and Electronics). Penjelasan langsung tentang proyek MITx ini diterangkan disini.


Pada intinya, menurut Prof Anant Agarwal, MITx adalah sebuah initiatives untuk Open Learning Enterprise, yang akan memberikan kesempatan luas kepada semua mahasiswa untuk berkolaborasi dalam belajar.
Belum sempat saya mempelajari dengan lengkap tentang MITx, maka (kembali) melalui Prof @erikbryn (Harvard University) saya diberi tahu bahwa Harvard University dan MIT telah memulai kesepatan untuk mengembangkan sebuah proyek yang disebut EDx, yakni "bergabungnya" Harvard University dalam proyek MITx-nya Prof Anant Agarwal. Lihat berita selengkapnya disini.
Saya "terkejut" akan begitu cepatnya kedua raksasa lembaga pendidikan tinggi ini melakukan kerjasama antar-lembaga untuk suatu proyek REVOLUSIONER, yang akan mengubah wajah-pendidikan di masa depan. Kedua universitas raksasa tersebut telah membuktikan bahwa hambatan-hambatan politis TIDAK BERLAKU untuk dunia pendidikan tinggi.



Di Universitas Sam Ratulangi Manado sendiri, baru saja memulai studi tentang e-Learning, bekerja sama dengan Institut 10 November Surabaya (ITS) dan Kumamoto University Jepang. Riset tentang e-Learning akan disponsori oleh JICA Jepang. Pertemuan initiatives, dilaksanakan dengan menggunakan teknologi videoconfrence. Sepertinya, kita "benar-benar" telah tertinggal. Karena kerjasama kelembagaan antara Unsrat - ITS - Kumamoto ini baru terjalin diantara "pribadi" antar-dosen, belum merupakan "mou"antar lembaga. Risetnya pun baru akan dimulai, sementara Harvard dan MIT telah masuk pada tahap implementasi.
Saya kira, kita tidak perlu rendah diri. Paling tidak, sebuah contoh telah dilakukan oleh MIT dan Harvard University. Sebagai seorang peneliti, kita tidak perlu malu untuk belajar dari kedua-raksasa pendidikan ini, sambil kita melakukan adjustment, menurut budaya asia (Unsrat - ITS - Kumamoto). Saya yakin, terobosan bisa terjadi dalam project ini. Dan saya bangga, ikut terlibat dalam PERUBAHAN ini.
Pagi ini, saya men-tweet: 
@stanlysk: *semoga* jalan-panjang menuju ideal-platform e-University yg sesuai dgn budaya asia, bisa SEGERA dipatenkan oleh Unsrat-ITS-Kumamoto

Catatan:
Saya menulis tulisan blog ini dengan menggunakan koneksi internet Unsrat, dgn kecepatan 1 GB/s, sambil mengunduh aplikasi Google Drive (free media storage 5 GB dari Cloud Computing Google), menunggu para mahasiswa untuk memberi kuliah Analisa dan Perancangan Sistem!