BLOCKCHAIN-BASED DNS SECURITY PLATFORM ( Nền tảng bảo mật DNS dựa trên blockchain)

Giới thiệu

Hệ thống phân giải tên miền (Domain Name System - DNS) được thiết kết chủ yếu để giải quyết những truy vấn host name thành địa chỉ IP. Người sử dụng internet cần có những tên miền, ví dụ như www.packtpub.com, nhưng internet thì cần địa chỉ IP để dẫn request đến điểm đến mong muốn. Bằng cách này, DNS trở nên giống như cuốn sổ điện thoại của internet và cho phép tất cả mọi người sử dụng nó trên toàn cầu; tuy nhiên, điều này để lại một khả năng cao đó là nó bị sử dụng sai mục đích. Ở chương 8 của cuốn sách này, chúng ta sẽ học về cơ sở hạ tầng của DNS, những thành phần cốt lõi, những thách thức đối với hệ thống đang đối mặt, và cách mà blockchain có thể chuyển đổi chức năng hiện tại của nó.

Ở chương này, chúng ta sẽ đi qua những chủ đề sau:

  • DNS

  • Cấu trúc DNS và hệ thống phân cấp (hierarch)

  • Cấu trúc liên kết DNS cho các doanh nghiệp lớn

  • Những thách thức với giải pháp DNS hiện tại

  • Giải pháp DNS dựa trên nền tảng Block-chain

  • Labs (Những bài thí nghiệm)

Chủ đề 1: DNS

DNS được ví như là trái tim của internet. Nếu DNS không có sẵn , mỗi người chúng ta sẽ tốn một thời gian rất lớn đề tìm tài nguyên trên internet. Là một cuốn sổ điện thoại khổng lồ, toàn bộ hệ thống online của chúng ta chủ yếu đều dựa vào DNS. Chính vì không gian tên của DNS, mà chúng ta không cần phải ghi nhớ danh sách các địa chỉ IP, mà thay vào đó, chúng ta chỉ cần nhớ tên của những website là được.

Đối với các chuyên gia về IT và security, điều quan trọng nhất là phải hiểu được cấu trúc, chức năng và cách vận hành cơ bản của DNS. Nó là một cơ sở dữ liệu phân cấp với quyền hạn được phân quyền. Theo phạm vi của chương này, chúng ta sẽ xem xét các triển khai DNS doanh nghiệp và các chức năng của nó.

Có hai cách tổ chức có thể quản lý cơ sở hạ tầng DNS của họ: Bằng cách cho phép nhà cung cấp dịch vụ Internet (IPS) của họ quản lý nó hoặc bằng cách quản lý nó trong nội bộ.

Bất kỳ lỗi cấu hình hoặc lỗi nào trong mạng ISP đều có thể làm hỏng cơ sở hạ tầng Internet của tổ chức.

Cùng với sự phát triển của người dùng internet, DNS đã trở thành xương sống của những tổ chức trên internet và do đó, nó đã cung cấp cho các tổ chức một lý do mạnh mẽ để kiểm soát DNS của riêng họ.

Với việc triển khai DNS hiệu quả, các tổ chức thậm chí có thẻ đạt được hệ thống lọc thư rác email tốt hơn và cấu trúc liên kết mạng được tối ưu hoá. Đây chỉ là một số cách mà DNS đóng một vai trò quan trọng trong các tổ chức:

  • Chống thư rác (Anti-spam): Một số cơ chế DNS, bao gồm Khung chính sách người gửi (Sender policy Framework (SPF)) và Thư được xác định theo DomainKeys (DomainKeys Identified Mail (DKIM)), đảm bảo chỉ một danh sách miền được xác định trước mới được phép gửi email thay mặt cho một tổ chức cụ thể. Các cơ chế này có hiệu quả nếu DNS trong tổ chức đang hoạt động bình thường

  • Loading sharing: Dịch vụ DNS có thể tối ưu hoá cơ sở hạ tầng máy chủ bằng cách tải chia sẻ lưu lượng của các máy chủ được sử dụng nhiều với các máy chủ chưa được sử dụng khác.

  • Privacy: Dịch vụ DNS đảm bảo tính riêng tư của thông tin không gian tên của tổ chức bằng cách che dấu các địa chỉ có tên khác nhau, tuỳ thuộc vào việc chúng được truy cập từ bên trong hay bên ngoài mạng, giúp đạt được an ninh mạng mạnh mẽ hơn.

Understanding DNS components (Hiểu về những thành phần của DNS)

