Điểm:4

Tại sao các trường mở rộng nhị phân được ưa thích để chia sẻ bí mật Shamir?

lá cờ in

Được biết, chia sẻ bí mật của Shamir hoạt động trên bất kỳ trường hữu hạn nào nhưng tôi không hiểu tại sao các trường mở rộng nhị phân lại được ưu tiên?

Điểm:10
lá cờ sa

Lý do chính là không có bất lợi nào khi sử dụng trường mở rộng nhị phân.Vì cơ sở hạ tầng máy tính và truyền thông đã chạy trên hệ nhị phân nên đây là lựa chọn đơn giản và hiệu quả nhất trong hầu hết các trường hợp.

Lưu ý rằng khi các trường nguyên tố (Chữ ký số) hoặc các trường/vòng đặc trưng lẻ (RSA) hoặc các cấu trúc đại số kỳ lạ hơn (Đường cong Elliptic) được yêu cầu để bảo mật, chúng sẽ được sử dụng. Vì vậy, nếu bạn đã sử dụng trường nguyên tố $\mathbb{F}_p$ đối với một mật mã nguyên thủy khác và cần sử dụng tính năng chia sẻ bí mật như một phần của ứng dụng, bạn có thể.

fgrieu avatar
lá cờ ng
Đúng. Nói cách khác, vì dữ liệu ứng dụng là nhị phân hoặc byte, nên việc sử dụng bất kỳ trường nào không phải là trường nhị phân sẽ tạo ra vấn đề là miền của nội dung chia sẻ bí mật có thể mã hóa không khớp với miền ứng dụng, do đó, một số loại phần mở rộng miền trước khi mã hóa, hạn chế sau khi giải mã sẽ là cần thiết.
Điểm:3
lá cờ ar

Chỉ cần thêm một số chi tiết để câu trả lời xuất sắc của kodlu:

Để chia sẻ một số dữ liệu bí mật bằng cách sử dụng Chia sẻ bí mật của Shamir trên trường hữu hạn $\mathrm{GF}(k)$, trước tiên bạn cần mã hóa dữ liệu đó dưới dạng $m ⥠1$ các phần tử của trường (được biểu diễn tự nhiên dưới dạng các số nguyên từ $0$ đến $k-1$) và cũng chỉ định từng chia sẻ mà bạn muốn tạo một phần tử khác 0 riêng biệt của trường dưới dạng ID chia sẻ (tức là $x$ tọa độ tại đó đa thức tạo chia sẻ được đánh giá để tạo ra chia sẻ đó).

Sau đó, bạn áp dụng quy trình tạo chia sẻ, quy trình này sẽ cung cấp cho bạn một số chia sẻ, mỗi chia sẻ bao gồm $m$ các yếu tố của trường $\mathrm{GF}(k)$ (cộng với ID chia sẻ). Bằng cách xây dựng, các cổ phiếu này được phân phối đồng đều và $t-1$ khôn ngoan độc lập, đâu $t$ là tham số ngưỡng tái cấu trúc của sơ đồ, nghĩa là bất kỳ tập hợp con nào của $s < t$ của cổ phiếu không thể phân biệt được với $s$ trình tự của $m$ các phần tử trường được chọn một cách độc lập thống nhất một cách ngẫu nhiên. Đặc biệt, như một hệ quả tất yếu của điều này, tất cả các yếu tố trường bao gồm các cổ phần nhất thiết phải được phân phối đồng đều giữa $0$$k-1$, bao gồm.


Bây giờ, giả sử rằng dữ liệu bí mật mà bạn muốn chia sẻ là dữ liệu nhị phân và được mã hóa thành một chuỗi $n$ chút ít. Nếu bạn tình cờ sử dụng trường nhị phân, sao cho $k = 2^b$ (và nếu $n$ là bội số của $b$), sau đó ánh xạ bí mật thành một chuỗi các phần tử trường rất đơn giản: chỉ cần cắt $n$-bit chuỗi vào $m = \frac nb$ miếng $b$ bit, mỗi bit ánh xạ tự nhiên tới một phần tử trường. Và vì mọi phần tử của $\mathrm{GF}(2^b)$ cũng ánh xạ rõ ràng tới một chuỗi $b$ bit, chia sẻ của bạn cũng có thể được biểu diễn dưới dạng $n$-bit chuỗi bit (cộng với ID chia sẻ) chỉ bằng cách ghép nối (các biểu diễn nhị phân của) các phần tử trường trong mỗi chia sẻ.

