5 điểm bởi GN⁺ 2023-09-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Horcrux là công cụ CLI chia tệp thành các mảnh horcrux được mã hóa, đồng thời cho phép khôi phục tệp gốc mà không cần phải ghi nhớ mật khẩu
  • Phù hợp cho người dùng cần mã hóa các tệp nhạy cảm dung lượng lớn nhưng có thể không còn nhớ mật khẩu sau vài năm, hoặc muốn gửi tệp qua nhiều kênh để giảm đáng kể khả năng bị kẻ tấn công chặn bắt
  • split hoạt động bằng cách nhận vào số lượng mảnh sẽ tạo khi chia tệp và số lượng mảnh cần thiết để khôi phục bản gốc; ví dụ là cấu hình có thể khôi phục bằng bất kỳ 3 trong 5 mảnh
  • bind là lệnh ghép lại tệp gốc trong thư mục chứa các mảnh horcrux, và cũng có thể truyền thư mục làm đối số
  • Cơ chế bên trong sử dụng Shamir Secret Sharing Scheme để chia khóa mã hóa thành nhiều phần, rồi tái tạo khóa gốc khi có từ ngưỡng (threshold) số mảnh trở lên
  • Việc tạo khóa sử dụng hàm Read của crypto/rand trong thư viện chuẩn Go, còn phần triển khai Shamir là phiên bản được điều chỉnh từ implementation trong vault repo của Hashicorp
  • Có thể cài đặt bằng Homebrew với brew install jesseduffield/horcrux/horcrux, scoop với scoop bucket add extras; scoop install horcrux, hoặc qua binary release
  • Giải pháp thay thế ssss được mô tả là chỉ hoạt động với khóa chứ không áp dụng trực tiếp cho tệp, còn các công cụ horcrux khác và Haystack thì không hỗ trợ ngưỡng horcrux

