Wednesday 12 December 2018

KEAMANAN SISTEM KOMPUTER (KSK)


Nama : Noval Gandhi Sadewa
NIM : 201731236
Kelas : B



A. Algoritma


1. Hubungan KSK dengan Kriptografi Algoritma Kelompok
Keamanan Sistem Komputer merupakan sebuah upaya yang dilakukan untuk mengamankan kinerja dan proses komputer. Penerapan Keamanan Sistem Komputer  dalam kehidupan sehari-hari berguna sebagai penjaga sumber daya sistem agar tidak digunakan, modifikasiinterupsi, dan diganggu oleh orang yang tidak berwenang. 
Sasaran keamanan sistem komputer antara lain adalah sebagai perlindungan informasi terhadap pencurian atau korupsi, atau pemeliharaan ketersediaan, seperti dijabarkan dalam kebijakan keamanan.
Sistem keamanan pengiriman data (komunikasi data yang aman) dipasang untuk mencegah pencurian, kerusakan, dan penyalahgunaan data yang terkirim melalui jaringan komputer. Dalam praktek, pencurian data berwujud pembacaan oleh pihak yang tidak berwenang biasanya dengan menyadap saluran publik. Teknologi jaringan komputer telah dapat mengurangi bahkan membuang kemungkinan adanya kerusakan data akibat buruknya konektivitas fisik, namun gangguan tetap bisa terjadi karena ada unsur kesengajaan yang mengarah ke penyalahgunaan sistem dari pihak-pihak tertentu.
Makalah ini bertujuan untuk mengetahui teknik-teknik mengamankan data dengan proses Enkripsi dan Dekripsi. Enkripsi dan Dekripsi yang akan dibahas pada makalah ini adalah dengan menggunakan kriptografiInternational Data Encryption Algorithm (IDEA).

2. Penjelasan Algoritma Kriptografi IDEA
·         Pengertian Kriptografi Algoritma IDEA
IDEA merupakan block cipher (cipher blok), yang beroperasi pada blok plaintext 64 bit. Panjang kuncinya 128bit. Algoritma yang sama digunakan untuk proses enkripsi dan dekripsi. Sebagaimana algoritma enkripsi yang lain, IDEA menggunakan confusion dan diffusionIDEA menggunakan operasi aljabar yang tidak kompatibel sebagai berikut,
a.       XOR.
b.       Penambahan modulo 216.
c.        Perkalian modulo 216+1 (operasi ini menggantikan kotak-S atau S-Box).
·         Sejarah Kriptografi Algoritma IDEA
Metode IDEA diperkenalkan pertama kali oleh Xuejia Lai dan James Massey pada tahun 1990 dengan nama PES (Proposed Encryption Standard). Tahun berikutnya, setelah Biham dan Shamir mendemonstrasikancryptanalysis yang berbeda, sang penemu memperkuat algoritma mereka dari serangan dan algoritma hasil pengubahan tersebut diberi nama IPES (Improved Proposed Encryption Algorithm). Kemudian pada tahun 1992, IPES diganti namanya menjadi IDEA (International Data Encryption Algorithm). IDEA dirancang untuk menggantikan DES (Data Encryption Standard).
·         Cara Kerja (Proses Enkripsi dan Proses Deskripsi) Kriptografi Algoritma IDEA
Dalam proses metode IDEA memiliki input 128 bit kunci (key) yang identik dengan 32 digit heksadesimal ataupun 16 karakter yang diproses untuk menghasilkan 52 subkey dengan perincian masing-masing 6 buahsubkey akan digunakan pada 8 putaran dan 4 buah subkey untuk transformasi output. Algoritma IDEA ini menggunakan kunci (key) simetris, dimana kunci yang digunakan enkripsi sama dengan dekripsi.
Proses Enkripsi Kriptografi Algoritma IDEA
Proses enkripsi algoritma IDEA adalah sebagai berikut, pertama–tama plaintext 64bit dibagi menjadi 4 buah sub blok dengan panjang 16 bit, yaitu X1, X2, X3, X4. Empat sub blok ini menjadi masukan bagi iterasi tahap pertama algoritma. Total terdapat 8 iterasi. Pada setiap iterasi, 4 sub blok di-XOR-kan, ditambahkan, dikalikan dengan yang lain dan dengan 6 buah subkey 16 bit. Diantara iterasi sub blok kedua dan ketiga saling dipertukarkan. Akhirnya 4 buah sub blok dikombinasikan dengan 4 subkey dalam transformasi output. Pada setiap tahapan, urutan berikut ini dikerjakan,
1.   Kalikan X1 dengan K1 mod (216 + 1).
2.   Tambahkan X2 dengan K2 mod 216.
3.   Tambahkan X3 dengan K3 mod 216.
4.   Kalikan X4 dengan K4                 mod (216 + 1).
5.   XOR hasil dari step 1 dan 3.
6.   XOR hasil dari step 2 dan 4.
7.   Kalikan hasil dari step 5 dengan K5 mod (216 + 1).
8.   Tambahkan hasil dari step 6 dan 7 mod 216.
9.   Kalikan hasil dari step 8 dengan K6 mod (216 + 1).
10.   Tambahkan hasil dari step 7 dan 9 mod 216.
11.   XOR hasil dari step 1 dan 9.
12.   XOR hasil dari step 3 dan 9.
13.   XOR hasil dari step 2 dan 10.
14.   XOR hasil dari step 4 dan 10.

