[문과도 읽히는 기술] 암호화폐는 블록체인이 전부가 아니야!! 1) 암호화

in #coinkorea7 years ago (edited)

안녕하세요?

주말에 올릴 거 없어서 써 보는 암호화폐 기술 글이예요
관련전공 아니더라도 이해는 할 수 있도록 써 보았고,
실제 문과 형님 한 분께 검증을 마쳐 보고 올려 봅니다.

유용하다면 UpVote + 리스팀 부탁드려요~

다음 글: 2. 블록체인




스크린샷 2018-01-08 오전 12.24.45.png


다들 암호화폐라고 하면 블록체인을 먼저 떠오르게 되죠.
하지만, 막연하게 암호화폐가 블록체인 기술을 차용하여 쓰였다는 것만 알 뿐,
어떻게 이놈들이 동작하는 지는 제대로 알 길이 없었어요.


스크린샷 2018-01-08 오전 12.25.06.png


사실은요, 암호화폐는 블록체인이 전부가 아니랍니다.


스크린샷 2018-01-08 오전 12.34.01.png


암호화, 블록체인, 검사(Validation) 등의 기술이 합쳐진 산물입니다!

그래서 위 기술들을 한 꼭지 한 꼭지씩 짚어 나가려고 해요.


스크린샷 2018-01-08 오전 12.38.00.png


그래서 이번에 설명드릴 건 암호화입니다!


스크린샷 2018-01-08 오전 12.38.45.png


이번 파트를 잘 이해하게 되면
왜 스티밋 포털에 비밀번호를 관리자도 복구할 방법이 없다고 하는 지
어느 정도 느낌이 올 것입니다.


스크린샷 2018-01-08 오전 12.42.00.png


보통 우리가 생각하는 매커니즘은 다음과 같죠

  1. ID와 비번을 입력받는다.
  2. 서버의 어딘가에 있는 비밀번호와 비교한다.
  3. 일치하면 로그인 허용해주고, 틀리면 거부한다.

그런데, 이렇게 되면 하나의 문제가 발생하게 됩니다.


스크린샷 2018-01-08 오전 12.43.27.png

DB가 털리면 어떻게 될까요?



정말 답이 안 나옵니다.
여기 뿐만 아니라 다른 사이트에서도 털리게 되겠죠.
실제로 허술하게 방비하여 비밀번호, 주민번호 등이 털린 사례를 뉴스로 많이 보았죠.


스크린샷 2018-01-08 오전 12.46.25.png


그럼 보통 위 2개 같은 생각을 많이 하게 되죠.


스크린샷 2018-01-08 오전 12.47.05.png


보안은 당연히 빡세게 해야 하고,
이제 엔지니어들은 DB가 털려도 쓸모 없게 만드는 것에 집중하게 됩니다.

바로 암호화인데요


스크린샷 2018-01-08 오전 12.50.40.png


암호화의 핵심은 위와 같겠습니다.


스크린샷 2018-01-08 오전 12.53.15.png


일방향성이란,
개인의 입력을 암호화할 수는 있지만,
암호화된 데이터를 도로 개인의 입력으로 되돌릴 수 없는 성질을 의미합니다.

이해가 잘 안된다고요?


스크린샷 2018-01-08 오전 12.55.32.png


사진을 모자이크할 순 있지만,
모자이크한 사진을 되돌릴 순 없죠?
이런 원리를 생각하시면 됩니다. :)


스크린샷 2018-01-08 오전 12.56.55.png


일관성이란, 같은 입력에 관해서는 무조건 같은 결과가 나와야 한다는 것입니다.

1234를

프론트에서 암호화하든,
자바스크립트에서 하든,
파이썬에서 하든,
12시에 하든,
6시에 하든

계속 같은 결과가 나와야 한다는 것이죠.


스크린샷 2018-01-08 오전 12.59.04.png


1234를 SHA256이란 암호화 알고리즘으로 암호화 해 보았어요.

위는 파이썬 코드고, 아래는 웹에서 해 본 겁니다.

둘다 결과가 똑같은 것을 보실 수 있습니다.


