Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?

Ngày nay, chỉ có những kẻ lười biếng mới không viết về công nghệ blockchain, tiền điện tử và sự thú vị của nó. Nhưng bài viết này sẽ không ca ngợi công nghệ này mà sẽ nói về những khuyết điểm của nó và cách khắc phục.

Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?

Khi thực hiện một trong các dự án tại Altirix Systems, nhiệm vụ phát sinh là xác nhận dữ liệu một cách an toàn, chống kiểm duyệt từ một nguồn bên ngoài chuỗi khối. Cần phải xác nhận những thay đổi trong bản ghi của hệ thống thứ ba và dựa trên những thay đổi này, thực thi nhánh này hoặc nhánh khác trong logic hợp đồng thông minh. Nhiệm vụ thoạt nhìn khá tầm thường, nhưng khi điều kiện tài chính của một trong các bên tham gia vào quá trình này phụ thuộc vào kết quả thực hiện thì các yêu cầu bổ sung sẽ xuất hiện. Trước hết, đây là sự tin tưởng toàn diện vào cơ chế xác nhận như vậy. Nhưng điều đầu tiên trước tiên.

Vấn đề là bản thân blockchain là một thực thể khép kín, tự trị, vì vậy các hợp đồng thông minh bên trong blockchain không biết gì về thế giới bên ngoài. Đồng thời, các điều khoản của hợp đồng thông minh thường liên quan đến thông tin về sự vật có thật (trì hoãn chuyến bay, tỷ giá hối đoái, v.v.). Để hợp đồng thông minh hoạt động bình thường, thông tin nhận được từ bên ngoài blockchain phải đáng tin cậy và được xác minh. Vấn đề này được giải quyết bằng cách sử dụng các oracle như Town Crier và DECO. Những oracle này cho phép một hợp đồng thông minh trên mạng blockchain tin cậy thông tin từ một máy chủ web đáng tin cậy; chúng ta có thể nói rằng đây là những nhà cung cấp thông tin đáng tin cậy.

Lời tiên tri

Hãy tưởng tượng rằng một hợp đồng thông minh chuyển 0.001 btc vào ví bitcoin của bạn nếu câu lạc bộ bóng đá yêu thích của bạn giành được Cúp Nga. Trong trường hợp chiến thắng thực sự, hợp đồng thông minh cần chuyển thông tin về câu lạc bộ nào đã thắng và một số vấn đề nảy sinh ở đây: lấy thông tin này ở đâu, làm cách nào để chuyển nó sang hợp đồng thông minh một cách an toàn và làm thế nào để đảm bảo rằng thông tin đó nhận được trong hợp đồng thông minh có hợp lệ có thực sự trùng khớp với thực tế không?

Khi nói đến nguồn thông tin, có thể có 2 tình huống: kết nối hợp đồng thông minh với một trang web đáng tin cậy nơi thông tin về kết quả trận đấu được lưu trữ tập trung và tùy chọn thứ hai là kết nối nhiều trang web cùng một lúc rồi chọn thông tin từ hầu hết các nguồn cung cấp cùng một dữ liệu. Để xác minh tính chính xác của thông tin, các oracle được sử dụng, chẳng hạn như Oraclize, sử dụng TLSNotary (Sửa đổi công chứng TLS để chứng minh tính xác thực của dữ liệu). Nhưng có đủ thông tin trên Google về Oraclize và có một số bài viết về Habré. Hôm nay tôi sẽ nói về các oracle sử dụng cách tiếp cận hơi khác để truyền thông tin: Town Crier và DECO. Bài viết cung cấp mô tả về nguyên tắc hoạt động của cả hai oracle cũng như so sánh chi tiết.

thị trấn

