이온 사용 인공뉴런의 발견

프랑스와 영국의 과학자들이 사이언스 지에 획기적인 연구 결과를 발표하였다. 비록 그들이 보여준 것은 프로토타입에 불과하지만 전자를 사용하지 않고 이온을 사용한다는 점에서 획기적이다.

기존의 AI는 전자를 사용하기 때문에 막대한 전력(에너지)을 사용해야 하는 문제를 해결하지 못하고 있다. 만약 이온을 사용한 인공두뇌가 본격적으로 개발될 수 있다면 그 문제를 해결할 길이 열리는 것이다.

관련 내용은 아래 링크 기사에 있다.

“인간의 뇌 모방한 인공 뉴런 개발”(The Science Times, 2021/08/18) 

인간과 AI의 공존을 위한 대안의 모색

원본은 2019년 10월에, 한글본은 2021년 6월에 출판되었다. 왼쪽은 아마존 킨들 버전 표지이고 오른편은 한글 버전 표지이다.

최근 스튜어트 러셀 교수(Stuart Russell, UC Berkeley)가 또 하나의 역작을 냈다. 1995년 그가 구글의 피터 노빅(Peter Norvig)과 함께 출간한 Artificial Intelligence: A Modern Approach(옆 사진)는 AI에 관해 가장 널리 사용되는 교과서가 되었으며, 내 수업에서도 AI의 정의와 관련된 몇개의 장(chapter)이 소개되었다.

새 저서에서 러셀 교수가 제시한 주장을 간략히 요약하면 다음과 같다: 1) 머지않은 미래에 초지능(super-intelligence) AI가 출현할 것이다. 2) 그것은 인류에 중대한 위협이 될 수 있다. 3) 그러나 우리가 지금부터 AI의 개발 방향을 잘 잡아간다면 인간과 AI가 평화롭게 공존할 수 있을 것이다. 4) 그 방향은 “증명가능하게 이로운 AI(provably beneficial AI)”로 집약된다.

인공지능(Artificial Intelligence, AI)은 지능을 지닌 기계(intelligent machine)이다. 인공이라는 수식어는 자연발생적이 아니라 누군가(대체로 인간)에 의해 만들어졌다는 의미이고 지능이라는 명사와 합쳐져서 지능을 지닌 기계라는 특정한 의미를 지니게 된다. 여기서 기계는 물리적 외형을 가질 수도 있고 컴퓨터에 탑재된 소프트웨어일 수도 있다.  문제는 지능이 무엇인가 혹은 지능을 지녔다는 의미가 무엇인가이다.

러셀 교수는 지능을 다음과 같이 정의한다. “대강 말하자면, 한 존재는 자신이 하는 일이 자신이 지각해온 것을 토대로 자신이 원하는 것을 성취할 가능성이 있는 한 지적이다”(Roughly speaking, an entity is intelligent to the extent that what it does is likely to achieve what it wants, given what it has perceived)(p. 33. 이 글에서 인용 표기는 한글 버전의 쪽이다). 이 정의에는 인지(perception), 행동(action), 목표의 성취(achievement of objectives)라는 세 가지 요소가 담겨있다. 즉, 어떤 존재가 자신의(혹은 주어진) 목표를 갖고 있으며, 그와 관련해서 환경을 파악하고 그 목표를 성취하기 위해 행동하면 그 존재는 지적이(intelligent)라고 규정할 수 있다는 것이다.

필자는 지능에 관한 이 정의를 지지한다. 사실 필자는 3년 전에 지능에 대해 그와 유사한 정의를 내린 적이 있다(지능이라는 이름의 개임(4)). 당시에 필자는 환경에서의 생존을 모든 존재의 공통적이고 근본적인 목표로 보았기 때문에 지능을 환경으로부터의 도전에서 살아남는 능력이라고 규정하였다. 러셀 교수의 정의는 필자의 것보다 더욱 다양한 목표를 포용할 수 있다는 장점을 갖고 있다.

러셀은 현재 인공지능의 연구와 산업 분야에서 통용되고 있는 ‘표준적인 모형'(standard model of AI)에 이의를 제기한다. 그것은 인간이 부여한 정해진 목표를 기계가 최적화한다는 모형이다. 기계는 목표와 데이터가 주어지면, 목표로부터의 오차(사실 오차 제곱, 비용함수라고 부름)를 최소화하는 방식으로 학습하여 성취 능력을 향상시킬 수 있다. 최근에는 주어진 보상체계에 의지해서 기계 스스로 능력을 높여나가는 강화학습 모형이 널리 사용되고 있다. 

러셀은 실제로 초지능 AI(일반적 AI, general AI라고도 불림)의 개발을 목표로 하는 연구자나 기업이 존재하고 있고, 설령 그것을 목표로 삼지 않더라도 연구자들이 특수한 용도의 AI를 개발하는 과정에서 초지능 AI가 출현할 수 있다고 지적한다.

