2013-06-10 3 views
0

은 8:00이며 해커 (또는 PRISM!) 은 이미 내 세부 정보가있는 고객 데이터의 전체 사본을 가지고 있습니다. 데이터가 이미 읽을 수 있다고 가정하면 개인 정보를 어떻게 보호 할 수 있습니까?클라우드의 개인 데이터에 대한 지식/클라이언트 측 암호화를 구현하는 방법은 무엇입니까?

PRISM에 관한 현재의 추문이 있기 전에 저는 고객 데이터베이스의 특정 필드 (이름, 전자 메일, 암호 등)를 어떻게 보호하는지 생각하고있었습니다. 기본적으로 암호를 암호화하는 키가있는 보안 서버가 있습니다. 그러나 지금, 어떻게 그 반대입니까?

iSQL에 데이터를 sqlite로 저장합니다. 거기에서 데이터를 읽을 수 있습니다 (즉,이 시나리오에서 클라이언트는 완전한 액세스 권한이 있고 "신뢰할 수있는"것으로 가정되지만 서버는 그렇지 않습니다.)는 Client-Side encryption입니까?).

클라이언트에 Name= John Doe, 서버에 Name=*****을 갖고 싶습니다. 서버가 디코딩 할 수 없습니다. 고객 장치 만.

고객은 동일한 데이터에 액세스하는 여러 장치를 보유 할 수 있습니다. 서버의 모든 데이터를 암호화하는 것은 실현 가능하지 않습니다 (성능 및 기타 비즈니스 로직에 대한 내용 인 < - 주로이 부분). 데이터의 큰 부분은 숫자가 아닌 개인적인 데이터입니다.

여기에 동의하는 것이 필요합니다. 최종 사용자가 사용하기 쉽고 데이터 보호를 가능한 한 많이 늘리십시오. (클라이언트 장치에 대한 액세스가 데이터에 대한 액세스를 제공한다는 것을 알고 있지만, "인기있는 서비스 X가 해킹 당했고 수백만 개의 암호가 악의적 인 사용자에게 해킹당했습니다! "라고 말하면서 단일 고객에 대한 공격이 아닙니다.

답변

0

서버에 데이터가 없도록하려면 서버가 데이터를 가져 오지 않도록해야합니다. 데이터를 전송해야합니다. 클라이언트는 해당 클라이언트에만있는 키 자료를 사용하여 암호화를 수행해야합니다 (예 : 키가 서버로 전송 된 경우 보호가 제공되지 않음).

여러 장치에서 액세스 할 수 있도록하려는 경우 데이터를 암호화 한 다음 고객이 알고있는 것과 암호화 할 수있는 키를 기반으로해야합니다. 암호 또는 패스 코드와 같은 장치. 여러 장치가 데이터에 액세스 할 수있게하려면 장치 ID 나 그와 같은 것을 기본으로 설정하면됩니다.

암호화는 "기계적 영향"입니다 - 작은 비밀 (키)을 사용하여 큰 비밀 (일반 텍스트)을 보호 할 수 있습니다.

성능면에서 볼 때, 특히 AES-NI를 지원하는 플랫폼에서 서버 성능의 암호화와 암호 해독이 2 % 이상 차이가 난다면 놀랄 것입니다.

(공격자가 이미 데이터가있는 경우 물론, 그들은 데이터를 가지고있다.이 당신이 사후에 할 수있는 일은 없다)

+0

이 작업을 수행하는 방법에 대한 몇 가지 예를 존재? 아니면 지침? – mamcx

+0

@mamcx : 1. 사용자에게 키를 요청하십시오. (또는 암호). 2. AES로 암호화하십시오. 3. 암호화 된 블록을 전선으로 보냅니다. –

+0

그래서 나는 장치에서 "비밀 키"를 요구하고 그것을 keychan에 저장하고 crypt로 사용합니다 ... – mamcx