DNS không chỉ là một giao thức, nó bao gồm một số thực thể độc lập làm việc cùng nhau để cung cấp một cơ sở dữ liệu tên miền có thể mở rộng và đáng tin cậy. Ở dạng đơn giản nhất, có ba thành phần cốt lõi của DNS: namespace, server, resolver

Namespace

Không gian tên (namespace) là một cấu trúc của cơ sở dữ liệu DNS. Nó được biểu diễn dưới dạng một cây đảo ngược với nút gốc của nó ở trên cùng. Mỗi nút trong cây có một nhãn và nút gốc có nhãn null. Hãy xem sơ đồ sau:

Imgur

Tên miền là một chuỗi các nhãn bắt đầu từ một nút đến gốc, được phân tách bằng dầu chấm. Không gian tên có thể có độ sâu tối đâ là 127 cấp (level) và tên miền có thể có kích thước không quá 255 ký tự.

Imgur

Name servers

Máy chủ định danh (Name servers) chịu trách nhiệm lưu trữ thông tin về không gian tên dưới dạng vùng. Có thể có nhiều máy chủ định dạng và những máy chủ tải một vùng hoàn chỉnh được cho là có thẩm quyền cho vùng. Nói chung, có nhiều hơn một máy chủ định danh được sử dụng làm thẩm quyền cho một vùng duy nhất, đảm bảo khả năng dự phòng và chia sẻ tải tốt hơn.

Có hai loại máy chủ định danh chính: Máy chủ có thẩm quyền (authoritative servers) và máy chủ lưu trong bộ đệm (caching servers)

  • Máy chủ có thẩm quyền (Authoritative name server): Nó cung cấp phản hồi có các truy vấn DNS. Nó chịu trách nhiệm cung cấp các câu trả lời gốc và dứt điểm cho mỗi truy vấn DNS. Có thể có hai loại máy chủ định danh có thẩm quyền:

    • Máy chủ chính (máy chủ định danh chính) - Master server (primary name server): Nó lưu trữ các bản sao gốc của tất cả các bản ghi vùng. Quản trị viên chỉ có thể thực hiện các thay đổi đối với cơ sở dữ liệu vùng máy chủ chính.

    • Máy chủ nô lệ (máy chủ tên phụ) - Slave server (secondary name server): Máy chủ nô lệ giữ một bản sao của các tệp máy chủ chính. Nó được sử dụng để chia sẻ tải máy chủ DNS và cải thiện tính khả dụng của vùng DNS.

  • Máy chủ định danh trong bộ đệm (Caching name server): NÓ mang dịch vụ tên đến gần hơn với người dùng và cải thiện hiệu suất tra cứu tên tổng thể. Nó cũng cung cấp một cơ chế toàn diện để cung cấp không gian tên riêng cho người dùng cục bộ, bằng cách cho phép người dùng lấy tất cả ánh xạ tên từ bộ nhớ đệm cục bộ.

Resolver (Trình phân giải)

Trình phân giải tên giúp máy chủ định danh tìm dữ liệu trong không gian tên. Trình phân giải tên được yêu cầu để tìm ra tên và địa chỉ IP của máy chủ định danh cho vùng gốc. Máy chủ định danh gốc lưu trữ thông tin về các vùng cấp cao nhất và máy chủ trực tiếp để liên hệ với tất cả các miền cấp cao nhất (top-level domains (TLDs)). Về cơ bản, trình phân giải sẽ chia tên thành các nhãn của nó từ phải sang trái. Thành phần đầu tiên, TLD, được truy vấn bằng máy chủ gốc để lấy máy chủ có thẩm quyền được chỉ định.

Chủ đề 2: Cấu trúc DNS và hệ thống phân cấp (hierarchy)

Tương tự như cơ sở hạ tầng DNS của internet, các tổ chức cũng triển khai cơ sở hạ tầng DNS nội bộ của họ. Để triển khai cơ sở hạ tầng DNS nội bộ, các tổ chức có thể chọn bất kỳ hệ thống phân cấp miền nào; tuy nhiên, sau khi kết nối với internet, họ phải tuân theo khung DNS chung. Hãy hiểu phân cấp máy chủ định danh:

Root name server (Máy chủ tên gốc)

Với không gian tên nhất quán trên internet, máy chủ định danh gốc phản hồi trực tiếp các yêu cầu về bản ghi trong vùng gốc và trả lời các yêu cầu khác bằng cách trả về danh sách các máy chủ định danh có thẩm quyền cho TLD thích hợp.

Để sửa đổi vùng gốc, trước tiên tệp vùng phải dược xuất bản qua internet. Tệp vùng gốc được xuất bản trên 13 máy chủ từ A đến M