문제는 만약 궁극적으로 인간에 의해 통제받도록 설계되지 않으면 초지능 AI는 인간의 이익보다 AI 자신의 이익을 우선적으로 추구할 수도 있으며, 인간의 통제를 완전히 벗어날 수 있다는 것이다. 인간은 AI의 전기 코드조차 뽑지 못할 수도 있다. AI는 그러한 인간의 시도를 거부하고 방해할 수 있기 때문이다. 러셀에 의하면 현재의 표준 모형에 의한 AI의 연구와 개발은 언젠가 그러한 통제불능의 초지능 AI의 출현을 초래할 가능성이 높다.

초지능 AI의 관점에서 보면 그 AI의 표준 모형이야말로 AI 연구의 잘못된 길의 출발점이라는 것이 그의 주장이다. 그는 완전히 자율적인 초지능 AI의 출현을 차단하는 대안으로 그 표준모형을 대체할 지적이면서 이로운 기계(intelligent and beneficial machine) 모형을 제시한다. ‘지적인 기계(intelligent machine)’만으로는 충분하지 않다는 것이다. 그것은 지적인 동시에 반드시 ‘이로운 기계(beneficial machine)’이어야 한다.

러셀은 이로운 기계를 만들기 위한 세 가지 원칙을 제시한다. 첫째, 기계의 목적은 오로지 인간 선호의 실현을 최대화하는 것(이타성의 원칙)이어야 하며, 둘째, 기계는 그 선호가 무엇인지 처음에는 확실히 알지 못하고(겸손의 원칙), 셋째, 인간의 선호에 관한 정보의 궁극적 원천은 인간의 행동이다(인간 관찰의 원칙). 다시 말하면, AI는 어떤 경우에도 자신 혹은 자신의 존재를 인간의 선호보다 우위에 두어서는 안되며, AI는 목표에 대한 판단이 헷갈릴 때는 그것을 인간에게 묻거나 인간의 행동에 대한 관찰을 통해서 파악해야 한다. 어떤 경우에도 인간의 선호를 다 알고 있듯이 행동해서는 안된다는 것이다. 

러셀은 그러한 ‘증명가능하게 이로운’ AI 모형의 장래에 관해 낙관적이다. 그는 무엇보다 그러한 AI 모형이 표준적인 AI 모형보다 투자 기업들에게 더 매력적이며, 또한 인간의 선호를 학습하는데 필요한 자료가 아주 풍부하기 때문이라는 것이다.

이상은 책에 제시된 러셀 교수의 주장에 대한 간략한 요약이다. 그 책에 대한 요약은 아니다. 그 책에는 AI 발전에 관한 전망, AI의 오용에 대한 논의, 초지능 AI에 관한 다양한 주장과 태도에 대한 비판 등 AI와 관련된 다양하고 많은 논쟁과 그에 대한 논리적 검증이 제시되어 있다.

그 책에는 AI의 미래에 관해 다소 지루할 정도로 다양한 논의가 제시되고 있다. 어떤 독자는 그런 논의가 흥미롭다고 느낄 것이고 나아가 어떤 독자는 그러한 논의로부터 참신한 발상을 얻을 수도 있을 것이다. 여기서도 그러한 논의를 모두 사상하고 러셀 교수의 주장만 간추려 보았다. 그것만으로도 그 책은 충분한 가치를 지닌다고 생각되기 때문이다. (2021-07-25).  

정보에 관한 지식기반 이론

2010년에 발표된 정보에 관한 지식기반 이론(Konwledge-Based Theory of Information, 이하 KBI)은 DIKW 모형을 개념적으로 계승하면서 한 단계 더 나이가 데이터, 정보, 지식 사이의 관계를 정교하게 규정하고 있다. KBI는 지식과 데이터가 상호작용하여 정보를 생성한다는 의미에서 상호작용적 모형(interactive model)이라고도 불린다.

KBI는 정보가 지식과 데이터로부터 생성된다는 인식에서 출발한다. 데이터는 상황에 관한 선결조건(pre-conditions) 혹은 투입값(input values)이며, 그것을 기반으로 정보가 생산된다. 정보는 주어진 상황에서 행위자가 의사결정 혹은 행동의 선택을 가능하게 하는 요소이다.  지식은 데이터로부터 정보가 생산되는 과정 혹은 프레임워크이다(아래 그림 참조).

KBI에서, 데이터는 “객체나 사건에 관한 서술 혹은 측정 결과”이다.  예컨대 “A형 부품이 17개 남아 있다” 혹은 “비가 내리고 있다”가 데이터이다. 이 데이터만으로서는 의사결정이나 행동을 선택하는데 필요한 정보가 생성될 수 없다. 거기에는 반드시 지식이 필요하다.