(Nếu độ dài dữ liệu $n$ là biến và không nhất thiết phải là bội số nguyên của $b$, bạn có thể cần phải áp dụng một số đệm để chỉ ra rõ ràng độ dài của nó trước khi chia sẻ nó, nhưng đó vẫn chỉ là một sự phức tạp nhỏ. Và nếu dữ liệu của bạn được mã hóa dưới dạng byte 8 bit và bạn không cần nhiều hơn 255 lượt chia sẻ thì bạn chỉ cần sử dụng $\mathrm{GF}(2^8)$ và bỏ qua phần đệm.)


Điều gì sẽ xảy ra nếu bạn đừng Tuy nhiên, bạn muốn sử dụng trường nhị phân? Sau đó, bạn có một vài lựa chọn:

  1. Chọn cái lớn nhất $b$ như vậy mà $2^b < k$, chia dữ liệu thành $b$các mảnh -bit, ánh xạ chúng thành các phần tử trường và chia sẻ chúng. Nhược điểm chính của điều này là các yếu tố trường ngẫu nhiên trong cổ phiếu sẽ không phải phù hợp với $b$ bit (kể từ $2^b < k$), vì vậy bạn sẽ cần mã hóa chúng bằng cách sử dụng $b+1$ mỗi bit, lãng phí ít nhất $m$ bit trên mỗi cổ phần. (Mã hóa độ dài thay đổi sau khi chia sẻ sẽ không hữu ích ở đây vì bạn không thể nén dữ liệu ngẫu nhiên thống nhất. Mã hóa độ dài thay đổi trước chia sẻ không an toàn, vì khi đó thời lượng chia sẻ của bạn sẽ làm rò rỉ thông tin về bí mật.)

    Bạn cũng không thể sắp xếp cả hai $b$$b+1$ trở thành các giá trị "làm tròn" thuận tiện như 8, 16, 32, 64, 128 hoặc 256, điều đó có nghĩa là các phần dữ liệu hoặc phần chia sẻ của bạn chắc chắn sẽ có độ dài khó xử. Ví dụ: giả sử bạn muốn chia sẻ khóa mã hóa 256 bit; bạn có thể chọn $b = 256$, trong trường hợp đó, phần chia sẻ của bạn sẽ dài 257 bit (và, nếu bạn muốn sử dụng trường nguyên tố, bạn cần thực hiện phép tính modulo một số nguyên tố 257 bit) hoặc $b = 255$, trong trường hợp đó, bạn cần chia khóa của mình thành hai phần tử trường, dẫn đến chia sẻ 512 bit. Hoặc bạn có thể sử dụng, nói, $b = 32$ (và, giả sử, trường nguyên tố $\mathrm{GF}(2^{32}+15)$, điều này hơi khó xử khi sử dụng số học 64 bit, nhưng không phải là không thể, đặc biệt nếu bạn không cần thực thi thời gian liên tục) và kết thúc bằng $33 \times 8 = 264$ chia sẻ bit sau khi xáo trộn một số bit, đây có thể là một nền tảng trung gian tốt.

  2. Sử dụng chuyển đổi cơ số chung từ nhị phân sang cơ số $k$ để mã hóa dữ liệu của bạn một cách tối ưu (nghĩa là diễn giải $n$-bit dữ liệu nhị phân dưới dạng số từ $0$ đến $2^n-1$, sau đó biểu thị số đó trong cơ số $k$) và chuyển đổi cơ số nghịch đảo từ cơ số $k$ để chuyển đổi cổ phiếu trở lại nhị phân. Bạn vẫn sẽ lãng phí một số bit, vì vậy lượt chia sẻ của bạn sẽ dài hơn dữ liệu, nhưng chỉ bằng một lượng không đổi. Mặt trái là việc chuyển đổi cơ số chậm hơn và phức tạp hơn để thực hiện so với việc xáo trộn bit đơn giản. Ngoài ra, bạn gần như chắc chắn sẽ cần một số loại sơ đồ đệm nếu độ dài bí mật của bạn không cố định. (Và đảm bảo luôn sử dụng $m = \lceil n \log_k 2 \rceil$, ngay cả khi giá trị bí mật của bạn phù hợp với ít cơ sở hơn $k$ chữ số, để tránh thông tin rò rỉ độ dài chia sẻ về bí mật.)

Bây giờ, không có biến chứng nào trong số này là không thể vượt qua, nhưng chúng làm làm phức tạp việc triển khai và làm cho mã hóa chia sẻ kém hiệu quả hơn. Để so sánh, ngay cả khi bạn phải thực hiện $\mathrm{GF}(2^b)$ số học từ đầu, sử dụng trường nhị phân vẫn đơn giản hơn.

Đă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.