2009-03-30 3 views
4

저는 사람들이 (SSL 연결을 사용하여) 텍스트를 입력하고 DB에 저장하기 전에 암호화 될 수있는 웹 응용 프로그램을 만드는 것에 대해 생각했습니다. 목표는 사용자 만 해독 할 수 있도록하는 것입니다.어떻게 사용자 데이터를 해독 할 수 있도록 사용자 데이터를 암호화 할 수 있습니까?

사용자는 데이터와 함께 키를 입력하고 데이터를보고 키를 저장하지 않을 때 다시 입력하게 할 수 있습니다. 그것은 사용자에게 고통 스러울 것입니다.

그러나 서버에 키를 저장하면 액세스 할 수 있고 데이터를 해독 할 수 있습니다.

사용자가 매번 키를 입력하거나 키를 저장하지 않아도 가능하지 않다고 생각하지만 생각하지 못한 방법이 있습니까? 사용자가 알고있는 정보만으로 키를 생성하는 것과 같은가? 쿠키가 관련된 것이 있습니까?

+0

[관련] (http://security.stackexchange.com/questions/91704/which-strategy-to-encrypt-data-accessed-by-multiple-users) –

답변

1

정보 보안의 관점에서 보면 암호화 및 암호 해독이 서버가 아니라 사용자 컴퓨터에서 수행되는 경우에만 의미가 있습니다 (키 및/또는 일반 텍스트를 저장하지 않는다고 보장 할 수 없음). JavaScript는 문제가되지 않으므로 클라이언트 응용 프로그램 *이 필요합니다.

또한 공개 키 암호화는 계산 상으로 비쌉니다. 많은 사용자가 있고 서버에서 암호화/암호 해독을 결정할 경우이 점을 명심하십시오.

* 또는 Java 애플릿이지만 그게 90 년대입니다. Silverlight 또는 Flash는 잠재적으로 작동 할 수 있습니다.

+0

JS는 의문의 여지가 없습니다. 데이터 양이 많지 않으면 JS는 정상적으로 처리됩니다. JS의 RSA 예제는 다음과 같습니다. http://www.ohdave.com/rsa/ 내 브라우저는 약 10ms 동안 암호화하고 페이지에서 약 70ms 동안 해독합니다. 이제는 문장 일 뿐이지 만 기본 사용에는 충분히 빠르다. –

+0

어쨌든 대칭 암호화 (예 : AES)를 위해 무작위로 생성 된 키를 암호화/해독하기 위해 공개 키 암호화 만 사용합니다.이 암호화는 정말 빠릅니다. – Chochos

+0

@Chocos : correct. 평문이 매우 짧지 않은 한. 그러나 공개 키 암호화는 여전히 비싸다. –

11

public key cryptography을 조사해야합니다. 기본 개념은 개인 키 소유자 만 해독 할 수있는 공개 키를 사용하여 정보를 암호화 할 수 있다는 것입니다. 시나리오에서 서버는 모든 사용자의 공개 키에 대한 기록을 보유하고이를 사용하여 정보를 암호화합니다. 그런 다음 사용자는 서버에서 볼 수없는 개인 키를 사용하여 데이터의 암호를 해독합니다.

클라이언트 측 개인 키를 저장하는 방법을 찾으려면 PersistJS을 살펴볼 수 있습니다.

5

PGP를 사용하여 뭔가 할 수있는 것처럼 들립니다. 앞서 언급 한 게시물에는 공개 키와 개인 키가 있습니다. 개인 키는 암호로 보호 할 수 있습니다. 그렇게하면 개인 키를 잠재적으로 데이터베이스에 저장할 수 있습니다. 암호 키를 사용하려면 암호가 필요하기 때문입니다.

사용자가 해당 암호를 잊어 버리면 데이터가 손실 될 수 있다는 큰 문제가 있습니다. 대체 암호 해독 키 (ADK)를 사용하여이 문제를 해결할 수 있습니다. 이 키는 모든 것으로 자동 암호화되며 여러 개인으로 나눌 수 있습니다.

관련 문제