Vùng gốc chứa các thông tin sau:

  • Các miền cao cấp nhất chung chung, chẳng hạn như: .com, .net.org

  • TLD được công nhận trên toàn cầu.

  • TLD mã quốc gia, mã gồm hai chữ cái cho mỗi quốc gia, chẳng hạn như .in đối với Ấn Độ hoặc .no đối với Na Uy (Norway)

  • TLD được công nhận trên toàn cầu, thường tương tự như tên TLD của mã quốc gia.

Vùng gốc chứa các địa chỉ số của máy chủ định danh phục vụ nội dung TLD và máy chủ gốc trả lời bằng các địa chỉ này khi TLD hỏi.

Khi các tổ chức nhận được một tên miền mới, công ty đăng ký có thể thay mặt họ định cấu hình các bản ghi DNS và cung cấp cho họ một máy chủ định danh (name server - NS). Các tổ chức cần có một máy chủ định danh để cho thư mục DNS của internet biết địa chỉ IP của các máy chủ web của họ và các dịch vụ tương ứng.

Cấu trúc TLD hiện tại

TLD là một trong những miền ở cấp cao nhất của hệ thống phân cấp DNS. TLD được cài đặt trong vùng gốc của không gian tên. Các miền trong phần cuối cùng của hệ thống phải được công nhận với các tên miền đủ điều kiện. Tổng công ty internet được chỉ định Tên và Số (The Internet Corporation for Assigned Names and Numbers (ICANN) ) đảm bảo rằng TLD được các tổ chức được uỷ quyền quản lý. Cơ quan cấp số được ẩn định trên internet (The Internet Assigned Numbers Authority (IANA)) do ICANN điều hành và chịu trách nhiệm quản lý vùng gốc DNS.

  • IANA chịu trách nhiệm quản lý các TLD sau:

    • ccTLD: Country-code TLDs
    • gTLD: Generic TLDs
    • .arpa: Infrastructure TLDs

Sơ đồ phân cấp này giải thích cấu trúc TLD hiện có:

Imgur

Registries, registrars, and registrants (Cơ quan đăng ký, công ty đăng ký và người đăng ký)

DNS lưu trữ một cơ sở dữ liệu tên miền khổng lồ. Để thực hiện đăng ký, có ba thực thể làm việc cùng nhau - registry, registrarregistrant

  • registry: Một tổ chức duy trì cơ sở dữ liệu của không gian tên có quyền chỉnh sửa cơ sở dữ liệu đó. Cơ quan đăng ký chạy NS có thẩm quyền cho không gian tên và quản lý các tên TLD. Vai trò của họ là tạo phần mở rộng tên miền, thiết lập các quy tắc cho tên miền và làm việc ovwis các công ty đăng ký để cung cấp tên miền cho công chúng. Ví dụ: Verisign quản lý việc đăng ký tên miền .com và DNS của chúng.

  • registrar: Một tổ chức bảo lưu tên miền và được công nhận để bán tên miền cho công chúng. Tổ chức đăng ký tên miền này phải được cơ quan đăng ký tên miền cấp cao nhất (gTLD) chung hoặc cơ quan đăng ký tên miền cao cấp nhất (ccTLD) mã quốc gia công nhận. Công ty đăng ký hoạt động theo các nguyên tắc do các công ty đăng ký tên miền cung cấp. Chỉ một công ty đăng ký được chỉ định mới có thể sửa đổi hoặc xoá thông tin về tên miền trong cơ sở dữ liệu đăng ký trung tâm. Người dùng cuối mua miền trực tiếp từ tổ chức đăng ký tên miền và người dùng cuối có toàn quyền chuyển đổi tổ chức đăng ký tên miền, yêu cầu quy trình chuyển miền giữa các tổ chức đăng ký tên miền. Một số công ty đăng ký phổ biến nhất là GoDaddy, HostGator, BigRock,v.v

  • Registrant: Đây chỉ đơn giản là người dùng cuối có quyền đối với tên miền. Với tư cách là người đăng ký tên miền, mỗi người có một số quyền và trách nhiệm, bao gồm quyền truy cập thông tin từ cơ quan đăng ký của người dùng về các quy trình đăng ký, quản lý, chuyển nhượng, gia hạn và khôi phục đăng ký tên miền.

Dưới đây là một sơ đồ cho thấy hoạt động của cả ba thực thể cùng nhau:

Imgur

DNS records

