Về mô hình bảo mật của ví phần mềm | sổ cái

Về mô hình bảo mật của ví phần mềm | sổ cái

Nút nguồn: 2671485

Chúng ta có thể phân biệt hai loại ví phổ biến: ví phần mềm và ví phần cứng. Chúng thực hiện cùng một chức năng, nhưng theo một cách khác. Ví phần mềm được coi là đơn giản hơn để sử dụng: một chương trình duy nhất là đủ để tạo, xác thực và ký các giao dịch. Với ví phần mềm, không cần thiết phải tạo giao dịch trên phần mềm và xác nhận nó trên thiết bị phần cứng.

Hai tuần trước, Câu chuyện bị cấm tiết lộ một cuộc tấn công nhắm mục tiêu chống lại hàng ngàn người trên khắp thế giới. Cuộc tấn công này đã khai thác các lỗ hổng trên Android và iOS, để cài đặt phần mềm gián điệp do Tập đoàn NSO: Pegasus phát triển. Phần mềm độc hại này có thể giám sát toàn bộ hoạt động của thiết bị và lấy cắp thông tin cá nhân: SMS, WhatsApp và các cuộc hội thoại Signal, cuộc gọi điện thoại, v.v. Bài viết này giải thích cách thức, trong những điều kiện này, phần mềm độc hại như vậy có thể trích xuất tất cả bí mật của ví phần mềm và sự khác biệt từ quan điểm bảo mật giữa ví phần mềm trên điện thoại di động và máy tính để bàn.

Bài viết này được dự định là không phải là rất kỹ thuật. Để giữ cho nó tương đối đơn giản, chỉ các tính năng cơ bản sẽ được thảo luận.

bảo vệ bí mật

Những gì được lưu trữ trong ví tiền điện tử?

Ví không thực sự lưu trữ tiền điện tử của người dùng: chúng chỉ lưu trữ các bí mật, đặc biệt là các khóa riêng, cho phép truy cập tiền điện tử và khả năng chi tiêu chúng. Các khóa riêng này hầu hết là các khóa riêng ECC (mã hóa đường cong elip) trên các đường cong khác nhau tùy thuộc vào chuỗi khối. Các đường cong phổ biến nhất là secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero) hoặc BLS12-381 (Ethereum 2).

Các khóa này được sử dụng để ký các giao dịch và nói chung là để tương tác với các tài sản chuỗi khối.

Việc lưu trữ các khóa này phụ thuộc vào loại ví: xác định hay không. Ví xác định phân cấp (HD) cho phép tạo một cây khóa từ một bí mật chính duy nhất được gọi là hạt giống (cf BIP44). Hạt giống này thường bắt nguồn từ một chuỗi ghi nhớ gồm 12, 18 hoặc 24 từ do người dùng tạo hoặc chọn ngẫu nhiên (xem.BIP39). Những thuật nhớ này cho phép giới hạn số lượng khóa được lưu trữ: chúng có thể được tính toán lại bất cứ lúc nào từ hạt giống. Ví HD chỉ lưu trữ ghi nhớ này hoặc hạt giống.

Ví không xác định tạo khóa mới cho mỗi lần sử dụng và phải lưu trữ tất cả chúng. Không thể dễ dàng di chuyển ví không xác định sang ví khác vì các bản sao lưu không tương thích.

Các tính năng bảo mật chính của ví bao gồm tạo, lưu trữ và sử dụng các bí mật này đúng cách. Có nhiều cấp độ bảo mật khác nhau chống lại các loại mối đe dọa khác nhau:

  • Bảo vệ chống lại các cuộc tấn công của "cô hầu gái độc ác": Kẻ tấn công có quyền truy cập tạm thời vào ví không thể thêm cửa hậu bên trong ví để lấy cắp mã PIN hoặc bí mật bảo vệ mật khẩu.
  • Tài liệu mật mã an toàn: Các khóa và nonce do ví tạo ra không bao giờ được đoán trước. Hơn nữa, kiến ​​thức về bí mật (ngoại trừ hạt giống) được tạo ra tại một thời điểm nào đó sẽ không cho phép dự đoán bí mật sẽ được tạo ra trong tương lai.
  • Bảo vệ khi nghỉ ngơi: Nếu kẻ tấn công lấy được dữ liệu liên tục của ví phần mềm, chúng không thể trích xuất khóa.
  • Bảo vệ trong quá trình sử dụng bí mật: Khi ví được mở khóa, kẻ tấn công hoặc phần mềm độc hại không thể truy cập khóa.
