## 암호 Hash Function
### Hash Function 이란?
* 입력값을 받고
* 고정된 결과값을 내보낸다 (256 bits)
* 입력값에서 결과값을 내는 부분은 아주 간단하게 계산 가능하다
### 중요 요소
* Collision-free (충돌 방지?)
* 출처 https://ammarhasayen.com/2015/02/17/hash-function-simplified-in-cool-slides/
* 두 입력값이 다르면, 결과값도 달라야 한다 (일반적으로)
* 종종 충돌이 발생하지만, 확률이 매우 희박하다
* 이 세상에 있는 모든 것들을 256 bits 로 표현한다고 하면?
* 충돌은 불가피하다
* **하지만 일반인이 일반 컴퓨터를 가지고 쉽게 충돌을 찾게 못하게 하는 것**
* 충돌을 찾는 방법은?
* 2^130 개의 랜덤한 입력값을 준다면 99.8 % 확률로 두 입력값이 충돌한다는 걸 찾을 수 있다.
* 이는 매우 많은 연산이 필요로 한다
* 반대로 생각해보면 두 개의 해시 결과값이 같다면, 두 입력값이 매우 높은 확률로 같다고 가정할 수 있다.
* hiding
* hash는 어떤 값으로의 매칭 뿐만 아니라 암호화에서도 사용한다
* 우리가 암호화한 결과인 값으로부터 입력값을 유추하지 못하게 한다.
* puzzle friendly
* 비트코인 마이닝에서 사용되는 부분이다.
* 주어진 puzzle id 에 대하여 결과값들의 집합인 Y의 원소를 만들 수 있는 x를 구한다면?
* 랜덤한 x를 선택해서 puzzle id를 통해 Y에 값이 있는지 하나하나 확인해보는 수 밖에 없다.
kr, 비트코인, bitcoin, coin, 가상화폐, 암호화폐, 블록체인, steem, blog, steemit, 기술, 강의, 프린스턴, 코세라