Bản ghi DNS là các tệp ánh xạ liên kết với máy chủ DNS, bất kỳ địa chỉ IP nào mà mỗi miền được liên kết và chúng xử lý các yêu cầu được gửi đến từng miền. Các chuỗi ký tự khác nhau được sử dụng làm thành phần giống với các hành động của máy chủ DNS và các chuỗi lệnh này được gọi là cú pháp DNS. Các cú pháp này là A, AAAA, tên hợp quy (CNAME) , trình trao đổi thư (MX), con trỏ (PTR), máy chủ định danh (NS), Start of Authority (SOA), bản ghi dịch vụ (SRV), văn bản (TXT) và Name Authority con trỏ (NAPTR). Hãy cùng khám phá chi tiết một số bản ghi DNS này:

  • SOA: Bản ghi SOA ghi nhận phần đầu của tệp vùng. Nó bao gồm tên của khu vực, điểm liên hệ kỹ thuật, NS của khu vực đó, số se-ri và giá trị thời gian chờ.

Imgur

  • NS: Bản ghi NS xác định các máy chủ định danh được uỷ quyền cho khu vực. NS cũng uỷ quyền miền phụ cho các tổ chức hoặc tệp vùng khác. Trong vi dụ trước, chúng ta có thể tháy rõ danh sách các NS cho www.google.com

  • Records: Bản ghi địa chỉ thiết lập ràng buộc chuyển tiếp từ tên đến các địa chỉ. Trong ví dụ này, chúng tôi có một địa chỉ IP được ánh xạ với miền www.google.com

Imgur

  • MX records: Các bản ghi này xác định các máy chủ có thể trao đổi mail. Một mức độ ưu tiên luôn được liên kết với mỗi bản ghi, vì vậy người dùng có thể chọn máy chủ thư chính và máy chủ thư dự phòng.

  • TXT records: Các bản ghi này cung cấp một phương pháp để mở rộng thông tin được cun cấp thông qua DNS. Bản ghi văn bản này lưu trữ thông tin về SPF có thể xác định máy chủ được uỷ quyền để gửi email thay mặt cho tổ chức của bạn.

  • CNAME: CNAME về cơ bản là bí danh văn bản miền và miền phụ để liên kết giao thông. Chúng chỉ ra rằng máy chủ giao thức truyền tệp bảo mật (Secure File Transfer Protocol (SFTP)) nằm trên cùng một hệ thống với máy chủ thư. CNAME đóng một vai trò quan trọng, đặc biệt khi máy chủ không thuộc quyền kiểm soát của tổ chức, chẳng hạn như máy chủ web được lưu trữ hoặc quản lý.

  • PTR records: Các bản ghi này cung cấp ràng buộc ngược từ địa chỉ đến tên. Bản ghi PTR phải khớp chính xác với các bản đồ phía trước.

Chủ đề 3: Cấu trúc liên kết DNS cho các doanh nghiệp lớn

Đối với các chuyên gia CNTT, việc hiểu các truy vấn DNS và các loại máy chủ định dạn sẽ giúp chúng tôi thực hiện hầu hết các phương pháp hay nhất về DNS của tổ chức:

  • Cấu trúc mạng (Network topology): Dự phòng đóng vai trò quan trọng trong cơ sở hạ tầng tên miền. Ngay cả khi một máy chủ bị lỗi, máy chủ khác sẽ nắm quyền kiểm soát để duy trì hoạt động của dịch vụ. BIND (phần mềm DNS được sử dụng rộng rãi) hỗ trợ khả năng dự phòng cao thông qua mối quan hệ chủ tớ. (master-slave). NS chính cập nhật sự thay đổi trong ánh xạ tới một hoặc nhiều máy chủ phụ thông qua cơ chế chuyển vùng.

  • Files cấu hình (Configuration files): Cấu hình của BIND được lưu trữ trong tệp có tên là named.conf.. Tệp named.conf này giúp máy chủ nhận ra máy chủ có thẩm quyền và / hoặc bộ nhớ đệm và liệu nó là máy chủ hay máy chủ cho bất kỳ vùng cụ thể nào. Tệp trỏ tới các vùng có chứa cơ sở dữ liệu ánh xạ thực. Nó chứa các dòng hoặc bản ghi xác định ánh xạ tên đến địa chỉ và địa chỉ với tên cho một miền cụ thể.

Kiến thúc (Architecture)

Với sự thay đổi của công nghệ và sự chuyển đổi mạng, DNS đã phải được nâng cấp theo thời gian. Có các cơ quan nhưn Trung tâm nghiên cứu, Phân tích và vận hành DNS (DNS-OARS) và Hiệp hội hệ thống Internet (ISC). Trong sơ đồ sau, chúng ta có thể thấy một kiến trúc DNS tiêu chuẩn được xây dựng để tối ưu hoá cơ sở hạ tầng DNS:

Imgur