Ví cứng

Mô hình bảo mật của ví phần cứng nhằm mục đích loại bỏ các mối đe dọa bảo mật này. Ví phần cứng bảo vệ chống lại phần mềm độc hại theo thiết kế. Chúng là những thiết bị độc lập tự ký giao dịch. Các tài liệu mật mã luôn ở bên trong thiết bị và không bao giờ được gửi đến ứng dụng phần mềm mà chúng giao tiếp. Giao diện liên lạc luôn đơn giản giúp giảm đáng kể bề mặt tấn công. Đó có thể là USB, Micro SD hoặc camera + màn hình (thông qua mã QR), hoặc Bluetooth Low Energy.

Hơn nữa, ví phần cứng nhúng màn hình trực tiếp vào thiết bị cho phép người dùng xác minh các hành động mà họ sắp thực hiện khi tương tác với các khóa bí mật của mình. Các kiểm tra thủ công trên thiết bị này là một biện pháp đối phó rất hiệu quả đối với phần mềm độc hại trên máy tính/thiết bị di động. Trường hợp phần mềm độc hại trên máy tính/thiết bị di động có thể truy cập vào các bí mật (khóa hạt giống hoặc khóa cá nhân) hoặc thậm chí hoán đổi/sửa đổi địa chỉ hoặc số tiền khi người dùng đang thực hiện giao dịch, điều này là không thể đối với ví phần cứng.

Ví phần cứng cũng được thiết kế để bảo vệ chống lại các cuộc tấn công của “người giúp việc độc ác” và chống lại kẻ tấn công có quyền truy cập vật lý. Tùy thuộc vào ví phần cứng, chúng có các mức bảo mật khác nhau, nhưng trong mọi trường hợp, chúng được thiết kế để bảo mật trước các mối đe dọa này. Có thể tìm thấy mô tả chi tiết về các mô hình mối đe dọa Ledger Nano tại đây.

Phần mềm ví

Ví phần mềm thông thường bảo vệ bí mật bằng các phương tiện thông thường: cơ chế bảo mật của hệ điều hành mà chúng chạy trên đó và đôi khi là kiểm soát truy cập dựa trên mã PIN hoặc mật khẩu.

Sau đây, ví máy tính để bàn (Windows, macOS, Linux) và ví di động được xem xét. Sự khác biệt chính giữa chúng chủ yếu dựa vào các cơ chế bảo mật do hệ điều hành cung cấp.

Phần mềm ví trên máy tính

Một số ví phổ biến, chẳng hạn như Electrum, Exodus, Atomic hoặc Bitcoin core, chạy trên máy tính.

Trên máy tính, các cơ chế bảo mật do hệ điều hành cung cấp để cách ly quy trình ví khỏi các quy trình khác bị hạn chế. Hầu hết các ứng dụng được điều hành bởi cùng một người dùng và các ứng dụng được phép đọc dữ liệu của ứng dụng khác.

Tính bảo mật của các ví phần mềm này chủ yếu dựa vào tính bảo mật của mật khẩu bảo vệ chúng và thực tế là không có phần mềm độc hại nào chạy trên HĐH (điều này khá khó đảm bảo, hãy xem tin tức gần đây về Pegasus).

