Nowość – przenieś przetwarzanie płatności do chmury dzięki AWS Payment Cryptography
Kryptografia jest obecna wszędzie w naszym codziennym życiu. Jeśli regularnie czytasz blog AWS, używasz protokołu HTTPS, rozszerzenia protokołu HTTP, które wykorzystuje szyfrowanie do zabezpieczania komunikacji.
W AWS wiele usług i możliwości pomaga zarządzać kluczami i szyfrowaniem, takich jak:
- AWS Key Management Service (AWS KMS), za pomocą której można tworzyć i chronić klucze do szyfrowania lub cyfrowego podpisywania danych;
- AWS CloudHSM, którego można używać do zarządzania sprzętowymi modułami bezpieczeństwa (HSM) przeznaczonymi dla jednego dzierżawcy.
Moduły HSM to urządzenia fizyczne, które w bezpieczny sposób chronią operacje kryptograficzne i klucze używane podczas tych operacji. HSM mogą pomóc Ci spełnić wymagania dotyczące zgodności korporacyjnej, umownej i regulacyjnej. Dzięki CloudHSM masz dostęp do modułów HSM ogólnego przeznaczenia. W przypadku płatności istnieją specjalne moduły HSM płatnicze, które oferują takie możliwości, jak generowanie i sprawdzanie osobistego numeru identyfikacyjnego (PIN) oraz kodu zabezpieczającego karty kredytowej lub debetowej.
Dziś autorzy z radością udostępniają dostępność AWS Payment Cryptography, elastycznej usługi zarządzającej modułami płatniczymi HSM i kluczami do aplikacji przetwarzających płatności w chmurze.
Aplikacje wykorzystujące moduły HSM do płatności mają duże wymagania, ponieważ przetwarzanie płatności jest złożone, wrażliwe na czas i podlega ścisłym regulacjom oraz wymaga interakcji wielu dostawców usług finansowych i sieci płatniczych. Za każdym razem, gdy dokonujesz płatności, dane są wymieniane między dwoma lub większą liczbą dostawców usług finansowych i na każdym etapie muszą zostać odszyfrowane, przekształcone, zaszyfrowane lub sprawdzone.
Proces ten wymaga wysoce wydajnych możliwości kryptograficznych i procedur zarządzania kluczami pomiędzy każdym dostawcą usług płatniczych. Dostawcy ci mogą mieć tysiące kluczy do ochrony, zarządzania, rotacji i audytu, co sprawia, że cały proces jest kosztowny i trudny do skalowania. Co więcej, moduły HSM ds. płatności tradycyjnie stosują złożone i podatne na błędy procesy, takie jak wymiana kluczy przy użyciu kluczowych elementów wydrukowanych na papierze, przesyłanych osobno do wielu kluczowych depozytariuszy, którzy ostatecznie łączą komponenty w ramach skomplikowanego procesu w bezpiecznym miejscu.
Poznaj AWS Payment Cryptography
AWS Payment Cryptography upraszcza wdrażanie funkcji kryptograficznych i zarządzanie kluczami używanymi do zabezpieczania danych podczas przetwarzania płatności zgodnie z różnymi standardami branży kart płatniczych (PCI).
Dzięki AWS Payment Cryptography możesz wyeliminować potrzebę udostępniania i zarządzania lokalnymi modułami płatniczymi HSM oraz korzystać z dostarczonych narzędzi, aby uniknąć podatnych na błędy procesów wymiany kluczy. Na przykład dzięki kryptografii płatności AWS dostawcy usług płatniczych i finansowych mogą rozpocząć rozwój w ciągu kilku minut i zaplanować elektroniczną wymianę kluczy, eliminując procesy ręczne.
Aby zapewnić elastyczne możliwości kryptograficzne w sposób zgodny z przepisami, AWS Payment Cryptography wykorzystuje moduły HSM z potwierdzeniem urządzenia PCI PTS HSM. Możliwości te obejmują szyfrowanie i deszyfrowanie danych karty, tworzenie kluczy i translację pinów. AWS Payment Cryptography jest również zaprojektowany zgodnie ze standardami bezpieczeństwa PCI, takimi jak PCI DSS, PCI PIN i PCI P2PE i zapewnia dowody i raporty pomagające spełnić Twoje potrzeby w zakresie zgodności.
Możesz importować i eksportować klucze symetryczne między usługą AWS Payment Cryptography a lokalnymi modułami HSM w ramach klucza szyfrowania klucza (KEK) przy użyciu protokołu ANSI X9 TR-31. Można również importować i eksportować symetryczne KEK z innymi systemami i urządzeniami wykorzystując protokół ANSI X9 TR-34, który umożliwia usłudze wymianę kluczy symetrycznych przy użyciu technik asymetrycznych.
Aby uprościć przeniesienie przetwarzania płatności konsumenckich do chmury, istniejące aplikacje do płatności kartami mogą korzystać z kryptografii płatności AWS za pośrednictwem pakietów AWS SDK. W ten sposób możesz używać swojego ulubionego języka programowania, takiego jak Java lub Python, zamiast specyficznych dla dostawcy interfejsów ASCII za pośrednictwem gniazd TCP, jak to jest powszechne w przypadku płatniczych modułów HSM.
Dostęp można autoryzować za pomocą zasad opartych na tożsamości AWS Identity and Access Management (IAM), w których można określić, które działania i zasoby są dozwolone, a które zabronione oraz na jakich warunkach.
Monitorowanie jest ważne dla utrzymania niezawodności, dostępności i wydajności wymaganej do przetwarzania płatności. Dzięki AWS Payment Cryptography możesz używać Amazon CloudWatch, AWS CloudTrail i Amazon EventBridge, aby zrozumieć, co się dzieje, zgłosić, gdy coś jest nie tak, i w razie potrzeby podjąć automatyczne działania.
Sprawdźmy, jak to działa w praktyce.
Użycie AWS Payment Cryptography
Korzystając z interfejsu wiersza poleceń AWS (AWS CLI), utwórz klucz 3DES o podwójnej długości, który ma być używany jako klucz weryfikacji karty (CVK). CVK to klucz używany do generowania i weryfikacji kodów bezpieczeństwa kart, takich jak CVV, CVV2 i podobne wartości.
Należy pamiętać, że istnieją dwa polecenia dla interfejsu CLI (i podobnie dwa punkty końcowe dla interfejsu API i zestawów SDK):
- kryptografia płatności dla operacji na płaszczyźnie kontrolnej, takich jak wyświetlanie i tworzenie kluczy i aliasów.
- dane-kryptograficzne-płatnicze do operacji kryptograficznych wykorzystujących klucze, na przykład do generowania PIN-u lub danych potwierdzających ważność karty.
Tworzenie klucza jest operacją na płaszczyźnie sterującej:
aws payment-cryptography create-key \
--no-exportable \
--key-attributes KeyAlgorithm=TDES_2KEY,
KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,
KeyClass=SYMMETRIC_KEY,
KeyModesOfUse='{Generate=true,Verify=true}'
{
"Key": {
"KeyArn": "arn:aws:payment-cryptography:us-west-2:123412341234:key/42cdc4ocf45mg54h",
"KeyAttributes": {
"KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
"KeyClass": "SYMMETRIC_KEY",
"KeyAlgorithm": "TDES_2KEY",
"KeyModesOfUse": {
"Encrypt": false,
"Decrypt": false,
"Wrap": false,
"Unwrap": false,
"Generate": true,
"Sign": false,
"Verify": true,
"DeriveKey": false,
"NoRestrictions": false
}
},
"KeyCheckValue": "B2DD4E",
"KeyCheckValueAlgorithm": "ANSI_X9_24",
"Enabled": true,
"Exportable": false,
"KeyState": "CREATE_COMPLETE",
"KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
"CreateTimestamp": "2023-05-26T14:25:48.240000+01:00",
"UsageStartTimestamp": "2023-05-26T14:25:48.220000+01:00"
}
}
Aby odwołać się do tego klucza w kolejnych krokach, możesz użyć nazwy zasobu Amazon (ARN) znalezionej we właściwości KeyARN lub możesz utworzyć alias. Alias to przyjazna nazwa, która pozwala odwołać się do klucza bez konieczności używania pełnego ARN. Możesz zaktualizować alias, aby odnosił się do innego klucza. Kiedy musisz wymienić klucz, możesz po prostu zaktualizować alias bez konieczności zmiany konfiguracji lub kodu aplikacji. Aby nazwy aliasów były łatwe do rozpoznania, zaczynają się one od alias/. Na przykład poniższe polecenie tworzy alias/my-key dla właśnie utworzonego klucza:
aws payment-cryptography create-alias --alias-name alias/my-key \ --key-arn arn:aws:payment-cryptography:us-west-2:123412341234:key/42cdc4ocf45mg54h
JSON
{ "Alias": { "AliasName": "alias/my-key", "KeyArn": "arn:aws:payment-cryptography:us-west-2:123412341234:key/42cdc4ocf45mg54h" } }
Zanim zaczniesz używać nowego klucza, spisz wszystkie swoje klucze, aby sprawdzić ich status:
aws payment-cryptography list-keys
{
"Keys": [
{
"KeyArn": "arn:aws:payment-cryptography:us-west-2:123421341234:key/42cdc4ocf45mg54h",
"KeyAttributes": {
"KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
"KeyClass": "SYMMETRIC_KEY",
"KeyAlgorithm": "TDES_2KEY",
"KeyModesOfUse": {
"Encrypt": false,
"Decrypt": false,
"Wrap": false,
"Unwrap": false,
"Generate": true,
"Sign": false,
"Verify": true,
"DeriveKey": false,
"NoRestrictions": false
}
},
"KeyCheckValue": "B2DD4E",
"Enabled": true,
"Exportable": false,
"KeyState": "CREATE_COMPLETE"
},
{
"KeyArn": "arn:aws:payment-cryptography:us-west-2:123412341234:key/ok4oliaxyxbjuibp",
"KeyAttributes": {
"KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
"KeyClass": "SYMMETRIC_KEY",
"KeyAlgorithm": "TDES_2KEY",
"KeyModesOfUse": {
"Encrypt": false,
"Decrypt": false,
"Wrap": false,
"Unwrap": false,
"Generate": true,
"Sign": false,
"Verify": true,
"DeriveKey": false,
"NoRestrictions": false
}
},
"KeyCheckValue": "905848",
"Enabled": true,
"Exportable": false,
"KeyState": "DELETE_PENDING"
}
]
}
Jak widać, istnieje inny klucz, który utworzyłeś wcześniej, ale który został usunięty. Gdy klucz zostanie usunięty, zostaje on oznaczony do usunięcia (DELETE_PENDING). Rzeczywiste usunięcie następuje po konfigurowalnym okresie (domyślnie 7 dni). Jest to mechanizm zabezpieczający zapobiegający przypadkowemu lub złośliwemu usunięciu klucza. Klucze oznaczone do usunięcia nie są dostępne do użycia, ale można je przywrócić.
W podobny sposób wymień wszystkie swoje aliasy, aby zobaczyć, do jakich kluczy się odnoszą: