2013-01-04 2 views
1

사용자 속성, 해시 된 암호, RSA 공개 키 및 RSA 비공개 키 (실제 salt + 암호로)를 관리하는 사용자 시스템이 있습니다.사용자의 RSA 키를 안전하게 생성합니다.

사용자 가입 중에 RSA 키가 생성되거나 개인 키가 본질적으로 비밀번호없이 손실되므로 비밀번호가 재설정됩니다 (사용자 admin 또는 비밀번호 분실).

현재 RSA 키는 클라이언트 컴퓨터에서 생성되고 암호로 암호화되며 (브라우저 메모리에 저장됩니다) 서버로 다시 보내져 데이터를 저장합니다.

하지만 RSA 키 생성을위한 다른 두 가지 옵션을 만들고 싶습니다. 이 두 가지 모두 로컬 시스템에서 처리되거나 (cron을 통해) 메시지 대기열 시스템에서 작동하거나 시스템이 키를 작성한 다른 서버 (대칭 암호화 된 채널을 통해)로 메시지를 보내고 시스템.

비록 이러한 방법은 RSA 생성의 하드 비트를 수행하는 유효한 보안 방법이지만 현재 나의 수수께끼는 해당 사용자에 대해 계산 된 개인 키를 보호하는 방법입니다. 암호로 개인 키를 보호한다는 것은 암호가 필요하다는 것을 의미하며 다른 모든 메커니즘은 코드에서 사용할 수있는 키가 필요하거나 양 당사자 (사용자와 시스템)가 사용할 수있는 암호화 키를 임시로 저장해야합니다. .

처음에는 시스템 RSA 키 쌍을 사용하여 사용자 암호를 저장하는 것이 좋을 것이라고 생각하고 새 키가 생성되면 사용자 암호를 가져 와서 저장소에서 삭제하고 새 개인 키를 암호화하는 데 사용했습니다. 키를 누르고 사용자와 함께 저장하십시오. 그러나이를 위해서는 시스템이 해커가 사용자 암호에 액세스 할 수 있도록 개인 키에 액세스해야합니다.

위의 방법은 내부 개인 키를 저장하는 유일한 서버 인 경우 해당 서버가 해킹 당하면 액세스 할 수 있기 때문에 별도의 보안 서버 (물리적으로도)에 명령을 보내는 경우 작동 할 수 있습니다.

해커가 전체 소스 및 데이터베이스에 액세스 할 수있는 경우에도 사용자 개인 키를 처리하고 보호 할 수있는 방법에 대한 제안 사항이 있습니까?

답변

1

시스템의 보안 측면에 대해서는 언급하지 않겠습니다. 그러나 개인 키 저장 아이디어를 읽은 후 얼마 전 Charlie Kaufmann과 Radia Perlman의 server-side private key storage에 읽은 종이를 상기 시켰습니다. "... 우리는 Alice의 암호가 짐작할지라도 안전하다는 것을 제안합니다 ..."

이 논문은 1999 년에 작성되었으며, 개념에 대한 더 많은 분석 및 개선을 둘러 봐야 함을 의미합니다.

+0

건배, 읽는 중입니다. 보안에 대해 언급하지 않습니까? 그게 좋든 나쁘니? 저는 지난 주 동안이 프로세스에 대해 생각 해왔고 코드와 데이터베이스가 해커에게 액세스 할 수 있다고하더라도 데이터를 안전하게 유지합니다. 가장 약한 부분은 키의 초기 생성입니다. – topherg

+0

보안에 관해서는 언급하지 않았습니다. 내 의견으로는 SO의 짧은 Q & A 형식에서는 책임감있게 수행 할 수 없습니다. 나는 다른 사람들의 의견을 심어주지 않지만, 많은 영리한 사람들이 훌륭한 통찰력을 가지고 여기에 있습니다. –

+0

그건 아주 좋은 실용적인 정책이지만, (데이터베이스 항목을 제외하고) 기록에서 벗어나, 당신의 의견으로는, 시스템의 보안이 정상적으로 보이는지, 비참하게 부적절한 것 같습니까? – topherg

관련 문제