네보 3주차 - MAC, 해시 함수

강준호·2023년 9월 19일

네트워크보안

목록 보기
3/10
post-thumbnail

메세지 인증코드 MAC

  • 기밀성은 필요없고 무결성만 필요할때

    코드를 보낼때 MAC 코드를 붙여서 보냄.
    메세지와 수신측에서 받은 MAC 이 같나 다른가로 봄.
    공격자는 키를 모르기때문에 똑같은 MAC 을 만들 수 없다.

간단한 예시

Alice와 Bob이 "비밀 키 K"를 공유하고 있다고 가정합니다.
Alice가 메시지 M을 Bob에게 보내려고 합니다.
Alice는 M과 K를 사용하여 MAC을 계산합니다: MAC = F(K, M)
Alice는 메시지 M과 MAC을 함께 Bob에게 보냅니다.
Bob은 받은 메시지 M을 사용하여 자신이 가진 비밀 키 K로 MAC을 다시 계산합니다.
계산된 MAC이 Alice로부터 받은 MAC과 일치한다면 메시지는 무결하고, Alice로부터 왔음이 검증됩니다.

특징

  • 비밀 키를 사용하기 때문에 발신자의 신뢰성 + 무결성 제공.

단방향 해시함수

  • 해시 값은 H(M)
  • MAC과 달리 키가 없다. 누구나 공개 검증 가능

HMAC(대칭 암호 MAC) VS 디지털서명(공개키 MAC)

HMAC

  • MAC =HMAC(Key,Msg)
  • 대칭키 사용 MAC 대비 빠른속도
  • 모두 비밀 키를 공유
  • MAC 알고리즘(예: HMAC)을 적용하여 MAC을 계산합니다. 그러면 동일한 비밀 키를 알고 있는 수신자가 MAC을 확인하여 메시지의 진위 여부와 무결성을 확인할 수 있습니다.
  • ex) SSL/TLS 및 IPsec과 같은 많은 프로토콜

디지털 서명

  • 발신자만 개인 키를 사용하여 메시지 또는 메시지의 해시에 서명
  • 수신자는 발신자의 공개 키를 사용하여 진위 여부를 확인합니다.
  • ex) 문서 서명, 인증서 확인 및 블록체인 거래

비밀값 사용 메세지 인증

  • 메시지를 비밀 값과 직접 결합한 다음 그 결과를 해싱하는 방식.

  • H(비밀 || 메시지), 여기서 H는 해시 함수

  • 똑같은 값을 가지고 해쉬를 구한거니까 일치해야해.

  • 보안적으로는 HMAC 이 낫다.

안전한 해시 함수 요건

일방향 성질(one-way property)

  • 𝐻(𝑥) =h가성립되는𝑥를찾는것이계 산적으로 불가능하게 만들어야함
    => 해시를 뒤집어 원래 값을 알아낼 수 없도록

  • 브루트포스 시 2^n 비용

약한 충돌 저항성(weak collision resistance)

  • h(x) = h(y)가 중복된 해쉬값을 갖게 하면 안됨!

  • 특정 알려진 입력에 한정

  • 공격자가 합법적인 문서나 메시지를 알고 있는 경우 합법적인 문서나 메시지와 동일한 해시를 생성하는 악성 문서나 메시지를 만들 수 없도록 합니다.

  • 5천과 5 를 넣었을 때 똑같은 해쉬가 나왔을때.
    ex) 해쉬 길이가 10 비트만 써서 1024개일때, 1024번만 돌리면 동일한 해쉬 알 수 있어.

  • 브루트포스 시 2^n 비용

강한 충돌 저항성(strong collision resistance)

  • x1과 x2에서 h(x1) = h(x2)가 되는 값을 찾는 것이 계산적으로 불가능해야.
  • 시작점이 주어지지 않더라도 동일한 값으로 해시되는 서로 다른 두 개의 입력을 찾는 것이 거의 불가능해야 한다는 뜻입니다.
  • 랜덤 공격시도로 두개 값이 일치하는것을 찾음.

  • 브루트포스 시 위 쌍을 찾는 것 ( Collision ) 은 2^n 이 아닌 2^(n/2) 만에 가능.

  • 대칭키는 256비트면 됨. but 해쉬에서는 512를 써야해.(반절만에 강한 충돌 저항성에서 뚤리니까)

약한 충돌 VS 강한 충돌

약한 충돌

  • 하나의 입력이 고정되어 주어졌을 때 충돌을 찾는 것이고
  • x와 그 해시 h(x)가 주어진 경우, 동일한 해시를 생성하는 다른 입력 y를 찾을 수 없어야 함

강한 충돌

  • 모든 가능한 입력 중에서 충돌을 전혀 찾지 않는 것입니다.

SHA-512

  • 암호 알고리즘 없고 비밀 키와 메시지를 사용하여 해시 값을 계산

블록체인

등장 배경

  • 노드가 스스로 확인 할 수 없는것
    • A->B 송금 이후 A->C 송금 즉 double spending이 수신되
    었을 때, 어느 것이 진짜 먼저 만들어진 것인지?

=> 블록체인이 해결방안

블록체인 합의

  • 노드는 어떤 트랜잭션이 유효한지 결정하기 위해 투표 메커니즘에 의존
  • 시빌 공격이 들어올 수 있기 때문에 작업증명(Pow)로 투표권을 얻음.
  • Pow 를 사기 치는 것보다 정직하게 했을때 보상을 더 크게줌.

PROOF OF WORK (POW)

  • 특정 해시값 찾기 (브루트 포스로)
  • N=1 이면 2번 시도, N=8 이면 2^8= 256번 시도

0개의 댓글