Lowongan Kerja

Info Lowongan Kerja
Thursday, February 18, 2010

Jeruk Nipis


Kulit Putih & Halus dengan Jeruk Nipis

BANYAK manfaat yang bisa diambil dari jeruk nipis. Salah satunya adalah membuat kulit menjadi putih dan halus. Manfaat ini tentu menjadi berita gembira bagi kaum hawa yang mendambakan kulit putih dan halus. Bagaimana memanfaatkannya, apa khasiat lain dari jeruk nipis?

Di antara 1300 jenis jeruk, jeruk nipis atau yang dalam bahasa ilmiahnya disebut Citrus Aurantium, memiliki manfaat yang paling banyak. Jeruk nipis merupakan bahan dasar ramuan obat kecantikan tradisional di Indonesia. Hampir semuanya mencantumkan nama jeruk nipis sebagai bahan dasar, baik buah maupun daunnya.

Secara umum, buah jeruk kaya akan vitamin dan mineral yang baik untuk kesehatan tubuh. Dalam kandungan 100 g jeruk nipis, terdapat kalori 51 kal, protein 0,9 g, lemak 0,2 g, karbohidrat 11,4 g, mineral 0,5 g, kalsium 33 mg, fosfor 23 mg, besi 0,4 mg dan asam askorbat 49 mg.

Selain memiliki kandungan vitamin C yang tinggi, jeruk nipis juga mengandung asam sitrat, asam amino (triptofan, lisin), minyak atsiri (sitral, limonen, felandren, lemon kamfer, kadinen, gerani-lasetat, linali-lasetat, aktilaldehid, nildehid) damar, glikosida, asam sitrun, lemak, kalsium, fosfor, besi, belerang vitamin B1 dan C. Sedangkan daun, buah dan bunganya mengandung minyak terbang.

Rasa jeruk nipis yang masam bisa membantu membersihkan nikotin yang terdapat pada gigi dan mulut orang yang suka merokok. Di Indonesia jeruk nipis sering dimanfaatkan untuk mengatasi berbagai macam penyakit seperti disentri, sembelit, ambeien, haid tak teratur, difteri, jerawat, kepala pusing atau vertigo, suara serak, batuk, bau badan, menambah nafsu makan, mencegah rambut rontok, ketombe, flu, demam, terlalu gemuk, amandel, penyakit anyang-anyangan (kencing terasa sakit), mimisan, dan radang hidung.

Jeruk nipis juga efektif mencegah timbulnya batu ginjal. Jeruk nipis mengandung sitrat yang tinggi, sementara banyak penderita batu ginjal memiliki kadar sitrat yang rendah. Kandungan sitrat jeruk nipis lokal (citrus aurantifolia swingle yang bulat) sepuluh kali lebih besar dibanding kandungan sitrat pada jeruk keprok atau enam kali lipat dari jeruk manis. Kandungan sitratnya mencapai 55,6 gram per kilogramnya.
Memutihkan Kulit

Menusia memiliki warna kulit yang tidak sama satu sama lain. Selain faktor genetik, ada juga beberapa faktor lain, seperti iklim dan cuaca. Kulit wajah adalah bagian yang paling penting, khususnya bagi kaum wanita. Karena itu, kaum wanita melakukan beberapa upaya untuk membuat kulit wajah menjadi putih bersih dan menarik.

Semula, baik kedokteran maupun di salon kecantikan, memutihkan kulit dilakukan dengan cara pengelupasan sel-sel mati oleh produk dengan bahan-bahan aktif. Menurut dr Irma Bernadette Simbolon MD, Kepala Divisi Dermatologie Kosmetik Cempaka Rumah Sakit Cipto Mengunkusumo, hanya dengan mengkonsumsi dan membalur tubuh (bagian-bagian tertentu pada tubuh) dengan jeruk nipis, kulit menjadi lebih putih.