Hầu hết thời gian, hạt giống được lưu trữ trong một thùng chứa được mã hóa được bảo vệ bằng mật khẩu. Một cuộc tấn công đơn giản bao gồm phần mềm độc hại hoặc công cụ quản trị từ xa, để lấy thùng chứa được mã hóa này và gửi nó cho kẻ tấn công. Sau đó, mật khẩu có thể bị ép buộc hoặc có được thông qua sử dụng keylogger.

Trong trường hợp kẻ tấn công chỉ quản lý để truy cập vào vùng chứa được mã hóa (kẻ tấn công tìm thấy khóa USB chứa ví hoặc cài đặt phần mềm độc hại trên máy tính, nhưng nạn nhân không bao giờ mở ứng dụng ví của mình), kẻ tấn công phải dùng vũ lực mật khẩu.

Hầu hết các mật khẩu đều xấu. Có hàng tỷ mật khẩu bị rò rỉ trên web và nhiều người có xu hướng sử dụng lại mật khẩu của họ cho một số dịch vụ. Các công cụ làm sẵn cho phép bạn truy xuất mật khẩu cho ví tiền điện tử, chẳng hạn như btcrecover or băm. Mật khẩu có thể phức tạp, nhưng đằng sau mỗi ví đều có tiền thật, do đó những kẻ tấn công sẽ không ngần ngại đầu tư nguồn lực để phá những mật khẩu như vậy.

Hai nguyên tắc bảo mật cơ bản để giữ an toàn cho mật khẩu của bạn là sử dụng trình quản lý mật khẩu và không bao giờ sử dụng lại mật khẩu của bạn cho các mục đích khác.

Mối đe dọa đáng lo ngại nhất đối với ví phần mềm là phần mềm độc hại và kẻ đánh cắp chuyên dụng, được phát triển đặc biệt để rút tiền của bạn. Phần mềm độc hại như vậy, chẳng hạn như KPOT hoặc ElectroRAT, thậm chí không cần phải bruteforce mật khẩu của bạn: họ có thể trực tiếp nắm bắt mật khẩu khi bạn nhập, giải mã dữ liệu cấu hình ví và trích xuất hạt giống.

Đây là một ứng dụng đồ chơi, được phát triển cho bài viết này, nhắm mục tiêu vào ví Electrum (mặc dù nó có thể là một ví phần mềm khác). Nó mô phỏng một phần mềm độc hại đánh cắp mật khẩu người dùng khi nạn nhân nhập vào. Mật khẩu sau đó được sử dụng để giải mã dữ liệu ví và để hiển thị hạt giống:

Như bạn thấy, ngay cả khi mật khẩu phức tạp, ứng dụng vẫn có thể truy xuất nó khi nó trực tiếp đánh hơi mật khẩu đó trong bộ nhớ.

Ví dụ này rất giống với ví dụ gần đây Phần mềm độc hại .SCR các chiến dịch được sử dụng để đánh cắp tiền điện tử. Tội phạm đã sử dụng các kỹ thuật tấn công xã hội để lừa người dùng tải xuống trình bảo vệ màn hình độc hại. Trình bảo vệ màn hình này thực sự đã đánh cắp thông tin từ nạn nhân của máy tính, bao gồm thông tin trao đổi ví và tiền điện tử.

Để kết luận về ví phần mềm chạy trên máy tính:

  • Trong hầu hết các trường hợp, ví phần mềm chạy trên máy tính bảo vệ hạt giống của người dùng bằng mật khẩu.
  • Việc kiểm soát truy cập đối với các tệp ví này chủ yếu dựa vào tính bảo mật của máy tính. Trên thực tế, rất khó để bảo vệ máy tính khỏi phần mềm độc hại và khi tiền điện tử trở thành xu hướng chủ đạo, các cuộc tấn công vào ví sẽ ngày càng tinh vi hơn.
  • Sử dụng ví phần mềm như vậy để bảo đảm tài sản kỹ thuật số không phải là một ý tưởng hay. Bất kỳ phần mềm độc hại chuyên dụng nào cũng có thể lấy các tệp ví và tìm mật khẩu ngoại tuyến hoặc lấy mật khẩu thông qua keylogger.