1 bình luận

 
GN⁺ 2023-09-17
Ý kiến trên Hacker News
  • Điểm cần lưu ý là công cụ này dùng chế độ AES OFB để mã hóa/giải mã tệp, và không có bảo đảm tính toàn vẹn của bản mã, tức là không có MAC
    [0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...

    • Phần giải thích trên wiki đó dù có chút nền tảng kỹ thuật vẫn khá khó hiểu. Có thể giải thích như cho trẻ 5 tuổi được không?
  • Trong số các công cụ sao lưu dựa trên giấy, có một dự án rất hay dùng chia sẻ bí mật Shamir để chia nhiều bản sao giấy cho bạn bè, rồi sau này có thể đọc quang học để khôi phục tệp
    https://github.com/cyphar/paperback

    • Tôi nhất định phải dành thời gian làm một giao diện người dùng dùng được, nhưng phần đồ họa vốn không phải thế mạnh của tôi
      Hiện tại các chức năng đều hoạt động, nhưng phải sao chép và dán nội dung mã QR vào dòng lệnh, và cũng cần cố định định dạng trên đĩa, à không, trên giấy
    • Không rõ cái này có khác không, hay là làm đúng cùng một việc
      https://github.com/paritytech/banana_split
    • Rất gọn gàng. Cảm giác vẫn còn hơi sớm để phụ thuộc vào nó, nhưng nếu trưởng thành hơn và dễ dùng hơn thì có vẻ sẽ khá hữu ích với nhiều người
    • Chia sẻ bí mật Shamir có hoạt động tốt với đầu vào lớn không? Hay nên mã hóa plaintext bằng AEAD rồi chỉ chia khóa bằng chia sẻ bí mật Shamir?
  • Gần đây Levchin có viết một bài về chia sẻ bí mật Shamir và sự hỗn loạn mà nó gây ra ở PayPal: https://max.levch.in/post/724289457144070144/shamir-secret-s...
    Đây là một trong những thuật toán tôi thích nhất, nhưng thành thật mà nói, dạo này tôi bắt đầu tự hỏi liệu mình chỉ thấy nó hấp dẫn về mặt học thuật, hay các trường hợp sử dụng thực tế của nó thật ra hạn chế hơn tôi nghĩ

    • Chia sẻ bí mật Shamir về cơ bản là hoàn hảo để nerd-snipe
      Nó đủ đơn giản để hiểu ngay cả khi gần như không có nền tảng mật mã hay toán cao cấp; thực ra chỉ cần biết một chút đại số. Việc nó khả thi đã đáng kinh ngạc, ít nhất ban đầu các trường hợp sử dụng cụ thể cũng hiện ra rất rõ, và bạn còn có thể tự triển khai thử. Tất nhiên vẫn có những cạm bẫy
      Vì vậy tôi nghĩ nó xuất hiện quá thường xuyên không chỉ trên các diễn đàn thảo luận mà cả trong các giải pháp công nghiệp
    • Tôi không thấy bài được liên kết có lý do gì để làm nảy sinh nghi ngờ như vậy
      Không rõ bạn có đang đặt quan hệ nhân quả giữa hai điều này không, nhưng vấn đề không nằm ở bản thân thuật toán mà ở giao diện để tiếp cận thuật toán
    • Dựa đúng trên mối lo đó, hiện tôi đang viết một cuốn sách: pmfpbook.org
  • Theo FAQ, công cụ này chia khóa mã hóa bằng phương thức chia sẻ bí mật Shamir. Nhưng thật ra nếu dùng Reed-Solomon thì có thể đạt cùng mục tiêu mà không cần khóa mã hóa
    Trước hết xử lý dữ liệu đầu vào bằng biến đổi all-or-nothing (AONT), rồi chia thành các mảnh Reed-Solomon. Reed-Solomon dễ bị tấn công phân biệt và nhiều khả năng làm rò rỉ thông tin đầu vào, nên cần AONT
    [1] <https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_cor...>
    [2] <https://en.wikipedia.org/wiki/All-or-nothing_transform>
    [3] <https://en.wikipedia.org/wiki/Distinguishing_attack>

    • Cách tiếp cận đó có an toàn theo lý thuyết thông tin không? Chia sẻ bí mật Shamir thì có, và toán học cũng rất đơn giản
      Nói nghiêm ngặt thì với Shamir, bước mã hóa cũng không bắt buộc. Chỉ là có lợi thế khi mã hóa chính bí mật và chỉ dùng SSS cho khóa. Tôi không biết Horcrux có hoạt động như vậy không, nhưng công cụ tương tự của tôi là Paperback thì làm vậy
      [1]: https://github.com/cyphar/paperback
    • Tôi đã tìm thấy một dự án có vẻ dùng đúng cách này: <https://github.com/atbarker/AONT-RS>
      Bài báo: <https://www.usenix.org/legacy/event/fast11/tech/full_papers/...>
  • Có thể nghĩ ra nhiều cách để “chia một tệp đã mã hóa bằng mật khẩu thành các mảnh sao cho vẫn có thể ghép lại dù thiếu một vài mảnh”, nhưng điểm thú vị là có thể làm vậy mà không cần mật khẩu
    Với người thích các chủ đề bảo mật hay thuật toán, đây là một thứ khá thú vị. Tôi nghĩ mình sẽ đào sâu mã nguồn và đọc thêm các kỹ thuật liên quan để biết nó được triển khai thế nào. Tuy nhiên tôi không rõ thứ này hữu dụng ở đâu. Tôi tự hỏi liệu có mô hình đe dọa nào có ý nghĩa khi xem nó như một lớp “vỏ hành” để bảo vệ dữ liệu nhạy cảm không, hay nó có điểm nào vượt trội so với các trường hợp sử dụng vốn đã được giải quyết tốt hơn bằng cách khác không
    Tác giả cũng đùa khi so sánh vấn đề nhớ mật khẩu của cuốn nhật ký cũ với việc nhớ đủ chỗ cất giấu; cá nhân tôi nghĩ vế sau mới là vấn đề lớn hơn nhiều. Hẳn là phải giảm số mảnh và tăng số nơi cất giấu, nhưng như vậy thì mức bảo mật được cung cấp sẽ giảm đi[0]
    Tôi cũng nghĩ đến multisig, nhưng những gì tôi từng gặp chỉ ở mức “để triển khai một bản cập nhật, phải cắm USB key và chạy chương trình cùng hai đồng nghiệp”. Tất cả đều phải cung cấp khóa, và tình trạng là “nếu tôi nghỉ ốm thì không phát hành được bản cập nhật”; tôi không rõ đó là giới hạn của công cụ hay do lúc đó còn ở bản alpha nên được cấu hình như vậy
    Dù sao thì vẫn rất thú vị
    [0] Tuy nhiên, “dưới nệm” có lẽ chỉ có mức bảo mật tương đương đặt mật khẩu là “password”

    • Dùng để chia sẻ thông tin cho mọi người sử dụng trong trường hợp khẩn cấp thì sao? Dữ liệu được lưu ở nhiều vị trí, nhưng chỉ người có thể truy cập 3 nơi trong số đó mới đọc được
      Cơ chế an toàn thực sự là các kiểm soát truy cập vật lý hiện có. Kẻ trộm muốn lấy dữ liệu thì phải đột nhập vào ba địa điểm
      Cũng có thể mã hóa dữ liệu rồi chia mật khẩu thành ba mảnh và lưu ở các vị trí khác nhau, nhưng khi đó phải lưu cả dữ liệu lẫn mật khẩu
  • Đây là những thứ có vẻ liên quan qua tên gọi. Có lẽ có nhiều hơn một dự án. Còn gì nữa không?
    Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - tháng 11/2021, 11 bình luận
    Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - tháng 2/2021, 40 bình luận
    Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - tháng 8/2020, 93 bình luận
    I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - tháng 8/2020, 80 bình luận
    You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - tháng 1/2020, 17 bình luận

  • Làm tôi nhớ đến tệp parity trên Usenet. Người ta từng chia một kho lưu trữ lớn thành nhiều tệp nhỏ và một số tệp parity nhất định để đăng lên; ví dụ chỉ cần có n-3 trong tổng số n tệp là có thể tái tạo kho lưu trữ gốc
    https://en.wikipedia.org/wiki/Parchive

  • Gần đây tôi mới biết Clevis cũng hỗ trợ Shamir Secret Sharing. Thực ra đây là cách duy nhất để cấu hình nhiều pin cùng loại và cùng quyền hạn; có thể nói nó giống RAID0 của SSS
    https://github.com/latchset/clevis#pin-shamir-secret-sharing

  • Tôi thấy cái này gọn gàng nên vào xem repository, thì hóa ra người tạo ra nó cũng là người làm lazygit/lazydocker. Thật vui khi thấy họ làm nhiều sản phẩm như vậy

  • Trong FAQ có câu hỏi “Cái này chẳng phải khác với Horcrux trong thế giới Harry Potter sao?”, và câu trả lời là “Khá giống đấy. Một Horcrux không nên đủ để hồi sinh tệp gốc, nhưng có thể làm cho hai cái là đủ, nên chỉ khác một cái thôi. Chiếu bí, fan Harry Potter”
    Nhưng điểm cốt lõi của Horcrux là đặt các bản sao lưu ở nhiều nơi. Công cụ này, chuyên sao lưu các bản sao lưu ở nhiều nơi, là ví dụ dùng tên hay hơn nhiều: https://github.com/chrispoole643/horcrux. Chiếu bí, jesseduffield ;)

    • Đúng, nhưng cũng không hẳn. Về mặt kỹ thuật, Horcrux là một bản sao lưu, nhưng sức nặng cảm xúc của khái niệm đó nằm ở việc xé nhỏ linh hồn và bớt đi bản chất của chính mình để phòng rủi ro
      Bản sao lưu từng phần phù hợp với tinh thần của ý tưởng đó hơn
      Nói thêm, tôi đọc khái niệm đó như một đòn công kích vào sự phóng túng. Kiểu như “Whore crux”. Ngược lại, Lord of the Rings có thể được xem là một đòn công kích vào hôn nhân, vì khi đeo nhẫn thì bạn trở nên vô hình và dần biến mất thành hư vô, như “bơ bị phết trên quá nhiều bánh mì”