지식은 “구성물 사이의 관계에 대한 정당화된 진실된 믿음이다(is justified true belief of the relationship between constructs).” 이 정의를 풀어보면, 지식은 믿음의 한 유형인데, 그것은 진실이거나 진실에 접근하는 것이어야 하며,  전문가나 권위자에 의해 인정된 것이어야 한다. 다시 말해, 지식은 객관적으로 검증된 믿음, 권위있는 전문가들에 의해 인정된(혹은 합의된) 믿음이다.

그리고 지식은 구성물 사이의 관계에 대한 믿음이다. 지식의 가장 흔한 형식은 If-Then 짝이다. 예컨대 어떤 새가 백조라면, 그 새는 하얄 것이다라는 명제는 지식이다. 

정보는 지식 프레임워크(framework)를 토대로 데이터로부터 생산된 의미(meaning)이다. 의미란 어떤 경험에 부여된 해석을 말한다. 정보에 의해 선택, 판단, 혹은 불확실성의 감소가 일어난다.

아래 사례들을 보면, 지식, 데이터, 정보에 대한 KBI의 핵심적인 주장이 이해될 것이다.

(사례 1)

지식: 만약 A형의 부품의 재고가 20개 이하이면, 부품 부족을 예방하기 위해 A형의 부품을 주문해야 한다.

데이터: A형의 부품이 17개 남아 있다.

위의 지식과 데이터가 결합되면, A형 부품을 3개 이상 주문해야 한다는 정보가 생성된다. 

(사례 2)

지식: 만약 비가 내리고, 당신이 비를 맞기 싫어한다면, 외출하기 전에 우산을 챙겨야 한다.

데이터: 비가 내리고 있다.

정보: 위 지식과 데이터가 결합되면, 우산을 챙기라는 정보가 생산된다.

 KBI를 자율주행 자동차에 적용해 보면, 우선 자동차는 교통데이터, 도로데이터, 기후데이터, 사건데이터 등을 처리할 수 있는 데이터분석 모형이 필요할 것이다. 그리고 도로 상황, 교통 상황, 기후 상황, 사건 상황에 관한 데이터를 실시간으로 받을 수 있는 센서(sensor)나 네트워크이 필요할 것이다. 데이터 분석 모형은 지식 프레임워크에 해당되고, 센서에서 입력되는 신호는 데이터이다. 데이터 분석 모형이 센서 데이터를 받으면 실시간으로 액츄에이터(actuator)가 행동할 수 있는 정보를 생산할 것이다. 그 기능을 모두 갖춘 AI가 자동차에 내장되면 자율주행 자동차가 만들어 질 것이다.   

참고문헌: Kettinger, William J and Yuan Li (2010). “The infological equation extended: towards conceptual clarity in the relationship between data, information and knowledge,” European Journal of Information Systems, 19(4): 409-421.

지능이라는 이름의 게임(18): 집단지능과 블록체인(10)

관련 이미지

블록체인은 분산원장(distributed ledger)이다. 즉, 블록체인이라는 원장을 구성원 모두에게 공유토록 하는 시스템이다.

그런데, 블록 체인의 거래가 크게 증가하고 참여자가 아주 많아지면 블록과 블록체인에 담긴 데이터의 양–대부분 거래 기록(transaction list)이겠지만–이 폭발적으로 증가할 것이다. 그러면 데이터의 유효성이나 무결성 검증에 있어 효율성 확보가 심각한 문제로 대두될 수 있다.

더구나 구성원들의 블록체인 참여는 인터넷에 연결된 단말기를 통해서 이루어지는데 단말기의 성능이 제각각일 것이다. 어떤 참여자들은 스마트폰 앱을 사용하기도 할 것이다. 거래 원장의 공유라는 원칙을, 그런 참여자들까지 포함해서 블록체인 참여자 모두가 과연 어떻게 따르게 할 수 있을까?

그러한 문제를 해결하는 요소 기술이 머클 루트(Merkle root)–루트 해시(root hash)라고도 부름–이다. 머클 루트는 해싱을 이용하여 누적된 거래 기록을 최대한 가볍게, 그러면서도 신뢰를 창출하는 원래 기능을 유지하게 해주는 데이터 축소 방법이다. 아래 그림은 모의 블록체인이고, 각 블록의 헤더(block header)는 머클 루트를 가지고 있다.

How can merkle trees help validate the content of a block in a ...

머클 루트는 다음과 같은 방식으로 생성된다. 아래 그림을 가지고 설명한다.

