Mua tiền điện tử
Thị trường
Spot
Futures
Earn
Chương trình
Thêm
reward-centerKhu vực người mới
Phân tích báo cáoChi tiết
Nghiên cứu ngành

Tấn công Chu kỳ Thay thế trong Mạng lưới Lightning

CoinEx logo
Đăng vào 2023-12-25

Mạng Lightning Bitcoin là một giải pháp mở rộng lớp 2 cho Bitcoin, nhằm giải quyết các thách thức về khả năng mở rộng của blockchain Bitcoin. Nó cho phép các giao dịch Bitcoin tức thì và chi phí thấp, làm cho nó hiệu quả và dễ tiếp cận hơn đối với người dùng. So với các giao dịch trên chuỗi của Bitcoin, các giao dịch trên Mạng Lightning là riêng tư, diễn ra ngoài chuỗi, và chỉ kết quả tổng thể được ghi lại.

Một trong những ưu điểm chính của Mạng Lightning là tốc độ và khả năng chi trả. Nó cho phép người dùng gửi và nhận các khoản thanh toán nhỏ qua mạng Bitcoin một cách đơn giản và tiết kiệm chi phí. Bằng cách tạo ra một mạng lưới các kênh thanh toán giữa người dùng, Mạng Lightning cho phép các giao dịch mà không cần phát sóng mọi giao dịch lên blockchain. Điều này giảm tắc nghẽn trên blockchain Bitcoin và cải thiện khả năng mở rộng của các giao dịch.

Tuy nhiên, cần lưu ý rằng Mạng Lightning vẫn đang trong quá trình phát triển và đối mặt với một số rủi ro về bảo mật và tập trung hóa. Vào tháng 10 năm nay, một lỗ hổng được gọi là "tấn công chu kỳ thay thế" mới được phát hiện trong Mạng Lightning, liên quan đến Cơ chế Thay thế Giao dịch và có thể dẫn đến mất tiền trong kênh của Mạng Lightning. Sự xuất hiện của phương pháp tấn công này đã làm dấy lên lo ngại về bảo mật của Mạng Lightning và thúc đẩy nghiên cứu và cải tiến hơn nữa đối với các giao thức và triển khai của nó.

Cơ chế Mạng Lightning

Mạng Lightning Bitcoin sử dụng cơ chế Multisig để đảm bảo an toàn cho các kênh thanh toán. Người tham gia cần khóa tiền và thiết lập các kênh thanh toán. Người tham gia có thể thực hiện các khoản thanh toán nhanh chóng, chi phí thấp trong kênh mà không cần phải gửi các giao dịch lên blockchain Bitcoin mỗi lần. Kênh thanh toán chỉ là mối quan hệ giữa những người tham gia bên ngoài blockchain Bitcoin, được thực hiện bằng cách ký một loạt các giao dịch trong kênh chỉ được truyền giữa hai đầu của kênh mà không liên quan đến sự đồng thuận của toàn bộ mạng lưới Bitcoin.

Về quy trình cụ thể, khi mở một kênh thanh toán, người tham gia cần tạo một tập lệnh đa chữ ký yêu cầu mỗi bên trên kênh cung cấp khóa công khai của họ, đồng thời chỉ định số lượng chữ ký cần thiết, ví dụ, xác định một tập lệnh chứa nhiều khóa công khai và logic xác minh chữ ký. Khi tạo địa chỉ đa chữ ký, tập lệnh này sẽ được chuyển đổi thành địa chỉ Bitcoin, tạo thành cơ sở hạ tầng của kênh thanh toán.

