Linux에서 openssl
명령 줄 프로그램을 사용하여 파일의 AES HMAC를 가져 오려고합니다. 맨 페이지를보고 있었지만 HMAC를 성공적으로 작성하는 방법을 알 수 없습니다. 그러나 openssl
과 함께 enc
명령을 사용하여 파일을 암호화 할 수 있지만 HMAC를 만들 수 없습니다. 암호화는 다음과 같습니다 당신은 약 CBC-MAC을 요청 할 수있다aes-256-cbc를 사용하여 openssl hmac
답변
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을 만듭니다.
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 계산에서 그 암호화 키를 사용하는 방법을 보여준다.
- 1. 표준 HMAC-SHA1과 다른 Android HMAC-SHA1
- 2. PBKDF2-HMAC-SHA256 Objective-C 구현
- 3. iPhone : HMAC-SHA1을 사용하여 문자열 변환
- 4. openssl 명령 줄이 키 강화를 수행합니까?
- 5. hmac 키와 소금 길이
- 6. openssl-2와 openssl-3의 차이점
- 7. C# HMAC 구현 문제
- 8. HMAC 알고리즘의 키
- 9. SimpleDB HMAC 서명
- 10. C# HMAC to Java
- 11. openssl/valgrind
- 12. 안드로이드에서 HMAC MD5를 생성하는 방법?
- 13. OpenSSL - SSL_CTX_set_default_passwd_cb
- 14. iPhone에서 OpenSSL
- 15. OpenSSL ECC를 사용하여 텍스트 문자열 암호화/해독
- 16. openssl dgst를 사용하여 파일 서명 확인
- 17. OpenSSL API를 사용하여 Windows CryptoAPI CryptDeriveKey 구현
- 18. Android에서 OpenSSL 빌드하기 NDK
- 19. Visual Basic 2010 HMAC SHA1
- 20. OpenSSL - AES 키 찾기
- 21. OpenSSL 서버 암호 선택
- 22. C++ OpenSSL HMACSHA1은 작동하지만 내가 원하는 방식은 아닙니다
- 23. OpenSSL 쿠키 지원
- 24. Ruby에서 HMAC 모듈을 사용하여 MD5 해시를 만드는 방법은 무엇입니까?
- 25. 동일한 매개 변수를 사용하여 텍스트를 암호화하는 경우 OpenSSL 명령 줄과 Ruby OpenSSL 라이브러리가 다릅니다
- 26. .Net에서 인쇄 가능한 HMAC 공유 키 생성
- 27. keyed-HMAC (해시 메시지 인증 코드)
- 28. Ruby에서 데이터에 올바르게 서명하는 방법 (HMAC?)
- 29. HMAC-SHA1 예가 원하는 해시를 반환하지 않습니까?
- 30. OpenSSL 라이브러리를 프로그램에 연결
아마 원래 질문에서 미안합니다. AES 암호문의 MAC이 필요합니다. 이것은 더 많은 암호화 감각을 만드나요? 나는 AES의 MAC이 마지막으로 암호화 된 블록 일 뿐이라고 믿는다. – Ryan
@ 라이언 : CBC-MAC에 대한 정보를 추가했습니다. 희망이 도움이됩니다. 그것이 당신이 의미하는 것이 아니라면, 아마도 당신은 왜이 AES MAC을 계산해야하는지 더 많은 배경 지식을 줄 수 있습니다. 이 부분이 잘 알려진 프로토콜입니까? 일단 그것을 계산하면 어떻게 할 것입니까? 배경 정보가 넓을수록 다른 사람이 들어가서 답을 줄 수 있습니다. – indiv
이것은 * 정확하게 * 필요한 것입니다. 많은 감사 indiv !!!! – Ryan