문제

쓰고 있어요 작은 데스크탑 앱을 할 수 있는 암호화 데이터 파일과 암호로 보호(i.e하나 올바른 암호를 입력하십시오 해독하).내가 원하는 암호화된 데이터 파일을 포함한 휴대용,그래서 인증을 포함할 파일에서(또는 그래서 나는 가정).

내가 전략에 나타나는 실행할 수 있고 보인다는 논리는 무엇을 기반으로 나가 알고있는(아마 단지 충분히 위험한 것),그러나 나는 아무 생각이 없다면 그것은 실제로 좋은 디자인 또는하지 않습니다.그래서 말해:이것이 미쳤어요?더 나은/그것을 할 수있는 가장 좋은 방법은?

  • 1 단계:사용자가 일반 텍스트 암호,예를 들어,"MyDifficultPassword"
  • 2 단계:용 해시 사용자 암호를 사용하는 값으로 대칭키를 암호화/복호화 데이터 파일입니다.예:"MyDifficultPassword"-->"HashedUserPwdAndKey".
  • 3 단계:용 해시 해시된 값을 2 단계부터 저장에 새로운 값을 데이터 파일의 헤더(i.e암호화되지 않은 부분의 데이터 파일)사용하는 값이 유효성을 검사하는 사용자의 암호입니다.예:"HashedUserPwdAndKey"-->"HashedValueForAuthentication"

기본적으로 나가 추정하는 것으로서 일반적인 방법으로 구현하는 웹사이트의 암호(사용하지 않을 때 OpenID,즉),는 저장(소금에 절인)의 해시 사용자의 암호에의 DB 에 저장하지 않는 실제 암호입니다.그러나 때문에 사는 해시된 사용자 비밀번호에 대한 대칭 암호화 키,나는 할 수 없 동일한 값을 사용한 인증이 있습니다.그래서 나는 해시 그것은 다시 기본적으로 치료하는것처럼 또 다른 암호를 저장하중시에 값을 데이터 파일이 있습니다.는 방법을 파일이 다른 PC 및 암호 해독에 의해 그것은 단순히 입력하 내 암호입니다.

그래서 이 디자인 합리적으로 안전하거나,절망적으로 순진 또 어딘가 사이에 있습니까?감사합니다!

편집:정화 및 후속 질문 re:소금입니다.
나는 생각이 소금했 비밀을 유지 도움이 될 수 있도록,하지만 당신의 답변과 링크 뜻이 아닙니다.예를 들어, 이 spec 에 의해 연결되어 에릭슨(아래)을 말한다:

따라서,암호 기반 키 파생으로 정의 기능은 여기에서의 암호,소금,그리고 반복 횟수,후자는 두 양이 필요하지 않 비밀이 유지됩니다.

이 뜻은 내가 저장할 수 있는 소금 가치에 같은 장소/파일로 해시 키고 여전히 있는 것보다 더 안전하는 경우 내용에 소금은 모든 경우 해싱?도대체 이게 어떻게 된 것일까요?

조금 더 context:암호화된 파일을 의미하지 않와 공유되거나 암호 해독,다른 사람에 의해 그것은 정말 단일 사용자 데이터입니다.그러나고 싶은데 배포하 공유 환경에서 컴퓨터에서 나지 않아 완벽하게 제어(예:에서 작업)및 마이그레이션할 수 없/로 이동하여 데이터를 단순히 파일을 복사하다(그래서 나는 그것을 사용할 수 있습니다 집에서,서로 다른 워크스테이션,etc.).

도움이 되었습니까?

해결책

키 생성

내가 사용하는 것이 좋습니다 것이 인정한 알고리즘 등 PBKDF2 에서 정의 PKCS#5 버전 2.0 에서 키를 생성하는 암호를 입력합니다.그것은 비슷한 알고리즘을 개요,하지만 생성할 수 있는 더 이상은 대칭 키를 위해 사용됩니다.당신을 찾을 수 있어야 오픈 소스 라이브러리를 구현하는 PBE 키 생성기 다른 알고리즘이 있습니다.

파일 형식

