Zasadniczo omówienie tego, co tutaj opisano .
Oto jak to działa: powiedzmy, że mamy funkcję, która pobiera liczbę od zera do dziewięciu, dodaje trzy i, jeśli wynik jest większy niż dziesięć, odejmuje dziesięć. Zatem f (2) = 5, f (8) = 1 itd. Teraz możemy utworzyć inną funkcję, nazwijmy ją f ', która idzie wstecz, dodając siedem zamiast trzech. f '(5) = 2, f' (1) = 8 itd.
To jest przykład funkcji dwukierunkowej i jej odwrotności. Teoretycznie wszystkie funkcje matematyczne, które odwzorowują jedną rzecz na drugą, można odwrócić. W praktyce jednak można utworzyć funkcję, która tak dobrze szyfruje swoje dane wejściowe, że niezwykle trudno jest ją odwrócić.
Pobranie danych wejściowych i zastosowanie funkcji jednokierunkowej nazywa się „haszowaniem” danych wejściowych, a to, co Amazon przechowuje w ich systemie, jest „hashem” Twojego tajnego klucza. SHA1 jest przykładem tego rodzaju funkcji „jednokierunkowej”, która jest również zabezpieczona przed atakami.
Funkcja HMAC opiera się na ustalonych funkcjach skrótu, aby użyć znanego klucza do uwierzytelnienia ciągu tekstu. Działa to tak:
- Bierzesz tekst swojego żądania i swój tajny klucz i stosujesz funkcję HMAC.
- Dodajesz ten nagłówek uwierzytelniania do swojego żądania i wysyłasz go do Amazon.
- Amazon sprawdza swoją kopię tajnego klucza oraz właśnie wysłany tekst i stosuje funkcję HMAC.
- Jeśli wynik pasuje, wiedzą, że masz ten sam tajny klucz.
Różnica między tym a PKI polega na tym, że ta metoda jest RESTful , umożliwiając minimalną liczbę wymian między Twoim systemem a serwerami Amazon.
Czy to nie to samo, co pytanie mnie o numer mojej karty kredytowej lub hasło i przechowywanie ich w ich własnej bazie danych?
Tak, chociaż szkody, które ktoś może wyrządzić za pomocą S3, wydają się ograniczać do opróżnienia konta.
Jak bardzo muszą być tajni? Czy te aplikacje używają tajnych kluczy, które je w jakiś sposób przechowują?
W pewnym momencie będziesz musiał załadować tajny klucz, a w przypadku większości systemów opartych na Uniksie, jeśli atakujący może uzyskać dostęp do roota, może uzyskać klucz. Jeśli szyfrujesz klucz, musisz mieć kod, aby go odszyfrować, aw pewnym momencie kod odszyfrowywania musi być zwykłym tekstem, aby można go było wykonać. To ten sam problem, który ma DRM, z wyjątkiem tego, że jesteś właścicielem komputera.
W wielu przypadkach po prostu umieszczam tajne klucze w pliku z ograniczonymi uprawnieniami i podejmuję zwykłe środki ostrożności, aby zapobiec zrootowaniu mojego systemu. Jest kilka sztuczek, aby działał poprawnie w systemie wielu użytkowników, takich jak unikanie plików tymczasowych i tym podobne.