Pada dasarnya menguraikan apa yang diuraikan di sini .
Begini cara kerjanya: katakanlah kita memiliki fungsi yang mengambil angka dari nol sampai sembilan, menambahkan tiga dan, jika hasilnya lebih besar dari sepuluh, dikurangi sepuluh. Jadi f (2) = 5, f (8) = 1, dll. Sekarang, kita bisa membuat fungsi lain, sebut saja f ', yang mundur, dengan menambahkan tujuh, bukan tiga. f '(5) = 2, f' (1) = 8, dll.
Itu adalah contoh dari fungsi dua arah dan kebalikannya. Secara teoritis, fungsi matematika apa pun yang memetakan satu hal ke hal lain dapat dibalik. Namun, dalam praktiknya, Anda dapat membuat fungsi yang mengacak inputnya dengan sangat baik sehingga sangat sulit untuk dibalik.
Mengambil input dan menerapkan fungsi satu arah disebut "hashing" input, dan apa yang disimpan Amazon di sistem mereka adalah "hash" dari kunci rahasia Anda. SHA1 adalah contoh dari jenis fungsi "satu arah", ini juga diperkuat terhadap serangan.
Fungsi HMAC dibangun di atas fungsi hash yang sudah mapan untuk menggunakan kunci yang dikenal untuk mengautentikasi string teks. Ini bekerja seperti ini:
- Anda mengambil teks permintaan dan kunci rahasia Anda dan menerapkan fungsi HMAC.
- Anda menambahkan header otentikasi itu ke permintaan Anda dan mengirimkannya ke Amazon.
- Amazon mencari salinan kunci rahasia mereka, dan teks yang baru saja Anda kirim dan menerapkan fungsi HMAC.
- Jika hasilnya cocok, mereka tahu bahwa Anda memiliki kunci rahasia yang sama.
Perbedaan antara ini dan PKI adalah bahwa metode ini RESTful , memungkinkan jumlah minimum pertukaran antara sistem Anda dan server Amazon.
Bukankah itu pada dasarnya sama dengan menanyakan nomor kartu kredit atau kata sandi saya dan menyimpannya di database mereka sendiri?
Ya, meskipun kerusakan yang dapat dilakukan seseorang dengan S3 tampaknya terbatas pada menguras akun Anda.
Seberapa rahasia mereka harus menjadi? Apakah aplikasi yang menggunakan kunci rahasia ini entah bagaimana menyimpannya?
Pada titik tertentu, Anda harus memuat kunci rahasia, dan dengan sebagian besar sistem berbasis Unix, jika penyerang bisa mendapatkan akses root, mereka bisa mendapatkan kuncinya. Jika Anda mengenkripsi kunci, Anda harus memiliki kode untuk mendekripsinya, dan pada titik tertentu kode dekripsi harus berupa teks biasa agar dapat dieksekusi. Ini adalah masalah yang sama dengan yang dimiliki DRM, kecuali bahwa komputer Anda adalah milik Anda.
Dalam banyak kasus, saya hanya memasukkan kunci rahasia ke dalam file dengan izin terbatas, dan melakukan tindakan pencegahan biasa untuk mencegah sistem saya di-root. Ada beberapa trik untuk membuatnya berfungsi dengan baik dengan sistem multipengguna, seperti menghindari file sementara dan semacamnya.
Kriptografi Kunci Publik digunakan untuk bertahan dari serangan yang sangat spesifik, beberapa di antaranya biasa terjadi. Singkatnya, ini adalah matematika yang kompleks yang memungkinkan seseorang untuk memverifikasi bahwa pada individu memiliki pasangan Kunci Publik dan Pribadi sementara hanya mengetahui kunci publik. Ini sangat berbeda dengan kartu kredit atau kata sandi statis. Sebagai contoh jika Anda mengautentikasi dengan server OpenSSH maka server tidak memerlukan kunci pribadi .
Idealnya jika database API Amazon di mana akan disusupi, penyerang akan memiliki daftar kunci publik dan tidak dapat mengakses API pengguna menggunakan informasi ini. Namun sistem yang ideal tidak selalu dipraktikkan dan saya tidak tahu pasti apakah Amazon melindungi dari vektor serangan ini, tetapi seharusnya begitu.
Dalam otentikasi kunci publik secara statistik kebal terhadap kekerasan. Kata sandi sering kali merupakan kata-kata kamus yang dapat mematahkan relativitas dengan cepat. Namun kunci pribadi adalah angka yang sangat besar yang tidak mudah ditebak. Jika penyerang memiliki kunci publik maka mereka dapat melakukan banyak tebakan secara "offline" di komputer super, tetapi meskipun demikian akan membutuhkan banyak waktu dan uang untuk memecahkan kunci tersebut.
sumber
AWS telah merancang algoritme autentikasi kustomnya sendiri. v4 dirilis pada 2014. Detail diuraikan di sini: Permintaan Autentikasi (AWS Signature Version 4) . Poin utamanya adalah bahwa permintaan tidak ditandatangani dengan rahasia itu sendiri, tetapi dengan kunci penandatanganan yang dibuat menggunakan rahasia itu. Ini juga menggunakan HMAC-SHA256 untuk penandatanganan.
Menggunakan kunci asimetris akan lebih aman karena AWS hanya akan menyimpan kunci publik, bukan rahasia, yang disimpan oleh pengguna dan AWS.
sumber