암호 해시함수와 해시함수

adc0612·2022년 10월 11일
0

블록체인

목록 보기
7/11

해시함수

  • 해싱 은 다양한 크기의 입력값을 고정된 크기의 출력값으로 생성해 내는 과정을 의미한다.
  • 해시 함수는 어떠한 크기의 입력값이 들어와도 동일한 크기의 값을 출력하는 함수다.
  • 여러 종류의 해시 함수가 존재하며, 그 중 암호 해시 함수는 블록체인 및 다양한 분산 시스템에 데이터 무결성과 보안을 보장하는 데 사용된다.

해시함수 동작

  • 해시 함수는 다양한 크기의 입력값을 사용해 고정된 크기의 출력값을 생성한다.
  • SHA-256 알고리즘은 어떤 입력값을 넣어도 256 비트 길이의 값을 출력하며, SHA-1은 160 비트 길이의 값을 출력한다.

블록체인에서 해싱의 역할

  • 해시값을 사용해 익명성 보장
    공개키를 해싱한 값을 지갑주소로 사용하여 거래를 익명화 할 수 있다. 트랜잭션 기록에는 해시값으로 암호화된 지갑 주소와 송금 및 잔액을 확인할 수 있을 뿐, 해당 지갑의 주인이 누구인지 파악할 수는 없다.

  • 무결성 검증
    블록체인에서 해시함수를 사용해 무결성을 검증하는 2가지 경우가 있다.
    1. 이전 블록의 값을 해싱하여 가르킨다. 이전 블록을 해싱한 값이 달라진 경우 해당블록 또는 이전블록에 위변조가 일어난것을 알 수 있다.
    2. 블록에 자정된 모든 트랜잭션을 머클트리 알고리즘을 사용해 하나의 해시값으로 저장한다. 트랜잭션이 하나라도 변경되면 해시값이 변경되므로 위변조를 알 수 있다.

  • 해시값을 사용해 채굴노드를 정함
    비트코인은 PoW방식을 사용해 어떤노드가 블록을 만들지 정한다. 특정조건을 만족하는 해시값을 만족하는 입력값인 논스(nonce)를 가장 먼저 찾는 노드에세 블록을 채굴한 권한을 주고 보상으로 비트코인을 제공한다.

암호해시함수

일반적으로 암호 해시 함수를 복호화하기 위해서는 수많은 무차별 대입을 시도해야 한다.
해시 함수의 출력값은 입력값이 조금만 달라져도 아예 다른 형태로 변하기 때문에, 출력값을 통해 입력값을 유추하는 것은 매우 어렵다.

암호해시함수 안정성

충돌 저항성

서로 다른 입력값을 해시함수를 통해 나온 출력값이 동일한 것이 충돌이라한다.
충돌 저항성은 서로 다른 두 입력값이 해시함수를 통해 같은 출력값을 가지게 되는 현상이 아직 발견되지 않은 상태를 말한다.
사실상 해시 함수의 입력값은 그 길이와 종류가 무한하지만, 입력값은 유한하기 때문에 누군가가 충돌하는 두 입력값을 발견할 가능성도 있다.
SHA-256의 출력값의 경우의 수는 2^256가 되므로 사실상 충돌하기 어렵다.

역상 저항성

  • 역상저항성은 해시함수가 특정한 값을 출력하는 입력값을 찾을 확률이 매우 낮을 경우를 의미한다.
  • 해시함수로 입력값을 통해 출력값을 얻을 수는 있지만, 출력값을 통해 입력값을 얻을 수는 없는 함수입니다.
  • 메시지의 해시값을 이용하면 원본을 공개하지 않고 진위성 검증이 가능하다.

제2역상 저항성

  • 제2역상 저항성은 충돌 저항성과 역상 저항성이 복합적으로 작용한 경우다.
  • 제2 역상 공격은 A 입력값을 통해 A' 라는 해시값이 나왔을 때, A' 해시값을 출력하게 만드는 B 입력값을 찾는 것입니다. 따라서 제2역상 저항성은 충돌 저항성이 전제되어야 한다.

0개의 댓글