Điểm:7

Có dạng mật mã nào mà khóa được lấy từ bản rõ không

lá cờ dz

Hãy tưởng tượng bạn đang xây dựng một hệ thống lưu trữ từ xa được chia sẻ, nơi bạn gửi tệp của mọi người đến bộ lưu trữ trung tâm, nhưng bạn muốn loại bỏ trùng lặp các tệp giữa nhiều người dùng để chúng tôi không lưu trữ cùng một tệp nhiều lần. Đồng thời bạn muốn mã hóa dữ liệu để nhà cung cấp dịch vụ hoặc bất kỳ ai không có tệp không thể giải mã tệp.

Trong trường hợp này, bạn có thể tưởng tượng việc lấy khóa mã hóa đối xứng từ nội dung của tệp (giả sử bằng cách lấy một số hàm băm mật mã của tệp) sao cho mọi người sở hữu tệp có thể tính toán khóa dễ dàng, nhưng những người không có quyền truy cập vào tệp thì không thể' không khám phá ra nó.

Sau đó, người dùng mã hóa tệp bằng khóa này và gửi cho chúng tôi đốm màu được mã hóa. Chúng tôi có thể kiểm tra nội bộ đối với từ điển băm của các đốm màu được mã hóa để xác định xem chúng tôi đã có đốm màu đó hay chưa và lưu trữ hoặc loại bỏ nó.

Tôi tưởng tượng rằng việc lấy một khóa từ văn bản gốc là một ý tưởng tồi tệ đối với hầu hết các sơ đồ mã hóa, nhưng tôi tự hỏi liệu có một sơ đồ nào ngoài kia hay không, hoặc liệu có một kỹ thuật đã biết để thực hiện việc này hay không.

caveman avatar
lá cờ in
Nếu mục tiêu chỉ đơn giản là loại bỏ lồng tiếng, tại sao không tạo giao thức sao cho mã định danh của tệp là hàm băm của tệp và để điều đó hoàn toàn tách biệt về cách người dùng mã hóa tệp? Ví dụ. cho phép người dùng chọn bất kỳ mật khẩu nào họ thích, nhưng mong muốn họ cung cấp hàm băm của bản rõ cùng với bản mã?
lá cờ dz
Chắc chắn rồi, nhưng tôi cần mã hóa tệp của mọi người bằng cùng một khóa mà không thực sự biết khóa, đó là phần tôi quan tâm. Làm cách nào để người dùng của tôi có thể chia sẻ khóa mã hóa cho đốm màu này? Ý tưởng của tôi là, thứ mà tất cả họ đều biết là nội dung của tệp, nếu họ đã biết nội dung thì việc giải mã tệp sẽ an toàn cho họ. Nếu tất cả họ đều chọn các mật khẩu khác nhau, tôi sẽ phải lưu trữ một bản sao cho mỗi người trong số họ vì tất cả các bản mã sẽ khác nhau?
SAI Peregrinus avatar
lá cờ si
"Tôi cần mã hóa tệp của mọi người bằng cùng một khóa," Tại sao? Đó là một yêu cầu rất kỳ lạ.
lá cờ dz
Nếu tôi sử dụng hai khóa, tôi có phải lưu trữ blob được mã hóa hai lần không? Tôi không muốn làm điều đó. Để rõ ràng, ý tôi là cùng một tệp, vì vậy nếu alice có foo.mp3 và bob có foo.mp3, tôi muốn cả hai tải lên cùng một blob được mã hóa để tôi có thể nhận ra chúng giống nhau và chỉ lưu trữ một bản sao, nhưng không có dịch vụ trung tâm có thể biết những gì có trong tệp.
caveman avatar
lá cờ in
Bạn có muốn người dùng cung cấp cho bạn khả năng giải mã các tệp mà bạn lưu trữ cho họ không?
lá cờ id
Nếu một người chọn một hàm băm sao cho không có hai tệp nào có cùng hàm băm và không có hai hàm băm nào sẽ băm thành cùng một hàm băm, thì người ta có thể mã hóa từng tệp bằng một hàm băm duy nhất của nội dung, sau đó xác định tệp trên phương tiện lưu trữ bằng cách sử dụng một hàm băm của hàm băm. Mỗi người dùng sẽ cần có một bản sao của hàm băm duy nhất được mã hóa bằng khóa cá nhân của họ. Ai đó không có bản sao của hàm băm sẽ không thể giải mã tệp mà không thể đảo ngược hàm băm thứ hai, nếu hàm băm tốt thì hoàn toàn không thể giải mã được ngoại trừ việc đoán nội dung tệp hoàn chỉnh.
lá cờ id
Như những người khác đã lưu ý, điều này liên quan đến việc từ bỏ một số loại đảm bảo quyền riêng tư, vì có thể biết liệu người dùng có tệp có nội dung cụ thể hay không; có thể có nhiều cách để che khuất phần nào thông tin đó, nhưng nếu hành động của người dùng tải lên tệp 20 megabyte không làm giảm 20 megabyte dung lượng ổ đĩa khả dụng, thì điều đó có xu hướng gợi ý rằng tệp đã tồn tại.
lá cờ cn
@Matt, tôi không hiểu tại sao phương pháp bạn đề xuất không hoạt động. Có lẽ khóa sẽ là SHA256(tệp), cùng với muối có thể là SHA256(SHA256(tệp)). Và sau đó, họ có thể lưu trữ tệp cùng với bạn và gửi url tới tệp cùng với SHA(256) của tệp. Lưu ý rằng bạn có thể tạo các url khác nhau cho những người gửi khác nhau để họ có thể "xóa" tệp khỏi máy chủ. Bạn chỉ cần xóa url của họ nhưng có thể giữ lại tệp bên dưới miễn là không có url nào trỏ đến nó. Nếu một hàm băm 256 không đủ dài, bạn có thể ghép các hàm băm và muối khác. Có lẽ là không cần thiết.
lá cờ cn
Tất nhiên, phần khó khăn là thuyết phục "chủ sở hữu" tệp rằng nhà cung cấp dịch vụ lưu trữ (bạn) thực sự không thể giải mã tệp mặc dù bạn đang cung cấp thuật toán và có thể cả thư viện và Ux để mã hóa! Hãy tin tưởng hoặc một số nhân vật có thẩm quyền kỹ thuật để ban phước cho phương pháp của bạn!
Điểm:16
lá cờ us

