Điểm:1

mã hóa nhanh bằng một khóa và giải mã nhanh bằng nhiều khóa liên tục

lá cờ ng

Có cơ chế mã hóa và giải mã như vậy không: Cho mã hóa C = E(K1, M), trong đó K1 là khóa mã hóa và M là văn bản thuần túy, nó phải áp dụng giải mã bằng hai khóa K2 và K3 tuần tự để khôi phục M, rằng là D(K3, D(K2, C)) = M. Với K1, lý tưởng nhất là tạo ra số lượng không giới hạn các cặp K2 và K3 để đảm bảo độ tin cậy phân tán. Quá trình mã hóa và giải mã không được quá chậm đối với lượng dữ liệu lớn hơn, do đó mật mã đối xứng được ưa chuộng hơn.

Ngoài ra, có cách nào để tạo ba dãy số ngẫu nhiên R1(K1), R2(K2), R3(K3) từ ba khóa/hạt K1, K2, K3 sao cho R1(K1) = R2(K2) XOR R3 ( K3)? Nếu vậy, vấn đề trên cũng có thể được giải quyết.

Tôi biết về Ngưỡng ElGamal hoặc mật mã khóa công khai khác dành cho mật mã nhiều bên, nhưng chúng quá chậm so với mạng đối xứng như RC4.


Hãy để tôi mô tả câu chuyện theo một cách khác: Alice tải dữ liệu của cô ấy lên một nút Bob, sau đó Carol hỏi Bob và tải xuống dữ liệu của Alice. Một số cân nhắc thiết kế:

  1. Dữ liệu của Alice sẽ được mã hóa trong khi tải lên Bob hoặc được Carol truy xuất;
  2. Carol hoặc Bob sẽ không bao giờ có thể giải mã dữ liệu của Alice một mình;
  3. Dữ liệu có thể rất lớn, do đó cần mã hóa và giải mã nhanh;
  4. Alice có thể không phải lúc nào cũng trực tuyến;
  5. Có thể chấp nhận giả định rằng Bob và Carol sẽ không thông đồng với nhau, nhưng sẽ tốt hơn nếu có thể thiết kế một cơ chế kiểm toán (chẳng hạn như Chuỗi khối) để đảm bảo rằng Bob và Carol sẽ không hợp tác nếu không có sự cho phép của Alice.
fgrieu avatar
lá cờ ng
Bạn có yêu cầu mã hóa bất đối xứng, đó là K1 công khai không? Chúng tôi có thể đảm nhận một cơ quan đáng tin cậy để sản xuất và phân phối K1/K2/K3 không? Có bất kỳ lý do nào khiến yêu cầu "mã hóa và giải mã không được quá chậm đối với lượng dữ liệu lớn hơn" không thể được giải quyết theo cách thông thường: bằng cách sử dụng khóa duy nhất của thông báo ngẫu nhiên để mã hóa phần lớn dữ liệu bằng cách sử dụng tiêu chuẩn nhanh ( xác thực) mật mã như AES-GCM; và điều nhiều khóa với K1/K2/K3 (không đối xứng hay không) bảo vệ khóa duy nhất của thông báo?
lá cờ ng
Ở đây K1, K2 và K3 đều là bí mật. Về cơ bản, người dùng 1 mã hóa dữ liệu thành E(K1, M), sau đó việc giải mã sẽ được thực hiện bởi hai bên theo trình tự D(K3, D(K2, C)) = M. Chúng tôi không muốn người dùng 2 nhìn thấy văn bản thuần túy và doo không muốn người dùng 3 biết K1. Ở đây, chúng tôi giả sử người dùng 2 và 3 không thông đồng với nhau. Đối với tiền điện tử khóa công khai, tôi hiểu rằng nó quá chậm đối với lượng dữ liệu lớn, phải không? Nếu sai, chúng ta có thể xem xét tiền điện tử công khai.
Maarten Bodewes avatar
lá cờ in
"Đối với tiền điện tử khóa công khai, tôi hiểu rằng nó quá chậm đối với lượng dữ liệu lớn, đúng không?". Nói chung, có thể sử dụng một hệ thống mật mã kết hợp ngay cả khi mã hóa ngưỡng cần được sử dụng, đó là những gì fgrieu gợi ý (chỉ thêm một số thuật ngữ ở đây :))
James Smith avatar
lá cờ br
bạn đã có câu trả lời đầy đủ cho câu hỏi này? một trong những bạn đã đăng
Điểm:1
lá cờ my

Ngoài ra, có cách nào để tạo ra ba dãy số ngẫu nhiên R1, R2, R3 từ ba khóa K1, K2, K3 sao cho R1 XOR R2 XOR R3 = 0 không?

Phần đó dễ dàng; chúng ta chỉ có thể định nghĩa:

$$R1 = \text{SHAKE}(K1) \oplus \text{SHAKE}(K2)$$ $$R2 = \text{SHAKE}(K3) \oplus \text{SHAKE}(K1)$$ $$R3 = \text{SHAKE}(K2) \oplus \text{SHAKE}(K3)$$

