Skripsi Komputer 3

Sunday, March 18, 2012

PERANCANGAN PERANGKAT LUNAK PEMBELAJARAN METODA KRIPTOGRAFI GOST


A. Latar Belakang Pemilihan Judul
Dalam hal teknik pengamanan data, banyak metoda kriptografi yang dapat digunakan. Metoda – metoda kriptografi tersebut mempunyai teknik dan cara tersendiri. Langkah – langkah pengerjaan setiap metoda pun berbeda – beda, baik dari segi panjang maupun kerumitan. Salah satu metoda kriptografi yang menarik untuk dipelajari adalah metoda GOST.
Metoda GOST merupakan suatu algoritma block cipher yang dikembangkan oleh seorang berkebangsaan Uni Soviet. GOST merupakan singkatan dari “Gosudarstvennyi Standard” atau “Government Standard”. Algoritma ini merupakan suatu algoritma enkripsi sederhana yang memiliki jumlah proses sebanyak 32 round dan menggunakan 64 bit block cipher dengan 256 bit key. Metoda GOST juga menggunakan 8 buah S-Box yang berbeda – beda dan operasi XOR serta Left Circular Shift.
Berdasarkan uraian di atas, penulis bermaksud untuk mengambil tugas akhir (skripsi) dengan judul “Perancangan Perangkat Lunak Pembelajaran Metoda Kriptografi GOST”.

B. Perumusan Masalah

            Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah bagaimana membuat suatu perangkat lunak pembelajaran metoda kriptografi GOST.

C. Tujuan dan Manfaat
            Tujuan penyusunan tugas akhir (skripsi) ini adalah untuk merancang suatu perangkat lunak pembelajaran metoda kriptografi GOST.
            Manfaat dari penyusunan tugas akhir (skripsi) ini yaitu untuk membantu pembelajaran metoda kriptografi GOST dan juga dapat digunakan sebagai perangkat pendukung dalam proses belajar mengajar.

D. Pembatasan Masalah
Karena keterbatasan waktu dan pengetahuan penulis, maka ruang lingkup permasalahan dalam merancang perangkat lunak ini antara lain :
  1. Perangkat lunak akan menampilkan tahap – tahap penghitungan dalam bilangan biner.
  2. Perangkat lunak memiliki fasilitas untuk menampilkan nilai dari S-Box yang digunakan dan teori – teori dasar dari metoda GOST.
  3. Perangkat lunak akan menampilkan tahap – tahap enkripsi dan dekripsi.

E. Metodologi Penyelesaian
            Langkah – langkah pembuatan perangkat lunak ini antara lain :
a.                   Membaca dan mempelajari buku – buku kriptografi yang berhubungan dengan metoda kriptografi GOST.
b.                  Mempelajari algoritma dari metoda kriptografi GOST.
c.                   Merancang perangkat lunak pembelajaran metoda kriptografi GOST dengan menggunakan bahasa pemrograman Visual Basic 6.0.
d.                  Melakukan pengujian dan pengecekan terhadap perangkat lunak yang telah dirancang.
BAB I

PENDAHULUAN

1.1              Latar Belakang
Sekarang ini, sering ditemukan berbagai macam perangkat lunak pembelajaran. Perangkat lunak yang penulis ingin rancang adalah mengenai kriptografi. Kriptografi merupakan ilmu yang mempelajari tentang pengamanan data atau informasi, dalam kriptografi banyak ditemukan metoda-metoda kriptografi. Salah satunya adalah metoda GOST, GOST ini merupakan singkatan dari “Gosudarstvennyi Standard” atau “Government Standard”. Algoritmanya merupakan algoritma enkripsi sederhana yang memiliki jumlah proses sebanyak 32 round dan menggunakan 64 bit block cipher dengan 256 bit key. Metoda GOST juga menggunakan 8 buah S-Box yang permanen dan operasi XOR serta Rotate Left Shift.
Penulis memilih topik perangkat lunak pembelajaran karena penulis ingin membuat bagaimana cara user (pengguna) lebih memahami serta menambah minat user terhadap pembelajaran tersebut, dengan menampilkan teori-teori serta animasi yang mendukung. Jenis perangkat lunak pembelajaran yang penulis singgung tentunya adalah pembelajaran kriptografi metoda GOST. Perangkat lunak pembelajaran ini dirancang supaya metoda GOST  dapat lebih mudah dipahami baik algoritma maupun operasi-operasi yang terkandung dalam metoda GOST ini.
Berdasarkan uraian di atas, penulis bermaksud untuk mengambil tugas akhir (skripsi) dengan judul “Perancangan Perangkat Lunak Pembelajaran Kriptografi Metoda GOST”.

1.2       Perumusan Masalah
            Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah bagaimana membuat suatu perangkat lunak pembelajaran kriptografi metoda GOST.

1.3       Tujuan dan Manfaat Penulisan
            Tujuan penyusunan tugas akhir (skripsi) ini adalah untuk merancang suatu perangkat lunak pembelajaran kriptografi metoda GOST.
            Manfaat dari penyusunan tugas akhir (skripsi) ini yaitu untuk membantu pembelajaran kriptografi metoda GOST dan juga dapat digunakan sebagai perangkat pendukung dalam proses belajar mengajar.

1.4       Pembatasan Masalah
Karena keterbatasan waktu dan pengetahuan penulis, maka ruang lingkup permasalahan dalam merancang perangkat lunak ini antara lain :
  1. Perangkat lunak akan menampilkan tahap-tahap penghitungan dalam bilangan biner dan heksadesimal.
  2. Perangkat lunak memiliki fasilitas untuk menampilkan nilai dari S-Box permanen yang digunakan dan teori-teori dasar dari metoda GOST.
  3. Perangkat lunak akan menampilkan tahap-tahap enkripsi dan dekripsi.
  4. Input dari perangkat lunak berupa key dengan panjang 256 bit dan plaintext 64 bit.

1.5       Metodologi Penyelesaian Masalah
            Langkah-langkah pembuatan perangkat lunak ini antara lain :
  1. Membaca dan mempelajari buku-buku kriptografi, sumber wacana dan jurnal yang berhubungan dengan metoda GOST.
  2. Mempelajari algoritma dari metoda GOST.
  3. Merancang perangkat lunak pembelajaran metoda GOST dengan menggunakan bahasa pemrograman Visual Basic 6.0.
  4. Melakukan pengujian dan pengecekan terhadap perangkat lunak yang telah dirancang.
BAB II

LANDASAN TEORI

2.1              Pengenalan Kriptografi
2.1.1        Sejarah Kriptografi
Kriptografi adalah ilmu yang mempelajari bagaimana suatu pesan atau dokumen kita aman, tidak bisa dibaca oleh pihak yang tidak berhak. Dalam perkembangannya, kriptografi juga digunakan untuk identifikasi pengirim pesan dengan tanda tangan digital dan keaslian pesan dengan sidik jari digital (fingerprint). Kriptografi mempunyai sejarah yang sangat panjang. Sejak jaman Romawi, Julius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan komunikasi militernya. Namun sekutu dapat menembus Enigma, kriptografi produk Jerman dan Purple, kriptografi produk Jepang, sekutu akhirnya dapat memenangkan perang dunia kedua karena dapat mengetahui beberapa langkah dan strategi militer lawan.
Kriptografi mulai digunakan dan disumbangkan pemikirannya pertama kali oleh empat kelompok, yakni militer, korps diplomatik, diarist, dan orang yang sedang jatuh cinta. Dari keempat kelompok orang tersebut, militer telah memainkan peranan yang paling penting dan telah mengembangkan bidang ini. Di dalam organisasi militer, pesan-pesan yang telah di-encode secara tradisional diberikan kepada pekerja kode berupah rendah untuk selanjutnya dienkrip dan ditransmisikan. Tugas ini diusahakan agar tidak dilakukan oleh spesialis yang elit. Kendala tambahan telah menjadi kesulitan dalam peralihan yang cepat dari satu algoritma kriptografi ke algoritma lainnya, karena hal ini memerlukan pelatihan orang dalam jumlah banyak. Keadaan yang bertolak belakang ini telah membentuk model enkripsi.
Secara singkat, sejarah perkembangan kriptografi dapat dijabarkan seperti berikut,
  • Tahun 1900 SM, pertama kali digunakannya teknik transformasi cyptography di “tomb inscription”, merupakan penggunaan kriptografi yang pertama kali diketahui.
  • Tahun 475 SM, Sparta menggunakan kriptografi untuk komunikasi dan juga merancang alat untuk mengenkripsi (skytale) yang menghasilkan transposition cipher.
  • Tahun 350 SM, “Aenas The Tactician” mengeluarkan tulisan pertama mengenai keamanan komunikasi dan kriptografi.
  • Tahun 60 SM, Julius Caesar menjadi orang yang pertama kali yang diketahui menggunakan substitution cipher.
  • Tahun 1412, “Treatise” tertua yang diketahui dalam kriptanalis yang diterbitkan oleh Alkalkas Handi (Mesir).
  • Tahun 1917, Edward Hugh Hibern mengembangkan mesin motor yang pertama.
  • Tahun 1971, IBM mengembangkan teknik enkripsi Lucifer.
  • Tahun 1975, DES diumumkan (disetujui tahun 1977).
  • Tahun 1976, presentasi terbuka pertama tentang konsep public key oleh Diffie dan Helman.
  • Tahun 1977, Merkle mengembangkan algoritma knapsack dan memberikan hadiah $100 bagi yang dapat memecahkan kuncinya (algoritma dengan satu kali pengulangan). Algoritma Rivest-Shamir-Aldeman (RSA) diumumkan kepada umum.
Sebagaimana banyak teknologi lainnya, selama bertahun-tahun kriptografi menjadi bidang khusus yang hanya dipelajari oleh pihak militer. Agen Keamanan Nasional Amerika (NSA = National Security Agency), Uni Soviet, Inggris, Perancis, Israel dan negara lainnya telah membelanjakan miliaran dolar untuk mengamankan komunikasi mereka dan pada saat yang bersamaan mereka pun berusaha memecahkan kode rahasia negara saingannya.
Namun pada kurun waktu 30 tahun terakhir, penelitian akademik di bidang kriptografi meledak dengan dahsyatnya. Kemajuan teknologi komputasi komputer menambah cepatnya perkembangan kriptografi. Sekarang, kriptografi bukan lagi monopoli militer, setiap individu berhak mengamankan komunikasinya tanpa kuatir dimata-matai oleh pihak lain. Setiap individu berhak melindungi komunikasi yang berisi rahasia keluarganya, bisnisnya, pekerjaannya, dan pendapat-pendapatnya. Hal ini tentu bertentangan dengan kebijakan pemerintah yang menginginkan agar setiap kegiatan rakyatnya dapat dikontrol, apalagi kalau dianggap melawan pemerintah. Bahkan di negara yang mengaku paling demokratis sedunia, Amerika, pemerintahnya justru mengontrol dengan sangat ketat kriptografi. Bila anda menginginkan produk kriptografi yang paling andal, jangan berharap anda dengan mudah mendapatkannya dari negeri ini. Pemerintah Amerika bahkan melarang ekspor produk kriptografi yang tidak mampu mereka pecahkan kode rahasianya. Sementara untuk komunikasi dalam negeri, mereka mengizinkan penggunaan produk kriptografi yang lebih kuat, karena pemerintah Amerika dapat melakukan penyadapan komunikasi dengan mudah tanpa harus memecahkan kriptografinya. Pemerintah Amerika menganggap produk kriptografi sebagai amunisi semacam tank, rudal, pesawat pembom maupun kapal-kapal perangnya.

2.1.2        Definisi Kriptografi
Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari gabungan dua kata dalam bahasa Yunani yaitu “kriptos” dan “graphia”. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya.
Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

Dalam arti lain, cryptography adalah seni dan ilmu dalam mengamankan pesan. Dalam dunia kriptografi, pesan disebut plaintext atau cleartext. Proses untuk menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian sebuah ciphertext ke plaintext disebut dekripsi.
Gambar 2.1  Konsep Dasar dari Enkripsi dan Dekripsi
                        Cryptographer adalah orang yang mempraktekkan ilmu kriptografi, sedangkan cryptoanalysts adalah orang yang mempraktekkan kriptanalisis, seni dan ilmu dalam memecahkan ciphertext.
                        Aturan fundamental kriptografi yaitu seseorang harus mengasumsikan bahwa seorang kriptoanalis menguasai algoritma umum enkripsi yang digunakan. Dengan kata lain, kriptanalis mengetahui cara kerja algoritma enkripsi. Jumlah usaha yang diperlukan untuk menemukan, menguji, dan memasang algoritma baru yang selalu berkompromi atau berfikir untuk berkompromi dengan algoritma lama, akan menyebabkan algoritma baru itu menjadi tidak berguna untuk menjaga kerahasiaan. Sistem kriptografi atau Algoritma Kriptografi adalah sebuah algoritma kriptografi ditambah semua kemungkinan plaintext, ciphertext dan kunci.

2.2              Algoritma Kriptografi
                        Kriptografi merupakan bentuk algoritma untuk mengacak pesan dan mengembalikan acakan pesan tersebut, dimana pembuatan algoritma kriptografi tersebut mempergunakan perhitungan dan formula-formula matematika. Algoritma kriptografi adalah fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Untuk mengenkrip sebuah pesan plaintext, terapkan algoritma enkripsi ke pesan plaintext tersebut. Untuk mendekrip sebuah pesan ciphertext, terapkan algoritma dekripsi ke pesan ciphertext tersebut.
                        Algoritma tidak dapat diandalkan kerahasiaannya. Dengan menggunakan algoritma yang dipublikasikan, cryptographer bebas melakukan konsultasi dengan sejumlah cryptologis akademis yang berkeinginan untuk menembus sistem sehingga mereka dapat mempublikasikan tulisan yang menunjukkan bagaimana cerdiknya mereka. Bila setelah algoritma itu dipublikasikan selama 5 tahun dan tidak ada seorang ahlipun yang berhasil memecahkannya, maka mungkin algoritma tersebut cukup solid.
                        Kerahasiaan sebenarnya terletak pada kunci dan panjang kunci itu merupakan masalah penting dalam rancangan. Ambil suatu kunci kombinasi yang sederhana. Prinsip umumnya adalah di mana seseorang memasukkan digit secara berurutan. Setiap orang mengetahui hal ini, namun kunci merupakan rahasia. Dengan panjang kunci yang dua digit berarti bahwa terdapat seratus kemungkinan. Panjang kunci tiga digit mempunyai seribu kemungkinan, dan panjang kunci enam digit mempunyai sejuta kemungkinan. Semakin panjang kunci, semakin tinggi faktor kerja yang harus dilakukan cryptanalyst. Faktor kerja untuk menembus sistem dengan pencarian kunci yang melelahkan merupakan eksponensial terhadap panjang kuncinya. Kerahasiaan berasal dari adanya algoritma yang kuat dan dipublikasikan dengan kunci yang panjang.
Syarat-syarat algoritma kriptografi yang baik antara lain,
  • Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang digunakan.
  • Algoritmanya memiliki ruang kunci (keyspace) yang besar.
  • Menghasilkan ciphertext yang terlihat acak dalam seluruh tes statistik yang dilakukan terhadapnya.
  • Mampu menahan seluruh serangan yang telah dikenal sebelumnya.
