Kamis, 25 Oktober 2012

FIREWALL


Konfigurasi Firewall

Posted by: permanayoga on: October 14, 2008
Menggunakan IPFW :
IPFW merupakan salah satu pengaturan firewall yang ada di dalam FreeBSD. Setting dan aplikasinya cukup mudah. Dengan IPFW kita dapat mengatur jaringan kita. Kita dapat menolak paket yang masuk dan yang keluar serta kita juga dapat membuat aplikasi NAT dengan menggunakan IPFW. Contoh rule set dari IPFW berada pada directory /etc/rc.firewall. Namun kita juga dapat mensetting sesuai dengan keinginan kita.
Untuk dapat mengaktifkan IPFW diperlukan konfigurasi kernel.
-Compile kernel FreeBSD untuk IPFW
Pastikan IPFW support belum ter-compile pada kernel :
#ipfw list
-Jika anda mendapatkan error seperti berikut ini, maka anda harus meng compile ulang kernel FreeBSD anda.
ipfw: getsockopt(IP_FW_GET): Protocol not available
Opsi lain dengan mengecek file config kernel nya /usr/src/sys/i386/conf dan dari option IPFIREWALL :
# grep IPFIREWALL /usr/src/sys/i386/conf
-Recompile ulang Kernel dengan opsi IPFW
Copy file baru dari default kernel:
# cd /usr/src/sys/i386/conf
# cp GENERIC IPFWKERNEL
-tambahkan dengan option IPFW support :
# mc IPFWKERNEL
options IPFIREWALL  # required for IPFW
options IPFIREWALL_VERBOSE # optional; logging
options IPFIREWALL_VERBOSE_LIMIT=10 # optional; don’t get too many log entries
options IPDIVERT # needed for natd
-simpan dan tutup file tersebut, recompile kernel, tulis perintah berikut ini :
# cd /usr/src
# make buildkernel KERNCONF=IPFWKERNEL
-Install kernel baru tersebut :
# make installkernel KERNCONF=IPFWKERNEL
-Reboot sistemnya :
# reboot
-Langkah 1 : Enabling IPFW Buka file /etc/rc.conf
# mcedit /etc/rc.conf
-tambahkan berikut ini:
firewall_enable=”YES”
firewall_script=”/usr/local/etc/ipfw.rules”
-Simpan dan tutup file.
-Langkah 3 :  Buat Script Firewall Rule Anda buat file ipfw.rule dan letakkan script firewall tersebut pada /usr/local/etc/ipfw.rule :
# mcedit /usr/local/etc/ipfw.rules
-tambahkan contoh perintah berikut :
IPF=”ipfw -q add”
ipfw -q -f flush
#loopback
ipfw add 10 allow all from any to any via lo0
ipfw add 20 deny all from any to 127.0.0.0/8
ipfw add 30 deny all from 127.0.0.0/8 to any
ipfw add 40 deny tcp from any to any frag
# statefull
ipfw add 50 check-state
ipfw add 60 allow tcp from any to any established
ipfw add 70 allow all from any to any out keep-state
ipfw add 80 allow icmp from any to any
# open port ftp (20,21), ssh (22), mail (25)
# http (80), dns (53) etc
ipfw add 110 allow tcp from any to any 21 in
ipfw add 120 allow tcp from any to any 21 out
ipfw add 130 allow tcp from any to any 22 in
ipfw add 140 allow tcp from any to any 22 out
ipfw add 150 allow tcp from any to any 25 in
ipfw add 160 allow tcp from any to any 25 out
ipfw add 170 allow udp from any to any 53 in
ipfw add 175 allow tcp from any to any 53 in
ipfw add 180 allow udp from any to any 53 out
ipfw add 185 allow tcp from any to any 53 out
ipfw add 200 allow tcp from any to any 80 in
ipfw add 210 allow tcp from any to any 80 out
# deny and log everything
ipfw add 500 deny log all from any to any
-Jika kita ingin menambahkan rule IPFW yang baru dapat dilakukan dengan mengetikkan perintah :
# ipfw add (no perintah) (aksi yg diinginkan) from (alamat) to (alamat)
-Untuk menghentikannya:
# ipfw delete (nomor perintah)