Town Crier (TC) được IC3 (Sáng kiến ​​về tiền điện tử và hợp đồng) giới thiệu vào năm 2016 tại CCS'16. Ý tưởng chính của TC: chuyển thông tin từ trang web sang hợp đồng thông minh và đảm bảo rằng thông tin do TC cung cấp giống như trên trang web. TC sử dụng TEE (Môi trường thực thi tin cậy) để xác thực quyền sở hữu dữ liệu. Phiên bản gốc của TC mô tả cách làm việc với Intel SGX.
Town Crier bao gồm một phần bên trong blockchain và một phần bên trong chính hệ điều hành - TC Server.
Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?
Hợp đồng TC nằm trên blockchain và đóng vai trò là giao diện người dùng cho TC. Nó chấp nhận các yêu cầu từ CU (hợp đồng thông minh người dùng) và trả về phản hồi từ Máy chủ TC. Bên trong Máy chủ TC có một Rơle, thiết lập kết nối giữa vùng đất và Internet (lưu lượng truy cập hai chiều) và kết nối vùng đất với blockchain. Enclave chứa progencl, là mã thực hiện các yêu cầu từ blockchain và trả lại tin nhắn tới blockchain bằng chữ ký số, progencl chứa một phần mã hợp đồng thông minh và về cơ bản thực hiện một số chức năng của nó.

Vùng Intel SGX có thể được coi là một thư viện dùng chung với API chạy qua ecall. Ecall chuyển quyền kiểm soát đến khu vực bao quanh. Vùng đất này thực thi mã của nó cho đến khi thoát hoặc cho đến khi xảy ra ngoại lệ. ocall được sử dụng để gọi các hàm được xác định bên ngoài vùng bao quanh. Ocall được thực thi bên ngoài vùng bao quanh và được nó coi như một lệnh gọi không đáng tin cậy. Sau khi ocall được thực thi, quyền điều khiển sẽ được trả về vùng bao quanh.
Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?
Trong phần Enclave, một kênh bảo mật được cấu hình với một máy chủ web, phần Enclave tự thực hiện bắt tay TLS với máy chủ đích và thực hiện tất cả các hoạt động mã hóa nội bộ. Thư viện TLS (mbedTLS) và mã HTTP rút gọn đã được xuất sang môi trường SGX. Ngoài ra, Enclave còn chứa chứng chỉ CA gốc (tập hợp chứng chỉ) để xác minh chứng chỉ của máy chủ từ xa. Trình xử lý yêu cầu chấp nhận yêu cầu datagram theo định dạng do Ethereum cung cấp, giải mã và phân tích nó. Sau đó, nó tạo ra một giao dịch Ethereum chứa datagram được yêu cầu, ký nó với skTC và truyền nó tới Relay.

Phần Relay bao gồm Client Interface, TCP, Blockchain Interface. Cần có Giao diện khách hàng để xác nhận mã kèm theo và liên lạc với khách hàng. Máy khách gửi yêu cầu chứng thực bằng ecall và nhận dấu thời gian được ký bởi skTC cùng với att (chữ ký chứng thực), sau đó att được xác minh bằng Dịch vụ chứng thực Intel (IAS) và dấu thời gian được xác minh bởi dịch vụ thời gian đáng tin cậy. Giao diện chuỗi khối xác minh các yêu cầu đến và đặt các giao dịch trên chuỗi khối để phân phối các gói dữ liệu. Geth là ứng dụng khách Ethereum chính thức và cho phép Relay tương tác với blockchain thông qua các lệnh gọi RPC.

Làm việc với TEE, TC cho phép bạn chạy song song nhiều vùng, nhờ đó tăng tốc độ xử lý thông tin lên gấp 3 lần. Nếu với một vùng chạy tốc độ là 15 tx/giây thì với 20 vùng chạy song song, tốc độ tăng lên 65 tx/giây; để so sánh, tốc độ hoạt động tối đa trong chuỗi khối Bitcoin là 26 tx/giây.

DECO

DECO (Oracle phi tập trung cho TLS) đã được giới thiệu tại CCS'20, hoạt động với các trang web hỗ trợ kết nối TLS. Đảm bảo tính bảo mật và toàn vẹn dữ liệu.
DECO với TLS sử dụng mã hóa đối xứng, do đó máy khách và máy chủ web có khóa mã hóa và máy khách có thể giả mạo dữ liệu phiên TLS nếu muốn. Để giải quyết vấn đề này, DECO sử dụng giao thức bắt tay ba chiều giữa người chứng minh (hợp đồng thông minh), người xác minh (oracle) và máy chủ web (nguồn dữ liệu).

Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?