Namun demikian perlu diperhatikan bahwa bila suatu algoritma kriptografi berhasil memenuhi seluruh karakteristik di atas belum tentu merupakan sistem yang baik. Banyak algoritma kriptografi lemah yang terlihat baik pada awalnya. Kadang kala untuk menunjukkan bahwa suatu algoritma kriptografi kuat atau baik dapat dilakukan dengan menggunakan pembuktian matematika.
            Hingga saat ini masih banyak yang menggunakan algoritma Kriptografi 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.

2.3              Kriptografi Klasik
Sebelum jaman komputer, kriptografi terdiri dari kriptosistem yang berdasarkan karakter. Berbagai algoritma kriptografi melakukan substitusi karakter atau transposisi karakter antara satu dengan yang lainnya. Kriptografi klasik dapat dibagi menjadi dua bagian yaitu, Cipher Subsitusi dan Cipher Transposisi.

2.3.1        Cipher Substitusi
Cipher subtitusi adalah suatu teknik dimana setiap karakter dalam plaintext digantikan dengan karakter lain untuk ciphertext. Dalam kriptografi klasik ada beberapa dasar dari cipher subtitusi yaitu,
1.            Simple Substitution Cipher adalah suatu teknik dimana setiap karakter dalam plaintext digantikan dengan karakter yang koresponden ke dalam ciphertext.
2.            Homophonic Substitution Cipher, hampir sama dengan Simple Substitution Cipher tetapi sebuah karakter dalam plaintext dapat digantikan dengan satu atau beberapa karakter ke dalam ciphertext.
3.            A Polyalphabetic Substitution Cipher terdiri dari beberapa Simple Substitution Cipher.
4.            A Polygram Substitution Cipher adalah suatu teknik dimana blok karakter dienkripsi dalam kelompok. Contohnya, “ABA “ dapat berkoresponden ke “RTQ”, “ABB” dapat berkoresponden ke “SLL”, dan lain-lain.
Salah satu cipher yang paling tua adalah cipher Caesar, dikaitkan dengan Julius Caesar. Pada algoritma ini ‘a’ menjadi ‘D’, ‘c’ menjadi ‘F’, …. , dan ‘z’ menjadi ‘C’.
Contoh cipher Caesar dapat dilihat pada gambar berikut ini,
Gambar 2.2 Contoh Caesar Cipher

2.3.2        Cipher Transposisi
Cipher transposisi adalah suatu teknik dimana karakter-karakter di dalam plaintext tidak berubah, tetapi urutannya diacak. Cipher transposisi yang umum yaitu transposisi kolom, dimana sebuah plaintext ditulis secara horisontal pada sebuah kertas grafik dengan lebar yang tetap dan ciphertext dibentuk dengan membaca karakter tersebut secara vertikal.

Plaintext: 
COMPUTER GRAPHICS MAY BE SLOW BUT AT LEAST IT EXPENSIVE
COMPUTERGR
APHICSMAYB
ESLOWBUTAT
LEASTITSEX
PENSIVE
Ciphertext:
CAELPOPSEE MHLANPIOSS UCWTITSBIU EMUTERATSG YAERBTX

 
Contoh,








           

Dekripsi dalam cipher transposisi ini adalah dengan cara menuliskan ciphertext secara vertikal ke kertas grafik dengan tinggi yang tetap dan membaca plaintext secara horisontal.

2.4              Kriptografi Modern
Untuk kondisi yang lebih aman, semua algortima kriptografi modern menggunakan kunci atau key. Kunci  ini dapat  berisi banyak sekali peluang nilai. Batas nilai yang mungkin untuk sebuah kunci disebut keyspace. Dalam kriptografi yang berbasiskan kunci, terdapat dua buah bentuk umum algoritma, yaitu Algoritma Simetrik (Symetric Algorithm)  dan Algoritma Asimetrik (Asymetric Algorithm).

2.4.1        Algoritma Simetrik
Algoritma simetrik adalah suatu algoritma yang simetris dengan menggunakan sebuah kunci yang sama baik dalam melakukan enkripsi maupun dekripsi. Apabila kunci yang digunakan dalam melakukan enkripsi dan dekripsi berbeda, maka menyebabkan keluaran terakhir dari algoritma kacau, sehingga tidak berhasil mengembalikan bentuk ciphertext ke plaintext semula. Karena kunci ini memegang peranan yang sangat penting dalam melakukan enkripsi maupun dekripsi, maka algoritma simetrik ini disebut juga dengan algoritma kunci rahasia (Secret key algorithm). Algortima ini mengharuskan pengirim dan penerima pesan untuk menyetujui kunci yang akan digunakan dan keamanan dari algoritma ini tergantung dari kunci yang digunakan, sehingga kunci ini harus dirahasiakan. Jika kunci ini disebarkan berarti semua orang dapat melakukan enkripsi dan dekripsi pesan dalam sistem tersebut.
Dalam notasi matematika, proses algoritma kunci rahasia digambarkan sebagai berikut:
Ek(P) = C
D­­k(C) = P
Ek dan Dk adalah fungsi enkripsi dan dekripsi yang menggunakan kunci sama.



Kunci Ek
 
Kunci Ek
 
 


Gambar 2.3  Proses Enkripsi dan Dekripsi pada algoritma Kunci Rahasia
Algoritma Simetrik dapat dibagi menjadi dua kategori.yaitu algoritma stream (stream algorithm)  atau stream ciphers, yang beroperasi pada setiap bit dari plaintext, dan alogritma blok (block algorithms) atau cipher blok (block ciphers), yang beroperasi pada kelompok-kelompok bit.

2.4.1.1  Stream Cipher
Stream cipher adalah suatu  algoritma simetrik enkripsi yang sangat penting. Algoritma ini bekerja dengan cara mengenkrip karakter demi karakter (biasanya digit binary) dari plaintext. Stream cipher jauh lebih cepat dibandingkan dengan algoritma block cipher. Algoritma ini secara umum digunakan untuk mengenkrip plaintext yang kecil biasanya dalam ukuran bit. 
Suatu stream cipher menghasilkan apa yang disebut suatu keystream (suatu barisan bit yang digunakan sebagai kunci) untuk menghasilkan pseudo-random sequence yang diinisialisasikan dengan  menggunakan kunci rahasia yang kemudian di-XOR kan dengan plaintext untuk menghasilkan ciphertext. Pembentukan keystream depat dibuat independen terhadap plaintext dan ciphertext menghasilkan apa yang disebut dengan synchronous stream cipher, atau dapat dibuat tergantung pada data dan enkripsinya, dalam hal mana stream cipher disebut sebagai self-synchronous. Kebanyakan bentuk stream cipher adalah synchronous stream cipher.
Gambar 2.4 Algoritma Stream Cipher
            Contoh algoritma yang digunakan dalam stream cipher adalah,
§  RC4
RC4 adalah suatu stream cipher yang menggunakan algoritma kunci simetris. RC4 ini dikembangkan pada tahun 1987 oleh Ronald Rivest dan disimpan sebagai rahasia dagang oleh RSA Data Security. Pada tanggal 9 September 1994, algoritma RC4 secara anonim ditempatkan di internet di bagian Cyperpunks daftar pengirim anonim.
·         Tagima
Tagima merupakan algoritma yang digunakan Jerman dalam Perang Dunia II, dan berhasil dipecahkan oleh tawanan Amerika Serikat.


2.4.1.2  Block Cipher dan Mode Operasi
Block cipher adalah sebuah fungsi yang memetakan n-bit blok plaintext menjadi n-bit ciphertext. Fungsi tersebut terdiri dari sebuah algoritma dan sebuah kunci. Hasil pemetaan dari plaintext ke ciphertext akan berbeda tergantung pada kunci yang digunakan.
Gambar 2.5 Algoritma Block Cipher
            Proses padding adalah proses penambahan byte-byte dummy berupa karakter null pada byte-byte sisa yang masih kosong pada blok terakhir plaintext, sehingga ukurannya menjadi sama dengan ukuran blok penyandian. Byte terakhir kemudian diisi dengan suatu informasi mengenai ukuran file pada blok terakhir.
            Ukuran arsip yang akan disandikan sebagian besar tidak merupakan kelipatan ukuran blok penyandian. Hal ini mengakibatkan blok terakhir mungkin akan memiliki ukuran yang lebih kecil dari blok penyandian. Karena pada block cipher mengharuskan blok yang akan disandikan memiliki panjang yang tetap maka pada blok terakhir tersebut harus ditambahkan byte-byte tertentu sehingga ukurannya menjadi sama dengan ukuran blok penyandian.
Contoh algoritma yang digunakan dalam block cipher adalah,
·                     DES (Data Encryption Standard)
            DES ini dikembangkan pada tahun 1970-an oleh IBM dan disajikan standar oleh pemerintah Amerika Serikat dan telah diadopsi oleh berbagai negara. Algoritma ini banyak digunakan terutama untuk industri perbankan. DES menggunakan 56 bit kunci, sehingga mudah dipecahkan oleh komputer dengan kemampuan tinggi. DES cukup kuat untuk dapat dijebol oleh kebanyakan hackers dan individual, tetapi dengan mudah dapat dipecahkan oleh hardware khusus milik pemerintah, organisasi kriminal dan perusahaan besar.
            Varian dari DES adalah Triple DES yang lebih aman dan dihasilkan dengan pemakaian algoritma DES selama 3 kali dengan operasi enkripsi-dekripsi-enkripsi, dan menggunakan 2 kunci yang berbeda yang tidak berhubungan.
·                     IDEA (International Data Encryption Algorithm)
            IDEA dikembangkan oleh James L. Massey dan Xuejia Lai di Zurich, Swiss. IDEA menggunakan kunci 128 bit dan benar-benar dianggap aman dan merupakan algoritma yang cukup baru.
·                     Blowfish
            Blowfish dibuat oleh Bruce Schneier dan merupakan algoritma yang menggunakan ukuran block cipher 64 bit dan panjang kunci sampai dengan 448 bit. Algoritma ini banyak dipakai oleh sejumlah besar aplikasi seperti Nautilus (program enkripsi untuk komunikasi suara) dan PGPfone.
·                     Safer
            Safer dikembangkan oleh James L. Massey (salah satu pengembang IDEA), memiliki dua jenis ukuran kunci yaitu 64 bit dan 128 bit. Algoritma ini diklaim akan memberikan enkripsi yang aman dengan implementasi yang mudah dan cepat bahkan dalam 8 bit prosesor.
Beberapa perbedaan dari metoda-metoda di atas dapat dilihat pada tabel berikut ini,
Tabel 2.1 Perbedaan beberapa metoda block cipher
DES
IDEA
Blowfish
Safer
Dikembangkan oleh IBM.
Dikembangkan oleh James L. Massey dan Xuejia Lai.
Dikembangkan oleh Bruce Schneier.
Dikembangkan oleh James L. Massey.
Menggunakan 56 bit kunci.


Menggunakan 128 bit kunci.

Menggunakan 448 bit kunci.

Menggunakan 2 jenis kunci yaitu 64 bit dan 128 bit.

Algoritma terdiri dari 16 putaran (round).
Algoritma terdiri dari 8 putaran (round).
Algoritma terdiri dari 16 putaran (round).
Algoritma terdiri dari n putaran (round) tetapi direkomendasikan oleh sang penemu sebanyak 6 putaran (round).
Menggunakan operasi left circular shift dan XOR.
Menggunakan operasi addition, multiplication, left circular shift dan XOR.
Menggunakan operasi addition, dan XOR.
Menggunakan operasi addition, XOR, pemangkatan dan logaritma.
Menggunakan S-Box dan P-Box.
Tidak menggunakan S-Box dan P-Box.
Menggunakan S-Box.
Tidak menggunakan S-Box dan P-Box.
            Untuk plaintext yang panjangnya lebih besar dari n-bit perlu dipilih mode operasi untuk menentukan cara enkripsi dan dekripsi tersebut. Ada beberapa pilihan mode operasi yang bisa diterapkan antara lain Electronic Codebook (ECB), Cipher-Block Chaining (CBC), Cipher Feedback (CFB) dan Output FeedBack (OFB).

2.4.1.2.1        Mode Operasi Electronic Codebook (ECB)
            Mode ECB membagi plaintext menjadi blok yang panjangnya n-bit dan masing-masing blok dienkripsi secara terpisah dengan menggunakan kunci yang sama. Dengan demikian untuk blok n-bit plaintext yang sama dalam suatu pesan akan menghasilkan n-bit ciphertext yang sama pula.
Gambar 2.6 Mode Operasi ECB

2.4.1.2.2        Mode Operasi Cipher Block Chaning (CBC)
Salah satu alternatif untuk mencegah munculnya blok-blok ciphertext yang sama dari blok plaintext yang sama pada suatu pesan adalah dengan menggunakan model CBC. Setiap blok n-bit di-XOR kan dengan blok n-bit ciphertext sebelumnya, kecuali blok plaintext yang pertama di-XOR kan dengan Initialization Vector (IV) sebesar n-bit. Hasil dari proses XOR tersebut yang kemudian akan dienkripsikan.
            Untuk proses dekripsi, hasil dekripsi blok ciphertext di-XOR kan dengan blok ciphertext sebelumnya untuk menghasilkan blok plaintext. Untuk blok pertama, hasil dekripsi blok ciphertext di-XOR kan dengan IV untuk menghasilkan blok plaintext pertama. Walaupun nilai IV tidak perlu dirahasiakan akan tetapi integritas dari nilai IV harus dilindungi.
Gambar 2.7 Mode Operasi CBC

2.4.1.2.3        Mode Operasi Cipher FeedBack (CFB)
            Dalam mode CFB, blok ciphertext sebelumnya dienkrip dan outputnya digabungkan dengan blok plaintext dengan menggunakan XOR untuk menghasilkan ciphertext.
Gambar 2.8 Mode Operasi CFB

2.4.1.2.4        Mode Operasi Output Feedback (OFB)
                        Mode output feedback mirip dengan mode CFB kecuali jumlah operasi XOR dengan setiap blok plaintext dihasilkan secara independen dari plaintext maupun ciphertext. Sebuah inisialisasi Co digunakan sebagai suatu “seed” untuk sebarisan blok data Si dan diperoleh dari proses enkripsi terhadap blok data Si-1. Sebelumnya proses enkripsi blok plaintext diperoleh dengan menggunakan operasi XOR antara blok plaintext dengan blok data yang relevan.
Gambar 2.9 Mode Operasi OFB