Output dari setiap round adalah empat sub blok yang dihasilkan pada langkah 11, 12, 13 dan 14. Sub blok 12 dan 13 di-swap (kecuali untuk putaran terakhir) sehingga input dari putaran berikutnya adalah hasil kombinasi dari langkah 11 13 12 14.Setelah 8 putaran, akan dilakukan tranformasi output berikut,
1.   Kalikan X1 dengan subkey K1 mod (216 + 1).
2.   Tambahkan X2 dengan subkey K2 mod 216.
3.   Tambahkan X3 dengan subkey K3 mod 216.
4.   Kalikan X4 dengan subkey K4 mod (216 + 1).

Proses Deskripsi Kriptografi Algoritma IDEA
Proses dekripsi sama persis dengan proses enkripsi. Perbedaannya hanya terletak pada aturan dari subkey-nya. Urutan subkey terbalik dengan proses enkripsi dan subkey-nya di-inverse-kan. Subkey pada langkah transformasi output pada proses enkripsi di-inverse-kan dan digunakan sebagai subkey pada putaran 1 pada proses dekripsi. Subkey pada putaran 8 di-inverse-kan dan digunakan sebagai subkey pada putaran 1 dan 2 pada proses dekrips. Demikian seterusnya, agar lebih jelas lihatlah tabel berikut ini.
Round
Subkey Enkripsi
Subkey Dekripsi
1
K1(1) K2(1) K3(1) K4(1) K5(1) K6(1)
K1(9)-1 -K2(9)-K3(9) K4(9)-1 K5(8) K6(8)
2
K1(2) K2(2) K3(2) K4(2) K5(2) K6(2)
K1(8)-1 -K3(8) -K2(8) K4(8)-1 K5(7) K6(7)
3
K1(3) K2(3) K3(3) K4(3) K5(3) K6(3)
K1(7)-1 -K3(7) -K2(7) K4(7)-1 K5(6) K6(6)
4
K1(4) K2(4) K3(4) K4(4) K5(4) K6(4)
K1(6)-1 -K3(6) -K2(6) K4(6)-1 K5(5) K6(5)
5
K1(5) K2(5) K3(5) K4(5) K5(5) K6(5)
K1(5)-1 -K3(5) -K2(5) K4(5)-1 K5(4) K6(4)
6
K1(6) K2(6) K3(6) K4(6) K5(6) K6(6)
K1(4)-1 -K3(4) -K2(4) K4(4)-1 K5(3) K6(3)
7
K1(7) K2(7) K3(7) K4(7) K5(7) K6(7)
K1(3)-1 -K3(3) -K2(3) K4(3)-1 K5(2) K6(2)
8
K1(8) K2(8) K3(8) K4(8) K5(8) K6(8)
K1(2)-1 -K3(2) -K2(2) K4(2)-1 K5(1) K6(1)
Transfor masi output

K1(9) K2(9) K3(9) K4(9)
K1(1)-1 -K2(1) -K3(1) K4(1)-1

·         Flowchart dan Penjelasan Kriptografi Algoritma IDEA

 Penjelasan :
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 2 16 dan operasi  perkalian modulo (216 + 1). Operasi ini  semuanya dilakukan pada sub­blok 16­bit.  IDEA  mendapatkan keamanannya dari operasi dari  grup yang berbeda – penambahan dan penjumlahan modular serta exclusive or dari bit —yang secara aljabar tidak cocok dalam beberapa pengertian.

3. Studi Kasus

Tema : Industri

Jakarta, CNN Indonesia -- Telkomsel memberi keterangan resmi mengenai peretasan terhadap situsnya. Dalam konferensi pers yang digelar Telkomsel, Ririek Adriansyah, Direktur Utama Telkomsel menyebutkan mengakui peretasan tersebut. "Web server kita diretas sekitar 5.30 (WIB). (Lalu) kita ambil langkah matikan web kita," terang Ririek kepada wartawan di Jakarta, Jumat (28/4).
Ririek mengaku situs Telkomsel telah berangsur normal sejak pukul 15.00 WIB. "Kalau sekarang diakses, sudah normal kembali," tambahnya. Berdasarkan pengamatan CNN Indonesia.com, situs Telkomsel kembali tak bisa diakses dalam beberapa jam. Namun, kini sudah bisa diakses kembali. Lebih lanjut Ririek menyebutkan bahwa web server Telkomsel tersebut tidak terhubung dengan sistem di dalam, sehingga tidak berimbas kepada akses data pelanggan. "Jadi (situs itu) hanya untuk menyediakan informasi saja. Tidak mungkin kena akses pelanggan."
Ririek juga menyebutkan bahwa Telkomsel saat ini sedang dalam proses migrasi server. "Kita sudah ambil langkah-langkah sebagai fokus agar tak terulang kembali." Berdasarkan pantauan CNN Indonesia.com sepanjang hari ini, berikut kronologi pembajakan situs Telkomsel.
05.30 WIB - Hacker retas situs www.telkomsel.com
06.00 WIB - Laporan peretasan muncul pertama kali di Twitter disertai tangkapan layar deface yang dilakukan hacker di situs tersebut.
07.00 WIB - Situs www.telkomsel.com tak bisa diakses. Netizen mulai ramai membicarakan peristiwa peretasan ini.
11.00 WIB - CNNIndonesia.com sempat berhasil mengecek situs Telkomsel yang sudah kembali live.
15.00 WIB - Telkomsel mengklaim situs sudah berangsur pulih dan sudah bisa diakses kembali.
17.30 WIB - Pantauan CNNIndonesia.com situs Telkomsel masih dalam perbaikan. 
18.30 WIB - Pantauan CNNIndonesia.com situs Telkomsel sudah dapat diakses kembali.
Alfons Tanujaya, pakar keamanan digital, menyebut ada dua kemungkinan situs Telkomsel kena retas. Pertama karena ada celah keamanan yang berhasil dieksploitasi dan kedua karena username dan password web hosting berhasil diketahui oleh peretas.

 Soal kemungkinan pertama, Alfons menyebut pihak keamanan Telkomsel tidak sigap dalam menambal celah keamanan di sistem hosting yang telah terekspos para peretas. Alhasil pelaku berhasil mengeksploitasi situs Telkomsel seperti yang terlihat sejak pagi. Alfons mengatakan celah seperti itu bisa berujung pada risiko eksploitasi database oleh pihak peretas yang imbasnya bisa sangat parah jika terjadi.
 "Kemungkinan kecil, tapi ceroboh banget kalau itu sampai terjadi," ujar Alfons ketika ditelpon CNN Indonesia.com, Jumat (28/4).
