2009-07-28 5 views
10

흥미로운 암호화 문제가 있습니다. 나는 그것이 풀릴 수 있는지 모르지만 여기에 간다 :관리자에게도 안전한 양방향 DB 암호화

데이터베이스는 민감한 사용자 정보를 포함해야한다. 따라서 사용자 정보는 암호화되어야합니다 (양방향 암호화). 사용자는 로그인/패스워드를 가지며 이것들은 양방향 암호화에 사용될 수 있습니다. 이제 암호화는 데이터베이스 테이블을 보는 관리자조차도 사용자 정보를 이해할 수 없도록 설계되어야합니다.

그러나 사용자가 암호를 잊어 버린 경우를 고려하여 디자인해야합니다. 암호가 암호화에 사용되면 암호를 잊어 버리면 정보가 손실되었음을 의미합니다. 스크립트에서 하드 코딩 된 키를 사용하여 양방향 해시 대신 양방향 알고리즘을 사용하여 사용자 암호 자체가 데이터베이스에 저장되는 경우 관리자는 스크립트를보고 하드 코딩 된 키를 찾을 수 있습니다 (관리자는 물론 액세스 권한이 있음) 스크립트로).

누구나이 방법을 알 수 있습니까?

추신 : 이것은 실제 문제입니다. 우리 회사는 절대 보안 광신자 (ISO 27001 및 모두)이며 위에서 언급 한 기능을 갖춘 시스템을 설계하도록 위탁 받았습니다. 그건 그렇고, 나는 PHP 스크립트와 MySQL을 사용하고있다.

EDIT : 이전에는 명확하지 않았던가, 사용자는 매일이 사용자 정보를 보거나 편집해야합니다.

+0

질문 : 데이터 암호화는 얼마나 강력해야합니까? 데이터 난독 화 (데이터가 클리어 텍스트로 저장되지는 ​​않지만 사용자가 해독 할 수있는 약간의 노력만으로도 충분 함)를 의미합니까, 아니면 실제 * 강력한 암호화 체계를 원하십니까? – Nicolas

+0

강력한 강력한 암호화 - 데이터가 발견 될 가능성 없음! –

+1

글쎄, 데이터를 해독 할 수 없지만 동시에 해독 된 데이터를 사용자에게 표시하는 기능이 필요하다면 ... – Nicolas

답변

15

원하는 것은 복구 에이전트입니다. 모든 데이터를 두 번 암호화 : 사용자 키로 한 번, 복구 에이전트 (공개) 키로 한 번. 적어도 후자는 비대칭이어야한다. 정식 액세스 프로토콜 (예 : 4 개의 눈 원칙)을 사용하여 개인 안전 금고에 복구 대행사 키를 보관합니다. 일반적으로 관리자는 암호화 된 데이터에 액세스 할 수 없지만 사용자가 키를 잃어 복구가 허가되면 복구 키가 생성됩니다.

복구 에이전트의 키를 암호화하여 m-out-of-n 사람들이 사용에 동의해야하는 방법도 있습니다.

편집 : 구현 전략 중 하나는 모든 것을 두 번 암호화하는 것입니다. 또는 독립적으로 복구 할 수 있어야하는 각 데이터 세트에 대해 신선한 대칭 키를 작성하고 해당 키만 두 번 암호화하십시오. 원본 데이터는 세션 키로 만 암호화됩니다.이러한 접근 방식은 여러 독자 독자에게까지 확장 될 수 있습니다. 판독기 당 비대칭 키가 필요합니다 (세션 키를 모든 판독기의 공개 키로 암호화 할 수 있습니다 - 하나는 복구 에이전트).

해당 스키마가 구현 된 Microsoft의 Encrypting File System에서 용어를 복사했습니다.

+0

간단하고 우아한 –

+0

좀 더 읽을 수있는 참고 링크를 제공해 주시겠습니까? –

+0

더 나아가, 모든 것을 두 번 암호화하지 않으면 사용자 자신이 사용자 정보를 검색/편집 할 수 없다는 것을 의미합니까? –

1

할 수 없습니다.

모든 경우 누군가 암호를 해독하기 위해 키를 다시 만들 수 있어야합니다. 옵션을 고려해 보겠습니다.

  1. 키가 서버에 저장되어 있습니다. 실패 : 관리자가 액세스 할 수 있습니다.
  2. 사용자의 암호로 암호화 된 키. 실패 : 사용자가 잊어 버릴 수 있습니다.

해결 방법은 관리자가 액세스 제한을 완화하고 불가능한 대신에 매우 어렵게 만드는 것입니다. 예를 들어 데이터가 사용자의 암호로 암호화되어 저장된 키로 암호화되었지만 관리자가 일반적인 이벤트 과정에서 액세스 할 수없는 다른 시스템에서 해당 키가 에스크로 된 경우 (다른 관리자 만 액세스 할 수 있습니까?) 암호를 잊어 버린 사용자로부터 복구 할 수는 있지만 (Esc 키에 액세스 할 수있는 사람의 개입으로) 관리자는 데이터베이스를 다운로드하고 모든 데이터를 읽을 수 없습니다.

+0

하지만 은행과 같은 매우 안전한 시스템이 작동하는 방식은 무엇입니까? 나는 누군가가이 문제를 분명히 깨뜨렸을 것이고 은행이 강력한 후보자로 여겨 질 것이기 때문에 나는 이것을 묻는다. –

+0

은행 등 암호화를 위해 하드웨어 보안 모듈을 사용합니다. –

+3

나는 Ghostbusters 시나리오에 동의합니다. 키 마스터를 게이트 키퍼와 분리하여 사용자 데이터를 제어하는 ​​사람들과 사용자 계정 암호를 제어하는 ​​사람들을 분리하면 불량 직원을 단일 실패 지점으로 생각하지 않도록 할 수 있습니다. 대안은 총 양성자 반전이기 때문에 좋습니다. – zombat

관련 문제