2.4.2        Algoritma Asimetrik
Berbeda dengan algoritma kunci rahasia, algoritma kunci umum dirancang sedemikian rupa sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi, dan bahkan kunci yang digunakan untuk dekripsi tidak dapat dikalkulasikan atau diturunkan dari kunci enkripsi. Algoritma ini disebut algoritma kunci umum (public key algorithm) karena kunci enkripsi yang digunakan boleh disebarluaskan, berarti setiap orang dapat melakukan enkripsi, namun hanya pihak yang memegang kunci dekripsi saja yang dapat melakukan dekripsi.
Beberapa istilah dalam algoritma kunci umum yaitu,
1.      Kunci umum, yaitu kunci yang diberikan atau disebarkan kepada publik sehingga semua orang akan tahu.
2.      Kunci privat, yaitu kunci yang tetap disimpan oleh pemilik kunci.
Dalam notasi matematika, proses algoritma kunci publik digambarkan sebagai berikut,
Ek1(P) = C
D­­k2(C) = P
Ek1 à fungsi enkripsi dengan kunci publik
Dk2 à fungsi dekripsi dengan kunci privat
diagram_kunci_asimetris
Gambar 2.10 Proses Enkripsi dan Dekripsi pada algoritma Kunci Umum
            Algoritma tersebut seperti yang digambarkan pada gambar diatas. Untuk enkripsi konvensional, kunci yang digunakan pada proses enkripsi dan dekripsi adalah sama. Tetapi ini bukanlah kondisi sesungguhnya yang diperlukan. Namun adalah dimungkinkan untuk membangun suatu algoritma yang menggunakan satu kunci untuk enkripsi dan pasangannya, kunci yang berbeda, untuk dekripsi. Lebih jauh lagi adalah mungkin untuk menciptakan suatu algoritma yang mana pengetahuan tentang algoritma enkripsi ditambah kunci enkripsi tidak cukup untuk menentukan kunci dekripsi. Sehingga teknik berikut ini akan dapat dilakukan,
  1. Masing-masing dari sistem dalam network akan menciptakan sepasang kunci yang digunakan untuk enkripsi dan dekripsi dari informasi yang diterima.
  2. Masing-masing dari sistem akan menerbitkan kunci enkripsinya (public key) dengan memasang dalam register umum atau file, sedang pasangannya tetap dijaga sebagai kunci pribadi (private key).
  3. Jika A ingin mengirim pesan kepada B, maka A akan mengenkripsi pesannya dengan kunci publik dari B.
  4. Ketika B menerima pesan dari A maka B akan menggunakan kunci private-nya untuk mendeskripsi pesan dari A.
            Seperti yang kita lihat, public-key memecahkan masalah pendistribusian karena tidak diperlukan suatu kunci untuk didistribusikan. Semua partisipan mempunyai akses ke kunci publik (public key) dan kunci pribadi dihasilkan secara lokal oleh setiap partisipan sehingga tidak perlu untuk didistribusikan. Selama sistem mengontrol masing-masing private key dengan baik maka komunikasi menjadi komunikasi yang aman. Setiap sistem mengubah private key pasangannya public key akan menggantikan public key yang lama. Yang menjadi kelemahan dari metode enkripsi publik key adalah jika dibandingkan dengan metode enkripsi konvensional algoritma enkripsi ini mempunyai algoritma yang lebih komplek. Sehingga untuk perbandingan ukuran dan harga dari hardware, metode public key akan menghasilkan performance yang lebih rendah.



            Contoh algoritma yang digunakan dalam public key system adalah,
·                     RSA (Rivers, Shamir, dan Adleman)
            RSA merupakan algoritma kunci umum yang paling banyak digunakan, dapat digunakan untuk proses enkripsi dan sertifikasi digital. Tingkat keamanan dari RSA terletak pada kesulitan untuk memfaktorkan bilangan integer yang sangat besar.
·                     El Gamal
            El Gamal adalah algoritma yang tingkat keamanan didasarkan pada kesulitan untuk menghitung logaritma diskrit (dicrete algorithm).
·                     LUC
            LUC merupakan sistem enkripsi kunci umum, yang menggunakan fungsi lucas selain dari fungsi pemangkatan.

2.5              Digital Signature
            Apabila kita menulis sebuah surat, biasanya kita menandatangani surat tersebut. Kita melakukan itu dengan tujuan untuk menunjukkan bahwa surat itu otentik, surat itu memang buatan kita. Tanda tangan digital juga bertujuan sama dengan tanda tangan biasa, bedanya proses penandatanganannya juga bersifat digital.
            Tanda tangan digital menggunakan gabungan dua teknik kriptografi yaitu hash dan kriptografi asimetrik. Dokumen yang akan ditandatangani pertama-tama dibuatkan digest-nya, setelah itu digest tersebut dienkripsi dengan teknik kriptografi asimetrik menggunakan kunci privat, hasilnya adalah tanda tangan digital. Dokumen asli dan tanda tangan digital kemudian dikirim secara bersaman. Tujuan dari cara ini akan lebih jelas bila kita sudah melihat bagaimana cara melakukan verifikasinya.
            Dokumen dan tanda tangan digital yang diterima kemudian diverifikasi. Tanda tangan digital yang diterima mula-mula didekripsi menggunakan kunci publik yang diasumsikan sebelumnya sudah dimiliki si penerima. Hasil dari dekripsi tersebut adalah digest, kita sebut saja D1 (digest yang diperoleh dari tanda-tangan digital). Langkah selanjutnya adalah membuat digest dari dokumen yang kita terima, hasilnya kita sebut saja D2 (digest yang diperoleh dari dokumen). Langkah terakhir kita bandingkan D1 dan D2, keduanya harus sama.
            Jika mereka keduanya sama berarti,
  • Dokumen yang diterima terbukti otentik. Jika tanda tangan digital yang diterima bisa didekripsi dengan kunci publik pengirim, pasti sebelumnya telah dienkripsi menggunakan kunci privat pengirim dan kunci privat tersebut hanya dimiliki oleh si pengirim.
  • Dokumen yang diterima terbukti isinya tidak diubah di tengah jalan pada waktu dikirimkan. Jika dokumen tersebut diubah di tengah jalan, D1 dan D2 tidak akan sama.



2.6              Kriptanalisis dan Serangan terhadap Kriptosistem
            Kriptografi menyebabkan timbulnya kriptanalisis, yaitu ilmu pengetahuan dan seni untuk membongkar data acak Praktisi dari kriptanalisis disebut kriptanalis. Kriptanalis berkembang sejalan dengan kriptografi. Setiap ada algoritma kriptografi baru yang dibuat oleh kriptografer, langsung diikuti oleh adanya upaya percobaan kriptanalisis. Percobaan kriptanalisis ini disebut attack (serangan).
            Kriptanalisis mencoba megembalikan data jelas tanpa akses ke ke kunci kriptografi. Ukuran keberhasilan suatu upaya kriptanalisis adalah sampai sejauh mana keberhasilan diketahuinya data jelas atau kunci kriptografi.
            Ada 6 tipe umum dari serangan cryptanalytic, diurutkan berdasarkan keunggulannya, setiap tipe tersebut dibuat dengan asumsi bahwa cryptanalyst tersebut telah memiliki pengetahuan tentang algoritma enkripsi apa yang digunakan  pada plaintext tersebut,
1.      Ciphertext-only attack.
Dalam serangan ini, kriptanalis hanya memiliki beberapa ciphertext yang dienkrip dengan menggunakan algoritma enkripsi yang sama. Tugas dari kriptanalis adalah mendapatkan kembali sebanyak mungkin pesan plaintext dari pesan ciphertext tersebut, atau lebih baik lagi jika dapat menemukan kunci yang digunakan, agar dapat digunakan kembali dalam medekrip pesan lain yang dienkripsi dengan algoritma dan kunci yang sama.

2.      Known-plaintext attack.
Kriptanalis tidak hanya memiliki akses ciphertext dari beberapa pesan tapi juga plaintext dari pesan tersebut. Tugas dari kriptanalis adalah menemukan kunci yang digunakan untuk mengenkrip pesan atau algoritma yang digunakan untuk mendekrip pesan-pesan baru yang dienkrip dengan kunci yang sama.
3.      Chosen-plaintext attack
Kriptanalis tidak hanya memiliki akses ke ciphertext dan plaintext yang bersangkutan untuk beberapa pesan, tetapi mereka juga dapat memilih plaintext yang dienkrip. Tipe ini lebih hebat daripada tipe yang kedua di atas (known-plaintext attack), karena kriptanalis dapat memilih sendiri blok plaintext yang ingin dienkrip. Tugasnya adalah untuk menemukan kunci yang digunakan untuk mengenkrip pesan atau algoritma yang digunakan untuk mengdekrip  pesan-pesan baru yang dienkrip dengan kunci yang sama.
4.      Adaptive-Chosen Plaintext.
Ini merupakan kasus khusus dari chosen-plaintext, dimana seorang kriptanalis tidak hanya dapat memilih plaintext yang dienkrip tetapi juga dapat mengubah pilihannya berdasarkan hasil enkrip dari enkripsi sebelumnya
5.      Chosen-ciphertext attack.
Kriptanalis dapat memilih ciphertext yang berbeda-beda untuk didekrip dan memiliki akses ke hasil yang telah didekrip.

6.      Chosen-key attack.
Dalam hal ini kriptanalis memiliki pengetahuan atau informasi mengenai kuncinya.

2.7              Aplikasi Kriptografi
2.7.1        Privacy
Privacy merupakan aplikasi paling nyata dari kriptografi. Kriptografi dapat digunakan untuk mengimplementasikan privacy hanya dengan mengenkrip informasi yang digunakan agar informasi tersebut tetap rahasia.

2.7.2        Digital Signature dan Authentication
Authentication adalah suatu proses untuk membuktikan dan mengidentifikasikan data tertentu. Misalnya seseorang ingin mengverifikasikan asal dokumen, identitas pengirim, waktu dan tanggal penandatanganan dari pengirim.         Digital Signature adalah tanda tangan digital dari suatu dokumen yang berisi potongan informasi yang didasarkan pada dokumen dan kunci rahasia penandatanganan.




2.7.3        Identification
Identifikasi adalah suatu proses melalui mana seseorang yakin tentang identitas orang lain atau entitas tertentu. Entitas dalam sebuah jaringan dapat juga mengidentifikasikan entitas lain dengan menggunakan metode kriptografi.
Otentikasi dan identifikasi adalah dua hal yang berbeda. Identifikasi mengharuskan pelaku verifikasi membandingkan informasi yang diberikan terhadap semua entitas yang diketahuinya. Sedangkan otentikasi membutuhkan pengecekan informasi tentang entitas tunggal yang diberikan dan diidentifikasi sebelumnya. Selanjutnya identifikasi harus mengidentifikasikan entitas secara unik sementara otentikasi tidak mengharuskan keunikan.

2.7.4        Protokol Kriptografi
            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.
            Protokol kriptografi 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.
            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 mengabstraksikan 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.

2.8              Landasan Matematis Kriptografi
2.8.1        Aritmatika Modular
Aritmatika modular merupakan operasi matematika yang banyak diimplementasikan pada metode kriptografi. Pada metoda GOST, operasi aritmetika modular yang dipakai adalah operasi penjumlahan modulo 232. Operasi modulo ini ditujukan untuk mengontrol panjang bit data agar tidak lebih dari 32 bit. Operasi modulo ini melibatkan bilangan 0 dan 1 saja sehingga identik dengan bit pada komputer.



2.8.2        Operasi XOR
            Operasi XOR (Exclusive OR) dilambangkan dengan simbol Å. Kemungkinan-kemungkinan nilai operasi XOR ini dapat dilihat pada tabel dibawah ini,
Tabel 2.2 Operasi XOR
A
B
A Å B
0
0
0
0
1
1
1
0
1
1
1
0

            Dari tabel diatas dapat dilihat sifat-sifat unik operasi XOR yaitu,
  • A Å A = 0
  • A Å 0 = A
  • A Å 1 = A’, dengan A’ adalah komplemen dari A.

2.8.3        Rotasi
            Rotasi bit merupakan operasi bit dengan memutar suatu barisan bit sebanyak yang diinginkan. Bit yang telah tergeser tidak akan hilang karena bit tersebut akan dipindahkan kesisi barisan bit yang berlawanan dengan arah putaran rotasi bit. Rotasi bit dibagi atas,
1.         Operasi Rotasi Kiri (Rotate Left) yaitu pemutaran barisan bit ke kiri  sebanyak nilai yang diberikan secara per bit, kemudian bit kosong yang telah tergeser di sebelah kanannya akan digantikan dengan bit yang telah tergeser di sebelah kirinya. Operasi Rotate Left biasanya dilambangkan dengan “<<<”. Berikut contoh operasi Rotate Left.
                        -  00111111 <<< 1 = 01111110
                        -  01111110 <<< 2 = 11111001
                        -  11111000 <<< 3 = 11000111
2.         Operasi Rotasi Kanan (Rotate Right) yaitu pemutaran barisan bit ke kanan sebanyak nilai yang diberikan secara per bit., kemudian bit kosong yang telah tergeser di sebelah kirinya akan digantikan dengan bit yang telah tergeser di sebelah kanannya. Operasi Rotate Right biasanya dilambangkan dengan “<<<”. Berikut contoh operasi Rotate Right.
                        -  00111111 >>> 1 = 10011111
                        -  01111110 >>> 2 = 10011111
                        -  11111000 >>> 3 = 00011111

2.9              Metoda GOST
GOST merupakan singkatan dari “Gosudarstvennyi Standard” atau “Government Standard”. Metoda GOST merupakan suatu algoritma block cipher yang dikembangkan oleh seorang berkebangsaan Uni Soviet. Metoda ini dikembangkan oleh pemerintah Uni Soviet pada masa perang dingin untuk menyembunyikan data atau informasi yang bersifat rahasia pada saat komunikasi. Algoritma ini merupakan suatu algoritma enkripsi sederhana yang memiliki jumlah proses sebanyak 32 round (putaran) dan menggunakan 64 bit block cipher dengan 256 bit key. Metoda GOST juga menggunakan 8 buah S-Box yang berbeda-beda dan operasi XOR serta Left Circular Shift.
Kelemahan GOST yang diketahui sampai saat ini adalah karena key schedule-nya yang sederhana sehingga pada keadaan tertentu menjadi titik lemahnya terhadap metoda kriptanalisis seperti Related-key Cryptanalysis. Tetapi hal ini dapat diatasi dengan melewatkan kunci kepada fungsi hash yang kuat secara kriptografi seperti SHA-1, kemudian menggunakan hasil hash untuk input inisialisasi kunci. Kelebihan dari metoda GOST ini adalah kecepatannya yang cukup baik, walaupun tidak secepat Blowfish tetapi lebih cepat dari IDEA.
Komponen dari metoda GOST antara lain,
      Key Store Unit (KSU) menyimpan 256 bit string dengan menggunakan 32 bit register (K0, K1, …, K7).
      Dua buah 32 bit register (R1, R2).
      32 bit adder modulo 232 (CM1).
      Bitwise Adder XOR (CM2).
      Substitusion block (S) yaitu berupa 8 buah 64 bit S-Box.
      Rotasi Left shift register (R) sebanyak 11 bit.


2.9.1        Proses Pembentukan Kunci
Proses pembentukan kunci dapat dilihat pada penjabaran berikut ini,
      Input key berupa 256 bit key dengan perincian k1, k2, k3, k4, …, k256.
      Input key tersebut dikelompokkan dan dimasukkan ke dalam 8 buah KSU dengan aturan seperti berikut,
            K0 = (k32, …, k1)
            K1 = (k64, …, k33)
            K2 = (k96, …, k65)
            K3 = (k128, …, k97)
            K4 = (k160, …, k129)
K5 = (k192, …, k161)
K6 = (k224, …, k193)
            K7 = (k256, …, k225)

