2013-03-13 1 views
4

java로 암호 저장 프로그램을 구현 중입니다. 나는 암호화를위한 트리플 DES와 해싱을위한 SHA256을 프로그래밍했다.해시 및 암호화의 순서가 보안 측면에서 차이가 있습니까?

내가 처음으로 원시 데이터 (암호)를 해시 한 다음 암호화하거나 데이터 (암호)를 암호화 한 다음 암호화 된 데이터를 해시하는 경우 어떤 차이가 있는지 궁금하다. 나는 대부분 보안에 대해 심각하게 변화 할까 우려하고있다.

감사

귀하의 코멘트 당
+1

이것은 [security stackexchange] (http://security.stackexchange.com)에 대한 좋은 질문 일 수도 있습니다. – oleksii

+0

@oleksii 감사합니다. 거기에서도 기회를 찾아 보겠습니다. – Ekin

+0

비밀번호 금고이므로 암호를 다시 일반 텍스트로 보내려고한다고 가정합니다. 이 경우 해시를 사용하여 달성하려는 작업은 무엇입니까? –

답변

2

, 당신은 메시지 인증 코드로 단지 해시를 사용하지 않습니다. 이 응용 프로그램에 적합한 해시 기반 MAC (적절하게는 HMAC)가 있습니다. 이 경우 HMAC-SHA256을 사용하려고합니다. 또한 MAC에 별도의 키가 필요함을 명심하십시오 (암호화와 MAC에 동일한 키를 사용하는 것은 큰 일입니다).

그러나 질문 자체에 대한 질문은 Encrypt-then-MAC 대 MAC-then-Encrypt입니다. 이 Crypto.SE answer 일 때 3DES가 ​​아닌 ecryption 알고리즘을 허용하는 경우 IV 및 알고리즘 식별자를 비롯하여 암호화 텍스트에 대한 모든 사항을 MAC에 보장하는 한 최선의 행동 방침은 Encrypt-then-MAC입니다. 암호문과 일반 텍스트 무결성을 얻고 일반 텍스트를 확인하기 위해 암호 해독 프로세스를 거칠 필요가 없습니다.

+0

암호화와 MAC에 별도의 키를 사용할 수 있습니다. 아마 성능 향상을 위해 AES 사용에 대한 조언을받을 수 있습니다. 또한 나는 다른 링크 [Encrypt-then-MAC] (http://www.daemonology.net/blog/2009-06-24-encrypt-then-mac.html)를 발견하고 나는 "Encrypt-then-MAC "사건이 내 사건에 맞는 것 같다. 감사! – Ekin

관련 문제