A. Algoritma
1. Perkembangan teknologi informasi pada abad ke-21 ini telah memberikan kepraktisan bagi masyarakat modern untuk melakukan berbagai kegiatan komunikasi secara elektronik, salah satunya dalam bidang bisnis seperti perdagangan dan perbankan. Dengan teknologi informasi, khususnya dengan jaringan komputer yang luas seperti Internet, barang dan jasa dapat dipromosikan secara luas dalam skala global. Kepada calon konsumen pun diberikan pula kemudahan-kemudahan yang memungkinkan mereka mengakses dan membeli produk dan jasa yang dimaksud secara praktis, misalnya pelayanan kartu kredit. Perkembangan ini rupanya membawa serta dampak negatif dalam hal keamanan. Praktek-praktek kejahatan dalam jaringan komputer kerap terjadi dan meresahkan masyarakat, misalnya pencurian sandi lewat dan nomor rahasia kartu kredit. Akibat dari hal seperti ini, aspek keamanan dalam penggunaan jaringan komputer menjadi hal yang krusial.
Dalam dunia komunikasi data global dan perkembangan teknologi informasi yang senantiasa berubah serta cepatnya perkembangan software, keamanan merupakan suatu isu yang sangat penting, baik itu keamanan fisik, keamanan data maupun keamanan aplikasi.
Perlu kita sadari bahwa untuk mencapai suatu keamanan itu adalah suatu hal yang sangat mustahil, seperti yang ada dalam dunia nyata sekarang ini. Tidak ada satu daerah pun yang betul-betul aman kondisinya, walau penjaga keamanan telah ditempatkan di daerah tersebut, begitu juga dengan keamanan sistem komputer. Namun yang bisa kita lakukan adalah untuk mengurangi gangguan keamanan tersebut.
2. Kriptografi IDEA (International Data Encryption Algorithm) diperkenalkan pertama kali tahun 1991 oleh Xuejia Lai dan James L Massey. Algoritma ini dimaksudkan sebagai pengganti DES(Data Encryption Standard). IDEA adalah revisi minor cipher yang lebih awal, yakni PES, dan pada awalnya disebut IPES (Improved PES).
IDEA didesain di bawah kontrak Hasler Foundation. Sandi rahasia ini dipatenkan di banyak negara tapi dapat digunakan secara gratis untuk penggunaan yang tidak komersial. Nama “IDEA” juga dipatenkan dan hak patennya berakhir tahun 2011. Lisensi dari IDEA dipegang oleh MediaCrypt. IDEA digunakan di Pretty Good Privacy (PGP) v2.0 dan sebagai algoritma opsional dalam OpenPGP, Netscape’s Secure Socket Layer (SSL), dan Secure Hypertext transfer Protocol (SHTTP).
1. Perkembangan teknologi informasi pada abad ke-21 ini telah memberikan kepraktisan bagi masyarakat modern untuk melakukan berbagai kegiatan komunikasi secara elektronik, salah satunya dalam bidang bisnis seperti perdagangan dan perbankan. Dengan teknologi informasi, khususnya dengan jaringan komputer yang luas seperti Internet, barang dan jasa dapat dipromosikan secara luas dalam skala global. Kepada calon konsumen pun diberikan pula kemudahan-kemudahan yang memungkinkan mereka mengakses dan membeli produk dan jasa yang dimaksud secara praktis, misalnya pelayanan kartu kredit. Perkembangan ini rupanya membawa serta dampak negatif dalam hal keamanan. Praktek-praktek kejahatan dalam jaringan komputer kerap terjadi dan meresahkan masyarakat, misalnya pencurian sandi lewat dan nomor rahasia kartu kredit. Akibat dari hal seperti ini, aspek keamanan dalam penggunaan jaringan komputer menjadi hal yang krusial.
Dalam dunia komunikasi data global dan perkembangan teknologi informasi yang senantiasa berubah serta cepatnya perkembangan software, keamanan merupakan suatu isu yang sangat penting, baik itu keamanan fisik, keamanan data maupun keamanan aplikasi.
Perlu kita sadari bahwa untuk mencapai suatu keamanan itu adalah suatu hal yang sangat mustahil, seperti yang ada dalam dunia nyata sekarang ini. Tidak ada satu daerah pun yang betul-betul aman kondisinya, walau penjaga keamanan telah ditempatkan di daerah tersebut, begitu juga dengan keamanan sistem komputer. Namun yang bisa kita lakukan adalah untuk mengurangi gangguan keamanan tersebut.
2. Kriptografi IDEA (International Data Encryption Algorithm) diperkenalkan pertama kali tahun 1991 oleh Xuejia Lai dan James L Massey. Algoritma ini dimaksudkan sebagai pengganti DES(Data Encryption Standard). IDEA adalah revisi minor cipher yang lebih awal, yakni PES, dan pada awalnya disebut IPES (Improved PES).
IDEA didesain di bawah kontrak Hasler Foundation. Sandi rahasia ini dipatenkan di banyak negara tapi dapat digunakan secara gratis untuk penggunaan yang tidak komersial. Nama “IDEA” juga dipatenkan dan hak patennya berakhir tahun 2011. Lisensi dari IDEA dipegang oleh MediaCrypt. IDEA digunakan di Pretty Good Privacy (PGP) v2.0 dan sebagai algoritma opsional dalam OpenPGP, Netscape’s Secure Socket Layer (SSL), dan Secure Hypertext transfer Protocol (SHTTP).
Algoritma
utama dari sistem kriptografi IDEA adalah sebagai berikut :
1. Proses Enkripsi: ek (M) = C (1)
1. Proses Enkripsi: ek (M) = C (1)
2.
Proses Dekripsi: dk (C) = M (2)
E : fungsi enkripsi
D: fungsi dekripsi
M : pesan terbuka
C : pesan rahasia
K : kunci enkripsi atau dekripsi
Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu: Plaintext, yaitu pesan yang dapat dibaca Ciphertext, yaitu pesan acak yang tidka dapat dibaca Key, yaitu kunci untuk melakukan teknik kriptografi Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi.
IDEA merupakan algoritma simetris yang beroperasi pada sebuah blok pesan terbuka 64bit, menggunakan kunci yang sama 128bit untuk proses enkripsi dan dekripsi. Keluaran dari algoritma ini adalah blok pesan terenkripsi 64bit. Proses dekripsi menggunakan blok penyandi (algoritma) yang sama dengan proses enkripsi dimana kunci dekripsinya diturunkan dari kunci enkripsi. IDEA menggunakan proses iterasi yang terdiri dari 8 putaran dan 1 transformasi keluaran pada putaran ke 8,5.
Algoritma IDEA ini menggunakan 3 operasi aljabar utama, yakni : Xor, operasi penjmlahan modulo 216 dan operasi perkalian modulo (216 + 1). Operasi ini semuanya dilakukan pada subblok 16bit. IDEA mendapatkan keamanannya dari operasi dari grup yang berbeda – penambahan dan penjumlahan modular serta exclusive ordari bit— yang secara aljabar tidak cocok dalam beberapa pengertian.
Pada proses enkripsi algoritma ini, terdapat 3 operasi berbeda yang digunakan :
Xor dari 2 sub blok 16-bit ;bit per bit
Penjumlahan modulo 216 2 sub blok 16 bit
Perkalian modulo (216 + 1) 2 sub blok 16 bit
Pada setiap putaran dilakukan operasi-operasi sebagai berikut :
1) Perkalian X1 dengan sub-kunci pertama
2) Penjumlahan X2 dengan sub-kunci kedua
3) Pejumlahan X3 dengan sub kunci ketiga
4) Perkalian X4 dengan sub kunci keempat
5) Operasi XOR hasil langkah 1 dan 3
6) Operasi XOR hasil angkah 2 dan 4
7) Perkalian hasil langkah 5 dengan sub-kunci kelima
8) Penjumlahan hasil langkah 6 dengan langkah 7
9) Perkalian hasil langkah 8 dengan sub-kunci keenam
10) Penjumlahan hasil langah 7 dengan 9
11) Operasi XOR hasil langkah 1 dan 9
12) Operasi XOR hasil langkah 3 dan 9
13) Operasi XOR hasil langkah 2 dan 10
14) Operasi XOR hasil langkah 4 dan 10
Keluaran setiap putaran adalah 4 sub-blok yang dihasilkan pada langkah 11, 12, 13, dan 14 dan menjadi masukan putaran berikutnya. Setelah putaran kedelapan terdapat transformasi keluaran, yaitu :
Perkalian X1 dengan sub-kunci pertama
Penjumlahan X2 dengan sub-kuci ketiga
Penjumlahan X3 dengan sub-kunci kedua
Perkalian X4 dengan sub-kunci keempat Terahir, keempat sub-blok 16-bit 16-bit yang merupakan hasil operasi 1), 2), 3), dan 4) ii digabung kembali menjadi blok pesan rahasia 64-bit.
Proses dekripsi menggunakan algoritma yang sama dengan proses enkripsi tatapi 52 buah sub-blok kunci yang digunakan masing-masing merupakan hasil turunan 52 buah sub-blok kunci enkripsi. Tabel sub-blok kunci dekripsi yang diturunkan dari sub-blok kunci enkripsi dapat dilihat pada tabel berikut :


