Senin, 30 Juni 2014


Serangan Terhadap Kriptografi


Serangan terhadap kriptografi pada dasarnya adalah memecahkan (membongkar keamanan) algoritma kriptografi, yang selanjutnya digunakan untuk usaha mengupas data tersandi tanpa mengetahui/menggunakan kunci. Kegiatan ini (memecahkan algoritma kriptografi) adalah bagian dari kriptanalisis, yaitu ilmu/seni memecahkan data tersandi. Kripanalisis dan kriptografi merupakan sebuah cabang ilmu pengetahuan yang disebut kriptologi. 
Data yang digunakan untuk menyerang sistem kriptografi dapat diurutkan seperti berikut :
1. Hanya diketahui chipertext (teks sandi).
2. Plaintext (teks asli) dan corresponding chipertext diketahui.
3. Plaintext terpilih dan corresponding chipertext.
4. Chipertext terpilih dan corresponding plaintext. 
Metode serangan  
Terdapat beberapa metode melakukan serangan kriptografi yang pada dasarnya berupa metode yang berbasiskan plaintext dan metode yang berbasiskan ciphertext.
1.   Hanya ciphertext yang diketahui : Kriptanalis (orang yang melakukan kripanalisis) hanya memiliki ciphertext tanpa memiliki plaintext-nya. Sebelum melakukan serangan, kripanalis selalu membuat asumsi algoritma sandi yang digunakan dalam ciphertext itu untuk menentukan tehnik memecahkannya.
Tehnik yang digunakan untuk menemukan plaintext/kunci : 
- Analisa frekuensi huruf : setiap bahasa memiliki kekhasan atas haruf-huruf yang digunakannya. Frekuensi kemunculan setiap huruf dalam suatu bahasa menjadi ciri penting yang dapat dipakai sebagai patokan untuk menganalisis plaintext/kunci suatu teks sandi. Tehnik ini umumnya digunakan untuk memecahkan metode penyandian sederhana seperti misalnya kriptografi model Caesar. 
Exhaustive attack /brute-force attack : yaitu tehnik untuk mengungkap plaintext/kunci dengan mencoba secara sistematis semua kemungkinan kunci. Walaupun tehnik ini akan berhasil menemukan plaintext/kunci, namun waktu yang dibutuhkan relatif lama dan sangat bergantung kepada kecepatan mesin (komputer) yang melakukan serangan ini. Tabel berikut memperlihatkan waktu yang dibutuhkan untuk exhaustive key search : 
Ukuran kunci
Jumlah kemungkinan kunci
Lama waktu untuk 106percobaan per detik
Lama waktu untuk 1012percobaan per detik
16 bit
216 = 65536
32.7 milidetik
0.0327 mikrodetik
32 bit
232 = 4.3 ´ 109
35.8 menit
2.15 milidetik
56 bit
256 = 7.2 ´ 1016
1142 tahun
10.01 jam
128 bit
2128 = 4.3 ´ 1038
5.4 ´ 1024 tahun
5.4 ´ 1018 tahun
(Sumber: William Stallings, Data and Computer Communication Fourth Edition) 
Analytical attack : yaitu tehnik memecahkan teks sandi dengan melakukan analisis kelemahan algoritma kriptografinya untuk mengurangi kemungkinan kunci yang memang tidak ada (pasti tidak muncul). 
Dilakukan dengan cara memecahkan persamaan-persamaan matematik (yang diperoleh dari definisi suatu algoritma kriptografi) yang mengandung perubah-perubah yang merepresentasikan plaintext atau kunci. 
Dengan menggabungkan metode analytical attack dan exhaustive attack akan mempercepat diketemukannya plaintext/kunci.  
2.  Ciphertext terpilih : Kripanalis memilih ciphertext, dan kemudian melalui ciphertext itu berusaha untuk mendapatkan plaintext yang sesuai. Biasanya dilakukan untuk menyerang kriptografi sistem kunci publik.  
3.  Plaintext dan ciphertext diketahui : Kripanalis mempunyai baik plaintext maupun ciphertext-nya dan berusaha untuk mencari hubungan diantara keduanya. Biasanya dilakukan untuk menemukan kunci dan algoritma penyandiannya yang akan berguna untuk memecahkan pesan tersandi berikutnya. 
Beberapa pesan biasanya terdapat format baku (template) yang sudah terstruktur. Format baku ini merupakan celah yang membuka peluang untuk menerka ciphertextdari plaintext yang bersesuaian. Misalnya :
From, To, kepada, dari, perihal, di dalam sebuah e-mail
Dengan hormat, wassalam, best regards, pada surat resmi.
#includeprogram, go, di dalam source code 
4.  Plaintext terpilih : Kriptanalis memilih plaintext tertentu, yaitu plaintexts yang lebih mengarahkan ke penemuan kunci, untuk disandikan dan mempelajari/membandingkan hasil sandinya (ciphertext). Biasanya cara ini digunakan untuk memecahkan sandi pada metode penyandian asimetris, yang mana kripanalis biasanya telah memiliki kunci publik-nya. 
Bila diilustrasikan dalam gambar : (gambar diambil dari internet)
5.  Ciphertext atau plaintext diketahui secara adaptif : Kriptanalis memilih blok plaintext atau ciphertext yang besar, lalu disandi, kemudian memilih blok lainnya yang lebih kecil berdasarkan hasil serangan sebelumnya, begitu seterusnya.
6.  Kunci terpilih : Kriptanalis memiliki pengetahuan mengenai hubungan antara kunci-kunci yang berbeda, dan kemudian memilih kunci yang tepat untuk membuka pesan bersandi. Biasanya digunakan untuk mengetahui algoritma penyandian suatu pesan.
7.  Social engineering / rubber-hose cryptanalysis : Mencari informasi algoritma/kunci sandi melalui kegiatan intelijen, mengancam, mengirim surat gelap, memeras (black-mail) atau melakukan penculikan/penyiksaan sampai orang yang memegang kunci memberinya kunci untuk membuka pesan.
Jenis-jenis Serangan
Berdasarkan keterlibatan penyerang dalam melakukan kegiatannya :
1.  Serangan pasif (passive attack) : penyerang tidak terlibat dalam komunikasi antara pengirim dan penerima, penyerang hanya melakukan penyadapan untuk memperoleh data atau informasi sebanyak-banyaknya
Metode yang digunakan dalam melakukan penyadapan ini biasanya wiretapping, electromagnetic eavesdropping atau acoustic eavesdropping
2.  Serangan aktif (active attack) : penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan dirinya. Penyerang mengubah aliran pesan seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang tersimpan, dsb
Metode yang digunakan : 
Man-in-the-middle-attack : Penyerang mengaku seolah-olah sebagai pihak yang berhak menerima pesan atas pesan yang dikirim. Atau sebaliknya penyerang bertindak seolah-olah sebagai pemberi pesan yang asli. 
User A mengirim pesan MMM dengan kunci publik 1234qw kepada user B, namun ditengah transmisi dipotong/diambil oleh man-in-the-middle-attack (mitma). Kemudian mitma mengganti pesan MMM menjadi KKK dengan kunci publik ASD123 kepada user B. User B menerima pesan KKK yang disangka dikirim oleh user A. 
Bila diilustrasikan dalam gambar : (gambar diambil dari internet)
Pengetahuan mengenai serangan terhadap kriptografi sangatlah penting untuk meningkatkan efektifitas dan kualitas algoritma penyandian yang digunakan. Prinsip yang dipakai dalam menentukan penggunaan suatu algoritma kriptografi adalah :
1.  Persamaan matematis yang menggambarkan operasi algoritma kriptografi yang dibuat sangat kompleks sehingga algoritma tidak mungkin dipecahkan secara analitik; atau
2.  Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam ciphertext tersebut; atau
3.  Waktu yang diperlukan untuk memecahkan ciphertext tersebut melampaui lamanya waktu informasi tersebut harus dijaga kerahasiaannya.
-antz-

