BAB I PENDAHULUAN Keamanan data multimedia sangat penting dalam bisnis komersil maupun tradisional saat ini. Contohnya, pada aplikasi video on demand, hanya orang yang membayar yang dapat menonton video tersebut. Selain itu juga pada aplikasi video conferencing, hanya orang yang berkepentingan saja yang dapat ikut serta dalam konferensi tersebut dan mendapatkan datanya. Salah satu cara untuk mengamankan aplikasi distributed multimedia seperti pada contoh-contoh di atas adalah dengan mengenkripsinya menggunakan algoritma kriptografi seperti DES (Data Encryption Standard) atau IDEA (International Data Encryption Algorithm) [2]. Masalahnya, algoritma kriptografi tersebut memiliki komputasi yang rumit. Implementasi dari algoritma kriptografi ini tidak cukup cepat untuk memproses sejumlah besar data yang dihasilkan oleh aplikasi multimedia. [3] Dua hal yang dapat diperhatikan dari enkripsi data multimedia adalah: pertama, ukuran data multimedia biasanya sangat besar. Sebagai contoh, ukuran data dari
video MPEG-1 berdurasi dua jam kira-kira 1 GB. Kedua, data multimedia harus diproses real-time. Memproses sejumlah besar data saat real-time dengan algoritma kriptografi yang rumit akan memperberat kinerja komputer serta jaringannya, dan juga tidak nyaman bagi orang yang menonton video tersebut secara real-time karena hal tersebut dapat berpengaruh juga pada delay video yang sedang ditontonnya. Untuk beberapa jenis aplikasi video komersil, seperti program pay-per-view, informasi yang terdapat sangat banyak, tetapi nilai dari informasi tersebut sangat rendah. Serangan terhadap data ini sangat mahal tetapi tidak menguntungkan karena untuk memecahkan kode enkripsi video tersebut jauh lebih mahal dibandingkan membeli program untuk menonton video tersebut [3]. Walaupun begitu, algoritma enkripsi yang ringan yang dapat menghasilkan tingkat keamanan yang cukup memuaskan dan memiliki komputasi yang ringan sangat dibutuhkan pada aplikasi video. Banyak algoritma enkripsi video yang telah dibangun sampai saat ini, tetapi algoritma yang umum digunakan terutama
untuk aplikasi video streaming adalah algoritma Video Encryption, atau sering disebut juga VEA (Video Encryption Algorithm). Alasan banyaknya penggunaan algoritma ini adalah karena tingkat keamanannya yang cukup memuaskan, komputasi yang ringan, dan cocok diimplementasikan di lingkungan video streaming karena algoritmanya yang dapat berbasis stream cipher maupun block cipher, tergantung kebutuhan saat streaming video tersebut. Pada paper ini kami akan mencoba menggunakan MD5 sebagai metode enkripsi pada video streaming. Dalam kriptografi, MD5 (Message-Digest algortihm 5) ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 128-bit. Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacammacam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file. Enkripsi MD5 dianggap strong karena enkripsi yang dihasilkannya bersifat „one way hash‟. Berapapaun string yang di enkripsi hasilnya tetap sepanjang 32 karakter. BAB II DASAR TEORI 2.1 Kriptografi Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Scheiner dalam bukunya "Applied Cryptography", kriptografi adalah ilmu
pengetahuan dan seni menjaga messagemessage agar tetap aman (secure). Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni [1]: Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihakpihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami. Data integrity (keutuhan data) yaitu layanan yang mampu mengenali /mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain). Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya). Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah
diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya. Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi : Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli). Ciphertext (C) adalah pesan terenkrip (tersandi) yang merupakan hasil enkripsi. Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi ciphertext. Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli. Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.
Peranan kunci sangatlah penting dalam proses enkripsi dan dekripsi (disamping pula algoritma yang digunakan) sehingga kerahasiaannya sangatlah penting, apabila kerahasiaannya terbongkar, maka isi dari pesan dapat diketahui. Secara matematis, proses enkripsi merupakan pengoperasian fungsi E (enkripsi) menggunakan e (kunci enkripsi) pada M (plaintext) sehingga dihasilkan C (ciphertext), notasinya : Sedangkan untuk proses dekripsi, merupakan pengoperasian fungsi D (dekripsi) menggunakan d (kunci dekripsi) pada C (ciphertext) sehingga dihasilkan M (plaintext), notasinya : Sehingga dari dua hubungan diatas berlaku :
2.2 Fungsi Hash Suatu hash function adalah sebuah fungsi matematika, yang mengambil sebuah panjang variable string input, yang disebut pre-image dan mengkonversikannya ke sebuah string output dengan panjang yang tetap dan biasanya lebih kecil yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam notasi heksadesimal), yang disebut message digest. [4]. Fungsi hash satu arah (one-way hash function) adalah hash function yang bekerja satu arah, yaitu suatu hash function yang dapat menghitung message digest dari preimage, tetapi sangat sukar untuk menghitung pre-image dari message digest.
Sebuah fungsi hash satu arah, H(M) beroperasi pada suatu pre-image pesan M dengan panjang sembarang dan mengembalikan nilai hash h yang m memiliki panjang tetap. Dalam notasi matematika fungsi hash satu arah dapat ditulis sebagai: h = H(M), dengan h memiliki panjang b Fungsi hash sangat berguna untuk menjaga integritas sebuah data. Sudah banyak algoritma hash function yang diciptakan, namun hash function yang umum digunakan saat ini adalah MD5 dan SHA (Secure Hash Algorithm). 2.3 Message Digest 5 (MD5) MD5 di desain oleh Ronald Rives pada tahun 1991 untuk menggantikan hash function sebelumnya MD4 yang berhasil diserang oleh kriptanalis. MD5 ialah fungsi kriptografi yang digunakan secara luas dengan hash value 128-bit. Pada standard Internet, MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file. Ringkasan MD5 digunakan secara luas dalam dunia perangkat lunak (software) untuk menyediakan jaminan bahwa file yang diambil (download) belum terdapat perubahan. Seorang user dapat membandingkan MD5 sum yang dipublikasikan dengan checksum dari file yang diambil. Dengan asumsi bahwa checksum yang dipublikasikan dapat dipercaya akan keasliannya, seorang user dapat secara yakin bahwa file tersebut adalah file yang sama dengan file yang
dirilis oleh para pengembang (developer), jaminan perlindungan dari Trojan Horse dan virus komputer yang ditambahkan pada perangkat lunak. Bagaimanapun juga, seringkali kasus yang terjadi bahwa checksum yang dipublikasikan tidak dapat dipercaya (sebagai contoh, checksum didapat dari channel atau lokasi yang sama dengan tempat mengambil file), dalam hal ini MD5 hanya mampu melakukan errorchecking. MD5 akan mengenali file yang di download tidak sempurna, cacat atau tidak lengkap [5]. 2.3.1 Algoritma MD5 Algoritma MD5 yang utama beroperasi pada kondisi 128-bit, dibagi menjadi empat word 32-bit, menunjukkan A, B, C dan D. Operasi tersebut diinisialisasi dijaga untuk tetap konstan. Algoritma utama kemudian beroperasi pada masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi. Pemrosesan blok pesan terdiri atas empat tahap, batasan putaran; tiap putaran membuat 16 operasi serupa berdasar pada fungsi non-linear F, tambahan modular, dan rotasi ke kiri. Pada Gambar 2.2 dapat dilihat satu buah operasi dari MD5 dengan operasi yang dipakai sebagai contoh adalah FF(a, b, c, d, Mi, s, Ki) menunjukkan: a = b + ((a + F(b, c, d) + Mi + Ki) <<< s)
Operasi MD5 Bila Mi menggambarkan pesan ke-i dari sub blok (dari 0 sampai 15) dan <<< s menggambarkan bit akan digeser ke kiri sebanyak s bit, maka keempat operasi dari masing-masing ronde adalah: FF(a, b, c, d, Mi , s, Ki) menunjukkan a = b + ((a + F(b, c, d) + Mi+ Ki) <<< s) GG(a, b, c, d, M i, s, Ki) menunjukkan a = b + ((a + G(b, c, d) + Mi+ K i) <<< s) HH(a, b, c, d, Mi, s, Ki) menunjukkan a = b + ((a + H(b, c, d) + Mi + Ki) <<< s) II(a, b, c, d, Mi, s, Ki) menunjukkan a = b + ((a + I(b, c, d) + Mi + Ki) <<< s) Konstanta Ki didapat dari integer 232 abs (sin(i)), dimana i dalam radian [5]. 2.3.2 Penggunaan MD5 MD5 digunakan untuk banyak hal yang berkaitan dengan kriptografi dan keamanan. Beberapa penggunaan MD5 yang banyak digunakan antara lain:
a. Verifikasi Integritas File Verifikasi integritas file merupakan suatu langkah pemeriksaan terhadap kebenaran isi dari suatu file, memastikan bahwa file tersebut masih utuh / asli. b. Penyimpanan Password (Storing Password) Penyimpanan password dalam bentuk nilai hash MD5 lebih aman daripada menyimpan password dalam bentuk plain text. Ketika user mendaftar, password yang dimasukkan akan dibangkitkan nilai hashnya dan disimpan di dalam database. Contohnya bila pengguna mendaftar dengan nama ”komputer” maka nilai hash yang dihasilkan adalah 71431b1e88117facdc7584c476e09452 dan disimpan di dalam database. Bila kemudian user login dengan password yang lain, maka nilai hashnya tidak cocok dengan yang ada di database sehingga otentikasi gagal. c. Tanda tangan Digital (Digital Signature) Digital signature tidak lain adalah nilai hash yang terenkripsi dengan kunci private pembuat dokumen. Penerima dokumen bisa memverifikasi signature ini dengan cara menghitung nilai hash dokumen yang dia terima, kemudian mendekripsi digital signature dengan kunci publik pembuat dokumen sehingga kembali menjadi hash. Kedua nilai hash ini lalu dibandingkan, hasil dekripsi dan hasil perhitungan, jika sama maka signature valid. Digital signature dipakai juga untuk membuat certificate SSL. Certificate
SSL sangat vital peranannya menjaga confidentiality dan authentication ketika seseorang mengakses website. Browser sudah memiliki daftar trusted Certificate Authority, jadi setiap browser mengakses website dengan https akan diperiksa apakah certificate server tersebut ditandatangani oleh salah satu dari CA yang dipercaya browser [5].
bandwitdh jaringan. Setelah di-encode, data akan di-stream ke user yang lain. User akan melakukan decode data dan menampilkan hasilnya ke layar user. Waktu yang dibutuhkan agar sebuah data sampai mulai dari pemancar sampai penerima disebut dengan latency [6]. Ada tiga tipe video streaming menurut bentuk layanannya, yaitu [7] : 1.
2.4 Video Streaming Video streaming dapat diartikan sebagai sebuah teknologi dimana user dapat menjalankan file video tanpa harus menyimpan kedalam hardisk. Jadi dari hal tersebut terdapat tujuan yang jelas yaitu server menyimpan video dan client melakukan request terhadap file media stream yang ingin dijalankan. Proses pengiriman file berlangsung dari sebuah server ke client melalui jaringan lokal ataupun internet. Dimana file yang dikirimkan tersebut berupa paket time stamped atau yang biasa disebut sebagai stream media file. Cara kerja video streaming pada awalnya adalah data dari source (bisa berupa audio maupun video) akan di-capture dan disimpan pada sebuah buffer yang berada pada memori komputer (bukan media penyimpanan seperti harddisk) dan kemudian di-encode sesuai dengan format yang diinginkan. Dalam proses encode ini, user dapat mengkompresi data sehingga ukurannya tidak terlalu besar (bersifat optional). Namun pada aplikasi streaming menggunakan jaringan, biasanya data akan dikompresi terlebih dahulu sebelum dilakukan streaming, karena keterbatasan
Audio / Video-on –Demand Pada aplikasi jenis ini client melakukan request on-demand terhadap file audio atau video terkompresi yang telah tersimpan pada server. Untuk audio, biasanya file yang distreamingkan berupa lagu-lagu, orkestra, arsip rekaman radio yang terkenal, serta arsip rekaman sejarah. Untuk video, biasanya file yang distreamingkan dapat berupa video panduan pendidikan, film laga, rekaman acara televisi, film dokumenter, arsip video dari suatu peristiwa sejarah, video rekaman pertandingan olahraga, kartun serta video klip musik. Kapan saja client dapat meminta file audio/video dari server. Umumnya pada aplikasi stored audio/video, setelah delay beberapa detik client baru bisa memulai untuk memainkan data audio/video yang dimintanya dan pada saat itu juga client menerima data dari server secara terusmenerus (continues). Sepanjang pemutaran audio/video disaat client menerima data inilah yang disebut streaming. Banyak aplikasi yang telah menyediakan fitur user interactive,
2.
3.
contoh: pause/resume dan forward/rewind dalam pemutaran data streaming. Secara ideal delay saat client meminta (request on-demand) file audio/video hingga client menerima data (dapat mendengarkan/memainkan file audio/video) seharusnya pada 1 sampai 10 detik. Persyaratan paket delay dan jitter tidak sebegitu ketat seperti aplikasi real-time yang ada pada internet telephony dan video conferencing real-time. Sudah banyak aplikasi Streaming stored audio and video, meliputi RealPlayer dari RealNetwork dan NetShoe dari Microsoft. Live streaming Pada aplikasi jenis ini mirip dengan penyiaran radio dan televisi, kecuali transmisi melalui jaringan internet. Pada aplikasi ini user diijinkan untuk menerima transmisi radio dan televisi yang dipancarkan dari penjuru bumi. Biasanya, ada banyak user yang secara bersamaan menerima audio/video secara real-time. Aplikasi dari jenis ini tidaklah interaktif : seorang client tidak dapat mengontrol server dalam mengirimkan data. Seperti pada Audio / Video-on -Demand, persyaratan untuk paket delay dan jitter tidaklah seketat seperti internet telephony dan video conferencing secara real-time. Nilai toleransi delay sampai 10 detik dari saat user meminta sampai audio/video mulai diputar. Real-time streaming Aplikasi ini mengijinkan pengguna untuk berkomunikasi dengan audio atau video dalam waktu yang riil. Contohnya
adalah komunikasi tatap muka langsung melalui Internet atau sering disebut dengan komunikasi video conference. Banyak produk audio dan video interaktif yang ada pada internet, meliputi Microsoft Netmeeting. Sebagai catatan bahwa pada aplikasi audio/video interaktif, seorang user dapat berbicara atau bergerak kapanpun. Delay dari saat seorang user berbicara atau bergerak sampai tindakan itu terdengar atau terlihat pada host yang menerimanya seharusnya tidak lebih dari beberapa ratus milidetik. Untuk voice, delay lebih kecil dari 150 milidetik karena ini tidak akan dirasakan oleh pendengaran manusia, delay antara 150 sampai 400 milidetik masih dapat diterima namun delay diatas 400 tidaklah ideal. Delay diatas 400 milidetik akan dirasakan oleh pendengaran manusia.
2.5 Java Media Framework (JMF) JMF adalah bagian dari Java Sound Engine yang merupakan interface aplikasi multimedia yang dapat bekerja baik pada Microsoft windows maupun linux sehingga dalam penerapannya tidak memerlukan penyesuaian yang begitu banyak untuk dapat dioperasikan pada paltform-platform tersebut. Sun Microsystem sebagai perusahaan pengembang bahasa pemrograman Java berinisiatif untuk membawa pemrosesan time-base media kedalam bahasa pemrograman Java. Timebase media adalah proses yang dilakukan untuk mengubah data yang diterima dengan berdasarkan waktu, termasuk didalamnya
seperti audio,video, video klip, file MIDI, dan animasi [8]. Beberapa fungsi dari JMF adalah : 1. Dapat digunakan untuk berbagai file multimedia pada Java Applet atau aplikasi. Format yang mendukung antara lain AU, AVI, MIDI, MPEG, WAV, dan beberapa file audio yang didukung oleh Java. 2. Memutar media streaming dari internet 3. Capture audio dan video dengan mikropon dan kamera video kemudian menyimpan data tersebut kedalam format yang mendukungnya. 4. Mengolah media time-based dan mengubah format content-type. 5. Mengirimkan audio dan video secara realtime ke dalam jaringan internet atau intranet. 6. Dapat digunakan untuk pemrograman penyiaran radio atau televisi secara langsung. Arsitektur JMF Dalam pemrograman JMF untuk membuat interface dan menghubungkan antar class terdapat beberapa langkah yang harus diperhatikan yaitu [9] [10]: 1. Capture Device Capture device merupakan hardware yang akan digunakan untuk pengambilan media data,seperti mikropon, camera atau video kamera, hasil dari pengambilan media data kemudian diberikan pada Player untuk dikonversi agar bisa ditampilkan atau disimpan untuk dipakai kembali sebagai data.
Capture device dapat digolongkan sebagai push atau pull source, dengan pull source user bisa mengatur kapan akan mengambil gambar dengan menggunakan kamera dan mikropon digunakan untuk mengambil data audio secara stream. 2. DataSource DataSource berfungsi untuk mengatur transfer dari media. Pada JMF Data Source diidentifikasi dengan MediaLocator. Data source bisa membuat media stream seperti CD musik, pada JMF objek datasource dapat merepresentasikan media audio, media video, ataupun kombinasi dari kedua media tersebut. Data source bisa berupa file dan streaming yang terdapat pada jaringan, kelebihan class ini adalah jika sudah ditentukan lokasi atau protokol tujuan, data source langsung mengenali lokasi media, protokol dan software untuk mengirim media stream dan data source bisa memberikan informasi kepada player tanpa harus mencari asal dari data source yang akan digunakan. Media data bisa diperoleh dari file lokal, file jaringan ataupun broadcast live internet, data source diklasifikasikan menurut inisialisasi data yang akan ditransfer yaitu: a. Pull data source : Client melakukan inisialisasi terhadap data yang akan ditransfer dan mengotrol data Flow dari sourcenya, sebagai contoh HTTP dan File Server. b. Push data source : Server melakukan inisilisasi terhadap data yang akan ditransfer dan
mengontrol data Flow dari sourcenya, sebagai contoh Broadcast media dan Video on Demand 3. Player Player memperoleh input stream data audio dan video kemudian mengirimnya ke speaker atau layar. Player merupakan interface yang akan mempersiapkan suatu Data Source untuk dipresentasikan. 4. Processor Processor merupakan jenis dari Player. Dalam JMF API, Processor adalah interface dengan extends Player. Seperti halnya Player, Processor juga mendukung untuk kontrol menampilkan media data. Disamping enam langkah Player seperti yang dibahas sebelumnya, Processor memasukkan dua langkah sebelum proses ke Realizing tetapi setelah Unrealized. 1) Configuring : Processor masuk ke tahapan konfigurasi dari Unrealized ketika metode configure dipanggil. Processor berada di Configuring setelah terhubung ke dataSource. 2) Configured : setelah Configuring, Processor pindah ke Configured ketika Processor telah terhubung ke DataSource, dan data telah memiliki format yang telah ditentukan .
DataSink DataSink adalah interface dasar untuk objek yang membaca isi media yang
dikirimkan oleh suatu Data Source dan mengirimkan media tersebut ke beberapa tujuan. Format Format merupakan class yang akan menempatkan suatu objek ke suatu format media yang tepat. Manager Manager adalah interface yang berfungsi sebagai penghubung objek dan mengintegrasikan implementasi interface yang digunakan dengan kelaskelas yang ada. Misalnya dengan Manager dapat dibuat Player dari DataSource. Dalam JMF terdapat empat manager yaitu: - Manager : digunakan untuk membuat Players, Processors, Data Sources, dan Data Sinks. - Package Manager : digunakan untuk memelihara paket registry yang berisi class-class JMF seperti Players, Processors, Data Sources, dan Data Sinks - Capture Device Manager : digunakan untuk memelihara registry yang disediakan oleh Capture Device - PlugIn Manager : digunakan untuk memelihara registry yang disediakan JMF untuk memproses komponen plug-in.
DAFTAR PUSTAKA [1] Nababan, Ferry Heriston. 2011. “Metode Probabilistic Encryption dengan Metode RSA (Rivest-Shamir-Adleman)”. Thesis : Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara [2] Bhagarva, Bharat; (dkk.).1999. “MPEG Video Encryption Algorithms”. Department of Science : Purdue University. [3] Apostolopoulos, John G; (dkk.). 2002. “Video Streaming: Concepts, Algorithms, and Systems”. Mobile and Media Systems Laboratory HP Laboratories Palo Alto HPL-2002260. [4] Munir, Rinaldi. 2006. “Bahan Kuliah IF5054 Kriptografi”. Institut Teknologi Bandung. [Online] Tersedia: http://www.informatika.org/~rinaldi/Kriptografi/Fungsi%20Hash%20dan%20Algoritma %20MD5.pdf [Diakses : 1 Januari 2012] [5] Jaya, Ivan. 2010. “Verifikasi Integritas Data yang Diunduh dari Internet dengan Menggunakan Message Digest 5 (MD5)”. Skripsi : Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara [6] Handojo, Andreas; (dkk.). 2009. “Aplikasi Video Conference dengan Kemampuan Beroperasi pada IPV4 dan IPV6”. Yogyakarta: Seminar Nasional Aplikasi Teknologi Informasi (SNATI) [7] Setiyawan, Ahmad Budi. 2010. “Rancang Bangun RTP Packet-Chunk De-Encapsulator Data AV Stream Format RTP Sebagai Terminal Access Multi-Source Streaming Server”. Skripsi: Jurusan Teknik Telekomunikasi PENS-ITS. [8] Tandawuja, Ferdynand Kesi; (ddk.). 2007. “Implementasi Teknologi Java Media Framework (JMF) Untuk Komunikasi Suara”. Jurnal Informatika Vol.3 No.2 : Fakultas Teknologi Informasi Universitas Kristen Satya Wacana [9] Sun Microsystems, Inc.1999, “Java Media Framework API Guide”, Sun Microsystems, California, http://sun.java.com/jmfguide/pdf. (Diakses : 1 Januari 2012) [10] Kurniawan, Budi. 2001, “Programming Multimedia With JMF”, http://www.javaworld.com/javaworld/jw-04-2001.html. (Diakses : 1 Januari 2012)