Apa perbedaan antara enkripsi SHA dan AES? [Tutup]

Jawaban:

121

SHA bukanlah enkripsi, ini adalah fungsi hash satu arah. AES (Advanced_Encryption_Standard) adalah standar enkripsi simetris.

Referensi AES

skaffman
sumber
86

SHA adalah keluarga dari "Secure Hash Algorithms" yang telah dikembangkan oleh National Security Agency. Saat ini ada persaingan di antara lusinan opsi untuk siapa yang akan menjadi SHA-3 , algoritme hash baru untuk 2012+.

Anda menggunakan fungsi SHA untuk mengambil dokumen besar dan menghitung "intisari" (juga disebut "hash") dari input. Penting untuk disadari bahwa ini adalah proses satu arah. Anda tidak dapat mengambil intisari dan memulihkan dokumen asli.

AES , Standar Enkripsi Lanjutan adalah algoritma blok simetris. Ini berarti dibutuhkan 16 byte blok dan mengenkripsinya. Ini "simetris" karena kuncinya memungkinkan untuk enkripsi dan dekripsi.

UPDATE: Keccak dinobatkan sebagai pemenang SHA-3 pada 2 Oktober 2012.

Jeff Moser
sumber
65

SHA dan AES memiliki tujuan yang berbeda. SHA digunakan untuk menghasilkan hash data dan AES digunakan untuk mengenkripsi data.

Berikut adalah contoh saat hash SHA berguna bagi Anda. Katakanlah Anda ingin mengunduh citra ISO DVD dari beberapa distro Linux. Ini adalah file besar dan terkadang ada yang salah - jadi Anda ingin memvalidasi bahwa apa yang Anda unduh benar. Apa yang akan Anda lakukan adalah pergi ke sumber tepercaya (seperti titik unduhan distro resmi) dan mereka biasanya memiliki hash SHA untuk image ISO yang tersedia. Anda sekarang dapat membuat hash SHA yang sebanding (menggunakan sejumlah alat terbuka) untuk data yang Anda unduh. Sekarang Anda dapat membandingkan kedua hash untuk memastikan kecocokannya - yang akan memvalidasi bahwa gambar yang Anda unduh sudah benar. Hal ini penting terutama jika Anda mendapatkan image ISO dari sumber yang tidak tepercaya (seperti torrent) atau jika Anda mengalami masalah dalam menggunakan ISO dan ingin memeriksa apakah image tersebut rusak.

Seperti yang Anda lihat dalam kasus ini, SHA telah digunakan untuk memvalidasi data yang tidak rusak. Anda berhak melihat data di ISO.

AES, di sisi lain, digunakan untuk mengenkripsi data, atau mencegah orang melihat data tersebut dengan mengetahui beberapa rahasia.

AES menggunakan kunci bersama yang berarti bahwa kunci yang sama (atau kunci terkait) digunakan untuk mengenkripsi data seperti yang digunakan untuk mendekripsi data. Misalnya jika saya mengenkripsi email menggunakan AES dan saya mengirimkan email tersebut kepada Anda, maka Anda dan saya akan perlu mengetahui kunci bersama yang digunakan untuk mengenkripsi dan mendekripsi email. Ini berbeda dengan algoritme yang menggunakan kunci publik seperti PGP atau SSL.

Jika Anda ingin menyatukannya, Anda dapat mengenkripsi pesan menggunakan AES dan kemudian mengirimkan hash SHA1 dari pesan yang tidak terenkripsi sehingga saat pesan didekripsi, mereka dapat memvalidasi data. Ini adalah contoh yang dibuat-buat.

Jika Anda ingin tahu lebih banyak tentang beberapa istilah pencarian Wikipedia (di luar AES dan SHA), Anda ingin mencoba termasuk:

Algoritme kunci simetris (untuk AES) Fungsi hash kriptografi (untuk SHA) Kriptografi kunci publik (untuk PGP dan SSL)

Robert Horvick
sumber
1
Anda mengerti berapa umur jawaban ini ketika Anda melihat kata DVD ...
Klesun
9

SHA adalah fungsi hash dan AES adalah standar enkripsi. Dengan adanya masukan, Anda dapat menggunakan SHA untuk menghasilkan keluaran yang sangat tidak mungkin dihasilkan dari masukan lain. Selain itu, beberapa informasi hilang saat menerapkan fungsi sehingga meskipun Anda tahu cara menghasilkan masukan yang menghasilkan keluaran yang sama, masukan tersebut kemungkinan besar tidak akan sama dengan yang digunakan di tempat pertama. Di sisi lain, AES dimaksudkan untuk melindungi dari pengungkapan kepada pihak ketiga setiap data yang dikirim antara dua pihak yang berbagi kunci enkripsi yang sama. Ini berarti bahwa setelah Anda mengetahui kunci enkripsi dan outputnya (dan IV ...), Anda dapat kembali ke input asli dengan mulus. Harap perhatikan bahwa SHA tidak memerlukan apa pun selain masukan untuk diterapkan, sementara AES memerlukan setidaknya 3 ketipisan: apa yang Anda enkripsi / dekripsi, kunci enkripsi, dan vektor inisialisasi (IV).

em70
sumber
7

SHA adalah singkatan dari Secure Hash Algorithm sedangkan AES adalah singkatan dari Advanced Encryption Standard. Jadi SHA adalah seperangkat algoritma hashing. AES di sisi lain adalah sandi yang digunakan untuk mengenkripsi. Algoritma SHA (SHA-1, SHA-256 dll ...) akan mengambil masukan dan menghasilkan intisari (hash), ini biasanya digunakan dalam proses penandatanganan digital (menghasilkan hash beberapa byte dan menandatangani dengan kunci pribadi) .

François P.
sumber
3

SHA tidak memerlukan apa pun kecuali masukan untuk diterapkan, sementara AES memerlukan setidaknya 3 hal - apa yang Anda enkripsi / dekripsi, kunci enkripsi, dan vektor inisialisasi.

chen
sumber
1
[Ini ditandai sebagai "jawaban terlambat untuk pertanyaan lama, disediakan oleh pengguna baru. Komentar saya dalam konteks itu.] Tampaknya ini tidak menambahkan info apa pun atas apa yang sudah disediakan dalam jawaban lain untuk pertanyaan ini.
danfuzz
Itu salah. Anda tidak memerlukan vektor inisialisasi (IV) untuk menggunakan AES. Beberapa mode operasi untuk AES memerlukan IV (yang sama sekali berbeda).
Hilder Vitor Lima Pereira