Sebuah Contoh Penggunaan SMS Broadcast di Restoran atau Cafe

Berkembangnya bisnis makanan membuat semakin banyak restoran-restoran baru dan cafe yang bermunculan, terutama di kota-kota besar seperti Jakarta. Apalagi, mall-mall baru juga semakin banyak yang dibangun, sehingga otomatis banyak juga restoran dan cafe baru yang dibuka di mall tersebut.

Nah, jaman sekarang, bisnis restoran dan cafe juga sudah mulai memanfaatkan layanan SMS broadcast untuk memaintain relationship dengan member atau pelanggannya.

Salah satu contoh penggunaan SMS broadcast yang baru-baru ini saya dapatkan dari salah satu restoran adalah seperti berikut:


Tunjukkan SMS ini dan dapatkan diskon spesial

Cara ini tergolong cukup kreatif dalam memberikan diskon kepada pelanggan. Biasanya, untuk mendapatkan diskon khusus di sebuah restoran, ketentuannya terlalu bertele-tele dan ribet, misalnya harus makan dalam rupiah tertentu baru dapat diskon, harus punya kartu kredit tertentu, harus memiliki voucher dulu, dan sebagainya.

Kalau terlalu ribet, terkadang pelanggan pun malas untuk berpartisipasi. Nah, dengan cara menggunakan SMS broadcast ini, maka untuk mendapatkan diskon pun sangat mudah, yaitu hanya memperlihatkan SMS tersebut.