(ở đâu $\text{SHAKE}$ có thể là, ví dụ, chức năng đầu ra mở rộng; nghĩa là, một hàm chuyển đổi tiền ảnh thành một chuỗi bit có độ dài tùy ý).

Cá nhân (và theo cặp), $R1, R2, R3$ tất cả đều trông ngẫu nhiên (giả sử không thể đoán được các phím), tuy nhiên, chúng cùng nhau xor thành 0 như bạn yêu cầu.

lá cờ ng
Tốt, nhưng người dùng 1 muốn giữ bí mật K1 và không cung cấp cho người dùng 2 hoặc 3.
Điểm:0
lá cờ ng

Đề xuất nhằm vào 1/2/3/4 của phần cuối cùng của câu hỏi: mã hóa kết hợp chuỗi.

chúng tôi sẽ sử dụng

  • Sơ đồ mã hóa xác thực đối xứng nhanh, chẳng hạn như AES-GCM hoặc ChaCha20-Poly1305 với khóa bí mật 256 bit, mã hóa bằng khóa $K$ lưu ý $C=E_K(M)$ và giải mã $M=D_K(C)$.
  • Sơ đồ mã hóa bất đối xứng có khả năng mã hóa tin nhắn 256 bit, với mã hóa được ghi chú $C=\mathcal E_P(M)$ và giải mã $M=\mathcal D_S(C)$, ở đâu $(P,S)$ là một cặp khóa (công khai, riêng tư/bí mật). RSAES-OAEP hoặc ECIES sẽ làm.

Chúng tôi giả sử Bob và Carol đã tạo các cặp khóa $(P_B,S_B)$$(P_C,S_C)$, và truyền khóa công khai $P_B$$P_C$ cho Alice theo cách đảm bảo tính toàn vẹn và bằng chứng về nguồn gốc (có lẽ bằng chứng chỉ kỹ thuật số).

Để mã hóa cho Carol bằng proxy của Bob, Alice

  • rút ra hai khóa 256 bit ngẫu nhiên $K_B$$K_C$
  • tính toán $C_B=\mathcal E_{P_B}(K_B)$
  • tính toán $C_C=\mathcal E_{P_C}(K_C)$
  • tính toán $C_0=E_{K_B}(C_C)$
  • tính toán $C_1=E_{K_C}(M)$
  • gửi cho Bob tin nhắn $C=C_B\mathbin\|C_0\mathbin\|C_1$.

Bob nhận và lưu trữ $C$. Khi Carol yêu cầu tin nhắn được mã hóa, Bob

  • chiết xuất $C_B$, $C_0$$C_1$ từ $C$
  • tính toán $K_B=\mathcal D_{S_B}(C_B)$
  • tính toán $C_C=D_{K_B}(C_0)$
  • biểu mẫu và gửi cho Carol $C'=C_C\mathbin\|C_1$.

Carol được $C'$

  • chiết xuất $C_C$$C_1$ từ $C'$
  • tính toán $K_C=\mathcal D_{S_C}(C_C)$
  • tính toán $M=D_{K_C}(C_1)$

Bất cứ khi nào giải mã không thành công, Bob hoặc Carol sẽ hủy bỏ.

Lưu ý rằng tin nhắn hàng loạt $M$ chỉ được mã hóa một lần, đáp ứng yêu cầu về hiệu suất.

Chúng ta có thể thay thế sơ đồ mã hóa bất đối xứng bằng sơ đồ mã hóa đối xứng, $(P_B,S_B)$ với câu hỏi $K_2$$(P_C,S_C)$ với câu hỏi $K_3$ (và sau đó, hệ thống có thể được đơn giản hóa để loại bỏ $K_B$). Nhưng bằng cách đối xứng, chúng ta mất đi lợi ích của mật mã bất đối xứng: rằng Alice không cần giữ bí mật bất cứ điều gì và không thể sử dụng bí mật đó để thử giải mã thông tin liên lạc khác được gửi tới Bob hoặc Carol.

James Smith avatar
lá cờ br
fgrieu bạn có thể vui lòng giải thích làm thế nào để có được phần này của câu hỏi. R1(K1) = R2(K2) XOR R3 (K3). điều này rất quan trọng để trả lời.
fgrieu avatar
lá cờ ng
@James Smith: kỹ thuật trong câu trả lời của tôi không tạo ra các chuỗi số ngẫu nhiên (hoặc làm như vậy theo cách được tích hợp trong các sơ đồ mã hóa được sử dụng), do đó, phương trình R1(K1) = R2(K2) XOR R3(K3) không áp dụng cho câu trả lời (và dù sao cũng chỉ là một tùy chọn trong câu hỏi). $(P_B,P_C)$ của tôi thuộc loại câu hỏi K1, $S_B$ loại K2, $S_C$ loại K3. Tôi không nói rằng có một sự kết hợp hoàn hảo, chỉ là tôi nghĩ rằng tôi giải quyết được nhu cầu chức năng trong 1/2/3/4.

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