2011-10-25 4 views
0

중요한 데이터를 클라이언트 측에서 서버 측으로 전송 한 다음 AWS Simple Storage 버킷으로 전송해야하는 프로젝트를 계획 중입니다.양식 데이터의 클라이언트 측/서버 측 암호화 우수 사례

  1. SSL/HTTP (S), 데이터가 다음 내 웹 서버에 PHP 스크립트에 의해 검색되는 웹 양식을 통해 안전하게 게시 할 수 사용 :

    이것은 내 계획이다.

  2. 서버에서 데이터를 수신하면 PHP 스크립트는 PHP 용 AWS SDK를 사용하여 서버 측에서 AES-256-AWS Encryption을 사용하여 데이터를 암호화하는 지시문을 사용하여 즉시 AWS로 전송합니다.

문제는 1 단계와 2 단계 사이에서 처리하기 위해 먼저 웹 서버에 충돌해야하기 때문에 데이터가 암호화되지 않는다는 것입니다. 스크립트를 AWS로 보내기 전에 서버의 텍스트 파일에 데이터를 쓰게 한 다음 전송 된 후 즉시 서버에서 임시 파일을 삭제할 생각입니다. 이 일에 어떤 위험이 있습니까? AWS Simple Storage 버킷에 실제 파일이 아닌 파일 스트림을 보내 서버에 임시 파일을 쓸 필요가 없습니까?

나는 100 % 암호화 된 데이터 전송이라는 원래 목표를 달성하는보다 나은 방법을 간과하고 있습니까?

+0

인스턴스에서 S3에 대해 쓰는 경우 S3에 액세스하는 데 사용할 수있는 인스턴스에 AWS 자격 증명이 있음을 의미합니다. AWS가 S3의 내용을 암호화하더라도 인스턴스를 크랙하는 사람은 누구나 AWS 키를 사용하여 데이터에 계속 액세스 할 수 있습니다. S3 버킷에 대한 쓰기 전용 권한이있는 IAM 자격 증명을 사용하면 위험을 조금 줄일 수 있습니다. –

+0

시스템에 스와핑이 발생하면 메모리에 저장된 내용을 디스크에 쓸 수도 있습니다. –

+0

어떤 종류의 클라이언트입니까? 가장 쉬운 대답은 암호화 된 것입니다. – imichaelmiers

답변

2

디스크에 무엇인가 커밋하고 있다면, 충분히 동기를 부여받은 공격자가 드라이브 플래터에 부딪히는 순간 그 파일을 도용 할 수 있습니다. 대부분의 현대적인 디스크/디렉토리에 대한 변경 사항을 알리는 것은 매우 사소한 일입니다 OS를 사용하여 임시 디렉토리 (해당 파일을 쓰는 곳)를 간단하게 모니터하고 복사 할 수 있습니다.

파일을 즉시 삭제하더라도 해당 파일은 다양한 캐시의 스토리지 시스템에 여전히 있고 디스크 플래터의 "언제든지 덮어 쓸 수 있습니다"섹터입니다. 데이터가 다른 것으로 덮어 쓰기 전까지는 더욱 헌신적 인 공격자가 삭제 후에도 파일을 검색 할 수 있습니다.

그 외에도 충분한 액세스 권한을 가진 사람은 PHP 프로세스의 메모리 공간에 도달하여 거기에서 파일을 추출 할 수 있습니다.

그래서 .. 스스로 물어야하는 질문은 "내 위협 모델은 무엇입니까?" 그리고 "이 파일에 어떤 데이터가 저장되어 있습니까?"

데이터에 신용 카드 번호가 포함되어 있으면 이미 PCI 표준을 위반하고 있습니다. 참조 번호는 NEVER이며 일반 텍스트 형식이나 읽을 수있는 형식으로 저장할 수 있습니다. 당신은 표준 유닉스 시스템 강화에 의존하는만큼 웹 서버의 물리적 보안을 신뢰하지 않는 경우

+0

요약 해 주셔서 감사합니다. 정보는 본질적으로 CC 정보가 아닌 개인 정보이므로 PCI에 대해 걱정할 필요가 없습니다. 그것은 클라이언트와 컨설턴트 커뮤니케이션 간의 기밀성에 관한 것입니다. 나는 회사가 실제로 해커에 대한 목표의 큰, 훨씬 덜 헌신적 인 사람은 아니지만 가능한 한 부지런히되고 싶다고 생각합니다 ... – user604138

0

하지 암호화 전문가, 그래서 거기에 도움이되지 수 있지만 ...

, 당신은 아마 더 나은 얻을 필요 웹 서버.

중간 서버에서 사용하는 암호화는 데이터를 해독하여 AWS로 전송하기 위해 해독 키를 서버에 저장해야한다는 사실 때문에 어려움을 겪습니다. 키가 훔칠 수있는 경우 데이터는 암호화 된 경우에도 안전하지 않습니다. 훔칠 수 없다면 데이터가 어떻게 도용 될 수 있습니까?

디스크에 기록 할 가능성이없는 RAM 만 사용하도록하는 것은 까다 롭고 루트 액세스 권한을 가진 사람이 암호화 된 데이터를 웹 서버 프로세스의 RAM에서 직접 읽을 수 있다는 사실을 무시합니다.

누군가 루트가되면 키가 다른 곳에 저장되어 있지 않으면 실제 방어가되지 않으므로 브라우저의 공개 키와 AWS의 개인 키를 사용하는 것이 좋습니다. 반 암호 해독에 대해서는 잊어 버리십시오. AWS가 그렇게 할 수 없다면, 그것을 사용하지 마십시오. This post은 튜토리얼 here을 사용하여 제안했음을 알 수 있지만 Java를 사용하여이를 사용해야합니다.