Upload
deni-arip-wijaya
View
80
Download
12
Embed Size (px)
DESCRIPTION
Algoritma SHA - Mata Kuliah Kriptografi
Citation preview
MAKALAH ALGORITMA SHA (SECURE HASH ALGORITHM)
Dibuat untuk memenuhi Tugas Mata Kuliah Cryptographi
Dosen: Iwan Abadi
Disusun oleh:
1. Deni Arip Wijaya NIM:104060121
2. Deden Julian NIM:104060055
3. Nana Kusdiana NIM:
A. PENDAHULUAN
Kemajuan di bidang telekomunikasi dan komputer telah memungkinkan
seseorang untuk melakukan transaksi bisnis secara cashless, selain itu ia juga
dapat mengirimkan informasi kepada temannya secara on-line.
Kegiatan-kegiatan tersebut tentu saja akan menimbulkan resiko bilamana
informasi yang sensitif dan berharga tersebut diakses oleh orang-orang yang
tidak berhak (unauthorized persons). Misalnya, informasi mengenai nomor kartu
kredit anda, bila informasi ini jatuh kepada orang-orang yang jahat maka anda
harus bersiap-siap terhadap melonjaknya tagihan kartu kredit anda.
Sebelum tahun 1970-an, teknologi kriptografi digunakan terbatas hanya
untuk tujuan militer dan diplomatik. Akan tetapi kemudian bidang bisnis dan
perorangan mulai menyadari pentingnya melindungi informasi berharga.
Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan
dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni
membuka (breaking) ciphertext dan orang yang melakukannya disebut
cryptanalyst.
Cryptographic system atau cryptosystem adalah suatu fasilitas untuk
mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini,
seperangkat parameter yang menentukan transformasi pencipheran tertentu
disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau
beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk
proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada
sistem yang digunakan.
Gb. 1. Proses Enkripsi/Dekripsi Sederhana
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara
matematis sebagai berikut :
EK (M) = C (Proses Enkripsi)
DK (C) = M (Proses Dekripsi)
Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K
lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut
diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang
sama seperti pesan sebelumnya.
Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun
kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang
digunakan. Sehingga algoritma-algoritma yang digunakan tersebut dapat
dipublikasikan dan dianalisis, serta produk-produk yang menggunakan
algoritma tersebut dapat diproduksi massal. Tidaklah menjadi masalah apabila
seseorang mengetahui algoritma yang kita gunakan. Selama ia tidak mengetahui
kunci yang dipakai, ia tetap tidak dapat membaca pesan.
1. Cryptographic system (cryptosystem)
Suatu cryptosystem terdiri dari sebuah algoritma, seluruh kemungkinan
plaintext, ciphertext dan kunci-kunci. Secara umum cryptosystem dapat
digolongkan menjadi dua buah, yaitu :
a. Symmetric Cryptosystem
Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses
enkripsi dan dekripsi pada prinsipnya identik, tetapi satu buah kunci
dapat pula diturunkan dari kunci yang lainnya. Kunci-kunci ini harus
dirahasiakan. Oleh karena itulah sistem ini sering disebut sebagai
secret-key ciphersystem. Jumlah kunci yang dibutuhkan umumnya
adalah :
nC2 = n . (n-1)
--------
2
dengan n menyatakan banyaknya pengguna.
b. Assymmetric Cryptosystem
Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu
kunci yang disebut kunci publik (public key) dapat dipublikasikan,
sedang kunci yang lain yang disebut kunci privat (private key) harus
dirahasiakan. Proses menggunakan sistem ini dapat diterangkan secara
sederhana sebagai berikut : bila A ingin mengirimkan pesan kepada B, A
dapat menyandikan pesannya dengan menggunakan kunci publik B,
dan bila B ingin membaca surat tersebut, ia perlu mendekripsikan surat
itu dengan kunci privatnya. Dengan demikian kedua belah pihak dapat
menjamin asal surat serta keaslian surat tersebut, karena adanya
mekanisme ini.
Setiap cryptosytem yang baik harus memiliki karakteristik sebagai berikut :
Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada
kerahasiaan algoritma yang digunakan.
Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
Cryptosystem yang baik akan menghasilkan ciphertext yang terlihat acak
dalam seluruh tes statistik yang dilakukan terhadapnya.
Cryptosystem yang baik mampu menahan seluruh serangan yang telah
dikenal sebelumnya
Namun demikian perlu diperhatikan bahwa bila suatu cryptosystem
berhasil memenuhi seluruh karateristik di atas belum tentu ia
merupakan sistem yang baik. Banyak cryptosystem lemah yang terlihat
baik pada awalnya. Kadang kala untuk menunjukkan bahwa suatu
cryptosystem kuat atau baik dapat dilakukan dengan menggunakan
pembuktian matematika.
Hingga saat ini masih banyak orang yang menggunakan cryptosystem
yang relatif mudah dibuka, alasannya adalah mereka tidak mengetahui
sistem lain yang lebih baik serta kadang kala terdapat motivasi yang
kurang untuk menginvestasikan seluruh usaha yang diperlukan untuk
membuka suatu sistem.
2. Berbagai macam basic cryptanalytic attacks
Tujuan cryptanalytic attack adalah untuk mengetahui beberapa
plaintext yang sesuai dengan ciphertext yang ada dan berusaha
menentukan kunci yang memetakan satu dengan yang lainnya. Plaintext
ini dapat diketahui karena ia merupakan standar atau karena
pendugaan. Jika suatu teks diduga berada di dalam suatu pesan,
posisinya mungkin tidak diketahui, tetapi suatu pesan lazimnya cukup
pendek sehingga memungkinkan cryptanalyst menduga plaintext yang
diketahui dalam setiap posisi yang mungkin dan melakukan penyerangan
pada setiap kasus secara paralel.
Suatu algoritma enkripsi yang kuat tidak hanya mampu bertahan
terhadap serangan plaintext yang dikenal tetapi juga mampu bertahan
terhadap adaptive chosen plaintext. Dalam penyerangan ini, cryptanalyst
berkesempatan memilih plaintext yang digunakan dan dapat
melakukannya secara berulang kali, memilih plaintext untuk tahap N+1
setelah menganalisis hasil tahap N.
Yang dimaksud cryptanalytic attacks adalah usaha-usaha yang
dilakukan seseorang untuk memperoleh informasi ataupun data yang
telah dienkripsi. Secara ringkas terdapat tujuh macam basic cryptanalytic
attacks berdasarkan tingkat kesulitannya bagi penyerang, dimulai dari
yang paling sulit adalah :
Ciphertext-only attack. Dalam penyerangan ini, seorang
cryptanalyst memiliki ciphertext dari sejumlah pesan yang
seluruhnya telah dienkripsi menggunakan algoritma yang sama.
Known-plaintext attack. Dalam tipe penyerangan ini, cryptanalyst
memiliki akses tidak hanya ke ciphertext sejumlah pesan, namun ia
juga memiliki plaintext pesan-pesan tersebut.
Chosen-plaintext attack. Pada penyerangan ini, cryptanalyst tidak
hanya memiliki akses atas ciphertext dan plaintext untuk beberapa
pesan, tetapi ia juga dapat memilih plaintext yang dienkripsi.
Adaptive-chosen-plaintext attack. Penyerangan tipe ini merupakan
suatu kasus khusus chosen-plaintext attack. Cryptanalyst tidak
hanya dapat memilih plaintext yang dienkripsi, ia pun memiliki
kemampuan untuk memodifikasi pilihan berdasarkan hasil enkripsi
sebelumnya. Dalam chosen-plaintext attack, cryptanalyst mungkin
hanya dapat memiliki plaintext dalam suatu blok besar untuk
dienkripsi; dalam adaptive-chosen-plaintext attack ini ia dapat
memilih blok plaintext yang lebih kecil dan kemudian memilih yang
lain berdasarkan hasil yang pertama, proses ini dapat dilakukannya
terus menerus hingga ia dapat memperoleh seluruh informasi.
Chosen-ciphertext attack. Pada tipe ini, cryptanalyst dapat memilih
ciphertext yang berbeda untuk didekripsi dan memiliki akses atas
plaintext yang didekripsi.
Chosen-key attack. Cryptanalyst pada tipe penyerangan ini
memiliki pengetahuan tentang hubungan antara kunci-kunci yang
berbeda.
Rubber-hose cryptanalysis. Pada tipe penyerangan ini, cryptanalyst
mengancam, memeras, atau bahkan memaksa seseorang hingga
mereka memberikan kuncinya.
Berdasarkan bagaimana cara dan posisi seseorang mendapatkan
pesan-pesan dalam saluran komunikasi, penyerangan dapat
dikategorikan menjadi:
Sniffing: secara harafiah berarti mengendus, tentunya dalam hal ini
yang diendus adalah pesan (baik yang belum ataupun sudah
dienkripsi) dalam suatu saluran komunikasi. Hal ini umum terjadi
pada saluran publik yang tidak aman. Sang pengendus dapat
merekam pembicaraan yang terjadi.
Replay attack [DHMM 96]: Jika seseorang bisa merekam pesan-
pesan handshake (persiapan komunikasi), ia mungkin dapat
mengulang pesan-pesan yang telah direkamnya untuk menipu
salah satu pihak.
Spoofing [DHMM 96]: Penyerang – misalnya Maman – bisa
menyamar menjadi Anto. Semua orang dibuat percaya bahwa
Maman adalah Anto. Penyerang berusaha meyakinkan pihak-pihak
lain bahwa tak ada salah dengan komunikasi yang dilakukan,
padahal komunikasi itu dilakukan dengan sang penipu/penyerang.
Contohnya jika orang memasukkan PIN ke dalam mesin ATM palsu
– yang benar-benar dibuat seperti ATM asli – tentu sang penipu
bisa mendapatkan PIN-nya dan copy pita magentik kartu ATM milik
sang nasabah. Pihak bank tidak tahu bahwa telah terjadi kejahatan.
Man-in-the-middle [Schn 96]: Jika spoofing terkadang hanya
menipu satu pihak, maka dalam skenario ini, saat pihak pertama
hendak berkomunikasi dengan pihak kedua, pihak ketiga di mata
pihak pertama seolah-olah adalah pihak kedua, dan pihak ketiga
dapat pula menipu pihak kedia sehingga pihak ketiga seolah-olah
adalah pihak pertama. Pihak ketiga dapat berkuasa penuh atas jalur
komunikas ini, dan bisa membuat berita fitnah.
B. PEMBAHASAN
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.
SHA disebut aman (secure) karena ia dirancang sedemikian sehingga
secara komputasi tidak mungkin menemukan pesan yang berkoresponden
dengan message digest yang diberikan.
Algoritma SHA menerima masukan berupa pesan dengan ukuran
maksimum 264 bit (2.147.483.648 gigabyte) dan menghasilkan message
digest yang panjangnya 160 bit, lebih panjang dari message digest yang
dihasilkan oleh MD5
Gambaran pembuatan message digest dengan algoritma SHA
diperlihatkan pada Gambar 1.
Gambar 1. Pembuatan message digest dengan algoritma SHA
Langkah-langkah pembuatan message digest secara garis besar adalah
sebagai berikut:
Penambahan bit-bit pengganjal (padding bits).
Penambahan nilai panjang pesan semula.
Inisialisasi penyangga (buffer) MD.
Pengolahan pesan dalam blok berukuran 512 bit.
1. Penambahan Bit-bit Pengganjal
Pesan ditambah dengan sejumlah bit pengganjal sedemikian
sehingga panjang pesan (dalam satuan bit) kongruen dengan 448
modulo 512. Ini berarti panjang pesan setelah ditambahi bit-bit
pengganjal adalah 64 bit kurang dari kelipatan 512. Angka 512 ini
muncul karena SHA memperoses pesan dalam blok-blok yang berukuran
512.
Pesan dengan panjang 448 bit pun tetap ditambah dengan bit-bit
pengganjal. Jika panjang pesan 448 bit, maka pesan tersebut ditambah
dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah
antara 1 sampai 512.
Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit
0.
2. Penambahan Nilai Panjang Pesan Semula
Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi
dengan 64 bit yang menyatakan panjang pesan semula.
Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi
512 bit.
3. Inisialisai Penyangga MD
SHA membutuhkan 5 buah penyangga (buffer) yang masing-masing
panjangnya 32 bit (MD5 hanya mempunyai 4 buah penyangga). Total
panjang penyangga adalah 5 32 = 160 bit. Keempat penyangga ini
menampung hasil antara dan hasil akhir.
Kelima penyangga ini diberi nama A, B, C, D, dan E. Setiap penyangga
diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
4. Pengolahan Pesan dalam Blok Berukuran 512 bit.
Pesan dibagi menjadi L buah blok yang masing-masing panjangnya
512 bit (Y0 sampai YL – 1).
Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi
keluaran 128-bit, dan ini disebut proses HSHA. Gambaran proses HSHA
diperlihatkan pada Gambar 2.
Gambar 2. Pengolahan blok 512 bit (Proses HSHA)
Proses HSHA terdiri dari 80 buah putaran (MD5 hanya 4 putaran), dan
masing-masing putaran menggunakan bilangan penambah Kt, yaitu:
Putaran 0 t 19 Kt = 5A827999
Putaran 20 t 39 Kt = 6ED9EBA1
Putaran 40 t 59 Kt = 8F1BBCDC
Putaran 60 t 79 Kt = CA62C1D6
Pada Gambar 2, Yq menyatakan blok 512-bit ke-q dari pesan yang telah
ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula.
MDq adalah nilai message digest 160-bit dari proses HSHA ke-q. Pada awal
proses, MDq berisi nilai inisialisasi penyangga MD.
Setiap putaran menggunakan operasi dasar yang sama (dinyatakan
sebagai fungsi f). Operasi dasar SHA diperlihatkan pada Gambar 3.
Gambar 3. Operasi dasar SHA dalam satu putaran (fungsi f)
Operasi dasar SHA yang diperlihatkan pada Gambar 3 dapat ditulis
dengan persamaan sebagai berikut:
a, b, c, d, e (CLS5(a) + ft(b, c, d) + e + Wt + Kt), a, CLS30(b), c, d
yang dalam hal ini,
a, b, c, d, e = lima buah peubah penyangga 32-bit
(berisi nilai penyangga A, B, C, D, E)
t = putaran, 0 t 79
ft = fungsi logika
CLSs = circular left shift sebanyak s bit
Wt = word 32-bit yang diturunkan dari blok 512 bit yang
sedang diproses
Kt = konstanta penambah
+ = operasi penjumlahan modulo 232
atau dapat dinyatakan dalam kode program berikut:
for t 0 to 79 do
TEMP (a <<< 5) + ft(b, c, d) + e + Wt + Kt)
e d
d c
c b <<< 30
b a
a TEMP
endfor
yang dalam hal ini, <<< menyatakan operasi pergeseran circular left shift.
Fungsi ft adalah fungsi logika yang melakukan operasi logika bitwise.
Operasi logika yang dilakukan dapat dilihat pada Tabel 1.
Tabel 1. Fungsi logika ft pada setiap putaran
Putaran ft(b, c, d)
0 .. 19 (b c) (~b d)
20 .. 39 b c d
40 .. 59 (b c) (b d) (c d)
60 .. 79 b c d
Catatan: operator logika AND, OR, NOT, XOR masing-masing
dilambangkan dengan , , ~,
Nilai W1 sampai W16 berasal dari 16 word pada blok yang sedang
diproses, sedangkan nilai Wt berikutnya didapatkan dari persamaan
Wt = Wt – 16 Wt – 14 Wt – 8 Wt – 3
Setelah putaran ke-79, a, b, c, d, dan e ditambahkan ke A, B, C, D, dan E
dan selanjutnya algoritma memproses untuk blok data berikutnya (Yq+1).
Keluaran akhir dari algoritma SHA adalah hasil penyambungan bit-bit di A, B,
C, D, dan E.
C. KESIMPULAN
Berdasarkan pembahasan bab-bab sebelumnya, maka dapat ditarik
kesimpulan sebagai berikut:
1. Suatu sistem pengamana data dapat dibuat dengan menggunakan
berbagai macam algoritma yang salahsatunya dibahas oleh penulis yaitu
Algoritma SHA (Secure Hash Algorithm).
2. Sistem otentikasi menggunakan algoritma SHA dapat meningkatkan
keamanan pada data.