PORTSENTRY

Artikel mengenai portsentry ini sudah banyak sekali di Internet, namun disini saya hanya ingin menuliskan kembali sebagai dokumentasi pribadi saya dan mudah-mudahan bermanfaat juga untuk teman semua.

Untuk membuat server linux yang aman tentunya banyak sekali caranya, mulai dari hardwarenya yang ada pada lokasi yang memang aksesnya terbatas seperti IDC, maupun mengamankannya secara system, yaitu dengan memasang firewall di linux, melakukan pacthing server linux, dan juga memasang anti rootkit pada server linux tersebut, dll. Tujuannya tentu adalah agar server linux kita aman dari akses yang dilakukan oleh pihak yang tidak berkepentingan.

Saat ini yang akan saya bahas adalah bagaimana caranya mengamankan server linux dengan menggunakan PortSentry. Program PortSentry ini gratis dan free, serta memiliki licensi GPL.

Portsentry merupakan tools yang digunakan untuk menghindari berbagai aktifitas scanning (terutama stealth scanning) yang dilakukan oleh hacker. Portsentry dapat mengingat ip address dari si hacker. Portsentry juga dapat membuat server kita seolah-olah menghilang dari hadapan hacker bilamana terjadi aktifitas scanning dan juga dapat memblok IP hacker tersebut juga secara otomatis. Tujuannya adalah untuk melindungi dari scanning yang dilakukan oleh pihak lain.

Berikut penjelasannya, disini saya ada 2 buah OS atau Komputer :

- IP target - 10.10.10.1 - Ubuntu
- IP Scanner - 10.10.10.2 - Centos

Pertama kali si IP Scanner melakukan scanning terhadap IP Target dengan menggunakan Nmap sebelum IP target dipasang PortSentry :

# nmap -sS -vv -P0 -sV 10.10.10.1

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-10-18 16:45 WIT
Initiating ARP Ping Scan against 10.10.10.1 [1 port] at 16:45
The ARP Ping Scan took 0.00s to scan 1 total hosts.
DNS resolution of 1 IPs took 0.00s.
Initiating SYN Stealth Scan against 10.10.10.1 [1680 ports] at 16:45
Discovered open port 322/tcp on 10.10.10.1
Discovered open port 139/tcp on 10.10.10.1
Discovered open port 445/tcp on 10.10.10.1
The SYN Stealth Scan took 1.20s to scan 1680 total ports.
Initiating service scan against 3 services on 10.10.10.1 at 16:45
The service scan took 11.01s to scan 3 services on 1 host.
Host 10.10.10.1 appears to be up ... good.
Interesting ports on 10.10.10.1:
Not shown: 1677 closed ports
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
322/tcp open ssh (protocol 2.0)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)

1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port322-TCP:V=4.11%I=7%D=10/18%Time=4E9D4AAB%P=i686-redhat-linux-gnu%r(
SF:NULL,27,"SSH-2\.0-OpenSSH_5\.8p1\x20Debian-7ubuntu1\r\n");


Nmap finished: 1 IP address (1 host up) scanned in 12.352 seconds
Raw packets sent: 1682 (74.006KB) | Rcvd: 1684 (77.478KB)

Dari hasil scan nmap terlihat bahwa pada IP Target ada 3 buah port yang terbuka, yaitu port 322 (ssh server), 445 dan 139 (samba).


Lalu kemudian si IP Target memasang PortSentry :


$ sudo apt-get install portsentry

Kemudian melakukan sedikit konfigurasi pada portsentry agar dapat melindungi dari scanning yang dilakukan oleh IP Scanner :

$ sudo pico /etc/portsentry/portsentry.conf

Cari bari ini :

# 0 = Do not block UDP/TCP scans.
# 1 = Block UDP/TCP scans.
# 2 = Run external command only (KILL_RUN_CMD)

BLOCK_UDP="0"
BLOCK_TCP="0"

Ubah menjadi :

BLOCK_UDP="1"
BLOCK_TCP="1"

Dan juga pastikan baris ini aktif :

KILL_ROUTE="/sbin/route add -host $TARGET$ reject"