Kemudian untuk kemungkinan berikutnya, peretasan terjadi akibat peretas mengetahui nama pengguna dan kata sandi untuk mengakses web hosting. Menurut Alfons, Telkomsel seharusnya bisa menghindarinya dengan memasang pengamanan two-factor authentication (TFA) atau pengamanan dua pintu. Cara lain yang semestinya dipakai oleh Telkomsel adalah membatasi Internet Protocol (IP) yang bisa mengakses dan mengganti web hosting mereka. "Jadi harusnya sekelas Telkomsel melakukan hal-hal seperti itu dan itu artinya belum dilakukan," ucap Alfons. Selain masalah deface yang mendera situsnya Telkomsel juga harus menanggung malu lantaran hasil pencarian teratas dengan kata kunci 'Telkomsel' di Google kena retas sehingga berisi kata-kata kasar. Menanggapi hal ini, Alfons berujar Telkomsel bisa mengubahnya secepat mungkin dengan menghubungi pihak Google. "Kalau adminnya peduli, bisa itu diubah," imbuhnya.
Sampai tulisan ini ditulis pada pukul 12.10 WIB, hasil pencarian dengan kata kunci 'Telkomsel' di mesin Google masih kena retas. Alfons memperkirakan hal itu terjadi karena mesin pencari Google bekerja lebih cepat dibanding mesin pencari lain seperti Bing dan Yahoo karena dapat menangkap cache dari metadata kurang dari 12 jam. Hal itu menjelaskan pencarian dengan kata kunci 'Telkomsel' di Bing dan Yahoo tidak menampilkan hal yang sama seperti di Google.
Pada bagian username dan password dari studi kasus tersebut dapat diterapkan Algoritma Kriptografi IDEA sebagai sistem keamanan data pengguna.

4. Sintaks dari Algoritma Kriptografi IDEA (Proses Enkripsi dan Deskripsi)

Proses Enkripsi Algoritma IDEA
   Sub Proses_Encryp() On Error Resume Next
Dim i, cRow As Integer Dim jlhBaris As Integer Dim bTmp       As  Double Dim tmpHasil As String Dim jlhx As Integer
Dim X1, X2, X3, X4 As String Dim proses As Integer
jlhx = (msfp.Rows - 1) * 2 proses = (jlhx / 8) * 14 L1 = ""
L2 = ""
L3 = ""
L4 = ""
L5 = ""
L6 = ""
L7 = ""
L8 = ""
L9 = ""
L10 = ""
L11 = ""
L12 = ""
L13 = ""
L14 = ""
bTmp = 0 tmpHasil = ""
frmmaster.xF.Caption = "Informasi Enkripsi Data:" 'frmmaster.txtinfo.Text = ""
i = 0
For i = 1 To val(txtjlh.Text)
frmmaster.txtinfo.Text = frmmaster.txtinfo.Text & Chr(13) & " PUTARAN " & i & " " & Chr(13)
With frminfopkunci.msf jlhBaris = .Rows - 1
Screen.MousePointer = vbHourglass For cRow = 1 To proses
Select Case cRow
Case 1
.TextMatrix(cRow, 1) = "(X1 * K1) mod (2^16 + 1) =(" & msfp.TextMatrix(cRow, 1) & " * " & msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) * FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L1 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 2
.TextMatrix(cRow, 1) = "(X2 + K2) mod 2^16 =" & msfp.TextMatrix(cRow, 1) & " + " & msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) + FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16) L2 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 3
.TextMatrix(cRow, 1) = "(X3 + K3) mod 2^16 =" & msfp.TextMatrix(cRow, 1) & " + " & msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) + FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16) L3 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 4
.TextMatrix(cRow, 1) = "(X4 * K4) mod (2^16 + 1) =(" & msfp.TextMatrix(cRow, 1) & " * " & msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) * FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L4 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasi
Case 5
.TextMatrix(cRow, 1) = "L#1 XOR L#3 =" & Trim(L1) & " XOR " & Trim(L3)
tmpHasil = FXORBiner(Trim(L1), Trim(L3), 16) L5 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 6
.TextMatrix(cRow, 1) = "L#2 XOR L#4 =" & Trim(L2) & " XOR " & Trim(L4)
tmpHasil = FXORBiner(Trim(L2), Trim(L4), 16) L6 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 7
.TextMatrix(cRow, 1) = "(L#5 * K5) mod (2^16 + 1) =" & L5 & " * " & msfk.TextMatrix(cRow - 2, 1) & " mod (2^16 + 1)"
bTmp = FBiner2Dec(Trim(L5)) * FBiner2Dec(msfk.TextMatrix(cRow - 2, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L7 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 8
.TextMatrix(cRow, 1) = "(L#6 + L#7)) mod 2^16 =" & L6 & " + " & L7 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L6)) + FBiner2Dec(Trim(L7)) tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L8 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 9
.TextMatrix(cRow, 1) = "(L#8 * K6) mod (2^16 + 1) =" & L8 & " * " & msfk.TextMatrix(cRow - 3, 1)
bTmp = FBiner2Dec(Trim(L8)) * FBiner2Dec(msfk.TextMatrix(cRow - 3, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L9 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 10
.TextMatrix(cRow, 1) = "(L#7 + L#9)) mod 2^16 =" & L7 & " + " & L9 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L7)) + FBiner2Dec(Trim(L9)) tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L10 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 11
.TextMatrix(cRow, 1) = "L#1 XOR L#9 =" & L1 & " XOR " & L9
tmpHasil = FXORBiner(Trim(L1), Trim(L9), 16) L11 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 12
.TextMatrix(cRow, 1) = "L#3 XOR L#9 =" & L3 & " XOR " & L9
tmpHasil = FXORBiner(Trim(L3), Trim(L9), 16) L12 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 13
.TextMatrix(cRow, 1) = "L#2 XOR L#10 =" & L2 & " XOR " & L10
tmpHasil = FXORBiner(Trim(L2), Trim(L10), 16) L13 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 14
.TextMatrix(cRow, 1) = "L#4 XOR L#10 =" & L4 & " XOR " & L10
tmpHasil = FXORBiner(Trim(L4), Trim(L10), 16) L14 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil End Select
Next cRow d_Grid
End With Next i
Screen.MousePointer = vbDefault Call transForm
End Sub