스크린샷 2018-01-08 오전 12.56.55.png


그래서 로그인을 수행할 때,
서버는 사용자가 뭐라고 쳤는지는 몰라요.
그저 암호화된 비밀번호를 받을 뿐이죠.
그리고 회원가입할 때 저장했던 암호화된 비밀번호화 비교하죠.

암호화된 걸로 비교해서
같으면 로그인 허용, 아니면 불가
정도로 판단해요.


스크린샷 2018-01-08 오전 1.03.20.png


그래서 서버는
암호화된 걸로 비교해서
같으면 로그인 허용, 아니면 불가
정도로 판단해요.


스크린샷 2018-01-08 오전 1.04.45.png


우리가 이걸 다 일일이 개발할 필요는 없어요.

기업의 돈을 받아 대학 랩에서 개발을 하게 되고요,
우리는 라이브러리가 공개되면 가져다 쓰면 됩니다. ㅋㅋ
(오픈소스 만쉐이~!)


스크린샷 2018-01-08 오전 1.08.07.png


이 일련의 암호화 과정을
개발자들은 Hashing이라고 읽습니다.


스크린샷 2018-01-08 오전 1.10.55.png


그럼 한 번 거래를 암호화해보겠습니다.
이건 그저 어떻게 암호화가 될까 하는 실습 정도고요,
실제의 구현과는 매우 다르며, 훨씬 많은 파라미터가 관여함을 일러 둡니다! :)


스크린샷 2018-01-08 오전 1.12.12.png


바로 전 거래의 Hash: 0xad9ae6a285789c4d73cc59c60a66b5905660ee825c7660078e9f5add6ac2834b
생성시간: Jan-07-2018 04:15:26
보내는이: 0x390de26d772d2e2005c6d1d24afc902bae37a4bb
받는이: 0xb9f872e5ba2b7fe26200e6811dc2e69fb7fbb006
금액 0.4

위와 같은 거래가 있었다고 해 보죠.
그럼 어떻게 암호화가 될까요?


스크린샷 2018-01-08 오전 1.13.51.png


별 거 없어요.
그냥 다 박아서 암호화 돌리면 됩니다.

이 때, 아래와 같은 Hash값을 받아볼 수 있습니다.

스크린샷 2018-01-08 오전 1.14.50.png


그런데, 누가 나한테 송금하는 과정에서,
0.4 이더가 송금되는 와중에, 나는 1.0을 받고 싶어요.
그래서 장부의 금액을 바꿔치기 했어요.

그럼 어떻게 될까요?


스크린샷 2018-01-08 오전 1.16.02.png


0.4가 1.0으로 바뀌었을 뿐인데, 이렇게 확 바뀝니다!!
그걸 보고 우리는 이 장부 데이터가 해킹되었다고 판단을 할 수 있게 됩니다.

이런 성질때문에, 거래 검증에 이 Hashing 알고리즘을 사용하게 됩니다.




이야기는 2. 블록체인 편으로 이어지게 됩니다.

유용하다면 UpVote + 리스팀 부탁드려요 ^_-)/

Sort:  

저 문과 출신이고 386인데 이해 잘가요 ㅎㅎ
유용한 정보였습니다. 감사합니다.

북마크 추가할게요. 팔로우 해봤자 잘 안보거든요.
블록체인편 기대할게요 ㅎㅎ

감사합니다!
방금 블록체인 편 올렸습니다 :)
이제 검증편 올리고 자야겠... ㅋㅋㅋ

오 술술 읽히는 글! 많은 도움 되었습니다 :)
다음편들도 읽으러 갑니당👍👍

감사합니다 :)
출근길에 그여자 그남자 읽으러 놀러갈게용~~

이해가 쏙쏙되네요 ㅎ 좋은 글 감사드립니다 ㅋ

감사합니다 :)
다음에 또 와주세요 ㅎㅎ

재밌게잘보고갑니다!

감사합니다 :)
재밌었다니 다행이네요 ㅎ

잘 보고 갑니다!

감사합니다 :) 다음 주 포스팅때서 보아요 ㅎㅎ