해시와 해시함수가 뭔지 알아보자

in kr •  8 years ago  (edited)

암호학에 있어서 해시는 매우 중요한 요소이며
블록체인에도 마찬가지이다

보기만해도 현기증이 나겠지만 참고 한번 알아보자

IT 계열은 용어가 무진장 중요하다
또한 무진장 거지 같다
마치 10대 애들이 쓰는 은어 같은 수준인게 바로
IT 용어다. ㅇㄱㄹㅇ(이거리얼) 뭐 이런거?

대신 용어자체에 그 뜻이 함축되어 있어서
한번만 제대로 알면 그후 이해도에서 다른 사람과
엄청난 차이가 나게 된다

일단 용어의 일반적 뜻부터 알아보자

Hash : 잘게 썰고 섞어서 짬뽕
함수 : 상자와 수?

사실 함수라는 용어의 탄생은 아래와 같다

function [평션] -> 휭션(중국발음) -> 한션 -> 한슈


함수의 유래

한국어 용어들은 이런 식으로 다른나라에서 번역한걸
재번역해서 알아듣기 어려운게 많다

다만 함수의 경우는 예상외로 원래의 뜻에 굉장히
가까운 뜻이 되었는데 이왕이면 그냥 '함' 이었으면
더 나을지도 모르겠다

진짜 뜻과 우연찮게 유사함

여튼 함수의 의미는 수학시간에 지겹게 들어서 뭔지는 알겠지만
이게 또 정확히 모를 수도 있으니 다시 설명하겠다

함수는 함에 들어있는 모종의 장치로 인해서
입구에 뭔가를 넣으면
거기에 반응해 출구에 뭔가가 튀어나오는 것을 말한다

가장 대표적으로 자판기다

돈과 버튼 - 입구
나오는 것 - 결과물

이렇게 되는 것이다
여기서 맥심을 눌렀는데 콜라가 튀어나오는 참사는 없다
함수는 사용처에 따라 '그렇게' 설계해놓는다
예를들어 자동차의 핸들함수의 경우
오른쪽으로 돌렸을때(입력) 오른쪽으로 간다(출력)
왼쪽으로 가면 설계자가 싸이코거나 문제가 있는것이다

여하튼 우린 함수의 '설계'를 알 필요는 없다
단순히 그 함수가 용도에 맞게
뭔가를 넣으면 원하는 결과를 뱉게만 하면된다

결과만 원하는데로 나오면 내부는 어찌만들던
상관할바가 아니다

그럼 해시함수의 용도는 무엇이며
우리가 원하는 결과물은 뭘까

이해를 돕기 위해 다음의 예제를 보자


본래의 짜장면(원래의 데이터)


어이쿠(해시함수)


늦어서 죄송합니다 짜장면 시키셨죠?(해시당한 결과물)

대체 이것이 뭔가
우리가 원한게 멀쩡한 음식이 해쉬당해 음식 쓰레기가
되는 것이란 말인가?

음식점에서야 이딴 쓰레기 함수는 안쓰겠지만
암호학이라면 얘기가 다르다

암호학이 원하는 것은 짬뽕쓰레기 결과다
해커가 결과로부터 입력값을 절대 모르게 하기 위해서다

우리는 이것을 직접 실험해볼 수 있다
아래사이트로 가보자
http://www.convertstring.com/ko/Hash/SHA256

이 사이트는 자신의 입력을 해시함수가
어떻게 망쳐놓는지를 보여준다

이걸보면 확실히 해커가 나의 원래 입력을
결과로부터 알아낼 수가 없다는 것을 알것이다

근데 그래서 뭘 어쩌란 것인가
이걸 어떻게 쓰라구 라고 범인은 생각한다
하지만
암호학자들은

입력이 같으면 결과값도 같다

라는 사실에 주목하게 된다

200번 커피를 누른다고 그중 한번은 콜라를 뱉는게
아니라는 것이다
그것은 역으로 상대가 뭘 누른지 몰라도
커피가 나왔다면 커피버튼을 눌렀다는 확인이 된다는 것이다!

흔히들 보안업체가 말하는 변명(?) 같은게 있다
우린 패스워드를 암호화해서 실제론 모른다
이게 말인지 방구인지 잘 몰랐을 것이다
암호화했어도 자기네들이 가지고 있을테고
확인할려면 어차피 풀어야하는데 누가 푼단 말인가