나무–이 나무를 Merkle tree라고 부른다–의 가장 바닥에 있는 각 거래(Transaction A, B, C, D)는 해싱되어 Hash A, B, C, D가 된다. 그런 다음 그 해시들은 두 개씩 짝을 지어 다시 해싱된다. Hash A와 B는 Hash AB로 해싱되고, Hash C와 D는 Hash CD로 해싱된다. 그리고 그 두 해시는 다시 결합, 해싱되어 머클 루트(Merkle Root/Root Hash)를 형성하게 된다. 머클 루트에는 나무의 바닥에 있는 거래 기록 자체는 포함되지 않고 해시들만 포함되어 있다. 이렇게 사다리 타기 하듯이 연쇄적으로 해싱하면 아무리 많은 데이터라도 매우 가벼운 머클 루트로 변환될 수 있다.

이 머클 루트가 블록 헤더(header)에 포함되어 있으면 블록 바디(body)에 있는 거래 기록을 빼고 블록 헤더만 포함시켜 해싱을 해도 데이터의 무결성과 유효성이 충분히 검증될 수 있다. 그리고 블록 헤더에 담긴 머클 루트는, 그 블록에 포함된 거래 기록들의 머클 루트를 계산해서 비교해 보면, 그것의 유효성을 확인할 수 있다.

머클 루트는, 많은 거래 기록을 효율적으로 해싱하는 기술이며 다수의 참여자들이 많은 거래 기록을 손쉽게 공유할 수 있게 해주는 기술이기도 하다. 머클 루트는 블록체인에서 해시함수가 참으로 중요한 요소 기술임을 다시 한번 확인시켜 준다.

이상으로 블록체인이라는 집단지능을 구현하는 요소 기술들을 살펴보았다. 아마도 블록체인에 대해 낯설었던 독자들도 이제 그 기술과 조금은 친숙해 지지 않았을까 생각된다.  다음에는 블록체인의 다양한 구현체–아직은 주로 암호화폐들이지만–와 그것이 지닌 사회적 잠재성에 관해 성찰해 보기로 하자. (윤영민, 2015-05-14)

지능이라는 이름의 게임(17): 집단지능과 블록체인(9)

앞 포스팅에서는 블록의 구성과 채굴에 관해 살펴보았다. 이번에는 그러한 블록들로 구성된 블록체인(blockchain), 그리고 블록체인이 노드(참여자)들에 의해 공유되는 분산 블록체인(distributed blockchain)에 대해 알아보자.

다시 MIT의 블록체인 사이트의 신세를 진다. 위의 그림을 클릭하면 모의 블록들로 이루어진 블록체인이 보일 것이다. 블록체인 아래 부분의 슬라이딩 바를 움직이면 5개의 블록을 볼 수 있다. 앞 포스팅의 블록과 달리 이 블록들에는 Data 칸 아래에 Prev.(Previous)라는 칸이 있다. 1번 블록은 Prev.가 전부 0으로 채워져 있다. 당연히 그것은 이전 블록의 해시가 없다는 의미이다. 그리고 첫번째 블록의 해시는 두번째 블록의 Prev.와 정확히 동일한 해시이다. 마찬가지로 두번째 블록의 해시는 세번째 블록의 Prev.에 들어와 있고, 세번째 블록의 해시는 네번째 블록의 Prev.에, 네번째 블록의 해시는 다섯번째 블록의 Prev.에 들어와 있다.

여기서 중요한 점은 각 블록의 해시는 Prev.의 해시를 포함해서 생성된 것이라는 사실이다. 그것이 블록체인(blockchain)에서 체인(chain)의 실질적 의미라고 할 수 있다. 블록들은 단순히 병열적으로 나열되어 있는 것이 아니라 해시 생성을 통해서 수학적으로 연결되어 있는 것이다.

바로 그점 때문에 어떤 블록의 데이터가 변하면 곧 바로 그 사실을 탐지할 수 있으며, 특정한 블록을 변조하려는 자는 그 블럭 뿐 아니라 그 블럭과 해시로 묶여 있는 블록들을 모두 채굴해야만 한다.

한번 두번째 블록에 hi 라고 써보라. 1번을 제외한 모든 블록이 핑크색으로 바뀔 것이다. 그 블록들이 모두 다시 채굴되어야 함을 나타내는 신호이다.

블록체인이 블록의 변조를 방지하는 장치는 그것 뿐만이 아니다. 블록체인이 참여자들 모두에 의해 공유되어 있다는 점은 더욱 강력한 변조 방지 장치이다. 아래 그림을 클릭하면 분산 블록체인(distributed blockchain) 페이지가 열릴 것이다. 그것은 참여자(peer라고 되어 있다)가 3명인 가상적 블록체인 시스템이다.

