it-swarm-korea.com

PCI 암호화 키 관리

(전체 공개 : 나는 이미 여기와 StackOverflow에 적극적으로 참여하고 있지만, 분명한 이유 때문에이 특정 질문을 익명으로 묻기로 선택했습니다).

저는 현재 몇몇 전문화 된 산업에서 중소 기업을 관리하기 위해 상업적으로 판매되는 소프트웨어를 생산하는 소규모 소프트웨어 상점에서 일하고 있습니다. 이러한 산업은 고객을 대상으로하기 때문에 소프트웨어의 많은 부분이 고객 정보 저장 및 관리와 관련되어 있습니다. 특히, 고객 신용 카드 정보의 저장 (및 보안). 물론 PCI 준수도 제공됩니다.

간단히 이야기하자면, 나는 왜 어떤 일들이 그랬는지에 대한 몇 가지 질문을 남겼습니다. 불행히도 현재 많은 자원이 없습니다. 이것은 very 소규모 상점 (유일한 다른 정규 직원과 마찬가지로 소유자에게 직접보고)이며 소유자에게는 이러한 질문에 대한 답변이 없으며 이전 개발자는 ... 오류 ... 사용할 수 없습니다.

문제 1 : 주기적 재 암호화

현재 소프트웨어는 다음 조건 중 하나에 해당하는 경우 데이터베이스의 모든 중요한 정보 (기본적으로 신용 카드 번호 및 사용자 암호)를 도매로 다시 암호화하라는 메시지를 표시합니다.

  1. 데이터베이스에는 암호화되지 않은 민감한 정보가 있습니다 (예 : 비즈니스 오브젝트 대신 수동 데이터베이스 명령문을 통해 추가됨). 일반적인 소프트웨어 사용 중에는이 문제가 발생하지 않아야합니다.

  2. 현재 키가 특정 기간 이상 사용되었습니다. 12 개월이라고 믿지만 확실하지 않습니다. 여기서 핵심은 "만료"라는 것입니다.

이것은 PCI를 다루는 상용 솔루션 개발에 대한 첫 번째 길이므로, 불행히도 관련 관행에 대해 교육받지 못했습니다. 정기적 인 키 업데이트를 요구하거나 권장하는 PCI 준수 측면이 있습니까?

이것은 최종 사용자에게 왜 실행하라는 메시지가 표시되는지 묻는 최종 설명을 제공하지 않는 것 외에는 나에게 큰 문제가 아닙니다.

질문 1 : 주요 만기 표준의 개념입니까, 그렇다면 업계 표준입니까 아니면 PCI의 요소입니까?

문제 2 : 키 저장소

여기 내 진짜 문제가 있습니다 ... 암호화 키는 데이터베이스에, 난독 화되어 저장됩니다. 키는 왼쪽과 오른쪽에 약간의 가비지 바이트로 채워지고 일부 비트는 꼬집어 있지만 기본적으로 진취적인 사람이 (점 거트 화 된) 코드를 검사하여 저장된 키를 실제 키로 전환하는 데 사용되는 패턴을 결정하는 것은 없습니다. 그 키를 사용하여 amok를 실행하십시오. 이것은 나에게 끔찍한 관행처럼 보이지만, 이것은 이것이이 업계의 사람들이 취한“그린과 곰”관행 중 하나가 아닌지 확인하고 싶습니다. 이러한 공격을 막을 수있는 대체 방법을 개발했지만 여기에서 온 전성 검사를 찾고 있습니다.

질문 2 :이 키 저장 방법은 클라이언트 코드에 존재하는 난독 화 방법을 사용하여 데이터베이스에 키를 저장하는 것입니까?

나를 믿으십시오, 나는 무료 조언이 내가 지불 한 모든 페니의 가치가 있다는 것을 알고 있습니다. 여기 아무도 변호사 (또는 적어도 법적 조언을 제공하지 않습니다), 경고 emptor 등은 아니지만, 나는 찾고 있습니다. 모두가 제공 할 수있는 모든 입력에 대해 미리 감사드립니다!

22
Unicorn Bob

문제 1 : 비밀번호 암호화에 대해 언급했습니다. 첫째, 왜 암호의 해시가 아닌 암호가 사용됩니까? 키 순환/만료에 관해서는 이와 같은 정책을 보았습니다. 키를 더 오래 사용하면 (그리고 더 많이 사용하면) 키가 구성/발견 될 위험이 높아집니다. Windows DPAPI와 같은 일부 시스템은 자동으로 키를 만료하고 SSL 인증서에는 만료 날짜가 있으며 그 이후에는 많은 시스템에서 새 데이터를 암호화하는 데 사용하지 않습니다.

