Tìm hiểu Blockchain (phần 2)

Phúc Lê
Genesis Block Lab
Published in
7 min readSep 16, 2018

Trong loạt bài này, mình sẽ gợi ý một số bước ban đầu để bạn tiếp cận với nghề Blockchain Developer. Bài thứ ba mình sẽ nói sâu hơn về cấu tạo của Blockchain. Bạn có thể xem lại phần trước của bài viết này tại đây.

Bước 1: Tìm hiểu những khái niệm cơ bản

Bước 2: Làm quen với Blockchain thông qua tiền điện tử

Bước 3: Tìm hiểu về Blockchain, Crytography và Consensus

Bước 4: Tự tạo cho mình một Blockchain

Bước 5: Tìm hiểu Ethereum, EVM và Smart Contract

Bước 6: Tự viết một DApp đơn giản và deploy lên Testnet

Bước 7: Xây dựng môi trường làm việc chuyên nghiệp với Truffle

Let’s rock & roll.

Sơ lược về Mật mã học (Cryptography)

  • Mã hóa đối xứng (Symmetric Encryption):

Là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia). Mã khóa loại này không công khai.

Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã, có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi đơn giản giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trong kênh truyền thông tin.

Một số ví dụ các thuật toán đối xứng: Twofish, Serpent, AES, Blowfish, CAST5, RC4, Triple DES, IDEA …

  • Mã hóa bất đối xứng (Asymmetric Encryption):

Mã hóa khóa bất đối xứng, còn thường được gọi là Mật mã hóa khóa công khai, là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa chung (Public Key) và khóa cá nhân (Private Key).

Private Key phải được giữ bí mật trong khi Public Key được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.

Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:

  • Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
  • Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không.
  • Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.

Một số thuật toán mã hóa bất đối xứng: Diffie-Hellman, DSS, ElGamal, Mã hóa đường cong Elliptic, Paillier, RSA (PKCS) …

  • Hàm băm mật mã học (Cryptographic Hash Function):

Là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp số (message digest) hoặc chữ ký số (digital fingerprint). Hàm băm thông dụng nhất là MD5 và các hàm băm SHA.

  • Chữ kí số (Digital Signature):

Chữ ký số là thông tin đi kèm theo dữ liệu nhằm mục đích xác định người chủ của dữ liệu đó. Chữ ký số khóa công khai là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp Public — Private Key và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật. Toàn bộ quá trình sử dụng gồm 3 bước: tạo khóa, tạo chữ ký số và kiểm tra chữ ký số

Việc sử dụng chữ ký số mang lại một số lợi điểm sau:

  • Tính xác thực (Authentication)
  • Tính toàn vẹn (Integrity)
  • Chống chối bỏ (Non-repudiation)

Cơ chế đồng thuận (Consensus mechanism)

Cơ chế này ngược lại với mô hình cổ điển về cơ chế đồng thuận tập trung. Một sơ đồ phi tập trung chuyển giao quyền lực và sự tin tưởng cho một mạng lưới ảo phi tập trung và cho phép các nút của mạng lưới đó liên tục lưu trữ các giao dịch trên một khối (block) công cộng, tạo nên một chuỗi (chain) độc nhất: chuỗi khối (blockchain). Mỗi khối kế tiếp chứa một “hash” (một dấu tay độc nhất) của mã trước nó; vì thế, mã hóa (thông qua hàm hash) được sử dụng để bảo đảm tính xác thực của nguồn giao dịch và loại bỏ sự cần thiết phải có một trung gian tập trung. Sự kết hợp của mã hóa và công nghệ blockchain lại đảm bảo rằng sẽ không bao giờ một giao dịch được lưu trữ lại hai lần.

Blockchain là hệ thống phân quyền để xác nhận các giao dịch mà không dựa vào một bên thứ ba, thay vì đặt sự tin tưởng lên một bên thứ ba đáng tin cậy, những người tham gia mạng Blockchain sử dụng Cơ chế đồng thuận phi tập trung (Decentralized Consensus Mechanism). Do đó, sự đồng thuận:

  • Để giúp mạng Blockchain đi đến một trạng thái thống nhất trước khi một giao dịch mới được đưa vào trong chuỗi mà không có bất kì mâu thuẫn nào.
  • Để đảm bảo rằng các sổ cái (Ledgers) được chia sẻ giữa những người tham gia mạng là hoàn toàn giống nhau (duy trì tính nhất quán của dữ liệu trong chuỗi).
  • Để thiết lập sự tin cậy giữa các bên không liên quan và các mạng lưới ẩn danh, không đáng tin cậy cũng như không xác thực(Ví dụ: Internet)
  • Khi không có sự đồng thuận, Blockchain có thể bị chia tách (như trường hợp của Bitcoin, Ethereum,…).

Cơ chế đồng thuận phi tập trung (Decentralized Consensus Mechanism) chính là xương sống của Blockchain hay bất kỳ công nghệ DecentralizedDistributed nào. Một số cơ chế đồng thuận phổ biến:

  • PoW (Proof of Work): sử dụng quá trình băm tài nguyên, xác nhận các giao dịch giữa các thành viên mạng và viết các giao dịch đã được xác nhận vào sổ nhật ký blockchain như là một khối mới. Khối mới được chấp nhận là bằng chứng cho thấy công việc đã được hoàn thành gọi là bằng chứng công việc (proof-of-work), vì vậy người thợ mỏ có thể nhận được một khoản thanh toán để hoàn thành công việc.
  • PoS (Proof of Stake): xác nhận khối do các thợ mỏ tạo ra và yêu cầu người dùng chứng minh quyền sở hữu “cổ phần” (số coin) của họ. Trong PoS, người tạo khối tiếp theo được chọn thông qua các kết hợp ngẫu nhiên và tỷ lệ “stake” (số coin dùng để mining). Có thể hiểu, thay vì dùng “hash” từ sức mạnh phần cứng như PoW thì PoS dùng chính đồng coin để xác nhận các block mới.
  • DPoS (Delegated Proof of Stake): Giống như PoS, nhưng thay vì toàn bộ mạng có thể tham gia qua trình đồng thuận, DPoS bầu ra một “hội đồng”, các thông số mạng được quyết định bởi đại biểu hoặc đại diện được bầu.
  • Một số cơ chế đồng thuận khác: PAXOS , RAFT , Round Robin , Federated Consensus , Proprietary Distributed Ledger, PBFT , N2N… không thật phổ biến, thường sử dụng trong các private blockchain hoặc các mạng thử nghiệm.

Thực hành:

  • Tìm hiểu cơ chế của một số hàm mã hóa đối xứng và bất đối xứng: AES, Triple DES, RSA …
  • Tìm hiểu cách hoạt động của hàm băm
  • Tìm hiểu các tính chất của chữ ký số: tính xác thực, tính toàn vẹn và tính chống chối bỏ

--

--