4

우리는 공개 키 암호화를 사용하여 클라이언트 측에서 암호화 및 암호 해독을 수행하면서 암호화 된 정보 문자열을 저장할 데이터베이스 시스템을 설계하고 있습니다. 키가 변경된 경우 모든 레코드 클라이언트 측을 다시 암호화해야하므로 매우 실용적입니다. 원본 (이전) 암호 해독 키 또는 메시지 텍스트를 노출하지 않고 서버 측에서 수행 할 수있는 방법이 있습니까? ,일반 텍스트 공개없이 암호화 키 변경

EO (m)이 암호문은

T(Eo(m)) = En(Do(Eo(m)))

이, EO/오래된 술집/PRIV 키 쌍을 수행

내가 무엇을 난 후 것은이 같은 연관 암호 추측 En은 새로운 pub 키이고, m은 메시지 텍스트이고, magical reencryption 기능입니다. 편집 : T는 clientside를 계산 한 다음 사용할 서버로 전송됩니다.

+0

[crypto.stackexchange.com] (http://crypto.stackexchange.com/)에서 더 좋을 수도 있지만 커뮤니티가 얼마나 큰지 잘 모르겠습니다. –

답변

1

어쨌든 이전 키를 소급해서 사용할 수 없습니다. 이전 데이터와 이전 키에 대한 액세스 권한이있는 사용자는 자신이하는 일과 상관없이 데이터를 해독 할 수 있습니다.

나는 단순히 열쇠 고리를 유지하는 것이 좋습니다. 새 키를 링에 추가하고 활성화 된 것으로 표시하십시오. 만료 된 이전 키를 표시하십시오. 만료 된 키로 암호화 된 데이터를 찾으면이를 활성 키로 다시 암호화하도록 클라이언트를 코드화하십시오. 필요한 것은 구현 요구 사항의 세부 사항에 달려 있습니다.

원하는 경우 이전 키로 암호화 된 데이터를 스윕하고 다시 암호화 할 수 있습니다.

어쨌든 이전 키의 노출을 제거 할 수 없습니다. 예전 키로 암호화 된 데이터의 백업 또는 사본을 찾을 수있는 사용자는 이전 키가있는 경우이를 해독 할 수 있습니다. 암호화 키는 영원히 보호되어야합니다. 또는 Wikileaks 외교 케이블을 정보 공개 자의 이름을 그대로 공개 한 대 실패를 가져와야합니다.

+0

David에게 감사드립니다. 클라이언트가 데이터베이스에 액세스 할 수있는 권한이 없기 때문에 개인 키가 손상되면 피해가 제한되고 모든 레코드를 즉시 다시 암호화 할 수 있습니다. –

+0

문제는 키를 손상시킨 사람이 이미 암호화 된 데이터를 가지고 있기 때문입니다. [키를 영원히 보호해야하거나 해당 키로 보호 된 데이터가 손상되었습니다.] (http://www.google.com/hostednews/afp/article/ALeqM5iCMb6pr6EYGK3d57io_C8yfpIG2g?docId=CNG.faa7076ee940283688916c2ee187655c.01) –

+0

이 문제를 위험 관리 문제로 생각하고 있습니다. 개인 키를 손상시키고 데이터베이스를 완전히 위반하거나 백업을 유지할 가능성이 각각 개별적으로 낮습니다. (백업은 어쨌든 별도의 키로 암호화되어 두 번째 암호화 계층을 제공함) –

0

보안 경계를 생각해보십시오. 서버가 손상되는 것에 대해 걱정이된다면, 복제를 수행 한 더 단단한 서브 시스템을 만드는 것을 고려하십시오. 매우 엄격하게 검증 된 링크 프로토콜 (예 : 직렬 회선) 또는 전용 하드웨어 보안 모듈을 통해서만 접속 된 비 네트워크 연결 서버로이 작업을 수행 할 수 있습니다. 그러나 이와 같이하면 키 보호 방법에 대해 생각해야합니다. 공격자가 서버에서 일시적인 일반 텍스트를 훔칠 수 있다면 해당 서버를 보호하는 키를 훔칠 수 있습니까?