2.9.2        Proses Enkripsi
Proses enkripsi dari metoda GOST untuk satu putaran (iterasi) dapat dapat dilihat pada penjabaran berikut ini,
  1. 64 bit plaintext dibagi menjadi 2 buah bagian 32 bit, yaitu Li dan Ri.
            Caranya : Input a1(0), a2(0), …, a32(0), b1(0), …, b32(0)
            R0 = a32(0), a31(0), …, a1(0)
            L0 = b32(0), b31(0), …, b1(0)
  1. (Ri + Ki) mod 232. Hasil dari penjumlahan modulo 232 berupa 32 bit.
  2. Hasil dari penjumlahan modulo 232 dibagi menjadi 8 bagian, dimanan masing-masing bagian terdiri dari 4 bit. Setiap bagian dimasukkan ke dalam tabel S-Box yang berbeda, 4 bit pertama menjadi input dari S-Box pertama, 4 bit kedua menjadi S-Box kedua, dan seterusnya.
S-Box yang digunakan pada metoda GOST adalah seperti berikut,
Tabel 2.3 S-Box dari Metoda GOST
Tabel
S-Box
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
S-Box 0
4
10
9
2
13
8
0
14
6
11
1
12
7
15
5
3
S-Box 1
14
11
4
12
6
13
15
10
2
3
8
1
0
7
5
9
S-Box 2
5
8
1
13
10
3
4
2
14
15
12
7
6
0
9
11
S-Box 3
7
13
10
1
0
8
9
15
14
4
6
12
11
2
5
3
S-Box 4
6
12
7
1
5
15
13
8
4
10
9
14
0
3
11
2
S-Box 5
4
11
10
0
7
2
1
13
3
6
8
5
9
12
15
14
S-Box 6
13
11
4
1
3
15
5
9
0
10
14
7
6
8
2
12
S-Box 7
1
15
13
0
5
7
10
4
9
2
3
14
6
11
8
12

Cara melihat dari S-Box yaitu input biner diubah menjadi bilangan desimal dan hasilnya menjadi urutan bilangan dalam S-Box.
Tabel 2.3 Penjelasan Cara Kerja S-Box dari Metoda GOST
Posisi
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
S-Box 1
4
10
9
2
13
8
0
14
6
11
1
12
7
15
5
3
Contoh, jika data input ke S-Box adalah 5 maka dicari data pada posisi ke-5. Output yang dihasilkan adalah 8.
  1. Hasil yang didapat dari substitusi ke S-Box dan digabungkan kembali menjadi 32 bit dan kemudian dilakukan rotasi left shift sebanyak 11 bit.
  2. Ri+1 = Ri (hasil dari rotate left shift) XOR Li.
  3. Li+1 = Ri sebelum dilakukan proses.
Proses penjumlahan modulo 232, S-Box, Rotate Left Shift dilakukan sebanyak 32 kali (putaran) dengan penggunaan kunci pada masing-masing putaran berbeda-beda sesuai dengan aturan berikut ini,
            Putaran 0 – 7               : K0, K1, K2, …, K7
            Putaran 8 – 15             : K0, K1, K2, …, K7
            Putaran 16 – 23           : K0, K1, K2, …, K7
            Putaran 24 – 31           : K7, K6, K5, …, K0
Untuk putaran ke-31, langkah 5 dan 6 agak sedikit berbeda. Langkah 5 dan 6 untuk putaran 31 adalah sebagai berikut,
            R32 = R31 sebelum dilakukan proses
            L32 = L31 XOR R31
Sehingga, ciphertext yang dihasilkan adalah
            L32 : b(32), b(31), …, b(1)
            R32 : a(32), a(31), …, a(1)
            T = a(1), …, a(32), b(1), …, b(32)
Proses enkripsi dari metoda GOST dapat digambarkan dalam bentuk skema seperti berikut ini,
Gambar 2.11 Skema Proses Enkripsi Metoda GOST
2.9.3        Proses Dekripsi
            Proses dekripsi merupakan proses kebalikan dari proses enkripsi. Penggunaan kunci pada masing-masing putaran pada proses dekripsi adalah sebagai berikut,
            Putaran 0 – 7               : K0, K1, K2, …, K7
            Putaran 8 – 15             : K7, K6, K5, …, K0
            Putaran 16 – 23           : K7, K6, K5, …, K0
            Putaran 24 – 31           : K7, K6, K5, …, K0
Algoritma yang digunakan untuk proses dekripsi sama dengan proses enkripsi dengan aturan untuk langkah 5 dan 6 pada putaran ke-31 adalah sebagai berikut,
            R32 = R31 sebelum dilakukan proses.
            L32 = R31 XOR L31.
Plaintext yang dihasilkan pada proses dekripsi adalah,
            L32 = b(32), b(31), …, b(1)
            R32 = a(32), a(31), …, a(1)
            P = a(1), …, a(32), b(1), …, b(32)
Proses dekripsi dari metoda GOST dapat digambarkan dalam bentuk skema seperti berikut ini,




Gambar 2.12 Skema Proses Dekripsi Metoda GOST
2.10          Perangkat Lunak Pembelajaran

            Seiring dengan perkembangan peradaban manusia dan kemajuan pesat di bidang teknologi, tanpa disadari komputer telah ikut berperan dalam dunia pendidikan terutama penggunaannya sebagai alat bantu pengajaran. Percobaan penggunaan komputer untuk proses belajar dimulai di Amerika Serikat pada akhir tahun 1950-an dan awal tahun 1960-an. Kemudian penelitian selanjutnya dilakukan oleh Harvard University bekerja sama dengan IBM pada tahun 1965. Setelah munculnya komputer mikro, sistem pengajaran dengan komputer menjadi semakin meluas pada pengembangan aplikasi perangkat lunak ajar yang dikenal dengan istilah perangkat lunak pembelajaran. Perangkat lunak pembelajaran dengan komputer muncul dari sejumlah disiplin ilmu, terutama ilmu komputer dan psikologi. Dari ilmu komputer dan matematika muncul program – program yang membuat semua perhitungan dan fungsi lebih mudah dan bermanfaat. Sedangkan dari ilmu psikologi muncul pengetahuan mengenai teori belajar, teknik belajar, serta motivasi yang baik.


2.10.1    Tujuan Perangkat Lunak Pembelajaran
Tujuan dari perangkat lunak pembelajaran antara lain :
1.      Peningkatan pengawasan
2.      Penggunaan sumber daya
3.      Individualisasi
4.      Ketepatan waktu dan tingkat ketersediaan
5.      Pengurangan waktu latihan
6.      Perbaikan hasil kerja
7.      Alat yang nyaman dipakai
8.      Pengganti cara belajar
9.      Peningkatan kepuasan belajar
10.    Pengurangan waktu pengembangan

2.10.2    Jenis-Jenis Perangkat Lunak Pembelajaran
            Jenis pemakaian komputer untuk perangkat lunak pembelajaran digolongkan menjadi tiga bagian, yaitu :
1.      Pengujian
Dalam jenis CBT, komputer digunakan untuk memberikan penilaian dan analisis tes, membuat soal tes, membuat nilai acak, tes interaksi, dan tes adaptasi. Jenis ini sering disebut dengan Computer Assisted Testing (CAT).
2.      Manajemen
Jenis pemakaian ini disebut dengan Computer Managed Instruction (CMI), dimana komputer digunakan untuk mengatur kemajuan peserta pelatihan dan alat-alat yang dipakai. CMI biasanya digunakan untuk meningkatkan pengawasan dan efisiensi dalam sistem pelatihan.


3.      Instruksi
Ada dua bentuk yang hampir sama mengenai pengguna komputer untuk instruksi. Computer Assisted Instruction (CAI), menganggap komputer sebagai media penyimpanan instruksi sama seperti slide, tape, video atau buku-buku. Menurut sudut pandang CAI, masalah utamanya adalah bagaimana menyusun bahan-bahan instruksi yang akan ditampilkan oleh komputer dengan cara yang paling efektif. Ada tiga jenis CAI yakni :
a.      Drill and Practice
Merupakan cara yang paling mudah, terdiri dari tahap-tahap penampilan permasalahan, penerimaan respon pengguna, pemberian hasil analisis, umpan balik, dan pemberian pertanyaan lain. Secara umum jenis ini tidak menampilkan informasi baru tapi memberikan latihan dari konsep yang sudah ada.
b.      Tutorial
Jenis ini berisi konsep atau prosedur yang disertai dengan pertanyaan atau latihan pada akhir dari pelatihan. Selama pelatihan, komputer mengajarkan informasi-informasi yang baru kepada siswa seperti layaknya seorang guru pembimbing. Setelah itu, pemahaman siswa diukur melalui serangkaian tes dan komputer melanjutkan pengajaran berdasarkan hasil pengukuran tadi.


c.       Socratic
Berisi komunikasi antara pengguna dan komputer dalam natural language. Jenis ini sebenarnya berasal dari penelitian dalam bidang intelijensia semu (artificial intelligence). Socratic mampu melakukan interaksi dalam natural language dan bisa memahami apa yang ditanyakan pengguna.

2.10.3    Langkah-Langkah Pengembangan Perangkat Lunak Pembelajaran
Ada 5 tahap siklus pengembangan perangkat lunak pembelajaran yaitu :
1.      Pengembangan spesifikasi perancangan detail
Tujuan dari pengembangan spesifikasi perancangan detail ini meliputi perluasan konsep perancangan untuk menciptakan suatu rencana yang efektif.
2.      Pengembangan teknik
Pengembangan ini biasanya dilakukan dengan persetujuan dari tim perancang. Tahap ini biasanya akan diulang-ulang dan sering terjadi perbaikan.
3.      Evaluasi
Untuk menghasilkan suatu perangkat lunak pembelajaran yang dapat memenuhi standar maka perlu dilakukan suatu pengujian. Pengujian biasanya dilakukan pada bagian pelajaran dan pelatihan. Hasil dari pengujian inilah yang dievaluasi oleh tim perancang.


4.      Produksi dan pengembangan
Produksi ini harus dilakukan secara teknis dan logis, baik dalam penyalinan produk CAI maupun dalam pembuatan dokumentasi. Sedangkan pengembangan yang dilakukan mengacu pada proses pengembangannya.
5.      Evaluasi akhir
Langkah pengujian yang dapat dilakukan misalnya dengan melakukan suatu kuisioner maupun konsultasi dengan mereka yang ingin belajar. Hasilnya dapat menjadi pedoman apakah perangkat lunak pembelajaran tersebut perlu dilakukan perbaikan lagi atau tidak.

2.10.4    Keuntungan Perangkat Lunak Pembelajaran
            Ada beberapa keuntungan yang bisa diraih dari suatu perangkat lunak pembelajaran dengan komputer yang interakif yaitu :
1.      Meningkatkan efektivitas pelatihan, seperti :
a.       Meningkatkan daya minat pengguna.
b.      Meningkatkan waktu pelatihan.
c.       Meningkatkan pengetahuan.
2.      Mengurangi waktu dan sumber daya pelatihan, seperti :
a.       Mengurangi waktu belajar selama pelatihan.
b.      Mengurangi instruktur pelatihan.
c.       Biaya pelatihan yang lebih rendah.
BAB III

PEMBAHASAN DAN PERANCANGAN

3.1  Pembahasan
Perangkat lunak pembelajaran ini akan dibuat dalam modul-modul belajar, yaitu :
  1. Modul Teori Kriptografi Metoda Gost.
  2. Modul tentang Penjelasan Proses Pembentukan Kunci.
  3. Modul tentang Penjelasan Proses Enkripsi.
  4. Modul tentang Penjelasan Proses Dekripsi.

3.1.1        Modul Teori Kriptografi Metoda GOST
Modul ini berisi teori-teori mengenai kriptografi metoda GOST. Modul ini dibagi menjadi 4 bagian, yaitu :
  1. Teori Kriptografi Metoda GOST.
Pada modul ini dijelaskan mengenai komponen dasar dan operasi-operasi yang digunakan pada metoda GOST.
  1. Teori Proses Pembentukan Kunci.
Pada modul ini dijelaskan mengenai proses pembentukan kunci pada metoda GOST.


  1. Teori Proses Enkripsi.
Pada modul ini dijelaskan mengenai proses kerja dari algoritma enkripsi, S-Box dan urutan kunci yang digunakan dalam proses enkripsi pada metoda GOST.
  1. Teori Proses Dekripsi.
Pada modul ini dijelaskan mengenai proses kerja dari algoritma dekripsi dan urutan kunci yang digunakan dalam proses dekripsi pada metoda GOST.

3.1.2        Modul tentang Penjelasan Proses Pembentukan Kunci
Proses pembentukan kunci ini memerlukan input data key dengan panjang 256 bit atau 64 digit heksadesimal atau 32 buah karakter. Proses ini dapat dilihat pada contoh berikut ini :
Misalkan key : ‘Kriptografi Metoda GOST, Rosmaya’, maka proses pembentukan kunci dari key di atas adalah sebagai berikut :
 1. KUNCI = 'Kriptografi Metoda GOST, Rosmaya'.
 2. Ubah kunci ke bentuk biner.
    'K' =  75 = 01001011
    'r' = 114 = 01110010
    'i' = 105 = 01101001
    'p' = 112 = 01110000
    't' = 116 = 01110100
    'o' = 111 = 01101111
    'g' = 103 = 01100111
    'r' = 114 = 01110010
    'a' =  97 = 01100001
    'f' = 102 = 01100110
    'i' = 105 = 01101001
    ' ' =  32 = 00100000
    'M' =  77 = 01001101
    'e' = 101 = 01100101
    't' = 116 = 01110100
    'o' = 111 = 01101111
    'd' = 100 = 01100100
    'a' =  97 = 01100001
    ' ' =  32 = 00100000
    'G' =  71 = 01000111
    'O' =  79 = 01001111
    'S' =  83 = 01010011
    'T' =  84 = 01010100
    ',' =  44 = 00101100
    ' ' =  32 = 00100000
    'R' =  82 = 01010010
    'o' = 111 = 01101111
    's' = 115 = 01110011
    'm' = 109 = 01101101
    'a' =  97 = 01100001
    'y' = 121 = 01111001
    'a' =  97 = 01100001
Hasil konversi kunci ke bentuk biner
= (k(1), k(2), k(3), ... , k(256))
=0100101101110010011010010111000001110100011011110110011101110010011000010110011001101001001000000100110101100101011101000110111101100100011000010010000001000111010011110101001101010100001011000010000001010010011011110111001101101101011000010111100101100001
 3. Kelompokkan hasil yang didapat pada K(0) - K(7)
    K(0) = k( 32), ... , k(  1) = 00001110100101100100111011010010
    K(1) = k( 64), ... , k( 33) = 01001110111001101111011000101110
    K(2) = k( 96), ... , k( 65) = 00000100100101100110011010000110
    K(3) = k(128), ... , k( 97) = 11110110001011101010011010110010
    K(4) = k(160), ... , k(129) = 11100010000001001000011000100110
    K(5) = k(192), ... , k(161) = 00110100001010101100101011110010
    K(6) = k(224), ... , k(193) = 11001110111101100100101000000100
    K(7) = k(256), ... , k(225) = 10000110100111101000011010110110
 4. Kunci K(0) - K(7) akan digunakan dalam proses enkripsi dan dekripsi.
    PROSES ENKRIPSI  =      Putaran  0 -  7 : K(0), K(1), K(2), ... , K(7)
                                      Putaran  8 - 15 : K(0), K(1), K(2), ... , K(7)
                                      Putaran 16 - 23 : K(0), K(1), K(2), ... , K(7)
                                      Putaran 24 - 31 : K(7), K(6), K(5), ... , K(0)
    PROSES DEKRIPSI =       Putaran  0 -  7 : K(0), K(1), K(2), ... , K(7)
                                      Putaran  8 - 15 : K(7), K(6), K(5), ... , K(0)
                                      Putaran 16 - 23 : K(7), K(6), K(5), ... , K(0)
                                      Putaran 24 - 31 : K(7), K(6), K(5), ... , K(0)

3.1.3        Modul tentang Penjelasan Proses Enkripsi
Proses enkripsi dari metoda GOST memproses input data plaintext 64 bit atau 16 digit heksadesimal atau 8 karakter dengan melalui 32 tahapan iterasi (putaran). Misalkan diambil hasil pembentukan kunci di atas dan plaintext ‘ENKRIPSI’, maka proses enkripsinya adalah sebagai berikut :
PROSES ENKRIPSI - PUTARAN 0
(1) PLAIN TEXT = 'ENKRIPSI'
    Konversi ke biner =
0100010101001110010010110101001001001001010100000101001101001001
    L(0) = 10010010110010100000101010010010
    R(0) = 01001010110100100111001010100010


(2) R(0) + K(0) mod 232
    R( 0) = 1255305890
    K( 0) = 244731602
   -------------------------------- +
    Hasil = 1500037492 mod 232
             = 1500037492
             = 01011001011010001100000101110100
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    0101 =  5 = SBOX(0) =  8 = 1000
    1001 =  9 = SBOX(1) =  3 = 0011
    0110 =  6 = SBOX(2) =  4 = 0100
    1000 =  8 = SBOX(3) = 14 = 1110
    1100 = 12 = SBOX(4) =  0 = 0000
    0001 =  1 = SBOX(5) = 11 = 1011
    0111 =  7 = SBOX(6) =  9 = 1001
    0100 =  4 = SBOX(7) =  5 = 0101
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=01110000010111001010110000011010
(5) R(1) = R(0) XOR L(0)
    R( 0) = 01110000010111001010110000011010
    L( 0) = 10010010110010100000101010010010
              -------------------------------------------------- XOR
    R( 1) = 11100010100101101010011010001000
(6) L(1) = R(0) sebelum proses.
    L(1) = 01001010110100100111001010100010

PROSES ENKRIPSI - PUTARAN 1
(1) L(1) = 01001010110100100111001010100010
    R(1) = 11100010100101101010011010001000



(2) R(1) + K(1) mod 232
    R( 1) = 3801523848
    K( 1) = 1323759150
   -------------------------------- +
    Hasil = 5125282998 mod 232
          = 830315702
          = 00110001011111011001110010110110
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    0011 =  3 = SBOX(0) =  2 = 0010
    0001 =  1 = SBOX(1) = 11 = 1011
    0111 =  7 = SBOX(2) =  2 = 0010
    1101 = 13 = SBOX(3) =  2 = 0010
    1001 =  9 = SBOX(4) = 10 = 1010
    1100 = 12 = SBOX(5) =  9 = 1001
    1011 = 11 = SBOX(6) =  7 = 0111
    0110 =  6 = SBOX(7) = 10 = 1010
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=00010101010010111101000101011001
(5) R(2) = R(1) XOR L(1)
    R( 1) = 00010101010010111101000101011001
    L( 1) = 01001010110100100111001010100010
   --------------------------------------------------- XOR
    R( 2) = 01011111100110011010001111111011
(6) L(2) = R(1) sebelum proses.
    L(2) = 11100010100101101010011010001000
o
o
o
PROSES ENKRIPSI - PUTARAN 31
(1) L(31) = 10110101101111001100010101011110
    R(31) = 10011000110000000111100010010101

(2) R(31) + K(0) mod 232
    R(31) = 2562750613
    K( 0) = 244731602
   -------------------------------- +
    Hasil = 2807482215 mod 232
          = 2807482215
          = 10100111010101101100011101100111
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    1010 = 10 = SBOX(0) =  1 = 0001
    0111 =  7 = SBOX(1) = 10 = 1010
    0101 =  5 = SBOX(2) =  3 = 0011
    0110 =  6 = SBOX(3) =  9 = 1001
    1100 = 12 = SBOX(4) =  0 = 0000
    0111 =  7 = SBOX(5) = 13 = 1101
    0110 =  6 = SBOX(6) =  5 = 0101
    0111 =  7 = SBOX(7) =  4 = 0100
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=11001000011010101010000011010001
(5) R(32) = R(31) sebelum proses.
    R(32) = 10011000110000000111100010010101
(6) L(32) = R(31) XOR L(31)
    R(31) = 11001000011010101010000011010001
    L(31) = 10110101101111001100010101011110
   ------------------------------------------------------ XOR
    L(32) = 01111101110101100110010110001111
(7) L(32) = b(32), b(31), ... b(1)
    R(32) = a(32), a(31), ... a(1)
    Hasil = a(1), ... a(32), b(1), ... b(32)
    Hasil dalam biner = 10101001000111100000
    0011000110011111000110100110011010111011
    1110 = ubah ke ascii
    CIPHER TEXT = ©‑

ñ¦k¾
3.1.4        Modul tentang Penjelasan Proses Dekripsi
Proses dekripsi merupakan kebalikan dari proses enkripsi. Proses dekripsi dari metoda GOST menggunakan algoritma yang sama dengan proses enkripsi. Misalkan diambil hasil pembentukan kunci dan ciphertext di atas, maka proses dekripsinya adalah sebagai berikut :
PROSES DEKRIPSI - PUTARAN 0
(1) CIPHER TEXT = '©‑

ñ¦k¾'
    Konversi ke biner =
 1010100100011110000000110001100111110001101001100110101110111110
    L(0) = 01111101110101100110010110001111
    R(0) = 10011000110000000111100010010101
(2) R(0) + K(0) mod 232
    R( 0) = 2562750613
    K( 0) = 244731602
   -------------------------------- +
    Hasil = 2807482215 mod 232
          = 2807482215
          = 10100111010101101100011101100111
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    1010 = 10 = SBOX(0) =  1 = 0001
    0111 =  7 = SBOX(1) = 10 = 1010
    0101 =  5 = SBOX(2) =  3 = 0011
    0110 =  6 = SBOX(3) =  9 = 1001
    1100 = 12 = SBOX(4) =  0 = 0000
    0111 =  7 = SBOX(5) = 13 = 1101
    0110 =  6 = SBOX(6) =  5 = 0101
    0111 =  7 = SBOX(7) =  4 = 0100
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=11001000011010101010000011010001

(5) R(1) = R(0) XOR L(0)
    R( 0) = 11001000011010101010000011010001
    L( 0) = 01111101110101100110010110001111
   ---------------------------------------------------- XOR
    R( 1) = 10110101101111001100010101011110
(6) L(1) = R(0) sebelum proses.
    L(1) = 10011000110000000111100010010101

PROSES DEKRIPSI - PUTARAN 1
(1) L(1) = 10011000110000000111100010010101
    R(1) = 10110101101111001100010101011110
(2) R(1) + K(1) mod 232
    R( 1) = 3049047390
    K( 1) = 1323759150
   -------------------------------- +
    Hasil = 4372806540 mod 232
          = 77839244
          = 00000100101000111011101110001100
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    0000 =  0 = SBOX(0) =  4 = 0100
    0100 =  4 = SBOX(1) =  6 = 0110
    1010 = 10 = SBOX(2) = 12 = 1100
    0011 =  3 = SBOX(3) =  1 = 0001
    1011 = 11 = SBOX(4) = 14 = 1110
    1011 = 11 = SBOX(5) =  5 = 0101
    1000 =  8 = SBOX(6) =  0 = 0000
    1100 = 12 = SBOX(7) =  6 = 0110
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=00001111001010000011001000110110



(5) R(2) = R(1) XOR L(1)
    R( 1) = 00001111001010000011001000110110
    L( 1) = 10011000110000000111100010010101
   ---------------------------------------------------- XOR
    R( 2) = 10010111111010000100101010100011
(6) L(2) = R(1) sebelum proses.
    L(2) = 10110101101111001100010101011110
o
o
o
PROSES DEKRIPSI - PUTARAN 31
(1) L(31) = 11100010100101101010011010001000
    R(31) = 01001010110100100111001010100010
(2) R(31) + K(0) mod 232
    R(31) = 1255305890
    K( 0) = 244731602
   -------------------------------- +
    Hasil = 1500037492 mod 232
          = 1500037492
          = 01011001011010001100000101110100
(3) Pecah menjadi 8 kelompok dan masukkan ke SBox.
    0101 =  5 = SBOX(0) =  8 = 1000
    1001 =  9 = SBOX(1) =  3 = 0011
    0110 =  6 = SBOX(2) =  4 = 0100
    1000 =  8 = SBOX(3) = 14 = 1110
    1100 = 12 = SBOX(4) =  0 = 0000
    0001 =  1 = SBOX(5) = 11 = 1011
    0111 =  7 = SBOX(6) =  9 = 1001
    0100 =  4 = SBOX(7) =  5 = 0101
(4) Hasil digabungkan kembali dan lakukan Rotate Left Shift sebanyak 11 kali.
    RLS(11)=01110000010111001010110000011010

(5) R(32) = R(31) sebelum proses.
    R(32) = 01001010110100100111001010100010
(6) L(32) = R(31) XOR L(31)
    R(31) = 01110000010111001010110000011010
    L(31) = 11100010100101101010011010001000
   ------------------------------------------------------- XOR
    L(32) = 10010010110010100000101010010010
(7) L(32) = b(32), b(31), ... b(1)
    R(32) = a(32), a(31), ... a(1)
    Hasil = a(1), ... a(32), b(1), ... b(32)
    Hasil dalam biner = 01000101010011100100
    1011010100100100100101010000010100110100
    1001 = ubah ke ascii
    PLAIN TEXT = ENKRIPSI

3.2  Perancangan
Perangkat lunak pembelajaran kriptografi metoda GOST ini dirancang dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0 dengan beberapa komponen standar seperti Microsoft Flex Grid, Text Box, Picture Box, Label, Shape, dan sebagainya. Selain itu, penulis juga menggunakan aplikasi Microsoft Visio untuk menggambarkan diagram metoda GOST dan slide tampilan Adobe Photoshop C.S. sebagai teori dasar metoda GOST.
Perangkat lunak pembelajaran ini dirancang dengan menggunakan MDIForm (Multiple Document Interface) sebagai form utama dengan beberapa form anak (child form) seperti :

  1. Form Teori.
  2. Form Input Kunci Enkripsi / Dekripsi.
  3. Form Input untuk Proses Enkripsi.
  4. Form Input untuk Proses Dekripsi.
  5. Form S-Box.
  6. Form Proses Pembentukan Kunci.
  7. Form Proses Enkripsi / Dekripsi.
  8. Form About.
Selain itu, perangkat lunak pembelajaran ini juga memiliki form Splash Screen sebagai form awal (pembuka).

3.2.1        Form Splash Screen

Gambar 3.1 Rancangan Form Splash Screen

Keterangan :
1   : judul topik skripsi.
2   : gambar icon dari perangkat lunak.
3   : data penyusun skripsi.

3.2.2        Form Main

Gambar 3.2 Rancangan Form Main

Keterangan :
1   : title bar, berisikan tulisan ‘Perangkat lunak pembelajaran kriptografi – metoda
      GOST’.
2   : tombol ‘Minimize’, berfungsi untuk mengecilkan tampilan formMain’.
3   : tombol ‘Maximize’, berfungsi untuk memperbesar tampilan formMain’.
4   : tombol ‘Close’, berfungsi untuk menutup form ‘Main’ dan keluar dari perangkat
       lunak.
5   : daerah tampilan form anak (child form).
6   : menu bar yang berisikan menu ‘File’, ‘Teori Kriptografi – GOST’, ‘Setting &
       Pembelajaran’, dan ‘About’.

Menu-menu yang terdapat pada form ‘Main’ dapat dirincikan sebagai berikut :
  1. Menu ‘File’, memiliki beberapa sub menu, antara lain :
    1. Sub menu ‘Buka’, berfungsi untuk menampilkan hasil eksekusi yang telah disimpan sebelumnya.
    2. Sub menu ‘Exit’, berfungsi untuk keluar dari perangkat lunak.
  2. Menu ‘Teori Kriptografi – GOST’, memiliki beberapa sub menu, antara lain :
    1. Sub menu ‘Kriptografi Metoda GOST’, berfungsi untuk menampilkan teori singkat mengenai metoda GOST.
    2. Sub menu ‘Proses Pembentukan Kunci’, berfungsi untuk menampilkan teori proses pembentukan kunci pada metoda GOST.
    3. Sub menu ‘Proses Enkripsi’, berfungsi untuk menampilkan teori proses enkripsi pada metoda GOST.
    4. Sub menu ‘Proses Dekripsi’, berfungsi untuk menampilkan teori proses dekripsi pada metoda GOST.
  3. Menu ‘Setting & Pembelajaran’ memiliki beberapa sub menu, antara lain :
    1. Sub menu ‘Tampilan output’, berfungsi untuk mengatur tampilan proses dalam bentuk bilangan biner atau heksadesimal. Sub menu ini terdiri dari 2 sub menu yaitu :
                                                              i.      ‘Biner’, untuk menampilkan proses dalam bentuk bilangan biner.
                                                            ii.      ‘Heksa’, untuk menampilkan proses dalam bentuk heksadesimal.
    1. Sub menu ‘S-BOX’, berfungsi untuk memanggil form ‘S-Box’.
    2. Sub menu ‘Proses Pembentukan Kunci’, berfungsi untuk memanggil form ‘Input Kunci Enkripsi / Dekripsi’.
    3. Sub menu ‘Proses Enkripsi’, berfungsi untuk memanggil formInput untuk Proses Enkripsi’.
    4. Sub menu ‘Proses Dekripsi’, berfungsi untuk memanggil formInput untuk Proses Dekripsi’.
  1. Menu ‘About’, berfungsi untuk memanggil formAbout’.






3.2.3        Form Teori
Gambar 3.3 Rancangan Form Teori

Keterangan :
1   : judul teori.
2   : daerah tampilan teori.
3   : tombol ‘BACK’, berfungsi untuk kembali ke halaman sebelumnya.
4   : tombol ‘NEXT’, berfungsi untuk lompat ke halaman selanjutnya.
5   : tombol ‘EXIT’, berfungsi untuk keluar dari form ‘Teori’ dan kembali ke form
       Main’.





3.2.4        Form Input Kunci Enkripsi / Dekripsi
Gambar 3.4 Rancangan Form Input Kunci Enkripsi / Dekripsi

Keterangan :
1   : title bar, berisikan tulisan ‘Proses Pembentukan Kunci’.
2   : tombol ‘Close’, berfungsi untuk menutup form ‘Input Kunci Enkripsi / Dekripsi’.
3   : textbox sebagai tempat pengisian input data kunci.
4   : tombol ‘PROSES’, berfungsi untuk menutup form ‘Input Kunci Enkripsi /
       Dekripsi’ dan memanggil form ‘Proses Pembentukan Kunci’.