Kirimkan hanya kepada pelanggan spesial

Tentunya pihak restoran jangan main asal bidik pelanggan yang hendak diberikan diskon. Sebaiknya ditentukan dulu pelanggan-pelanggan seperti apa yang hendak dituju. Umumnya pelanggan yang diberikan diskon spesial adalah pelanggan-pelanggan yang sering berkunjung ke restoran Anda (loyal customers) atau yang telah memiliki jumlah spending yang besar.

Telusuri database yang Anda miliki dan lihat kira-kira member mana yang sering berkunjung ke restoran Anda atau pelanggan mana yang jumlah spendingnya cukup besar.

Kirimkan pada waktu yang tepat

Kapan biasanya tamu-tamu berdatangan ke restoran atau cafe Anda? Apakah pada siang hari pada saat jam makan siang? Atau lebih sering pada saat malam hari?

Dari situ Anda dapat menentukan waktu yang tepat untuk men-triggertamu-tamu tersebut datang ke restoran Anda. Jika restoran Anda biasanya ramai di siang hari dan umumnya dikunjungi orang-orang kantoran, Anda bisa kirimkan SMS blast tersebut pada saat menjelang makan siang.

Siapa tahu, banyak dari mereka yang sedang bingung mencari-cari tempat makan, setelah mendapatkan SMS dari Anda, maka restoran atau cafe Anda-lah yang dipilih. Mudah-mudahan artikel ini bermanfaat bagi Anda. :)

PROGRAM DELPHI MENGGUNAKAN FOR TO DO, DOWNTO DO, REPEAT UNTIL, WHILE DO



Masih membahas Delphi, ketika kita belajar bahasa pemrograman hal yang harus kita pahami adalah algoritma. Ya, sebuah algoritma menentukan akan nasib program yang akan kita buat. Selain itu algoritma merupakan syarat wajib untuk seorang yang suka berkencan dengan programming (Lebay Mode ON). Terus apa hubunganya Program Delphi menggunakan For To Do, DownTo Do, Repeat Until, While Do ? Wah iya ... sampai lupa inti dari posting kali ini apa .. ihiiiir. Baik, dalam posting kali ini kembali saya sediakan source code delphi. Sorce Code ini membahas Program Delphi menggunakan For To Do, DownTo Do, Repeat Until, While Do. Silahkan pelajari, berikut adalah diskripsi singkatnya.