Ví phần mềm trên điện thoại thông minh

Theo mặc định, điện thoại thông minh Android và iOS cung cấp các tính năng bảo mật không được sử dụng rộng rãi trên hệ điều hành máy tính để bàn.

Hệ điều hành di động cung cấp ứng dụng và bảo vệ dữ liệu người dùng. Đặc biệt, hộp cát ứng dụng là bắt buộc đối với tất cả các ứng dụng. Chẳng hạn, đây không phải là trường hợp trên Windows: theo mặc định, bất kỳ ứng dụng nào cũng có thể truy cập dữ liệu người dùng.

Do đó, một ứng dụng độc hại không thể đọc dữ liệu từ một ứng dụng khác, trừ khi:

  • Nó tìm thấy một lỗ hổng trên ứng dụng đó.
  • Hoặc nó quản lý để leo thang các đặc quyền, ví dụ bằng cách khai thác lỗ hổng kernel cho phép nó có quyền truy cập root vào hệ thống.

Thật không may, các cuộc tấn công như vậy tồn tại. Chúng dễ dàng hơn nhiều trên các phiên bản Android và iOS đã lỗi thời cũng như trên các thiết bị cũ hơn hoặc giá rẻ nơi mã của bên thứ ba thường kém an toàn hơn.

Trên hệ điều hành cập nhật, các cuộc tấn công này khó hơn nhưng không phải là không khả thi. Ví dụ, Ian Beer đã cho thấy một cuộc tấn công không nhấp chuột cực kỳ ấn tượng trên iOS 13.5 vào tháng 2020 năm XNUMX. Quảng Công đã trình bày một chuỗi khai thác root từ xa nhiều loại thiết bị Android dựa trên Qualcomm vào tháng 2020 năm XNUMX. Và hai tuần trước, Câu chuyện bị cấm tiết lộ rằng NSO Group đã sử dụng chuỗi khai thác để nhắm mục tiêu các thiết bị iOS và Android gần đây sử dụng lỗ hổng 0-day.

Những kẻ tấn công kém tinh vi hơn có thể sử dụng các lỗ hổng cục bộ cho phép chúng trích xuất dữ liệu ví từ một ứng dụng độc hại. Các nhà môi giới dễ bị tổn thương như Zerodium pay lên đến $ 200,000 để tăng đặc quyền lên root trên Android và iOS, nhưng lên đến 1,500,000 đô la cho các cuộc tấn công từ xa.

Chúng tôi đã nghiên cứu một vài ví Android/iOS. Tính bảo mật của chúng phụ thuộc vào chính ứng dụng mà còn phụ thuộc vào các tính năng bảo mật của hệ điều hành cơ bản. Tất nhiên, khi tính bảo mật của hệ điều hành bị phá vỡ, ứng dụng không còn an toàn nữa

Hai phương pháp để bảo vệ hạt giống thường được sử dụng:

  • Mật khẩu bảo vệ – dữ liệu ví được bảo vệ bằng mật khẩu do người dùng nhập. Thiết kế giống như ví máy tính để bàn. Trên thực tế, dữ liệu khó trích xuất hơn từ máy tính, vì việc truy xuất dữ liệu ứng dụng từ một ứng dụng độc hại khó hơn về mặt kỹ thuật, vì những lý do đã giải thích ở trên. Tuy nhiên, việc lấy lại mật khẩu sau khi dữ liệu đã bị đánh cắp trên thực tế dễ dàng hơn: nhập mật khẩu phức tạp trên điện thoại di động rất tẻ nhạt, do đó người dùng có xu hướng chọn những mật khẩu đơn giản hơn. Ngoài ra, các cơ chế tạo khóa (được sử dụng để tạo khóa từ mật khẩu) trên thiết bị di động thường dễ phá vỡ hơn vì chúng thường nhẹ hơn vì lý do hiệu suất.
  • Coinomi và Metamask là những ví dụ về ví như vậy.

