Selasa, 09 Desember 2014

Security (Bab 11 SISTEM TERDISTRIBUSI)

KEAMANAN PADA SISTEM TERDISTRIBUSI
Keamanan sering dipandang hanyalah merupakan masalah teknis yang melibatkan dapat atau tidaknya tertembusnya suatu sistem. Keamanan ini sendiri memiliki suatu konsep yang lebih luas yang berkaitan dengan ketergantungan suatu institusi terhadap institusi lainnya. Di dalam aplikasi, suatu pembentukan sistem yang aman akan mencoba melndungi adanya beberapa kemungkinan serangan yang dapat dilakukan pihak lain diantaranya adalah :
1.      Intrusion: penyerangan jenis ini seseorang penyerang akan dapat menggunakan sistem komputer yang kita miliki.
2.      Denail of services: penyerangan ini mengakibatkan pengguna yang sah tidak dapat mengakses sistem.
3.      Joyrider: penyerangan jenis ini disebabkan oleh orang yang merasa iseng dan ingin memperoleh kesenangan dengan cara menyerang suatu sistem.
4.      Vandal: jenis serangan ini bertujuan untuk merusak sistem yang sering dituju untuk site-site besar.
5.      Scorekeeper: jenis serangan ini hanyalah bertujuan untuk mendapatkan reputasi dengan cara mengacak-acak system sebanyak mungkin.
6.      Mata-mata: jenis serangan ini bertujuan untuk memperoleh data atau informsi rahasia dari pihak pesaing. Tujuan utama adanya sistem keamanan adalah untuk membatasi akses informasi dan resources hanya untuk pemakai yang memiliki hak.
Beberapa ancaman keamanan yang dapat mengancam suatu sistem adalah :
1.      Leakgace : pengambilan informasi oleh penerima yang tidak berhak.
2.      Tampering : pengubahan informasi yang tidak legal.
3.      Vandalism : gangguan operasi sistem tertentu, dimana pelaku tidak mengharapkan kuntungan apapun.
Adapun bentuk perancangan sistem yang aman adalah :
1.      Rancangan harus mengikuti standard yang ada
2.      Mendemokan validasi melawan ancaman yang diketahui
3.      Melakukan audit terhadap kegagalan yang terdeteksi
4.      Adanya keseimbangan antara biaya terhadap serangan yang ada
Layanan Keamanan menurut definisi OSI yaitu :
1.      Access control : perlindungan terhadap pemakaian tak legal
2.      Authentication : menyediakan jaminan identitas seseorang
3.      Confidentiality : perlindungan terhadap pengungkapan identitas tak legal
4.      Integrity : melindungi dari pengubahan data yang tak legal
5.      Non-repudiation : melindungi terhadap penolakan komunikasi yang sudah pernah dilakukan.
Tiga dasar mekanisme keamanan yang dibangun :
1.      Enkripsi : digunakan untuk menyediakan kerahasiaan, dapat menyediakan authentication dan perlindungan integritas
2.      Digital signature : digunakan untuk menyediakan authentication, perlindungan integritas
3.      Algoritma checksum/hash : digunakan untuk menyediakan perlindungan integritas dan dapat menyediakan authentication.
Selain itu juga terdapat pula metode-metode penyerangan terhadap suatu sistem. Klasifikasi metode penyerangan tersebut adalah :
1.      Eavesdropping : mendapatkan duplikasi pesan tanpa ijin
2.      Masquerading : mengirim atau menerima pesan menggunakan identitas lain tanpa ijin mereka
3.      Message tampering : mencegat atau menangkap pesan dan mengubah isinya sebelum dilanjutkan ke penerima sebenarnya.
4.      Replaying : menyimpan pesan yang ditangkap untuk pemakaian berikutnya dan mengubah isinya sebelum dilanjutkan kepenerima sebenarnya
5.      Denail of services : membanjiri saluran atau resources dengan pesan yang bertujuan untuk menggagalkan pengaksesan pemakaian lain

Parallel Processing (Bab 10 SISTEM TERDISTRIBUSI)

Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan.