Setelah itu IP Target mengaktifkan service portsentry yang sudah di install tadi :

$ sudo /etc/init.d/portsentry start


Nah sekarang, si IP Scanner mencoba kembali melakukan scanning terhadap IP Target yang sudah dipasang PortSentry :

# nmap -sS -vv -P0 -sV 10.10.10.1

# nmap -sS -vv -P0 -sV 10.10.10.1

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-10-18 16:45 WIT
Initiating ARP Ping Scan against 10.10.10.1 [1 port] at 16:45
The ARP Ping Scan took 0.01s to scan 1 total hosts.
DNS resolution of 1 IPs took 0.01s.
Initiating SYN Stealth Scan against 10.10.10.1 [1680 ports] at 16:45
Discovered open port 32774/tcp on 10.10.10.1
Discovered open port 32773/tcp on 10.10.10.1
Discovered open port 143/tcp on 10.10.10.1
Discovered open port 79/tcp on 10.10.10.1
Discovered open port 32771/tcp on 10.10.10.1
Discovered open port 1/tcp on 10.10.10.1
Discovered open port 139/tcp on 10.10.10.1
Discovered open port 111/tcp on 10.10.10.1
Discovered open port 54320/tcp on 10.10.10.1
Discovered open port 15/tcp on 10.10.10.1
Discovered open port 445/tcp on 10.10.10.1
Discovered open port 27665/tcp on 10.10.10.1
Discovered open port 119/tcp on 10.10.10.1
Discovered open port 12345/tcp on 10.10.10.1
Discovered open port 31337/tcp on 10.10.10.1
Discovered open port 1524/tcp on 10.10.10.1
Discovered open port 1080/tcp on 10.10.10.1
Discovered open port 2000/tcp on 10.10.10.1
Discovered open port 6667/tcp on 10.10.10.1
Discovered open port 12346/tcp on 10.10.10.1
Discovered open port 322/tcp on 10.10.10.1
Discovered open port 32772/tcp on 10.10.10.1
Discovered open port 540/tcp on 10.10.10.1
Discovered open port 11/tcp on 10.10.10.1
Discovered open port 635/tcp on 10.10.10.1
The SYN Stealth Scan took 0.14s to scan 1680 total ports.
Initiating service scan against 25 services on 10.10.10.1 at 16:45

--- Berhenti sampai disini karena IP Scanner sudah terblokir secara otomatis oleh portsentry yang ada pada IP Target ---

Kalau dilihat sekarang, PortSentry ini banyak membuat daemon/service palsu pada server IP Target, sehingga tentunya akan menyulitkan bagi si IP Scanner untuk mencari lebih dalam dari port yang ada pada IP Target, dan juga saat ini IP Scanner telah masuk kedalam blokir atau blacklist dari portsentry yang ada di IP Target.

PortSentry ini melakukan deteksi terhadap IP yang melakukan scanning dan kemudian melakukan blocking terhadap IP tersebut. hal ini bisa dilihat pada log yang ada di IP Target dimana portsentry berada :


# tail -f /var/log/syslog

Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Connect from host: 10.10.10.2/10.10.10.2 to TCP port: 79
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Host: 10.10.10.2 is already blocked. Ignoring
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Connect from host: 10.10.10.2/10.10.10.2 to TCP port: 111
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Host: 10.10.10.2 is already blocked. Ignoring
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Connect from host: 10.10.10.2/10.10.10.2 to TCP port: 119
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Host: 10.10.10.2 is already blocked. Ignoring
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Connect from host: 10.10.10.2/10.10.10.2 to TCP port: 143
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Host: 10.10.10.2 is already blocked. Ignoring
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Connect from host: 10.10.10.2/10.10.10.2 to TCP port: 540
Oct 18 16:45:50 IP-Target portsentry[9621]: attackalert: Host: 10.10.10.2 is already blocked. Ignoring


PortSentry ini melakukan bloking terhadap IP Scanner dan memasukannya kedalam file /etc/hosts.deny dan juga membuat routing ke IP Scanner menjadi null routing atau Network is unreachable
.

Jika dilihat routingnya dari IP Target seperti ini jadinya :