Cách thức hoạt động của DECO là trình xác minh nhận một phần dữ liệu D và xác nhận với trình xác minh rằng D đến từ máy chủ TLS S. Một vấn đề khác là TLS không ký dữ liệu và máy khách TLS khó chứng minh được rằng dữ liệu đã được nhận từ đúng máy chủ (khó khăn về xuất xứ).

Giao thức DECO sử dụng khóa mã hóa KEnc và KMac. Máy khách gửi yêu cầu Q đến máy chủ web, phản hồi từ máy chủ R ở dạng mã hóa, nhưng máy khách và máy chủ sở hữu cùng một KMac và máy khách có thể giả mạo thông báo TLS. Giải pháp của DECO là "ẩn" KMac khỏi máy khách (prover) cho đến khi nó đáp ứng yêu cầu. Bây giờ KMac được phân chia giữa người chứng minh và người xác minh - KpMac và KvMac. Máy chủ nhận KMac để mã hóa phản hồi bằng thao tác phần khóa KpMac ⊕ KvMac = KMac.

Bằng cách thiết lập bắt tay ba chiều, việc trao đổi dữ liệu giữa máy khách và máy chủ sẽ được thực hiện với sự đảm bảo về tính bảo mật.
Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?
Khi nói về một hệ thống oracle phi tập trung, người ta không thể không nhắc đến Chainlink, nhằm mục đích tạo ra một mạng lưới phi tập trung gồm các nút oracle tương thích với Ethereum, Bitcoin và Hyperledger, có tính đến tính mô đun: mọi phần của hệ thống đều có thể được cập nhật. Đồng thời, để đảm bảo tính bảo mật, Chainlink cung cấp cho mỗi nhà tiên tri tham gia nhiệm vụ phát hành một tổ hợp khóa (công khai và riêng tư). Khóa riêng được sử dụng để tạo một phần chữ ký chứa quyết định của họ đối với yêu cầu dữ liệu. Để có được câu trả lời, cần phải kết hợp tất cả các chữ ký một phần của các oracle của mạng.

Chainlink có kế hoạch tiến hành PoC DECO ban đầu, tập trung vào các ứng dụng tài chính phi tập trung như Mixicles. Tại thời điểm viết bài, có tin tức trên Forbes rằng Chainlink đã mua lại DECO từ Đại học Cornell.

Tấn công vào nhà tiên tri

Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?