3. Pada penelitian sebelumnya telah dilakukan implementasi metode kriptografi IDEA untuk menjamin keamanan data dari pihak lain yang bisa menyebabkan kerugian pada perusahaan. Penelitian yang pertama adalah "Implementasi Kriptografi IDEA pada Priority Dealer untuk Layanan Pemesanan dan Laporan Penjualan Handphone Berbasis Web ”. Priority Dealer melakukan penjualan langsung pada konsumen (end user) setelah menerima barang dari distributor. Priority Dealer harus memberikan laporan hasil penjualan dan pemesanan kepada distributor, akan tetapi dalam pelaporannya, priority dealer masih memakai cara yang kuno, yaitu datang langsung ke distributor. Maka dirancang suatu web untuk mempermudah pertukaran informasi. Untuk menjamin keamanan data pada web, dibuatlah sistem pengamanan data menggunakan algoritma Kriptografi IDEA.
4. Bahasa Java
}
5. Link Blog Kelompok:
Sekar Novianing:
Dinda Aulia Yashinta:
Alfiyatus Syariffah:
6. Sumber:
- PPT Kelompok 9
- Makalah Kelompok 9
- https://github.com/davidmigloz/IDEA-cipher/blob/master/src/main/java/com/davidmiguel/idea_cipher/crypto/IdeaCipher.java
- https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm
- blob:https://anzdoc.com/3ebf9b15-7b74-4fa1-9c99-a874e562a34e
B. Analisa Algoritma
1. Algoritma DES merupakan salah satu algoritma standar kriptografi yang banyak diaplikasikan pada sistem komputer. Kali ini akan dicoba implementasi algoritma DES pada sebuah jaringan yang dibuat menggunakan protokol RS-485. Jaringan tersebut merupakan jaringan open-loop multipoint yang bisa diakses secara serial menggunakan mikrokontroler konvensional. Dari hasil simulasi dan implementasi, didapatkan bahwa algoritma DES dapat diimplementasi dengan sempurna pada FPGA tipe XC4000XL tetapi performance yang dihasilkan sangat tergantung keandalan perangkat keras dari jaringan open-loop multipoint itu sendiri. Total CLB yang dibutuhkan untuk implementasi DES dengan metode single-round looping adalah sekitar 500 CLB. Jaringan yang telah dibuat melalui penelitian ini mampu mencapai jarak optimal hingga 25 meter. Cara kerjanya mirip seperti Algoritma IDEA yaitu proses enkripsi maupun dekripsinya yang diubah-ubah adalah keynya.
2. DES atau Singkatan dari Data Encryption Standard merupakan algoritma penyandian yang diadopsi dan dibakukan oleh NBS (National Bureau Standard) yang kini menjadi NIST (National Institute of Standards and Technology) pada tahun 1977 sebagai FIPS 46 (Federal Information Processing Standard).
DES bermula dari hasil riset Tuchman Meyer yang diajukan sebagai kandidat Sandi Standard Nasional yang diusulkan oleh NBS. Konon katanya, algoritma yang dikembangkan oleh Tuchman Meyer ini merupakan algoritma terbaik dari semua kandidat Sandi Standard Nasional. Pada mulanya, algoritma yang kini disebut DES, memiliki panjang kunci sandi 128 bit. Namun selama proses pengadopsian, NBS melibatkan NSA (National Security Agency), dan algoritma sandi ini mengalami pengurangan ukuran kunci sandi dari 128 bit menjadi 56 bit saja. Sebagian orang mungkin mengira bahwa pengurangan panjang kunci sandi ini merupakan usulan NSA untuk melemahkan algoritma Tuchman Meyer karena motif politik tertentu. Entah itu untuk mempermudah penyadapan atau untuk melemahkan pengamanan informasi lawan politik. Mungkin NSA menginginkan algoritma Tuchman Meyer ini “cukup aman” untuk digunakan warga sipil, tetapi mudah dipecahkan oleh organisasi besar semisal NSA dengan peralatan canggihnya. Bila dibandingkan dengan performa komputer personal pada saat itu, algoritma sandi dengan panjang kunci 56 bit dapat dikatakan cukup aman bila digunakan oleh orang-orang “biasa”, tapi dapat dengan mudah dipecahkan dengan peralatan canggih dan tentunya kepemilikan alat canggih ini hanya dapat dijangkau oleh organisasi elit seperti NSA. Dengan dukungan dana yang melimpah, pembuatan alat brute‐force DES bukanlah hal yang mustahil pada saat itu. Kini algoritma DES sudah usang dan keamanannya pun sudah tidak dapat dipertanggungjawabkan lagi. Kini komputer personal pun sudah cukup untuk membobol algoritma DES, apalagi dengan adanya teknologi parallel computing dan internet yang berkembang pesat. DES telah secara resmi digantikan fungsinya oleh AES (Advanced Encryption Standard) dengan panjang kunci sandi 128, 192 dan 256 bit.
Kendatipun kita telah mengetahui bahwa algoritma AES sudah kuno dan tidak aman, tidak ada salahnya jika kita mempelajari algoritma ini untuk tujuan hobi atau pendidikan. Perlahan tapi pasti, belajar dari algoritma yang sederhana dan perlahan‐lahan menuju algoritma lain yang lebih kompleks.
Algoritma
DES merupakan algoritma enkripsi blok simetris. DES dikatakan enkripsi blok karena pemrosesan data baik enkripsi maupun dekripsi, diimplementasikan per blok (dalam hal ini 8 byte). DES dikatakan enkripsi simetris karena algoritma yang digunakan untuk enkripsi relatif atau bahkan sama persis dengan algoritma yang digunakan dalam proses dekripsi. Proses enkripsi dapat didefinisikan secara sederhana sebagai proses penterjemahan data “asli” yang “jelas” dan “kasat mata” yang dapat dipahami maknanya.
Sekarang mari kita bahas detail fungsi F satu per satu. Pertama, permutasi E memetakan 32 bit masukan menjadi 48 bit keluaran. Karena lebar keluaran lebih besar dari lebar masukan, maka ada beberapa bit masukan yang digandakan untuk mengisi kekosongan. Permutasi E didefinisikan sebagai berikut
Kedua, DES memiliki 8 buah SBOX (S1 hingga S8) yang memiliki masukan selebar 6 bit dan keluaran selebar 4 bit. Karena lebar keluaran SBOX lebih kecil daripada lebar masukannya, maka adakemungkinan beberapa kombinasi masukan yang berbeda akan menghasilkan keluaran yang sama. Seandainya masukan setiap SBOX adalah 1 2 3 4 5 6 x x x x x x maka S1 hingga hingga S8 didefinisikan sebagai berikut.
Ketiga, hasil substitusi SBOX kemudian digabungkan menjadi 32 bit dan diacak dengan permutasi P dan hasil permutasi P merupakan keluaran fungsi F yang nantinya di XOR dengan ruas kiri. Permutasi P didefinisikan sebagai berikut.
Dalam DES, algoritma yang digunakan dalam proses enkripsi sama persis dengan algoritma yang digunakan dalam proses dekripsi, hanya saja penggunaan sub kuncinya saja yang berbeda. Dalam proses dekripsi, urutan sub kunci yang digunakan merupakan kebalikan urutan sub kunci yang digunakan dalam proses enkripsi.
Implementasi
Operasi yang digunakan dalam algoritma DES merupakan operasi‐operasi sederhana semisal move, bit copy, XOR, lookup, shift dan rotate. Semua operasi tersebut tersedia dalam mikroprosesor/mikrokontroler 8 bit. Dengan demikian dapat kita simpulkan bahwa DES dapat diterapkan dalam platform 8 bit.
Semua operasi permutasi dalam DES, baik IP, IP 1, PC 1, PC 2, E dan P, pada intinya hanyalah operasi penyalinan bit. Jika instruksi penyalinan bit tidak tersedia, maka permutasi juga dapat diimplementasikan dengan operasi shift, dengan memanfaatkan carry yang timbul dari setiap instruksi shift. Selain itu, operasi substitusi dengan SBOX juga dapat dengan mudah diimplementasikan menggunakan table lookup dengan ukuran yang masih dapat dijangkau. Dalam platform 32 atau 64 bit, DES dapat diimplementasikan lebih effektif lagi, tapi sayangnya operasi bit per bit seperti permutasi mungkin sedikit menyita performa prosesor dan memperlambat laju enkripsi per detik.
3. Plaintext: Muhammad Ilham
Key: 12345678
Hasil Enkripsi DES:
ddiOrSCDu9P4CFe+aWv3c+YjEn1AxX7h/rlZt9RkL8s=
Hasil Enkripsi IDEA:
tPgPHQR1Jmf03AKg2AeFnemMR0R3KqiEHW+Bd3KvF2I=
Link Sumber Test: https://8gwifi.org/CipherFunctions.jsp
4. Persamaan:
- IDEA dan DES adalah algoritma cipher blok yang populer karena dijadikan standard algoritma enkripsi kunci-simetri (meskipun sekarang sudah digantikan AES, karena dianggap sudah tidak aman).
- IDEA dan DES adalah algoritma simetri yang beroperasi pada sebuah blok pesan terbuka 64bit.
- IDEA dan DES sebenarnya adalah algoritma yang sama, hanya saja nama DES lebih dikenal dibanding IDEA.
- IDEA dan DES adalah sama- sama pengembangan dari IPES (Improved Proposed Encryption Standard (IPES)
- IDEA dan DES adalah algoritma yang sederhana, hanya saja keduanya bergantung terhadap key-nya (semakin rumit keynya, semakin sulit algoritma tersebut dipecahkan).
- IDEA dan DES dibeberapa proses enkripsi dan dekripsinya terdapat beberapa operasi yang sama (misalnya terdapat operasi XOR)
Perbedaan:
- IDEA dalam proses enkripsi maupun dekripsinya menggunakan operasi pembagian modulo serta perkalian modulo, sedangkan DES menggunakan permutasi.
- IDEA menggunakan kunci 128bit, sedangkan DES menggunakan kunci 58bit.
- IDEA pada awalnya dibuat sebagai pengganti DES, sedangkan DES itu sendiri pada awalnya dibuat demi mengamankan kepentingan politik.
5. Link Blog Kelompok Lain:
6. Sumber:
- PPT Kelompok 1
- http://windhazone.blogspot.com/2010/07/sistem-keamanan-komputer-des.html
- https://makalah-update.blogspot.com/2012/11/makalah-pengertian-dan-sejarah-des-data.html
- http://ilmu-kriptografi.blogspot.com/2009/05/algoritma-des-data-encryption-standart.html
- https://en.wikipedia.org/wiki/Data_Encryption_Standard
C. Algoritma IDEA dan DES pada dasarnya adalah algoritma yang sama, karena pada proses enkripsi dan dekripsinya lebih ditekankan kepada KEY-nya. IDEA sendiri menggunakan kunci 128 bit, sedangkan DES menggunakan kunci 58bit. Pada dasarnya pun kedua algoritma ini memiliki fungsi yang sama, yaitu mengamankan informasi ataupun data agar tidak dapat dibaca/diakses oleh publik. Kedua algoritma ini, sama-sama menggunakan operasi XOR pada proses enkripsi maupun dekripsinya, yang mana bisa dikatakan sebenarnya kedua algoritma ini tidak jauh berbeda satu sama lainnya. Meskipun demikian, kedua algoritma ini sudah tidak lagi dianggap aman. Sehingga kemudian keduanya digantikan oleh AES yaitu Algoritma Encryption Standart.
E : fungsi enkripsi
D: fungsi dekripsi
M : pesan terbuka
C : pesan rahasia
K : kunci enkripsi atau dekripsi
Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu: Plaintext, yaitu pesan yang dapat dibaca Ciphertext, yaitu pesan acak yang tidka dapat dibaca Key, yaitu kunci untuk melakukan teknik kriptografi Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi.
IDEA merupakan algoritma simetris yang beroperasi pada sebuah blok pesan terbuka 64bit, menggunakan kunci yang sama 128bit untuk proses enkripsi dan dekripsi. Keluaran dari algoritma ini adalah blok pesan terenkripsi 64bit. Proses dekripsi menggunakan blok penyandi (algoritma) yang sama dengan proses enkripsi dimana kunci dekripsinya diturunkan dari kunci enkripsi. IDEA menggunakan proses iterasi yang terdiri dari 8 putaran dan 1 transformasi keluaran pada putaran ke 8,5.
Algoritma IDEA ini menggunakan 3 operasi aljabar utama, yakni : Xor, operasi penjmlahan modulo 216 dan operasi perkalian modulo (216 + 1). Operasi ini semuanya dilakukan pada subblok 16bit. IDEA mendapatkan keamanannya dari operasi dari grup yang berbeda – penambahan dan penjumlahan modular serta exclusive ordari bit— yang secara aljabar tidak cocok dalam beberapa pengertian.
Pada proses enkripsi algoritma ini, terdapat 3 operasi berbeda yang digunakan :
Xor dari 2 sub blok 16-bit ;bit per bit
Penjumlahan modulo 216 2 sub blok 16 bit
Perkalian modulo (216 + 1) 2 sub blok 16 bit
Pada setiap putaran dilakukan operasi-operasi sebagai berikut :
1) Perkalian X1 dengan sub-kunci pertama
2) Penjumlahan X2 dengan sub-kunci kedua
3) Pejumlahan X3 dengan sub kunci ketiga
4) Perkalian X4 dengan sub kunci keempat
5) Operasi XOR hasil langkah 1 dan 3
6) Operasi XOR hasil angkah 2 dan 4
7) Perkalian hasil langkah 5 dengan sub-kunci kelima
8) Penjumlahan hasil langkah 6 dengan langkah 7
9) Perkalian hasil langkah 8 dengan sub-kunci keenam
10) Penjumlahan hasil langah 7 dengan 9
11) Operasi XOR hasil langkah 1 dan 9
12) Operasi XOR hasil langkah 3 dan 9
13) Operasi XOR hasil langkah 2 dan 10
14) Operasi XOR hasil langkah 4 dan 10
Keluaran setiap putaran adalah 4 sub-blok yang dihasilkan pada langkah 11, 12, 13, dan 14 dan menjadi masukan putaran berikutnya. Setelah putaran kedelapan terdapat transformasi keluaran, yaitu :
Perkalian X1 dengan sub-kunci pertama
Penjumlahan X2 dengan sub-kuci ketiga
Penjumlahan X3 dengan sub-kunci kedua
Perkalian X4 dengan sub-kunci keempat Terahir, keempat sub-blok 16-bit 16-bit yang merupakan hasil operasi 1), 2), 3), dan 4) ii digabung kembali menjadi blok pesan rahasia 64-bit.
Proses dekripsi menggunakan algoritma yang sama dengan proses enkripsi tatapi 52 buah sub-blok kunci yang digunakan masing-masing merupakan hasil turunan 52 buah sub-blok kunci enkripsi. Tabel sub-blok kunci dekripsi yang diturunkan dari sub-blok kunci enkripsi dapat dilihat pada tabel berikut :
3. Pada penelitian sebelumnya telah dilakukan implementasi metode kriptografi IDEA untuk menjamin keamanan data dari pihak lain yang bisa menyebabkan kerugian pada perusahaan. Penelitian yang pertama adalah "Implementasi Kriptografi IDEA pada Priority Dealer untuk Layanan Pemesanan dan Laporan Penjualan Handphone Berbasis Web ”. Priority Dealer melakukan penjualan langsung pada konsumen (end user) setelah menerima barang dari distributor. Priority Dealer harus memberikan laporan hasil penjualan dan pemesanan kepada distributor, akan tetapi dalam pelaporannya, priority dealer masih memakai cara yang kuno, yaitu datang langsung ke distributor. Maka dirancang suatu web untuk mempermudah pertukaran informasi. Untuk menjamin keamanan data pada web, dibuatlah sistem pengamanan data menggunakan algoritma Kriptografi IDEA.
4. Bahasa Java
|
|
| /** |
| * Implementation of IDEA symmetric-key block cipher. |
| * |
| * Based on http://www.source-code.biz/idea/java |
| */ |
| public class IdeaCipher extends BlockCipher { |
|
|
| private static final int KEY_SIZE = 16; |
| private static final int BLOCK_SIZE = 8; |
| private static final int ROUNDS = 8; |
|
|
| private boolean encrypt; |
| private int[] subKey; |
|
|
| public IdeaCipher(String charKey, boolean encrypt) { |
| super(KEY_SIZE, BLOCK_SIZE); |
| this.encrypt = encrypt; |
| setKey(charKey); |
| } |
|
|
| @Override |
| protected void setKey(byte[] key) { |
| int[] tempSubKey = generateSubkeys(key); |
| if (encrypt) { |
| subKey = tempSubKey; |
| } else { |
| subKey = invertSubkey(tempSubKey); |
| } |
| } |
|
|
| @SuppressWarnings({"SuspiciousNameCombination", "PointlessArithmeticExpression"}) |
| @Override |
| public void crypt(byte[] data, int offset) { |
| // Divide the 64-bit data block into four 16-bit sub-blocks (input of 1st round) |
| int x1 = CrytoUtils.concat2Bytes(data[offset + 0], data[offset + 1]); |
| int x2 = CrytoUtils.concat2Bytes(data[offset + 2], data[offset + 3]); |
| int x3 = CrytoUtils.concat2Bytes(data[offset + 4], data[offset + 5]); |
| int x4 = CrytoUtils.concat2Bytes(data[offset + 6], data[offset + 7]); |
| // Each round |
| int k = 0; // Subkey index |
| for (int round = 0; round < ROUNDS; round++) { |
| int y1 = mul(x1, subKey[k++]); // Multiply X1 and the first subkey |
| int y2 = add(x2, subKey[k++]); // Add X2 and the second subkey |
| int y3 = add(x3, subKey[k++]); // Add X3 and the third subkey |
| int y4 = mul(x4, subKey[k++]); // Multiply X4 and the fourth subkey |
| int y5 = y1 ^ y3; // XOR the results of y1 and y3 |
| int y6 = y2 ^ y4; // XOR the results of y2 and y4 |
| int y7 = mul(y5, subKey[k++]); // Multiply the results of y5 with the fifth subkey |
| int y8 = add(y6, y7); // Add the results of y6 and y7 |
| int y9 = mul(y8, subKey[k++]); // Multiply the results of y8 with the sixth subkey |
| int y10 = add(y7, y9); // Add the results of y7 and y9 |
| x1 = y1 ^ y9; // XOR the results of steps y1 and y9 |
| x2 = y3 ^ y9; // XOR the results of steps y3 and y9 |
| x3 = y2 ^ y10; // XOR the results of steps y2 and y10 |
| x4 = y4 ^ y10; // XOR the results of steps y4 and y10 |
| } |
| // Final output transformation |
| int r0 = mul(x1, subKey[k++]); // Multiply X1 and the first subkey |
| int r1 = add(x3, subKey[k++]); // Add X2 and the second subkey (x2-x3 are swaped) |
| int r2 = add(x2, subKey[k++]); // Add X3 and the third subkey |
| int r3 = mul(x4, subKey[k]); // Multiply X4 and the fourth subkey |
| // Reattach the four sub-blocks |
| data[offset + 0] = (byte) (r0 >> 8); |
| data[offset + 1] = (byte) r0; |
| data[offset + 2] = (byte) (r1 >> 8); |
| data[offset + 3] = (byte) r1; |
| data[offset + 4] = (byte) (r2 >> 8); |
| data[offset + 5] = (byte) r2; |
| data[offset + 6] = (byte) (r3 >> 8); |
| data[offset + 7] = (byte) r3; |
| } |
|
|
| /** |
| * Creating the subkeys from the user key. |
| * |
| * @param userKey 128-bit user key |
| * @return 52 16-bit key sub-blocks (six for each of the eight rounds and four more for the output transformation) |
| */ |
| private static int[] generateSubkeys(byte[] userKey) { |
| if (userKey.length != 16) { |
| throw new IllegalArgumentException(); |
| } |
| int[] key = new int[ROUNDS * 6 + 4]; // 52 16-bit subkeys |
|
|
| // The 128-bit userKey is divided into eight 16-bit subkeys |
| int b1, b2; |
| for (int i = 0; i < userKey.length / 2; i++) { |
| key[i] = CrytoUtils.concat2Bytes(userKey[2 * i], userKey[2 * i + 1]); |
| } |
|
|
| // The key is rotated 25 bits to the left and again divided into eight subkeys. |
| // The first four are used in round 2; the last four are used in round 3. |
| // The key is rotated another 25 bits to the left for the next eight subkeys, and so on. |
| for (int i = userKey.length / 2; i < key.length; i++) { |
| // It starts combining k1 shifted 9 bits with k2. This is 16 bits of k0 + 9 bits shifted from k1 = 25 bits |
| b1 = key[(i + 1) % 8 != 0 ? i - 7 : i - 15] << 9; // k1,k2,k3...k6,k7,k0,k9, k10...k14,k15,k8,k17,k18... |
| b2 = key[(i + 2) % 8 < 2 ? i - 14 : i - 6] >>> 7; // k2,k3,k4...k7,k0,k1,k10,k11...k15,k8, k9,k18,k19... |
| key[i] = (b1 | b2) & 0xFFFF; |
| } |
| return key; |
| } |
|
|
| /** |
| * Reverse and invert the subkeys to get the decryption subkeys. |
| * They are either the additive or multiplicative inverses of the encryption subkeys in reverse order. |
| * |
| * @param subkey subkeys |
| * @return inverted subkey |
| */ |
| private static int[] invertSubkey(int[] subkey) { |
| int[] invSubkey = new int[subkey.length]; |
| int p = 0; |
| int i = ROUNDS * 6; |
| // For the final output transformation (round 9) |
| invSubkey[i] = mulInv(subkey[p++]); // 48 <- 0 |
| invSubkey[i + 1] = addInv(subkey[p++]); // 49 <- 1 |
| invSubkey[i + 2] = addInv(subkey[p++]); // 50 <- 2 |
| invSubkey[i + 3] = mulInv(subkey[p++]); // 51 <- 3 |
| // From round 8 to 2 |
| for (int r = ROUNDS - 1; r > 0; r--) { |
| i = r * 6; |
| invSubkey[i + 4] = subkey[p++]; // 46 <- 4 ... |
| invSubkey[i + 5] = subkey[p++]; // 47 <- 5 ... |
| invSubkey[i] = mulInv(subkey[p++]); // 42 <- 6 ... |
| invSubkey[i + 2] = addInv(subkey[p++]); // 44 <- 7 ... |
| invSubkey[i + 1] = addInv(subkey[p++]); // 43 <- 8 ... |
| invSubkey[i + 3] = mulInv(subkey[p++]); // 45 <- 9 ... |
| } |
| // Round 1 |
| invSubkey[4] = subkey[p++]; // 4 <- 46 |
| invSubkey[5] = subkey[p++]; // 5 <- 47 |
| invSubkey[0] = mulInv(subkey[p++]); // 0 <- 48 |
| invSubkey[1] = addInv(subkey[p++]); // 1 <- 49 |
| invSubkey[2] = addInv(subkey[p++]); // 2 <- 50 |
| invSubkey[3] = mulInv(subkey[p]); // 3 <- 51 |
| return invSubkey; |
| } |
|
|
| /** |
| * Addition in the additive group (mod 2^16). |
| * Range [0, 0xFFFF]. |
| */ |
| private static int add(int x, int y) { |
| return (x + y) & 0xFFFF; |
| } |
|
|
| /** |
| * Additive inverse in the additive group (mod 2^16). |
| * Range [0, 0xFFFF]. |
| */ |
| private static int addInv(int x) { |
| return (0x10000 - x) & 0xFFFF; |
| } |
|
|
| /** |
| * Multiplication in the multiplicative group (mod 2^16+1 = mod 0x10001). |
| * Range [0, 0xFFFF]. |
| */ |
| private static int mul(int x, int y) { |
| long m = (long) x * y; |
| if (m != 0) { |
| return (int) (m % 0x10001) & 0xFFFF; |
| } else { |
| if (x != 0 || y != 0) { |
| return (1 - x - y) & 0xFFFF; |
| } |
| return 0; |
| } |
| } |
|
|
| /** |
| * Multiplicative inverse in the multiplicative group (mod 2^16+1 = mod 0x10001). |
| * It uses Extended Euclidean algorithm to compute the inverse. |
| * For the purposes of IDEA, the all-zero sub-block is considered to represent 2^16 = −1 |
| * for multiplication modulo 216 + 1; thus the multiplicative inverse of 0 is 0. |
| * Range [0, 0xFFFF]. |
| */ |
| @SuppressWarnings("SuspiciousNameCombination") |
| private static int mulInv(int x) { |
| if (x <= 1) { |
| // 0 and 1 are their own inverses |
| return x; |
| } |
| try { |
| int y = 0x10001; |
| int t0 = 1; |
| int t1 = 0; |
| while (true) { |
| t1 += y / x * t0; |
| y %= x; |
| if (y == 1) { |
| return (1 - t1) & 0xffff; |
| } |
| t0 += x / y * t1; |
| x %= y; |
| if (x == 1) { |
| return t0; |
| } |
| } |
| } catch (ArithmeticException e) { |
| return 0; |
| } |
| } |
| package com.davidmiguel.idea_cipher.crypto; |
5. Link Blog Kelompok:
Sekar Novianing:
Dinda Aulia Yashinta:
Alfiyatus Syariffah:
6. Sumber:
- PPT Kelompok 9
- Makalah Kelompok 9
- https://github.com/davidmigloz/IDEA-cipher/blob/master/src/main/java/com/davidmiguel/idea_cipher/crypto/IdeaCipher.java
- https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm
- blob:https://anzdoc.com/3ebf9b15-7b74-4fa1-9c99-a874e562a34e
B. Analisa Algoritma
1. Algoritma DES merupakan salah satu algoritma standar kriptografi yang banyak diaplikasikan pada sistem komputer. Kali ini akan dicoba implementasi algoritma DES pada sebuah jaringan yang dibuat menggunakan protokol RS-485. Jaringan tersebut merupakan jaringan open-loop multipoint yang bisa diakses secara serial menggunakan mikrokontroler konvensional. Dari hasil simulasi dan implementasi, didapatkan bahwa algoritma DES dapat diimplementasi dengan sempurna pada FPGA tipe XC4000XL tetapi performance yang dihasilkan sangat tergantung keandalan perangkat keras dari jaringan open-loop multipoint itu sendiri. Total CLB yang dibutuhkan untuk implementasi DES dengan metode single-round looping adalah sekitar 500 CLB. Jaringan yang telah dibuat melalui penelitian ini mampu mencapai jarak optimal hingga 25 meter. Cara kerjanya mirip seperti Algoritma IDEA yaitu proses enkripsi maupun dekripsinya yang diubah-ubah adalah keynya.
2. DES atau Singkatan dari Data Encryption Standard merupakan algoritma penyandian yang diadopsi dan dibakukan oleh NBS (National Bureau Standard) yang kini menjadi NIST (National Institute of Standards and Technology) pada tahun 1977 sebagai FIPS 46 (Federal Information Processing Standard).
DES bermula dari hasil riset Tuchman Meyer yang diajukan sebagai kandidat Sandi Standard Nasional yang diusulkan oleh NBS. Konon katanya, algoritma yang dikembangkan oleh Tuchman Meyer ini merupakan algoritma terbaik dari semua kandidat Sandi Standard Nasional. Pada mulanya, algoritma yang kini disebut DES, memiliki panjang kunci sandi 128 bit. Namun selama proses pengadopsian, NBS melibatkan NSA (National Security Agency), dan algoritma sandi ini mengalami pengurangan ukuran kunci sandi dari 128 bit menjadi 56 bit saja. Sebagian orang mungkin mengira bahwa pengurangan panjang kunci sandi ini merupakan usulan NSA untuk melemahkan algoritma Tuchman Meyer karena motif politik tertentu. Entah itu untuk mempermudah penyadapan atau untuk melemahkan pengamanan informasi lawan politik. Mungkin NSA menginginkan algoritma Tuchman Meyer ini “cukup aman” untuk digunakan warga sipil, tetapi mudah dipecahkan oleh organisasi besar semisal NSA dengan peralatan canggihnya. Bila dibandingkan dengan performa komputer personal pada saat itu, algoritma sandi dengan panjang kunci 56 bit dapat dikatakan cukup aman bila digunakan oleh orang-orang “biasa”, tapi dapat dengan mudah dipecahkan dengan peralatan canggih dan tentunya kepemilikan alat canggih ini hanya dapat dijangkau oleh organisasi elit seperti NSA. Dengan dukungan dana yang melimpah, pembuatan alat brute‐force DES bukanlah hal yang mustahil pada saat itu. Kini algoritma DES sudah usang dan keamanannya pun sudah tidak dapat dipertanggungjawabkan lagi. Kini komputer personal pun sudah cukup untuk membobol algoritma DES, apalagi dengan adanya teknologi parallel computing dan internet yang berkembang pesat. DES telah secara resmi digantikan fungsinya oleh AES (Advanced Encryption Standard) dengan panjang kunci sandi 128, 192 dan 256 bit.
Kendatipun kita telah mengetahui bahwa algoritma AES sudah kuno dan tidak aman, tidak ada salahnya jika kita mempelajari algoritma ini untuk tujuan hobi atau pendidikan. Perlahan tapi pasti, belajar dari algoritma yang sederhana dan perlahan‐lahan menuju algoritma lain yang lebih kompleks.
Algoritma
DES merupakan algoritma enkripsi blok simetris. DES dikatakan enkripsi blok karena pemrosesan data baik enkripsi maupun dekripsi, diimplementasikan per blok (dalam hal ini 8 byte). DES dikatakan enkripsi simetris karena algoritma yang digunakan untuk enkripsi relatif atau bahkan sama persis dengan algoritma yang digunakan dalam proses dekripsi. Proses enkripsi dapat didefinisikan secara sederhana sebagai proses penterjemahan data “asli” yang “jelas” dan “kasat mata” yang dapat dipahami maknanya.
secara langsung menjadi data lain yang terlihat “buram” atau “acak”
sehingga tidak dapat dipahami secara langsung, sedemikian rupa sehingga
makna informasi yang disembunyikan tidak lagi dapat diketahui secara
langsung kecuali dengan mengembalikan informasi tersebut ke bentuk
aslinya. Sedangkan proses dekripsi dapat didefinisikan secara sederhana
sebagai proses pengembalian bentuk data, dari data “buram” atau “acak”
menjadi data “asli” yang “jelas” dan “kasat mata” yang dapat dipahami
maknanya. Algoritma enkripsi umumnya dilengkapi semacam kata sandi
(password), untuk memvariasikan fungsi enkripsi tersebut. Data yang
sama, kunci yang sama dan algoritma yang sama akan menghasilkan data
enkripsi yang sama. Dalam algoritma penyandian DES, kunci yang digunakan
dalam proses enkripsi dan dekripsi haruslah sama, supaya data dapat
dikembalikan ke bentuk aslinya. Bisa jadi, karena “kesamaan” kunci
inilah DES juga dinamakan algoritma enkripsi simetris. Inti dari proses
enkripsi adalah penyembunyian data dengan mengaburkan data “asli” dan
mengurangi keteraturan informasi, sehingga data tersebut tidak dapat
“dibaca” kecuali oleh pihak yang berhak. Berbagai algoritma enkripsi
sengaja dibuat untuk melindungi informasi dari penyadapan, karena ada
kemungkinan terjadinya penyadapan saat data melewati media hantar (media
hantar dapat berupa suara, surat, email, kabel, kertas, frekwensi radio
atau apapun itu). Seandainya penyadap dapat menyadap semua informasi
yang melalui media hantar, idealnya hasil sadapan tersebut hanya
menghasilkan data “sampah” yang tidak berguna. Semua algoritma
kriptografi diciptakan untuk mewujudkan kondisi ideal tersebut, tapi
sayangya kondisi tersebut sangat sulit dicapai, karena selalu ada cara
untuk membalikkan informasi sadapan ke bentuk aslinya.
Dalam DES, algoritma dekripsi tepatnya merupakan proses kebalikan (inverse) algoritma enkripsi. Dalam prakteknya proses pembalikan (proses dekripsi) ini diimplementasikan dengan membalikkan urutan sub kunci yang digunakan dalam proses enkripsi, selebihnya algoritma enkripsi dan dekripsi adalah sama. Algoritma enkripsi DES bekerja dengan mengolah blok data 8 byte (64 bit) dengan blok kunci 8 byte (64 bit). Proses penyandian dalam DES diawali dengan fungsi pengacakan bit yang dinamai IP (Initial Permutation) kemudian fungsi inti DES yang diulang sebanyak 16 kali dan terakhir ditutup dengan fungsi pengacakan bit lain yang dikenal denagn nama IP‐1 (Inverse Initial Permutation). Pada sisi lain algoritma penjadwalan sub kunci akan menghasilkan 16 sub kunci secara berurutan dari parameter kunci yang diberikan untuk digunakan pada setiap putaran fungsi inti DES. Sub kunci pertama untuk putaran pertama, sub kunci kedua untuk putaran kedua dan seterusnya hingga putaran ke 16.
Perlu diingat, kendatipun slot kunci yang disediakan digunakan berukuran 8 byte (64 bit), ternyata pada faktanya ukuran kunci yang digunakan hanya sebanyak 56 bit saja, karena bit paling signifikan (MSB) dari setiap bit diabaikan. Jadi sebenarnya ukuran kunci DES adalah 56 bit. Adapun Ilustrasi penyandian DES dalam diagram blok dapat dilihat pada gambar di samping. Algoritma penjadwalan sub kunci dibentuk dari pengacakan bit dan pemutaran kiri ruas kanan dan kiri kunci. Pertama kali, bit-bit kunci diacak dengan Permutation Choice 1 dan dibagi dua menjadi ruas kiri dan ruas kanan. Kedua ruas tersebut kemudian diputar kiri dan diacak kembali dengan Permutation Choice 2 untuk menghasilkan sub kunci. Jumlah pemutaran ke kiri ditentukan secara spesifik untuk setiap sub kunci.
Rinciannya adalah sebagai berikut.
Untuk lebih lanjut, mari terlebih dahulu kita bahas detail algoritma penjadwalan sub kunci kemudian algoritma enkripsi dan terakhir algoritma dekripsi. Inti dari semua proses permutasi dalam DES adalah pengacakan bit. Sebagai contoh, jika masukan permutasi sebanyak n bit, maka akan ada sebanyak 2n kemungkinan masukan permutasi dan ada 2n kemungkinan hasil permutasi. Setiap satu kemungkinan masukan akan berpasangan dengan satu kemungkinan keluaran.
Sebelum proses penjadwalan kunci dimulai, kunci terlebih dahulu dipetakan menjadi matriks 8x8 dan diberi indeks. Dalam setiap byte, indeks paling kecil melambangkan LSB dan indeks paling besar melambangkan MSB. Sebagai contoh, indeks ke 1 melambangkan LSB byte pertama, index ke 8 melambangkan MSB byte pertama, indeks ke 9 melambangkan LSB byte kedua, indeks ke 16 melambangkan MSB byte kedua dan seterusnya hingga indeks ke 64 yang melambangkan MSB byte ke 8. Mari kita perhatikan contoh dibawah ini. Kunci = 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
Setelah pemetaan, hasilnya adalah sebagai berikut.
Matriks Indeks Hasil Pemetaan
Pengacakan bit Permutation Choice‐1 akan mengolah 8 byte blok kunci menjadi 56 bit sub kunci yang siap diproses lebih lanjut. Untuk lebih mudahnya, proses pengacakan bit dilambangkan dengan pengacakan indeks bit yang bersangkutan. Berikut ini adalah detail Permutation Choice 1.
Setelah kunci diacak dengan Permutation Choice 1, hasil pengacakan bit tersebut kemudian dibagi 2, yakni ruas kiri dan ruas kanan, masing masing berukuran 28 bit (ditandai dengan garis tebal pada hasil Permutation Choice 1). Selanjutnya kedua ruas tersebut kemudian mengalami pemutaran kiri sebanyak jumlah yang tertera pada tabel penjadwalan jumlah pemutaran yang telah kita bahas sebelumnya. Berikut ini adalah ilustrasi pemutaran ke kiri sebanyak 1 kali (untuk ruas kiri atau ruas kanan kunci yang panjangnya 28 bit). Untuk pemutaran ke kiri dengan jumlah yang lebih besar, cukup mengulangi proses ini sebanyak yang diinginkan.
Setelah ruas kiri dan ruas kanan diputar kiri dengan jumlah tertentu, selanjutnya hasil pemutaran tersebut digabungkan kembali menjadi 56 bit dan diacak dengan Permutation Choice‐2 untuk menghasilkan sub kunci. Rincian Permutation Choice 2 adalah sebagai berikut.
Karena jumlah keluaran Permutation Choice 48 bit sementara masukannya 56 bit, dengan demikian ada 8 bit yang “dihilangkan”. Bit-bit yang tidak muncul dalam keluaran Permutation Choice 2 diwarnai abuabu. Selanjutnya, mari kita perjelas algoritma enkripsinya. Setelah melihat diagram blok secara keseluruhan proses enkripsi, ada tiga hal yang perlu digarisbawahi dan dibahas lebih lanjut yaitu, pertama IP (Initial Permutation), kedua detail fungsi F dan IP 1 (Inverse Initial Permutation).
Selama proses enkripsi, pertama data dipetakan dan diberi indeks dengan prosedur sama persis seperti pemberian indeks pada penjadwalan kunci yang telah didiskusikan sebelumnya. Selanjutnya hasil pemetaan diacak dengan menggunakan Initial Permutation dengan rincian sebagai berikut
Masukan IP
Setelah data melewati proses Initial Permutation, data yang akan disandikan kemudian dibagi menjadi dua ruas, yaitu ruas kiri dan ruas kanan yang masIng-masing lebarnya 4 byte (32 bit). Pada setiap putaran, ruas kanan dan sub kunci yang bersangkutan diproses dalam fungsi F dan hasilnya di XOR dengan ruas kiri ruas kanan dan kiri dipertukarkan. Proses ini diulang sebanyak 16 kali.
Pada putaran terakhir ruas kiri dan ruas kanan dipertukarkan kembali untuk menghilangkan efek pertukaran pada putaran terakhir. Hasil ini kemudian diacak kembali dengan menggunakan IP 1 (Inverse Initial Permutation). XOR merupakan fungsi Boolean yang didefinisikan dengan table benaran berikut.
Initial Permutatrion dan Inverse Initial Permutation memiliki karakter saling menetralkan. Dalam notasi matematika, IP−1(IP(A))= A. Inverse Initial Permutation didefinisikan sebagai berikut.
Fungsi F merupakan fungsi inti kompleks yang terdiri dari beberapa proses. Fungsi F menerima dua parameter, yaitu sub kunci dan ruas kanan data yang akan dienkripsi. Berikut ini adalah diagram blok detail fungsi F. Pada fungsi F, ruas kanan (32 bit) diacak sekaligus diperluas dengan permutasi E menjadi 48 bit. Hasil pengacakan tersebut kemudian di XOR dengan sub kunci yang telah ditetapkan dengan putaran yang bersangkutan. Hasil XOR kemudian dipecah menjadi 8 unit yang masing‐masing lebarnya 6 bit. Setiap unit tersebut kemudian disubstitusikan dalam SBOX S1 hingga S8. 6 bit paling kiri disubstitusikan ke dalam S1 dan 6 bit paling kanan disubstitusikan ke dalam S8. Hasil setiap substitusi kemudian digabungkan menjadi data selebar 48 bit yang kemudian diacak dan diperpendek dengan permutasi P menjadi 32 bit. Hasil permutasi P kemudian dinyatakan sebagai keluaran fungsi F yang nantinya akan di XOR kan dengan ruas kiri data yang akan dienkripsi.
Dalam DES, algoritma dekripsi tepatnya merupakan proses kebalikan (inverse) algoritma enkripsi. Dalam prakteknya proses pembalikan (proses dekripsi) ini diimplementasikan dengan membalikkan urutan sub kunci yang digunakan dalam proses enkripsi, selebihnya algoritma enkripsi dan dekripsi adalah sama. Algoritma enkripsi DES bekerja dengan mengolah blok data 8 byte (64 bit) dengan blok kunci 8 byte (64 bit). Proses penyandian dalam DES diawali dengan fungsi pengacakan bit yang dinamai IP (Initial Permutation) kemudian fungsi inti DES yang diulang sebanyak 16 kali dan terakhir ditutup dengan fungsi pengacakan bit lain yang dikenal denagn nama IP‐1 (Inverse Initial Permutation). Pada sisi lain algoritma penjadwalan sub kunci akan menghasilkan 16 sub kunci secara berurutan dari parameter kunci yang diberikan untuk digunakan pada setiap putaran fungsi inti DES. Sub kunci pertama untuk putaran pertama, sub kunci kedua untuk putaran kedua dan seterusnya hingga putaran ke 16.
Perlu diingat, kendatipun slot kunci yang disediakan digunakan berukuran 8 byte (64 bit), ternyata pada faktanya ukuran kunci yang digunakan hanya sebanyak 56 bit saja, karena bit paling signifikan (MSB) dari setiap bit diabaikan. Jadi sebenarnya ukuran kunci DES adalah 56 bit. Adapun Ilustrasi penyandian DES dalam diagram blok dapat dilihat pada gambar di samping. Algoritma penjadwalan sub kunci dibentuk dari pengacakan bit dan pemutaran kiri ruas kanan dan kiri kunci. Pertama kali, bit-bit kunci diacak dengan Permutation Choice 1 dan dibagi dua menjadi ruas kiri dan ruas kanan. Kedua ruas tersebut kemudian diputar kiri dan diacak kembali dengan Permutation Choice 2 untuk menghasilkan sub kunci. Jumlah pemutaran ke kiri ditentukan secara spesifik untuk setiap sub kunci.
Rinciannya adalah sebagai berikut.
Untuk lebih lanjut, mari terlebih dahulu kita bahas detail algoritma penjadwalan sub kunci kemudian algoritma enkripsi dan terakhir algoritma dekripsi. Inti dari semua proses permutasi dalam DES adalah pengacakan bit. Sebagai contoh, jika masukan permutasi sebanyak n bit, maka akan ada sebanyak 2n kemungkinan masukan permutasi dan ada 2n kemungkinan hasil permutasi. Setiap satu kemungkinan masukan akan berpasangan dengan satu kemungkinan keluaran.
Sebelum proses penjadwalan kunci dimulai, kunci terlebih dahulu dipetakan menjadi matriks 8x8 dan diberi indeks. Dalam setiap byte, indeks paling kecil melambangkan LSB dan indeks paling besar melambangkan MSB. Sebagai contoh, indeks ke 1 melambangkan LSB byte pertama, index ke 8 melambangkan MSB byte pertama, indeks ke 9 melambangkan LSB byte kedua, indeks ke 16 melambangkan MSB byte kedua dan seterusnya hingga indeks ke 64 yang melambangkan MSB byte ke 8. Mari kita perhatikan contoh dibawah ini. Kunci = 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
Setelah pemetaan, hasilnya adalah sebagai berikut.
Matriks Indeks Hasil Pemetaan
Pengacakan bit Permutation Choice‐1 akan mengolah 8 byte blok kunci menjadi 56 bit sub kunci yang siap diproses lebih lanjut. Untuk lebih mudahnya, proses pengacakan bit dilambangkan dengan pengacakan indeks bit yang bersangkutan. Berikut ini adalah detail Permutation Choice 1.
Setelah kunci diacak dengan Permutation Choice 1, hasil pengacakan bit tersebut kemudian dibagi 2, yakni ruas kiri dan ruas kanan, masing masing berukuran 28 bit (ditandai dengan garis tebal pada hasil Permutation Choice 1). Selanjutnya kedua ruas tersebut kemudian mengalami pemutaran kiri sebanyak jumlah yang tertera pada tabel penjadwalan jumlah pemutaran yang telah kita bahas sebelumnya. Berikut ini adalah ilustrasi pemutaran ke kiri sebanyak 1 kali (untuk ruas kiri atau ruas kanan kunci yang panjangnya 28 bit). Untuk pemutaran ke kiri dengan jumlah yang lebih besar, cukup mengulangi proses ini sebanyak yang diinginkan.
Setelah ruas kiri dan ruas kanan diputar kiri dengan jumlah tertentu, selanjutnya hasil pemutaran tersebut digabungkan kembali menjadi 56 bit dan diacak dengan Permutation Choice‐2 untuk menghasilkan sub kunci. Rincian Permutation Choice 2 adalah sebagai berikut.
Karena jumlah keluaran Permutation Choice 48 bit sementara masukannya 56 bit, dengan demikian ada 8 bit yang “dihilangkan”. Bit-bit yang tidak muncul dalam keluaran Permutation Choice 2 diwarnai abuabu. Selanjutnya, mari kita perjelas algoritma enkripsinya. Setelah melihat diagram blok secara keseluruhan proses enkripsi, ada tiga hal yang perlu digarisbawahi dan dibahas lebih lanjut yaitu, pertama IP (Initial Permutation), kedua detail fungsi F dan IP 1 (Inverse Initial Permutation).
Selama proses enkripsi, pertama data dipetakan dan diberi indeks dengan prosedur sama persis seperti pemberian indeks pada penjadwalan kunci yang telah didiskusikan sebelumnya. Selanjutnya hasil pemetaan diacak dengan menggunakan Initial Permutation dengan rincian sebagai berikut
Masukan IP
Setelah data melewati proses Initial Permutation, data yang akan disandikan kemudian dibagi menjadi dua ruas, yaitu ruas kiri dan ruas kanan yang masIng-masing lebarnya 4 byte (32 bit). Pada setiap putaran, ruas kanan dan sub kunci yang bersangkutan diproses dalam fungsi F dan hasilnya di XOR dengan ruas kiri ruas kanan dan kiri dipertukarkan. Proses ini diulang sebanyak 16 kali.
Pada putaran terakhir ruas kiri dan ruas kanan dipertukarkan kembali untuk menghilangkan efek pertukaran pada putaran terakhir. Hasil ini kemudian diacak kembali dengan menggunakan IP 1 (Inverse Initial Permutation). XOR merupakan fungsi Boolean yang didefinisikan dengan table benaran berikut.
Initial Permutatrion dan Inverse Initial Permutation memiliki karakter saling menetralkan. Dalam notasi matematika, IP−1(IP(A))= A. Inverse Initial Permutation didefinisikan sebagai berikut.
Fungsi F merupakan fungsi inti kompleks yang terdiri dari beberapa proses. Fungsi F menerima dua parameter, yaitu sub kunci dan ruas kanan data yang akan dienkripsi. Berikut ini adalah diagram blok detail fungsi F. Pada fungsi F, ruas kanan (32 bit) diacak sekaligus diperluas dengan permutasi E menjadi 48 bit. Hasil pengacakan tersebut kemudian di XOR dengan sub kunci yang telah ditetapkan dengan putaran yang bersangkutan. Hasil XOR kemudian dipecah menjadi 8 unit yang masing‐masing lebarnya 6 bit. Setiap unit tersebut kemudian disubstitusikan dalam SBOX S1 hingga S8. 6 bit paling kiri disubstitusikan ke dalam S1 dan 6 bit paling kanan disubstitusikan ke dalam S8. Hasil setiap substitusi kemudian digabungkan menjadi data selebar 48 bit yang kemudian diacak dan diperpendek dengan permutasi P menjadi 32 bit. Hasil permutasi P kemudian dinyatakan sebagai keluaran fungsi F yang nantinya akan di XOR kan dengan ruas kiri data yang akan dienkripsi.
Sekarang mari kita bahas detail fungsi F satu per satu. Pertama, permutasi E memetakan 32 bit masukan menjadi 48 bit keluaran. Karena lebar keluaran lebih besar dari lebar masukan, maka ada beberapa bit masukan yang digandakan untuk mengisi kekosongan. Permutasi E didefinisikan sebagai berikut
Kedua, DES memiliki 8 buah SBOX (S1 hingga S8) yang memiliki masukan selebar 6 bit dan keluaran selebar 4 bit. Karena lebar keluaran SBOX lebih kecil daripada lebar masukannya, maka adakemungkinan beberapa kombinasi masukan yang berbeda akan menghasilkan keluaran yang sama. Seandainya masukan setiap SBOX adalah 1 2 3 4 5 6 x x x x x x maka S1 hingga hingga S8 didefinisikan sebagai berikut.
Ketiga, hasil substitusi SBOX kemudian digabungkan menjadi 32 bit dan diacak dengan permutasi P dan hasil permutasi P merupakan keluaran fungsi F yang nantinya di XOR dengan ruas kiri. Permutasi P didefinisikan sebagai berikut.
Dalam DES, algoritma yang digunakan dalam proses enkripsi sama persis dengan algoritma yang digunakan dalam proses dekripsi, hanya saja penggunaan sub kuncinya saja yang berbeda. Dalam proses dekripsi, urutan sub kunci yang digunakan merupakan kebalikan urutan sub kunci yang digunakan dalam proses enkripsi.
Implementasi
Operasi yang digunakan dalam algoritma DES merupakan operasi‐operasi sederhana semisal move, bit copy, XOR, lookup, shift dan rotate. Semua operasi tersebut tersedia dalam mikroprosesor/mikrokontroler 8 bit. Dengan demikian dapat kita simpulkan bahwa DES dapat diterapkan dalam platform 8 bit.
Semua operasi permutasi dalam DES, baik IP, IP 1, PC 1, PC 2, E dan P, pada intinya hanyalah operasi penyalinan bit. Jika instruksi penyalinan bit tidak tersedia, maka permutasi juga dapat diimplementasikan dengan operasi shift, dengan memanfaatkan carry yang timbul dari setiap instruksi shift. Selain itu, operasi substitusi dengan SBOX juga dapat dengan mudah diimplementasikan menggunakan table lookup dengan ukuran yang masih dapat dijangkau. Dalam platform 32 atau 64 bit, DES dapat diimplementasikan lebih effektif lagi, tapi sayangnya operasi bit per bit seperti permutasi mungkin sedikit menyita performa prosesor dan memperlambat laju enkripsi per detik.
3. Plaintext: Muhammad Ilham
Key: 12345678
Hasil Enkripsi DES:
ddiOrSCDu9P4CFe+aWv3c+YjEn1AxX7h/rlZt9RkL8s=
Hasil Enkripsi IDEA:
tPgPHQR1Jmf03AKg2AeFnemMR0R3KqiEHW+Bd3KvF2I=
Link Sumber Test: https://8gwifi.org/CipherFunctions.jsp
4. Persamaan:
- IDEA dan DES adalah algoritma cipher blok yang populer karena dijadikan standard algoritma enkripsi kunci-simetri (meskipun sekarang sudah digantikan AES, karena dianggap sudah tidak aman).
- IDEA dan DES adalah algoritma simetri yang beroperasi pada sebuah blok pesan terbuka 64bit.
- IDEA dan DES sebenarnya adalah algoritma yang sama, hanya saja nama DES lebih dikenal dibanding IDEA.
- IDEA dan DES adalah sama- sama pengembangan dari IPES (Improved Proposed Encryption Standard (IPES)
- IDEA dan DES adalah algoritma yang sederhana, hanya saja keduanya bergantung terhadap key-nya (semakin rumit keynya, semakin sulit algoritma tersebut dipecahkan).
- IDEA dan DES dibeberapa proses enkripsi dan dekripsinya terdapat beberapa operasi yang sama (misalnya terdapat operasi XOR)
Perbedaan:
- IDEA dalam proses enkripsi maupun dekripsinya menggunakan operasi pembagian modulo serta perkalian modulo, sedangkan DES menggunakan permutasi.
- IDEA menggunakan kunci 128bit, sedangkan DES menggunakan kunci 58bit.
- IDEA pada awalnya dibuat sebagai pengganti DES, sedangkan DES itu sendiri pada awalnya dibuat demi mengamankan kepentingan politik.
5. Link Blog Kelompok Lain:
6. Sumber:
- PPT Kelompok 1
- http://windhazone.blogspot.com/2010/07/sistem-keamanan-komputer-des.html
- https://makalah-update.blogspot.com/2012/11/makalah-pengertian-dan-sejarah-des-data.html
- http://ilmu-kriptografi.blogspot.com/2009/05/algoritma-des-data-encryption-standart.html
- https://en.wikipedia.org/wiki/Data_Encryption_Standard
C. Algoritma IDEA dan DES pada dasarnya adalah algoritma yang sama, karena pada proses enkripsi dan dekripsinya lebih ditekankan kepada KEY-nya. IDEA sendiri menggunakan kunci 128 bit, sedangkan DES menggunakan kunci 58bit. Pada dasarnya pun kedua algoritma ini memiliki fungsi yang sama, yaitu mengamankan informasi ataupun data agar tidak dapat dibaca/diakses oleh publik. Kedua algoritma ini, sama-sama menggunakan operasi XOR pada proses enkripsi maupun dekripsinya, yang mana bisa dikatakan sebenarnya kedua algoritma ini tidak jauh berbeda satu sama lainnya. Meskipun demikian, kedua algoritma ini sudah tidak lagi dianggap aman. Sehingga kemudian keduanya digantikan oleh AES yaitu Algoritma Encryption Standart.
Keamanan Sistem Komputer [QUIZ]
4/
5
Oleh
Muhammad Ilham