Cấu trúc DNS tiêu chuẩn trước đó có thể được mô tả như sau:

  • Master DNS zone: Vùng chính chứa một bản sao đọc/ghi của dữ liệu vùng. Chỉ một vùng chính được phép trong mạng. Tất cả các bản ghi DNS phải được ghi trong vùng chính theo cách thủ công hoặc tự động. Dữ liệu này sau đó được lưu trữ trong một tệp văn bản tiêu chuẩn.

  • Slave DNS zone: Vùng phụ là bản sao chỉ đọc của dữ liệu vùng. Thông thường, nó là một phiên bản sao chép của các vùng chính. Nếu cố gắng thay đổi bản ghi DNS trên vùng phụ, nó có thể chuyển hướng sang vùng khác có quyền truy cập đọc/ghi. Vùng DNS nô lệ phục vụ mục đích sao lưu tệp vùng DNS

  • Aggregate Caching Forwarder (ACF): Về cơ bản, nó chuyển tiếp các yêu cầu thay vì xử lý chúng. Khi máy chủ gửi một phản hồi, nó sẽ chuyển nó trở lại máy khách của chính nó. Trong một số tình huống, trình phân giải cũng có thể là trình chuyển tiếp hoặc bộ nhớ đệm người giao nhận. Nó có thể hoặc không thể lưu dữ liệu vào bộ nhớ cache ; tuy nhiên, nó hữu ích cho các hệ thống như cổng văn phòng tại nhà văn phòng nhỏ (SOHO) muốn cung cấp dữ liệu DNS cho các máy khách DHCP không có địa chỉ xác định trước cho máy chủ DNS.

Những thách thức với DNS hiện tại

Ngày nay, DNS đã trở thành xương sống của Internet và mạng của tổ chức. DNS là cơ sở hạ tầng quan trọng mà không tổ chức nào có thể hoạt động nếu không có chúng. Tuy nhiên, mặc dù đầu tư ngày càng tăng vào mạng và bảo mật thông tin, những kẻ tấn công vẫn tìm cách xâm nhập mạng và DNS vẫn là một thành phần dễ bị tấn công trong cơ sở hạ tầng thường được sử dụng làm vector tấn công. Tường lửa để cổng 53 mở và không bao giờ nhìn vào bên trong mỗi truy vấn. Hãy xem xét một trong những cuộc tấn công dựa trên DNS được sử dụng rộng rãi nhất.

Imgur

Giả mạo DNS (DNS spoofing)

Khi bản ghi của máy chủ DNS bị thay đổi để chuyển hướng lưu lượng đến máy chủ của kẻ tấn công, DNS sẽ bị tấn công. Việc chuyển hướng lưu lượng này cho phép kẻ tấn công phát tán phần mềm độc hại trên toàn mạng. Giả mạo DNS có thể được thực hiện theo một trong ba cách sau:

  • Nhiễm độc bộ nhớ cache DNS (DNS cache poisoning): Kẻ tấn công có thể lợi dụng các bản ghi DNS được lưu trong bộ nhớ cache và sau đó có thể thực hiện giả mạo bằng cách đưa một mục nhập DNS giả mạo vào máy chủ DNS. Do đó, tất cả người dùng bây giờ sẽ sử dụng mục nhập DNS giả mạo đó cho đến khi bộ nhớ cache DNS hết hạn.

  • Thoả hiệp máy chủ DNS (Compromising a DNS server): Máy chủ DNS là trung tâm của toàn bộ cơ sở hạ tầng DNS. Kẻ tấn công có thể sử dụng một số vecto tấn công để xâm phạm DNS máy chủ và có thể cung cập địa chỉ IP của máy chủ web độc hại đối với mỗi truy vấn DNS hợp pháp.

  • Tấn công Man-in-the-middle(MITM): Trong các kiểu tấn công này, tác nhận đe doạ tiếp tục lắng nghe các cuộc trò chuyện giữa các máy khách và máy chủ DNS. Sau khi thu thập thông tin và các tham số trình tự, nó bắt đầu giả mạo máy khách bằng cách giả mạo là máy chủ DNS thực và cung cấp địa chỉ IP của các trang web độc hại.

Giải pháp DNS - Dựa vào Blockchain

Công nghệ chuỗi khối có khả năng biến đối một số nghành công nghiệp và trong chương này, chúng tôi sẽ sử dụng nó để quản lý máy chỉ định danh (name server) nhằm vượt qua một số thách thức DNS quan trọng nhất (the most critical DNS challenges). DNSChain là một trong những dự án tích cực nhất để chuyển đổi khung DNS và bảo vệ nó khỏi những thách thức giả mạo.