5   : tombol ‘EXIT’, berfungsi untuk keluar dari form ‘Input Kunci Enkripsi /
       Dekripsi’ dan kembali ke formMain’.





3.2.5        Form Input untuk Proses Enkripsi
Gambar 3.5 Rancangan Form Input untuk Proses Enkripsi

Keterangan :
1   : title bar, berisikan tulisan ‘Proses Enkripsi’.
2   : tombol ‘Close’, berfungsi untuk menutup formInput untuk Proses Enkripsi’.
3   : textbox untuk input data plaintext.
4   : textbox untuk input data key.
5   : tombol ‘PROSES’, berfungsi untuk menutup formInput untuk Proses Enkripsi’
       dan memanggil form ‘Proses Enkripsi / Dekripsi’.
6   : tombol ‘EXIT’, berfungsi untuk keluar dari formInput untuk Proses
       Enkripsi’ dan kembali ke formMain’.



3.2.6        Form Input untuk Proses Dekripsi
Gambar 3.6 Rancangan Form Input untuk Proses Dekripsi

Keterangan :
1   : title bar, berisikan tulisan ‘Proses Dekripsi’.
2   : tombol ‘Close’, berfungsi untuk menutup formInput untuk Proses Dekripsi’.
3   : textbox untuk input data ciphertext.
4   : textbox untuk input data key.
5   : tombol ‘PROSES’, berfungsi untuk menutup formInput untuk Proses Dekripsi’
       dan memanggil form ‘Proses Enkripsi / Dekripsi’.
6   : tombol ‘EXIT’, berfungsi untuk keluar dari formInput untuk Proses
       Dekripsi’ dan kembali ke formMain’.



3.2.7        Form Proses Pembentukan Kunci
Gambar 3.7 Rancangan Form Proses Pembentukan Kunci

Keterangan :
1   : daerah tampilan algoritma dan hasil eksekusi pembentukan kunci.
2   : vertical scroll bar.
3   : scroll bar untuk mengatur kecepatan animasi.
4   : tombol ‘PLAY’ berfungsi untuk memulai proses pembentukan kunci.
5   : tombol ‘EXIT’, berfungsi untuk keluar dari form ‘Proses Pembentukan Kunci’
       dan kembali ke formMain’.
6   : tombol ‘Simpan’ berfungsi untuk menyimpan hasil proses eksekusi.
7   : tombol ‘Print’ berfungsi untuk mencetak hasil proses eksekusi melalui printer.

3.2.8        Form Proses Enkripsi / Dekripsi
Gambar 3.8 Rancangan Form Proses Enkripsi / Dekripsi

Keterangan :
1   : daerah tampilan teks ‘Putaran ke-xx’.
2   : daerah tampilan teks ‘Algoritma xxx’.
3   : daerah tampilan algoritma.
4   : daerah tampilan hasil eksekusi.
5   : daerah tampilan bagan algoritma.
6   : scroll bar untuk mengatur kecepatan animasi.
7   : tombol ‘BACK’ berfungsi untuk kembali ke langkah sebelumnya.
8   : tombol ‘NEXT’ berfungsi untuk lanjut ke langkah berikutnya.
9   : tombol ‘PLAY’ berfungsi untuk memulai proses yang berjalan secara otomatis.
10 : tombol ‘STOP’ berfungsi untuk menghentikan proses yang berjalan secara
       otomatis.
11 : tombol ‘EXIT’ berfungsi untuk keluar dari form ‘Proses Enkripsi / Dekripsi’ dan
       kembali ke formMain’.
12 : vertical scroll bar.
13 : tombol ‘Simpan’ berfungsi untuk menyimpan hasil proses eksekusi.
14 : tombol ‘Print’ berfungsi untuk mencetak hasil proses eksekusi melalui printer.

3.2.9        Form S-Box
Gambar 3.9 Rancangan Form S-Box


Keterangan :
1   : title bar, berisikan tulisan ‘Proses S-Box’.
2   : tombol ‘Close’, berfungsi untuk menutup formS-Box’.
3   : combo box untuk memilih S-Box yang diinginkan.
4   : textbox untuk memasukkan nilai input dari S-Box.
5   : tabel S-Box.
6   : daerah tampilan nilai output (hasil) dari S-Box.
7   : tombol ‘PROSES’, berfungsi untuk melakukan proses S-Box.
8   : tombol ‘EXIT’, berfungsi untuk menutup formS-Box’ dan kembali ke form
       ‘Main’.

3.2.10    Form About
Gambar 3.10 Rancangan Form About

Keterangan :
1   : title bar, berisikan tulisan ‘About’.
2   : tombol ‘Close’, berfungsi untuk menutup form ‘About’ dan kembali ke form
       Main’.
3   : gambar icon dari perangkat lunak.
4   : judul skripsi.
5   : data penyusun skripsi.
6   : tombol ‘OK’ untuk keluar dari form ‘About’ dan kembali ke formMain’.

3.2.11    Rancangan Message Box
Gambar 3.11 Rancangan Message Box
Keterangan :
1   : title bar.
2   : tombol ‘Close’, berfungsi untuk menutup message box.
3   : daerah tampilan pesan.
4   : tombol ‘OK’ untuk keluar dari message box.

BAB IV

ALGORITMA DAN IMPLEMENTASI


4.1       Algoritma

Algoritma perancangan perangkat lunak pembelajaran kriptografi metoda GOST dibagi menjadi 4 bagian yaitu,
  1. Algoritma Proses Pembentukan Kunci.
  2. Algoritma Proses Enkripsi.
  3. Algoritma Proses Dekripsi.
  4. Algoritma Tampilan Proses Pembentukan Kunci.
  5. Algoritma Tampilan Proses Enkripsi dan Dekripsi.

4.1.1        Algoritma Proses Pembentukan Kunci
Algoritma ini digunakan dalam proses enkripsi dan dekripsi, maka penulis merancang algoritma ini di dalam fungsi proses enkripsi dan dekripsi. Berikut merupakan algoritma proses pembentukan kunci :
    '----------------------------
    '     PEMBENTUKAN KUNCI
    '----------------------------
    ' *** Ubah kunci menjadi biner *** - 256 bit
    cKey1 = ""
    For I = 1 To Len(pcKey)
  Key1 = cKey1 & FormatStr(FDecToBiner(Asc(Mid(pcKey, I,
  1))),"0", 8)
    Next I
   
    ' *** Kelompokkan biner kunci ke array K *** - @32 bit
    For I = 0 To 7
        K(I) = FReverse(Mid(cKey1, (32 * I) + 1, 32))
    Next I
4.1.2        Algoritma Proses Enkripsi
Penulis merancang algoritma ini dalam bentuk fungsi yang memiliki dua parameter, yaitu plain text dan kunci yang digunakan dalam proses enkripsi. Fungsi ini mengembalikan cipher text yang telah dienkripsi dengan metoda GOST. Penulis menggabungkan algoritma pembentukan kunci di dalam algoritma enkripsi.
Berikut merupakan algoritma proses enkripsi,
'Fungsi Enkripsi Metoda GOST
Private Function GOSTEncrypt(pcText As String, pcKey As String) As String
    '----------------------------
    '       VALIDASI
    '----------------------------
    If Len(pcText) <> 8 Then
        MsgBox "Plain text harus 8 karakter !", vbCritical
        GOSTEncrypt = ""
        Exit Function
    End If
   
    If Len(pcKey) <> 32 Then
        MsgBox "Kunci encrypt harus 32 karakter !", vbCritical
        GOSTEncrypt = ""
        Exit Function
    End If
   
    '----------------------------
    '     PROSES ENKRIPSI
    '----------------------------
    ' *** SBox-0 ***
    SBox(0) = Array(4, 10, 9, 2, 13, 8, 0, 14, 6, 11, 1, 12, 7, 15,
                    5, 3)
   
    ' *** SBox-1 ***
    SBox(1) = Array(14, 11, 4, 12, 6, 13, 15, 10, 2, 3, 8, 1, 0, 7,
                    5, 9)
   
    ' *** SBox-2 ***
    SBox(2) = Array(5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0,
                    9, 11)
       
    ' *** SBox-3 ***
    SBox(3) = Array(7, 13, 10, 1, 0, 8, 9, 15, 14, 4, 6, 12, 11, 2,
                    5, 3)
   
    ' *** SBox-4 ***
    SBox(4) = Array(6, 12, 7, 1, 5, 15, 13, 8, 4, 10, 9, 14, 0, 3,
                    11, 2)
   
    ' *** SBox-5 ***
    SBox(5) = Array(4, 11, 10, 0, 7, 2, 1, 13, 3, 6, 8, 5, 9, 12,
                    15, 14)
       

    ' *** SBox-6 ***
    SBox(6) = Array(13, 11, 4, 1, 3, 15, 5, 9, 0, 10, 14, 7, 6, 8,
                    2, 12)
   
    ' *** SBox-7 ***
    SBox(7) = Array(1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11,
                    8, 12)
   
    '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    ' 01. LANGKAH 1 - Isi R(0) dan L(0)
    '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
   
    ' *** Ubah plain text menjadi biner *** - 64 bit
    cText1 = ""
    For I = 1 To Len(pcText)
        cText1 = cText1 & FormatStr(FDecToBiner(Asc(Mid(pcText, I,
                 1))), "0", 8)
    Next I
    cTextB1 = cText1
   
    'Bagi menjadi dua bagian - @32 bit
    R(0) = FReverse(Mid(cText1, 1, 32))
    L(0) = FReverse(Mid(cText1, 33, 64))
   
    For I = 0 To 31
       
        '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
        ' 02. LANGKAH 2 - (Ri + Ki) mod 2^32
        '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
        nTemp1 = FBinerToDec(R(I))          'R(i)
       
        If I < 24 Then
            'Putaran 0 - 23
            nTemp2 = FBinerToDec(K(I Mod 8))    'K(i)
        Else
            'Putaran 24 - 31
            nTemp2 = FBinerToDec(K(7 - (I Mod 8)))  'K(i)
        End If
       
        ' Hasil = (R(i) + K(i)) mod 2^32
        nTemp = FMod(nTemp1 + nTemp2, 2 ^ 32)
        cTemp = FormatStr(FDecToBiner(nTemp), "0", 32)
       
        'Simpan ke CM1
        CM1(I) = cTemp
       
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
' 03. Hasil dari langkah 2 dibagi menjadi 8 kelompok @4bit dan
' dimasukkkan ke SBox sesuai dengan posisi dan nilai dari masing2
' kelompok
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

        'Pecah menjadi 8 kelompok @4bit
        For J = 4 To (Len(cTemp)) Step 4
            nTemp = (J / 4) - 1             'Posisi kelompok
            ReDim Preserve ArrcTemp(nTemp)
            ArrcTemp(nTemp) = Mid(cTemp, (J - 3), 4)
        Next J
       
        'Masukkan ke S-Box
        For J = 0 To UBound(ArrcTemp)
           
            'Biner ke desimal
            nTemp1 = FBinerToDec(ArrcTemp(J))
           
            'Fungsi S-Box
            nTemp2 = SBox(J)(nTemp1)
           
            'Kembalikan hasil SBox
            ArrcTemp(J) = FormatStr(FDecToBiner(nTemp2), "0", 4)
        Next J
       
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
' 04. Hasil dari langkah 3 digabung kembali menjadi 32 bit
'     dan dilakukan rotasi Left Shift sebanyak 11 bit
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
       
        'Gabung menjadi 32 bit
        cTemp = ""
        For J = 0 To UBound(ArrcTemp)
            cTemp = cTemp & ArrcTemp(J)
        Next J
       
        'Simpan ke SBox
        S(I) = cTemp
       
        'Rotasi Left Shift sebanyak 11 bit
        cTemp = FRotateLeftShift(cTemp, 11)
       
        'Simpan ke RSL
        RSL(I) = cTemp




'--------------- LANGKAH 5 & 6 UNTUK 32 PUTARAN -------------------
       
        If I <> 31 Then
            '--------------
            'PUTARAN 0 - 30
            '--------------
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 05. R(i+1) = R(i) XOR L(i)
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            R(I + 1) = FXORBiner(cTemp, L(I), 32)
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 06. L(i+1) = R(i) sblm proses
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            L(I + 1) = R(I)
           
        Else
            '----------------------
            'PUTARAN 31 - TERAKHIR
            '----------------------
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 05. R(i+1) = R(i) sblm proses
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            R(I + 1) = R(I)
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 06. L(i+1) = R(i) XOR L(i)
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            L(I + 1) = FXORBiner(cTemp, L(I), 32)
        End If
       
    Next I
   
    cHasilEnkripsi = ""
    cTextB2 = ""
    'Hasil Enkripsi dari R(32)
    cTemp1 = FReverse(R(32))
    For I = 8 To 32 Step 8
        nTemp = (J / 8)
        cTextB2 = cTextB2 & Mid(cTemp1, I - 7, 8)
        cHasilEnkripsi = cHasilEnkripsi &
 Chr(FBinerToDec(Mid(cTemp1, I - 7, 8)))
    Next I
   
    'Hasil Enkripsi dari L(32)
    cTemp1 = FReverse(L(32))
    For I = 8 To 32 Step 8
        nTemp = (J / 8)
        cTextB2 = cTextB2 & Mid(cTemp1, I - 7, 8)
        cHasilEnkripsi = cHasilEnkripsi &
                         Chr(FBinerToDec(Mid(cTemp1, I - 7, 8)))
    Next I
   
    'Hasil Enkripsi Akhir
    GOSTEncrypt = cHasilEnkripsi
End Function