"Selain kaya gizi, jeruk juga kaya akan zat kimia seperti bioflanid, minyak atsiri limonen, asam sitrat, linalin asetat, dan fellandren yang dapat menyembuhkan penyakit batuk, menurunkan demam, meningkatkan gairah seksual, dan membuat suara merdu. Salah satu manfaat jeruk nipis di bidang kecantikan adalah kandungan vitamin C yang dapat membuat kulit menjadi putih, halus, dan kencang," ungkapnya.

Buah ini memiliki kandungan vitamin C yang bermanfaat sebagai antioksidan. Vitamin C yang memiliki ikatan L dalam setiap molekulnya, bagus untuk mencerahkan warna kulit. "Jeruk nipis juga memenuhi syarat sebagai buah untuk merawat dan menambah kecantikan," tambah wanita yang akrab disapa Irma ini.

Dilanjutkan dr Irma, untuk mendapatkan kulit wajah yang putih dan halus, ada dua cara yang dapat dilakukan. "Untuk memutihkan dan menghaluskan kulit serta memperkecil pori-pori, bisa dilakukan dengan dua cara. Pertama dengan cara mengkonsumsinya. Karena dengan mengkonsumsi jeruk, kandungan vitamin C yang diserap oleh tubuh akan lebih maksimal. Kedua, menggunakan jeruk nipis dari luar dengan mengusapkan potongan jeruk nipis pada wajah dan kulit bagian tubuh yang dinginkan secara rutin setiap hari," jelasnya.

Bagi Anda yang ingin terlihat ramping, khasiat jeruk nipis juga dapat dicoba. Setiap pagi, siang dan malam, cobalah minum perasan air jeruk nipis dengan campuran air dan sedikit gula. Dengan cara ini, kerampingan Anda akan terjaga. Selain itu, jeruk nipis dapat mencegah Anda dari berbagai macam penyakit seperti yang diuraikan di atas. Sementara untuk rambut, jeruk nipis juga dapat menghilangkan ketombe.
http://lifestyle.okezone.com 

