해시란 무엇입니까?

🎥 비디오 에디션: https://youtu.be/4ZCkepEFUbQ?list=PL03wjfWlJGQc-wWx0jC5dHvI0qmGZhp02

해시 함수는 단순히 임의 길이의 입력 X를 고정 길이 n의 출력 h(x)에 매핑하는 함수입니다.



” The input to a hash function is called a pre-image, the message, or
simply the input data. The output is called the hash"
--Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood



간단히 말해서 입력이 아무리 길거나 짧더라도 해시 함수는 항상 고정된 크기의 결과를 제공합니다.

해시 함수에는 두 가지 속성이 있습니다.
  • 압축(위에 설명)
  • 계산하기 쉽습니다. h와 x가 주어지면 h(x)를 쉽게 계산할 수 있습니다
  • .
  • 참고: 해시는 데이터를 고유하게 나타내기 때문에 일부 데이터의 디지털 지문이라고도 합니다. 데이터를 수정하면 다른 해시가 계산되므로 데이터가 수정되었다고 안전하게 말할 수 있습니다 --> 지문이 변경되었습니다*

  • 암호화 해시란 무엇입니까?



    암호화 해시 함수가 되려면 해시 함수가 더 많은 속성을 충족해야 합니다. 그것들을 살펴봅시다.

    1) 사전 이미지 저항

    "If a function h is a one-way-function, then a function h-1 does not
    exist. It is therefore computationally infeasible to find the input
    to an output of h"
    -- Gallersdörfer, U., Holl, P., & Matthes, F. (2020). "Blockchain-based Systems Engineering". Lecture Slides



    이는 기존 해시 값에서 입력 값을 가져오는 함수가 없음을 의미합니다(따라서 입력에서 해시까지 단방향이라고 하지만 반대 방향은 아님).

    2) 2차 프리이미지 저항

    "Given x it is computationally infeasible to find any second input x’ with x != x’ such that h(x) = h(x’)."
    -- Gallersdörfer, U., Holl, P., & Matthes, F. (2020). "Blockchain-based Systems Engineering". Lecture Slides



    즉, 입력과 해시가 있는 경우 동일한 해시를 생성하는 다른 입력을 찾기가 매우 어렵습니다.

    3) 충돌 저항

    "A hash function h is said to be collision resistant if it is infeasible to find two values, x and y, such that x != y, yet h(x) = h(y)."
    -- Gallersdörfer, U., Holl, P., & Matthes, F. (2020). "Blockchain-based Systems Engineering". Lecture Slides



    충돌 저항을 통해 우리의 해시 함수는 임의 길이의 두 개의 다른 입력이 동일한 해시를 생성하지 않도록 합니다.

    나는 당신이 생각하는 것을 압니다, 이것은 2차 사전 이미지 저항과 같지 않습니까? 저도 이것에 대해 생각했고 이것에 대한 아주 좋은 설명을 찾았습니다 👇

    Collision resistance always implies property second preimage
    resistance but does not imply preimage resistance. The properties of
    second preimage resistance and collision resistance may seem similar
    but the difference is that in the case of second preimage resistance,
    the attacker is given a message to start with, but for collision
    resistance no message is given
    ; it is simply up to the attacker to
    find any two messages that yield the same hash value.
    --Merkle-Damgård Construction Method and Alternatives: A Review. By Harshvardhan Tiwari



    해싱!= 암호화



    이를 명확히 하기 위해 해싱은 암호화가 아닙니다. 암호화 알고리즘을 사용하여 일부 민감한 정보를 암호화하지만 향후 복호화를 목표로, 즉 해싱 기능이 불가능함(단방향 속성 기억)

    해싱 사용 사례



    • 데이터 핑거프린팅

    • 메시지 무결성(오류 감지)

    • 인증

    • 정보 숨기기

    • 정보 제공(예: 투표)

    공개 Ethereum 주소는 실제로 해시이기도 합니다.



    공개 이더리움 주소도 해시라는 사실을 알고 계셨나요?

    다음은 이더리움이 공개 주소를 생성하는 간단한 흐름입니다.
  • 임의로 생성된 숫자 k로 시작하여 elliptic curve multiplication을 사용합니다.
    개인 키(k) 생성 및 공개 키 파생
    (케이) 그것으로부터.
  • Keccak-256을 사용하여 공개 키의 해시를 계산합니다.

  • Keccak256(K) =
    
    2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    


  • 우리는 마지막 20바이트를 유지하는데, 이것이 우리의 이더리움 주소입니다
  • .

    001d3f1ef827552ae1114027bd3ecf1f086ba0f9

    주소가 16진수임을 분명히 하기 위해 앞에 0x를 추가하는 경우가 많습니다.

    요약


  • 해시 함수는 입력을 고정 출력에 매핑합니다
  • .
  • 이 3가지 속성(사전 이미지 | 2차 이미지 저항성 | 충돌 저항성)을 해시 함수에 추가하면 암호화 해시 함수
  • 를 얻습니다.
  • 해시는 메시지 무결성 및 정보 숨기기와 같은 많은 작업에 유용합니다(블록체인 이전에도).
  • 공개 Ethereum 주소는 keccak-256 해시 함수의 결과입니다
  • .

    자원


  • TUM Gallersdörfer, U., Holl, P., & Matthes, F.(2020)의 강의 슬라이드. "블록체인 기반 시스템 엔지니어링"
  • Merkle-Damgård 건설 방법 및 대안: 검토. 작성자: Harshvardhan Tiwari
  • Mastering Ethereum, 저: Andreas M. Antonopoulos, Gavin Wood
  • 좋은 웹페이지 즐겨찾기