Ví dụ, như minh họa trong Hình 1, Bob và Alice trước tiên tạo ra một địa chỉ Bitcoin đa chữ ký 2-trong-2 trên chuỗi như một quỹ chung. Trong kênh, họ có thể thực hiện vô số giao dịch cam kết ngoài chuỗi để ghi lại trạng thái hiện tại của phân bổ quỹ. Hai bên có thể đàm phán và ký các giao dịch cam kết mới để cập nhật trạng thái của kênh, mà không cần phát sóng những cập nhật này đến toàn bộ mạng lưới Bitcoin. Khi họ quyết định đóng kênh, giao dịch thanh toán cuối cùng trên chuỗi sẽ phân phối quỹ theo phân bổ được đàm phán cuối cùng. Giao dịch thanh toán này đòi hỏi chữ ký chung của cả Bob và Alice, đảm bảo quỹ được phân bổ theo cách cuối cùng đã thỏa thuận. Bằng cách này, Lightning Network cải thiện hiệu quả của các giao dịch Bitcoin, giảm chi phí, trong khi vẫn giữ được đặc tính phi tập trung của nó.

Hình 1: Sơ đồ Kênh Trạng thái

State Channel Diagram

Nguồn: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

Cơ chế HTLC

Mạng lưới Lightning của Bitcoin cũng áp dụng các kênh thanh toán dựa trên Hợp đồng Khóa Thời gian Băm (HTLCs) để thực hiện một hệ thống kênh thanh toán đa bước, có thể định tuyến. Trong quá trình triển khai, HTLCs yêu cầu một tập lệnh giao dịch phức tạp được định nghĩa bằng ngôn ngữ lập trình để đáp ứng điều kiện băm và điều kiện khóa thời gian. Tập lệnh này sẽ được sử dụng để khởi tạo khi mở kênh thanh toán và được kích hoạt trong quá trình thanh toán. Bằng cách này, Mạng lưới Lightning của Bitcoin đạt được hiệu quả và bảo mật cho các khoản thanh toán xuyên chuỗi.

HTLC (Hợp đồng Khoá Thời gian Băm) là một Hợp đồng Khoá Thời gian Băm, một trong những thành phần quan trọng để thực hiện các giao dịch xuyên chuỗi trên blockchain. HTLC có hai ứng dụng phổ biến: hoán đổi nguyên tử xuyên chuỗi và các kênh thanh toán trong Mạng lưới Lightning. HTLC có thể khoá một khoản chuyển tiền và đặt các điều kiện mở khoá, chẳng hạn như cung cấp thông tin cụ thể trong một khoảng thời gian xác định. Điều này đảm bảo rằng tiền chỉ có thể được rút bởi người nhận khi các điều kiện được đáp ứng.

Về mặt kỹ thuật, một HTLC là một đầu ra bổ sung trong một Giao dịch Cam kết với một tập lệnh đầu ra duy nhất. Đây là một tập lệnh Script chứa các thao tác như OP_HASH160, OP_EQUALVERIFY, v.v., được sử dụng để khoá tiền sao cho chỉ khi cung cấp giá trị tiền ảnh R mới có thể mở khoá. Tập lệnh này có hai đường dẫn khả thi. Đường dẫn đầu tiên (được định nghĩa trong OP IF) gửi tiền cho Bob nếu Bob có thể cung cấp R. Đường dẫn thứ hai là áp dụng khoá thời gian sử dụng nLockTime trong giao dịch thanh toán, cho phép hoàn trả lại cho Alice sau khi khoá hết hạn.

OP_IF

OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY

2 <Alice2> <Bob2> OP_CHECKMULTISIG

OP_ELSE

2 <Alice1> <Bob1> OP_CHECKMULTISIG

OP_ENDIF

Ví dụ về Định tuyến

Trong Mạng lưới Lightning, Alice muốn trả 1 bitcoin cho Eric, nhưng không có kênh thanh toán trực tiếp giữa Alice và Eric. Vì vậy, Alice định tuyến khoản thanh toán thông qua các nút trung gian trong mạng kênh thanh toán (Bob, Carol, Diana) để xây dựng một đường thanh toán an toàn, cho phép cô ấy gián tiếp trả 1 bitcoin cho Eric. Định tuyến thanh toán sử dụng HTLC - chỉ bằng cách cung cấp "bí mật" chính xác trong một khoảng thời gian cụ thể, tiền mới có thể được mở khoá, đảm bảo an toàn thanh toán.

Trong ví dụ này, ở Bước 1, Eric tạo ra một Bí mật R (giải pháp) và tính toán giá trị băm H (câu đố), sau đó đưa giá trị băm H cho Alice.

