Mới đây (cuối tháng 10/2023), cộng đồng Bitcoin đã tiết lộ rằng Lightning Network có thể có những lỗ hổng lớn, cho phép người dùng xây dựng một phương thức tấn công để ăn cắp tiền, được gọi là "Lightning Replacement Cycling Attack".
Tôi đã đọc nguyên tắc của nó, và tên tiếng Trung có thể được dịch là "Lightning Network Cyclic Replacement Transaction Attack".
Nguyên tắc tấn công của nó như sau.
Trước tiên, hãy giải thích cách hoạt động của Lightning Network:
Alice và Bob mở một kênh thanh toán, nghĩa là cùng nhau mở 2-2 địa chỉ chữ ký, mỗi người trong số họ giữ một khóa riêng.
Alice và Bob nạp 0,5BTC và 0,6BTC vào địa chỉ chữ ký 2-2 này tương ứng (số tiền có thể được chọn tùy ý, tôi chỉ là một ví dụ), cả hai đều xảy ra trên chuỗi Bitcoin chính và các thợ đào sẽ xác nhận. Bằng cách này, trạng thái ban đầu của kênh thanh toán này là 0,5BTC thuộc về ALICE, 0,6BTC thuộc về BOB, chúng tôi ghi nhận (ALICE: 0,5BTC; Bob:0.6BTC)。
Bằng cách này, trong địa chỉ chữ ký 2-2 này, Alice và Bob có thể thanh toán cho nhau, ví dụ: Alice có thể trả BOB 0.1BTC, để trạng thái của kênh trạng thái trở thành 0.4BTC thuộc về Alice, 0.7BTC thuộc về BOB, (ALICE: 0.4BTC; bob:0.7BTC)。 Và các giao dịch như vậy không cần phải được đóng gói trên chuỗi Bitcoin chính, mà chỉ xảy ra giữa Alice và Bob, được gọi là kênh thanh toán.
Chuyển khoản tùy ý giữa Alice và Bob không cần phải được giải quyết cho chuỗi chính, giúp tiết kiệm rất nhiều phí khai thác và có thể nhận được trong thời gian thực, loại bỏ sự cần thiết của 10 phút xác nhận khối.
Nhưng nếu bạn chỉ có thể chuyển giao dịch giữa hai người, nó là vô ích.
Một kênh thanh toán cũng được mở giữa Bob và Carol, và trạng thái ban đầu là Bob có 1.0BTC, carol0BTC, được ghi là (BOB: 1.0BTC; Carol:0BTC)。
Tại thời điểm này, bạn thấy rằng có một kênh thanh toán giữa Alice và Bob, và cũng có một kênh thanh toán giữa Bob và Carol.
Alice sau đó có thể thanh toán bitcoin cho Carol thông qua Bob.
Quy trình thanh toán như sau: Alice trả cho Carol 0,1BTC và các thay đổi trạng thái sau xảy ra ở hai kênh thanh toán trên
Sự thay đổi trạng thái giữa Alice và Bob là (Alice: 0.3BTC; BOB: 0.8BTC)
Thay đổi trạng thái giữa BOB và CAROL là (BOB: 0,9BTC; CAROL: 0,1BTC)
Điều này hoàn thành giao dịch chuyển 0,1BTC từ Alice sang Carol.
Khi ngày càng có nhiều bên mở kênh thanh toán và nhận ra sự kết nối lẫn nhau, một mạng lưới thanh toán được hình thành, mà chúng tôi gọi là Lightning Network.
Tất nhiên, giải thích kỹ thuật chi tiết là quá phức tạp, và trên đây là lời giải thích ngắn gọn nhất.
Phần sau đây mô tả quy trình chung của cuộc tấn công giao dịch thay thế theo chu kỳ Lightning Network và tôi không hiểu các chi tiết kỹ thuật chi tiết và các opcode, hợp đồng và chức năng đó hơi phức tạp.
Những kẻ tấn công là Alice và Carol, những người âm mưu tấn công Bob, và Bob là nạn nhân.
Alice trả 0,3BTC cho Carol.
Các kênh trạng thái ban đầu như sau (ALICE: 0,3BTC; BOB: 0,8BTC) và (BOB: 0,9BTC; CAROL: 0,1BTC)
Kênh trạng thái giữa Alice và Bob nên được đổi thành (Alice: 0; Bob:1.1BTC)
Kênh trạng thái giữa BOB và CAROL nên được thay đổi thành (BOB: 0,6BTC; CAROL: 0,4BTC)
Alice và Carol quyết định hợp tác để lừa đảo 0,3BTC của Bob
Carol chưa tuyên bố xác nhận rằng anh ấy đã nhận được 0,3BTC từ Alice, nghĩa là Carol không gửi thông tin nhận Lightning Network cho BOB. Do đó, Bob sẽ không thể yêu cầu hợp pháp 0,3BTC của Alice trong Lightning Network.
Tại một thời điểm nhất định, Alice đã chơi trò và trực tiếp bắt đầu giao dịch thanh toán bù trừ TX1 trên chuỗi Bitcoin chính, tuyên bố rằng anh ta vẫn còn 0,3BTC, trong khi Bob chỉ có 0,8BTC trong kênh trạng thái của mình.
Trong thỏa thuận tx1, 0,3BTC đã được gửi đến địa chỉ riêng của Alice (chữ ký duy nhất), vì vậy Alice đã cố gắng đánh cắp 0,3BTC không thuộc về cô ấy.
Bởi vì Bob không nhận được biên lai của Carol, Bob không thể chứng minh (Alice; Bob) Trong kênh trạng thái này nên được đổi thành (Alice: 0BTC; Bob:1.1BTC)
Khi TX1 được đóng gói trên chuỗi, tức là Alice ăn cắp 0,3BTC, Carol sẽ ngay lập tức thu thập 0,3BTC trong Lightning Network và gửi biên lai cho BOB.
Bằng cách này, Alice đã không thực sự gửi 0,3BTC đến BOB, nhưng Carol thực sự đã nhận được 0,3BTC từ BOB. Vì vậy, Bob đã bị Alice và Carol đánh cắp 0,3BTC trong quan hệ đối tác.
Lưu ý rằng khi Alice bắt đầu giao dịch trộm cắp tiền xu TX1 trên chuỗi chính, Bob có biện pháp đối phó, tức là bắt đầu giao dịch với chuỗi chính TX2 chứng tỏ Alice đang gian lận, nhưng vì Bob không nhận được biên lai của Carol nên giao dịch TX2 vẫn khá rắc rối, nhưng về mặt lý thuyết nó có thể được thực hiện.
Sau khi Alice nhìn thấy TX2, cô ấy sẽ sử dụng phương pháp phí khai thác cao hơn một lần nữa để đặt lại TX1 để khiến các thợ đào đóng gói TX1 và từ chối TX2, được gọi là "thay thế".
Hiện tại, các nhà phát triển nói rằng sự thông đồng giữa Alice và Carol thực sự có thể khiến việc hợp pháp hóa TX2 của BOB trên các thợ đào chuỗi chính của Bitcoin trở nên khó khăn hơn và để chứng minh rõ ràng hơn rằng TX2 là hợp pháp, giao thức cần phải được sửa đổi và nó là một soft fork cho chuỗi chính, điều này rất khó.
Trên đây là quy trình chung của cuộc tấn công giao dịch thay thế theo chu kỳ Lightning Network, nguyên lý kỹ thuật cụ thể quá phức tạp, mình không hiểu, mình chỉ cho rằng các chi tiết kỹ thuật do nhà phát triển mình thấy trên Internet đăng tải là chính xác.
Phương thức tấn công là kẹp một trong hai, và trao đổi là tự nhiên và tất cả người dùng đã mở một kênh thanh toán, vì vậy sàn giao dịch sẽ bị ảnh hưởng.
Cuối cùng, tôi cảm thấy rằng đây không phải là một vấn đề lớn, không có lỗi trong phần mềm, sẽ có một cách để sửa chữa nó.
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Hiểu nhanh các cuộc tấn công vòng lặp giao dịch thay thế Lightning Network
Mới đây (cuối tháng 10/2023), cộng đồng Bitcoin đã tiết lộ rằng Lightning Network có thể có những lỗ hổng lớn, cho phép người dùng xây dựng một phương thức tấn công để ăn cắp tiền, được gọi là "Lightning Replacement Cycling Attack".
Tôi đã đọc nguyên tắc của nó, và tên tiếng Trung có thể được dịch là "Lightning Network Cyclic Replacement Transaction Attack".
Nguyên tắc tấn công của nó như sau.
Trước tiên, hãy giải thích cách hoạt động của Lightning Network:
Alice và Bob nạp 0,5BTC và 0,6BTC vào địa chỉ chữ ký 2-2 này tương ứng (số tiền có thể được chọn tùy ý, tôi chỉ là một ví dụ), cả hai đều xảy ra trên chuỗi Bitcoin chính và các thợ đào sẽ xác nhận. Bằng cách này, trạng thái ban đầu của kênh thanh toán này là 0,5BTC thuộc về ALICE, 0,6BTC thuộc về BOB, chúng tôi ghi nhận (ALICE: 0,5BTC; Bob:0.6BTC)。
Bằng cách này, trong địa chỉ chữ ký 2-2 này, Alice và Bob có thể thanh toán cho nhau, ví dụ: Alice có thể trả BOB 0.1BTC, để trạng thái của kênh trạng thái trở thành 0.4BTC thuộc về Alice, 0.7BTC thuộc về BOB, (ALICE: 0.4BTC; bob:0.7BTC)。 Và các giao dịch như vậy không cần phải được đóng gói trên chuỗi Bitcoin chính, mà chỉ xảy ra giữa Alice và Bob, được gọi là kênh thanh toán.
Chuyển khoản tùy ý giữa Alice và Bob không cần phải được giải quyết cho chuỗi chính, giúp tiết kiệm rất nhiều phí khai thác và có thể nhận được trong thời gian thực, loại bỏ sự cần thiết của 10 phút xác nhận khối.
Nhưng nếu bạn chỉ có thể chuyển giao dịch giữa hai người, nó là vô ích.
Một kênh thanh toán cũng được mở giữa Bob và Carol, và trạng thái ban đầu là Bob có 1.0BTC, carol0BTC, được ghi là (BOB: 1.0BTC; Carol:0BTC)。
Tại thời điểm này, bạn thấy rằng có một kênh thanh toán giữa Alice và Bob, và cũng có một kênh thanh toán giữa Bob và Carol.
Alice sau đó có thể thanh toán bitcoin cho Carol thông qua Bob.
Quy trình thanh toán như sau: Alice trả cho Carol 0,1BTC và các thay đổi trạng thái sau xảy ra ở hai kênh thanh toán trên
Sự thay đổi trạng thái giữa Alice và Bob là (Alice: 0.3BTC; BOB: 0.8BTC)
Thay đổi trạng thái giữa BOB và CAROL là (BOB: 0,9BTC; CAROL: 0,1BTC)
Điều này hoàn thành giao dịch chuyển 0,1BTC từ Alice sang Carol.
Tất nhiên, giải thích kỹ thuật chi tiết là quá phức tạp, và trên đây là lời giải thích ngắn gọn nhất.
Phần sau đây mô tả quy trình chung của cuộc tấn công giao dịch thay thế theo chu kỳ Lightning Network và tôi không hiểu các chi tiết kỹ thuật chi tiết và các opcode, hợp đồng và chức năng đó hơi phức tạp.
Alice trả 0,3BTC cho Carol.
Các kênh trạng thái ban đầu như sau (ALICE: 0,3BTC; BOB: 0,8BTC) và (BOB: 0,9BTC; CAROL: 0,1BTC)
Kênh trạng thái giữa Alice và Bob nên được đổi thành (Alice: 0; Bob:1.1BTC)
Kênh trạng thái giữa BOB và CAROL nên được thay đổi thành (BOB: 0,6BTC; CAROL: 0,4BTC)
Alice và Carol quyết định hợp tác để lừa đảo 0,3BTC của Bob
Carol chưa tuyên bố xác nhận rằng anh ấy đã nhận được 0,3BTC từ Alice, nghĩa là Carol không gửi thông tin nhận Lightning Network cho BOB. Do đó, Bob sẽ không thể yêu cầu hợp pháp 0,3BTC của Alice trong Lightning Network.
Tại một thời điểm nhất định, Alice đã chơi trò và trực tiếp bắt đầu giao dịch thanh toán bù trừ TX1 trên chuỗi Bitcoin chính, tuyên bố rằng anh ta vẫn còn 0,3BTC, trong khi Bob chỉ có 0,8BTC trong kênh trạng thái của mình.
Trong thỏa thuận tx1, 0,3BTC đã được gửi đến địa chỉ riêng của Alice (chữ ký duy nhất), vì vậy Alice đã cố gắng đánh cắp 0,3BTC không thuộc về cô ấy.
Bởi vì Bob không nhận được biên lai của Carol, Bob không thể chứng minh (Alice; Bob) Trong kênh trạng thái này nên được đổi thành (Alice: 0BTC; Bob:1.1BTC)
Khi TX1 được đóng gói trên chuỗi, tức là Alice ăn cắp 0,3BTC, Carol sẽ ngay lập tức thu thập 0,3BTC trong Lightning Network và gửi biên lai cho BOB.
Bằng cách này, Alice đã không thực sự gửi 0,3BTC đến BOB, nhưng Carol thực sự đã nhận được 0,3BTC từ BOB. Vì vậy, Bob đã bị Alice và Carol đánh cắp 0,3BTC trong quan hệ đối tác.
Lưu ý rằng khi Alice bắt đầu giao dịch trộm cắp tiền xu TX1 trên chuỗi chính, Bob có biện pháp đối phó, tức là bắt đầu giao dịch với chuỗi chính TX2 chứng tỏ Alice đang gian lận, nhưng vì Bob không nhận được biên lai của Carol nên giao dịch TX2 vẫn khá rắc rối, nhưng về mặt lý thuyết nó có thể được thực hiện.
Sau khi Alice nhìn thấy TX2, cô ấy sẽ sử dụng phương pháp phí khai thác cao hơn một lần nữa để đặt lại TX1 để khiến các thợ đào đóng gói TX1 và từ chối TX2, được gọi là "thay thế".
Trên đây là quy trình chung của cuộc tấn công giao dịch thay thế theo chu kỳ Lightning Network, nguyên lý kỹ thuật cụ thể quá phức tạp, mình không hiểu, mình chỉ cho rằng các chi tiết kỹ thuật do nhà phát triển mình thấy trên Internet đăng tải là chính xác.
Phương thức tấn công là kẹp một trong hai, và trao đổi là tự nhiên và tất cả người dùng đã mở một kênh thanh toán, vì vậy sàn giao dịch sẽ bị ảnh hưởng.
Cuối cùng, tôi cảm thấy rằng đây không phải là một vấn đề lớn, không có lỗi trong phần mềm, sẽ có một cách để sửa chữa nó.