Điểm:0

Giải mã một bản mã trong hệ thống mật mã của ElGamal

lá cờ fr

Tôi là sinh viên ngành khoa học máy tính hiện đang giải quyết một vấn đề đặt ra trong mật mã (bài toán thực tế nhưng bị kẹt ở phần toán học).

Về cơ bản, giả sử chúng tôi nhận được một tin nhắn đã được mã hóa bằng hệ thống mật mã của ElGamal và mục tiêu của chúng tôi là giải mã và khôi phục hoàn toàn tin nhắn.

Bản rõ ban đầu là một dãy $p_1p_2\ldots p_m$. Chúng tôi được cung cấp một phiên bản băm của khóa công khai SHA256$(g^s)$ (Vì thế $s$ là khóa riêng và $g^s$ công cộng). Đối với mã hóa, người ta nói rằng một $r_1$ giá trị được lấy mẫu thống nhất một cách ngẫu nhiên và sau đó cho một số giá trị nhất định $u\in\mathbb{Z}_q$, $r_i=u^{i-1}r_1$ cho tất cả những người còn lại $i$'S. Văn bản mật mã sau đó là $c_i=(g^{r_i},p_ig^{r_is})_{i\in[m]}$.

Nhìn chung, chúng tôi được cho $p$, $q$, $g$, $u$, khóa công khai đã băm $H$ và bản mã $c_i$ như một tuple.

Vấn đề tôi gặp phải là tôi không thực sự thấy chúng ta phải tính toán những gì để khôi phục toàn bộ chuỗi ban đầu. Một trong những trợ lý nói với tôi để tìm một số $p_i$'s và sau đó sử dụng chúng để giải mã mật mã nhưng tôi không thấy điều đó đưa tôi đến đâu. Các $r$'s là chưa biết và ngay cả khi chúng ta biết $g^{r_i}$, vì chúng tôi được cung cấp các giá trị khá lớn, chúng tôi không thể tính toán nhật ký.

Thành thật mà nói, tôi hơi lạc lõng ở đây (tôi không có kiến ​​thức cơ bản về đại số) vì vậy nếu ai đó có một số lời khuyên về những gì tôi nên làm, tôi sẽ thực sự đánh giá cao điều đó.

Cảm ơn :)

yacovm avatar
lá cờ us
Nhưng không phải là khóa riêng $s$ sao? Bạn không thể tăng $g^{r_i}$ lên $s$ như trong chương trình thông thường sao?
seboll13 avatar
lá cờ fr
@yacovm vâng $s$ là khóa riêng tư, nhưng chúng tôi không biết nó nên chúng tôi không thể thực hiện một số tính toán với nó. Tôi đoán giải pháp tốt nhất bằng cách nào đó là tìm cách biết $r_1$ nhưng tôi không biết cách.
kelalaka avatar
lá cờ in
Trước tiên, bạn có thể đọc https://en.wikipedia.org/wiki/ElGamal_encryption rồi cho chúng tôi biết bạn đã thất bại ở đâu không?
yacovm avatar
lá cờ us
Vì vậy, bạn đang cố giải mã mà không biết khóa riêng? Đó có phải là nhiệm vụ?
seboll13 avatar
lá cờ fr
Tôi đoán tôi bắt đầu nghĩ rằng chúng ta đang thiếu một số yếu tố quan trọng trong tuyên bố vấn đề (mặc dù không phải vậy). Thật vậy @yacovm chúng tôi không có quyền truy cập vào khóa riêng $s$. Chúng tôi chỉ có quyền truy cập vào hàm băm của $g^s$. Nhân viên hỗ trợ kỹ thuật yêu cầu chúng tôi đoán một số $p_i$ nhưng tôi thực sự không biết cách thực hiện việc này.
seboll13 avatar
lá cờ fr
@kelalaka Tôi đoán rằng trong kịch bản của chúng tôi, chúng tôi phải tiến hành hơi khác một chút so với cách thức hoạt động của quy trình giải mã thực sự, đó là một phần lý do tại sao tôi bối rối: p
fgrieu avatar
lá cờ ng
Kích thước của $p$ là bao nhiêu, tính bằng bit hoặc chữ số thập phân? Nếu đó là đủ nhỏ, có thể có các cuộc tấn công. Ngoài ra, $(p-1)/2$ là số nguyên tố hay là hợp số với các thừa số không tầm thường?
seboll13 avatar
lá cờ fr
@fgrieu $p$ là lũy thừa của hai, chính xác là $2^{1024}$ nên có 309 chữ số. Nếu tôi không nhầm, $(p-1)/2$ không phải là số nguyên tố. Tôi nghĩ rằng tôi gần đạt được điều gì đó nhưng việc tính toán với modulos luôn khá khó khăn.
fgrieu avatar
lá cờ ng
Nếu $p$ là lũy thừa lớn của hai, thì nó không phải là số nguyên tố và $(p-1)/2$ không thể là số nguyên tố. bạn có chắc chắn về điều này?
fgrieu avatar
lá cờ ng
Bỏ qua những gì bạn nói về $p$: Tôi nghĩ mấu chốt của vấn đề là $r_i$ không phải là ngẫu nhiên, như lẽ ra chúng phải thế. Chỉ cần kiểm tra xem chúng ta đã tính đúng các phương trình hay chưa: bạn sẽ có thể xác minh rằng $g^{r_i}=(g^{r_1})^{(u^{i-1})}\bmod p$ (lưu ý rằng $g^{r_i}$ là phần đầu tiên của bản mã). Bây giờ hãy làm điều gì đó tương tự với phần thứ hai của bản mã và bạn sẽ có thể nhận được tất cả $p_i/p_1\bmod p$. Và sau đó..
seboll13 avatar
lá cờ fr
@fgrieu Tôi chắc chắn rằng p không phải là số nguyên tố (điều đó thật tầm thường) và khá chắc chắn rằng (p-1)/2 là số nguyên tố. Tôi sẽ xem xét những gì bạn nói. Nhưng cần làm rõ: $r_1$ là ngẫu nhiên, $u$ cũng là (ngẫu nhiên thống nhất trong $\mathbb{Z}_q$ và tất cả các $r_i$â còn lại được tạo dựa trên $r_1$ và $u trước đó $. Vì vậy, mẹo mà tôi tin là bằng cách nào đó tìm được một số $r_i$ và đi xa hơn từ đó.
Điểm:0
lá cờ tr

Bạn nên cố gắng tìm $r_{1}$. Đối với điều này, hãy thử xem có mối quan hệ nào giữa $c_{i}$$c_{j}$, chủ yếu là giữa $g^{r_{i}}$$g^{r_{j}}$. Có lẽ bạn có thể tìm thấy một $c$ như vậy mà $g^{c}=g^{r_{i}}/g^{r_{j}}$. Sau đó, bạn có thể tính toán $g^{s}$

seboll13 avatar
lá cờ fr
Cảm ơn câu trả lời của bạn :) vâng, đó là mục tiêu chính của tôi, trên thực tế, tìm một $r_i$ duy nhất ở đây là đủ vì từ đó chúng ta có thể dễ dàng tìm thấy $r_1$ và mọi thứ khác. Tuy nhiên, việc tính toán với modulos khá phức tạp nên tôi đang cố gắng hết sức để giải quyết vấn đề này và tìm ra giải pháp.

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