나는 회사와 고객의 데이터베이스가 있습니다. 데이터베이스는 고객이 주소 X에 거주하는 고객이있는 질문에 대답 할 수 있어야합니다. 이는 일반적으로 매우 직접적으로 구현하는 것이 일반적입니다.몇 백만 항목의 보안 해시
내가 피하고 싶은 것은 공격자가 어떻게 든 모든 회사 - 고객 관계를 찾을 수 있다는 것입니다. 이 데이터베이스는 웹 서버에 상주하며 모든 데이터의 무차별 다운로드를 피하기 위해 쿼리가 제한됩니다.
그러나 서버가 손상되어 공격자가 전체 데이터베이스 및 서버에 저장된 개인 키에 액세스 할 수 있다면 어떻게해야합니까? 공격자가 회사 목록 또는 클라이언트 목록을 찾을 수는 있지만 클라이언트와 관련된 회사를 찾아 낼 수 없어야하며 클라이언트의 주소를 검색 할 수 없어야합니다.
클라이언트는 고유 한 ID가 아닌 주소로 식별됩니다. 우리 나라에는 약 500 만 개의 서로 다른 주소가 있습니다. 주소를 보호하기 위해 보안 해시를 사용하지만 5 백만 개의 해시를 계산하고 해시에서 주소로 매핑을 만드는 것은 매우 쉽습니다. 해시가 소금에 절인 경우에도.
내가 생각할 수있는 유일한 것은 모호함을 통한 보안입니다. 해시 함수가 명확하게 인식 할 수없고 컴파일 된 코드로되어 있는지 확인하고 공격자가이 모든 것을 파악할만큼 충분히 똑똑하지 않기를 바랍니다.
이 작업을 실제로 안전하게 할 수있는 방법이 있습니까?
EDIT : a3_nm 및 Nick Johnson의 의견은 물론 정확합니다. 공격자가 모든 데이터에 액세스 할 수 있다면 보안을 설정할 수 없습니다. 이 (명백한) 결함을 지적 해 주셔서 감사합니다.
그래서 데이터베이스에 저장되지 않은 것이 필요합니다. 회사와 클라이언트 만 자신의 데이터에 액세스 할 수 있도록하기 위해 자신의 암호로 암호화 할 수 있습니다. 따라서 회사의 고객 목록은 해당 회사의 암호로 암호화되며,이 암호는 서버에 저장되지 않으며 각 요청과 함께 보내야합니다. 공격자가 암호가 포함 된 요청을 가로 챌 수 없다고 가정하는 것이 좋습니다.
또는이 사고 방식에도 또 다른 (명백한) 결함이 있습니까?
데이터가 노출되어있는 경우 공격자가이 정보에 액세스하지 못하도록하고 싶지만 여전히 자신이 할 수 있기를 원하십니까? 불가능한 이유를 지적하지 않아도되기를 바랍니다. –