TUJUAN PARALLEL PROCESSING

Tujuan utama dari pemrosesan paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.

PARALLEL PROCESSING

Komputasi paralel
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak.
Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.
Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:
·         SIMD
·         SIMD
·         MISD
·         MIMD
SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
MISD
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:
Penyelesaian Sebuah Masalah pada Komputasi Tunggal
Penyelesaian Sebuah Masalah pada Komputasi Paralel
Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal. Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.
Komputasi paralel membutuhkan :
· algoritma
· bahasa pemrograman
· compiler
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi.
* Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. Kegunaan MPI yang lain adalah
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak
begitu cocok dengan model data paralel.
* Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. Kegunaan MPI yang lain adalah
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak
begitu cocok dengan model data paralel.
Hubungan antara Komputasi Modern dengan Paralel Processing
Hubungan antara komputasi modern dan parallel processing sangat berkaitan, karena penggunaan komputer saat ini atau komputasi dianggap lebih cepat dibandingkan dengan penyelesaian masalah secara manual. Dengan begitu peningkatan kinerja atau proses komputasi semakin diterapkan, dan salah satu caranya adalah dengan meningkatkan kecepatan perangkat keras. Dimana komponen utama dalam perangkat keras komputer adalah processor. Sedangkan parallel processing adalah penggunaan beberapa processor (multiprocessor atau arsitektur komputer dengan banyak processor) agar kinerja computer semakin cepat.
Kinerja komputasi dengan menggunakan paralel processing itu menggunakan dan memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat daripada menggunakan satu komputer saja. Komputasi dengan paralel processing akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masing-masing CPU tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini untuk masalah yang besar saja, komputasi yang masalah kecil, lebih murah menggunakan satu CPU saja.

Distributed Database Management (Bab 9 SISTEM TERDISTRIBUSI)

DATABASE TERDISTRIBUSI
Sebuah sistem database terdistribusi berisikan sekumpulan site, di mana tiap-tiap site dapat berpartisipasi dalam pengeksekusian transaksi-transaksi yang mengakses data pada satu site atau beberapa site. Tiap-tiap site dapat memproses transaksi lokal yaitu sebuah transaksi yang mengakses data pada satu site di mana transaksi telah ditentukan.
Ada 2 aspek penting dari DDB :
1.      Distribusi : data tidak disimpan pada tempat (prosesor) yang sama,
sehingga DDB dapat dibedakan dari database tunggal, sentralisasi
2.      Korelasi logika : data memiliki property yang berhubungan sehingga DDB
dapat dibedakan dari sekumpulan database local atau file yang disimpan
pada tempat yang berbeda pada jaringan komputer.
Site-site dalam database terdistribusi dihubungkan secara fisik dengan berbagai cara. Beberapa topologi digambarkan sebagai sebuah graph yang simpulsimpulnya bersesuaian dengan site. Sebuah edge dari simpul A ke simpul B bersesuaian dengan sebuah hubungan langsung antara dua site. Beberapa konfigurasi (bentuk) digambarkan sebagai berikut:
Fully Connected network :
Keuntungan : kalau salah satu node rusak, yang lainnya masih dapat berjalan (tetapi biaya mahal).
Kerugian : control management tidak terjamin
Partially connected network :
Keuntungan : reliability rendah, biaya dapat ditekan
Kerugian : control management tidak terjamin
Tree structure network :
Keuntungan : bersifat sentral, control management lebih terjamin
Kerugian : kalau node pusat (A) rusak, semua akan rusak.
Cat : setiap proses dimulai dari bawah.
Ring Network (LAN) :
Keuntungan : rusak satu, yang lain masih berjalan
Kerugian : Control management kurang terjamin karena bersifat desentralisasi
Star Network (LAN) :
Keuntungan : – control management lebih terjamin, karena bersifat sentral
- reliability rendah
Kerugian : kalau pusat rusak, yang lainnya rusak
PERANCANGAN DATABASE TERDISTRIBUSI
Alokasi data
Ada beberapa alternatif dasar untuk menyimpan atau menempatkan data : partisi dan replikasi. Dalam skema partisi, database dibagi ke dalam sejumlah partisi yang disjoin yang masing2 ditempatkan di site yang berbeda. Perancangan replikasi dibedakan atas fully replication atau fully duplicated dimana seluruh database ditempatkan di masing2 site, atau partially replicated yaitu masing2 partisi dari database disimpan di lebih dari satu site tetapi tidak di semua site.
Ada 2 perancangan dasar yaitu fragmentasi, pemisahan database ke dalam
partisi2, disebut fragment, dan distribusi.