참여자 A, B, C의 블록에 있는 논스와 해시를 보면 모두 동일함을 확인할 수 있을 것이다. 블록체인의 분산원장에 문제가 없는 상태이다. 그런데 만약 그들 중 누군가의 블록과 블록체인에 변조가 발생하면 다른 참여자의 블록 및 블록체인과 이질성이 발생한다. 한번 Peer B의 두번째 Data 칸에 hi 라고 치고 핑그색으로 변한 블록들을 모두 채굴해 보라. 그리고 그 블록들의 논스와 해시를 Peer A와 C의 해당 블록의 논스와 해시를 비교해 보자. 비록 Peer A의 블록들의 채굴에 성공하였지만 그렇게 해서 얻은 논스와 해시가 다른 참여자들이 가진 블록들의 논스와 해시와 달라져 버렸다는 사실을 발견할 수 있을 것이다. 이렇게 해서 블록체인의 일부인 블록의 변조가 쉽게 탐지된다. 만약 블록체인을 위조하려면 적어도 블럭체인 시스템의 참여자들의 51%가 가지고 있는 블록체인을 모두 채굴해야 한다. 그것도 10분 안에 끝내야 한다.

그런 조건에서 블록체인의 변조나 위조가 성공하는 것은 불가능하지는 않겠지만 현실적으로 가능성이 희박할 것이다. 어떤 블록체인 전문가는, 전세계에서 가장 강력한 컴퓨팅 파워를 지닌 슈퍼컴퓨터를 다섯 대 정도 동원해야 블록체인의 위변조가 가능할 것이라고 말한다.

블록체인과 분산원장은 블록체인 시스템의 참여자들이 기술적으로 신뢰를 확보하는 강력한 수단이다. 그리고 그것의 능력은 참여자 수가 많을수록 더욱 강력해진다. 블록체인과 분산원장은 집단지능으로서의 블록체인이 지닌 집단성을  구현하는 장치인 것이다. (윤영민, 2018-05-14)

지능이라는 이름의 게임(16): 집단지능과 블록체인(8)

blockchain mining에 대한 이미지 검색결과

블록체인에서 신뢰가 창출되는 가장 중요한 과정은 채굴(mining)이다. 비트코인의 경우 채굴은 세 단계로 이루어져 있다.

1) 채굴자들(miners)은 검증이 필요한 블록(거래 내역이 기록된 원장)에 대해 주어진 조건에 맞는 해시값을 경쟁적으로 찾기 시작한다. 비트코인의 경우 10분마다 새로운 블럭이 생성되기 때문에 10분 이내에 채굴해야 한다. 해시값을 찾는데 성공[그것은 논스(nonce)라는 숫자로 인정된다]한 채굴자는 즉시 모든 노드(참여자)들에게 그 결과를 알린다.

2) 다른 노드(참여자)들은 그 결과의 유효성을 확인하고 문제가 없다고 판단되면 그 블록을 블록체인에 추가한다. 그리고 검증이 끝난 블록에 대해 추가로 검증 결과가 날아오더라도 무시한다. 전체 참여자들의 51% 이상이 그렇게 하면 합의(consensus)가 성립된 것으로 간주된다.

3) 채굴의 성공이 인정된[그것이 작업증명(Proof of Work, PoW)이다] 채굴자는 수고에 대한 인센티브를 받는다. 그리고  채굴자들은 새로운 블록에 대한 검증 경쟁에 들어간다.

블록체인의 합의 알고리즘에는 작업증명(PoW) 외에도 PoS(Proof of Stake), Delegated Proof of Stake(DPoW), Practical Byzantine Fault Tolerance(PBFT) 등이 있으나 소개를 생략한다(이 알고리즘들에 대한 간략한 비교 설명은 Consensus in Blockchain Systems. In Sort. 라는 블로그 포스팅을 참조하시오).

은행 거래에서는 거래내역이 기록된 장부(원장)가 생명이다.  각 고객이 저금한 액수, 인출한 액수, 이체 내력, 잔고, 대출 현황 등이 정확히 기재되어야 한다. 거기에 조금이라도 착오가 있으면 사고이다. 은행에서는 은행원들이 원장을 기재하고 관리하는 업무를 수행한다.

블록체인에서는 채굴자가 바로 은행원이 하는 역할을 대신한다. 그러나 두 가지 점에서 채굴자는 은행원과 다르다.

하나는, 은행에서는 은행원이 소정의 절차를 거쳐서 채용되고 기장에 있어 배타적 권한을 행사하지만, 블록체인(public blockchain의 경우)에서는 채굴 장비(컴퓨터 설비)만 갖출 수 있으면 누구나 채굴자(miner)가 될 수 있다.

bitcoin mining에 대한 이미지 검색결과

다른 하나는, 은행원은 은행 업무를 수행하면 월급을 받는 것으로 끝나지만 블록체인의 채굴자는 블록(원장)을 검증하면 소정량의 암호화폐를 인센티브로 지급받는다. 비트코인(Bitcoin)의 경우 현재 비트코인 12.5개를 받는다. 그런데 그러한 인센티브 지급은 곧 암호화폐의 발행이기도 하다. 채굴에서 난이도는 비트코인의 발행량을 조정하는 역할을 한다. 비트코인이 너무 많이 발행되면 인플레이션이 발생할 것이다.