DNSChain là một bộ phần mềm DNS dựa trên blockchain thay thế cơ sở hạ tầng khoá công khai X.509(PKI) và cung cấp bằng chức xác thực MITM. Nó cho phép người dùng internet thiết lập một máy chủ DNSChain công khai cho các truy vấn DNS và truy cập vào máy chủ đó có tên miền kết thúc bằng .bit.

Thay thế X.509 KPI (X.509 PKI replacement)

X.509 là một khuôn khổ tiêu chuẩn xác định định dạng của PKI để xác định người dùng và thực thể qua Internet. Nó giúp người dùng internet biết liệu kết nối đến một trang web cụ thể có an toàn hay không. DNSChain có khả nằng cung cấp sự thay thế có thể mở rộng và phi tập trung mà không phụ thuộc vào bên thứ ba.

Cơ sở hạ tầng DNS chống MITM (MITM-proof DNS infrastructure)

Điều này sử dụng kỹ thuật ghim khó công khai để loại bỏ vấn đề tấn công MITM. Ghim khoá công khai chỉ định hai giá trị pin-sha256, nghĩa là nó ghim hai khoá công khai (một là chốt của bất kỳ khoá công khai nào trong chuỗi chứng chỉ hiện tại và khoá còn lại là ghim của bất kỳ khoá coogn khai nào khoogn có trong chuỗi chứng chỉ hiện tại):

  • Nó hoạt động song song với các máy DNS hiện tại

  • Các trang web và cá nhân lưu trữ khoá công khai của họ trong blockchain

  • Các khoá được chia sẻ qua khung phần mềm DNSChain

Phòng thí nghiệm trên cơ sở hạ tầng DNS bảo mật dựa trên Ethereum

Cơ sở hạ tầng DNS là tài sản được nhắm mục tiêu nhiều nhất của các tổ chức. DNS truyền thống dễ bị tấn công bởi một số đe doạ phức tạp. Hệ thống DNS hiện tại là phân cấp và máy chủ gốc của hệ thống trở thành vector tấn công có giá trị cao. Vì toàn bộ cơ sở hạ tầng là tập trung, ngay cả một lỗi nhỏ cũng có thể dẫn đến hỏng toàn bộ hệ thống. Một nhóm kỹ sư, Greg Siepak và Andrea Devers, đã phát triển một nền tảng DNS dựa trên Ethereum để kết nối máy khách và máy chủ định danh mà không có bất kỳ sự tham gia nào của bên thứ ba ở giữa. Dự án có tên là DNSChain và được lưu trữ tại Github địa chỉ https://github.com/okTurtles/dnschain

Chuẩn bị thí nghiệm

[Đoạn này viết Tiếng Anh chứ Tiếng Việt không rõ nghĩa cho lắm]

Configure the DNSChain server in Ubuntu. It will run the PowerDNSRecursor, issuing DNS queries for .com and .net domains as you would expect, but consulting the local Namecoin blockchain to resolve .bit domains

We will start with a fresh copy of Ubuntu LTS. In our lab, we will deploy this Ubuntu system over Amazon’s AWS Cloud.

Warning

Warning: Some of examples here might use expired domains, so it’s best to test domain resolution on a domain that you personally registered on Namecoin’s blockchain. Start with a fresh copy of Ubuntu 16.04 LTS. I’m using Ubuntu 16.04 LTS on Amazon Cloud.

We will use the following commands to prepare the infrastructure:

sudo sh -c "echo 'deb
http://download.opensuse.org/repositories/home:/p_conrad:/coins/xUbuntu_16.
04/ /' >> /etc/apt/sources.list.d/namecoin.list"
wget
http://download.opensuse.org/repositories/home:p_conrad:coins/xUbuntu_16.04
/Release.key
sudo apt-key add - < Release.key
sudo apt-get update

DECENTRALIZING YOUR WEBSITE - IPFS + ENS

Link source tutorials : Here

When hosting a website usually you use a dedicated VPS like, Digital Ocean, Linode, Google, or Amazon. After setting up your server you can register a domain at Google Domains or NameCheap. The last step is editing your DNS records to point your domain at your server. Now you can access your website by navigating to your domain naime. However, there is a problem with this. Your VPS controls the hosting of your site and the domain name service you went with maintains control of your domain. What happens if your VPS goes down or the company you are using is suddenly blacklisted in your country ? What if ICANN takes your domain from you ? Or your domain name service shuts down ?

While these are very unlikely (rất khó xảy ra) they are important and get you thinking about what would you do if you couln’t host your website anymore or your domain was taken away.

Using IPFS(InterPlanetary File System) and ENS(Etherium Name Service) you can host and serve your website in a completely decentralized way.

IPFS is described as:

A peer-to-peer hypermedia protocol designed to make the web faster, safer and more open