수도 있습니다 사용하는 것이 좋 암호화 메시지 구문 로에 대한 형식의 파일입니다.이것은 몇몇 연구에서 당신의 일부이지만,또 다시 거기에 기존 라이브러리를 사용하고,그것의 가능성을 열고 간 운영 체제를 더 원활하게 다른 소프트웨어와 함께,같은 S/MIME-사 메일 클라이언트입니다.

비밀번호 확인

에 대한 당신의 욕망을 저장하시고 암호를 사용하는 경우 PBKDF2 키를 생성,사용할 수 있는 표준 암호 해싱 알고리즘(큰 소금,천 라운드의 해싱)에는,그리고 다른 값입니다.

또는,당신은 계산할 수 없습 MAC 콘텐츠에.해시의 충돌에 암호가 될 가능성이 더 유용하는 공격자;해시에 충돌하는 콘텐츠가 될 가능성이 쓸모 없습니다.하지만 그것도록 합법적인 받는 사람이 알고 있는 잘못된 암호를 위해 사용되었다 복호화합니다.

암호화 소금

소금 도움을 막기 위해 미리 계산한 사전 공격입니다.

가정하자는 공격자의 가능한 암호를 암호화합니다.그는할 수 있는 해시 각각하고 그것을 비교 해시에 그의 피해자의 암호가 일치합니다.면 목록은 큰 이 시간이 오래 걸릴 수 있습니다..그가 원하지 않는 시간에 자신의 다음 목표로,그래서 그는 결과를 기록에서는"사전"어디에 해시 포인트는 해당되는 입력입니다.는 경우에 암호 목록은 매우,매우 길고,그 기술을 사용할 수 있습니다처럼 무지개이블 일부를 저장 공간.

그러나,가정의 다음 목표 소금에 절인들의 암호입니다. 는 경우에도 공격자는 무엇을 알고 소금은 자신의 미리 계산된 테이블은 쓸모 없—소금 변경 해시 결과에서 각각의 암호입니다.그는 다시 해시의 모든 암호를 그의 목록에서,부착 대상의 소금을 입력합니다.모든 다른 소금이 필요합 다른 사전에 그리고 충분히 소금은,사용자가 없을 저장하는 방전을 위해 그들을 모든.공간을 거래하는 시간을 절약하는 것은 더 이상 선택;공격자가 떨어져야 다시 해싱하는 각 비밀번호에서 자신의 목록을 각 대상에 대한 그는 공격합니다.

그래서,그것은 유지하는 것이 필요하지 않는 소금 비밀입니다.을 보장하는 공격이 없는 사전 사전에 계산된 해당하는 특정 소금이면 충분합니다.

다른 팁

로 Niyaz 말했다,접근 방식은 합리적인 소리를 사용하는 경우 품질의 구현에 강한 알고리즘처럼, SHA-265AES 를 해싱과 암호화 합니다.또한 내가 사용하는 것이 좋습 소금 가능성을 줄이기 위해 사전을 만드의 모든 암호 해시입니다.

물론,읽기 브루스 슈나이어ko 적용 암호화 은 결코 잘못된다.

를 사용하는 경우에는 강력한 해시 알고리즘(SHA-2)및 강력한 암호화 알고리즘(AES),당신이 잘 할 것이 접근 방식이다.

왜 사용하여 압축 라이브러리를 지원하는 암호로 보호된 파일이 있는가?내가 사용한 암호 보호된 zip 파일을 포함하는 XML 콘텐츠에}

진짜로 저장해야 해시된 암호로 파일입니다.당신이 사용하여 암호(또는 해시된 암호)고 소금과 다를 암호화 파일이다.할 때 해독하는 시도를 해독하는 파일과 암호를+salt.는 경우에는 사용자에게 잘못된 암호를 암호 해독한 파일을 올바르지 않습니다.

만 단점이 생각할 수 있는 경우에는 사용자가 실수로 들어가 잘못된 암호와 해독에는 느리고,그를 기다려 다시 시도하십시오.그리고 물론은 경우 비밀번호를 잊어버린는 방법은 없을 해독하는 파일.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top