본문 바로가기
AI & Data/Blockchain

[Blockchain] crypto 패키지 (crypto package)

by Henry Cho 2023. 6. 9.
728x90

crypto 패키지 (crypto package)

포스트 난이도: HOO_Senior


# Crypto package란?

 

JavaScript (자바스크립트) 기반으로 블록체인 모델을 만드는 데 대표적으로 많이 사용하는 Package (패키지) 중 하나가 crypto package (크립토 패키지)이다. Node.js를 사용하면서 크립토 패키지를 자주 사용하는 이유는 사실상 패키지가 블록체인 모델 개발에 있어서 필요한 기능들을 포함하고 있기 때문이다. 글쓴이의 경우에는 파이썬쟁이였기 때문에 아직까지도 Dummy model (더미 모델)이나 Prototype model (프로토타입 모델)을 만들 때 Python (파이썬)을 활용하곤 한다. 마치 Pseudocode (의사코드) 작성을 하듯이 말이다. 그럼에도 불구하고 결국에는 자바스크립트를 기반으로 블록체인 모델을 만드는 이유는 어쩔 수 없는 것이 노드 기반인 블록체인 개발에 있어서 자바스크립트가 편리하기 때문이다.

블록체인 모델을 만드는데 있어서 가장 대표적인 Package (패키지)가 바로 크립토 패키지이다. 크립토 패키지는 Web Crypto API를 사용하여 Crtptographic 기능을 활용하기 위해서 사용하는 패키지이다. 그렇다 보니 우리는 data 암호화 과정이나 secure random number 또는 digital signatures 등을 크립토 패키지를 통해서 손쉽게 사용이 가능하다. 이 말인즉슨 데이터 암호화 과정이 중요한 작업인 블록체인 모델에서 크립토 패키지는 정말 편리할 수밖에 없다는 것이다.

 


#  Crypto Package 기능들

 

크립토 패키지에서 Random numbering, hashing, digital signatures, encryptions 등의 기능을 사용할 수 있다. 첫번째로 크립토 패키지를 사용하여 Random number 생성을 손쉽게 할 수 있다. 크립토 보완을 목적으로 한 랜덤 넘버, 즉 난수를 생성하는 데 있어서 패키지 내의 기능을 활용하여 바로 사용이 가능하기에 암호화 키를 통해서 사용자를 특정화하거나 Identifiers (식별자)를 생성하는데 편리하게 사용될 수 있다.

 

const crypto = require("crypto"), SHA256 = message => crypto.createHash("sha256").update(message).digest("hex");

 

두 번째로 Hashing (해싱) 기능을 데이터에 적용하여 사용이 가능하다는 것이다. 크립토 패키지에서 사용하는 해싱 기능은 대표적으로 SHA-256 또는 SHA-512이다. 사실 256이야 데이터 전문가나 보완 쪽 개발자라면 미국이 주도하는 글로벌 표준이기 때문에 자주 접했을 것이며 크립토 패키지의 해싱 기능 역시도 이 부분을 고려하여 256을 기반으로 해싱이 가능하다. 따라서 Encryption과 Decryption이 해싱을 통해서 입력된 데이터들을 손쉽게 가공할 수 있다는 점에서 꽤 매력적인 부분이다.

 

 get_hash() {
        return SHA256(this.private_hash + this.timestamp + JSON.stringify(this.data));
    }

 

다음으로 Digital signatures (디지털 서명) 기능을 사용할 수 있다.  데이터를 암호화하고 공유하기 위해서는 Key에 대한 프로그래밍이 되어야 하며, 특정 접근자가 데이터를 공유하는 데 있어서 Private Key (개인키)와 Public key (공개키)가 주어져야 한다. 이때 디지털 서명 기능을 활용한다면 공개키와 개인키 설정이 쉽고 접근자에 대한 식별 과정도 수월해진다.

마지막으로 Encryption (암호화) 기능을 제공하는데 대표적으로 Symmetric encryption (대칭 암호화, 대칭 알고리즘 또는 대칭 키) 과 Asymmetric encryption (비대칭 암호화, 비대칭 알고리즘 또는 비대칭 키)이 있다. Symmetric encryption (SE)와 Asymmetric encryption (AE)에 대한 사용이 가능하다는 것이 Advanced encryption standard algorithm (AES), asymmetric encryption algorithm (AEA), Elliptic curve cryptography algorithm (ECC) 또는 Rivest-shamir-adleman algorithm (RSA) 등의 Algorithms (알고리즘)이 지원된다는 것이다. 


 

728x90

댓글