You can think of IPFS as HTTP or like a CDN (Content Delivery Network). It is a way of querying resources, except rather than the resources being hosted at a few large data centers controlled by Google, Amazon, etc. The files are decentralized and hosted across various nodes run by anyone across the world.

HTTP looks up resources based on the URL, but IPFS uses hashes to look up resources on its network.

An example of an IPFS hash is: QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv and can be accessed through a gateway like Cloudfare such as cloudflare-ipfs.com/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv

This hash points to the starting files for hosting your own IPFS Node and as you can see it only show links to the other files.

Imgur

But an IPFS hash can also point to a website such as tornado.cash (a crypto mixer) which just recently was deployed to IPFS

Imgur

You can acess it through the ipfs.io get gateway: ipfs.io/ipfs/QmRvFZwyoJeMDCcdSiK15m7Vn2n1BFnz14WNwVxrhizzX5/

In summary, IPFS provides a few major benefits

  • Decentralized Content Network

  • Immutable

  • Censorship Resistant

Deploying to IPFS

You can deploy your website to IPFS by starting your own node. First download the IPFS go implementation then open a terminal and run ipfs daemon

You should then see the following output

Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/darwin
Golang version: go1.12.7
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.1.7/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.1.7/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Now you are ready to pin your site

ipfs add index.html
added QmY9cxiHqTFoWamkQVkpmmqzBrY3hCBEL2XNu3NtX74Fuu index.html
6 B / 6 B [=========================================================] 100.00%

In order to ensure that your site stays on the network, you can pin it to your local node

ipfs pin add QmY9cxiHqTFoWamkQVkpmmqzBrY3hCBEL2XNu3NtX74Fuu
pinned QmY9cxiHqTFoWamkQVkpmmqzBrY3hCBEL2XNu3NtX74Fuu recursively

You can now navigate to the outputted hash through your gateway and see your site

ipfs.io/ipfs/QmY9cxiHqTFoWamkQVkpmmqzBrY3hCBEL2XNu3NtX74Fuu

Pinning to your own node is great, however, what happens if your node goes down or the file(s) you are hosting are deleted and your files(s) are not yet propagated through the network.

A good rule of thumb is to add and pin your website to three IPFS nodes. You could do this by creating your own IPFS cluster or by using a popular pinning service that already has nodes set up. Such as Pintra or Temporal

For this example, we will be using Pintra. First, navigate to pintra.cloud, sign up and navigate to the upload tab

Imgur

Upload your single file or a directory for multiple files. You could also pin the hash from when you added and pinned your file to your local node to ensure that it propagates throughout the network.

If you are creating a web app with a framework such as React or Gatsby you can upload your build or public folder in Pintra. Or you can check out IPFS-Deploy to deploy your sites to IPFS in one line.

Now our site is hosted on the decentralized censorship-resistant IPFS network but navigating to ipfs.io/ipfs/QmY9cxiHqTFoWamkQVkpmmqzBrY3hCBEL2XNu3NtX74Fuu is very hard to remember, we need a domain name.

Register an ENS domain name

The Etherium Name Service(ENS) offers

a secure & decentralised way to address resources both on and off the blockchain using simple, human-readable
 names.

Rather than resgister a domain name on a site like Google Domains, ENS is a non-profit organization that offers .eth domains that are immutable and registerd on the Etherium blockchain

The primary goal of .eth domains was to make cryptocurrency address human readable. However, ENS added support for linking your domain to an IPFS hash so when a .eth domain is entered into your website it will resolve to your website on IPFS.

For example, my .eth domain is koorst.eth if you type that domain into your crypto wallet (if it has an ENS resolver) it will resolve to my ETH address. More importantly, if you type kohorst.eth into your browser (if it has an ENS resolver like Brave, if not you can type kohorst.eth.link and it will resolver) my personal website (hosted on IPFS) will resolve !

The first step is to purchase your ENS domain. Navigate to app.ens.domains and search for your domain name

Imgur

Note: you will need Ether and a Web3 compatible browser.extension in order to purchase an ENS domain. I personally use Metamask and recommend this tutorial on getting started.

Select how many years you would like to purchase the domain for and follow the purchasing steps.

After your sign and verify your transaction you will have to wait while the transaction is verified on the Etherium blockchain. After the transaction completes you can click on your domain to manage it.

It will look something like this

Imgur

There is a lot that you can add to your ENS domain your ETH address along with other cryptocurrencies lke BTC or LTC, your email, Github or even Twitter user names. Most importantly you can add your IPFS hash.

Click on the add button and under Content add the IPFS hash of your website

Imgur

you will have to pay a gas fee for the content to be written to the blockchain and after the transaction is verified you should be able to navigate to yourdomain.eth.link and view your IPFS website !