여기서 바로 해시함수가 등장한다

쟤네들이 가진 그 암호화 된것이란 바로
짬뽕된 해시값을 뜻한다

그 해시값만 가지고 있다면 그 말대로 자기네들은
상대방의 암호를 알아낼수가 없는 것이다
하지만 상대방이 보낸 암호를 해시함수에 입력해서
결과가 자신들이 가진 해시값과 일치한다면?

그것은 진짜라는 것이 인증된다

해시함수를 통해
커피가 나왔으니 상대가 커피가 나오게 하는 입력을
넣은것이 확실하다는 것이다

이건 이전에 설명한 지갑에서 키파일의 작동방식이기도 하다
🔗이더리움 온라인 지갑을 만들어보자

키파일은 털려도 상관없다. 어차피 해시값일 뿐이니
거기서 원래값은 알아낼수 없다
우리가 지갑에 로그인할때 키파일을 주고
그 다음에 패스워드를 입력한다. 그럼 지갑은 그 패스워드를
바로 해시함수에 집어넣어 값을 뽑아낸다
이제 이 값과 키파일의 값을 비교,
일치하면 인증이 되는 것이다

이로써 해시에 대해서 어느정도 알았을 것이다
덤으로 외국인이 떡갈비에 대해서 물으면

'오우 잇츠 갈뷔해시~'

라고 자신있게 지껄일 부가지식까지 얻은 것이다
해시가 이렇게나 유용하다

빙수는? 아이스해쉬 오우..-ㅅ-~

함수는? 오우~... 오.. .. 예~

..뭐...그런 것이다
어쨋든 유용하고 생각보다 쉽다는 것이다

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

설명을 엄청 쉽게 잘해주시네요^^
좋은글 감사합니다^^

댓글 감사합니다 +_+/
새로운 댓글은 항상 아래에서 찾는데 짱님은 위에서
등장하시니 가끔 놓치네요 ㅎㅎ

제 스스로에게 보팅을 하느라 ㅋㅋㅋ

예전에 댓글 보팅에 가산점 주는 방안 나올려다가
말았는데 그게 아쉽네요 ㅎㅎ

어젠가는 될지도 모르죠^^
다음포크에..

보팅을 안할수가 없네요~

언제나 이해가쏙쏙되는 쉬운 설명 감사합니다ㅎㅎㅎ

다음편에는 트렌젝션 아이디 검색과 예상 컨펌시간등에대해서 부탁드려도될까요?

ㅎㄷㄷ 네 노력해보겠습니다 +_+/

기대하고있겠습니다! ㅎㅎㅎ

역시 트윈브레이드 님의 비유는 최고입니다 ^^

캄사합니다! 한글로는 처음으로 닉 언급된거 같습니다
맨날 트윈버드라고들 하시던데 ㅋㅋ

헐.. 블록체인만 아니였으면.. 숨길수 있었을텐데
망할 블록체인..;ㅁ;

쏙쏙 들어오는 설명 감사합니다.^^

댓글 감사합니다!

@twinbraid 님의 포스팅만 잘 모으면, 정말 이해하기 쉬운 백과사전 하나 만들어도 될것 같습니다~!!

ㅎ 과찬이십니다.. 십과사전이라면 가능할지도-0-

쉽게 설명해주셔서 감사합니다.
채굴관련 뉴스를 보면 해시레이트가 올라갔다라고 하는건 암호가 어려워 졌다 이런말이 되는건가요?

채굴에서 해시파워는.. 블록체인이 암호를 해시질해서 제시합니다
그럼 채굴자들이 그 암호를 맞추기위해서 노력하게됩니다
그때 노력의 방법은 암호를 해킹하는게 아니라
있는대로 쳐넣는거죠. 맞을때까지..
초당 얼마나 쳐넣을 수 있는가를 해시파워, 해시레이트라고 합니다
해시레이트가 올라갔다는 말은 그만큼 사람들 컴이 좋아졌다는 말입니다
더불어 좋아지면 좋아질수록 블록체인도 그에 맞춰서 난이도를 올리니까
캐는건 그만큼 어려워집니다

해쉬발명도 역대급인거 같아요 ㅎㅎ

