2010-05-14 3 views

답변

45

주요 차이점은 개념적이다 해시는 데이터의 무결성하는 MAC 보장 무결성 및 인증을 보장하기 위해 사용되지만.

외부 입력이 없어도 해시 코드는 메시지에서 맹목적으로 생성됩니다. 즉, 여행 중에 메시지가 변경되었는지 확인하는 데 사용할 수있는 정보입니다.

대신 MAC은 코드를 생성 할 때 사용하는 해시 함수의 시드로 개인 키를 사용합니다. 이렇게하면 메시지가 수정되지 않았을뿐만 아니라 누구에게 전송되었는지도 확인해야합니다. 예상하지 못했습니다. 그렇지 않으면 공격자가 코드를 생성하는 데 사용 된 개인 키를 알 수 없습니다. MAC 기능은 암호화 해시 함수와 유사하지만

, 그들은 서로 다른 보안 요구 사항을 가지고 :

은 위키 피 디아에 따르면 당신은 것이 있습니다. 안전성을 고려할 때, MAC 기능은 선택된 평문 공격 하에서 존재하는 위조에 저항해야합니다. 즉, 공격자가 비밀 키를 소유 한 오라클에 액세스하여 공격자가 선택한 메시지에 대한 MAC을 생성하더라도 공격자는 실행 불가능한 양의 계산을 수행하지 않고 다른 메시지에 대해 MAC을 추측 할 수 없습니다.

물론 이들의 유사점은 다른 방식으로 구현됩니다. 일반적으로 MAC 생성 알고리즘은 개인 키 사용에 관심있는 확장을 사용하는 해시 코드 생성 알고리즘을 기반으로합니다.

+3

"공격자가 비밀 키를 소유하고 공격자가 선택한 메시지에 대해 MAC을 생성하는 오라클에 액세스 할 수있는 경우라도 공격자는 다른 메시지에 대해 MAC을 추측 할 수 없습니다. '? 공격자가 비밀 키를 소유 한 오라클에 액세스 할 수있는 경우 다른 메시지에 대한 MAC을 생성하여 오라클의 입력으로 보낼 수 있습니다. 그렇지 않습니까? – tonix

+0

@tonix이 문장은 보안 MAC 기능을 정의 할 때만 사용됩니다. 이 가상 시나리오는 공격자가 여러 개의 일반 텍스트 -MAC 쌍을 관찰 한 다음 공격자가 보내려는 메시지의 MAC을 위조/추측 할 수있는보다 현실적인 시나리오의 최악의 경우입니다. – ZillGate

+0

다른 사람들은 이제 이러한 정의를 변경했습니다. 해시 함수는 무결성을 제공하지 않지만 인증은 이제 무결성이라고합니다 (cf. crypto.stanford.edu/~dabo/cryptobook 참조). 이 변경은 최고의 imo –

15

해시는 메시지에서 다이제스트를 생성하는 함수입니다. 암호로 안전한 해시는 주어진 다이제스트로 메시지를 생성하는 것이 계산 상으로 불가능합니다. 자체적으로 메시지의 해시는 주어진 메시지의 보낸 사람에 대한 정보를 제공하지 않습니다. 메시지의 해시를 안전하게 전달할 수 있다면 보안되지 않은 전송을 통해 대용량 메시지가 올바르게 수신되었는지 확인할 수 있습니다.

메시지 인증 코드는 공유 비밀 키를 메시지와 결합하여 메시지 수신자가 메시지의 보낸 사람이 공유 된 비밀 키와 그렇지 않은 사람을 인증 할 수 있도록하는 방법입니다 비밀 키가 메시지를 보내거나 변경할 수 있었는지 확인하십시오.

HMAC는 해시 기반 메시지 인증 코드입니다. 보통 이것은 공유 비밀과 메시지의 조합에 해시 함수를 한 번 이상 적용하는 것과 관련이 있습니다. HMAC는 일반적으로 RFC 2104 또는 FIPS-198에 문서화 된 알고리즘을 참조합니다.

메시지가 일반 텍스트로 표시되도록 MAC에서 메시지를 암호화하지 않습니다. 비밀 키를 공개하지 않기 때문에 키를 손상시키지 않고 공개 채널을 통해 MAC을 전송할 수 있습니다.

-6
  1. 해시 함수는 비대칭 암호화를 사용하는 반면, MAC은 대칭 암호화를 사용합니다.
  2. 암호화 해시 함수는 항상 MAC이 아니지만 MAC은 암호화 해시 함수 (키 해시 함수)가 될 수 있습니다.
  3. 해시 함수는 MAC없이 기본적 주된 차이는 MAC은 비밀 키를 사용하고, 임의 해시 키를 사용하지 않는
