KEAMANAN KOMPUTER
Disusun oleh:
1. Aditya Gusti Tammam
(14.1.03.03.0052)
(14.1.03.03.0019)
3. Hamim Arifunas
(14.1.03.03.0092)
(14.1.03.03.0035)
5. Prista Avinda D.
(14.1.03.03.0017)
(14.1.03.03.0143)
KELAS : 2A
FAKULTAS TEKNIK
UNIVERSITAS NUSANTARA PGRI KEDIRI
KEDIRI
2016
Daftar Isi
BAB I : Fungsi Hash ............................................................................................. 3
1.1 Pengertian Fungsi Hash ............................................................................ 3
1.2 Sifat-sifat Fungsi Hash............................................................................... 3
1.3 Manfaat Fungsi Hash................................................................................. 3
1.4 Message Integrity ....................................................................................... 4
1.5 Message Fingerprint .................................................................................. 4
1.6 Macam-macam Algoritma Fungsi Hash ................................................. 4
BAB II : Algoritma SHA-256 ............................................................................... 5
2.1 Sejarah SHA-256 ......................................................................................... 5
2.2 Awal Perkembangan SHA-256................................................................. 5
2.3 Dasar Prinsip ............................................................................................... 5
2.4 Cara Kerja .................................................................................................... 6
2.5 Tahapan ....................................................................................................... 6
2.5.1 Contoh Kasus ....................................................................................... 8
2.6 Penerapan .................................................................................................. 14
2.7 Kelebihan dan Kekurangan .................................................................... 17
BAB III : Kesimpulan ......................................................................................... 18
3.1 Kesimpulan ............................................................................................... 18
Daftar Pustaka .................................................................................................... 19
BAB I
FUNGSI HASH
1.1 Pengertian Fungsi Hash
Fungsi hash adalah fungsi yang menerima masukan string yang
panjangnya sembarang dan mengkonversinya menjadi string keluaran yang
panjangnya tetap (fixed). Fungsi hash yang dihasilkan biasanya dituliskan dalam
notasi persamaan sebagai berikut :
= ()
Pada persamaan di atas, h merupakan nilai hash yang dihasilkan, H adalah
fungsi hash itu sendiri, dan M adalah message atau pesan yang akan diubah dan
dikonversikan menjadi nilai hash (hash value) [1].
MD4
MD5
SHA-0
SHA-1
SHA-256
SHA-512
BAB II
ALGORITMA SHA-256
2.1 Sejarah SHA-256
Pada bulan Agustus 1991, NIST (The National Institute of Standard and
Technology) mengumumkan bakuan (standard) untuk tanda-tangan digital yang
dinamakan Digital Signature Standard (DSS). DSS terdiri dari dua komponen,
yang pertama adalah algoritma tanda-tangan digital yang disebut Digital
Signature Algorithm (DSA), dan yang kedua adalah fungsi hash standard yang
disebut Secure Hash Algorithm (SHA) [5].
SHA adalah fungsi hash satu-arah yang dibuat oleh NIST dan digunakan
bersama DSS (Digital Signature Standard). Oleh NSA, SHA dinyatakan sebagai
standard fungsi hash satu-arah. SHA didasarkan pada MD4 yang dibuat oleh
Ronald L. Rivest dari MIT [5].
Ada beberapa varian SHA disini, dan salah satunya adalah SHA-256 yang
akan dibahas lebih mendalam pada bab ini.
element 32-bit word, delapan buah variabel 32-bit, dan variabel penyimpan nilai
hash 8 buah word 32-bit. Hasil akhir dari algoritma SHA-256 adalah sebuah
message digest sepanjang 256-bit [8].
6. Setelah perputaran sebanyak 64 kali tadi, nilai hash H(i) kemudian dihitung
sebagai berikut :
Selanjutnya tambahkan lagi panjang pesan asli dalam bentuk biner 64 bit.
Panjang pesan M adalah 24 bit, dalam bentuk biner adalah 00011000.
Maka pesan yang dipadding akan menjadi seperti berikut ini :
01100001 01100010 01100011 10000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011000
Kemudian pesan diparsing menjadi 16 buat word 32-bit untuk masingmasing blok pesan M. Sehingga menjadi seperti ini :
Langkah selanjutnya adalah set initial hash value, yakni nilai awal dari
hash.
10
11
Hasil dari perhitungan setiap iterasinya akan menjadi seperti ini [10] :
12
Hasil dari iterasi terakhir nanti kemudian dijumlah dengan initial hash
valuenya tadi. Sehingga akan menghasilkan sebagai berikut :
13
Maka
nilai
hash
dari
pesan
adalah
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad.
2.6 Penerapan
Berikut ini adalah penerapan SHA-256 pada bahasa pemrograman Python
[11] :
#!/usr/bin/python
__author__ = 'Thomas Dixon'
__license__ = 'MIT'
import copy, struct, sys
def new(m=None):
return sha256(m)
class sha256(object):
_k = (0x428a2f98L,
0x3956c25bL,
0xd807aa98L,
0x72be5d74L,
0xe49b69c1L,
0x2de92c6fL,
0x983e5152L,
0xc6e00bf3L,
0x27b70a85L,
0x650a7354L,
0xa2bfe8a1L,
0xd192e819L,
0x19a4c116L,
0x391c0cb3L,
0x748f82eeL,
0x90befffaL,
_h = (0x6a09e667L,
0x510e527fL,
_output_size = 8
0x71374491L,
0x59f111f1L,
0x12835b01L,
0x80deb1feL,
0xefbe4786L,
0x4a7484aaL,
0xa831c66dL,
0xd5a79147L,
0x2e1b2138L,
0x766a0abbL,
0xa81a664bL,
0xd6990624L,
0x1e376c08L,
0x4ed8aa4aL,
0x78a5636fL,
0xa4506cebL,
0xbb67ae85L,
0x9b05688cL,
0xb5c0fbcfL,
0x923f82a4L,
0x243185beL,
0x9bdc06a7L,
0x0fc19dc6L,
0x5cb0a9dcL,
0xb00327c8L,
0x06ca6351L,
0x4d2c6dfcL,
0x81c2c92eL,
0xc24b8b70L,
0xf40e3585L,
0x2748774cL,
0x5b9cca4fL,
0x84c87814L,
0xbef9a3f7L,
0x3c6ef372L,
0x1f83d9abL,
0xe9b5dba5L,
0xab1c5ed5L,
0x550c7dc3L,
0xc19bf174L,
0x240ca1ccL,
0x76f988daL,
0xbf597fc7L,
0x14292967L,
0x53380d13L,
0x92722c85L,
0xc76c51a3L,
0x106aa070L,
0x34b0bcb5L,
0x682e6ff3L,
0x8cc70208L,
0xc67178f2L)
0xa54ff53aL,
0x5be0cd19L)
blocksize = 1
block_size = 64
digest_size = 32
def __init__(self, m=None):
self._buffer = ''
self._counter = 0
14
if m is not None:
if type(m) is not str:
raise TypeError, '%s() argument 1 must be string,
not %s' % (self.__class__.__name__, type(m).__name__)
self.update(m)
def _rotr(self, x, y):
return ((x >> y) | (x << (32-y))) & 0xFFFFFFFFL
def _sha256_process(self, c):
w = [0]*64
w[0:16] = struct.unpack('!16L', c)
for i in
s0 =
(w[i-15] >> 3)
s1 =
(w[i-2] >> 10)
w[i]
range(16, 64):
self._rotr(w[i-15], 7) ^ self._rotr(w[i-15], 18) ^
self._rotr(w[i-2], 17) ^ self._rotr(w[i-2], 19) ^
= (w[i-16] + s0 + w[i-7] + s1) & 0xFFFFFFFFL
a,b,c,d,e,f,g,h = self._h
for i in range(64):
s0 = self._rotr(a, 2) ^ self._rotr(a, 13) ^
self._rotr(a, 22)
maj = (a & b) ^ (a & c) ^ (b & c)
t2 = s0 + maj
s1 = self._rotr(e, 6) ^ self._rotr(e, 11) ^
self._rotr(e, 25)
ch = (e & f) ^ ((~e) & g)
t1 = h + s1 + ch + self._k[i] + w[i]
h
g
f
e
d
c
b
a
=
=
=
=
=
=
=
=
g
f
e
(d + t1) & 0xFFFFFFFFL
c
b
a
(t1 + t2) & 0xFFFFFFFFL
15
def digest(self):
mdi = self._counter & 0x3F
length = struct.pack('!Q', self._counter<<3)
if mdi < 56:
padlen = 55-mdi
else:
padlen = 119-mdi
r = self.copy()
r.update('\x80'+('\x00'*padlen)+length)
return ''.join([struct.pack('!L', i) for i in
r._h[:self._output_size]])
def hexdigest(self):
return self.digest().encode('hex')
def copy(self):
return copy.deepcopy(self)
Nilai hash dari abc yang dihitung melalui script python diatas
hasilnya
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
16
SHA-256
Message digest dengan
panjang 256 bit diyakini
mampu
menahan
serangan
brute-force
lebih kuat
Tidak Rentan
Skor
1
MD5
Message digest dengan
panjang
128
bit
cenderung lebih mudah
diserang brute force
Skor
0
Rentan
Lebih lambat
Lebih cepat
Mudah
Mudah
Tampak pada tabel diatas bahwa SHA-256 lebih unggul dari MD5.
17
BAB III
KESIMPULAN
3.1 Kesimpulan
Fungsi hash memiliki algoritma yang iterative dan searah, yang dapat
memproses pesan yang diberikan untuk menghasilkan representasi yang
lebih pendek yang disebut message digest.
seseorang
untuk
18
Daftar Pustaka
[1] Angga, Christian. 2011. Analisis Cara Kerja Beragam Fungsi Hash yang Ada.
Bandung: Institut Teknologi Bandung.
[2] Munir, Rinaldi. 2004. Fungsi Hash Satu-Arah dan Algoritma MD5. Bandung:
Institut Teknologi Bandung.
[3] PC Magazine Encyclopedia. Definition of : Message Integrity. Didapat dari :
http://www.pcmag.com/encyclopedia/term/46823/message-integrity.
Diakses pada : 18 April 2016.
[4] Ferilli, Stefano. 2011. Automatic Digital Document Processing and
Management : Problems, Algorithms, and Techniques. London: Springer.
[5] Munir, Rinaldi. 2004. Digital Signature Standard (DSS). Bandung: Institut
Teknologi Bandung.
[6] Insani, Agus Yoga. 2008. Proteksi Akses File Executable Menggunakan
Sistem Keamanan Teknologi USB Flash Disk. Bandung: Universitas
Komputer Indonesia.
[7] Rodriguez-Henriquez, Francisco. 2006. Cryptographic Algorithms on
Reconfigurable Hardware. New York: Springer.
[8] Sebastian, Amudi. 2007. Implementasi dan Perbandingan Performa Algoritma
Hash SHA-1, SHA-256, dan SHA-512. Bandung: Institut Teknologi
Bandung.
[9] Mankar, R.V dan Nipanikar, S. I. 2013. C Implementation of SHA-256
Algorithm. Pune: Pune University.
[10] Anonim. Descriptions of SHA-256, SHA-384, and SHA-512. Didapat dari :
http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf.
Diakses pada 19 April 2016.
[11]
Dixon,
Thomas.
PySHA2.
Didapat
dari
https://github.com/thomdixon/pysha2. Diakses pada : 19 April 2016.
19