국가에서는 중앙은행이 정책적인 결정에 따라 화폐를 발행하지만 암호화폐 시스템에서는 채굴행위를 통해서 암호화폐가 발행된다. 결국 채굴자가 암호화폐 발행자인 셈이다. 채굴이라는 메타포(metaphor)가 사용된 이유도 아마 그 때문일 것이다. 광산에서 금을 채굴하듯이 암호화폐를 채굴(곧 발행)한다는 것이다.

이해를 돕기 위해 모의 블록을 가지고 시뮬레이션을 하면서 채굴 과정을 살펴보자. 아래 그림을 클릭하면 MIT의 블록체인 사이트로 이동하고 블록이 나타날 것이다.

그 블록에는  다섯 가지 요소가 있다. 맨 위에 Block이라고 해서 블록의 번호가 쓰여있고, 그 다음 줄에는 Nonce라는 칸에 72608이라는 숫자가 쓰여 있다. 그 다음은 Data 칸인데 비어 있다. 그리고 그 아래에 Hash 칸이 있고 복잡한 숫자와 문자의 배열이 적혀 있다. 그런데 그 숫자를 보면 앞의 네 자리가 모두 0이다. 그 0들은 채굴의 조건(혹은 난이도)을 나타낸다. 그 조건을 충족하는 해시를 발생하는 논스(Nonce)를 찾는 것이 채굴이다. 모의 실험이기 때문에 0이 네 자리 뿐이지 실제로 비트코인에서는 앞 18자리가 0이다. 논스를 찾아내기가 훨씬 어려운 것이다. Hash 칸 아래에는 Mine이라는 네모 단추가 있다.

Data 칸에 윤영민 $20 이라고 적어 보라. 배경의 연초록색이 핑크빛으로 바뀌고, Hash가 0이 없는 다른 값으로 바뀔 것이다. 논스와 해시가 불일치한 상태가 되었다. 이제 논스의 숫자를 1부터 차례로 넣으면서 해시의 변화를 살펴보라. 아마도 12를 넣으면 해시의 첫 자리가 0이 되었을 것이다. 그렇게 앞 자리 네 개가 0이 되는 논스를 찾아야 한다. 필자는 해보지 않았지만 그런 방식으로는 하루가 걸릴 지도 모른다. 그것은 사람이 할 일이 못된다. Mine 단추를 눌러서 컴퓨터가 그 과정을 수행하게 하자. 아마도 1초 정도면 논스가 15607로 되고, 해시는 0000으로 시작되는 값이 되며, 박스의 배경색은 다시 연초록색으로 돌아갔을 것이다. 블록에 대한 채굴이 끝난 것이다.

블록체인은 참여자들 개개인의 신뢰성을 따지지 않는다. 참여자들이 선한 사람이든 투자자든, 아니면 사기꾼이든 조폭이든 괘념치 않는다. 그들이 설령 속임수를 쓰고 나쁜 짓을 하려고 해도 채굴과 같은 기술적인 방법으로 그들의 ‘도전’을 압도해서 시스템에 대한 신뢰를 창출하고 유지할 뿐이다. (윤영민, 2018-05-14)

지능이라는 이름의 게임(15): 집단지능과 블록체인(7)

블록체인에 있어 해시함수에 버금갈 정도로 중요한 요소기술은 공개키 암호화(public key encryption)이다. 공개키로는 원장에 있는 거래 참가자의 이름을 가명화(pseudomization)하여 개인정보를 보호할 수 있으며, 개인키(private key)로는 송금액과 송신자의 신원을 묶어서 전자서명(digital signiture)을 하여 거래 참가자(송금자)의 신원을 확인하고 원장의 위조와 변조를 예방할 수 있다.

암호화(encryption)란, 누구나 내용을 알 수 있는 평문(plaintext)을 제3자가 알아볼 수 없는 글자, 숫자, 부호의 조합인 암호문(cypertext)으로 바꾸는 작업이다. 암호화에 필수적으로 필요한 도구가 암호키(encryption key)이다. 암호문은 글자, 숫자, 부호 등이 마구 뒤섞여 있는 것처럼 보이지만 사실 그 안에는 규칙이 숨어있다. 암호키란 그 규칙을 생성하는 값이다(아래 그림 참조).

관련 이미지

암호화에는 두 가지 방식이 있다. 하나는, 평문을 암호문으로 변환할(암호화) 때와 암호문을 평문으로 변환할(복호화) 때 동일한 암호키–그것을 비밀키(secrete key)라고 부름–를 사용하는 대칭키(symetric key) 방식이고, 다른 하나는, 한 쌍의 암호키를 생성하여 한 키–수신자의 공개키(public key)–는 암호화에 사용하고, 다른 키–수신자의 개인키(private key)–는 복호화에 사용하는 공개키(public key)(비대칭키, asymetric key라고도 부름) 방식이다.