$ route -n
10.10.0.0 0.0.0.0 255.255.0.0 U 1 0 0 eth0
10.10.10.2 - 255.255.255.255 !H 0 - 0 -
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0


Pertanyaannya sekarang adalah bagaimana cara nya untuk merelease atau membuka blokir yang dilakukan oleh portsentry??

Caranya pertama-tama adalah membuang IP Scanner (IP yang terblokir) dari /etc/hosts.deny dan setelah itu hapus juga routing null nya di IP Target (dimana portsentry di install) :

$ sudo route del 10.10.10.2

Lakukan juga restart service portsentry nya :

# /etc/init.d/portsentry stop
Stopping anti portscan daemon: portsentry.
# /etc/init.d/portsentry start
Starting anti portscan daemon: portsentry in tcp & udp mode.

Jika kita ingin menambahkan whitelist di portsentry ini dapat di masukan block IP nya kedalam file yang ada pada :

/etc/portsentry/portsentry.ignore

IP yang ditambahkan pada file tersebut diatas maka akan di abaikan oleh portsentry.

Selasa, 02 Oktober 2012

KRIPTOGRAFI

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :
  • Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.
  • Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.
  • Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.
  • Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

Daftar isi

  • 1 Algoritma Sandi
    • 1.1 algoritma sandi kunci-simetris
      • 1.1.1 Block-Cipher
      • 1.1.2 Stream-Cipher
      • 1.1.3 Algoritma-algoritma sandi kunci-simetris
    • 1.2 Algoritma Sandi Kunci-Asimetris
      • 1.2.1 Fungsi Enkripsi dan Dekripsi Algoritma Sandi Kunci-Asimetris
      • 1.2.2 Algoritma -Algoritma Sandi Kunci-Asimetris
  • 2 Fungsi Hash Kriptografis
    • 2.1 Sifat-Sifat Fungsi Hash Kriptografi
    • 2.2 Algoritma-Algoritma Fungsi Hash Kriptografi
    • 2.3 Mengembalikan Fungsi Hash Kriptografi

Algoritma Sandi

algoritma sandi adalah algoritma yang berfungsi untuk melakukan tujuan kriptografis. Algoritma tersebut harus memiliki kekuatan untuk melakukan (dikemukakan oleh Shannon):
  • konfusi/pembingungan (confusion), dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya
  • difusi/peleburan (difusion), dari teks terang sehingga karakteristik dari teks terang tersebut hilang.
sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritmas sandi harus memperhatikan kualitas layanan/Quality of Service atau QoS dari keseluruhan sistem dimana dia diimplementasikan. Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode untuk menguji kehandalan algoritma sandi adalah kriptanalisa.
Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang /plaintext dan yang berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D.
Enkripsi : E(P) = C
Dekripsi : D(C) = P atau D(E(P)) = P
Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi :
  • kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik
  • kunci-asimetris/asymetric-key
