2010-04-09 6 views
5

Linux에서 openssl 명령 줄 프로그램을 사용하여 파일의 AES HMAC를 가져 오려고합니다. 맨 페이지를보고 있었지만 HMAC를 성공적으로 작성하는 방법을 알 수 없습니다. 그러나 openssl과 함께 enc 명령을 사용하여 파일을 암호화 할 수 있지만 HMAC를 만들 수 없습니다. 암호화는 다음과 같습니다 당신은 약 CBC-MAC을 요청 할 수있다aes-256-cbc를 사용하여 openssl hmac

답변

9

openssl enc -aes-256-cbc -in plaintext -out ciphertext 

어떤 조언이나 튜토리얼이 멋진 것입니다. 이를 위해서는 메시지 또는 파일을 0의 IV로 암호화 한 다음 마지막 블록 (AES256-cbc의 경우 16 바이트)을 가져 가야합니다. I found a blog post는 OpenSSL을 사용하여이 작업을 수행하는 방법에 대해 설명한다 : 당신이 위키 페이지는 당신이 있다면, 당신은 파일을 암호화하는 데 사용하는 것보다 달라야합니다 말한다 키를 제공하는 곳

openssl enc -e -aes-256-cbc -KABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n 
  • -K입니다 모든 것을 암호화합니다.
  • -iv은 분명히 CBC-MAC의 핵심 요소 인 모두 제로 IV를 제공합니다.
  • tail -c 16은 마지막 AES256-cbc 블록 (16 바이트 길이)을 가져 오는 것입니다.
  • od은 16 진수로 변환하는 것으로, 웹 사이트에서 흔히 말하는 내용입니다. 그렇지 않은 경우 od -A n 대신 base64을 사용하거나 적용되지 않는 경우 원시 바이트 만 남겨 둘 수 있습니다. AES256-CBC가 블록 암호가 아닌 해시 알고리즘이기 때문에

당신은 파일의 AES HMAC를 취할 수 없습니다. AES256-cbc는 파일을 암호화하고 해독합니다. HMAC는 파일의 무결성을 검증하기위한 것으로, SHA-1 또는 MD5와 같은 핵심에 해시 알고리즘이 필요합니다.

파일에 서명하거나 파일을 확인하거나 암호화하려고하십니까? 서명하려면 OpenSSL dgst 명령을 확인하고 MD5 또는 SHA-1과 같은 간단한 HMAC를 사용하거나 DSS/DSA로 디지털 서명하십시오.

또한 MAC으로 사용되는 블록 암호는 EMAC이지만 OpenSSL은 내가 아는 한 EMAC를 수행하지 않습니다. EMAC은 암호화 된 파일의 마지막 블록을 가져 와서 암호화하여 MAC을 만듭니다.

+0

아마 원래 질문에서 미안합니다. AES 암호문의 MAC이 필요합니다. 이것은 더 많은 암호화 감각을 만드나요? 나는 AES의 MAC이 마지막으로 암호화 된 블록 일 뿐이라고 믿는다. – Ryan

+0

@ 라이언 : CBC-MAC에 대한 정보를 추가했습니다. 희망이 도움이됩니다. 그것이 당신이 의미하는 것이 아니라면, 아마도 당신은 왜이 AES MAC을 계산해야하는지 더 많은 배경 지식을 줄 수 있습니다. 이 부분이 잘 알려진 프로토콜입니까? 일단 그것을 계산하면 어떻게 할 것입니까? 배경 정보가 넓을수록 다른 사람이 들어가서 답을 줄 수 있습니다. – indiv

+0

이것은 * 정확하게 * 필요한 것입니다. 많은 감사 indiv !!!! – Ryan

2

HMAC의 입력으로 AES 키를 사용하여 파일의 HMAC를 수행 할 수 있습니다.

원하는 AES 알고리즘 (이 예제에서는 -aes-256-cbc)을 사용하여 파일을 암호화하십시오. 암호를 기반으로 AES 키를 생성하고 (암호에 대한 "암호"변경) -p 스위치를 사용하여 암호화에 사용 된 소금, 키 및 iv를 덤프하십시오.

openssl enc -e -k password -p -aes-256-cbc -in plaintext -out ciphertext 
salt=A2402067B9BFD4A1 
key=EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC 
iv =B382453BCBF579CE14C0726D343F40E2 

선택의 해시 알고리즘 및 파일 암호화에 사용 된 AES 키를 사용하여 모든 오브젝트/파일의 HMAC 만들기 : 경우 나중에

openssl dgst -hmac EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC -sha256 ciphertext 
HMAC-SHA256(ciphertext)= fa3fb9c9c743f35ba81793e2704c3fc9737cd2675011110cb1655ea7ceed2914 

사용을위한 AES 키를 기억을 HMAC를 확인해야합니다. 내가 성취하고자하는 바를 모르겠다. 위의 내용이 당신의 암호 요구 사항을 충족시키지 못한다고 주장하지만, 파일을 암호화하고, 암호화 키를 얻고, HMAC 계산에서 그 암호화 키를 사용하는 방법을 보여준다.

관련 문제