+3

을위한 것입니다. (1) 해시 함수는 대칭 또는 비대칭 일뿐만 아니라 키를 사용할 필요가 없습니다. (3) 불완전하고 앞 뒤로. -1 – EJP

3

비 재 제공 할 부인 방지 (non-repudiation)를 제공한다. MAC을 사용하면 인증을 얻을 수 있습니다.

2

해시 함수 : 길이가 고정 된 메시지를 인증 자 역할을하는 고정 길이 해시 값에 매핑하는 기능입니다.

MAC : 인증 자 역할을하는 고정 길이 값을 생성하는 메시지 및 비밀 키의 기능.

+0

"해시 함수"의 정의에서 "인증 자"라는 단어를 사용하는 것은 잘못된 것입니다. SHA (Secured Hash Algorithm)는 신뢰성을 위해 사용되지 않습니다. 데이터의 무결성을 검사하는 데 사용됩니다. –

8

다른 포럼의 답변에 이것을 찾아 냈습니다.

무결성 :은 수신자가 메시지가되지 않았 음을 확신 할 수

암호화 원시의 이러한 유형들은 ("메시지에 추가"의 간단한 프로토콜) 이행 보안 목적에 의해 구별 될 수있다 실수로 수정 ​​되었습니까?

인증 : 메시지를 보낸 사람이 보낸 메시지를받는 사람이 신뢰할 수 있습니까?

부인 방지 : 수신자가 메시지와 증명을 제 3 자에게 전달하면 제 3자는 메시지가 보낸 사람으로부터 유래했다고 확신 할 수 있습니까? (법적 의미가 아닌 암호화 의미의 부인 방지에 대해 언급하고 있음을 유의하십시오.) 또한이 질문은 중요합니다.

키 : 프리미티브에 공유 비밀 키가 필요합니까, 아니면 공개 - 개인 열쇠 쌍? 나는 짧은 대답은 테이블로 가장 잘 설명한다고 생각한다 :

사용 된 키에 대한 자신감이없는 인증은 쓸모 없다는 것을 기억하십시오. 디지털 서명의 경우받는 사람은 확인 키가 실제로 보낸 사람의 것인지 확실해야합니다. MAC의 경우 수신자는 공유 된 대칭 키가 발신자와 만 공유되었음을 확신해야합니다. 이 man-in-the-middle 공격에 취약 그대로

Click here for more info

+0

일부 사람들은 이제 이러한 정의를 변경했습니다. 해시 함수는 무결성을 제공하지 않으며 인증은 이제 무결성이라고합니다 (cf. https://crypto.stanford.edu/~dabo/cryptobook/). 이 변경은 최고의 메시지를위한 것임 –

2

해시, 요약 또는 메시지의 지문과 무결성도 인증 자체를 제공합니다. A가 M의 해시 H와 결합 된 메시지 M을 B로 보내려한다고 가정하면 대신 C가 메시지를 캡처하여 M2의 M2 메시지와 H2 해시를 생성하고이를 B로 보냅니다. A의 원본 메시지입니다. 그러나 해시는 MAC과 같은 무결성 및 인증을 얻기 위해 다른 방법으로 사용될 수 있습니다.

메시지의 요약이기도 한 MAC은 무결성 및 인증을 제공합니다. MAC은 다양한 방법으로 계산 될 수 있습니다. 가장 간단한 방법은 두 개의 입력, 메시지 및 공유 비밀 키가있는 해시 함수를 사용하는 것입니다. 공유 비밀 키를 사용하면 MAC에 인증 기능이 추가되어 무결성과 인증을 제공합니다. 그러나 공유 비밀 키를 가진 당사자가 메시지와 MAC을 생성 할 수 있으므로 MAC은 여전히 ​​부인 방지를 제공하지 않습니다. 디지털 서명 및 공개 키 암호화가 실제로 사용됩니다.

+0

메시징 중에 메시지와 MAC을 공유하지만 공유 키를 공유하여 MAC을 다시 생성하는 방법은 무엇입니까? 키가 메시징을 통해 공유되는 경우 중간 사람이 키와 MAC 생성기를 사용하여 메시지 변경을 가져오고 수신자에게 전달할 수 없습니까? – Bsienn

+0

@Bsienn, 공유 키는 공개 키 암호화를 사용하여 생성되며 사용자가 직접 (일반 메시징을 통해) 공유하지 않습니다. –

관련 문제