2 BAB II DASAR TEORI 2.1 Enkripsi dan Dekripsi Teknologi enkripsi yang dulunya hanya dapat diakses oleh dunia militer namun kini telah pula dapat digunakan oleh kalangan non militer. Hal ini membawa dampak semakin banyak digunakannya enkripsi sebagai salah satu cara mengamankan data. Enkripsi adalah suatu proses untuk menyamarkan sebuah pesan (message) sedemikian rupa untuk menyembunyikan pesan aslinya dengan menggunakan sebuah kunci. Dekripsi adalah kebalikan dari enkripsi, yaitu proses pengembalian sebuah pesan terenkripsi menjadi pesan aslinya. Pada enkripsi dikenal dua buah istilah penting, yaitu plaintext dan ciphertext. Plaintext adalah pesan yang dienkripsi, sedangkan ciphertext adalah pesan hasil enkripsi. Plaintext biasa disimbolkan sebagai M (Message) atau P (Plaintext), yang dapat berupa suatu aliran bit, berkas teks, berkas bitmap, berkas suara digital, ataupun berkas video digital. Sejauh yang diketahui komputer, M adalah data biner. Sedangkan ciphertext biasanya disimbolkan sebagai C (Ciphertext), dan juga merupakan data biner. Jika enkripsi disimbolkan sebagai fungsi E (Encryption) dan dekripsi disimbolkan sebagai fungsi D (Decryption), maka dengan menggunakan notasi matematika, enkripsi dan dekripsi dapat ditulis sebagai berikut : E(P) = C D(C) = P Proses enkripsi dan dekripsi pada plaintext dan ciphertext dapat dilihat pada Gambar 2.1 7 8 Gambar 2.1 Proses enkripsi dan dekripsi pada plaintext dan ciphertext 2.1.1 Algoritma dan Kunci Kriptografi2 menggunakan kunci (key) untuk melakukan proses enkripsi dan dekripsi. Dengan demikian algoritma kriptografi (cipher) yang digunakan dapat dipublikasikan. Kunci (disimbolkan sebagai K) pada kriptografi berupa satu nilai dari sejumlah bilangan yang banyak jumlahnya. Daerah jangkauan nilainilai kunci yang mungkin disebut keyspace. Dengan adanya penggunaan kunci, maka notasi matematika untuk fungsi enkripsi dan dekripsi dapat ditulis sebagai berikut : EK(M) = C DK(C) = M Gambar 2.2 memperlihatkan proses enkripsi dan dekripsi dengan menggunakan kunci. Gambar 2.2 Proses dekripsi dan enkripsi dengan kunci 1 Pada kriptografi, kunci yang dimasukkan pemakai (user key) sering dinyatakan sebagai sebuah password ataupun sebagai sebuah passphrase. Penggunaan passphrase untuk menyatakan suatu kunci pemakai lebih baik daripada menggunakan password4, karena passphrase umumnya memiliki ukuran yang 9 tidak dibatasi dan dapat berupa kalimat sehingga mudah diingat oleh pemakai. Sementara password umumnya memiliki ukuran yang tetap. Berdasarkan penggunaan kunci untuk proses enkripsi dan dekripsinya, algoritma kriptografi dapat dibedakan menjadi dua yaitu: symmetric algorithm (secret key algorithm) dan asymmetric algorithm (public key algorithm). • Symmetric Algorithm Symmetric algorithm atau disebut juga secret key algorithm adalah algoritma yang kunci enkripsinya dapat dihitung dari kunci dekripsi dan begitu pula sebaliknya, kunci dekripsi dapat dihitung dari kunci enkripsi. Pada sebagian besar symmetric algorithm kunci enkripsi dan kunci dekripsi adalah sama. Symmetric algorithm memerlukan kesepakatan antara pengirim dan penerima pesan pada suatu kunci sebelum dapat berkomunikasi secara aman. Keamanan symmetric algorithm tergantung pada rahasia kunci. Pemecahan kunci berarti memungkinkan setiap orang dapat mengenkripsi dan mendekripsi pesan dengan mudah. Symmetric algorithm dapat dikelompokkan menjadi dua jenis, yaitu stream cipher dan block cipher. Stream cipher beroperasi bit per bit (atau byte per byte) pada satu waktu. Sedangkan block cipher beroperasi per kelompokkelompok bit yang disebut blok (block) pada satu waktu. • Asymmetric Algorithm Asymmetric algorithm atau disebut juga public key algorithm didesain agar memudahkan dalam distribusi kunci yang digunakan untuk enkripsi dan dekripsi. Kunci dekripsi pada public key algorithm secara praktis 10 tidak dapat dihitung dari kunci enkripsi. Algoritma ini disebut “public key” karena kunci dapat dibuat menjadi publik. Setiap orang dapat menggunakan kunci enkripsi untuk mengenkripsi pesan, tetapi hanya orang yang memiliki kunci dekripsi yang dapat mendekripsi pesan tersebut. Pada sistem ini kunci enkripsi sering disebut kunci publik (public key), dan kunci dekripsi disebut kunci rahasia (private key). 2.1.2 One-Way Hash Function Suatu hash function adalah sebuah fungsi matematika, yang mengambil sebuah panjang variabel string input, yang disebut pre-image dan mengkonversikannya ke sebuah string output dengan panjang yang tetap dan biasanya lebih kecil, yang disebut message digest5. Hash function digunakan untuk melakukan fingerprint pada pre-image, yaitu menghasilkan sebuah nilai yang dapat menandai (mewakili) pre-imagebsesungguhnya. Fungsi hash satu arah (one-way hash function) adalah hash function yang bekerja satu arah, yaitu suatu hash function yang dengan mudah dapat menghitung hash value dari pre-image, tetapi sangat sukar untuk menghitung pre-image dari hash value. Sebuah fungsi hash satu arah, H(M), beroperasi pada suatu pre-image pesan M dengan panjang sembarang, dan mengembalikan nilai hash h yang memiliki panjang tetap. Dalam notasi matematika fungsi hash satu arah dapat ditulis sebagai: h = H(M), dengan h memiliki panjang b 11 Ada banyak fungsi yang mampu menerima input dengan panjang sembarang dan menghasilkan output dengan panjang tetap, tetapi fungsi hash satu arah memiliki karakteristik tambahan yang membuatnya satu arah6 : Diberikan M, mudah menghitung h. Diberikan h, sulit menghitung M agar H(M) = h. Diberikan M, sulit menemukan pesan lain, M', agar H(M) = H(M'). Dalam dunia nyata, fungsi hash satu arah dikembangkan berdasarkan ide sebuah fungsi kompresi. Fungsi satu arah ini menghasilkan nilai hash berukuran n bila diberikan input erukuran b. Input untuk fungsi kompresi adalah suatu blok pesan dan hasil blok teks sebelumnya(Gambar 2.3). Sehingga hash suatu blok M, adalah hi = f(Mi,hi-1) dengan hi = nilai hash saat ini. Mi = blok pesan saat ini. hi-1 = nilai hash blok teks sebelumnya. Gambar 2.3 Proses one-way hash function One-way hash function yang digunakan di sini (MD5) menghasilkan hash value berukuran 128-bit. Namun bila dalam aplikasinya diperlukan hash value berukuran lebih dari 128 bit 12 dapat digunakan metode berikut untuk menghasilkan hash value yang lebih besar : a. Buat hash value dari sebuah pesan, menggunakan sebuah one way hash function. b. Tambahkan sebuah string ke dalam pesan. c. Buat hash value dari penggabungan (concatenation) pesan dan string itu. d. Buat hash value yang lebih besar yang berisi gabungan antara hash value yang dihasilkan dari langkah (1) dengan hash value yang dihasilkan dari langkah (3). e. Ulangi langkah (1) sampai (3) sebanyak yang diinginkan. 2.1.3 Algoritma Rijndael Algoritma Rijndael adalah pemenang sayembara terbuka yang diadakan oleh NIST (National Institute of Standards and Technology) untuk membuat standard algoritma kriptografi yang baru sebagai pengganti Data Encryption Standard (DES). DES sudah dianggap tidak aman terutama karena panjang kunci yang relative pendek sehingga mudah dipecahkan menggunakan teknologi saat ini. Algoritma Rijndael menggunakan substitusi, permutasi, dan sejumlah putaran yang dikenakan pada tiap blok yang akan dienkripsi/dekripsi. Untuk setiap putarannya, Rijndael menggunakan kunci yang berbeda. Kunci setiap putaran disebut round key. Tetapi tidak seperti DES yang berorientasi bit, Rijndael beroperasi dalam orientasi byte sehingga memungkinkan untuk implementasi algoritma yang efisien ke dalam software dan hardware. Ukuran blok untuk algoritma Rijndael adalah 128 bit (16 byte). 13 Algoritma Rijndael dapat mendukung panjang kunci 128 bit sampai 256 bit dengan step 32 bit. Panjang kunci berpengaruh pada jumlah putaran yang dikenakan pada tiap blok. Misalnya, untuk ukuran blok dan panjang kunci sebesar 128 bit ditentukan 10 putaran, sedangkan untuk ukuran blok 128 bit dan panjang kunci 256 bit jumlah putaran yang ditentukan adalah 14 putaran. Algoritma Rijndael mempunyai 3 parameter sebagai berikut: 1. plainteks: array yang berukuran 16 byte, yang berisi data masukan. 2. cipherteks: array yang berukuran 16 byte, yang berisi hasil enkripsi. 3. key: array yang berukuran 16 byte (untuk panjang kunci 128 bit), yang berisi kunci ciphering (disebut juga cipher key). Dengan 16 byte, maka baik blok data dan kunci yang berukuran 128-bit dapat disimpan di dalam ketiga array tersebut (128 = 16 x 8). Selama kalkulasi plainteks menjadi cipherteks, status sekarang dari data disimpan di dalam array of byte dua dimensi, state, yang berukuran NROWS x NCOLS. Elemen array state diacu sebagai S[r,c], dengan 0 ≤ r < 4 dan 0 ≤ c < Nc (Nc adalah panjang blok dibagi 32). Pada AES, Nc = 128/32 = 4. Tiap elemen dari array state diisi dengan 8 bit teks (1 byte) dalam notasi HEX. Contoh pengisian array state dapat dilihat pada Gambar 2.4 14 Gambar 2.4 Pengisian Array state 19 = 00011001 (1 byte pertama) 3d = 00111101 (1 byte kedua), dst. 2.1.3.1 Proses Enkripsi Rijndael Gambar 2.5 Skema Enkripsi Rijndael 15 Skema enkripsi Rijndael dapat dilihat pada Gambar Gambar 2.5. Pada intinya, tiap blok masukan (array state) dikenakan empat fungsi utama berikut: 1. SubBytes (Gambar 2.6) menggunakan table SBox. Melakukan substitusi 2. ShiftRows (Gambar 2.7) Menggeser baris ke-r dalam array state sebanyak r byte ke kiri. 3. MixColumns (Gambar 2.8) Mengacak array state dengan cara melakukan perkalian matriks yang merupakan transformasi dari perkalian polinom antara tiap kolom dengan polinom 4 suku pada GF(28), a(x) mod (x4 + 1) 4. AddRoundKey (Gambar 2.9) melakukan XOR antara array state sekarang dengan round key. Gambar 2.6 Subtitusi dengan table SBox 16 Gambar 2.7 ShiftRows 17 Gambar 2.8 MixColumns Gambar 2.9 AddRoundKey 2.1.3.2 Proses Dekripsi Rijndael Proses dekripsi Rijndael dapat dilihat pada Gambar 2.10: 18 Gambar 2.10 Proses dekripsi Rijndael Secara garis besar , proses dekripsi algoritma rijndael adalah sebagai berikut: 1. Addroudkey melakukan XOR antara state awal (chipertext) dengan chipper key. Tahap ini disebut initial roud. 2. Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalh : a. invShiftRow : Pergeseran baris-baris array state secara wrapping. 19 b. InvByteSub : subtitusi byte dengan menggunakan table subtitusi kebalikan (invers S-box). c. AddRoundKey : Melakukan XOR antara state sekarang dengan round key. d. InvMixColumn : mengacak data di masing-masing kolom Aray state. 3. Final Round : proses untuk putaran terakhir : a. InvShiftRow. b. InvByteSub. c. AddRoundKey. 2.1.4 Elliptic Curve Cryptosystem Kurva-kurva eliptik (elliptic curves) telah dipelajari secara intensif dalam bidang teori bilangan dan geometri aljabar oleh para ahli matematika selama lebih dari satu abad. Teori-teori telah banyak dikembangkan mengenai mereka, dan mereka telah menjadi dasar bagi perkembangan baru dalam ilmu matematika, pembuktian teorema terakhir Fermat (Fermat's Last Theorem)1. Elliptic Curve Public Key Cryptosystems (ECPKC) diusulkan secara independen masing-masing oleh Victor Miller dan Neil Koblitz pada tahun 1985. Sejak tahun tersebut, ECPKC telah dievaluasi secara menyeluruh oleh para ahli kriptografi, ahli matematika, dan ahli komputer di seluruh dunia, sehingga timbul kepercayaan terhadap sistem baru ini. Beberapa tahun terakhir ini, implementasi komersial pertama telah muncul, baik sebagai toolkit maupun sebagai aplikasi seperti keamanan email, keamanan web, kartu pintar, dan sebagainya2. ECPKC ini memiliki beberapa keunggulan dibandingkan sistem yang serupa seperti RSA antara lain: untuk tingkat keamanan yang ekivalen, ECPKC memerlukan ukuran kunci 20 yang lebih kecil, akibatnya kecepatan lebih tinggi, konsumsi daya yang lebih rendah, adanya penghematan bandwidth. Keuntungan-keuntungan tersebut sangat berguna untuk aplikasi-aplikasi yang memiliki keterbatasan pada bandwidth, kapasitas pemrosesan, ketersediaan sumber tenaga, dan ruang. Aplikasi-aplikasi tersebut antara lain : kartu chip, electronic commerce, server web, telepon seluler, dan pager2 2.1.4.1 Kurva Eliptik dalam Fp Jika p > 3 adalah suatu bilangan prima dan a, b ∈ Fp dengan 4a3 + 27b2 ≠ 0 dalam Fp. Suatu kurva eliptik E(Fp) dalam Fp yang didefinisikan oleh parameter a dan b adalah himpunan penyelesaian (x,y), x,y ∈ Fp, yang memenuhi : y2 = x3 + ax + b (2.2) bersama dengan suatu point khusus, φ, yang disebut point at infinity. Contoh suatu kurva eliptik dalam F13 : y2 = x3 + x + 1 adalah persamaan untuk kurva eliptik E dalam F13. Di sini a=1 dan b=1. Himpunan penyelesaian untuk persamaan tersebut adalah : (0,1) (0,12) (1,4) (1,9) (4,2) (4,11) (5,1) (5,12) (7,0) (8,1) (8,12) (10,6) (10,7) (11,2) (11,11) (12,5) (12,8) E(F13) memiliki 18 point, termasuk point at infinity φ. 2.1.4.2 • Operasi-operasi pada kurva eliptik dalam Fp Operasi Penambahan (Addition) Berikut ini adalah sifat-sifat operasi penambahan pada kurva eliptik : 21 a. Jika φ adalah point at infinity, maka penjumlahan dua buah φ akan menghasilkan φ pula. Secara matematis dapat dituliskan sebagai berikut : φ + φ = φ. b. Jika P = (x1,y1) ∈ E(Fp), maka : P+φ=φ+P=P c. Jika P = (x1,y1) ∈ E(Fp), maka negasi P,–P = (x1,-y1) juga merupakan point pada kurva. Penambahan dua buah point ini memberikan : P + (-P) = P – P = φ d. Jika P = (x1,y1) ∈ (Fp) dan Q = (x2,y2) ∈ (Fp) dengan x1 ≠ x2, dan Q ≠ - P, maka jumlah mereka : P + Q = R = (x3,y3) didefinisikan sebagai : x3 = λ2 – x1 – x2 y3 = λ (x1-x3) –y1 dengan y2 - y1 λ= x2 – x1 Sifat penting lain dari aturan penambahan ini adalah bahwa urutan penambahan tidak penting, P + Q = (x1,y1) + (x2,y2) = (x3,y3) = (x2,y2) + (x1,y1) = Q + P 22 • Penggandaan (Doubling) Jika P = (x1,y1) ∈ E(Fp) adalah suatu point dengan y1 ≠ 0 dan P bukan φ, maka 2P = (x3,y3), dengan : λ = (3x12 + a) 2y 1 x3 = λ 2 - 2x1, dan y3 = -y1 + λ (x1-x3) Jika P= φ atau y1=0, maka 2P= φ. • Perkalian Skalar (Scalar Multiplication) Point kurva eliptik tidak dapat dikalikan, namun dapat dilakukan scalar multiplication, yaitu penambahan berulang untuk point yang sama. Jika n adalah suatu integer positif dan P suatu point pada kurva eliptik, perkalian skalar nP adalah hasil penambahan P sejumlah n kali. Sehingga, 5P = P+P+P+P+P. Perkalian skalar ini dapat diperluas untuk integer nol dan negatif yaitu : 0P = φ, (-n) P = n (-P) 2.1.4.3 Contoh-contoh operasi pada kurva eliptik Berdasarkan contoh kurva eliptik F13 sebelumnya : - Penambahan dua buah point yang berbeda Jika P = (1,4) dan Q = (5,12), maka P+Q dapat dihitung dengan cara sebagai berikut : 23 λ= 12 - 4 8 = 5-1 = 2 ∈ F13 4 x3 = 22 - 1 - 5 = 4-1-5 = -2 = 11 (mod 13) dan y3 = 2(1-(-2)) - 4 = 2(3) - 4 = 2 (mod 13) Maka P+Q = (11,2) - Penggandaan Point Jika P = (1,4), maka 2*P dapat dihitung sebagai berikut : λ= 3.12 + 1 4 1 = 2.4 = 8 = 7 ∈ F13 2 x3 = 72 - 2.1 = 49 - 2 = 47 = 8 (mod 13), dan y3 = -4 + 6 (1-7) = 9 + 6(-6) = 9-36 = -27 = 12 (mod 13) - Perkalian Skalar Jika k = 3 dan P=(1,4). Maka 3P dapat dihitung sebagai berikut : 3P = P+P+P = (2P)+P. Dengan 2P = P+P = (8,12) (dari contoh penggandaan point) dan P = (1,4), 3P = (8,12) + (1,4) dapat dihitung sebagai berikut : 12 - 4 λ= 8 = 2 ∈ F13 = 8-1 7 24 x3 = 32 - 1 - 8 = 0 (mod 13) dan y3 = 3(1-0) - 4 = 3 - 4 = -1 = 12 (mod 13) Jadi 3P = (0,12). 2.2 Visual Basic for Application (VBA) Visual Basic for Application (VBA) adalah bahasa pemrograman yang menyerupai Visual Basic dan memiliki beberapa tambahan kemampuan untuk membantu para programmer dalam mengembangkan aplikasi dengan lebih mudah. VBA terintegrasi langsung dengan suatu aplikasi induk sehingga menawarkan keunggulan terhadap kecepatan, kinerja proses, integrasi dengan aplikasi induk (kode berada dalam dokumen) dan kemampuan untuk membuat solusi tanpa menggunakan alat bantu tambahan. VBA menyediakan suatu lingkungan pengembangan terintegrasi (IDE – Integrated Development Environment), seperti halnya pemrograman dengan menggunakan Visual Basic, termasuk tampilan proyek, properties dan debugging. VBA juga mendukung form-form Microsoft untuk membuat custom dialog box dan kontrol Active-X untuk pengembangan tampilan antarmuka (user interface). Gambar 2.11 adalah salah satu contoh visual basic editor untuk Microsoft Office 2003. 25 Gambar 2.11 Visual Basic Editor 2.3 XML Web Service Web services merupakan cara yang sudah distandarkan untuk membagikan atau mendistribusikan fungsi-fungsi dari aplikasi melalui jaringan dengan menggunakan protokol web standar, seperti HTTP dan XML. Secara umum web services merupakan komponen aplikasi yang menyediakan layanan kepada client melalui suatu jaringan yang berorientasi pada aplikasi. Konsep web services memungkinkan suatu aplikasi dapat diakses oleh aplikasi yang lain setiap saat dan dimana saja dengan menggunakan platform dan peralatan apa saja. Web services merupakan perkembangan distributed computing dengan arsitektur n-tier. Keuntungan yang paling mendasar yang ditawarkan oleh web services adalah integrasi. Usaha untuk mengintegrasikan aplikasi, sistem, maupun platform yang berbeda sering mengalami kesulitan dan memerlukan proses yang panjang. Web services merupakan standar yang tepat 26 sebagai alat pengintegrasian. Web services mampu mengintegrasikan aplikasi dan sistem dari platform yang berbeda karena menggunakan standar protokol web dalam interaksinya seperti TCP/IP, HTTP, XML, SOAP, UDDI. Gambar 2.12 Blok Web Services Komponen penyusun web services dapat dilihat pada Gambar 2.12 (Short, 2003). Terdapat 5 blok utama dalam web services antara lain Discovery, Description, Message Format, Encoding dan Transport. 2.3.1 Discovery Web services yang telah di-publish di internet disimpan dalam sebuah direktori. Proses mencari dan meregister web services didefinisikan dalam standar Universal Description, 27 Discovery and Integration (UDDI). Dengan UDDI kita bisa mencari web services berdasarkan keyword untuk kategori tertentu. UDDI menyediakan registrasi web services dan menyediakan direktori yang berisi perusahaan-perusahaan yang dapat dicari berdasarkan nama perusahaan, di bidang apa perusahaan itu bergerak dan di wilayah mana perusahaan tersebut menyediakan servis. Setiap record dari perusahaan memiliki detil tentang tujuan dan lokasi web services yang dibuat. UDDI bertujuan untuk menjembatani antara perusahaan yang mengembangkan dan mempublish web services dengan programmer yang berusaha untuk mencari dan menggunakan web services. Saat ini terdapat tiga registrasi UDDI yang telah dipublikasikan, yaitu milik IBM (http://www.ibm.com/services/uddi), SAP (http://uddi.sap.com) dan Microsoft (http://uddi.microsoft.com). 2.3.2 Description Setelah web services ditemukan menggunakan UDDI, client perlu mengetahui cara untuk dapat berinteraksi dengan web services tersebut dan service apa saja yang disediakan. Fungsionalitas service yang disediakan oleh web services dipaparkan dalam bentuk programmatic interface menggunakan standar description language Web Services Definition Language (WSDL). WSDL merupakan suatu dokumen XML yang menjelaskan metod yang tersedia dalam suatu web services, parameter yang diperlukan untuk memanggil suatu method dan hasil dari metod yang akan dipanggil. WSDL menjelaskan bagaimana cara berinteraksi dengan web services dan mengandung informasi mengenai message yang dapat dikirim SOAP message dan jenis response yang akan dikembalikan oleh web services. Notasi yang digunakan WSDL unt uk 28 menggambarkan format message yang digunakan berdasarkan pada standar XML Schema. 2.3.3 Message Format Simple Object Access Protocol (SOAP) merupakan protokol untuk pertukaran informasi terstruktur pada sistem yang terdistribusi / terdesentralisasi. SOAP menggunakan teknologi XML untuk mendefinisikan kerangka struktur messeage. SOAP didesain untuk bersifat extensible dan simple. Extensible artinya user mampu mengembangkan kemampuannya untuk kepentingan di masa mendatang. Dalam konsep web services, SOAP merupakan mekanisme yang digunakan untuk mengirimkan message diantara client denga web services. SOAP tidak bergantung pada model pemrograman ataupun sistem operasi. Spesifikasi SOAP yang dipergunakan adalah yang dikeluarkan oleh World Wide Web Consortium (W3C) yaitu sebagai berikut : a. SOAP 1.1 Namespace http://schemas.xmlsoap.org/soap/envelope b. SOAP 1.2 Namespace : http://www.w3c.org/2002/12/soap-envelope 2.3.4 Encoding Extensible Markup Language (XML) merupakan standar W3C yang mengijinkan data untuk bersifat portable dan bebas mendeskripsikan dirinya, sehingga dapat dipertukarkan dengan mudah antar aplikasi maupun devices pada berbagai platform. Jadi XML merupakan ide untuk membuat format data standar yang universal. XML adalah suatu format dokument berbasis 29 teks. Dengan menggunakan format XML, web services memungkinkan suatu aplikasi dapat “berbicara” dengan aplikasi lain. Web services dapat diimplementasikan dalam berbagai platform dengan menggunakan bahasa pemrograman apapun yang mendukung web services. 2.3.5 Transport Hypertext Transfer Protocol (HTTP) mendefinisikan bagaimana suatu pesan disusun dan dikirimkan serta bagaimana web server menanganinya. HTTP merupakan serangkaian aturan untuk pertukaran file (teks, grafik, gambar dan lain-lain) di dalam www. HTTP adalah protokol aplikasi yang berhubungan dengan protokol TCP/IP yang merupakan protokol utama dalam pertukaran informasi di internet. Konsep dasar yang merupakan bagian dari HTTP termasuk ide bahwa di dalam file bisa terdapat referensi ke file lain dimana pemilihan file tersebut akan memicu terjadinya transfer request. 2.4 Net Framework Net framework adalah suatu platform baru di dalam pemrograman untuk lingkungan yang terdistribusi luas (internet). Istilah .Net sering diasosiasikan dengan proses yang berjalan pada platform .Net. Salah satu bentuk keunggulan dari platform ini terrefleksi pada kompilasi sumber kode program, dimana semua sumber kode program akan dikompilasi menjadi Microsoft Intermediate Language (MSIL). Selanjutnya MSIL akan dikompilasikan oleh .NET Compiler menjadi bahasa mesin pada saat akan digunakan.