Từ quan điểm bảo mật thông tin, các cuộc tấn công sau vào Town Crier đã được xem xét:

  1. Việc tiêm mã liên hệ thông minh giả mạo vào các nút TEE.
    Bản chất của cuộc tấn công: truyền mã hợp đồng thông minh có chủ ý không chính xác đến TEE, do đó, kẻ tấn công có quyền truy cập vào nút sẽ có thể thực thi hợp đồng thông minh (lừa đảo) của chính mình trên dữ liệu được giải mã. Tuy nhiên, các giá trị trả về sẽ được mã hóa bằng khóa riêng và cách duy nhất để truy cập dữ liệu đó là rò rỉ văn bản mã hóa khi trả về/đầu ra.
    Bảo vệ chống lại cuộc tấn công này bao gồm việc bao vây kiểm tra tính chính xác của mã nằm ở địa chỉ hiện tại. Điều này có thể đạt được bằng cách sử dụng sơ đồ địa chỉ trong đó địa chỉ hợp đồng được xác định bằng cách băm mã hợp đồng.

  2. Rò rỉ các thay đổi về bản mã trạng thái hợp đồng.
    Bản chất của cuộc tấn công: Chủ sở hữu các nút nơi hợp đồng thông minh được thực thi có quyền truy cập vào trạng thái hợp đồng ở dạng được mã hóa bên ngoài khu vực. Kẻ tấn công, sau khi giành được quyền kiểm soát nút, có thể so sánh trạng thái liên hệ trước và sau giao dịch và có thể xác định đối số nào đã được nhập và phương thức hợp đồng thông minh nào đã được sử dụng, vì chính mã hợp đồng thông minh và các thông số kỹ thuật của nó được công khai.
    Bảo vệ trong việc đảm bảo độ tin cậy của chính nút đó.

  3. Các cuộc tấn công kênh bên.
    Một kiểu tấn công đặc biệt sử dụng tính năng giám sát bộ nhớ kèm theo và truy cập bộ đệm trong nhiều tình huống khác nhau. Một ví dụ về cuộc tấn công như vậy là Prime và Probe.
    Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?
    Lệnh tấn công:

    • t0: Kẻ tấn công lấp đầy toàn bộ bộ đệm dữ liệu của tiến trình nạn nhân.
    • t1: Nạn nhân thực thi mã với quyền truy cập bộ nhớ phụ thuộc vào dữ liệu nhạy cảm của nạn nhân (khóa mật mã). Dòng bộ đệm được chọn dựa trên giá trị keybit. Trong ví dụ trong hình, keybit = 0 và địa chỉ X trong dòng bộ đệm 2 được đọc. Dữ liệu được lưu trữ trong X được tải vào bộ đệm, thay thế dữ liệu đã có trước đó.
    • t2: Kẻ tấn công kiểm tra dòng bộ đệm nào của hắn đã bị xóa—các dòng được nạn nhân sử dụng. Điều này được thực hiện bằng cách đo thời gian truy cập. Bằng cách lặp lại thao tác này cho mỗi keybit, kẻ tấn công sẽ lấy được toàn bộ khóa.

Bảo vệ khỏi cuộc tấn công: Intel SGX có khả năng bảo vệ chống lại các cuộc tấn công kênh bên nhằm ngăn chặn việc giám sát các sự kiện liên quan đến bộ đệm, nhưng cuộc tấn công Prime và Probe vẫn sẽ hoạt động vì kẻ tấn công giám sát các sự kiện bộ đệm trong quá trình của mình và chia sẻ bộ đệm với nạn nhân.
Town Crier vs DECO: nên sử dụng oracle nào trong blockchain?
Vì vậy, hiện tại không có biện pháp bảo vệ đáng tin cậy nào chống lại cuộc tấn công này.

Các cuộc tấn công như Spectre và Foreshadow (L1TF), tương tự như Prime và Probe, cũng được biết đến. Chúng cho phép bạn đọc dữ liệu từ bộ nhớ đệm thông qua kênh của bên thứ ba. Tính năng bảo vệ chống lại lỗ hổng Spectre-v2 được cung cấp, có tác dụng chống lại hai trong số các cuộc tấn công này.

Liên quan đến DECO, cái bắt tay ba chiều mang lại sự đảm bảo về an ninh:

  1. Tính toàn vẹn của Prover: Prover bị tấn công không thể làm sai lệch thông tin nguồn gốc của máy chủ và không thể khiến máy chủ chấp nhận các yêu cầu không hợp lệ hoặc phản hồi không chính xác các yêu cầu hợp lệ. Điều này được thực hiện thông qua các mẫu yêu cầu giữa máy chủ và người hoạt động.
  2. Tính toàn vẹn của người xác minh: Trình xác minh bị tấn công không thể khiến người chứng minh nhận được câu trả lời sai.
  3. Quyền riêng tư: Trình xác minh bị tấn công chỉ kiểm tra thông tin công khai (yêu cầu, tên máy chủ).

Trong DECO, chỉ có thể có các lỗ hổng chèn lưu lượng truy cập. Đầu tiên, với thao tác bắt tay ba chiều, người xác minh có thể thiết lập danh tính của máy chủ bằng cách sử dụng một nonce mới. Tuy nhiên, sau khi bắt tay, người xác minh phải dựa vào các chỉ báo lớp mạng (địa chỉ IP). Do đó, giao tiếp giữa người xác minh và máy chủ phải được bảo vệ khỏi việc chèn lưu lượng. Điều này đạt được bằng cách sử dụng Proxy.

