Anda di halaman 1dari 11

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : CRYPTHOGRAPHY
NAMA : EURICO KRISNA WIJAYA
NIM : 195150207111053
TANGGAL : 14/09/2021
ASISTEN : MUHAMMAD FIKRI ASHARI

Hashing
1. Pastikan md5sum telah terinstall di perangkat yang digunakan.
2. Download file pada tautan berikut (kamu bisa menggunakan command
wget) dan ekstrak.
a. message1.bin & message2.bin

wget
https://github.com/isfahany/infosec-module-download
able-file/raw/master/collision-example/file.zip

3. Jalankan command berikut pada file terkait.


a. sha1sum

sha1sum message1.bin message2.bin

Penjelasan output

Berikut tampilan output dari sha1sum message1.bin


message2.bin.
b. sha256sum

sha256sum message1.bin message2.bin

Penjelasan output

Berikut tampilan output dari sha256sum message1.bin


message2.bin.

c. md5sum

md5sum message1.bin message2.bin

Penjelasan output

Berikut tampilan output dari md5sum message1.bin


message2.bin.
4. Analisislah output dari nomor tiga. Menurutmu, mengapa hal tersebut bisa
terjadi? Hash function mana yang lebih aman digunakan?

Pada sha1sum, sha2sum, dan md5sum dapat memproduksi hash


value yang pada sha1sum memproduksi 128 bit hash, sha2sum
memproduksi 256 bit dan md5sum menghasilkan 128 bit hash. Hash
function yang lebih aman untuk digunakan yaitu sha2sum karena
memiliki 256 bit hash dan karena itu jika ingin melakukan brute force
attack. kemungkinan untuk terjadinya collision sangat kecil karena
banyaknya kemungkinan nilai hash yang bisa dimiliki oleh suatu pesan.

Encoding
1. Pastikan python telah terinstall di perangkat yang digunakan

python3 --version

2. Buka file dengan nama encode.py (file akan langsung terbuat), lalu
copy-paste kode berikut:

import binascii
import base64

text = "Road to Security Engineer"


text_utf8 = text.encode("utf-8")
text_b64 = base64.b64encode(text_utf8)
text_hex = binascii.hexlify(text_utf8)

print("text = " + text)


print("utf8 encode = " + str(text_utf8))
print("base64 encode = " + str(text_b64))
print("hexadec encode = " + str(text_hex))
Apa yang dilakukan kode tersebut?

Berikut merupakan output dari kode tersebut, output tersebut


merupakan sebuah string, pada utf8 encode terdapat outpur “b’String’ ”,
b mengartikan bahwa String tersebut seharusnya menjadi bytes,
Base64 encode memiliki fungsi b64encode yang memiliki tujuan untuk
melakukan encode terhadap string text_utf8 menjadi bentuk binary,
sementara hexadex encode menggunakan fungsi hexfily yang memiliki
tujuan untuk mendapat representasi heksadesimal dari data binary
text_utf8.

3. Tambahkan fungsionalitas untuk mengembalikan base64 dan


hexadecimal encode pada source code python tersebut menjadi semula.
Berdasarkan kode dan output tersebut, agar dapat mengembalikan
base64 dan hexadecimal encode menjadi semula maka digunakannya
decode dan unhexlify yang merupakan kebalikan dari encode dan
hexlify.

Enkripsi
1. Pastikan python telah terinstall di perangkat yang digunakan

python3 --version

2. Buka file dengan nama caesar.py (file akan langsung terbuat), lalu
copy-paste kode berikut:

#!/usr/bin/python3

plaintext = "Infosec"
ciphertext = ""
for i in range(len(plaintext)):
if(plaintext[i].isupper()):
ciphertext += chr((ord(plaintext[i]) + 7 -
65) % 26 + 65)
else:
ciphertext += chr((ord(plaintext[i]) + 7 -
97) % 26 + 97)
print("plaintext = " + plaintext)
print("ciphertext = " + ciphertext)
3. Apa yang terjadi pada line 7 dan 9? Mengapa ada angka 65, 97, dan 26
disana?

Pada kode program terutama pada line 7 dan 9 dilakukan konversi


plaintext menjadi ciphertext, angka 65, 97, dan 26 memiliki peran
sebagai key yang dibutuhkan untuk mengubah plaintext menjadi
chipertext. Pada operasi hitung tersebut angka 65 dan 97 memiliki
peran sebagai kunci sementara modulo 26 merupakan batas
maksimum jarak shifting yang dapat dilakukan.