Bermula dari pertanyaan seseorang mengenai bagaimana belajar PHP, maka saya tuliskan beberapa langkah dibawah ini sebagai panduan untuk mempelajari PHP. Semoga bermanfaat.
Catatan: database yang digunakan adalah MySQL.

  1. PHP sebagai server side scripting secara umum digunakan untuk membuat situs dinamis atau aplikasi berbasis web. Jadi langkah awal untuk mempelajari PHP adalah menguasai HTML terlebih dahulu. Tanpa penguasaan HTML dasar, rasanya PHP kurang bermanfaat untuk dipelajari.Links untuk belajar HTML

  2. PHP adalah bahasa pemrograman, artinya untuk menguasai PHP haruslah mengerti algoritma. Minimal yang harus diketahui untuk hal ini adalah apa dan bagaimana menggunakan variable, kondisi atau pencabangan, perulangan dan sub-rutin untuk menyelesaikan suatu masalah. Saat ini sudah banyak buku yang membahas mengenai algoritma dan pemrograman, silakan cari dan pilih sendiri.
  3. Install Apache, PHP dan MySQL pada PC Anda. Saya menyarankan untuk tidak menggunakan installer yang instant (seperti PHPTriad, Wampserver, e-novative dsb), tetapi lebih baik belajar dan mencoba menginstallnya satu demi satu diawali dari Apache, lalu PHP dan MySQL.Link panduan menginstal Apache, PHP dan MySQL

  4. Setelah langkah 1 & 2 sudah dipelajari dan sudah dimengerti (meskipun hanya sedikit) dan langkah 3 sudah bisa Anda lalui. Langkah berikutnya adalah mempelajari sintaks-sintaks dari PHP dan Anda wajib memiliki atau mendownload file Help PHP.Link untuk belajar PHP

  5. Coba untuk membuat form isian sederhana menggunakan PHP beserta HTML yang telah dikuasai. Lalu, tambahkan fitur validasi untuk beberapa atau semua data sehingga tidak boleh kosong saat submit ditekan.Links Tutorial membuat form

  6. Pelajari juga teknik session dan atau cookies. Ini penting dan sangat sering digunakan dalam pembuatan situs dinamis atau aplikasi berbasi web. Pada langkah ini, minimal Anda bisa membuat halaman login dengan user dan password yang masih ditulis secara hardcode dalam script.Links tutorial session dan cookies

  7. Langkah berikutnya adalah mempelajar seluk beluk mengenai database seperti apa itu database, table, record, field dsb. Download dan pergunakan phpMyAdmin untuk mencoba membuat database, table dan field-fieldnya.
  8. Pelajari SQL khusus untuk empat perintah dasar yaitu SELECT, INSERT, UPDATE dan DELETE. Perintah SELECT adalah perintah SQL yang paling kompleks karena meliputi klausa JOIN (INNER/OUTER), WHERE, GROUP BY, HAVING, ORDER BY dan LIMIT (limit adalah klausa yang diperkenalkan MySQL).Link tutorial SQL

  9. Setelah perintah SQL bisa Anda mengerti (syukur-syukur menguasai), maka pelajari bagaimana PHP berinteraksi dengan MySQL. Pada langkah ini, Anda diharuskan menguasai fungsi-fungsi wajib sehubungan dengan MySQL, yaitu mysql_connect_db, mysql_select_db, mysql_query dan mysql_fetch_object / mysql_fetch_array.Download Help MySQL.
  10. Sampai disini, coba untuk membuat script sederhana untuk input data menggunakan form. Data yang diinput melalui form disimpan dalam database (INSERT). Lalu buat juga script untuk menampilkan data-data yang telah tersimpan dalam database (SELECT). Selanjutnya, buat fasilitas untuk mmenghapus (DELETE) dan mengedit data (UPDATE).
  11. Coba membuat halaman login dimana user dan passwordnya dibaca dari database
  12. Coba gabungkan karya nomor 10 dan 11 sehingga hanya mereka yang login saja yang bisa menghapus/mengedit data.
  13. Sampai disini, Anda bisa dikatakan sudah sampai pada tahap beginner. Selanjutnya banyak-banyaklah bereksperimen dengan membuat proyek-proyek kecil minimal untuk kesenangan Anda sendiri. Saat Anda mengerjakan proyek, disanalah pelajaran demi pelajaran bisa Anda dapat dari berbagai masalah yang muncul.
  14. Selanjutnya, Anda harus mulai mempelajari masalah security seperti masalah Code/SQL Injection, session hijacking, session fixation, teknik enkripsi dsb.
  15. Sempatkan untuk belajar Javascript saat Anda merasa kemampuan PHP yang dimiliki sudah lumayan. Kelemahan dari script PHP adalah tidak dimungkinkannya interaksi pengguna secara on the fly. Nah, kekurangannya inilah yang di “tambal” menggunakan Javascript. Syukur-syukur Anda bisa menguasai AJAX.Link tutorial Javascript

  16. Sempatkan pula untuk mempelajari CSS. Ini penting untuk membuat tampilan/interface situs atau web-based application secara lebih baik.Link tutorial CSS:

  17. Terakhir. Karena PHP lebih banyak hidup di OS Linux, pelajari juga linux barang sedikit. Syukur-syukur kalo Anda ternyata sejak awal belajar di linux
TIPS:
  • Jangan terlalu memaksakan untuk menghapalkan fungsi, sintaks dari PHP atau MySQL. Manfaatkan file HELP dalam praktek dan latihan. Semakin Anda sering praktek dan melatih diri, maka fungsi dan sintaks yang sering dipakai akan bisa Anda hapal dengan sendirinya.
  • Jangan terlalu cepat untuk mengambil keputusan untuk bertanya terhadap masalah atau kesulitan yang timbul. Bertanyalah setelah Anda mencoba terlebih dahulu.
  • Rajin-rajin mengikuti milis atau forum dan selalu ingat, diatas langit ada langit ;)