Author : Toto Raharjo
Compiler : Delphi 7
Download Source Code: Klik DISINI
Program memanfaatkan inputBox sebagai media inputan. Program akan menampilkan inputan sesuai dengan syarat For To Do, DownTo Do, Repeat Until, While Do

Kembangkan kreasimu, tetap semangat.
Orang sukses tidak harus pinter, banyak orang pinter bernasib malang. Apa kesimpulanya ? Disiplin dan tekun merupakan kunci sukses.

artikel mengenai delphi dengan contoh program

Pemahaman tentang delphi
Delphi adalah Suatu bahasa pemrograman yang menggunakan visualisasi sama seperti bahasa pemrograman Visual Basic ( VB ) . Namun Delphi menggunakan bahasa yang hampir sama dengan pascal (sering disebut objeck pascal ) . Sehingga lebih mudah untuk digunakan . Bahasa pemrograman Delphi dikembangkan oleh CodeGear sebagai divisi pengembangan perangkat lunak milik embarcadero . Divisi tersebut awalnya milik borland , sehingga bahasa ini memiliki versi Borland Delphi .

     Delphi juga menggunakan konsep yang berorientasi objek ( OOP ) , maksudnya pemrograman dengan membantu sebuah aplikasi yang mendekati keadaan dunia yang sesungguhnya . Hal itu bisa dilakukan dengan cara mendesign objek untuk menyelesaikan masalah . OOP ini memiliki beberapa unsur yaitu ; Encapsulation ( pemodelan ) , Inheritance ( Penurunan ) , Polymorphism ( Polimorfisme ) .

     Awalnya bahasa pemrograman delphi hanya dapat digunakan di Microsoft Windows, namun saat ini telah dikembangkan sehingga dapat digunakan juga di Linux dan di Microsoft .NET . Dengan menggunakan free pascal yang merupakan proyek OpenSource, bahasa pemrograman ini dapat membuat program di sistem operasi Mac OS X dan Windows CE .

     Umumnya delphi hanya digunakan untuk pengembangan aplikasi dekstop, enterprise berbasis database dan program - program kecil . Namun karena pengembangan delphi yang semakin pesat dan bersifat general purpose bahasa pemrograman ini mampu digunakan untuk berbagai jenis pengembangan software . Dan Delphi juga disebut sebagai pelopor perkembangan RadTool ( Rapid Apllication Development ) tahun 1995 . Sehinnga banyak orang yang mulai mengenal dan menyukai bahasa pemrograman yang bersifat VCL ( Visual Component Library ) ini .









CONTOH PROGRAM YG DI BUAT DENGAN
DELPHI
MEMBUAT PROGRAM TEGANGAN KRITIS PADA TAHANAN (RESISTOR) DENGAN DELPHI 7
PENGULANGAN PROSES
Perulangan (loop) memungkinkan Anda mengeksekusi urutan pernyataan secara berulang. Menggunakan sebuah pengontrol  kondisi atau variabel untuk menentukan kapan eksekusi dihentikan. Objek Pascal memiliki tiga jenis pengontrol perulangan statemen REPEAT, statemen WHILE, dan statemen FOR.
Anda dapat menggunakan prosedur standar Break dan Continue untuk mengontrol alur pernyataan Repeat, While, atau For. Dengan Continue memulai pengeksekusian iterasi selanjutnya dari sebuah urutan kode.
 PERULANGAN DENGAN REPEAT
