2010-02-18 4 views
2

내 ecommece 사이트의 경우 부분 신용 카드 번호를 문자열로 저장하고 싶습니다.이 정보는 데이터베이스에 저장하고 사용자가 이미 다시 사용할 때 암호를 해독해야합니다. 이전 구매에서 신용 카드 정보를 다시 입력하지 않고 입력했습니다.파이썬 : 양방향 부분 신용 카드 암호화 저장

나는 장고를 사용하고 있으므로 파이썬을 통해이를 해결해야합니다. 이 문제를 해결하는 영리한 알고리즘은 무엇입니까?

답변

15

훨씬 더 나아 가기 전에 암호화 된 카드 번호 저장을 고려하기 위해 필요한 프로세스를 정확하게 제어하는 ​​PCI-DSS을 살펴보십시오. 즉, 타사 지불 게이트웨이로의 아웃소싱을 진지하게 고려해야합니다.

일단 당신이 앞으로 가고 싶은 결과를 이해했다면, 다시 PCI 지침을 따르십시오. 카드 번호를 대칭 암호화하려면 AES을 사용하고 매우 엄격한 key management policies을 사용하십시오.

그러나 부분 카드 번호 만 저장하려는 경우 PCI는 처음 6 자리와 마지막 4 자리 만 저장할 수 있다고 말합니다 (절대 최대 값). 처음 6 자리 숫자 만 있으면 카드 유형을 식별 할 수 있습니다. 마지막 네 자리 숫자는 고객이 거의 동일한 카드 번호를 사용하는 문제를 예방하는 데 필요한 것으로 판단 할 수 있습니다.

일부 카드 번호 (평문)를 저장하는 IMHO는 암호화, 승인 및 결제 처리를 3rd party gateway으로 아웃소싱합니다. 지불 게이트웨이는 전달한 각 카드에 고유 한 토큰 ID를 부여하므로 고유 한 카드를 참조하여 재 인증 또는 환불을 수행 할 수 있습니다.

2

이와 같은 중요한 정보를 숨기고 싶으십니까? 민감한 정보를 데이터베이스에 저장하려는 함정에 대해 알아 보려면 this article을 읽어 보는 것이 좋습니다. 귀하의 경우 변환이 되돌릴 수 있기를 원하기 때문에 더 나쁜 것입니다. 반대로 할 수 있다면 공격자도 마찬가지 일 수 있습니다. 이 과정에 착수하기 전에

이 아마도 당신이 그것을 전문 사람에게 이런 일을 (예 : Paypal 또는 Google Checkout 등) 아웃소싱의 더 좋을 수도 ... 신중하게 생각하십시오.