2009-06-19 3 views
2

사용하는 일부 API가 일반 텍스트로 암호가 필요하기 때문에 해시 할 수없는 암호를 저장해야하는 .NET 서버 응용 프로그램이 있습니다.서버 응용 프로그램에서 해시 할 수없는 암호 저장

이러한 암호는 시스템 구성의 일부로 응용 프로그램의 다른 서버 인스턴스로 내보내거나 가져와 백업 할 수 있습니다.

암호화 된 데이터는 내 보낸 데이터 이외의 다른 서버의 응용 프로그램 인스턴스에서도 읽을 수 있어야합니다.

암호화 키를 분실하거나 사용할 수 없어 사용자에게 많은 번거 로움없이 최소한의 데이터 손실 위험없이이를 수행하는 가장 안전한 방법은 무엇입니까?


편집

내가 좋아하는 내용은 더 찾고 :

  • 위치를 저장하는 방법/키
  • 생성 각각에 대해 고유 키 설치 및 를 저장 넓은 응용 프로그램 대 공용 키

... 사용할 암호화 알고리즘이 없습니다.


EDIT II

나는이 응용 프로그램은 자신의 서버에서 실행하는 고객에게 배포 할 것이라는 점을 추가해야합니다. 클라이언트/서버 응용 프로그램입니다. 저장된 비밀번호는 외부 API 메소드로 전달하기 위해 Google 애플리케이션에서만 사용됩니다. 우리는 다른 용도로 사용하지 않습니다.

시스템 구성을 백업용으로 내보내거나 다른 시스템으로 이동하는 것이 가장 큰 문제입니다. 이것이 우리가 보호하고자하는 곳이지만 가능한 한 사용자가 쉽고 유연하게 사용할 수 있도록합니다.

답변

1

후 당신은 당신이 몇 가지 더 제안 사항에 따라 원하는 내용을 설명하는 편집 -

당신이 키 또는 씨앗으로 사용자 암호를 사용하여 진행하면 키가 데이터베이스에 저장하거나 할 수있다 심지어 사용자와 상관 관계가있는 CSV 파일. 그 다음에는 다음 질문이 될 것입니다. 설치할 때마다 고유 한 키를 생성하거나 유니버설 응용 프로그램 키가 있어야합니다. 사실, 보편적 인 응용 프로그램 키를 갖는 것은 여러 가지 이유로 나쁜 생각입니다. 1. 한번 크랙이 발생하면 이전의 모든 교환도 금이 갈 수 있습니다. 2. 암호화 된 암호를 재생할 수있는 경우 재생 공격이 발생하기 쉽습니다. 3. 의식적으로이 키를 수시로 변경해야합니다.

따라서 어느 날, 고유 키를 생성하는 것이 훨씬 더 좋은 아이디어입니다. Diffie-Hellman Key Exchange를 살펴보아야합니다. 나는 그것이 당신의 문제 대부분을 해결할 것이라고 생각합니다. D-H 키 교환의 개념은 고유 한 사용자 제공 키를 사용하여 통신을위한 고유 한 (모든 트랜잭션) 키를 설정한다는 것입니다. 이 방법의 가장 중요한 부분은 실제 키가 공개되지 않으며 동일한 오래된 시드/키를 기반으로 매번 새 암호를 생성 할 수 있다는 것입니다.

살펴보십시오.

2

만약 당신이 강력한 알고리즘을 찾고 있다면, TripleDES를 사용하는 것보다 훨씬 더 나쁠 수 있습니다. 그것은 32 세일 수도 있지만 여전히 강합니다.

조금 더 새로운 것을 원하면 AES (원래 Rijndael)도 좋습니다.

각자의 성능을 비교하여 가장 적합한 것을 확인하고 싶을 수도 있습니다.

+1

IMHO : 우리는 암호 같은의 암호화에 대해 이야기 할 때 당신이 당신의 enrypt를 실행하지 않는 한, 나는 심지어 286 에 코드를 해독/성능 비교를하고 고려하지 않을 것 대량의 데이터를 암호화합니까? 확실한. 짧은 문자열? 바아. – Yoopergeek

2

암호화와 관련해서는 키가 하드웨어 동글과 비슷합니다. 당신의 삶을 보호하십시오.

어떤 서버를 사용하고 있습니까? 가장 현대적인 RDMBS에는 외부 키가 필요하지 않은 상태에서 데이터를 암호화하는 암호화 기능이 있습니다. 이것은 적어도 서버에있는 동안 데이터를 보호 할 것입니다 ...

+0

응용 프로그램은 현재 내부 VisaDB 데이터베이스를 사용하지만 나중에 더 많은 외부 데이터베이스를 지원합니다. 구성은 내보낼 때 XML 파일에 저장되며이 경우 암호에 대해 가장 걱정됩니다. –

0

귀하의 프로그램 pgp가 귀하의 고객 pgp 키가 암호를 해독 할 수 있도록 암호를 해독 할 수 있으므로 귀하도이를 수 있습니다. 프로그래밍에서 암호를 사용하는 동안 암호는 일반 텍스트로만 나타납니다.

2

사실 사용자 입력 암호를 ​​시드/키로 사용하면 더 강력한 암호를 생성 할 수 있습니다. 많은 서버가 항상 그렇게합니다. 그러면 여러 가지 이점이 있습니다. 1. 사용자에게 번거 로움이 없습니다. 2. 사용자 암호를 텍스트 파일로 저장할 수 있습니다. 3. 컴퓨터에서 생성 된 암호는 사람이 제공 한 암호보다 강력합니다. 4. 동일한 시드로 새 암호를 생성 할 수 있으므로 프로토콜을 재생 공격에 강하게 만듭니다.

사용해보기.

0

비대칭 공개 키 암호화를 사용하여 신용 카드 정보를 저장합니다. 많은 서버에는 공개 키가 있습니다. 공개 키는 신용 카드를 암호화하는 데 사용됩니다. 우리의 cc 게이트웨이 응용 프로그램 만이 지불을 해독하고 처리하는 개인 키를 가지고 있습니다. 개인용 키는 프로덕션 서버에 cert로 설치됩니다.

암호를 저장하기 때문에 빠른 사용자 인증을 위해 해시가 남아 있어야합니다.

http://en.wikipedia.org/wiki/Public-key_cryptography