Berdasarkan arah implementasi dan pembabakan jamannya dibedakan menjadi :
Berdasarkan kerahasiaan kuncinya dibedakan menjadi :
Pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Sedangkan pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci publik(public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Bila elemen teks terang dienkripsi dengan menggunakan kunci pribadi maka elemen teks sandi yang dihasilkannya hanya bisa didekripsikan dengan menggunakan pasangan kunci pribadinya. Begitu juga sebaliknya, jika kunci pribadi digunakan untuk proses enkripsi maka proses dekripsi harus menggunakan kunci publik pasangannya.

algoritma sandi kunci-simetris

Skema algoritma sandi akan disebut kunci-simetris apabila untuk setiap proses enkripsi maupun dekripsi data secara keseluruhan digunakan kunci yang sama. Skema ini berdasarkan jumlah data per proses dan alur pengolahan data didalamnya dibedakan menjadi dua kelas, yaitu block-cipher dan stream-cipher.

Block-Cipher

Block-cipher adalah skema algoritma sandi yang akan membagi-bagi teks terang yang akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama. Pada umumnya, block-cipher memproses teks terang dengan blok yang relatif panjang lebih dari 64 bit, untuk mempersulit penggunaan pola-pola serangan yang ada untuk membongkar kunci. Untuk menambah kehandalan model algoritma sandi ini, dikembangkan pula beberapa tipe proses enkripsi, yaitu :
  • ECB, Electronic Code Book
  • CBC, Cipher Block Chaining
  • OFB, Output Feed Back
  • CFB, Cipher Feed Back

Stream-Cipher

Stream-cipher adalah algoritma sandi yang mengenkripsi data persatuan data, seperti bit, byte, nible atau per lima bit(saat data yang di enkripsi berupa data Boudout). Setiap mengenkripsi satu satuan data digunakan kunci yang merupakan hasil pembangkitan dari kunci sebelum.

Algoritma-algoritma sandi kunci-simetris

Beberapa contoh algoritma yang menggunakan kunci-simetris:
  • DES - Data Encryption Standard
  • blowfish
  • twofish
  • MARS
  • IDEA
  • 3DES - DES diaplikasikan 3 kali
  • AES - Advanced Encryption Standard, yang bernama asli rijndael

Algoritma Sandi Kunci-Asimetris

Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private-key. Dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Keuntungan algoritma model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para korensponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Fungsi Enkripsi dan Dekripsi Algoritma Sandi Kunci-Asimetris

Apabila Ahmad dan Bejo hendak bertukar berkomunikasi, maka:
  1. Ahmad dan Bejo masing-masing membuat 2 buah kunci
    1. Ahmad membuat dua buah kunci, kunci-publik \!K_{publik[Ahmad]} dan kunci-privat \!K_{privat[Ahmad]}
    2. Bejo membuat dua buah kunci, kunci-publik \!K_{publik[Bejo]} dan kunci-privat \!K_{privat[Bejo]}
  2. Mereka berkomunikasi dengan cara:
    1. Ahmad dan Bejo saling bertukar kunci-publik. Bejo mendapatkan \!K_{publik[Ahmad]} dari Ahmad, dan Ahmad mendapatkan \!K_{publik[Bejo]} dari Bejo.
    2. Ahmad mengenkripsi teks-terang \!P ke Bejo dengan fungsi \!C = E(P,K_{publik[Bejo]})
    3. Ahmad mengirim teks-sandi \!C ke Bejo
    4. Bejo menerima \!C dari Ahmad dan membuka teks-terang dengan fungsi \!P = D(C,K_{privat[Bejo]})
Hal yang sama terjadi apabila Bejo hendak mengirimkan pesan ke Ahmad
  1. Bejo mengenkripsi teks-terang \!P ke Ahmad dengan fungsi \!C = E(P,K_{publik[Ahmad]})
  2. Ahmad menerima \!C dari Bejo dan membuka teks-terang dengan fungsi \!P = D(C,K_{privat[Ahmad]})

Algoritma -Algoritma Sandi Kunci-Asimetris

  • Knapsack
  • RSA - Rivert-Shamir-Adelman
  • Diffie-Hellman

Fungsi Hash Kriptografis

Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data. Umumnya digunakan untuk keperluan autentikasi dan integritas data. Fungsi hash adalah fungsi yang secara efisien mengubah string input dengan panjang berhingga menjadi string output dengan panjang tetap yang disebut nilai hash.

Sifat-Sifat Fungsi Hash Kriptografi

  • Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit (secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
  • Tahan preimej kedua (Second preimage resistant): bila diketahui input m1 maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan hash(m1) = hash(m2).
  • Tahan tumbukan (Collision-resistant): sulit mencari dua input berbeda m1 dan m2 yang menyebabkan hash(m1) = hash(m2)

Algoritma-Algoritma Fungsi Hash Kriptografi

Beberapa contoh algoritma fungsi hash Kriptografi:
  • MD4
  • MD5
  • SHA-0
  • SHA-1
  • SHA-256
  • SHA-512

Mengembalikan Fungsi Hash Kriptografi

Salah satu cara mengembalikan (mendapatkan nilai asal) dari fungsi hash kriptografi adalah dengan menggunakan Tabel pelangi. Tabel pelangi bekerja dengan cara mengumpulkan nilai akhir fungsi hash kriptografi lalu menyusun basis data untuk mendapatkan nilai asal fungsi hash kriptografi.