Giải pháp đơn giản nhất là:
- mã hóa cụm từ bí mật thành một hoặc nhiều số và
- sau đó chia sẻ từng số đó bằng sơ đồ chia sẻ bí mật.
Trên thực tế, nếu cụm từ bí mật của bạn được lưu trữ trên máy tính, thì phần đầu tiên đã được xử lý: máy tính thường lưu trữ dữ liệu, bao gồm cả văn bản, dưới dạng chuỗi byte 8 bit — tức là các số từ 0 đến 255.
Miễn là bạn không cần tạo nhiều hơn 255 lượt chia sẻ bí mật bất kỳ, bạn chỉ cần coi các byte đó là phần tử của GF(28) và chia sẻ chúng bằng cách sử dụng Kế hoạch chia sẻ bí mật của Shamir (hoặc bất kỳ kế hoạch chia sẻ bí mật tương tự nào khác mà bạn thích).
Bạn có thể sử dụng an toàn cùng một ID chia sẻ (I E. $x$ tọa độ) cho mỗi byte của cụm từ được chia sẻ, do đó, phần chia sẻ của bạn sẽ chỉ dài hơn một byte so với cụm từ bí mật. (Tuy nhiên, chúng sẽ là dữ liệu nhị phân ngẫu nhiên, vì vậy bạn có thể cần, ví dụ: cơ sở64 mã hóa chúng để vận chuyển dưới dạng văn bản.) Và chia sẻ bí mật của Shamir trên GF(28) có thể được thực hiện rất nhanh, vì tất cả phép toán được thực hiện chỉ bằng các byte đơn. Vì những lý do này, khá nhiều triển khai chia sẻ bí mật của Shamir thực hiện điều này.
Phương pháp chia sẻ từng byte được mô tả ở trên có một vài nhược điểm:
Nó tiết lộ độ dài byte của cụm từ bí mật. Nếu đây là một vấn đề, thì cụm từ đó phải được thêm vào một độ dài cố định bằng cách nào đó có thể đảo ngược được trước khi chia sẻ.
Vì các lý do toán học (tức là vì mỗi chia sẻ cần một phần tử trường khác 0 riêng biệt như $x$ phối hợp) nó không thể được sử dụng để tạo ra nhiều hơn 255 cổ phiếu riêng biệt đó cho mỗi bí mật. Nếu điều này là không đủ, bạn có thể ví dụ. chia cổ phần thành cặp byte và chia sẻ nó bằng sơ đồ của Shamir trên GF(216) cho tối đa 65535 lượt chia sẻ hoặc chia thành các nhóm bốn byte và chia sẻ chúng qua GF(232) cho tối đa khoảng 4 triệu cổ phiếu.
(Tất nhiên, bạn có thể sử dụng các kích thước trường thậm chí còn lớn hơn hoặc thậm chí các kích thước không phải là lũy thừa của 2, nếu bạn muốn. Nhưng nhìn chung có rất ít lý do để làm như vậy, ít nhất là không phải khi chia sẻ dữ liệu nhị phân, mà cuối cùng tất cả dữ liệu được lưu trữ trên máy tính nhị phân đều là như vậy.)
Tất nhiên, nếu bạn không khăng khăng bảo mật lý thuyết thông tin hoàn hảo, thì một tùy chọn thực tế khác là tạo khóa ngẫu nhiên (ví dụ: 128 hoặc 256 bit) cho sơ đồ mã hóa đối xứng, chẳng hạn như AES,* mã hóa bí mật của bạn bằng khóa, sau đó chia sẻ khóa.
Điều này có thể thuận lợi nếu bí mật thực sự của bạn rất dài (ví dụ: tệp video) và nếu bạn có thể xuất bản bí mật được mã hóa trên một số kênh được chia sẻ, thì điều duy nhất bạn cần gửi riêng cho từng cổ đông là phần chia sẻ của họ. khóa (sẽ chỉ dài vài byte).
*) Sử dụng bảo mật phương thức hoạt động, Đương nhiên. Tôi thường muốn giới thiệu một mã hóa xác thực như SIV, nhưng ngay cả chế độ không xác thực cổ điển như CBC hoặc CTR cũng có thể đủ cho nhu cầu của bạn. Chỉ cần không sử dụng ECB.