2012-08-06 4 views
0

내 서버를 손상시킬 위험없이 내 서버에 저장 한 사용자 데이터를 암호화하고 싶습니다. 다음과 같은 좋은 방법이 있습니다 :사용자 데이터를 암호화하는 좋은 방법입니까?

각 사용자의 암호는 GPG 키 쌍의 암호입니다. 모든 사용자의 데이터는 데이터베이스에 저장되기 전에 공개 키를 사용하여 암호화됩니다. 암호는 버려지고 세션 기간 동안 만 키 쌍이 보관되므로 암호가 제공 될 때만 데이터를 암호 해독 할 수 있습니다.

+0

비대칭 키 암호화는 일반적으로 이러한 방식으로 사용되지 않습니다. 대칭 키 암호화 사용을 고려하십시오. –

답변

3

서버를 손상시키는 사람의 관점에서 데이터가 안전하다는 것을 확인하는 유일한 방법은 사용자가 해독 할 때마다 키를 제공해야 할 때입니다.

다른 기술은 악용 될 수있는 약점을 남겨 둡니다.

하지만 당신은 다른 방법 (I는 사용자가 암호를 제공 할 때 의미)도, HTTPS 및 대한 preventions 세션 공격, 크로스 스크립팅 등

을 사용하면 특정 하드웨어 보안이없는 경우 확인해야 (뱅크 토큰과 같이) 시간에 따라 의사 난수를 생성 할 때와 같이 여분의 보호 라인을 수행하는 것과 같이 가장 좋은 아이디어는 사용자와 키를 유지하거나 다음과 같은 세 번째 파트 스토리지를 사용하는 것입니다. Azure 또는 Amazon에서 SQL로 더 큰 보안.

필자의 서버가 손상된 경우에도 내 암호화 키를 넣어 데이터가 흐려지는 지점에 대해 생각한 후에 동일한 접근 방식을 사용했습니다. 내가 찾은 유일한 안전한 방법은 "사용자와 함께"입니다.

+1

이렇게하면 사용자가 암호를 잊어 버렸을 때 (또는 적어도 사용자에게) 문제가 발생합니다. 데이터가 건강 기록과 같은 것이라면 적절하지 않을 수 있습니다. 한 사용자 만 데이터를 볼 것으로 예상되며 다른 시간에 볼 필요가 없다면 괜찮습니다. –

+0

나는 가용성에 대한 보안에 관한 오래된 문제에 동의한다. 해당 데이터를 잃어 버릴 수없는 경우 키를 수동으로 오프라인 컴퓨터 또는 장치에 복사하는 것과 같은 일부 장애 조치 방법이 있어야합니다. 또는 pendrive와 같은 각 사용자에 대해 토큰을 만들 수 있습니다. 이 "내 암호화 키 넣기"문제는 응용 프로그램과 시스템 사용에 따라 매우 복잡한 문제입니다. – repeatdomiau

1

귀하의 접근 방식은 오직 하나의 공격으로부터 사용자를 보호합니다 : 데이터베이스를 도용합니다 (키를 올바르게 암호화 한 경우에만). 서버가 해킹당한 경우 SSL 개인 키를 가져 와서 사용자의 키로 네트워크 트래픽을 청취 할 수 있습니다.

관련 문제