Điểm:1

Mã hóa bất đối xứng một tin nhắn ngắn thành một chuỗi ngắn

lá cờ cn

Tôi có một chuỗi có kích thước < 32 ký tự từ bộ ký tự giới hạn sau.

  • chữ cái Latinh viết hoa và viết thường: A đến Z và a đến z
  • chữ số: 0 đến 9
  • ký tự đặc biệt: !#$%&'*+-/=?^_`{|}~

Tôi đang tìm cách mã hóa chuỗi này bằng khóa chung trong đó thông báo kết quả có < 64 ký tự.

Tôi hiểu rằng sẽ có sự đánh đổi giữa quy mô và bảo mật.

kelalaka avatar
lá cờ in
[Mã hóa ECC Elgamal](https://crypto.stackexchange.com/a/9990/18298) nếu bạn có thể chịu đựng được [mã hóa tin nhắn](https://crypto.stackexchange.com/q/76340/18298)
Điểm:2
lá cờ my

Tôi đang tìm cách mã hóa chuỗi này bằng khóa chung trong đó thông báo kết quả có < 64 ký tự.

Trên thực tế, có vẻ như bạn có thể, nếu bạn cắt giảm bảo mật chỉ một chút.

Một cách tiếp cận sẽ được sử dụng ECIES với, giả sử, P-192. (EC-Elgamal cũng sẽ khả thi - Tôi nghĩ đây là một cách tiếp cận ưu việt)

Trong sơ đồ này, khóa riêng là một giá trị ngẫu nhiên $r$, và khóa công khai là một giá trị $P = rG$, ở đâu $G$ là điểm máy phát điện. Để mã hóa, chúng tôi chọn một giá trị ngẫu nhiên $s$, và tính toán cả hai $sG$$sP$; chúng tôi gửi điểm $sP$ (hoặc, trong trường hợp của bạn, chỉ tọa độ x) thông qua Hàm dẫn xuất khóa, hàm này tạo khóa mà chúng tôi sử dụng để mã hóa thông báo thực tế. Bản mã bao gồm giá trị $sG$ (trong trường hợp của bạn, chỉ tọa độ x) và mã hóa đối xứng.

Bây giờ, nếu chúng ta sử dụng đường cong P-192, tọa độ x của $sG$ có thể được biểu thị bằng 192 bit; sử dụng bảng chữ cái mà chúng tôi đã cung cấp (có 81 ký hiệu), sẽ mất 31 ký tự (ví dụ: bằng cách chuyển đổi giá trị từ 0 sang khoảng $2^{192}$ vào căn 81).

Đối với mã hóa đối xứng của tin nhắn, chúng ta có thể sử dụng phương pháp Mã hóa bảo toàn định dạng [1]; điều này có thể chuyển đổi một tin nhắn bao gồm một bảng chữ cái gồm 81 ký hiệu thành một bản mã có cùng độ dài và bảng chữ cái.

Vì vậy, mã hóa gồm 31 ký hiệu (số lớn nhất mà bạn nói rằng bạn quan tâm) sẽ mã hóa dưới dạng tin nhắn gồm 31+31 = 62 ký hiệu - theo yêu cầu của bạn.

Chi phí an ninh:

  • P-192 có "bảo mật 96 bit"; đó là hơi ít hơn chúng ta thường sử dụng - tuy nhiên, nó vẫn còn khá tốt.

  • Chúng tôi tiết lộ độ dài của tin nhắn (vì phương pháp Mã hóa bảo toàn định dạng bảo toàn độ dài); nếu đó là một yêu cầu bổ sung, bạn luôn có thể đệm tin nhắn thành 32 byte (với ký tự cuối cùng cho biết độ dài thực của tin nhắn) - với điều này, chúng tôi vẫn đáp ứng yêu cầu về độ dài


[1]: Thông thường, với ECIES, chúng tôi sử dụng biến đổi toàn vẹn rõ ràng trong mã hóa đối xứng. Tôi cho rằng điều đó là không cần thiết trong trường hợp này - bất kỳ sửa đổi nào của FPE sẽ giải mã dưới dạng một thứ gì đó ngẫu nhiên và kẻ thù luôn có thể thay thế bản mã bằng thứ gì đó giải mã thành thứ gì đó ngẫu nhiên (bằng cách đơn giản là chọn một bản rõ ngẫu nhiên và mã hóa nó với khóa công khai).

lá cờ cn
Có vẻ như ElGamal có thể được sử dụng với P-192 (Không phải số nguyên tố có thể là P-191?) Để mã hóa tin nhắn của tôi mà sau này tôi có thể giải mã bằng khóa riêng. Tôi đang xem ví dụ này https://cryptographyacademy.com/elgamal/ Tại sao chỉ cần tọa độ x như bạn nói? Ngoài ra, mã hóa bảo toàn định dạng đối xứng phát huy tác dụng ở đây ở đâu?
poncho avatar
lá cờ my
@Xavier: Tôi đã xem ElGamal; làm cho mọi thứ phù hợp với các giới hạn mà bạn có là một việc khó (kích thước đường cong cần phải đủ lớn để bạn có thể mã hóa chuỗi, cộng với độ biến thiên cần thiết để có được tọa độ hợp lệ; mặt khác, nó không được quá lớn, hoặc kích thước bản mã vượt quá giới hạn.
poncho avatar
lá cờ my
Đối với vị trí của mật mã đối xứng, tốt, nó được sử dụng để mã hóa thông báo văn bản gốc thực tế (trong khi giá trị $sG$ được sử dụng để truyền đạt văn bản mật mã đối xứng). Vì vậy, bộ giải mã trích xuất giá trị $sG$ (chọn một trong hai tọa độ $y$ tùy ý), tính toán $r(sG)$ (có cùng tọa độ $x$ với giá trị $rP$ của bộ mã hóa); chuyển đổi nó thành khóa đối xứng (sử dụng kdf), sau đó thực hiện giải mã đối xứng. Tôi đề xuất thuật toán đối xứng FPE, để giảm kích thước bản mã...
poncho avatar
lá cờ my
Về lý do tại sao bạn chỉ cần tọa độ x, ồ, tọa độ x của $r(sG)$ chỉ phụ thuộc vào tọa độ x của $sG$; do đó để giải mã, chúng tôi có thể chuyển đổi tọa độ x trong bản mã trở lại thành $P$ đầy đủ (bằng cách tùy ý chọn một trong hai khả năng - không quan trọng nếu cái chúng tôi chọn giống với cái mà người mã hóa đã có ). Tôi cho rằng bạn có thể sử dụng tính năng nén điểm để chuyển toàn bộ giá trị $sG$ - tuy nhiên, không cần (và đó là toàn bộ một chút - chúng tôi đang chạy đủ gần đến giới hạn kích thước mà đó là mối quan tâm không cần thiết)
poncho avatar
lá cờ my
@Xavier: Ngoài ra, khi chúng tôi nói "P-192", tôi đang nói về một đường cong elip cụ thể có kích thước trường (và thứ tự nhóm) vào khoảng $2^{192}$ - nó sử dụng trường nguyên tố và vì vậy nó không quan trọng 192 có phải là số nguyên tố hay không. Nó còn được gọi là secp192r1 (như được định nghĩa trong https://www.secg.org/SEC2-Ver-1.0.pdf)
lá cờ cn
Cảm ơn bạn đã làm rõ thành thật mà nói đây là tất cả một chút trên đầu của tôi. Bạn có biết ví dụ triển khai ECIES hay bằng cách sử dụng đường cong secp192r1 không?
poncho avatar
lá cờ my
@Xavier: google tìm nhanh https://github.com/insanum/ecies - nó sử dụng OpenSSL (và mặc dù nó không dành riêng cho P-192, nhưng OpenSSL hỗ trợ đường cong đó). Lưu ý rằng các yêu cầu của bạn khá cụ thể - sẽ mất một chút công việc để chuyển đổi mã đó thành mã đáp ứng yêu cầu của bạn
lá cờ cn
cảm ơn vì tất cả sự giúp đỡ, tôi có một triển khai đang hoạt động theo thiết kế của bạn. Tôi thấy [ví dụ](https://asecuritysite.com/ecc/ecc3) này hữu ích trong việc nắm bắt ECIES. Vấn đề duy nhất của tôi bây giờ là tìm ra cách chỉ chuyển giá trị x và giải quyết toàn bộ điểm khi giải mã. Hiểu biết của tôi là x. Tôi sẽ giải tìm y trong đường cong elip từ công thức `y^2 = x^3 + ax + b`. Nhìn vào đường cong [secp192r1](https://neuromancer.sk/std/secg/secp192r1) khi tôi giải quyết `y`, triển khai ví dụ trên khẳng định rằng điểm không nằm trên đường cong.

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