Bước 2-5: Alice, Bob, Carol, Diana và Eric lần lượt tạo các HTLC theo cặp, yêu cầu cung cấp R (giải pháp) trong một khoảng thời gian nhất định để nhận lại tiền đã khóa từ bên thượng nguồn.

Bước 6-9: Eric cung cấp R (giải pháp) cho Diana để nhận lại 1 BTC. Sau đó Diana nhận BTC từ Carol bằng R, và R được truyền ngược lại theo cách này cho đến khi Alice nhận lại 1,003 BTC (trong đó 0,003 BTC là phí dịch vụ cho các nút trung gian).

Trong ví dụ này, nếu ở Bước 6 Eric không cung cấp R (giải pháp) trong thời gian cố định, sau khi hết thời gian, các khoản tiền bị khóa trong Bước 2-5 sẽ tự động mở khóa và hoàn trả.

Hình 2: Ví dụ về định tuyến

Routing Example

Nguồn: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

Tấn công thay thế vòng lặp

Cơ chế thay thế giao dịch của Bitcoin đề cập đến việc khi một giao dịch được đánh dấu là có thể thay thế, thì giao dịch đó có thể được thay thế bởi một giao dịch khác trong mạng với phí cao hơn trước khi nó được xác nhận trong một khối. Nếu một giao dịch được trả phí tuyệt đối cao hơn và tỷ lệ phí cao hơn, nó có thể thay thế các giao dịch chưa được xác nhận đang chờ xử lý mà trực tiếp xung đột với nó. Sau khi nhận được giao dịch thay thế, các nút sẽ loại bỏ giao dịch gốc có tỷ lệ phí thấp hơn khỏi mempool và chỉ giữ lại giao dịch thay thế. Cơ chế thay thế giao dịch cho phép điều chỉnh phí giao dịch hoặc các tham số khác trước khi giao dịch được xác nhận. Tuy nhiên, cơ chế này cũng có thể được sử dụng để thực hiện các cuộc tấn công từ chối dịch vụ giao dịch, chẳng hạn như liên tục thay thế một giao dịch quan trọng, khiến nó không thể xác nhận được. Do đó, cơ chế thay thế giao dịch cung cấp sự tiện lợi để điều chỉnh giao dịch, nhưng cũng đồng thời tạo ra những rủi ro về việc lạm dụng.

Theo email của nhà phát triển Bitcoin Core Antoine Riard, cuộc tấn công chu kỳ thay thế chủ yếu liên quan đến các kênh thanh toán trong Mạng lưới Lightning Bitcoin. Kẻ tấn công phát tán một giao dịch HTLC-preimage với phí tuyệt đối và tỷ lệ phí cao hơn để thay thế giao dịch HTLC-timeout của nút trung thực. Trong quá trình thay thế, kẻ tấn công có thể thêm các đầu vào hoặc đầu ra bổ sung để đảm bảo giao dịch thay thế được mạng lưới chấp nhận thành công. Phương pháp tấn công này có thể dẫn đến việc chi tiêu kép tiền trong các kênh thanh toán, nghĩa là sau khi nút trung thực phát tán giao dịch HTLC-timeout, kẻ tấn công đã thành công trong việc lấy lại tiền thông qua thay thế. Chúng ta có thể đưa ra một ví dụ đơn giản để minh họa, tương tự như ví dụ trước đó, giả sử đường dẫn được đơn giản hóa chỉ còn Alice, Bob và Eric, và Alice và Eric cấu kết để đánh cắp BTC của Bob.

Bước 1: Alice có ý định thanh toán 1 BTC cho Eric thông qua Bob. Alice\Bob và Bob\Eric mỗi bên xây dựng một HTLC. Eric cần cung cấp R (giải pháp) cho Bob trước khối 1020 (giả sử chiều cao hiện tại là 1000), nếu không Bob có thể lấy lại 1 BTC đã khóa; tương tự, Bob cần phản hồi cho Alice trước khối 1080, nếu không Alice có thể lấy lại 1 BTC của cô ấy.

