Seminar Nasional Animasi Film Kartun

Pendahuluan

Animasi mulai dikenal secara luas sejak populernya media televisi yang dapat menyajikan gambar bergerak hasil rekaman kegiatan makhluk hidup, manusia atau hewan. Dibandingkan dengan gambar foto yang diam atau tidak bergerak animasi lebih disukai karena dapat membangkitkan antusiasme dan emosi penonton. Hampir semua media seperti televisi, film, komputer sudah menggunakan teknik-teknik animasi. Prospek animasi di Indonesia mempunyai peluang yang besar untuk berkembang, karena animasi adalah informasi kreatif yang sangat banyak membutuhkan tenaga kerja dan tentunya hal ini bukan masalah buat Indonesia. Selain itu keragaman dan kekayaan budaya Indonesia sebagai nilai tambah untuk diangkat sebagai cerita animasi.

Nama Dan Tema Acara

Kegiatan ini bernama Seminar Animasi Film Kartun . Dan diadakan satu hari dengan tema “Kreatifitas Seni dan Teknologi melalui Komputer dan Animasi“ :: Untuk Kemajuan Anak Negeri ::

Tujuan

•  Menumbuhkan minat generasi muda untuk terjun ke dunia animasi yang mampu menghasilkan sebuah industri yang dikerjakan secara profesional dengan daya jangkau internasional.

•  Memberikan informasi tentang teknik membuat animasi film kartun dengan mudah sehingga peserta seminar memahami dan tertarik untuk terjun ke dunia animasi film kartun.

Peserta

Adapun jumlah peserta seminar ini diperkirakan lebih dari 500 orang dengan sasaran peserta adalah:

•  Pelajar sebanyak 20%.

•  Mahasiswa sebanyak 60%.

•  Praktisi IT sebanyak 10%.

•  Masyarakat Umum 10 %.

Waktu Dan Tempat Pelaksanaan

Hari Sabtu, tanggal 2 Mei 2010. Waktu 8.00 s/d Selesai Wib Tempat di Hotel Bumi Asahan yang memiliki kapasitas lebih dari 500 orang dengan fasilitas Full AC

Biaya Pendaftaran Sebesar Rp. 80.000

Tempat Pendaftaran

Kampus AMIK INTeL Com GLOBAL INDO KISARAN Ruang PUDIR III

Contac Person:

085228102971, 081361349170, 08126577359

Penyelenggara

Acara ini diselenggarakan oleh Intel Production dan BEM Amik Intel com global indo kisaran

Visual Basic I

Puji syukur kehadiran tuhan YME, alhamdulliah buku pemograman visual Visual Basic I telah terbit. Buku ini di buat untuk perguruan tinggi pada matakuliah Pemograman Visual I yaitu pemograman visual basic, didalam buku ini dibahas bagaimana cara menggunakan bahasa pemograman visual basic, dasar menengah dan lanjutan, mulai dari struktur logika, struktur perulangan, operator aritmatika, membangun database, membuatr laporan (report), permainan (games) dan lain-lain semua dikupas habis didalam buku ini. Anda dapat memproleh  e-book dan source code program (contoh program) yang terdapat padabuku ini dengan harga sebesar Rp. 25.000,- ini harga diskon karena langsung dari penulis nya. Anda juga bisa memproleh buku ini beserta CD nya pada toko buku di kota anda seharga Rp. 48.900,-

Biaya Administrasi E-Book:

Nama : Muliadi

No.Rek. 0180196551

Bank : BNI46

E-mail No.Registrasi Kwitansi /Slip Transfer, Nama, alamat dan email anda ke:

muliadizz@gmail.com

untuk memproleh password E-Book beserta CD (Source Code nya)

Terimakasih…

Isi Buku Visual Basic I

BAB I , BAB II , BAB III , BAB IV , BAB V , BAB VI , BAB VII ,

dapatkan selengkapnya jika anda telah registrasi terimakasih

Naskah Tugas Akhir, Skripsi serta Program

Kami Mitra Gama Konsultan membantu anda dalam hal yg kebingungan mencari judul disini kami menyediakan daftar judul-judul tugas akhir atau skripsi yang selama ini telah kami selesaikan, dengan harapan jika kami share disini maka kumpulan tugas akhir/skripsi ini akan sangat membantu anda dan juga di lengkapi dengan program yang sudah jadi lengkap dengan source code nya. Anda cukup mentransferkan biaya sebesar Rp.50.000 untuk pengiriman kumpulan naskah beserta program tersebut yang telah di kemas kedalam DVD terdapat ratusan judul dan ratusan program yang nantinya akan menjadi refrensi anda. terimakasih informasi ini di beritakan semoga dapat bermanfat.

Nama : Muliadi
No. Rekening : 0180196551
Bank : BNI46

E-Mail alamat anda ke:
Muliadizz@Gmail.com
Telp. 0852 2810 2971

Interoperabilitas

Mengenal CORBA: Platform Untuk Komputasi Terdistribusi
Lukito Edi Nugroho (UGM)

Sistem Terdistribusi

Mari kita bayangkan masa depan, saat hampir semua aktivitas manusia memanfaatkan komputer sebagai sarana utamanya. Berbagai basis data berskala besar telah disimpan dalam format elektronis. Demikian pula berbagai aplikasi yang mendasarkan pada basis data telah dikomputerisasi dalam sebuah lingkungan jaringan komputer yang meliputi berbagai instansi dan perusahaan. Pada saat itu dimensi ruang benar-benar telah berkontraksi sedemikian rupa sehingga dunia maya seakan-akan telah menjadi dunia nyata dan berbagai aspek kehidupan manusia terhubung melalui suatu jaring-jaring yang amat kompleks.

Ilustrasi berikut ini bisa menggambarkannya. Misalnya si A sakit dan pergi ke dokter langganannya. Jika hasil diagnosa mengharuskan si A harus masuk ke rumah sakit, maka pemilihan RS dan pemesanan tempat dapat dilakukan pada saat itu juga melalui komputer di tempat praktek dokter. Selanjutnya komputer di RS dapat mengontak komputer perusahaan asuransi kesehatan untuk urusan pembayaran biayanya. Jika si A memerlukan obat atau peralatan khusus, maka komputer si dokter dapat memberitahu di apotik mana obat atau peralatan tersebut tersedia. Cerita ini dapat diperpanjang, tapi intinya adalah bahwa satu aksi dapat memicu berbagai aktivitas lain yang saling berhubungan.

Ilustrasi di atas nampaknya tidak lagi jauh dari kenyataan yang ada saat ini. Sesungguhnya dapat dikatakan bahwa teknologi untuk menuju ke sana saat ini sudah dimiliki manusia. Selain teknologi mikroelektronik dan telekomunikasi, maka teknologi lain yang berperanan penting adalah teknologi sistem komputer terdistribusi (distributed computer systems).

Sistem komputer terdistribusi adalah sebuah sistem yang memungkinkan aplikasi komputer beroperasi secara terintegrasi pada lebih dari satu lingkungan yang terpisah secara fisis. Sistem informasi kesehatan yang diilustrasikan di atas menunjukkan komponen-komponen aplikasi yang terdistribusi (di tempat praktek dokter, di rumah sakit, di apotik, dan di perusahaan asuransi kesehatan). Ciri khas sistem komputer terdistribusi adalah heterogenitas dalam berbagai hal: perangkat keras, sistem operasi, dan bahasa pemrograman. Adalah tidak mungkin untuk mengembangkan sistem terdistribusi yang homogen secara paksaan, karena secara alamiah sistem komputer terdistribusi tumbuh dari lingkungan yang heterogen. Kata kunci dalam menjembatani perbedaan-perbedaan yang muncul adalah interoperabilitas (interoperability).

CORBA
Interoperabilitas adalah kemampuan saling bekerjasama antar sistem komputer. Sebenarnya interoperabilitas bukanlah barang baru, karena protokol komunikasi datapun (TCP/IP misalnya) pada dasarnya diciptakan untuk mewujudkan interoperabilitas. Yang belum banyak dikenal adalah interoperabilitas pada level perangkat lunak aplikasi.

Dalam konteks sistem komputer terdistribusi, meskipun komponen-komponen aplikasi dibuat dengan bahasa pemrograman yang berbeda, menggunakan development tools yang berbeda, dan beroperasi di lingkungan yang beragam, mereka tetap harus dapat saling bekerjasama.

Interoperabilitas perangkat lunak menuntut homogenitas pada suatu level tertentu. Untuk itu diperlukan semacam ‘standarisasi’. Berawal dari keperluan ini lahirlah CORBA (Common Object Request Broker Architecture). CORBA adalah hasil ‘kesepakatan’ antara sejumlah vendor dan pengembang perangkat lunak terkenal seperti IBM, Hewlett-Packard, dan DEC, yang tergabung dalam sebuah konsorsium bernama OMG (Object Management Group).

CORBA adalah sebuah arsitektur software yang berbasis pada teknologi berorientasi obyek atau Object Oriented (OO) dengan paradigma client-server. Dalam terminologi OO, sebuah obyek berkomunikasi dengan obyek lain dengan cara pengiriman pesan (message passing). Konteks komunikasi ini kemudian dipetakan ke dalam model client-server: satu obyek berperan sebagai client (si pengirim pesan) dan yang lain bertindak sebagai server (yang menerima pesan dan memroses pesan yang bersangkutan). Sebagai contoh, dalam ilustrasi di awal tulisan ini, jika si pasien memerlukan obat tertentu, maka obyek aplikasi di tempat praktek dokter berlaku sebagai client dan mengirim pesan ke obyek aplikasi di apotik guna mengetahui apakah obat yang diperlukan tersedia di sana.

Keunikan dari CORBA adalah kemampuannya dalam menangani heterogenitas antara client dan server (dalam terminologi CORBA, obyek server dinamakan implementasi obyek (object implementation). Keduanya dapat saja diimplementasikan dalam hardware, sistem operasi, bahasa pemrograman, dan di lokasi yang berbeda, tetapi tetap bisa saling berkomunikasi. Kuncinya ada pada sebuah lapisan software yang disebut dengan ORB(Object Request Broker). Arsitektur CORBA dan ORBnya ditunjukkan pada gambar 1.

Tidak seperti pada lazimnya bahasa OO (C++ atau Java), proses pengiriman pesan dari client ke implementasi obyek tidak dilakukan secara langsung. Pertama, stub dan skeleton “mengisolasi” client dan implementasi obyek dari tugas-tugas level rendah seperti proses marshalling dan unmarshalling data. Selanjutnya ORB berfungsi sebagai “pialang” yang menjembatani heterogenitas antara kedua obyek. ORB menangani perbedaan platform, pelacakan lokasi obyek, dan proses transfer pesan sedemikian rupa sehingga transparan terhadap kedua obyek. Dengan demikian pemrograman client dan implementasi obyek bisa berkonsentrasi sepenuhnya pada aspek fungsionalitas keduanya.

Mekanisme yang ditunjukkan pada Gambar 1 merupakan dasar operasi sistem berbasis CORBA. Sebagai contoh, dalam kasus si A di atas, program di tempat praktek dokter bertindak sebagai client bagi program di rumah sakit. Bila si A perlu dirawat di rumah sakit, maka program sang dokter akan mengirimkan pesan ke program di rumah sakit melalui ORB. Menariknya, kedua program tersebut dapat dikembangkan tanpa perlu banyak ikatan antara keduanya, misalnya menggunakan bahasa pemrograman apa, sistem operasi apa, dan sebagainya. Cukup berangkat dari sebuah ‘kesepakatan’ yang dituangkan dalam sebuah interface (lihat bagian tentang Pemrograman Berbasis CORBA), maka kedua program tersebut bisa dikembangkan secara independen.

Pemrograman Berbasis CORBA

Bagaimana mungkin dua obyek yang dikembangkan secara terpisah, dengan perangkat dan bahasa yang berbeda, serta dijalankan di komputer yang berbeda pula bisa saling berkomunikasi? Apa yang bisa “mempertemukan” perbedaan-perbedaan itu? Kuncinya adalah konsep tentang interface. Dalam teknologi OO, interface dapat dikatakan sebagai “ikatan kontrak” antara dua obyek yang akan berkomunikasi. Bagi obyek server, interface berfungsi sebagai “iklan” tentang apa saja yang bisa dikerjakannya. Bagi client, interface berfungsi untuk mengetahui layanan-layanan apa yang disediakan oleh server. Dalam CORBA, spesifikasi interface merupakan hal yang pertama kali dilakukan, layaknya dalam kehidupan nyata di mana sebelum terjadi transaksi, dibuat dulu kontraknya. Spesifikasi interface dibuat menggunakan sebuah bahasa khusus yang bersifat standar yang disebut Interface Definition Language (IDL).

Sintaks IDL sendiri mirip dengan sintaks bahasa C++. Berikut ini contoh sebuah spesifikasi interface untuk layanan yang disediakan oleh obyek aplikasi di apotik. Ingat bahwa spesifikasi ini berlaku baik untuk client maupun implementasi obyek.

interface checkObat {

float checkHarga(in string namaObat);

boolean checkTersedia(in string namaObat);

};

Sekilas definisi di atas mirip dengan definisi kelas dalam C++. Perbedaan yang paling nyata adalah tidak ada kode program untuk fungsi checkHarga dan checkTersedia ! Perlu diingat bahwa interface hanya menyatakan apa yang tersedia (aspek what), tidak menyebutkan bagaimana menyediakannya (aspek how). Kita tidak akan membahas sintaks IDL dalam kesempatan ini. Fokus kita adalah bagaimana menggunakan spesifikasi interface yang dibuat dengan IDL ini untuk membuat client dan implementasi obyek dalam aplikasi.

Interface yang ditulis dengan IDL hanya merupakan kerangka bagi program client dan implementasi obyek. Pemrogram masih harus mengisi detil-detil keduanya sehingga membentuk program yang utuh. Pada contoh interfacecheckObat di atas misalnya, fungsi-fungsi checkHarga dan checkTersedia harus diimplementasikan.

Yang perlu diperhatikan dalam pemrograman client dan implementasi obyek adalah bahasa pemrograman yang digunakan. Bahasa yang bisa digunakan adalah yang memiliki pemetaan (mapping) dengan IDL. Pemetaan ini menyebutkan ekuivalensi tipe data, fungsi, dan konstruksi pemrograman IDL lainnya dalam konstruksi pemrograman bahasa yang bersangkutan. Pada umumnya bahasa pemrograman populer seperti C, C++, Java, Smalltalk, dan COBOL telah memiliki pemetaan ini. Seperti telah dijelaskan di depan, client dan implementasi obyek dapat menggunakan bahasa pemrograman yang berbeda.

Langkah selanjutnya adalah kompilasi program. Program client, implementasi obyek, dan spesifikasi interface dikompilasi. Spesifikasi interface dikompilasi dengan kompiler IDL, menghasilkan kode stub (untuk client) dan skeleton (untuk implementasi obyek). Tiap bahasa yang didukung memiliki kompiler IDL sendiri. Selanjutnya dilakukan proses linking untuk menghasilkan program yang bisa dieksekusi. Proses ini ditunjukkan oleh gambar 2 berikut ini.

Sampai sejauh ini kita bisa melihat bahwa IDL menyelesaikan masalah heterogenitas dan distribusi lokasi obyek. Masih ada hal yang belum terpecahkan: bagaimana client dapat mengakses implementasi obyek? Lazimnya dalam bahasa-bahasa pemrograman hal ini dilakukan melalui nama (pengidentifikasi) obyek. Tapi bagaimana jika implementasi obyek terletak di komputer yang berbeda dan dibuat dengan bahasa yang berbeda pula? CORBA menggunakan referensi obyek untuk tujuan ini. Tiap implementasi obyek memiliki sebuah referensi obyek sebagai handle untuk mengakses dirinya. Referensi obyek dibuat oleh ORB pada saat obyek tersebut diciptakan, bersifat unik, dan tetap valid selama obyek tersebut ada. Referensi obyek juga menyembunyikan lokasi fisis dari obyek yang bersangkutan. Dengan referensi obyek, client dapat mengakses sebuah implementasi obyek tanpa harus mengetahui di mana persisnya lokasi obyek tersebut. Referensi obyek dapat dikirimkan ke aplikasi lain, disimpan dalam basis data, atau diberikan kepada seorang pelanggan untuk digunakan dalam programnya.

Interoperabilitas ORB

Ruang lingkup komputasi berbasis CORBA tidak hanya terbatas pada satu ORB saja. Antara satu ORB dengan ORB yang lain bisa juga berkomunikasi. Model ini sangat bermanfaat untuk komputasi berskala enterprise dengan lingkup distribusi yang sangat luas. Dalam situasi seperti ini, tidak mungkin untuk menggunakan hanya satu ORB untuk setiap program yang ada. Pendekatan yang logis adalah dengan melakukan clustering, dan sebuah cluster ditangani oleh sebuah ORB. Dengan mekanisme ini, tiap ORB dituntut untuk bisa berkomunikasi dengan ORB lainnya, untuk memfasilitasi komunikasi antar program yang berjalan di atasnya.

Interoperabilitas dapat dilakukan secara efisien dan sederhana dengan mengharuskan dua ORB untuk “berbicara” dengan protokol yang sama. Internet Interoperable Protocol (IIOP) adalah protokol standar yang harus dimiliki ORB agar bisa disebut “selaras dengan CORBA” (CORBA-compliant). Dengan kata lain, IIOP adalah “bahasa komunikasi standar” bagi ORB. Interoperabilitas juga dapat dicapai melalui penjembatanan (bridging). Penjembatanan memungkinkan komunikasi dilakukan oleh ORB dengan protokol yang berbeda. Cara ini memberikan keleluasaan kepada implementor apabila metode pertama tidak mungkin atau sulit diterapkan, misalnya karena alasan tuntutan solusi komputasi yang paling cost-effective. Kerugiannya, arsitektur sistem keseluruhan menjadi lebih kompleks karena diperlukan jembatan-jembatan antar ORB.

Sepintas model ini terlihat rumit, tapi dari sisi aplikasi tidak ada pengaruhnya sedikitpun. Transparansi terjaga penuh, client tidak perlu tahu sedikitpun apakah implementasi obyek terletak di lingkup ORB yang sama atau tidak. Jika tidak, ORBnya secara otomatis akan melemparkan pesannya ke ORB di mana implementasi obyek berada. Dalam contoh kasus kita, jika permintaan tentang suatu obat tidak bisa dipenuhi oleh obyek di apotik X, maka ORB di tempat itu dapat meneruskan pesan permintaan ini ke ORB di apotik Y misalnya.

OMA

Sejauh ini, kita hanya membicarakan interoperabilitas pada level obyek. Pada kenyataannya, interoperabilitas pada level aplikasi jauh lebih kompleks. Keterkaitan antara satu program dengan program yang lain begitu beragam, hal ini menyulitkan penyediaan dukungan yang lebih komprehensif secara terstruktur. Dengan teknologi berbasis CORBA, OMG mencoba menuangkan visinya tentang aplikasi terdistribusi dalam sebuah arsitektur yang disebut Object Management Architecture (OMA). OMA mengelompokkan jenis-jenis interaksi antar program untuk memudahkan penyediaan dukungan. Gambar 3 menggambarkan konsep OMA.

OMA melakukan strukturisasi dunia aplikasi ke dalam dua kelompok besar: kategori layanan CORBA (CORBA services) dan kategori fasilitas CORBA (CORBA facilities). Layanan CORBA menyediakan fungsi-fungsi dasar yang digunakan oleh hampir setiap obyek dalam berbagai aplikasi. Fungsi-fungsi ini biasanya bersifat generik dan tidak tergantung pada jenis domain aplikasi. Sebagai contoh adalah layanan penamaan (naming service). Bayangkan bila kita memerlukan sebuah layanan tapi tidak tahu ke mana harus mencari server yang menyediakan layanan tersebut. Layanan penamaan dapat membantu kita layaknya sebuah “halaman kuning” (yellow pages); dia bisa menyiarkan direktori layanan yang terdaftar padanya. Karena sifatnya yang generik, layanan penamaan dapat digunakan oleh aplikasi dari berbagai domain.

Fasilitas CORBA lebih tinggi levelnya. Ia menyediakan layanan pada level aplikasi. Ada dua jenis fasilitas: horizontal, yang diperlukan oleh berbagai jenis domain (misalnya, user-interface), dan vertikal, yang berlaku khusus untuk domain tertentu (misalnya, dalam kasus kita, domain kesehatan). Fasilitas horizontal fungsinya mirip dengan layanan CORBA, tetapi beroperasi pada level yang lebih tinggi karena berhubungan langsung dengan aspek fungsional dari aplikasi. OMG secara terus-menerus melakukan standarisasi terhadap interface untuk komponen-komponen di masing-masing kategori. Semakin banyak layanan dan fasilitas yang distandarisasi, semakin mudah untuk mencapai komputasi terdistribusi berbasis komponen dalam berbagai bidang secara plug-and-play, tanpa terganggu oleh masalah heterogenitas.

CORBA di Linux

Dewasa ini cukup banyak perangkat pengembangan berbasis CORBA yang dapat dijalankan di sistem operasi Linux. Hampir semua paket hanya mendukung satu pemetaan bahasa saja, kecuali paket Inter-Language Unification (ILU) dari Xerox PARC yang mendukung beberapa bahasa sekaligus (ANSI C, C++, Python, Java, dsb). Tapi konsep ILU sendiri agak berbeda dengan CORBA, karena fokusnya adalah pada integrasi pada level bahasa pemrograman. Meskipun demikian, pendekatannya mirip, bahkan interface pada ILU dapat pula dispesifikasikan dengan menggunakan IDL.

Beberapa contoh perangkat pengembangan berbasis CORBA yang berjalan di Linux antara lain: MICO dari mico.org (bahasa yang didukung: C++), Fnorb dari DSTC, Australia (Python), JacORB oleh Gerard Brose dari Freie Universitat, Berlin (Java), OmniORB2 dari AT&T (C++), serta tak ketinggalan pula ORBit keluaran laboratorium riset RedHat (mendukung bahasa C) yang dipakai dalam proyek Gnome.

TAO (The ACE ORB) dari Washington University adalah implementasi ORB yang dikembangkan dengan pendekatan yang berbeda. TAO tidak semata-mata merupakan sistem ORB sederhana, tetapi ia dirancang untuk bekerja pada lingkungan real-time dengan batasan-batasan (constraints) yang lebih ketat dibandingkan dengan sistem terdistribusi biasa. Konsekuensinya TAO lebih memfokuskan diri pada dukungan terhadap aspek real-time dan koneksi berkecepatan tinggi, yang diimplementasikan ke dalam arsitektur inti ORB dan modul-modul pendukungnya.

Jika anda memiliki lingkungan komputasi terdistribusi di rumah, di kantor, atau di sekolah, anda bisa mencoba melakukan pemrograman sistem terdistribusi berbasis CORBA. Yang perlu anda lakukan adalah men-download salah satu perangkat pengembangan di atas, memasangnya di sistem anda, dan mengikuti petunjuk/ tutorial pemrograman yang diberikan. Jika petunjuk yang ada belum cukup memadai, anda bisa mencari tutorial pemrograman CORBA melalui Internet. Salah satu koleksi titik akses yang cukup lengkap terdapat di situs Cetus (titik akses diberikan di bagian pustaka).

Penutup

Komputasi terdistribusi merupakan sesuatu yang amat kompleks, apalagi jika ruang lingkupnya sangat luas (pada level enterprise misalnya). CORBA membantu menyederhanakan persoalan dengan menyembunyikan berbagai detail pekerjaan pada level rendah dan heterogenitas sistem dan platform. Lebih lanjut, arsitektur OMA menyediakan sebuah framework pengembangan sistem terdistribusi yang konsisten, sehingga heterogenitas tetap dapat dikelola dengan baik. Dengan semakin banyaknya pemain teknologi informatika yang terjun ke dunia CORBA, agaknya contoh ilustrasi di awal tulisan ini dalam waktu yang relatif tidak terlalu lama akan dapat direalisasikan.

Pustaka

Berikut ini diberikan beberapa titik akses ke situs-situs yang berkaitan dengan CORBA.

Keterangan Situs Titik Akses ke Situs
Halaman Web Object Management Group (OMG) menyediakan titik akses ke berbagai informasi
tentang CORBA
http://www.omg.org/
Halaman Web ILU di Xerox Palo Alto Research Centre ftp://ftp.parc.xerox.com/pub/ilu/ilu.html
Halaman Web Fnorb dari DSTC, Australia http://www.fnorb.org
Halaman Web MICO http://www.mico.org
Halaman Web JacORB di Freie Universitat, Berlin http://jacorb.inf.fu-berlin.de/
Halaman Web OmniORB2 di AT&T Inggris http://www.uk.research.att.com/omniORB/
Halaman Web ORBit di situs RedHat http://www.labs.redhat.com/orbit/
Halaman Web TAO di Washington University http://www.cs.wustl.edu/~schmidt/TAO.html
Situs ini berisi berbagai hal yang berhubungan dengan paradigma berorientasi obyek (OO), termasuk CORBA. Mirror tersebar di berbagai lokasi. http://www.cetus-links.org/

Gambar :

  1. Komunikasi dari client ke implementasi obyek.
  2. Proses pengembangan client dan implementasi obyek

Pengenalan Kriptografi

Pendahuluan

Kemajuan di bidang telekomunikasi dan komputer telah memungkinkan seseorang untuk melakukan transaksi bisnis secara cashless, selain itu ia juga dapat mengirimkan informasi kepada temannya secara on-line.

Kegiatan-kegiatan tersebut tentu saja akan menimbulkan resiko bilamana informasi yang sensitif dan berharga tersebut diakses oleh orang-orang yang tidak berhak (unauthorized persons). Misalnya, informasi mengenai nomor kartu kredit anda, bila informasi ini jatuh kepada orang-orang yang jahat maka anda harus bersiap-siap terhadap melonjaknya tagihan kartu kredit anda.

Sebelum tahun 1970-an, teknologi kriptografi digunakan terbatas hanya untuk tujuan militer dan diplomatik. Akan tetapi kemudian bidang bisnis dan perorangan mulai menyadari pentingnya melindungi informasi berharga.

Pengertian Dasar

Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut encryption atau encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext disebut decryption atau decipherment. Secara sederhana istilah-istilah di atas dapat digambarkan sebagai berikut :

Proses Enkripsi/Dekripsi
Gb. 1. Proses Enkripsi/Dekripsi Sederhana

Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.

Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.

Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut :

EK (M) = C (Proses Enkripsi)
DK (C) = M (Proses Dekripsi)

Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.

Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang menggunakan algoritma tersebut dapat diproduksi massal. Tidaklah menjadi masalah apabila seseorang mengetahui algoritma yang kita gunakan. Selama ia tidak mengetahui kunci yang dipakai, ia tetap tidak dapat membaca pesan.

Cryptographic system (cryptosystem)

Suatu cryptosystem terdiri dari sebuah algoritma, seluruh kemungkinan plaintext, ciphertext dan kunci-kunci. Secara umum cryptosystem dapat digolongkan menjadi dua buah, yaitu :

1. Symmetric Cryptosystem

Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses enkripsi dan dekripsi pada prinsipnya identik, tetapi satu buah kunci dapat pula diturunkan dari kunci yang lainnya. Kunci-kunci ini harus dirahasiakan. Oleh karena itulah sistem ini sering disebut sebagai secret-key ciphersystem. Jumlah kunci yang dibutuhkan umumnya adalah :

nC2 = n . (n-1)
——–
2

dengan n menyatakan banyaknya pengguna.
Contoh dari sistem ini adalah Data Encryption Standard (DES), Blowfish, IDEA.2. Assymmetric Cryptosystem

Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu kunci yang disebut kunci publik (public key) dapat dipublikasikan, sedang kunci yang lain yang disebut kunci privat (private key) harus dirahasiakan. Proses menggunakan sistem ini dapat diterangkan secara sederhana sebagai berikut : bila A ingin mengirimkan pesan kepada B, A dapat menyandikan pesannya dengan menggunakan kunci publik B, dan bila B ingin membaca surat tersebut, ia perlu mendekripsikan surat itu dengan kunci privatnya. Dengan demikian kedua belah pihak dapat menjamin asal surat serta keaslian surat tersebut, karena adanya mekanisme ini. Contoh sistem ini antara lain RSA Scheme dan Merkle-Hellman Scheme.

Setiap cryptosytem yang baik harus memiliki karakteristik sebagai berikut :

  • Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang digunakan.
  • Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
  • Cryptosystem yang baik akan menghasilkan ciphertext yang terlihat acak dalam seluruh tes statistik yang dilakukan terhadapnya.
  • Cryptosystem yang baik mampu menahan seluruh serangan yang telah dikenal sebelumnya

Namun demikian perlu diperhatikan bahwa bila suatu cryptosystem berhasil memenuhi seluruh karateristik di atas belum tentu ia merupakan sistem yang baik. Banyak cryptosystem lemah yang terlihat baik pada awalnya. Kadang kala untuk menunjukkan bahwa suatu cryptosystem kuat atau baik dapat dilakukan dengan menggunakan pembuktian matematika.Hingga saat ini masih banyak orang yang menggunakan cryptosystem yang relatif mudah dibuka, alasannya adalah mereka tidak mengetahui sistem lain yang lebih baik serta kadang kala terdapat motivasi yang kurang untuk menginvestasikan seluruh usaha yang diperlukan untuk membuka suatu sistem.

Cryptographic Protokol

Pengertian

Suatu protokol adalah serangkaian langkah yang melibatkan dua pihak atau lebih dan dirancang untuk menyelesaikan suatu tugas. Dari definisi ini dapat diambil beberapa arti sebagai berikut :

  • protokol memiliki urutan dari awal hingga akhir;
  • setiap langkah harus dilaksanakan secara bergiliran;
  • suatu langkah tidak dapat dikerjakan bila langkah sebelumnya belum selesai;
  • diperlukan dua pihak atau lebih untuk melaksanakan protokol;
  • protokol harus mencapai suatu hasil;

Selain itu, suatu protokol pun memiliki karakteristik yang lain, yaitu :

  • setiap orang yang terlibat dalam protokol harus mengetahui terlebih dahulu mengenai protokol dan seluruh langkah yang akan dilaksanakan;
  • setiap orang yang terlibat dalam protokol harus menyetujui untuk mengikutinya;
  • protokol tidak boleh menimbulkan kerancuan;
  • protokol harus lengkap;

Cryptographic protocol adalah suatu protokol yang menggunakan kriptografi. Protokol ini melibatkan sejumlah algoritma kriptografi, namun secara umum tujuan protokol lebih dari sekedar kerahasiaan. Pihak-pihak yang berpartisipasi mungkin saja ingin membagi sebagian rahasianya untuk menghitung sebuah nilai, menghasilkan urutan random, atau pun menandatangani kontrak secara bersamaan. Penggunaan kriptografi dalam sebuah protokol terutama ditujukan untuk mencegah atau pun mendeteksi adanya eavesdropping dan cheating.Fungsi Protokol

Dalam kehidupan kita sehari-hari terdapat banyak sekali protokol tidak resmi, misalnya saja dalam permainan kartu, pemungutan suara dalam pemilihan umum. Akan tetapi tidak ada seorang pun yang memikirkan mengenai protokol-protokol ini, protokol-protokol ini terus berkembang, semua orang mengetahui bagaimana menggunakannya.

Saat ini, semakin banyak interaksi antar manusia dilakukan melalui jaringan komputer. Komputer ini tentu saja memerlukan suatu protokol formal agar dapat melakukan hal yang biasa dilakukan manusia tanpa berpikir. Bila kita berpindah dari satu daerah ke daerah lain dan mengetahui bahwa kartu pemilihan suaranya berbeda dengan yang biasa kita gunakan, kita dapat beradaptasi dengan mudah. Akan tetapi kemampuan ini belum dimiliki oleh komputer, sehingga diperlukan suatu protokol.

Protokol digunakan untuk mengabtraksikan proses penyelesaian suatu tugas dari mekanisme yang digunakan. Protokol komunikasi adalah sama meskipun diimplementasikan pada PC atau VAX. Bila kita yakin bahwa kita memiliki protokol yang baik, kita dapat mengimplementasikannya dalam segala benda mulai dari telepon hingga pemanggang roti cerdas.

Penyerangan terhadap protokol

Penyerangan cryptographic dapat ditujukan pada beberapa hal berikut :

  • algoritma cryptographic yang digunakan dalam protokol;
  • teknik cryptographic yang digunakan untuk mengimplementasikan algoritma dan protokol;
  • protokol itu sendiri;

Seseorang dapat mencoba berbagai cara untuk menyerang suatu protokol. Mereka yang tidak terlibat dalam protokol dapat menyadap sebagian atau seluruh protokol. Tindakan ini disebut penyerangan pasif, karena si penyerang tidak mempengaruhi atau mengubah protokol, ia hanya mengamati protokol dan berusaha untuk memperoleh informasi.Selain itu, seorang penyerang dapat berusaha untuk mengubah protokol demi keuntungannya sendiri. Ia dapat mengirimkan pesan dalam protokol, menghapus pesan, atau bahkan mengubah informasi yang ada di dalam suatu komputer. Tindakan-tindakan ini disebut sebagai penyerangan aktif, karena ia membutuhkan suatu campur tangan aktif.

Seorang penyerang tidaklah hanya berasal dari lingkungan luar protokol, namun ia mungkin juga berasal dari dalam protokol itu sendiri, ia dapat merupakan salah satu pihak yang terlibat dalam protokol. Tipe penyerang semacam ini disebut sebagai cheater. Passive cheater mengikuti protokol, tetapi berusaha memperoleh informasi lebih banyak daripada yang diperbolehkan protokol bagi dirinya. Active cheater mengubah protokol dalam usahanya untuk berbuat curang.

Usaha untuk menjaga keamanan protokol akan semakin sulit apabila pihak-pihak yang terlibat umumnya merupakan active cheater, oleh karena itu suatu protokol yang baik harus mampu atau pun harus aman terhadap kemungkinan passive cheating.

Berbagai macam basic cryptanalytic attacks

Tujuan cryptanalytic attack adalah untuk mengetahui beberapa plaintext yang sesuai dengan ciphertext yang ada dan berusaha menentukan kunci yang memetakan satu dengan yang lainnya. Plaintext ini dapat diketahui karena ia merupakan standar atau karena pendugaan. Jika suatu teks diduga berada di dalam suatu pesan, posisinya mungkin tidak diketahui, tetapi suatu pesan lazimnya cukup pendek sehingga memungkinkan cryptanalyst menduga plaintext yang diketahui dalam setiap posisi yang mungkin dan melakukan penyerangan pada setiap kasus secara paralel.

Suatu algoritma enkripsi yang kuat tidak hanya mampu bertahan terhadap serangan plaintext yang dikenal tetapi juga mampu bertahan terhadap adaptive chosen plaintext. Dalam penyerangan ini, cryptanalyst berkesempatan memilih plaintext yang digunakan dan dapat melakukannya secara berulang kali, memilih plaintext untuk tahap N+1 setelah menganalisis hasil tahap N.

Yang dimaksud cryptanalytic attacks adalah usaha-usaha yang dilakukan seseorang untuk memperoleh informasi ataupun data yang telah dienkripsi. Secara ringkas terdapat tujuh macam basic cryptanalytic attacks berdasarkan tingkat kesulitannya bagi penyerang, dimulai dari yang paling sulit adalah :

  • Ciphertext-only attack. Dalam penyerangan ini, seorang cryptanalyst memiliki ciphertext dari sejumlah pesan yang seluruhnya telah dienkripsi menggunakan algoritma yang sama.
  • Known-plaintext attack. Dalam tipe penyerangan ini, cryptanalyst memiliki akses tidak hanya ke ciphertext sejumlah pesan, namun ia juga memiliki plaintext pesan-pesan tersebut.
  • Chosen-plaintext attack. Pada penyerangan ini, cryptanalyst tidak hanya memiliki akses atas ciphertext dan plaintext untuk beberapa pesan, tetapi ia juga dapat memilih plaintext yang dienkripsi.
  • Adaptive-chosen-plaintext attack. Penyerangan tipe ini merupakan suatu kasus khusus chosen-plaintext attack. Cryptanalyst tidak hanya dapat memilih plaintext yang dienkripsi, ia pun memiliki kemampuan untuk memodifikasi pilihan berdasarkan hasil enkripsi sebelumnya. Dalam chosen-plaintext attack, cryptanalyst mungkin hanya dapat memiliki plaintext dalam suatu blok besar untuk dienkripsi; dalam adaptive-chosen-plaintext attack ini ia dapat memilih blok plaintext yang lebih kecil dan kemudian memilih yang lain berdasarkan hasil yang pertama, proses ini dapat dilakukannya terus menerus hingga ia dapat memperoleh seluruh informasi.
  • Chosen-ciphertext attack. Pada tipe ini, cryptanalyst dapat memilih ciphertext yang berbeda untuk didekripsi dan memiliki akses atas plaintext yang didekripsi.
  • Chosen-key attack. Cryptanalyst pada tipe penyerangan ini memiliki pengetahuan tentang hubungan antara kunci-kunci yang berbeda.
  • Rubber-hose cryptanalysis. Pada tipe penyerangan ini, cryptanalyst mengancam, memeras, atau bahkan memaksa seseorang hingga mereka memberikan kuncinya.

Analisis berbagai tipe penyerangan secara matematis

Suatu penyerangan pasif atas cryptosystem adalah semua metode untuk mengungkapkan informasi tentang plaintext dan ciphertextnya dengan tanpa mengetahui kunci. Secara matematis :

Diberikan fungsi F, G, dan H yang terdiri dari n variabel.
Diberikan sistem enkripsi E.
Diberikan suatu distribusi plaintext dan kunci.

Suatu penyerangan atas E dengan menggunakan G dengan mengasumsikan F membagi H dengan probabilitas p adalah suatu algoritma A dengan sepasang input f,g dan satu buah output h sedemikian hingga terdapat probabilitas p atas h = H(P1, …, Pn), jika kita memiliki f = F(P1, …, Pn) dan g = G(EK(P1), …, EK(Pn)). Perlu diperhatikan bahwa probabilitas ini tergantung pada distribusi vektor-vektor (K,P1,…,Pn).

Penyerangan akan merupakan suatu trivial bila terdapat probabilitas paling sedikir p untuk h = H(P1, …, Pn) jika f = F (P1,…,Pn) dan g = G (C1,…,Cn). Di sini C1,…,Cn terletak pada ciphertext yang mungkin, dan tidak memiliki hubungan tertentu dengan P1,…,Pn. Dengan kata lain, suatu serangan akan merupakan trivial bila ia tidak benar-benar menggunakan enkripsi EK(P1),…,EK(Pn).

Dengan merumuskan penyerangan secara matematis, kita dapat secara tepat memformulasikan dan bahkan membuktikan pernyataan bahwa suatu cryptosystem itu kuat. Kita katakan, sebagai contoh, bahwa suatu cryptosystem adalah aman terhadap seluruh penyerangan pasif jika sembarang penyerangan nontrivial terhadapnya tidak praktis. Jika kita dapat membuktikan pernyataan ini maka kita akan memiliki keyakinan bahwa cryptosystem kita akan bertahan terhadap seluruh teknik cryptanalytic pasif. Jika kita dapat mereduksi pernyataan ini hingga pada beberapa masalah yang tidak terpecahkan maka kita masih tetap memiliki keyakinan bahwa cryptosystem kita tidak mudah dibuka.

Ciphertext-only attack

Dengan menggunakan notasi di atas, suatu ciphertext-only attack adalah suatu penyerangan dengan F adalah konstanta. Diberikan hanya beberapa informasi G(EK(P1),..EK(Pn)) tentang n ciphertext, penyerangan harus memiliki kesempatan menghasilkan beberapa informasi H(P1,…,Pn) tentang plaintext. Penyerangan akan merupakan suatu trivial bila ia hanya menghasilkan H(P1,…,Pn) ketika diberikan G(C1,…,Cn) untuk C1,…,Cn acak.

Sebagai contoh, misalkan G ( C ) = C dan misalkan H(P) adalah bit pertama P. Kita dapat secara mudah menulis suatu penyerangan, pendugaan, yang menduga bahwa H(P) adalah 1. Penyerangan ini adalah trivial karena tidak menggunakan ciphertext, probabilitas keberhasilannya adalah 50 %. Di lain pihak, terdapat penyerangan atas RSA yang memproduksi satu bit informasi tentang P, dengan probabilitas keberhasilan 100 %, menggunakan C. Jika diberikan suatu C acak maka tingkat kesuksesan turun menjadi 50%. Inilah yang disebut penyerangan nontrivial.

Known-plaintext attack

Penyerangan known-plaintext klasik memiliki F(P1,P2) = P1, G(C1,C2) = (C1,C2), dan H(P1,P2) tergantung hanya pada P2. Dengan kata lain, bila diberikan dua ciphertext C1 dan C2 dan satu dekripsi P1, penyerangan known-plaintext seharusnya menghasilkan informasi tentang dekripsi P2.

Brute-force attack

Umpamakan penyerangan known-plaintext berikut. Kita diberikan sejumlah plaintext P1,…,Pn-1 dan ciphertext C1,…,Cn-1. Kita juga diberikan sebuah ciphertext Cn. Kita jalankan seluruh kunci K. Bila kita temukan K sedemikian sehingga EK(P1) = Ci untuk setiap I<n, kita cetak DK(Cn).

Jika n cukup besar sehingga hanya satu kunci yang bekerja, penyerangan ini akan sukses untuk seluruh input yang valid pada setiap waktu, sementara ia akan menghasilkan hasil yang tepat hanya sekali untuk input acak. Penyerangan ini adalah nontrivial, masalahnya ia sangat lambat bila terdapat banyak kemungkinan kunci.


Konversi ke HTML oleh Tedi Heriyanto. $ 12 September 1999. 10.30 $
Sumber Informasi Lebih Lanjut (belum selesai)Website dan FTPhttp://www.rsa.com (RSA Inc.)
http://www.counterpane.com (Counterpane Inc.)
http://theory.lcs.mit.edu/~rivest/ (Ronald L. Rivest-the R in RSA)
http://www.cryptography.com
Buku-buku Scheneier, Bruce, Applied Cryptography, edisi 2, New Jersey:John Wiley & Sons, Inc., 1996.