다 역대급이죠.. 그냥 다 ㅋㅋ
하나도 모르겠음

감사합니다. 문돌이인데.. 이렇게 쉽게 설명해주시니 .. ㅎㅎ

ㅎㅎ 저두 초보라.. 제 눈높이가 낮습니다 아주 많이

설명 너무 재밌게 잘 하시네요 ㅋㅋㅋ 어이쿠(해시함수)

의외로 짜장면 엎은 그림이 없어서 고생했습니다
다 정상 짜장면뿐.. 건모형이 살렸습니다

감사합니다. 저같은 문돌이에겐 진짜 빛과 소금같은 글을 매번 포스팅해주십니다. ㅜ
구멍이 두갠데, 넣는 구멍으로 배출만 하고 나오는 구멍을 통해 역으로 들어갈 순 없는 상자인거군요!
51%의 해시 파워를 가진다는 것은 코인 거래를 암호화하는 '함수' 역할을 하는 그 상자, 즉 컴퓨터파워를 51% 확보한다는 걸로 이해되구요. 제가 맞게 이해한 거였으면 좋겠네여 ㅜ

정말 감사합니다!

아니 제 설명도 이상해서 다시 설명하겠습니다

51%의 해시파워를 가진다는 것은 컴퓨터파워를 51% 가진다는 말은 맞습니다
코인 거래를 암호화하고 풀고 전달하는 것도 컴퓨터가 맞고요
근데 해시파워는 암호화하는게 아니라 암호를 푸는 힘입니다
블록체인이 암호를 내고 컴퓨터가 그것을 푸는 것을 채굴이라고 하죠

헉 어렵네여 ㄷㄷ 어찌됐든 감사합니다! ㅋ

C6xx715V0AA4zAz.jpg

해시파워쪽하고 알려면 블록체인의 개념뿐만 아니라
어떻게 작동하는지도 알아야되므로 일단은 저것만 이해하셔도 됩니다
저도 블록체인의 작동쪽은 긴가민가하거든요 ㅎ

보팅 잘보고갑니다 ^^

감사합니다!

어이쿠 저부분이 왜이리 웃긴지 웃고갑니다~~~

ㅎㅎ 감사합니다!

ㅋㅋ 떡갈비 짱입니다요.

이젠 떡갈비를 먹을때마다 해시를 떠올리는겁니다

해시에 대해서 재밌게 이해했습니다 😆

감사합니다 😆

그래서 해시값이 털려도 상관없는거군요. 감사합니다.

비번을 털면 해시값이 나오지만 해시값을 털면 진짜 아무것도 없죠

해시에 대한글을 읽다가...뜬금없이 짜장면이 급땡기는 1인입니다. 잘보고갑니다^^

저도 사진 찾다가 짜장면이 땡겨서
시켜먹었습니다..ㅡ,.ㅡ;;

경영정보론 수업때 잠깐 들었던 해시함수네요
수업보다 더 쉽게 이해되는 것 같습니다
좋은 글 감사합니다 :)

경영에서도 해시를 배우나요? -0- 오

약간 보안쪽 공부하다가 교수님께서 잠깐 언급해주셨습니다 ㅎㅎ

글쿤요 ㅎㅎ

어려운 내용 쉽게 설명해주셔서 감사합니다.!

궁금한점이 있습니다만, 여쭤봐도 될런지..
결국 함수라는것은 비유하신 '함' 안에서 일정한 알고리즘을 가지고 작동하는것을 의미하고, 해쉬 함수도 우리가 보기에는 무작위적이라고 하겠지만, 결과적으로는 함수이기 때문에 알수없는 '규칙'의 일종인지 궁금합니다.
'랜덤'이라는 정의가 과연 해킹하는 컴퓨터에게도 랜덤인것인지 아니면 복잡하게 얽혀있는 규칙인지가 핵심이라고 할 수 있겠네요

해쉬 함수는 알고리즘이 공개되어 있습니다. 단지 역함수가 존재하지 않습니다
단방향함수라고 해서 x에서 y를 구할 수는 있지만 y에서 x를 구할 수는 없죠
저기 사이트에 가보시면 알겠지만 아무리 긴 문장이라도 64자로 압축해버립니다
그 과정에서 정보가 손실되죠. 손실된 정보에서 원 정보를 복원할 수 있을까요? 안되죠
예를들면 함수안에 7로 나눠서 나머지는 버린다 라는 설계가 들어갔다면
10이 들어가면 1이 되죠. 이 1로 원 정보가 뭐였는지 알수가 없죠.
다만 이경우는 답이 여러개가 되겠지만 해시함수는 그렇게도 안되게
뭔가 가공하고 공포스러운 설계들이 들어있을겁니다