Trong video sau đây, chúng tôi giới thiệu một ứng dụng đồ chơi khác được phát triển cho bài viết này. Nó là một phần mềm độc hại được ngụy trang dưới dạng tiện ích đánh dấu Bitcoin giả mạo. Phần mềm độc hại khai thác lỗ hổng đã biết trên một thiết bị chưa được vá để lấy quyền truy cập gốc trên thiết bị và để chuyển mã gốc được mã hóa sang một máy chủ từ xa. Sau đó, máy chủ sẽ cưỡng chế mật khẩu để giải mã hạt giống.

Phương pháp này không dành riêng cho ví. Nó có thể (ít nhiều) dễ dàng thích ứng với bất kỳ ví được bảo vệ bằng mật khẩu nào. Đây là ví dụ tương tự với Coinbase Wallet:

[Nhúng nội dung]

  • Bảo mật dựa trên Android Keystore (hoặc iOS Keychain) – Trong trường hợp này, dữ liệu ví được mã hóa bằng khóa mã hóa được lưu trữ trong Kho khóa Android (Chuỗi khóa iOS). Các dịch vụ này ban đầu được thiết kế để lưu trữ an toàn các khóa mã hóa và nhiều ứng dụng sử dụng chúng để tạo khóa sẽ mã hóa tất cả dữ liệu nhạy cảm của người dùng. Các ứng dụng sử dụng Kho khóa triển khai cơ chế sau:
    • Ứng dụng yêu cầu Keystore tạo khóa mã hóa cho một số nhận dạng nhất định. Keystore tạo khóa và lưu trữ an toàn.
    • Khi ứng dụng muốn mã hóa hoặc giải mã một đốm màu, nó sẽ gửi đốm màu đó cùng với mã định danh khóa đến Kho lưu trữ khóa.
    • Cuối cùng, kho khóa kiểm tra xem ứng dụng có thực sự có quyền sử dụng khóa này hay không và gửi lại dữ liệu đầu ra cho ứng dụng.

Với mô hình này, ứng dụng không thể biết giá trị của khóa nhưng có thể sử dụng nó. Cũng có thể liên kết các điều khiển truy cập bổ sung với khóa: ví dụ: quyền truy cập khóa có thể được quy định đối với xác thực người dùng (yêu cầu mã PIN hoặc hình mở khóa).

Cơ chế này có thể cung cấp bảo mật bổ sung, so với bảo vệ dựa trên mật khẩu. Thật vậy, trên các điện thoại gần đây, Keystore được hỗ trợ bởi Môi trường thực thi đáng tin cậy (TEE) hoặc đôi khi là Phần tử bảo mật.

Điều đó có nghĩa là kẻ tấn công có quyền root sẽ không thể trích xuất khóa mã hóa từ kho khóa. Tuy nhiên, họ sẽ có thể sử dụng Kho khóa làm tiên tri giải mã và mã hóa hoặc giải mã bất kỳ dữ liệu nào họ muốn.

Keystore cung cấp dịch vụ mã hóa, nhưng cũng có chữ ký. Vì vậy, một chiếc ví có thể bảo vệ các khóa mã hóa của nó, khiến chúng khó trích xuất không? Thật không may, câu trả lời là không: ví phần mềm không sử dụng Keystore để ký giao dịchvà khóa riêng luôn được ứng dụng thao tác trong văn bản gốc.

Điều này là vì một lý do đơn giản: KeyStore và KeyChain cung cấp các dịch vụ mã hóa và chữ ký chung, nhưng không hỗ trợ mật mã được sử dụng trong tiền điện tử. Chẳng hạn, KeyStore triển khai Chữ ký ECDSA nhưng chỉ trên các đường cong NIST được xác định trong FIPS 186-4 (P-224, P-256, P-384 và P-521). Bitcoin sử dụng một đường cong khác, secp256k1, chưa được hỗ trợ.