So sánh các oracle

Town Crier dựa trên cơ sở làm việc với một vùng trong phần máy chủ, trong khi DECO cho phép bạn xác minh tính xác thực của nguồn gốc dữ liệu bằng cách sử dụng bắt tay ba chiều và mã hóa dữ liệu bằng khóa mật mã. Việc so sánh các oracle này được thực hiện theo các tiêu chí sau: hiệu suất, bảo mật, chi phí và tính thực tế.

thị trấn
DECO

hiệu suất
Nhanh hơn (0.6 giây để hoàn thành)
Chậm hơn (10.50 giây để hoàn thành giao thức)

an toàn
Kém an toàn
An toàn hơn

chi phí
Đắt hơn
Giá rẻ hơn

tính thực tế
Yêu cầu phần cứng đặc biệt
Hoạt động với mọi máy chủ hỗ trợ TLS

Tốc độ: Để làm việc với DECO cần phải bắt tay ba chiều, khi thiết lập qua mạng LAN mất 0.37 giây, để tương tác sau khi thiết lập kết nối, 2PC-HMAC có hiệu quả (0,13 giây mỗi lần ghi). Hiệu suất của DECO phụ thuộc vào bộ mật mã TLS có sẵn, kích thước của dữ liệu riêng tư và độ phức tạp của bằng chứng cho một ứng dụng cụ thể. Lấy ứng dụng quyền chọn nhị phân từ IC3 làm ví dụ: việc hoàn tất giao thức qua mạng LAN mất khoảng 10,50 giây. Để so sánh, Town Crier mất khoảng 0,6 giây để hoàn thành một ứng dụng tương tự, nhanh hơn DECO khoảng 20 lần. Mọi thứ đều bình đẳng, TC sẽ nhanh hơn.

Безопасность: Các cuộc tấn công vào vùng Intel SGX (tấn công kênh bên) hoạt động và có thể gây ra thiệt hại thực sự cho những người tham gia hợp đồng thông minh. Về DECO, các cuộc tấn công liên quan đến chèn lưu lượng truy cập là có thể xảy ra, nhưng việc sử dụng proxy sẽ giảm thiểu các cuộc tấn công đó xuống mức không có gì. Vì vậy DECO an toàn hơn.

chi phí: Chi phí thiết bị hỗ trợ Intel SGX cao hơn chi phí thiết lập giao thức trong DECO. Đó là lý do tại sao TC đắt hơn.

Tính thực tiễn: Để làm việc với Town Crier, cần có thiết bị đặc biệt hỗ trợ TEE. Ví dụ: Intel SGX được hỗ trợ trên dòng bộ xử lý Intel Core thế hệ thứ 6 trở lên. DECO cho phép bạn làm việc với bất kỳ thiết bị nào, mặc dù có cài đặt DECO sử dụng TEE. Theo quá trình thiết lập, quá trình bắt tay ba chiều của DECO có thể mất một chút thời gian, nhưng điều này không là gì so với giới hạn phần cứng của TC, vì vậy DECO thực tế hơn.

Kết luận

Nhìn riêng biệt hai oracle và so sánh chúng theo bốn tiêu chí, có thể thấy rõ Town Crier thua kém DECO ở ba trên bốn điểm. DECO đáng tin cậy hơn từ quan điểm bảo mật thông tin, rẻ hơn và thiết thực hơn, mặc dù việc thiết lập giao thức ba bên có thể mất một chút thời gian và có những nhược điểm, chẳng hạn như các hoạt động bổ sung với khóa mã hóa. TC nhanh hơn DECO, nhưng các lỗ hổng tấn công kênh bên khiến nó dễ bị mất tính bảo mật. Cần phải lưu ý rằng DECO đã được giới thiệu vào tháng 2020 năm 4 và chưa có đủ thời gian để coi là an toàn. Town Crier đã bị tấn công trong XNUMX năm và đã trải qua nhiều cuộc thử nghiệm nên việc sử dụng nó trong nhiều dự án là hợp lý.

Nguồn: www.habr.com

Thêm một lời nhận xét