Điểm:0

Làm cách nào tôi có thể sử dụng lược đồ chia sẻ bí mật khi bí mật không phải là số mà là câu lệnh?

lá cờ ua

Tôi muốn sử dụng sơ đồ chia sẻ bí mật, trong đó mọi người chơi $i\in N$ phải chia sẻ một vài bí mật $(l_i,\nu_{l_i})$, ở đâu $l_i$ là một mã duy nhất (số nguyên dương) cho mọi người chơi, nhưng $\nu_{l_i}$ là một bí mật giống như một tuyên bố. Ví dụ khi người chơi $i$ báo cáo cho những người chơi khác $\nu_{l_i}$ giống như đưa ra một tuyên bố có dạng "Tên tôi là $i$ và tôi biết thông tin $\nu_i$."

Suy nghĩ ban đầu của tôi là tôi cần một hàm đa thức bậc $k-1$ cho mọi người chơi $i$ chia sẻ mã $l_i$ với mọi người chơi khác $j=-i$, nhưng biết l_i phải ngụ ý rằng người chơi khác cũng sẽ học $\nu_{l_i}$ sau khi xây dựng lại mã $l_i$. Làm cách nào tôi có thể thực hiện công việc này với tính năng chia sẻ bí mật?

Hunger Learn avatar
lá cờ ua
Vâng, một ý tưởng mặc dù tôi không biết làm thế nào điều này có thể được áp dụng là xác định một mật mã toán học có thể dịch mọi từ trong câu lệnh của bạn thành một số. Vì vậy, sau đó bạn sẽ có một mã chia nhỏ và một tin nhắn được mã hóa, tôi nghĩ vậy.
lá cờ ar
Liên quan chặt chẽ: [Chia sẻ bí mật của Shamir cho vectơ](https://crypto.stackexchange.com/questions/70024/shamirs-secret-sharing-for-vectors)
Điểm:1
lá cờ ar

Giải pháp đơn giản nhất là:

  1. mã hóa cụm từ bí mật thành một hoặc nhiều số và
  2. 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:

  1. 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ẻ.

  2. 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.

Hunger Learn avatar
lá cờ ua
vậy ý ​​bạn là câu lệnh này có 10 từ, chúng ta có thể có 10 dấu cách cho mỗi bí mật nói $S=\times_{i=1}S_i^{10}$ và sử dụng 10 hàm đa thức cho mỗi từ đó?
Hunger Learn avatar
lá cờ ua
tôi cũng không biết làm thế nào để lập mô hình toán học này...lược đồ xác thực và cách xác định phương thức hoạt động....Tôi cần cấu trúc toán học....
lá cờ ar
Sẽ rất hữu ích nếu biết bạn đang gặp sự cố với bước nào trong hai bước trong câu trả lời của tôi ở trên. Chúng là các bước hoàn toàn riêng biệt: bước 1 không liên quan đến chia bí mật (và do đó không có đa thức, v.v.), trong khi bước 2 chỉ liên quan đến một số bí mật (hay đúng hơn là bạn áp dụng riêng cho từng số bạn thu được ở bước 1) . Nó có thể đơn giản hơn bạn nghĩ.
Điểm:0
lá cờ ua

Dung dịch $1$: Mỗi từ được dịch thành một số với sự trợ giúp của mật mã. Nói rằng $C$ là một ánh xạ lấy một từ và dịch nó thành một số, cụ thể là $C:A\to\mathbb{N}$, ở đâu $A$ là một bảng chữ cái. Trong tuyên bố của bạn "Tên tôi là $i$ và tôi biết thông tin $\nu_i$." Bạn có $10$ từ cụ thể là 10 mã $x_1,..,x_{10}$. Sau đó, mỗi người chơi có thể gửi 10 lượt chia sẻ khác nhau $(a_{j,k},b_{j,k})_{k=1}^{10}$ cho mọi người chơi khác $j$ trong đó mỗi cặp là một điểm của hàm đa thức bậc cụ thể $t-1$, $(f_{i,k})_{k=1}^{10}$. Nếu những người chơi hợp tác và chia sẻ các phần của họ trong mọi hàm đa thức, họ sẽ xây dựng lại $10$ chức năng của $i$. Sau đó sẽ học $10$ những con số có thể xây dựng lại tuyên bố. Sử dụng sơ đồ giải mã cho mỗi một trong các $10$ số và bạn sẽ lấy những gì bạn muốn.

Dung dịch $2$: Một ý tưởng khác có ý nghĩa từ góc độ toán học. Nói rằng $E_i(k_i,\nu_{l_i})=l_i$ là hàm mã hóa sao cho

$$E_i:K_i\times N_{L_i}\to L_i$$

và mỗi cặp $(k_i,l_i)$ chỉ được liên kết với một $\nu_{l_i}$, cụ thể là tính từ $E_i$. Hơn nữa, chức năng giải mã là $$D_i:K_i\times L_i\to N_{L_i}$$

và do đó $D(k_i,l_i)=D(k_i,E_i(k_i,\nu_{l_i}))=\nu_{l_i}$

Đối với mã, bạn có thể sử dụng một ứng dụng đơn giản của lược đồ Shamir như bạn đã nói. Đầu tiên người chơi sẽ học $(x_i,y_i)$ là các điểm của hàm đa thức bậc $t-1$ và mã $k_i$, đó cũng là một khóa và do đó sau khi họ hợp tác để tính toán bí mật $l_i$ cái này $l_i$ hữu ích để giải mã $\nu_{l_i}$. Đó là cách bạn có thể tính toán cái này từ cái kia. Trong phần mà bạn nói, rằng $l_i$ là một mã và $\nu_{l_i}$ một câu lệnh, lưu ý rằng mọi từ của câu lệnh được dịch sang mã này. Do đó bằng cách học $l_i$, điều này có nghĩa là toàn bộ câu lệnh được giải mã.

Hunger Learn avatar
lá cờ ua
Tôi không biết nếu bất cứ điều gì tôi đang nói có ý nghĩa. Nhưng, tôi nghĩ rằng có một lời giải thích hợp lý trong suy nghĩ của tôi. Xin vui lòng, bất kỳ lời chỉ trích đều rất được hoan nghênh. Nó cũng sẽ giúp tôi hiểu nếu tôi đúng hay sai.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.