4.1.3        Algoritma Proses Dekripsi
Penulis merancang algoritma ini dalam bentuk fungsi yang memiliki dua parameter, yaitu cipher text dan kunci yang digunakan dalam proses dekripsi. Fungsi ini mengembalikan plain text yang telah didekripsi dengan metoda GOST.
Berikut merupakan algoritma proses dekripsi,
'Fungsi Dekripsi Metoda GOST
Private Function GOSTDecrypt(pcText As String, pcKey As String) As String
    '----------------------------
    '       VALIDASI
    '----------------------------
   
    If Len(pcText) <> 8 Then
        MsgBox "Plain text harus 8 karakter !", vbCritical
        GOSTDecrypt = ""
        Exit Function
    End If
   
    If Len(pcKey) <> 32 Then
        MsgBox "Kunci decrypt harus 32 karakter !", vbCritical
        GOSTDecrypt = ""
        Exit Function
    End If
   
   
    '----------------------------
    '     PROSES DEKRIPSI
    '----------------------------
    ' *** SBox-0 ***
    SBox(0) = Array(4, 10, 9, 2, 13, 8, 0, 14, 6, 11, 1, 12, 7, 15,
                    5, 3)
   
    ' *** SBox-1 ***
    SBox(1) = Array(14, 11, 4, 12, 6, 13, 15, 10, 2, 3, 8, 1, 0, 7,
                    5, 9)
   
    ' *** SBox-2 ***
    SBox(2) = Array(5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0,
                    9, 11)
       
    ' *** SBox-3 ***
    SBox(3) = Array(7, 13, 10, 1, 0, 8, 9, 15, 14, 4, 6, 12, 11, 2,
                    5, 3)
   
    ' *** SBox-4 ***
    SBox(4) = Array(6, 12, 7, 1, 5, 15, 13, 8, 4, 10, 9, 14, 0, 3,
                    11, 2)
   
    ' *** SBox-5 ***
    SBox(5) = Array(4, 11, 10, 0, 7, 2, 1, 13, 3, 6, 8, 5, 9, 12,
                    15, 14)
       
    ' *** SBox-6 ***
    SBox(6) = Array(13, 11, 4, 1, 3, 15, 5, 9, 0, 10, 14, 7, 6, 8,
                    2, 12)
   
    ' *** SBox-7 ***
    SBox(7) = Array(1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11,
                    8, 12)
   
    '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
    ' 01. LANGKAH 1 - Isi R(0) dan L(0)
    '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
   
    ' *** Ubah plain text menjadi biner *** - 64 bit
    cText1 = ""
    For I = 1 To Len(pcText)
        cText1 = cText1 & FormatStr(FDecToBiner(Asc(Mid(pcText, I,
                 1))), "0", 8)
    Next I
    cTextB1 = cText1
   
    'Bagi menjadi dua bagian - @32 bit
    R(0) = FReverse(Mid(cText1, 1, 32))
    L(0) = FReverse(Mid(cText1, 33, 64))
   

    For I = 0 To 31
       
        '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
        ' 02. LANGKAH 2 - (Ri + Ki) mod 2^32
        '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
        nTemp1 = FBinerToDec(R(I))          'R(i)
       
        If I < 8 Then
            'Putaran 0 - 7
            nTemp2 = FBinerToDec(K(I Mod 8))    'K(i)
        Else
            'Putaran 8 - 31
            nTemp2 = FBinerToDec(K(7 - (I Mod 8)))  'K(i)
        End If
       
        ' Hasil = (R(i) + K(i)) mod 2^32
        nTemp = FMod(nTemp1 + nTemp2, 2 ^ 32)
        cTemp = FormatStr(FDecToBiner(nTemp), "0", 32)
       
        'Simpan ke CM1
        CM1(I) = cTemp
       
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-        ' 03. Hasil dari langkah 2 dibagi menjadi 8 kelompok @4bit dan
' dimasukkkan ke SBox sesuai dengan posisi dan nilai dari masing2
' kelompok
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-       

        'Pecah menjadi 8 kelompok @4bit
        ReDim ArrcTemp(0)
        For J = 4 To (Len(cTemp)) Step 4
            nTemp = (J / 4) - 1             'Posisi kelompok
            ReDim Preserve ArrcTemp(nTemp)
            ArrcTemp(nTemp) = Mid(cTemp, (J - 3), 4)
        Next J
       
        'Masukkan ke S-Box
        For J = 0 To UBound(ArrcTemp)
           
            'Biner ke desimal
            nTemp1 = FBinerToDec(ArrcTemp(J))
           
            'Fungsi S-Box
            nTemp2 = SBox(J)(nTemp1)
           
            'Kembalikan hasil SBox
            ArrcTemp(J) = FormatStr(FDecToBiner(nTemp2), "0", 4)
        Next J

'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
' 04. Hasil dari langkah 3 digabung kembali menjadi 32 bit
'     dan dilakukan rotasi Left Shift sebanyak 11 bit
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
       
        'Gabung menjadi 32 bit
        cTemp = ""
        For J = 0 To UBound(ArrcTemp)
            cTemp = cTemp & ArrcTemp(J)
        Next J
       
        'Simpan ke S
        S(I) = cTemp
       
        'Rotasi Left Shift sebanyak 11 bit
        cTemp = FRotateLeftShift(cTemp, 11)
       
        'Simpan ke RSL
        RSL(I) = cTemp
       
'---------------- LANGKAH 5 & 6 UNTUK 32 PUTARAN -------------------
       
        If I <> 31 Then
            '--------------
            'PUTARAN 0 - 30
            '--------------
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 05. R(i+1) = R(i) XOR L(i)
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            R(I + 1) = FXORBiner(cTemp, L(I), 32)
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 06. L(i+1) = R(i) sblm proses
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            L(I + 1) = R(I)
           
        Else
            '----------------------
            'PUTARAN 31 - TERAKHIR
            '----------------------
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 05. R(i+1) = R(i) sblm proses
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            R(I + 1) = R(I)
           
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            ' 06. L(i+1) = R(i) XOR L(i)
            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
            L(I + 1) = FXORBiner(cTemp, L(I), 32)
        End If
    Next I
    cHasilDekripsi = ""
   
    'Hasil Dekripsi dari R(32)
    cTextB2 = ""
    cTemp1 = FReverse(R(32))
    For I = 8 To 32 Step 8
        nTemp = (J / 8)
        cTextB2 = cTextB2 & Mid(cTemp1, I - 7, 8)
        cHasilDekripsi = cHasilDekripsi &
 Chr(FBinerToDec(Mid(cTemp1, I - 7, 8)))
    Next I
   
    'Hasil Enkripsi dari L(32)
    cTemp1 = FReverse(L(32))
    For I = 8 To 32 Step 8
        nTemp = (J / 8)
        cTextB2 = cTextB2 & Mid(cTemp1, I - 7, 8)
        cHasilDekripsi = cHasilDekripsi &
 Chr(FBinerToDec(Mid(cTemp1, I - 7, 8)))
    Next I

    'Hasil Dekripsi Akhir
    GOSTDecrypt = cHasilDekripsi
End Function

4.1.4        Algoritma Tampilan Proses Pembentukan Kunci
Algoritma ini menampilkan prosedur pembentukan kunci pada metoda GOST. Cara kerja algoritma ini adalah sebagai berikut,
Private Sub BentukKunci()
   
    txtEksekusi.Text = vbCrLf & " 1. KUNCI = '" & strKey & "'"
       
    txtEksekusi.Text = txtEksekusi.Text & vbCrLf & vbCrLf & " 2.
     Ubah kunci ke bentuk biner."

    '02. Panjang kunci = 32 karakter -> ganti jadi ascii
    cKey1 = ""
    For I = 1 To 32
        'Karakter ke - i
        cKarakter = Mid(strKey, I, 1)
       
        'Bentuk biner
        cKey2 = FormatStr(FDecToBiner(Asc(cKarakter)), "0", 8)
        cKey1 = cKey1 & cKey2
     
  'Hasil Eksekusi
        txtEksekusi.Text = txtEksekusi.Text & vbCrLf & "    '" &
   cKarakter & "' = " & _
                           FormatStr(Asc(cKarakter), " ", 3) & " = "
   & cKey2
        'Tampilkan heksa
        If bBiner = False Then
            txtEksekusi = txtEksekusi.Text & " = " &
  GetBentukP(cKey2, bBiner)
        End If
       
    Next I
   
    txtEksekusi.Text = txtEksekusi.Text & vbCrLf & vbCrLf & _
                  "    Hasil konversi kunci ke bentuk biner =
(k(1), k(2), k(3), ... , k(256)) = " & vbCrLf & _
                  "    " & Left(cKey1, 82) & vbCrLf & _
                  "    " & Mid(cKey1, 83, 82) & vbCrLf & _
                  "    " & Mid(cKey1, 165, 82) & vbCrLf & "    " &
Right(cKey1, 10)
   
    'Tampilkan heksa
    If bBiner = False Then
        txtEksekusi = txtEksekusi.Text & " = " & GetBentukP(cKey1,
    bBiner)
    End If
   
    '03. KUNCI - K(0) - K(7)
    txtEksekusi.Text = txtEksekusi.Text & vbCrLf & vbCrLf & _
               " 3. Kelompokkan hasil yang didapat pada K(0) - K(7)"
   
    For I = 0 To 7
        'Kunci K(I)
        J = (32 * I) + 1
        cKey2 = FReverse(Mid(cKey1, J, 32))
        txtEksekusi.Text = txtEksekusi.Text & vbCrLf & _
                           "    K(" & I & ") = k(" & FormatStr(J +
   31, " ", 3) & "), " & _
                           "... , k(" & FormatStr(J, " ", 3) & ") =
   " & cKey2
        'Tampilkan heksa
        If bBiner = False Then
            txtEksekusi = txtEksekusi.Text & " = " &
  GetBentukP(cKey2, bBiner)
        End If
    Next I
   
    '04. KUNCI - K(0) - K(7)
    txtEksekusi.Text = txtEksekusi.Text & vbCrLf & vbCrLf & _
                " 4. Kunci K(0) - K(7) akan digunakan dalam
    proses enkripsi dan dekripsi." & vbCrLf & vbCrLf & _
                "    PROSES ENKRIPSI -> Putaran  0 -  7 : K(0),
    K(1), K(2), ... , K(7) " & vbCrLf & _
                "                       Putaran  8 - 15 : K(0),
    K(1), K(2), ... , K(7) " & vbCrLf & _
                "                       Putaran 16 - 23 : K(0),
    K(1), K(2), ... , K(7) " & vbCrLf & _
                "                       Putaran 24 - 31 : K(7),
    K(6), K(5), ... , K(0) " & vbCrLf & vbCrLf & _
                "    PROSES DEKRIPSI -> Putaran  0 -  7 : K(0),
    K(1), K(2), ... , K(7) " & vbCrLf & _
                "                       Putaran  8 - 15 : K(7),
    K(6), K(5), ... , K(0) " & vbCrLf & _
                "                       Putaran 16 - 23 : K(7),
    K(6), K(5), ... , K(0) " & vbCrLf & _
                "                       Putaran 24 - 31 : K(7),
    K(6), K(5), ... , K(0) "
End Sub
4.1.5        Algoritma Tampilan Proses Enkripsi dan Dekripsi
Algoritma ini menampilkan prosedur proses enkripsi dan dekripsi pada metoda GOST. Cara kerja algoritma ini adalah sebagai berikut,
Private Sub cmdPlay_Click()
   
    If cmdPlay.Caption = "&PLAY" Then
       
        'PLAY
        bPause = False
        bResume = True

        '*-*-*-*-*-*-*- LOOPING
        While (bPause = False) And bResume
           
            'Text di awal
            If nLangkah2 = 1 Then
                'Hasil Eksekusi
         txtHasil.Text = IIf(nLangkah1 = 0, "", txtHasil.Text   &
   vbCrLf & vbCrLf) & _
         "--------------------------------------------" & vbCrLf & _
         "       PROSES " & cTipeProses & " - PUTARAN " & nLangkah1
   & vbCrLf & "--------------------------------------------"
            End If

            '****************** STARTS *******************
           
            'Pict - Skema
            If nLangkah1 = 0 Then
                nPict = 1
            ElseIf nLangkah1 = 31 Then
                nPict = 3
            Else
                nPict = 2
            End If
           
            'Load picture
            PictSkema.Picture = LoadPicture(App.Path &
"\Images\Skema_" & nPict & "_" & nLangkah2 & ".gif")
           


            '*- Grid Algoritma -*
            If nLangkah1 = 0 Then
                Select Case nLangkah2
                    Case 1  'Langkah - 1
                            Call PHighlight(grdAlgoritma, 0, 4)
                    Case 2  'Langkah - 2
                            Call PDelHighlight(grdAlgoritma, 0, 4)
                            Call PHighlight(grdAlgoritma, 6, 7)
                    Case 3  'Langkah - 3
                            Call PDelHighlight(grdAlgoritma, 6, 7)
                            Call PHighlight(grdAlgoritma, 9, 10)
                    Case 4  'Langkah - 4
                            Call PDelHighlight(grdAlgoritma, 9, 10)
                            Call PHighlight(grdAlgoritma, 12, 13)
                    Case 5 'Langkah - 5
                            Call PDelHighlight(grdAlgoritma, 12, 13)
                            Call PHighlight(grdAlgoritma, 15, 15)
                    Case 6 'Langkah - 6
                            Call PDelHighlight(grdAlgoritma, 15, 15)
                            Call PHighlight(grdAlgoritma, 17, 17)
                    Case 7 'Langkah - 7
                            Call PDelHighlight(grdAlgoritma, 17, 17)
                            Call PHighlight(grdAlgoritma, 19, 19)
                End Select
            ElseIf nLangkah1 = 31 Then
                Select Case nLangkah2
                    Case 1: Call PHighlight(grdAlgoritma, 0, 0)
                    Case 2  'Langkah - 2
                            Call PDelHighlight(grdAlgoritma, 0, 0)
                            Call PHighlight(grdAlgoritma, 2, 3)
                    Case 3  'Langkah - 3
                            Call PDelHighlight(grdAlgoritma, 2, 3)
                            Call PHighlight(grdAlgoritma, 5, 6)
                    Case 4  'Langkah - 4
                            Call PDelHighlight(grdAlgoritma, 5, 6)
                            Call PHighlight(grdAlgoritma, 8, 9)
                    Case 5 'Langkah - 5
                            Call PDelHighlight(grdAlgoritma, 8, 9)
                            Call PHighlight(grdAlgoritma, 11, 11)
                    Case 6 'Langkah - 6
                            Call PDelHighlight(grdAlgoritma, 11, 11)
                            Call PHighlight(grdAlgoritma, 13, 13)
                    Case 7 'Langkah - 7
                            Call PDelHighlight(grdAlgoritma, 13, 13)
                            Call PHighlight(grdAlgoritma, 15, 17)
                End Select
            Else
                Select Case nLangkah2
                    Case 1: Call PHighlight(grdAlgoritma, 0, 0)
                    Case 2  'Langkah - 2
                            Call PDelHighlight(grdAlgoritma, 0, 0)
                            Call PHighlight(grdAlgoritma, 2, 3)
                    Case 3  'Langkah - 3
                            Call PDelHighlight(grdAlgoritma, 2, 3)
                            Call PHighlight(grdAlgoritma, 5, 6)
                    Case 4  'Langkah - 4
                            Call PDelHighlight(grdAlgoritma, 5, 6)
                            Call PHighlight(grdAlgoritma, 8, 9)
                    Case 5 'Langkah - 5
                            Call PDelHighlight(grdAlgoritma, 8, 9)
                            Call PHighlight(grdAlgoritma, 11, 11)
                    Case 6 'Langkah - 6
                            Call PDelHighlight(grdAlgoritma, 11, 11)
                            Call PHighlight(grdAlgoritma, 13, 13)
                    Case 7 'Langkah - 7
                            Call PDelHighlight(grdAlgoritma, 13, 13)
                            Call PHighlight(grdAlgoritma, 15, 15)
                End Select
            End If

            '*- Hasil Eksekusi -*
            Select Case nLangkah2
                Case 1  'Hasil Eksekusi Langkah - 1
                        If nLangkah1 = 0 Then
                          txtHasil.Text = txtHasil.Text & vbCrLf & _
                          "(1) " & lblText1 & " = '" &
  IIf(cTipeProses = "ENKRIPSI",
  strPlainText, strCipherText) & "'" &
  vbCrLf & _
                          "    Konversi ke " & IIf(bBiner, "biner =
  " & Left(cTextB1, 20) & vbCrLf & _
                          "    " & Mid(cTextB1, 21, 40) & vbCrLf & _
                          "    " & Mid(cTextB1, 61, 4), "heksa = " &
  GetBentukP(cTextB1, False)) & vbCrLf & _
                          "    L(0) = " & GetBentukP(L(0), bBiner) &
  vbCrLf & _
                          "    R(0) = " & GetBentukP(R(0), bBiner)
                        Else
                          txtHasil.Text = txtHasil.Text & vbCrLf & _
                          "(1) L(" & nLangkah1 & ") = " &
                       GetBentukP(L(nLangkah1), bBiner) & vbCrLf & _
                          "    R(" & nLangkah1 & ") = " &
     GetBentukP(R(nLangkah1), bBiner)
                        End If
                
                Case 2  'Langkah 2 - CM1 (Adder Modulo 2^32)
                        nT1 = FBinerToDec(R(nLangkah1))       'R(i)
                        nT2 = FBinerToDec(K(Val(lblKSU.Tag))) 'K(i)
                       
                        txtHasil.Text = txtHasil.Text & vbCrLf &