Bước 2: Eric không cung cấp R (giải pháp) cho Bob trước khối 1020. Bob sẽ phát tán một giao dịch chứa HTLC-timeout. Tiền trong giao dịch này sẽ được hoàn lại cho Bob.

Bước 3: Eric giám sát giao dịch HTLC-timeout của Bob và thay thế nó bằng một giao dịch HTLC-preimage với tỷ lệ phí cao hơn. Sau đó Eric khởi tạo một giao dịch khác để đẩy HTLC-preimage trước đó ra khỏi mempool.

Bước 4: Nút của Bob sẽ phát tán lại giao dịch HTLC-timeout cho đến khối 1080. Eric có thể khởi tạo thay thế mỗi lần. Cho đến khối 1080, giao dịch của bên kênh khác Alice được xác nhận, và Alice lấy lại BTC đã khóa.

Bước 5: Eric nhận được xác nhận HTLC-preimage của mình, vì vậy 1 BTC bị Bob khóa được chuyển cho Eric.

Do đó, 1 BTC của Bob đã được chuyển cho Eric, trong khi anh ta cũng không nhận được BTC đến hạn từ Alice.

Tóm tắt

Tính đến tháng 11 năm 2023, Mạng lưới Lightning đã có hơn 16.000 nút Lightning và 5.000 BTC. Mặc dù các trường hợp tấn công chu kỳ thay thế thực tế chưa được xác nhận, điều này nhấn mạnh sự cần thiết phải nghiên cứu và cải tiến bảo mật liên tục cho Mạng lưới Lightning. Antoine Riard cũng đã đề xuất một số biện pháp để tránh hoặc giảm thiểu các cuộc tấn công chu kỳ thay thế, chẳng hạn như giám sát mempool cục bộ và các giao dịch được chuyển tiếp, xây dựng các mạng lưới chồng chéo giữa các thợ đào và các nút Lightning, và chủ động phát lại các giao dịch hết hạn HTLC để tăng chi phí cho kẻ tấn công. Nhưng đồng thời, anh ấy cũng thông báo ngừng tham gia vào Mạng lưới Lightning và công việc triển khai của nó, bao gồm cả việc điều phối các giải pháp cho các lỗ hổng bảo mật cấp giao thức.

Khi Mạng lưới Lightning mở rộng quy mô, mối đe dọa tiềm tàng từ các cuộc tấn công chu kỳ thay thế có thể trở thành một trở ngại trên con đường phát triển của nó, buộc cộng đồng phải tập trung nhiều hơn vào nghiên cứu và cải tiến bảo mật. Tuy nhiên, chính bằng cách nghiêm túc giải quyết và cải thiện các vấn đề bảo mật, chúng ta có thể chứng kiến Mạng lưới Lightning dần dần giải quyết các rủi ro tiềm ẩn trong tương lai, đạt được một hệ sinh thái lành mạnh và đáng tin cậy hơn.

Về CoinEx

Được thành lập vào năm 2017, CoinEx là sàn giao dịch tiền điện tử toàn cầu cam kết làm cho việc giao dịch trở nên dễ dàng hơn. Nền tảng cung cấp một loạt dịch vụ, bao gồm giao dịch spot và margin, hợp đồng tương lai, hoán đổi, tài khoản tạo lập thị trường (AMM), và các dịch vụ quản lý tài chính cho hơn 5 triệu người dùng trên 200+ quốc gia và vùng lãnh thổ. Kể từ khi thành lập, CoinEx đã kiên định tuân theo nguyên tắc phục vụ "lấy người dùng làm trọng tâm". Với mục đích chân thành là nuôi dưỡng một môi trường giao dịch tiền điện tử công bằng, tôn trọng và an toàn, CoinEx cho phép người dùng dễ dàng tiếp cận thế giới tiền điện tử bằng cách cung cấp các sản phẩm và dịch vụ dễ sử dụng.

Tài liệu tham khảo

https://cypherpunks-core.github.io/bitcoinbook/

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html

https://lightning.network/lightning-network-paper.pdf

https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf