2011-11-10 2 views
1

사용자가 연결 해제 모드에서 내 CouchApp을 사용할 수있게하려면 암호화 키를 로컬로 저장해야합니다. 전송할 데이터는 매우 민감하며 법으로 암호화해야합니다. 그러나 연결이 끊긴 상태에서 데이터를 완전히 액세스하고 싶습니다. 현재 우리는 암호 키 생성기를 가지고 있지만, 사용자가 레코드를보고 싶을 때마다 암호를 입력해야합니다. 또한 숙련 된/고급 사용자가 잠재적으로 암호화 키에 액세스 한 다음 로컬 데이터베이스에 액세스 할 수 있으므로 안전하지 않은 것 같습니다. 기본적으로 누군가가 연결이 끊어진 보안 모델에 대한 경험이 있는지 또는 보안을 유지하면서 액세스를 허용하는 방법에 대한 지침을 제공 할 수 있는지 궁금합니다.연결 해제 모드에서 로컬로 암호화 키 저장

답변

2

클라이언트가 데이터베이스에 직접 연결하는 경우 모든 사용자가 전체 데이터 세트에 액세스 할 수 있습니다. 분명히 당신은 모든 것을 가지고 당신의 사용자를 신뢰합니다. 이 기능은 가장 보편적 인 데이터 보호 모델을 손상시킵니다. 침입자는 SQL 인젝션이나 안전하지 않은 직접 객체 참조를 필요로하지 않으며, 모든 것을 제공하기 때문에 그는 무엇이든 잡을 수 있습니다.

나는 암호로 어떻게 문제가 해결되는지 보지 못합니다. 그것은 교과서 CWE-602 violation처럼 보입니다.

+0

CouchApp에 익숙하십니까? 이 배후의 아이디어는 데이터베이스가 로컬에서 제공되고 마스터 복사본에서 복제된다는 것입니다. 사용자는 암호없이 데이터베이스에 직접 액세스 할 수 없으며 데이터는 로컬로 암호화됩니다. 그러나 이것은 어떻게 든 해독 키 또는 적어도 부분적으로 로컬에 저장해야한다는 것을 의미합니다. (암호 메소드에서 부분 키 gen을 계속 사용하는 경우). – Jlange

+0

@Jlange 암호화가 그렇게 작동하지 않는다. 장치 사용자는 개발자보다 더 많은 제어 권한을가집니다. 침입자가 찾을 수없는 비밀을 숨길만한 곳이 없습니다. ** 당신은 모든 것을 가진 사용자를 신뢰하고 있습니다. ** – rook

+0

@Jlange 장치가 모든 것을 덮어 쓰는 데이터베이스의 복사본을 업로드 할 수 있습니까? 농담 아, 정말 안좋아. – rook