4. Kriptografi apakah kode tersebut? Bagaimana caranya bekerja?

Cara kerja pada kode tersebut yaitu dengan menggeser plaintext


dengan maksimal pergeseran 26, penerapan pada kode tersebut
melakukan perhitungan dengan kunci dan modulo 26, angka 26 ini
melambangkan jumlah abjad yang ada dan pada modulo 26 digunakan
di kedua proses yang ada yaitu enkripsi dan deskripsi.

5. Optimalkan cara kerja algoritma kriptografi tersebut! Ambil input dari user
dan juga shift lompatan angka dari user (interactive) !
Agar dapat mengoptimalkan cara kerja algoritma kriptografi tersebut,
langkah pertama yang dilakukan adalah membuat variabel yang dapat
menerima input dari user, terdapat 2 variabel yang digunakan yaitu
variabel plaintext dan shift, variabel plaintext memiliki fungsi sebagai text
yang akan dienkripsi kemudian variabel shift akan digunakan didalam
perhitungan.

Tugas
1. Jelaskan perbedaan hash, enkripsi, dan encoding!

Yang menjadi perbedaan hash, enkripsi, dan encoding, yang pertama,


hash merupakan sebuah algoritma One Way Function yang digunakan
untuk mengubah data menjadi sebuah karakter yang terenkripsi
dengan ukuran yang tetap dan tidak bisa didekripsi, yang kedua,
enkripsi merupakan sebuah proses untuk mengamankan suatu
informasi dengan cara mengubah informasi tersebut sehingga tidak
dapat untuk dibaca tanpa suatu pengetahuan tertentu, yang terakhir,
encoding merupakan sebuah proses konversi suatu informasi menjadi
data sehingga informasi yang dikirimkan dapat diterima dengan baik.

2. Diberikan source code berikut, buatlah dekripsi dalam bahasa


pemrograman python:

#!usr/bin/python3

def encrypt(plaintext):
plaintext = plaintext[::-1]
ciphertext = ""
for i in plaintext:
copy = "X" * ((ord(i) ^ 0x50) + 9)
copy += "-"
ciphertext += copy
return ciphertext

print ("Infosec Module Encryptor")


plaintext = input("Masukkan string yang ingin di-encrypt:
")
print ("Result : ")
print (encrypt(plaintext))

# decrypt string ini:


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX-

3. Jelaskan source code yang telah anda buat pada nomor 2


Untuk source code yang telah dimodifikasi yang pada awalnya
merupakan source code untuk encrypt menjadi decrypt, tujuan dari
source code tersebut adalah melakukan dekripsi kepada sebuah input
yang merupakan sebuah string yang terenkripsi, fungsi decrypt
menerima masukan berupa ciphertext yang berasal dari inputan user,
pada inputan terdapat “-” sebagai pemisah antar karakter “X” yang
akan dilakukan split terlebih dahulu, kemudian ciphertext selesai
dipisah maka selanjutnya akan dilakukan pembuangan indeks kosong
yang berguna untuk menghindari value error, selanjutnya untuk
algoritma deskripsinya digunakan “chr((len(i)-9 ^ (5 * 16 ** 1) + (0 * 16
** 0)))” , len memiliki fungsi untuk mendapatkan nilai panjang string
sehingga dapat dilakukan sebuah operasi perhitungan, kemudian nilai
eksponen yaitu 80 didapatkan dari konversi heksadesimal 0 x 50
menjadi desimal (16 x 5), nilai dari hasil perhitungan tersebut akan
dikonversi menjadi karakter dengan menggunakan fungsi chr dan hasil
dari deskripsi tersebut mengeluarkan output yang berupa string yaitu
“got it!”

4. Jelaskan perbedaan antara


a. Asymmetric encryption dan symmetric encryption

Perbedaan asymmetric encryption dengan symmetric encryption


adalah pada asymmetric encryption menggunakan kunci yang
berbeda pada proses enkripsi dan dekripsinya sedangkan pada
symmetric encryption menggunakan kunci yang identik pada
enkripsi dan dekripsinya.

b. Stream cipher dan block cipher

Perbedaan stream cipher dan block cipher adalah pada stream


cipher memecah plaintext menjadi single bits yang selanjutnya
akan dikonversikan ke ciphertext secara terpisah menggunakan
key bits sedangkan pada block cipher memecah plaintext
menjadi block dengan ukuran yang tetap dan selanjutnya
dikonversi ke ciphertext dengan menggunakan sebuah kunci.

Anda mungkin juga menyukai