vbCrLf & _
                        "(2) R(" & nLangkah1 & ") + K(" & lblKSU.Tag
& ") mod 2^32" & vbCrLf & vbCrLf & _
                        "    R(" & FormatStr(nLangkah1, " ", 2) & ")
= " & nT1 & vbCrLf & _
                        "    K(" & FormatStr(lblKSU.Tag, " ", 2) &
") = " & nT2 & vbCrLf & _
                        "   " & String(32, "-") & " + " & vbCrLf & _
                        "    Hasil = " & nT1 + nT2 & " mod 2^32 " &
vbCrLf & _
                        "          = " & FMod(nT1 + nT2, 2 ^ 32) &
vbCrLf & "          = " & GetBentukP(CM1(nLangkah1), bBiner)
                                       
                Case 3  'Langkah 3 - S-BOX
                       
                        txtHasil.Text = txtHasil.Text & vbCrLf &
vbCrLf & _
                        "(3) Pecah menjadi 8 kelompok dan masukkan
ke" & vbCrLf & "    SBox."
                       
                        'Masukkan ke S-Box
                        For J = 0 To 7
                          'Pecah menjadi 8 kelompok @4bit
                          cT1 = Mid(CM1(nLangkah1), (J * 4) + 1, 4)
                           
                          'Biner ke desimal
                          nT1 = FBinerToDec(cT1)
                          
                          'Fungsi S-Box
                          nT2 = SBox(J)(nT1)
                           
                          'Kembalikan hasil SBox
                          cT2 = FormatStr(FDecToBiner(nT2), "0", 4)
                           
                          txtHasil = txtHasil & vbCrLf & _
                          "    " & GetBentukP(cT1, bBiner) & " = " &
  FormatStr(nT1, " ", 2) & _
                          " -> SBOX(" & J & ") -> " & FormatStr(nT2,
  " ", 2) & " = " & GetBentukP(cT2, bBiner)
                        Next J
                       
                Case 4  'Langkah 4 - R (Rotate Left Shift)
                        txtHasil.Text = txtHasil.Text & vbCrLf &
vbCrLf & _
                        "(4) Hasil digabungkan kembali dan lakukan"
& vbCrLf & _
                        "    Rotate Left Shift sebanyak 11 kali."
                        cT1 = S(nLangkah1)
                        For J = 1 To 11
                          'Rotasi Left Shift sebanyak 11 bit
                          cT1 = FRotateLeftShift(cT1, 1)
                          txtHasil.Text = txtHasil.Text & vbCrLf & _
                          "    RLS(" & FormatStr(J, " ", 2) & ")=" &
  GetBentukP(cT1, bBiner)
                        Next J
                       
                Case 5  'Langkah 5 - R(i+1)
                        If nLangkah1 <> 31 Then
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            ' 05. R(i+1) = R(i) XOR L(i)
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            txtHasil.Text = txtHasil.Text & vbCrLf &
    vbCrLf & _
                            "(5) R(" & nLangkah1 + 1 & ") = R(" &
    nLangkah1 & ") XOR L(" & nLangkah1 & ")"
    & vbCrLf & vbCrLf & _
                            "    R(" & FormatStr(nLangkah1, " ", 2)
    & ") = " & GetBentukP(RSL(nLangkah1),  
    bBiner) & vbCrLf & _
                            "    L(" & FormatStr(nLangkah1, " ", 2)
    & ") = " & GetBentukP(L(nLangkah1),
    bBiner) & vbCrLf & _
                            "   " & String(37, "-") & " XOR" &
    vbCrLf & _
                            "    R(" & FormatStr(nLangkah1 + 1, " ",
    2) & ") = " & GetBentukP(R(nLangkah1 +
    1), bBiner)
                                           
                        Else
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            ' 05. R(i+1) = R(i) sblm proses - u/
    '     putaran terakhir
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            txtHasil.Text = txtHasil.Text & vbCrLf &
    vbCrLf & _
                            "(5) R(" & nLangkah1 + 1 & ") = R(" &
    nLangkah1 & ") sebelum proses." & vbCrLf
    & "    R(" & nLangkah1 + 1 & ") = " &
    GetBentukP(R(nLangkah1), bBiner)

                        End If
                       
                Case 6  'Langkah 6 - L(i+1)
                        If nLangkah1 <> 31 Then
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            ' 06. L(i+1) = R(i) sblm proses - u/
    '     putaran terakhir
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            txtHasil.Text = txtHasil.Text & vbCrLf &
                            vbCrLf & _
                            "(6) L(" & nLangkah1 + 1 & ") = R(" &
                            nLangkah1 & ") sebelum proses." & vbCrLf
                            & "    L(" & nLangkah1 + 1 & ") = " &
    GetBentukP(R(nLangkah1), bBiner)
                        Else
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            ' 06. L(i+1) = R(i) XOR L(i)
                            '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
                            txtHasil.Text = txtHasil.Text & vbCrLf &
    vbCrLf & _
                            "(6) L(" & nLangkah1 + 1 & ") = R(" &
    nLangkah1 & ") XOR L(" & nLangkah1 & ")"
    & vbCrLf & vbCrLf & _
                            "    R(" & FormatStr(nLangkah1, " ", 2)
    & ") = " & GetBentukP(RSL(nLangkah1),
    bBiner) & vbCrLf & _
                            "    L(" & FormatStr(nLangkah1, " ", 2)
    & ") = " & GetBentukP(L(nLangkah1),
    bBiner) & vbCrLf & _
                            "   " & String(37, "-") & " XOR" &
    vbCrLf & _
                            "    L(" & FormatStr(nLangkah1 + 1, " ",
    2) & ") = " & GetBentukP(L(nLangkah1 +
    1), bBiner)
                        End If
               
                Case 7  'Langkah 7 - u/ putaran terakhir
                        If nLangkah1 = 31 Then
                            txtHasil.Text = txtHasil.Text & vbCrLf &
    vbCrLf & _
                            "(7) L(32) = b(32), b(31), ... b(1)" &
    vbCrLf & _
                            "    R(32) = a(32), a(31), ... a(1)" &
    vbCrLf & _
                            "    Hasil = a(1), ... a(32), b(1), ...
    b(32)" & vbCrLf & _
                            "    Hasil dalam " & IIf(bBiner, "biner
    = " & Left(cTextB2, 20) & vbCrLf & _
                            "    " & Mid(cTextB2, 21, 40) & vbCrLf &
    "    " & Mid(cTextB2, 61, 4), _
                            "heksa = " & GetBentukP(cTextB2, False)
    & vbCrLf & "   ") & _
                            " -> ubah ke ascii " & vbCrLf & "    " &
    lblText2 & " = " & cTextC
                        End If
            End Select
           
            '****************** ENDS *******************
           
            'Inc Langkah-2
            nLangkah2 = nLangkah2 + 1
           
            'Jika nLangkah2 > Max
            If nLangkah2 = 8 Then
                'Inc Langkah - 1
                nLangkah1 = nLangkah1 + 1
                ' > Max
                If nLangkah1 = 32 Then
                    nLangkah1 = 31
                    bResume = False
                    cmdSave.Enabled = True
                End If
               
                'Reset pict
                lblStep7.ForeColor = &H0&
                Call ShowPutaran(nLangkah1)
                'Reset nLangkah2
                nLangkah2 = 1
            End If
        Wend
        '*-*-*-*-*-*-*- LOOPING
       
        bResume = False
    Else
        'PAUSE
        bPause = True
    End If
   
End Sub

4.2              Implementasi Sistem
Implementasi sistem program ini mencakup spesifikasi kebutuhan perangkat keras (hardware) dan spesifikasi perangkat lunak (software).

4.2.1        Spesifikasi Perangkat Keras dan Perangkat Lunak
Perangkat lunak ini direkomendasikan untuk dijalankan dengan menggunakan perangkat keras (hardware) yang mempunyai spesifikasi berikut :
1.            Prosesor Intel Pentium IV 2.0 Ghz ke atas.
2.            Memory 64 MB.
3.            VGA card 1 MB.
4.            Monitor dengan resolusi 800 ´ 600 pixel.
5.            Keyboard dan  Mouse
Adapun perangkat lunak (software) yang digunakan untuk menjalankan aplikasi ini adalah lingkungan sistem operasi Microsoft-Windows 98 atau Microsoft-Windows NT/2000/XP.
4.2.2        Cara Menginstall Perangkat Lunak
Perangkat lunak dapat diinstall ke dalam komputer dengan melakukan langkah-langkah berikut ini :
  1. Masukkan CD ‘Kriptografi Metoda GOST’ ke dalam CD-ROM komputer.
  2. Tunggu hingga muncul Windows Explorer untuk browsing CD atau aktifkan Windows Explorer dan explore CD drive-nya.
  3. Masuk ke folder ‘Setup’ dan cari file ‘Setup.exe’.
  4. Jalankan file tersebut dengan cara melakukan klik ganda (double click) pada file tersebut.
  5. Pilih lokasi tempat penyimpanan file di dalam harddisk komputer.
  6. Tunggu hingga proses penginstallan selesai.

4.2.3        Cara Menjalankan Perangkat Lunak
Perangkat lunak pembelajaran kriptografi metoda GOST ini dapat dijalankan cara sebagai berikut :
  1. Untuk proses pembentukan kunci, maka lakukan proses berikut ini :
    1. Klik menu ‘Setting & Pembelajaran’, dan sub menu ‘Proses Pembentukan Kunci’.
BAB4-1
Gambar 4.1 Klik menu ‘Setting & Pembelajaran’ >> ‘Proses Pembentukan Kunci’
    1. Muncul form ‘Input Kunci Enkripsi / Dekripsi’.
Gambar 4.2 Form Input Kunci Enkripsi / Dekripsi

    1. Input kunci pada textbox ‘Kunci’, klik tombol ‘Proses’ jika sudah selesai. Maka, akan muncul form ‘Proses Pembentukan Kunci’. Klik tombol ‘Play’ untuk memulai proses pembentukan kunci.
Gambar 4.3 Form Proses Pembentukan Kunci

  1. Untuk proses enkripsi, maka lakukan proses berikut ini :
    1. Klik menu ‘Setting & Pembelajaran’, dan sub menu ‘Proses Enkripsi’.


BAB4-2
Gambar 4.4 Klik menu ‘Setting & Pembelajaran’ >> ‘Proses Enkripsi’
    1. Muncul form ‘Input Data untuk Proses Enkripsi’.
Gambar 4.5 Form Input Data untuk Proses Enkripsi
    1. Input plaintext dan kunci, klik tombol ‘Proses’ untuk memulai proses. Maka, akan muncul form ‘Proses Enkripsi’. Klik tombol ‘Play’ untuk memulai proses enkripsi. Jika ingin melihat langkah demi langkah secara manual, maka klik tombol ‘Next’ dan ‘Back’.
Gambar 4.6 Form Proses Enkripsi





  1. Untuk proses dekripsi, maka lakukan proses berikut ini :
    1. Klik menu ‘Setting & Pembelajaran’, dan sub menu ‘Proses Dekripsi’.
BAB4-3
Gambar 4.7 Klik menu ‘Setting & Pembelajaran’ >> ‘Proses Dekripsi’







    1. Muncul form ‘Input Data untuk Proses Dekripsi’.
Gambar 4.8 Form Input Data untuk Proses Dekripsi
    1. Input ciphertext dan kunci, klik tombol ‘Proses’ untuk memulai proses. Maka, akan muncul form ‘Proses Dekripsi’. Klik tombol ‘Play’ untuk memulai proses dekripsi. Jika ingin melihat langkah demi langkah secara manual, maka klik tombol ‘Next’ dan ‘Back’.
Gambar 4.9 Form Proses Dekripsi
BAB V

KESIMPULAN DAN SARAN


5.1              Kesimpulan
Setelah selesai menyusun tugas akhir ini, penulis menarik kesimpulan sebagai berikut :
1.      Pembuatan modul pembelajaran kriptografi metoda GOST memerlukan dua komponen penting yaitu MSFlexGrid (Microsoft FlexGrid) yang digunakan sebagai tabel dan Common Dialog Control yang digunakan untuk membuka kotak dialog Open atau Save.
2.      Perangkat lunak ini dapat membantu pemahaman cara kerja atau algoritma kriptografi khususnya metoda GOST.
3.      Proses pembentukan kunci pada metoda GOST sangat sederhana sedangkan proses enkripsi dan dekripsi cukup panjang dan rumit.

5.2              Saran
Penulis ingin memberikan beberapa saran yang mungkin dapat membantu dalam pengembangan perangkat lunak pembelajaran metoda kriptografi yaitu :
1.      Dapat dipertimbangkan untuk menambahkan tutorial pada perangkat lunak pembelajaran agar lebih mudah dipahami.
2.      Perangkat lunak pembelajaran ini dapat dikembangkan untuk menampilkan proses enkripsi dan dekripsi untuk file.
3.      Perangkat lunak pembelajaran ini agar ditambahkan beberapa animasi tambahan untuk menambah daya tarik dari perangkat lunak.
DAFTAR PUSTAKA

  1. Booth, Paul A., An Introduction to Human-Computer Interaction, Lawrence Erlbaum Associates Ltd., Inggris, 1989
  2. Kurniawan J., Ir. , M.T., Kriptografi, Keamanan Internet dan Jaringan Komunikasi, Penerbit Informatika Bandung, April 2004.
  3. Pramono D., Mudah Menguasai Visual Basic 6, PT. Elex Media Komputindo, 2002.
  4. Rahadian H., Pemrograman Windows API dengan Microsoft Visual Basic, PT. Elex Media Komputindo, 2002.
  5. Schneier B., Applied Crytography, Second Edition, John Wiley & Sons, Inc., 1996.
  6. Suryokusumo A., Microsoft Visual Basic 6.0, PT. Elex Media Komputindo, 2001.
  7. http://citeseer.ist.psu.edu/rd/0%2C7705%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/cache/papers/cs/4165/http:zSzzSzwww.ce.chalmers.sezSz~stefanpzSzSecurityzSztr-94-10.pdf/soviet-encryption-algorithm.pdf
  8. http://vipul.net/gost/papers/gost-spec.ps.gz
  9. http://vipul.net/gost/papers/further-comments.ps.gz
  10. http://www.wikimirror.com/GOST
  11. http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html


1 komentar:

Anonymous at: July 8, 2012 at 9:00 PM said...

contoh aplikasi nya mana mas ??

Post a Comment

 

Pengikut

Copyright © ZONA SKRIPSI All Rights Reserved • Design by Dzignine
best suvaudi suvinfiniti suv