POS 시스템 해킹과 방어 [개인 신용정보 유출 방지를 위한 안전한 결제 시스템 구축]
- 원서명Hacking Point of Sale: Payment Application Secrets, Threats, and Solutions (ISBN 9781118810118)
- 지은이슬라바 곰진(Slava Gomzin)
- 옮긴이배영부
- ISBN : 9788960777262
- 40,000원
- 2015년 06월 23일 펴냄 (절판)
- 페이퍼백 | 400쪽 | 188*235mm
- 시리즈 : 해킹과 보안
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
이 책은 무수히 많은 보안 관련 서적에서 지금껏 다루지 않았던, 현대인의 소비 생활에서 가장 중요한 컴퓨터 시스템이라고 할 수 있는 POS 시스템의 보안 위협에 관해 다룬다. 어떻게 하면 보안의 위협으로부터 안전한 POS 시스템이 될 수 있는지를 POS 시스템의 구조와 관련된 보안 위협을 설명하는 것을 시작으로, 보안 표준에서부터 방어에 필요한 기술의 활용 방법까지 설명한다.
이 책에서 다루는 내용
이 책은 신용카드 회사가 아닌 비즈니스 관점에서 POS의 보안을 독특한 관점에서 다룬다. 소매상들이 구내에 설치된 총체적인 지불 인프라를 제대로 보호할 수 있는, 입증된 기술을 소개한다. 또한 기존에 구축된 인프라를 향상시키는 데 필요한 권고사항을 구현하는 과정에서 위험 평가와 보안 제어수준 측정을 위한 POS 취약성 등급 계산기에 대한 내용을 설명한다.
물리적 취약점과 설계 결함에 관련된 보안 위반 요소를 제거하는 방법
사용자와 서버 단의 지불 시스템을 보호하기 위한 점대점 암호화 사용 방법
PCI 보안 표준이 제공하는 보호의 간극을 좁히는 방법
신용카드를 분석해보고 지불카드가 위협에 노출될 수 있는 상황을 파악
PCI와 FIPS, ANSI, EMV, ISO 등을 비롯한 지불 애플리케이션 보안과 가장 관련이 깊은 표준 탐구
광범위한 공통의 보안 유출 시도에 대항할 수 있도록 설계된 강력한 지불 애플리케이션 보안 제어에 필요한 실제적인 권고사항
이 책의 대상 독자
소프트웨어 판매회사에서 일하는 POS와 지불 애플리케이션 개발자, 개발 관리자, 그리고 소프트웨어 설계자와 서비스 제공자는 지불 애플리케이션에 관한 기본적인 내용과 그들의 제품을 보안 위협으로부터 어떻게 보호할 것인가를 배울 수 있을 것이다. 이 책의 후반부인 5장에서 9장에 이르기까지 이러한 그룹을 위한 몇 가지 예제 코드가 있다(해커는 C#으로 코딩을 하진 않지만, 필요하면 C 언어로 변환할 수 있다는 것을 알고 있다). 이 예제 코드는 http://www.wiley.com/go/hackingpos와 에이콘출판사 도서정보 페이지 http://acornpub.co.kr/book/pos-hacking에서 내려받을 수 있다.
QA 분석가와 관리자는 어떻게 지불 소프트웨어의 보안 침투 테스트를 만들고 수행해야 하는가에 관한 아이디어를 얻을 수 있다.
도소매상 분야에서 일하는 보안 설계자와 관리자, 컨설턴트, 의사결정권자는 지불 애플리케이션 벤더 사와 서비스 제공자로부터 납품 받는 소프트웨어와 하드웨어의 수준을 판별하기 위해 해당 벤더들에게 어떤 질문을 해야 하는지를 배울 수 있다.
소프트웨어/하드웨어 판매상과 도소매상의 분야에 함께 종사하는 솔루션 설계자, 프로젝트와 제품 관리자, 의사결정권자는 지불 솔루션의 구현과 관련된 위험, 그리고 그것을 완화하기 위해 필요한 노력을 측정하기 위한 잠재적 취약 영역에 관해 배울 수 있다.
이 책의 구성
좋은 프로그래머는 코딩 규칙과 모범 사례를 따른다. 기본적인 개발 원칙 중 하나는 코드를 단 몇 줄의 크기를 갖는 작고 상대적으로 독립된 조각으로 분리한다. 이렇게 하면 읽기 쉽고 이해하기 쉬워진다. 이 책에도 동일한 접근 방식이 적용돼 각각 한 절의 크기를 최소화한다. 본문은 특정 정보 조각을 쉽게 찾고 읽을 수 있게 단순화된 상세한 표를 포함하는 전문 기술 문서와 유사한 방식의 구조를 갖는다.
이 책은 다음과 같은 세 개의 주요 부분으로 나뉜다.
1. 기술적 개요
2. 공격과 취약점 설명
3. 문제의 해법(완화하고 방어하는 수단)
1부, ‘지불 애플리케이션 취약점 해부’(1, 2, 3장)에서는 전자 지불의 배경 기술을 설명하는 것으로, 2부와 3부를 위한 배경을 설정한다. 카드와 지불 애플리케이션 세계에 대한 설명이긴 하지만 모든 요소를 보안의 관점에서 다시 돌아본다.
1장, ‘지불 처리 절차’에서는 문제를 처리하는 시나리오와 예외 상황에 관한 자세한 설명을 통해 결제와 지불 분야에서 각 조직이 어떻게 거래 흐름에 참여하는가, 그들의 책임과 도전 과제는 무엇인가, 그리고 다양한 지불 거래 형태 간의 차이점은 무엇인가에 관해 다룬다.
2장, ‘지불 애플리케이션의 구조’에서는 기본적인 설계 개념을 소개하고, 서로 다른 배치 형태를 비교하며, 크게 인터페이스와 처리자로 나뉘는 지불 애플리케이션의 주요 기능 모듈에 관해 설명한다. 또한 연결 형태와 통신과 메시지 프로토콜의 차이점에 관해 설명한다.
3장, ‘지불 카드 산업’에서는 지불 애플리케이션에서 채용하고 있는 산업을 규제하는 보안 표준에 관해 서술하고, 어떻게 민감한 카드 소유자 정보를 도난으로부터 보호하는지 보여준다. 또한 상점과 소프트웨어 판매회사의 관점에서 PCI DSS와 PA-DSS의 차이점에 관해 설명한다. 지불 애플리케이션의 보안에 간접적으로 영향을 주는 (ISO와 FIPS와 같은) 표준에 관해서도 설명하며, PCI P2PE 표준에 관해서도 소개한다(P2PE의 구현에 관한 기술적인 자세한 사항은 8장에서도 설명한다).
2부, ‘POS 시스템 공격’(4, 5, 6장)에서는 어떻게 카드 정보가 POS 장치에서 도난당할 수 있는지, 왜 지불 애플리케이션의 특정 영역이 다른 영역에 비해 더 취약한지를 설명한다.
4장, ‘40개의 숫자를 황금으로 전환’에서는 지불 카드 내부에는 무엇이 있는지와 어떻게 이러한 지식이 악당을 도와 도난 카드에서 현금을 만들어내는지를 설명한다. 4장의 목표는 획득한 ‘덤프’로부터 현금을 얻기 위한 과정을 각 단계별로 설명해 신용카드 사기가 얼마나 쉽고 간단한지 보여주는 것이다. 은밀하며 간단하지만 중요한 기법인 인코딩과 엠보싱, 그리고 가짜 카드를 티핑하는 기법을 비롯한 ‘카딩’에 관해 자세한 설명을 제공한다.
5장, ‘보안 취약 구역 침투’에서는 기존 PCI 보안 규제에서 언급하지 않는 지불 애플리케이션의 취약점에 관해 설명한다. PCI는 훌륭한 보안 지침을 정의하지만, PCI와 다른 표준들은 여전히 지불 애플리케이션의 많은 영역을 다루지 못하고 있다. 또한 핀패드 장치와 POS 지불 처리의 설계 허점과 같은 지불 애플리케이션과 직접적으로 관련이 없지만, POS의 다른 영역을 대상으로 하는 소프트웨어 이외의 공격에 관해 설명하는 ‘보너스’ 절이 있다.
6장, ‘PCI 표준으로 보호되는 구역 침입’에서는 현재의 PCI 보안 표준이 보호할 것으로 추측되는 지불 애플리케이션의 취약 영역에 관해 다룬다. PCI 표준은 ‘저장되는 데이터’의 암호화를 요구하긴 하지만, 약한 암호화 메커니즘과 허술한 키 관리와 같은 저장 공간과 관련된 다양한 취약점이 존재한다.
3부, ‘방어’(7, 8, 9장)에서는 앞서 설명한 문제에 관해 생각해보고, 어떻게 카드 소유자 정보와 지불 애플리케이션 코드 보호를 위해 강력한 암호화 도구를 채용해 지불 애플리케이션을 대상으로 하는 공격을 방어할 것인가에 관해 설명한다.
7장, ‘지불 애플리케이션 암호화’에서는 지불 애플리케이션의 암호화에 관한 맥락에서 암호화의 기본적인 사항을 설명한다. 여기에서는 8장에서 정의하는 보호 통제의 구현을 위해 필요한 기초를 제공한다. 7장의 정보는 주요 암호화 원리와 대칭과 비대칭 암호화, 전자 서명, 암호화 표준과 같은 응용에 관한 설명을 포함한다. 또한 독자에게 민감한 카드 소유자 정보 암호화와 전자 서명, 점대점 암호화와 같은 강력한 보호 메커니즘을 설계하고 이해하는 데 필요한 지식을 제공한다.
8장, ‘카드 소유자 정보 보호’에서는 어떻게 현대 암호학의 힘이 POS에 카드를 긁는 순간부터 결제되기까지 민감한 카드 소유자의 정보 보호를 목적으로 활용될 수 있는가를 설명한다. 8장에서는 점대점 암호화라고 불리는 모든 것을 보호할 수 있는 기술적인 가장 최근의 업계 동향을 비롯해 메모리에 위치하고, 전송되며, 저장되는 모든 가능한 상태에서 데이터를 암호화하는 다양한 방법을 설명한다. 또한 하드웨어와 소프트웨어, 그리고 하이브리드와 같은 점대점 암호화 구현의 다른 형태를 정의하고, 어떻게 보안에 영향을 주는지 보여준다. DUKPT 키 관리 구조와 같은 전형적인 P2PE 솔루션의 필수 요소에 관해도 설명한다.
9장, ‘애플리케이션 코드 보호’에서는 어떻게 지불 애플리케이션 자체를 소매점의 위험한 상황에서 공격으로부터 보호할 것인가에 관해 설명한다. 메모리에 존재하고, 전송되며, 저장되는 민감한 데이터를 대상으로 하는 공격은 POS 시스템에 침투하는 유일한 방법이 아니다. 9장에서는 클라이언트와 서버의 인증서와 전자 서명, 그리고 코드 난독화를 통해 애플리케이션을 어떻게 보호할 것인가에 관해 설명한다.
부록 A, ‘POS 취약성 등급 계산기’에서는 상점과 소프트웨어 판매회사, 그리고 보안 평가자에게 필요한 도구를 설명한다. 설문은 가능성과 지불 애플리케이션 보안 통제의 질을 평가함으로써 보안 위험 평가를 돕는다.
부록 B, ‘용어 설명’에서는 약어를 해석하고 지불 애플리케이션의 보안 전문가가 사용하는 용어를 정의한다.
목차
목차
- 1부 지불 애플리케이션 취약점 해부
- 1장 지불 처리 절차
- 지불 카드
- 카드 입력 방법
- MSR
- 핀패드
- 중요 요소
- 소비자(카드 소지자)
- 상점
- 인수자
- 발급자
- 카드사
- 추가 참여자
- 지불 처리자
- 지불 게이트웨이
- 더 많은 구성 요소
- 지불 처리 소프트웨어 제공자
- 하드웨어 생산자
- 지불 처리 단계
- 인증
- 결제
- 지불 처리
- 사전 인증/완료와 판매
- 무효화와 반환
- 대체 처리
- 시간제한 역전
- 특별한 처리 형태
- 지불 애플리케이션의 주요 취약 영역
- 정리
- 참고 자료
- 2장 지불 애플리케이션의 구조
- 지불 애플리케이션의 본질
- 인터페이스
- 처리 모듈
- 데이터 저장소
- 일반적인 지불 처리 흐름
- 모듈 간 통신
- 물리적 통신
- 통신 프로토콜
- 내부 통신
- 메시지 프로토콜
- 내부 프로토콜
- 통신 요약
- 지불 애플리케이션의 배치
- EPS의 개념
- 지불 스위치
- 배치 형태 비교
- 상점 EPS 배치 형태
- POS EPS 배치 형태
- 혼합 POS/상점 배치 형태
- 주유소의 지불 시스템
- 모바일 결제
- 정리
- 참고 자료
- 3장 지불 카드 산업
- PCI란?
- PCI 표준
- PA-DSS와 PCI DSS
- PA-DSS
- PCI DSS
- PA-DSS와 PCI DSS 요구 사항 비교
- PTS
- P2PE
- PCI 지침
- 토큰화에 대한 잘못된 생각
- EMV 지침
- 개발자를 위한 이동식 지불 지침
- 정리
- 참고 자료
- 2부 POS 시스템 공격
- 4장 40개의 숫자를 황금으로 전환
- 마법의 플라스틱
- 물리적 구조와 보안 기능
- 보안 기능이 실패하는 이유
- 마그네틱 선의 내부
- 트랙 1
- 트랙 2
- PAN
- 유효기간
- ISO 접두어와 BIN 범위
- PAN 검사 숫자
- 서비스 코드
- 카드 확인 값
- 정규 표현식
- 덤프 얻기: 해커
- 보안 위반
- 가장 큰 규모의 POS 유출
- 비트를 현금으로 전환: 카더
- 수익화 전략: 환전업체
- 위조 카드 생산
- 인코더
- 프린터
- 정리
- 참고 자료
- 5장 보안 취약 구역 침투
- 지불 애플리케이션의 메모리
- 램 스크래핑
- 윈헥스
- 메모리스크래퍼
- 윈도우 페이지 파일
- 스니핑
- 내부 네트워크 통신
- 네트워크 스니퍼
- 넷스크래퍼
- 추가적인 통신 취약 지점
- 기타 취약점 공격
- 애플리케이션 조작
- 하드웨어 조작
- 신기술을 목표로 한 공격
- 무결성과 가용성에 대한 공격
- 정리
- 참고 자료
- 6장 PCI 표준으로 보호되는 구역 침입
- PCI 표준이 관심을 갖는 영역
- 저장된 데이터: PCI의 진언
- 임시 저장소
- 애플리케이션 로그
- 해시로 작성된 PAN
- 안전하지 않은 암호화 키 저장소
- 디스크스크래퍼 도구
- 전송되는 데이터: PCI가 보호하는 것
- SSL 취약점
- 중간자 공격
- 정리
- 참고 자료
- 3부 방어
- 7장 지불 애플리케이션 암호화
- 빙산의 일각
- 대칭, 비대칭, 또는 단방향?
- 길이가 중요할까?
- 키 엔트로피
- 키 늘임
- 대칭 암호화
- 강한 알고리즘
- EncryptionDemo
- 대칭 암호화 구현
- 키 생성
- 블록과 패딩, 초기화 벡터
- 암호화와 복호화
- 비대칭 암호화
- 공개 키 암호화 구현
- 키 생성
- 자체 서명 인증서
- PFX 인증서 파일
- 암호화
- 복호화
- 단방향 암호화
- 단방향 암호화 구현
- 토큰 솔트 구성
- 패스워드 솔트 구성
- 패스워드 검증
- 전자 서명
- 첨부되는 서명과 분리되는 서명
- 코드와 설정 서명
- 데이터 파일과 메시지 서명
- 암호화 하드웨어
- 암호화 표준
- NIST와 FIPS
- ANSI
- PKCS
- 정리
- 참고 자료
- 8장 카드 소유자 정보 보호
- 메모리에 있는 데이터
- 데이터 유출 최소화
- 종단 간 데이터 암호화
- 전송 중인 데이터
- SSL 구현
- 암호화된 터널 사용
- 저장되는 데이터
- 안전한 키 관리
- 다중 키 컴포넌트
- KEK와 DEK
- 키 순환
- 점대점 암호화
- 점대점이 실제로 의미하는 것
- P2PE 수준
- 하드웨어 P2PE
- DUKPT 키 관리
- EMV
- 모바일과 비접촉식 지불
- 정리
- 참고 자료
- 9장 애플리케이션 코드 보호
- 코드 서명
- 인증 코드
- 코드 서명 인증서
- OpenSSL을 사용한 루트 CA 생성
- 인증서 형식
- 운영 환경 수준의 코드 서명 인증서 생성
- 타임스탬프
- 코드 서명 구현
- 설정과 데이터 파일 서명
- 첨부할 것인가, 분리할 것인가?
- 데이터 서명 인증서
- 인증서 저장소
- 분리된 서명 구현
- 첨부된 서명
- XML 파일 서명
- 첨부된 서명 구현
- 코드 난독화
- 리버스 엔지니어링
- 코드 난독화
- 보안 코딩 지침
- OWASP Top 10
- CWE/SANS Top 25
- 언어별 지침
- 정리
- 참고 자료
- 결론
- 부록A POS 취약성 등급 계산기
- 부록B 부록 B 용어와 약어 해설