Statemen REPEAT… UNTIL dipakai untuk mengulang proses sampai suatu kondisi tertentu tercapai . Jika kondisi tersebut telah dipenuhi , maka perulangan dihentikan. Sintaksnya sebagai berikut:
 REPEAT  statemen_];….; statemen_n; UNTIL. Ekpresi
 Di mana ekspresi menghasilkan nilai bertipe Boolean. Ekspresi dapat berupa pernyataan perbandingan pernyataan lainnya ( tanda titik koma sebelum UNTIL bersifat optional).
 Statemen Repeat mengerjakan baris-baris kode yang dilingkupinya secara terus-menerus. Mengetes ekpresi setiap kali selesai satu iterasi. Ketika ekpresi bernilai True, statemen Repeat berhenti. Baris kode di dalam statemen Repeat …. Until selalu dieksekusi minimal satu kali karena ekpresi belum dievalusasi hingga iterasi pertama selesai
Contoh berikut menggunakan statemen Repeat:
 K := I mod J;
I := J;
J := K;
Until J = 0;
 Repeat
            Write(‘Enter a value (0..9):’);
            Readln(I);
       Until (I >=0) and (I <=9);
Contoh : Aplikasi Tegangangan Kritis
 Gambar berikut ini memperlihatkan aplikasi yang dipakai utnuk menentukan tegangan kritis pada suatu tahanan listrik (resistor). Misalkan jenis resistor tertentu dengan besar tahanan yang berbeda-beda tetapi tidak boleh dialiri arus lebih dari nilai arus tertentu. Kita ingin mengetahui berapa besar tegangan (format data integer). Yang meyebabkan arus yang mengalir melebihi arus tersebut.
 
                                                                      Gambar 1. Tampilan program sedang proses
 Ikuti langkah berikut untuk membuat aplikasi di atas:
1.    Bukalah projek baru dengan sebuah form. Kemudian tempatkan pada form tiga buah komponen  Label, tiga buah Edit, sebuah Button, dan sebuah ListBox. Selajutnya atur tata letak kompone_komponen tersebut
 
                                                         Gambar 2. Penempatan Komponen form Tegangan Kritis
2.  Ubah beberapa Properti form dan komponen menurut table berikut:
Komponen    Property    Setting
Form    Caption    Tegangan Kritis
    Name    frmTegKritis
Label1    Caption    Besar Tahanan
Label2    Caption    Arus Terbesar yg diperbolehkan
Label3    Caption    Tegangan Kritis

Edit1    Text    (kosongkan)
    Name    edTahanan
    Text    (kosongkan)
    Name    edArusMaks
Edit 3    Text    (kosongkan)
    Name    edTeganganKritis
Button1    Caption    &Proses
    Name    btProses
ListBox1    Name    lsbTeganganArus

                       Tabel 1. Setting property komponen dan form Tegangan Kritis
  3. Lengkapi kode program untuk event OnClick tombol btProses sehingga menjadi sebagai berikut:
 unit FTegangan;
 interface
 uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 type
  TfrmKritis = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    edTahanan: TEdit;
    edArusMaks: TEdit;
    btnProses: TButton;
    edTeganganArus: TEdit;
    Label3: TLabel;
    lsbTeganganArus: TListBox;
    procedure btnProsesClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 var
  frmKritis: TfrmKritis;
 implementation
 {$R *.dfm}
 procedure TfrmKritis.btnProsesClick(Sender: TObject);
var
V: Integer;
I,Imaks,R : Real;
begin
lsbTeganganArus.Items.Clear;
R:=StrToFloat(edTahanan.Text);
Imaks:=StrToFloat(edArusMaks.Text);
V:=0;
Repeat
V:=V+1;
I:=V/R;
lsbTeganganArus.Items.Add(‘V=’+IntToStr(V)+’–>I=’+FloatToStr(I));
Until I>Imaks;
edTeganganArus.Text:=IntToStr(V);
 end;
 end.
 Pada prosedur di atas, perulangan dengan Repaeat dipakai untuk menambah V, menghitung nilai I=V/R, dan menampilkan besar V pada Listbox. Perulangan dihentikan jika arus I telah melebihai nilai arus maksimu Imaks.
4. Simpan projek dengan nama Tegangan.dpr dan UnitnyaFtengangan.pas