그렇군요. 랜덤형태가 아니라 역함수를 추정할 수 없도록 알고리즘을 짜내는 것이였네요! 확실히 이해가 갑니다. 세세한 설명 감사합니다 ^^

절대로 불가능한건가요? 만약 양자컴퓨터가 발달돼서, 엄청난 경우의 수를 단시간에 다 계산해낼 수 있다고 가정해도 해쉬함수에 역으로 결과값을 집어넣어서 원값을 추출해낼 수 없는 건가용?

좋은 글 감사합니다! ㅋ

Loading...

그럼 가능할지도 모르겠습니다만.. 저도 해시내부는 잘 모릅니다..ㅠㅠ;
다만 손실된 정보는 복원이 불가능하지 않을까요
예를들어 삼국지 전편을 잡아넣어도 글자가 64가 되어버립니다
거기서 삼국지 스토리를 뽑아낸다는건 힘들거 같네요
한편 짧다면 가능할 거 같네요

아주 실감나게 설명을 해주셔서 이해가 됩니다.
좋은 글 감사합니다.

감사합니다+_+/

처음들을때 이게 뭔가 했었죠..ㅎ 설명 잘 듣고갑니다.

이제 내가 이해하는게 아니라 참 주위분들에게 설명을 많이 하게 되네요

저도 아는 게 적은데
어쩌다가 설명포지션에 와버렸네요 ㅎㅎ;
코인의 코짜도 몰랐는데;

알기쉽게 설명해 주셔서 감사합니다 ㅎㅎㅎ

댓글 감사합니다 😆

항상 궁금했는데 비유를 알기 쉽게 해 주셔서 이해가 잘 되네요. 잘 보고 갑니다!

감사합니다+_+/

우와 설명보다 그림 찾아서 넣으시는게 더 시간 오래 걸리셨을듯합니다. ㅎ
쉽게 설명해주셔서 감사드립니다

짜장면이 너무 힘들었습니다. 죄다 멀쩡한 짜장면만 나와서
예전에 어디서 철가방 뒤엎은거 본적 있는데..
이젠 그런거 보면 마구 저장해둬야겠습니다;;

  ·  7 years ago (edited)

정말 설명 최고네요. 추천 안눌를려고 하는데 ㅋ

헤헤 감사합니다

어려운 용어들이 난무해서 어려웠는데 정말 쉽게 잘설명해 주셔서 그 전에 반정도 이해 되었던 다른 분들의 포스팅을 다시 읽어 보니 무슨말인지 이젠 이해가 많이 되었습니다. 좋은 설명 감사합니다. 도움받고 갑니다. 팔로우 할께요.

감사합니다. 앞으로 자주 뵈영

저희에겐 이런 설명이 필요하죠~

댓글 감사합니당+_+/

수학을 전공하면서 암호학 수업을 듣던때가 기억이 납니다. ^^

으앗 수학 전공자이시군요
제가 번데기 앞에서 주름을..-0-

쉽게 설명해주셨네요ㅎㅎ 감사합니다

감사합니다 +_+/

설명을 너무 잘해주십니다 엄지척!!

엄지척!👍👍

좋은 글 감사합니다
시간 날때마다 틈틈히 복습해야겟네요

학생들이 이해하기 쉽게 정말 적절한
비유를 섞어가면서 얘기를 풀어주시다니
당신은 진정 명강사십니다.
저희 학교로 와주시면 안되나요? ㅋㅋㅋ

정말 재미있고 유용해요! Follow 하고 새로운 글 올라오면 옛날 글도 찾아보니 오늘은 무려 5개월 전 글에 댓글 달아봅니다 ㅎㅎㅎ

쉽게 설명해 주셔서 감사합니다. 질문도 하나 있습니다. 해시값으로 입력값 유추가 불가능한건 이해가 가는데, 다른 입력에 대해서 같은 해시가 생성되는 경우는 없는지요?

지리는 설명입니다