Tóm lại, Keystore và Keychain là những dịch vụ tốt để bảo vệ khóa bí mật và khóa riêng. Họ có thể cung cấp một số bảo mật bằng cách mã hóa dữ liệu nhạy cảm: một số loại lỗ hổng (ví dụ: đọc tệp tùy ý) sẽ được xử lý bằng mã hóa Keystore. Tuy nhiên, nếu leo ​​thang đặc quyền gốc không đủ để trích xuất các giá trị khóa từ Kho khóa được phần cứng hỗ trợ, thì nó đủ để giải mã dữ liệu nhạy cảm. Kẻ tấn công có thể thiết bị ứng dụng có thể truy xuất bí mật của nó.

Để kết luận về ví di động:

  • Cơ chế cách ly giữa các ứng dụng do iOS/Android cung cấp nâng cao mức độ bảo mật so với ví phần mềm chạy trên máy tính. Trước tiên, kẻ tấn công cần leo thang đặc quyền để truy cập dữ liệu ứng dụng. Điều này là khả thi trên các thiết bị lỗi thời. Những kẻ tấn công lành nghề (Ian Beer đã làm điều đó chỉ trong 6 tháng nhưng… Đó là Ian Beer) cũng có thể làm điều đó trên các thiết bị được vá lỗi gần đây.
  • Các dịch vụ bảo vệ khóa (KeyStore, KeyChain) có thể thêm một lớp bảo mật bổ sung để bảo vệ các bí mật được lưu trữ. Tuy nhiên, vì chúng không hỗ trợ các thuật toán mã hóa cho các ứng dụng tiền điện tử, khóa vẫn có thể được trích xuất.
  • Trong mọi trường hợp, kẻ tấn công có quyền truy cập root có thể truy xuất hạt giống ở trạng thái nghỉ khi được sử dụng hoặc tận dụng quyền của người dùng để làm trống ví bằng cách sử dụng ví phần mềm làm tiên tri.

Đây là ví dụ cuối cùng về phần mềm gián điệp đồ chơi nhắm mục tiêu vào ví Blockchain.com (mặc dù điều này có thể được thực hiện trên nhiều ví khác một cách dễ dàng). Nó được cài đặt từ xa và giám sát ví. Khi người dùng đã xác thực bằng dấu vân tay của mình, khóa mã hóa sẽ được mở khóa và dữ liệu ví được giải mã. Phần mềm gián điệp cung cấp ứng dụng để truy xuất khóa mã hóa này. Sau đó, nó trích xuất khóa và dữ liệu ví tới một máy chủ từ xa:

[Nhúng nội dung]

Kết luận

Tóm lại, ví phần mềm có các mức độ bảo mật khác nhau. Tuy nhiên, mô hình mối đe dọa của họ không bao gồm trường hợp phần mềm độc hại chạy trên HĐH với sự leo thang đặc quyền. Đây là do thiết kế: ứng dụng ví không thể an toàn hơn hệ điều hành mà nó chạy trên đó.

  • Cơ chế cách ly giữa các ứng dụng do iOS/Android cung cấp nâng cao mức độ bảo mật so với ví phần mềm chạy trên máy tính. Trước tiên, kẻ tấn công cần leo thang đặc quyền để truy cập dữ liệu ứng dụng.
  • Các dịch vụ bảo vệ khóa (KeyStore, KeyChain) có thể thêm một lớp bảo mật bổ sung để bảo vệ các bí mật được lưu trữ. Tuy nhiên, vì chúng không hỗ trợ các thuật toán mật mã cho các ứng dụng tiền điện tử, các khóa phải được thao tác trực tiếp từ ứng dụng, vì vậy chúng cung cấp khả năng bảo vệ hạn chế.
  • Trong mọi trường hợp, kẻ tấn công có quyền truy cập root, có thể truy xuất hạt giống ở trạng thái nghỉ, khi được sử dụng hoặc tận dụng quyền của người dùng để làm trống ví bằng cách sử dụng ví phần mềm làm tiên tri.

Dấu thời gian:

Thêm từ Ledger