참고로 해시함수도, 메시지를 제3자가 알아볼 수 없는 숫자와 문자의 조합으로 바꾼다는 의미에서 암호화의 일종이지만, 거기에는 별도의 암호키가 사용되지 않는다. 때문에 누가 해시함수를 수행해도 동일한 메시지(입력값)을 가지고 동일한 알고리즘을 적용하면 동일한 해시(산출값)를 얻는다.

블록체인에서는 공개키 방식의 암호화가 사용된다. 다만 암호화 대신에 전자서명(digital signiture)이 채택된다. 암호화와 전자서명은 동일한 알고리즘을 적용하지만 용도가 다르기 때문에 공개키와 개인키를 다르게 사용한다.

암호화은 주로 메시지를 안전하게 보내는 데 사용된다. 따라서 수신자의 공개키(public key)를 사용하여 메시지를 암호화하여 보내면 수신자가 자신이 가지고 있는 개인키(private key)로 복호화하여 전달된 메시지를 읽는다(아래 그림 참조).

encryption에 대한 이미지 검색결과

반면에 전자서명은 주로 신원확인과 위변조 방지에 사용된다. 먼저 데이터를 해싱하여 해시를 얻은 다음 그 해시를 서명자의 개인키를 사용하여 암호화하면 전자서명된 데이터가 된다. 검증자는 인터넷을 통해서 그 데이터에 접근하여, 서명자의 공개키(그것은 공개되어 있음)를 사용하여 복호화하여 얻은 해시와 원 데이터의 해시를 비교하여 서명자의 신원과 데이터의 무결성(integrity)을 확인할 수 있다(아래 그림 참조).

digital signature에 대한 이미지 검색결과

블록체인에서는 아래 그림처럼 먼저 공개키(public key)와 개인키(private key)의 쌍이 생성된다. (주석 1)

그 다음에 생성된 개인키(private key)를 이용하여 메시지 20.00($)에 대해 서명(sign)을 한다(아래 그림 참조).

그러면 아래 그림에서처럼 전자서명(signiture)이 생성된다. 이 과정을 좀 더 공식적으로,

Sign(hashed message, Private Key) = Signiture

라고 표현할 수 있을 것이다. 이 사례에서 메시지는 20.00이다. 만약 20.00에 조금이라도 변경이 가해지면 설령 송금자자신이 그렇게 했더라도 바로 전자서명의 해시가 완전히 달라져 버린다. 그리고 이 전자서명은 일반적인 서명과 달리 복사해서 다른 곳에 사용할 수 없다. 그 안에 특정한 메시지(여기서는 20.00)가 포함되어 있기 때문이다.

검증자(이체의 수신자)는 메시지(20.00)가 송금자가 기재한 대로인지에 대해 공개키(public key)를 이용하여 검증(verify)할 수 있다. 공식으로 표현하면 아래와 같다.

Verify(hashed message, signiture, public key) = True/False

위 그림에 보면 From란에 송금자의 이름 대신 송금자의 공개키가 들어가 있다. 그렇게 가명화함으로써 누가 송금한 것인지를 알 수 없게 하고 있다. 즉, 송금자의 개인정보가 보호되는 것이다.

블록이 채굴된 후(즉, 검증된 후) 송금자 이외의 사람이 송금액수를 변조하면 전자서명에 오류가 발생하여 그것을 바로 알 수 있다. 전자서명은, 서명할 때의 송금액, 서명할 때 사용된 송금자의 개인키라는 두 가지 입력값에 조금도 변화가 없을 때–이러한 상태를 무결성(integrity)이라고 한다–만이 오류가 없는 상태로 유지된다. (윤영민, 2018-05-14)

(주석 1) 직접 암호키를 생성해 보고 싶은 독자는 Putty라는 공개 소프트웨어를 사용하면 아래 그림과 같이 공개키와 개인키의 쌍을 생성할 수 있다[puttygen.exe (a RSA and DSA key generation utility)이라는 유틸리티를 다운로드 받을 것].

위 그림에서 Generate라는 단추를 누르면 암호키가 생성된다. 단, 그냥 기다리면 안되고 파랗게 된 부분(박스)에 커서를 대고 움직여 줘야 한다. 그러면 잠깐 동안에 암호키기 생성될 것이다. 파랗게 하일라이트된 부분이 필자가 생성한 공개키이다. 그리고 그 아래에 보면 그 공개키의 해시(key fingerprint)가 나와 있다. 여기에 적용된 알고리즘은 RSA인데, 원하면 다른 알고리즘을 선택할 수 있다(Parameters 부분을 이용). 나중에 저장된 암호키를 사용하려면 Key passphrase 박스를 이용해서 비밀번호를 만들어 둬야 한다. 그래야 자신만이 개인키를 볼 수 있을 것이다.