Share Data & Transaction (Bab 8 SISTEM TERDISTRIBUSI)

Shared Data
Dalam sistem terdistribusi, shared data dapat di artikan sebagai beberapa komputer yang berbeda saling terhubung satu sama lain melalui jaringan sehingga komputer yang satu dapat mengakses dan menggunakan sumber daya yang terdapat dalam situs lain.
Pengaksesan resource pada sistem terdistribusi yang memerlukan:
·         Nama resource (untuk pemanggilan)
·         Alamat (lokasi resource tersebut)
·         Rute (bagaimana mencapai lokasi tersebut)
Keuntungan Shared Data :
1.      Mengurangi biaya duplikasi usaha pengumpulan data
2.      Aman-menjaga data dalam lingkungan yang aman
3.      Back-up data
Transaksi (Transaction)
Merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data.
Jenis –Jenis Transaksi :
·         Flat Transaction.
·         Nasted Transaction.
Kesimpulan
·         Share data
Merupakan pemakaian file data tunggal oleh ebih dari satu orang atau komputer, atau suatu akses yang diberikan kepada orang lain untuk mengkases data tersebut, mempunyai tujuan untuk berbagi akses kepada user lain pada suatu folder atau drive yang diinginkan, dimana kita bisa memilih kepada user mana saja yang bisa atau boleh mengakses folder kita dan juga bisa memberikan akses kepada semua orang yang ada pada jaringan/network.
·         Transaksi terdistribusi
merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data.

Time & Coordination (Bab 7 SISTEM TERDISTRIBUSI)

Time
Time adalah pengembangan dari sistem multiprogram. Time juga disebut dengan sistem komputasi interaktif, dimanasistem komputer menyediakan komunikasi on-line antara user dengan sistem.
Coordination
Sekumpulan algoritma yang tujuannya bermacam-macam namun men-share tujuannya, sebagai dasar dalam sistem terdistribusi : berupa sekumpulan proses untuk mengkoordinasikan tindakan atau menyetujui satu atau beberapa nilai.
Logical Clock
Hampir seluruh komputer memiliki sebuah circuit untuk menunjukan waktu. Pada kenyataannya circuit tersebut bukanlah penunjuk waktu (jam) yang sebenarnya. Kata yang tepat untuk mendeskripsikan circuit tersebut adalah timer. Dapat membuat mekanisme pewaktuan sederhana yaitu pengurutan kejadian-kejadian berdasarkan pada nilai-nilai clock yang mengikat yang dijamin konsisten dengan keterdahuluan sebab.
Synchrounous distributed system
·         Dalam synchronous distributed system terdapat satu waktu global.
·         Hanya synchronous distributed system dapat memprediksi perilaku (waktu).
·         Dalam synchornous distributed system dimungkinkan dan aman untuk menggunakan mekanisme timeout dalam mendekteksi error atau kegagalan dalam proses atau komunikasi.
·         Contohnya digunakan pada floopy, artinya ketika anda menyalin sebuah file ke floopy, perubahan secara fisik langsung ditulis ke floppy saat anda memberikan perintah copy
Asynchronous Distributed System
·         Tidak ada batasan dalam waktu
·         Tidak ada batasan dalam delay transmission (penundaan pengiriman)
·         Tidak ada batasan terhadap fuktuasi waktu local.
Perbandingan asinkron dan sinkron
·         Untuk blok-blok data yang cukup besar, transmisi sinkronisasi jauh lebih efisien daripada asinkron. Transmisi asinkron memerlukan overhead 20 % atau lebih.
·         Bila menggunakan transmisi sinkron biasanya lebih kecil dari 1000 bit, yang mengandung 48 bit kontrol informasi (termasuk flag), maka untuk pesan 1000 bit, overheadnya adalah 48 / 1048 X 100% = 4.6%

