6. 5. Back to the basic,,,안전하게,,,
우선 무엇을 안전하게 보관 해야 하는가?
카드번호, CVV, 고객정보
누구로 부터 안전하게 보관 해야 하는가?
외부 해커.
그들보다 내부 직원, 특히 DB에 접속이 가능한 IT직원이 가장 위험하다.
어떻게 안전하게 보관 할까?
OTL
아무리 생각해도 입력한것은 ID/Password밖에 없다. 그냥 일반적인 로그인 과정과 다를바
없다.
7. 6.안전하게,,,정리하면,,
입력된 내용은 ID / PASSWORD.
password -> hash function을 이용해 보관
카드번호, CVV, 개인정보 암호화 저장
대칭키(AES, DES) 암호화 저장
DB저장시 고객마다 KEY를 다르게 할수 없을까?
정보는 고객이 구매를 원할때만 복호화 되어야 한다.
로그인 과정 -> 좀 폼나게 (salting, key-stretching, iteration) -> 중간값을 KEY로 설정 ->
로그인완료
참고 : 안전한 패스워드 보관 (http://d2.naver.com/helloworld/318732)
8. Iteration (n = base 16 round + hash#1 result)
ID Password
hash #1 Server Salt
result
hash #n
CUST_MST : ID/Password
각 round의
result값에 따라
ID의 일부를
salt값으로 사용 각 round의 result
값에 따라 Server
Salt의 일부를 salt
값으로 사용.
7. ID / Password 저장
9. Iteration (n = base 16 round + hash#1 result)
ID Password
hash #1 Server Salt
result
hash #n
CUST_MST : ID/Password
8. 결제수단(카드번호) 등록 - 암호화
PAY_METHOD: ENC[CardNo]
CardNo
Encrypt
Function
ID-KEY
in memory
result of round #Z
( Z > 16 and Z < n)
same
?
if yes, do encryption
using ID-key
10. Iteration (n = base 16 round + hash#1 result)
ID Password
hash #1 Server Salt
result
hash #n
CUST_MST : ID/Password
9. 결제하기 - 복호화
PAY_METHOD: ENC[CardNo]
CardNo
Decrypt
Function
ID-KEY
in memory
result of round #Z
( Z > 16 and Z < n)
same
?
if yes, do decryption
using ID-key
11. T_MST (with out
CardNo)
ID
TID
10. 결제원장 구성
AUTH.
NO.
AMOUNT
....
VAN
ID
TID
AUTH.
NO.
AMOUNT
CARD_NO
CARD_COMPANY
ID + TID + AUTH.NO. + AMOUNT ID + TID + AUTH.NO. + AMOUNT + CARD_NO