Related posts:
  1. Membuat Aplikasi PHP Yang Aman Bag. 2
  2. Dua Minggu Belajar Delphi 2006
  3. MyDAC (Data Access Component for Delphi)
  4. Delphi for PHP
  5. Membuat Aplikasi PHP Yang Aman Bag. 1

Wednesday, February 10, 2010

Kriptografi

Pengenalan Kriptografi

Catatan
Tulisan ini dimaksudkan sebagai pengantar bagi Anda yang berminat mendalami bidang kriptografi, dan tulisan ini bukanlah sebuah referensi lengkap tentang kriptografi. Untuk mempelajari kriptografi lebih lanjut silakan Anda lihat pada bagian Sumber Informasi Lebih Lanjut tentang Kriptografi. Bila ada saran ataupun kritik tentang tulisan ini, silakan layangkan ke email penulis.

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
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 FTP
http://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.

Teknik Kompilasi

Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran.

Dalam melakukan proses penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin ditemukannya. Proses penerjemahan yang dilakukan oleh kompilator ini disebut proses kompilasi (compiling).

Bila dipandang sepintas lalu, maka akan timbul beranekaragam kompilator yang dapat dibuat,
- Bahasa Sumber seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program DBASE, SPSS dan lain sebagainya.
- Bahasa Sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan lain sebagainya atau Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber komputer besar maupun komputer super.

Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai ditemukannya komputer pada awal 1950-an.

Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah.

Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat.

Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang dilakukan oleh 18 orang.

Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.


Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian analisis dan bagian sintesis.

- Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari program sumber.
Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree) Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan
Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu
a. Proses analisis leksikal
b. Proses analisis sintaktik
c. Proses analisis semantik

- Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis.
Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu
a. Proses yang menghasilkan kode (code generator)
b. Proses optimasi kode (code optimizer)

Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan ini tiap bagian utama akan berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam bahasa sumber.

Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah.

Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapan-ungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti pendefinisian makro dan lain sebagainya.

Sistem pakar adalah suatu program komputer yang mengandung pengetahuan dari satu atau lebih pakar manusia mengenai suatu bidang spesifik. Jenis program ini pertama kali dikembangkan oleh periset kecerdasan buatan pada dasawarsa 1960-an dan 1970-an dan diterapkan secara komersial selama 1980-an. Bentuk umum sistem pakar adalah suatu program yang dibuat berdasarkan suatu set aturan yang menganalisis informasi (biasanya diberikan oleh pengguna suatu sistem) mengenai suatu kelas masalah spesifik serta analisis matematis dari masalah tersebut. Tergantung dari desainnya, sistem pakar juga mamupu merekomendasikan suatu rangkaian tindakan pengguna untuk dapat menerapkan koreksi. Sistem ini memanfaatkan kapabilitas penalaran untuk mencapai suatu simpulan.
[sunting] Skema Penerapan dalam suatu organisasi:

* Case-based reasoning (CBR) yang merupakan representasi pengetahuan berdasarkan pengalaman termasuk kasus dan solusinya
* Rule-base reasoning (RBR) mengandalkan serangkaian aturan-aturan yang merupakan representasi dari pengetahuan dan pengalaman karyawan (manusia) dalam memecahkan kasus yang rumit.
* Model-based reasoning (MBR) melalui representasi pengetahuan dalam bentuk atribut, perilaku antar hubungan maupun simulasi proses terbentuknya pengetahuan.
* Constraint-Satisfaction Reasoning yang merupakan perpaduan antara RBR & MBR.

[sunting] Pranala luar

* (en) The difference between an Expert system and business rules management system
* (en) What Is An Expert System?
* (en) Expert System Vendors

Nuvola apps mycomputer.png Artikel bertopik komputer ini adalah sebuah rintisan. Anda dapat membantu Wikipedia dengan mengembangkannya.