Name Service (Bab 6 SISTEM TERDISTRIBUSI)

Name Service dalam Sistem Terdistribusi merupakan layanan penamaan yang berfungsi untuk menyimpan naming context, yakni kumpulan binding nama dengan objek, tugasnya untuk me-resolve nama. Name Service memiliki konsentrasi pada aspek penamaan dan pemetaan antara nama & alamat, bukan pada masalah rute, yang dibahas di Jaringan Komputer. Resource yang dipakai dalam Name Service adalah: komputer, layanan, remote object, berkas, pemakai.
Contoh penamaan pada aplikasi sistem terdistribusi:
·         URL untuk mengakses suatu halaman web.
·         Alamat e-mail utk komunikasi antar pemakai.
Tujuan Penamaan
1.      Identifikasi
Seorang pemakai menginginkan obyek/layanan A, bukan obyek/layanan B.
2.      Memungkinkan terjadinya sharing
Lebih dari satu pemakai dapat mengindentifikasikan resource dengan nama yangsesuai (tidak harus nama yang sama).
3.      Memungkinkan location independence:
Perubahan lokasi tidak menuntut perubahan nama, asalkan lokasi tidak menjadi bagian dari nama resource tsb.
4.      Memberikan kemampuan keamanan (security)
Jika sebuah nama dipilih secara acak dari himpunan besar interger, maka nama tsb hanya bisa diketahui dari legitimate source, bukan dari menebak. Jadi jika seseorang mengetahui nama obyek tsb, maka dia memang diberitahu, karena sulit sekali menebak nama tsb.
Jenis Nama
1.      User names:
·         Dibuat oleh pemakai (user).
·         Merujuk pada suatu obyek atau layanan.
·         Terdiri dari strings of characters.
·         Contoh: hp201 untuk pencetak, ~bettyp/tmp/test.c untuk berkas.
2.      System names:
·         Terdiri dari bit string.
·         Internal untuk sistem, tidak ditujukan untuk manusia.
·         Lebih compact dari user names, sehingga dapat dibandingkan dengan lebih efisien.
Struktur Nama
1.      Primitive/flat names (Unique Identifiers = UIDs)
·         Tanpa struktur internal, hanya string of bits.
·         Digunakan utk perbandingan dengan UID lain.
·         Tidak membawa informasi lain -> pure names.
·         Sangat berguna & banyak digunakan karena:
Ø  Location & application independent, sehingga tidak menjadi masalah bagi mobilitas obyek.
Ø  Seragam, fixed size.
Ø  Compact: mudah disimpan, di-pass, & jika cukup besar menjadi sulit ditebak.
2.      Partitioned Names (PN)
·         Komposisi dari beberapa nama primitif, biasanya disusun secara hirarkis.
·         Contoh: telaga.cs.ui.ac.id, /cs/docs/akademik/SisDis/naming.ppt.
·         Membawa informasi -> impure names.
·         Biasanya tidak secara unik mengidentifikasikan obyek, beberapa nama bisa dipetakan ke satu obyek (e.g. UNIX file links).
3.      Descriptive names (DN)
·         Daftar atribut yang secara bersama-sama mengidentifikasikan obyek secara unik.
·         Membawa informasi -> inpure names.
·         DN adalah superset dari PN.
Contoh Name Service
1.      DNS (Domain Name Service) – memetakan nama domain ke alamat
2.      GNS (Global Name Service)
·         memetakan global name ke atribut-atribut
·         skalabilitas, dapat menangani perubahan
3.      X500 directory service
·         memetakan nama orang ke dalam alamat suatu e-mail dan nomor telepon
4.      Jini discovery service
·         mencari objek sesuai dengan atribut yang ada