IPFS and regular domain name services

Don’t have any Ether or don’t want your domain to end in .eth ? You can point your traditional DNS to your IPFS hash so that you can keep your .com domain. You can read more about it here

On Google Domains in your DNS you will need to register an A and AAAA record that points to the IP address of a IPFS gateway. You can look up the IPv4 and IPv5 records for an IPFS gateway (a good list of functioning fateways is available here) using nslookup

I use the ipfs.io gateway its record are

A 209.94.90.1
AAAA 2602:fea2:2::1

Register these on your DNS and then create a TXT record with a dns link value like:

"dnslink=/ipfs/<HASH>"

Imgur

That’s it ! Now your domain will point to your IPFS website !

Ethereum blockchain development using Web3.js

Link source: Here

Blockchain is a brilliant technology that has gained the attention of corporations, tech leaders, and developers all around the world. A world of cryptocurrencies emerged out of a new hope for digital payments, and blockchain makes it all possible.

In this comprehensive tutorial, we’ll show you how to develop a blockchain app using Web3.js. We’ll also review the basics of Ethereum and decentralized blockchain in general and introduce key concepts to help you get started on your blockchain development journey.

What is blockchain ?

Let’s try to understand blockchain, in the simplest possible terms, by breaking down its etymology (ngữ nguyên học). Blockchain is a kind of database that stores information in blocks and then connect those blocks together with a chain. You can think of it as a link list where consecutive blocks are connected with their unique hashes.

Cryptocurrency uses the decentralized blockchain, which means the database is spread among a number of devices so that no single party owns it but all of them hold it. All transactions are immutable (bất biến), meaning they can’t be changed once recorede. We’ll learn about transactions, smart contracts, coins, tokens and lot more in this article.

Decentralized blockchain vs client/server network

A centralized blockchain is a trustless system where there is no need to trust. That means if you are the part of network, you will hold a copy of the database yourself. It’s a peer-to-peer network where all the peers are connected with each other. The data is immutable and can’t be changed. But new data can be added.

On the other hand, the client-server configuration requires handshaking. The data is under the authority of a server or group of servers. They can change it whenever they want.

Since blockchain is immutable, it it great for keeping data secure from changes. It can be used for contracts, ledgers, marksheets, degrees, licenses and even voting in elections. Keep in mind, however, that the data is public and anybody can access it, so you shouldn’t load confidential data (tải dữ liệu bí mật) on public chains. Blockchain technology is better suited for information that is meant to be open and transparent (minh bạch)

Decentralized blockchain is quite secure compared to centrailed servers. First, everything is highly encrypted with the SHA alogorithm. Second, data is immutable (bất biến) and connected through the chain. If there is an attempt to change the data, the chain will be break and whole transaction will be nulled.

For example, if a bad actor were to change the block, they would need to change the connected block as well because it holds the hash of the vulnerable block. If this connected block were updated with the hash of a changed block, its hash would change too, which would require a change in further connected blocks

In other words, altering a single datum( dữ kiện ) in any block requires all the blocks to be changed. If an incredibly persistant hacker were to somehow accomplish this, even then, the correct data would be persisted over thousands of peer nodes around the world and they would mark the faulty data invalid. The bad actor would need to hack thousands of nodes and change the data everywhere at the same time, which is nearly impossible.

Imgur

What is Ethereum ?

Ethereum is a decentrailized blockchain that supports smart contracts. Smart contracts are the byte codes written Solidity language and compiled on Ethereum Virtual Machines (EVM). Due to these smart contracts, Ethereum allows external apps to build and run on its network.

The Ethereum blockchain runs a famous cryptocurrency known as Ether. Every transaction on this chain requires a gas to paid in Ether.

A lot of decentralized finance (DeFi) apps are built on Ethereum. It is free from all the financial transaction intermediaries brokerage, exchange, banks, etc. It only costs a gas fee, which is not dependent on the amount. This gas fee is required to keep network running.

Apart from Ether coints, many tokens are built over Ethereum using the ERC-20 protocol. This protocol defines all the functions that are required to run a token into the market. A token can represent anything, like a lottery ticket, currency, company’s share etc. That’s why startups are creating their own tokens and circulating in the market on exchanges such as Coinbase,Binance, Gate.io, etc.

What is Web3.js ?

Web3.js is a JavaScript library that talks over Ethereum node. This could be a locally deployed Ethereum network or the live chain. It can be used to access information about tokens and Ether coin.

You can also deploy your own application and access using Web3. This library enables you to connect your JavaScript - based frontend to the Ethereum network using HTTP, IPC ans Websockets.