mã hóa $M$ sử dụng $H(M)$ vì chìa khóa là một cách tiếp cận tự nhiên và được nghiên cứu kỹ lưỡng để chống trùng lặp. Nó được biết đến trong văn học như mã hóa hội tụ hoặc mã hóa khóa tin nhắn.

Vấn đề tự nhiên với cách tiếp cận này là nó không thể đạt được các khái niệm tiêu chuẩn về bảo mật cho mã hóa (IND-CPA, IND-CCA, v.v.). Thật vậy, bất cứ ai biết $M$ sẽ có thể xác minh xem một bản mã ứng cử viên giải mã thành $M$. Sau đó, câu hỏi trở thành: mức độ bảo mật "tốt nhất có thể" mà người ta có thể hy vọng là gì và chúng ta có thể đạt được mức độ đó không?

Phân tích kỹ lưỡng nhất về mã hóa khóa tin nhắn mà tôi biết là:

Mihir Bellare, Sriram Keelveedhi, Thomas Ristenpart: Mã hóa khóa tin nhắn và chống trùng lặp an toàn, Eurocrypt 2013.

Họ xác định các khái niệm bảo mật có liên quan và đưa ra các cấu trúc & bằng chứng tương ứng. Họ cũng xem xét một số mục tiêu bảo mật khác liên quan chặt chẽ đến ứng dụng chống trùng lặp, tách biệt với tính bảo mật và tính toàn vẹn tiêu chuẩn.

Bạn có thể tìm kiếm ePrint và tìm nhiều giấy tờ khác có "thông báo bị khóa" hoặc "sao chép" (đối với các phương pháp khác) trong tiêu đề. Lưu ý rằng mã hóa khóa tin nhắn là không tương tác, nhưng vấn đề chống trùng lặp trở nên dễ dàng hơn một chút khi bạn cho phép tương tác. Do đó, nhiều kỹ thuật mà bạn tìm thấy có thể tương tác.

caveman avatar
lá cờ in
Sau khi loại bỏ các bản sao của các mã hóa khác nhau của cùng một văn bản rõ ràng, liệu những người dùng riêng biệt có thể giải mã bản sao duy nhất được loại bỏ trùng lặp bằng cách sử dụng mật khẩu của riêng họ không? Theo như tôi hiểu, với kịch bản của OP, những người dùng khác nhau tải lên các bản sao của cùng một tệp, ngoại trừ mỗi tệp được mã hóa bằng mật khẩu của chính người dùng.
lá cờ us
Nếu $M$ được mã hóa bằng $H(M)$ thì nó không được mã hóa bằng mật khẩu của người dùng. Nếu bạn muốn một người dùng có thể giải mã thì bạn phải lưu trữ $H(M)$ được mã hóa dưới mật khẩu của người dùng đó. Lưu ý rằng đây là một bản mã rất ngắ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.