Proses Dekripsi Algoritma IDEA
Sub Proses_Decryp() On Error Resume Next
Dim i, cRow As Integer Dim jlhBaris As Integer Dim bTmp       As  Double Dim tmpHasil As String Dim jlhx As Integer
Dim X1, X2, X3, X4 As String Dim proses As Integer
jlhx = (msfp.Rows - 1) * 2 proses = (jlhx / 8) * 14
L1 = ""
L2 = ""
L3 = ""
L4 = ""
L5 = ""
L6 = ""
L7 = ""
L8 = ""
L9 = ""
L10 = ""
L11 = ""
L12 = ""
L13 = ""
L14 = ""
bTmp = 0 tmpHasil = ""
frmmaster.xF.Caption = "Informasi Deskripsi Data:" 'frmmaster.txtinfo.Text = ""
i = 0
For i = 1 To val(txtjlh.Text)
frmmaster.txtinfo.Text = frmmaster.txtinfo.Text & Chr(13) & "PUTARAN " & i & " " & Chr(13)
With frminfopkunci.msf jlhBaris = .Rows - 1
Screen.MousePointer = vbHourglass For cRow = 1 To proses
Select Case cRow Case 1
.TextMatrix(cRow, 1) = "(X1 * K1) mod (2^16 + 1) =(" & msfp.TextMatrix(cRow, 1) & " * " & msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) * FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L1 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil

Case 2
.TextMatrix(cRow, 1) = "(X2 + K2) mod 2^16 =" & msfp.TextMatrix(cRow, 1) & " + " & msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) + FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16) L2 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 3
.TextMatrix(cRow, 1) = "(X3 + K3) mod 2^16 =" & msfp.TextMatrix(cRow, 1) & " + " & msfk.TextMatrix(cRow, 1) & ") mod (2^16)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) + FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16) L3 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 4
.TextMatrix(cRow, 1) = "(X4 * K4) mod (2^16 + 1) =(" & msfp.TextMatrix(cRow, 1) & " * " & msfk.TextMatrix(cRow, 1) & ") mod (2^16 + 1)"
bTmp = FBiner2Dec(msfp.TextMatrix(cRow, 1)) * FBiner2Dec(msfk.TextMatrix(cRow, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L4 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 5
.TextMatrix(cRow, 1) = "L#1 XOR L#3 =" & Trim(L1) & " XOR " & Trim(L3)
tmpHasil = FXORBiner(Trim(L1), Trim(L3), 16) L5 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 6
.TextMatrix(cRow, 1) = "L#2 XOR L#4 =" & Trim(L2) & " XOR " & Trim(L4)
tmpHasil = FXORBiner(Trim(L2), Trim(L4), 16) L6 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 7
.TextMatrix(cRow, 1) = "(L#5 * K5) mod (2^16 + 1) =" & L5 & " * " & msfk.TextMatrix(cRow - 2, 1) & " mod (2^16 + 1)"
bTmp = FBiner2Dec(Trim(L5)) * FBiner2Dec(msfk.TextMatrix(cRow - 2, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16) L7 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 8
.TextMatrix(cRow, 1) = "(L#6 + L#7)) mod 2^16 =" & L6 & " + " & L7 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L6)) + FBiner2Dec(Trim(L7)) tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L8 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 9
.TextMatrix(cRow, 1) = "(L#8 * K6) mod (2^16 + 1) =" & L8 & " * " & msfk.TextMatrix(cRow - 3, 1)
bTmp = FBiner2Dec(Trim(L8)) * FBiner2Dec(msfk.TextMatrix(cRow - 3, 1))
tmpHasil = FDec2Biner(FMod(bTmp, (2 ^ 16) + 1), 16)
 L9 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 10
.TextMatrix(cRow, 1) = "(L#7 + L#9)) mod 2^16 =" & L7 & " + " & L9 & "mod 2^16"
bTmp = FBiner2Dec(Trim(L7)) + FBiner2Dec(Trim(L9)) tmpHasil = FDec2Biner(FMod(bTmp, 2 ^ 16), 16)
L10 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 11
.TextMatrix(cRow, 1) = "L#1 XOR L#9 =" & L1 & " XOR " & L9
tmpHasil = FXORBiner(Trim(L1), Trim(L9), 16) L11 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 12
.TextMatrix(cRow, 1) = "L#3 XOR L#9 =" & L3 & " XOR " & L9
tmpHasil = FXORBiner(Trim(L3), Trim(L9), 16) L12 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 13
.TextMatrix(cRow, 1) = "L#2 XOR L#10 =" & L2 & " XOR " & L10
tmpHasil = FXORBiner(Trim(L2), Trim(L10), 16) L13 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil
Case 14
.TextMatrix(cRow, 1) = "L#4 XOR L#10 =" & L4 & " XOR " & L10
tmpHasil = FXORBiner(Trim(L4), Trim(L10), 16) L14 = tmpHasil
.TextMatrix(cRow, 2) = tmpHasil End Select
Next cRow
d_Grid
End With Next i
Screen.MousePointer = vbDefault Call transForm
End Sub


5. Link Blog Anggota Kelompok 7

6. Referensi Sumber Kelompok 7
q
B. Analisa Algoritma
1. Hubungan KSK Kriptografi Algoritma IDEA dan Kriptografi Algoritma DES

Algoritma yang memiliki kemiripan dengan algoritma IDEA adalah Algoritma DES karena, perkembangan teknologi informasi dan komunikasi sangat cepat dan pesat. Secara tidak langsung, teknologi informasi telah menjadi bagian penting dari berbagai bidang kehidupan. Seiring dengan kemajuan teknologi informasi maka sangat di perlukan sebuah keamanan data terhadap kerahasiaan informasi yang bersifat pribadi seperti halnya buku diary.
Oleh karena itu untuk penulis membuat note diary berbasis android menggunakan algoritma kriptografi DES (Data Encryption Standard) untuk proses enkripsi dan dekripsi data agar informasi tersebut dapat terjaga keamanannya.
DES (Data Encryption Standard) merupakan algoritma cipher blok yang popular karena dijadikan standar algoritma enkripsi kunci-simetri. Sebenarnya DES adalah nama standar enkripsi simetri, nama algoritma enkripsinya sendiri adalahDEA (Data Encryption Algorithm), namun nama DES lebih popular dari pada DEA. Hubungan dari kedua ini yaitu dimana algoritma DES dijadikan standard enkripsi data sebelum adanya IDEA sehingga kedua algoritma ini memiliki beberapa kemiripan dan dari segi keamanan pun hampir sama hubungannya.
2. Penjelasan Algoritma Kriptografi DES
·         Pengertian Kriptografi Algoritma DES
DES (Data Encryption Standard) adalah algoritma cipher blok yang populer karena dijadikan standard algoritma enkripsi kunci-simetri, meskipun saat ini standard tersebut telah digantikan dengan algoritma yang baru, AES, karena DES sudah dianggap tidak aman lagi. Sebenarnya DES adalah nama standard enkripsi simetri, nama algoritma enkripsinya sendiri adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada DEA. Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat. DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.
·         Sejarah Kriptografi Algoritma DES
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.

·         Cara Kerja (Proses Enkripsi dan Proses Deskripsi) Kriptografi Algoritma DES
·         Proses Enkripsi
 Algoritma DES merupakan algoritma enkripsi yang paling banyak digunakan didunia yang diadopsi oleh NIST (National Institue of Standardsand Technology) sebagaistandar pengolah informasi FederalAS. Dataplaintext dienkrip dalam blok-blok 64 bitmenjadi 64 bit data cipher text menggunakan kunci 56 bit kunci internal (internal key).DES mentransformasikan input 64 bit dalam beberapa tahap enkripsi ke dalamoutput 64bit. Dengan demikian, DES termasuk block cipher. Dengantahapan dan kunci yang sama,DES digunakan untuk membalik enkripsi. Kunci internal padaalgoritma DESdibangkitkan dari kunci eksternal (external key) 64 bit. Skema global dari proses algoritmaDalam algoritma DES, terdapat kunci eksternal dan kunci internal. Kunci internaldibangkitkan dari kunci eksternal yang diberikan olehpengguna. Kunci internal dapatdibangkitkan sebelum proses enkripsi ataupunbersamaan dengan proses enkripsi. Kunci eksternal panjangnya 64 bit atau 8karakter. Karena ada 16 putaran,maka kunci internal yang dibutuhkan sebanyak 16 buah, yaitu K1, K2, ..., K16. Untuk mengaitkan kunci internal diperlukan beberapa langkah. Kunci eksternal 64 bit, dikompresi terlebih dahulu menjadi 54 bit menggunakan matriks permutasi kompresi PC-1. Dalam permutasi tiap bitke-8 dari 8 byte kunci akan diabaikan. Sehingga akan ada penggunaan 8 bitdari 64 bit awal kunci eksternal. Setelah didapatkan 56 bit hasil permutasi,selanjutnya 56 bit iniakan dibagimenjadi 2 bagian, kiri dan kanan, yangmasing-masing panjangnya 28 bit. 
Lalu ke-2 bagian tersebut akan disimpan kedalam C0 dan D0.
C0 : berisi bit-bit dari K pada posisi :57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 1810, 2, 59, 51, 43, 35, 27, 19,11, 3, 60, 52, 44, 36
D0 : berisi bit-bit dari K pada posisi :  63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 2214, 6, 61, 53, 45, 37,29, 21, 21, 13, 5, 28, 20, 12.
Proses selanjutnya adalah ke-2 bagian (C0 dan D0) digeser ke kiri (left shift) sepanjang 1 atau 2 bit, tergantung pada tiap putaran. Perputaranini bersifat wrapping atauround-shift. Hasil dari pergeseran C0 dan D0 akan didapatkan nilai dari C1 dan C2. Begitu seterusnya, hingga proses tersebut menghasilkan C16 dan D16. Untuk mendapatkan kunci internal pertama (K1), maka bit dari C0 dan D0 tadi dilakukan permutasi kompresidenganmenggunakan matriks PC-2. Jadi setiap kunci Ki, mempunyai panjang 48 bit. Apabila prosespergeseran bit-bitdijumlahkan semuanya, maka jumlah seluruhnya sama dengan28 putaran. Jumlah ini sama dengan jumlah bit pada Ci dan Di. Oleh karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0.
·         Proses Dekripsi
Pada algoritma DES proses dekripsi dan enkripsinya menggunakan kunci yang sama. Proses dekripsi pada ciphertext merupakan proseskebalikan dari proses enkripsi. Jika pada proses enkripsi urutan kunci yangdigunakan adalah K1, K2, …, K16, maka untuk proses dekripsi urutan kunci yang digunakan adalah K16, K15, …, K1. Masukkan awalnya adalah R16 dan L16 untuk deciphering. Blok R16 dan L16 diperoleh denganmempermutasikan ciphertext dengan matriks permutasi IP-1

3. Pengetesan Algoritma
·         Menggunakan Bahasa Pemrograman C++
#include<stdio.h>
#include<fstream.h>
#include<string.h>
#include<conio.h>
#include<iostream.h>
 int key[64]={
  0,0,0,1,0,0,1,1,
  0,0,1,1,0,1,0,0,
  0,1,0,1,0,1,1,1,
  0,1,1,1,1,0,0,1,
  1,0,0,1,1,0,1,1,
  1,0,1,1,1,1,0,0,
  1,1,0,1,1,1,1,1,
  1,1,1,1,0,0,0,1
  };
class Des
{
 public:
int keyi[16] [48],total[64],left[32],right[32],ck[28],dk[28],expansion[48],z[48],xor1[48],sub[32],p[32],xor2[32],temp[64],
  pc1[56],ip[64],inv[8][8];
  char final[1000];
  void IP();
  void PermChoice1();
  void PermChoice2();
  void Expansion();
  void inverse();
  void xor_two();
  void xor_oneE(int);
  void xor_oneD(int);
  void substitution();
  void permutation();
  void keygen();
  char * Encrypt(char *);
  char * Decrypt(char *);
};
void Des::IP()
{
 int k=58,i;
 for(i=0;i < 32;i++)
 {
  ip[i]=total[k-1];
  if(k-8>0)  k=k-8;
  else       k=k+58;
 }
 k=57;
 for( i=32;i < 64;i++)
 {
  ip[i]=total[k-1];
  if(k-8 > 0)   k=k-8;
  else     k=k+58;
 }
}
void Des::PermChoice1()
{
 int k=57,i;
 for(i=0;i < 28;i++)
 {
  pc1[i]=key[k-1];
  if(k-8 > 0)    k=k-8;
  else      k=k+57;
 }
 k=63;
 for( i=28;i < 52;i++)
 {
  pc1[i]=key[k-1];
  if(k-8 > 0)    k=k-8;
  else         k=k+55;
 }
 k=28;
 for(i=52;i < 56;i++)
 {
  pc1[i]=key[k-1];
  k=k-8;
 }

}
void Des::Expansion()
{
 int exp[8][6],i,j,k;
 for(i=0;i < 8;i++)
 {
  for( j=0;j < 6;j++)
  {
   if((j!=0)||(j!=5))
   {
    k=4*i+j;
    exp[i][j]=right[k-1];
   }
   if(j==0)
   {
    k=4*i;
    exp[i][j]=right[k-1];
   }
   if(j==5)
   {
    k=4*i+j;
    exp[i][j]=right[k-1];
   }
  }
 }
 exp[0][0]=right[31];
 exp[7][5]=right[0];

 k=0;
 for(i=0;i < 8;i++)
 for(j=0;j < 6;j++)
 expansion[k++]=exp[i][j];
}
void Des::PermChoice2()
{
 int per[56],i,k;
 for(i=0;i < 28;i++) per[i]=ck[i];
 for(k=0,i=28;i < 56;i++) per[i]=dk[k++];

 z[0]=per[13];z[1]=per[16];z[2]=per[10];z[3]=per[23];z[4]=per[0];z[5]=per[4];z[6]=per[2];z[7]=per[27];
 z[8]=per[14];z[9]=per[5];z[10]=per[20];z[11]=per[9];z[12]=per[22];z[13]=per[18];z[14]=per[11];z[15]=per[3];
 z[16]=per[25];z[17]=per[7];z[18]=per[15];z[19]=per[6];z[20]=per[26];z[21]=per[19];z[22]=per[12];z[23]=per[1];
 z[24]=per[40];z[25]=per[51];z[26]=per[30];z[27]=per[36];z[28]=per[46];z[29]=per[54];z[30]=per[29];z[31]=per[39];
 z[32]=per[50];z[33]=per[46];z[34]=per[32];z[35]=per[47];z[36]=per[43];z[37]=per[48];z[38]=per[38];z[39]=per[55];
 z[40]=per[33];z[41]=per[52];z[42]=per[45];z[43]=per[41];z[44]=per[49];z[45]=per[35];z[46]=per[28];z[47]=per[31];
}
void Des::xor_oneE(int round)
{
 int i;
 for(i=0;i < 48;i++)
   xor1[i]=expansion[i]^keyi[round-1][i];
}
void Des::xor_oneD(int round)
{
 int i;
 for(i=0;i < 48;i++)
   xor1[i]=expansion[i]^keyi[16-round][i];
}

void Des::substitution()
{
  int s1[4][16]={
  14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
  0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
  4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
  15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13
   };

 int s2[4][16]={
  15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
  3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
  0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
  13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9
  };
 int s3[4][16]={
  10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
  13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
  13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
  1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12
  };
 int s4[4][16]={
  7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
  13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
  10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
  3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14
  };
 int s5[4][16]={
  2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
  14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
  4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,
  11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3
  };
 int s6[4][16]={
  12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,
  10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,
  9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,
  4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13
  };
 int s7[4][16]={
  4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,
  13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,
  1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,
  6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12
  };

 int s8[4][16]={
  13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,
  1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,
  7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,
  2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11
  };
 int a[8][6],k=0,i,j,p,q,count=0,g=0,v;

 for(i=0;i < 8;i++)
 {
  for(j=0;j<6;j++)
  {
   a[i][j]=xor1[k++];
  }
 }

 for( i=0;i < 8;i++)
 {
  p=1;q=0;
  k=(a[i][0]*2)+(a[i][5]*1);
  j=4;
  while(j > 0)
  {
   q=q+(a[i][j]*p);
   p=p*2;
   j--;
  }
  count=i+1;
  switch(count)
  {
  case 1: v=s1[k][q]; break;
  case 2: v=s2[k][q]; break;
  case 3: v=s3[k][q]; break;
  case 4: v=s4[k][q]; break;
  case 5: v=s5[k][q]; break;
  case 6: v=s6[k][q]; break;
  case 7: v=s7[k][q]; break;
  case 8: v=s8[k][q]; break;
  }

  int d,i=3,a[4];
  while(v > 0)
  {
   d=v%2;
   a[i--]=d;
   v=v/2;
  }
  while(i >= 0)
  {
   a[i--]=0;
  }

  for(i=0;i < 4;i++)
  sub[g++]=a[i];
 }
}

void Des::permutation()
{
 p[0]=sub[15];p[1]=sub[6];p[2]=sub[19];p[3]=sub[20];p[4]=sub[28];p[5]=sub[11];p[6]=sub[27];p[7]=sub[16];
 p[8]=sub[0];p[9]=sub[14];p[10]=sub[22];p[11]=sub[25];p[12]=sub[4];p[13]=sub[17];p[14]=sub[30];p[15]=sub[9];
 p[16]=sub[1];p[17]=sub[7];p[18]=sub[23];p[19]=sub[13];p[20]=sub[31];p[21]=sub[26];p[22]=sub[2];p[23]=sub[8];
 p[24]=sub[18];p[25]=sub[12];p[26]=sub[29];p[27]=sub[5];p[28]=sub[21];p[29]=sub[10];p[30]=sub[3];p[31]=sub[24];
}
void Des::xor_two()
{
 int i;
 for(i=0;i < 32;i++)
 {
  xor2[i]=left[i]^p[i];
 }
}

void Des::inverse()
{
 int p=40,q=8,k1,k2,i,j;
 for(i=0;i < 8;i++)
 {
  k1=p;k2=q;
  for(j=0;j < 8;j++)
  {
   if(j%2==0)
   {
    inv[i][j]=temp[k1-1];
    k1=k1+8;
   }
   else if(j%2!=0)
   {
    inv[i][j]=temp[k2-1];
    k2=k2+8;
   }
  }
  p=p-1;q=q-1;
 }
}

char * Des::Encrypt(char *Text1)
{
  int i,a1,j,nB,m,iB,k,K,B[8],n,t,d,round;
  char *Text=new char[1000];
  strcpy(Text,Text1);
  i=strlen(Text);
  int mc=0;
  a1=i%8;
 if(a1!=0) for(j=0;j < 8-a1;j++,i++) Text[i]=' '; Text[i]='\0';
 keygen();
  for(iB=0,nB=0,m=0;m < (strlen(Text)/8);m++)
  {
  for(iB=0,i=0;i < 8;i++,nB++)
  {
   n=(int)Text[nB];
   for(K=7;n >= 1;K--)
   {
    B[K]=n%2;
    n/=2;
   } for(;K >= 0;K--) B[K]=0;
   for(K=0;K < 8;K++,iB++) total[iB]=B[K];
  }
 IP();
 for(i=0;i < 64;i++) total[i]=ip[i];
 for(i=0;i < 32;i++) left[i]=total[i];
 for(;i < 64;i++) right[i-32]=total[i];   for(round=1;round <= 16;round++)
  {
 Expansion();
 xor_oneE(round);
 substitution();
 permutation();
 xor_two();
 for(i=0;i < 32;i++) left[i]=right[i];
 for(i=0;i < 32;i++) right[i]=xor2[i];
   }
 for(i=0;i < 32;i++) temp[i]=right[i];
 for(;i < 64;i++) temp[i]=left[i-32];
 inverse();
   k=128;   d=0;
  for(i=0;i < 8;i++)
  {
    for(j=0;j < 8;j++)
    {
    d=d+inv[i][j]*k;
    k=k/2;
    }
   final[mc++]=(char)d;
   k=128;   d=0;
  }
  }
  final[mc]='\0';
  return(final);
}
char * Des::Decrypt(char *Text1)
{
  int i,a1,j,nB,m,iB,k,K,B[8],n,t,d,round;
  char *Text=new char[1000];
  unsigned char ch;
  strcpy(Text,Text1);
  i=strlen(Text);
keygen();
int mc=0;
  for(iB=0,nB=0,m=0;m < (strlen(Text)/8);m++)
  {
   for(iB=0,i=0;i < 8;i++,nB++)
  {
   ch=Text[nB];
   n=(int)ch ;
   for(K=7;n >= 1;K--)
   {
    B[K]=n%2;
    n/=2;
   } for(;K >= 0;K--) B[K]=0;
  for(K=0;K < 8;K++,iB++) total[iB]=B[K];
  }
 IP();
 for(i=0;i < 64;i++) total[i]=ip[i];
 for(i=0;i < 32;i++) left[i]=total[i];
 for(;i < 64;i++) right[i-32]=total[i];
  for(round=1;round <= 16;round++)
  {
 Expansion();
 xor_oneD(round);
 substitution();
 permutation();
 xor_two();
 for(i=0;i < 32;i++) left[i]=right[i];
 for(i=0;i < 32;i++) right[i]=xor2[i];
   }
 for(i=0;i < 32;i++) temp[i]=right[i];
 for(;i < 64;i++) temp[i]=left[i-32];
 inverse();
   k=128;   d=0;
  for(i=0;i < 8;i++)
  {
    for(j=0;j < 8;j++)
    {
    d=d+inv[i][j]*k;
    k=k/2;
    }
   final[mc++]=(char)d;
   k=128;   d=0;
  }
  }   final[mc]='\0';
  char *final1=new char[1000];
  for(i=0,j=strlen(Text);i < strlen(Text);i++,j++)
  final1[i]=final[j]; final1[i]='\0';
  return(final);
}
void main()
{
 Des d1,d2;
 char *str=new char[1000];
 char *str1=new char[1000];
 clrscr();
  cout<<"Masukkan Nama / NIM : ";
  gets(str);
 str1=d1.Encrypt(str);
 cout<<"\nPlain Text : "<< str<< endl;
 cout<<"\nCipher Text : "<< str1<< endl;
cout<<"\nPlain Text : "<< d2.Decrypt(str1)<< endl;
 getch();
}

void Des::keygen()
{
 PermChoice1();

 int i,j,k=0;
 for(i=0;i < 28;i++)
 {
  ck[i]=pc1[i];
 }
 for(i=28;i < 56;i++)
 {
  dk[k]=pc1[i];
  k++;
 }
 int noshift=0,round;
 for(round=1;round<=16;round++)
 {
  if(round==1||round==2||round==9||round==16)
   noshift=1;
  else
   noshift=2;
  while(noshift > 0)
  {
   int t;
   t=ck[0];
   for(i=0;i < 28;i++)
   ck[i]=ck[i+1];
   ck[27]=t;
   t=dk[0];
   for(i=0;i < 28;i++)
   dk[i]=dk[i+1];
   dk[27]=t;
   noshift--;
  }
  PermChoice2();
  for(i=0;i < 48;i++)
   keyi[round-1][i]=z[i];
 }
}

 


4. Perbandingan Algoritma IDEA dan DES
·         Persamaan
1)       Termasuk kedalam algoritma simetris
2)       Sama-sama memiliki block 64 bit
3)       Menghasilkan pesan terenkripsi
·         Perbedaan
1)       Algoritma IDEA menggunakan 3 operasi aljabar utama, yakni : Xor,operasi penjumlahan modulo 2 16 dan operasi perkalian modulo (2 16+1). Dan DES setiap putaran i, blok R dikombinasikan dengan kunci internak Ki. Keluaran dari fungsi f di-XOR kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung diambil dari blok R sebelumnya.
2)       DES menggunakan 56 bit kunci internal sedangkan IDEA menggunakan kunci yang sma berukuran 128 bit untuk proses enkripsi dan dekripsi.
3)       IDEA menggunakan proses iterasi yang terdiri dari 8 putaran dan 1 tranformasi keluaran pada putaran ke8, sedangkan DES melakukan 16 iterasi.
5. Link Kelompok Lain

6. Referensi Sumber
·         https://piptools.net/algoritma-des-data-encryption-standard/

C. Kesimpulan

Dari kejelasan di atas yang terdiri dari pengertian, sejarah, proses kerja (enkripsi dan dekripsi), flowchart, dan menggunakan bahasa pemrograman dapat simpulkan bahwa dari kedua algoritma IDEA dan algoritma DES itu memiliki persamaan seperti algoritma simetris,sama sama memiliki block 64 bit dan pesan pun terenkripsi. Tingkat keamanan dari kedua algoritma ini juga cukup tinggi dan  kedua algoritma tersebut masih digunakan sampai saat ini. Hanya saja dalam proses enkripsi dan deskripsi dari kedua algoritma tersebut cukup berbeda, dimana untuk algoritma IDEA sendiri memiliki proses yang sedikit lebih rumit dibandingkan dengan algpritma DES sebagai algorima pendahulunya.

No comments:

Post a Comment