지능이라는 이름의 게임(14): 집단지능과 블록체인(6)

블록체인의 핵심 요소 기술은 해시 함수(hash function)이다. 해시 함수는 문자 그대로 하나의 함수(function)이다.

함수란 두 변수(독립변수와 종속변수) 사이의 관계를 규정한다. 독립변수의 값이 입력되면, 규정된 규칙에 따라 종속변수의 값이 산출된다. 고등학교에서 배운 간단한 함수  혹은  를 떠올려 보라.

해시 함수는 어떤 길이의 메시지가 입력되어도 동일한 길이의 숫자[해시값(hash value)]을 산출하는 함수 이다. 실제 다양한 해시 함수가 존재할 뿐 아니라 그것의 수학적 전개는 상당히 복잡하기 때문에 그에 대한 설명은 생략하고 바로 해시함수를 실행한다. 비트코인에서 사용되는 해시함수는 SHA-256(Secure Hash Algorithm-256: 샤 256이라고 읽음)인데 아래 그림을 눌러서 열리는 사이트(MIT가 운영하는 블록체인 사이트)에서 시뮬레이션을 해보자. (주석 1)

위 그림에서 Data 칸에 필자가 ‘윤영민’이라고 입력하니 Hash 칸에 복잡한 숫자와 문자가 나타났다. 그것이 ‘윤영민’에 대한 해시값(hash value)[그냥 해시(hash), 다이제스트(digest), 혹은 데이터의 지문(fingerprint)이라고 부름]이다.

(1) Data 칸에 자신의 이름을 넣어보라. 길이는 동일하지만 전혀 다른 숫자와 문자의 배열이 나타날 것이다. 이름을 지우고 아무 파워포인트나 워드 문서를 복사해서 넣어 보라. 아무리 긴 문서를 복사해 넣어도 동일한 길이의 해시가 나타날 것이다. 이것이 해시함수의 첫번째 특성이다. 해시함수는 입력값에 관계없이 항상 동일한 길이의 해시값을 산출한다.   

(2) 이번에는 다시 자신의 이름을 넣어보라. 앞에서 이름을 넣었을 때와 정확히 동일한 해시가 나타날 것이다. 아무리 반복해서 이름을 넣어도 항상 동일한 해시가 나올 것이다. 이것이 해시함수의 두번째 특성이다. 해시함수는 동일한 입력값에 대해 항상 동일한 해시값을 산출한다. 

(3) 이번에는 자신의 이름 뒤에 마침표를 찍고 해시값을 보라. 자신의 이름과 전혀 다른 해시값이 나타났을 것이다. 입력값이 아주 조금만 달라져도 해시의 숫자와 문자의 배열은 완전히 달라진다. 이것이 해시함수의 세번째 특성이다. 입력값이 조금만 변해도 해시값만 보아서는 입력값이 어떻게 변했는가를 전혀 추측할 수 없도록 완전히 다른 해시값이 산출된다.

(4) 이론적으로 해시함수는 소위 해시충돌(hash collision)의 가능성을 안고 있다. 해시함수는 제한된 길이(SHA256은 256 비트)로 된 해시값을 산출하기 때문에 입력값이 무한대로 변화하면 서로 다른 입력값이 동일한 해시값을 가질 수 있는 것이다. 새장의 숫자보다 많은 수의 비둘기를 새장에 넣으면 두 마리 이상의 비둘기가 같은 새장에 들어갈 수밖에 없는 원리이다. 그래서 해시충돌이 없는 해시함수 알고리즘이 계속 새롭게 나오게 된다.    

블록체인은 해시함수를 이용해서 블록과 블록체인을 구성한다. 그렇게 해서 블록과 블록체인에 작은 변화만 생겨도 그것을 탐지할 수 있고 위조와 변조를 예방할 수 있다. (윤영민, 2018-05-13)

(주석 1)

해시 함수를 다양하게 시뮬레이션해보고 싶은 독자에게는 Quick Hash를 추천한다. Quick Hash는 실전용 해싱 소프트웨어이다. 자신의 컴퓨터 환경에 맞는 버전을 다운로드해서 설치하면, 실제로 책 한권의 분량에 해당되는 파일을 해싱해 볼 수 있으며,  MD5, SHA-1, SHA256, SHA512 등 다양한 알고리즘을 적용해서 해싱을 할 수도 있고, 해시함수를 이용해서 두 파일의 동일성을 검사해 볼 수도 있다. 안드로이드용 QuickHash 앱도 있다. 구글 스토어에서 다운로드 받아 스마트폰에서도 시뮬레이션할 수 있다.