문제 2 : 그렇습니다. 엄청나게 나쁘다.

PCI 준수 감사 사양 PAN 상태 "Triple-DES 128 비트 또는 AES 256 비트와 같은 키 관리 프로세스 및 절차 관련 강력한 암호화 "

회전은 키 관리 프로세스의 일부로 주장 될 수 있으며 데이터에서 키를 안전하게 저장하는 것은 키 관리 프로세스의 일부입니다.

감사 사양의 섹션 3.6.4가 더 나아가서 상태

주기적 키 변경

  • 관련 응용 프로그램에서 필요하고 권장하는 경우 (예 : 재키 잉)
  • 바람직하게는 자동적으로 적어도 매년
9
blowdart

아직 정보가 없으므로 PA-DSS 및 PCI-DSS 문서 를 살펴 보는 것이 좋습니다. 요구 사항에 관한. 귀하의 소프트웨어가 PA-DSS 인증을 받았다면 이러한 요구 사항에 대한 기대치에 대한보다 구체적인 정보를 제공해야하는 QSA를 보유하게 될 것입니다.

데이터 암호화 관리 측면에서 응용 프로그램 수준의 암호화를 얻는 데 사용하는 데이터베이스 엔진의 내장 기능을 사용하는 것이 좋습니다. 바로 까다로울 수 있습니다. 옵션 here 에 대한 좋은 논문이 있습니다.

7
Rory McCune

문제 # 1 : 주기적 재 암호화
(리키 잉이라고도 함). 예, 필수는 아니지만 정상입니다.
특히, 만료 키 필요하며 PCI에 필요합니다. 일 년에 한 번 이상, 더 빨리 할 수있는 옵션이 있습니다.
이 문제를 해결하는 방법은 또 다른 문제입니다. 예를 들어 2010 년 키가 만료되면 해당 키로 암호화 된 모든 데이터를 어떻게 처리합니까?
하나의 솔루션은 모든 키의 기록과 각 데이터에 대한 "키 버전"을 저장하여 암호를 해독 할 때 사용할 키를 알 수 있도록하는 것입니다. (물론 새 키만 사용하여 암호화합니다.) 다른 해결책은 위에서 언급 한 키 다시 작성입니다. 각 키마다 하나만 (키 다시 입력하는 동안 제외) 만 있고 만료시 이전 키로 암호를 해독하고 새 키로 다시 암호화하십시오. 하나.

문제 # 2 : 키 저장소
간단히 나쁘고 암호화는 (아직 아니지만 거의) 무의미합니다.
일반적인 적절한 키 관리 기술, 특히 PCI는 엄격한 키 관리 정책 및 절차를 정의합니다. 그 중 일부는 기술적 인 것입니다. 암호화 키 (EK)는 강력한 암호화를 사용하여 암호화해야합니다 (예 : DPAPI; 예를 들어, 키 암호화 키 (KEK)에 대한 액세스는 문서화되어야합니다. 그 중 일부는 수동입니다. KEK의 분할 지식/이중 제어.

@Rory가 말했듯이 PA QSA와 이야기하십시오.없는 경우-하나를 얻으십시오.

7
AviD

나는 두 번째 질문에 가장 관심이 있습니다. 키 암호화 키로 암호화하여 저장하더라도 암호화 키를 암호화 된 데이터에 가깝게 저장하는 이유를 이해하는 데 어려움을 겪었습니다.

내가 생각할 수있는 유일한 이유는 투명한 암호화/암호 해독을 수행하기 위해 데이터베이스 암호화 인프라/기능을 사용하기 때문입니다. 그러나 이것은 데이터베이스 공급 업체에 따라 다릅니다 (이전 게시물로 링크 된 문서에도 명시되어 있음).

암호 또는 HSM 장치로 보호되는 다른 저장소에 키를 보관하는 것이 좋습니다.

4
Dan Corneanu

문제 1 : 12 개월 만에 놀랐습니다. 우리 서버에는 3 개월마다 새로운 키/암호가 필요합니다. 신용 카드는 없지만 관련이 없습니다. PCI와 호환되는지 확실하게 말할 수는 없지만 합리적인 방법이라고 생각합니다. 그렇지 않으면 그렇지 않습니다.

문제 2 : 매우 제정신이 들립니다. 데이터 바로 옆에 난독 화되지 않은 키를 저장하지 않았습니다. "제발, 해킹 해봐"라는 열린 도전이다.

1
Joris Meys