Sự khác biệt giữa mã hóa một số dữ liệu so với ký một số dữ liệu (sử dụng RSA) là gì?
Mã hóa bảo vệ tính bảo mật của tin nhắn ("một số dữ liệu"), trong khi việc ký cung cấp không thoái thác: tức là chỉ có thực thể đã ký nó mới có thể ký tên. Có sự khác biệt về chức năng là tốt; đọc tiếp
Nó chỉ đơn giản là đảo ngược vai trò của các khóa công khai?
Tuyệt đối không. Việc sử dụng cùng một khóa riêng để ký và giải mã (hoặc, tương tự, các khóa chung để xác minh và mã hóa ) được chấp nhận, vì bạn không nên trộn lẫn các mục đích. Đây không phải là một vấn đề toán học (RSA vẫn phải được bảo mật), nhưng là một vấn đề với quản lý khóa , trong đó, ví dụ như khóa ký phải có thời gian tồn tại ngắn hơn và có nhiều sự bảo vệ hơn trước khi sử dụng.
Đối với cùng một tin nhắn, bạn nên sử dụng khóa riêng của người gửi để ký và người nhận khóa công khai đáng tin cậy để mã hóa. Thông thường ký mã hóa sau đó được sử dụng nếu không một kẻ thù có thể thay thế chữ ký bằng chữ ký của mình. Tương tự như vậy, bạn nên sử dụng khóa riêng của người nhận để giải mã và tin cậy của người gửi để xác minh.
Hơn nữa, bạn nên hiểu rằng việc tạo chữ ký không sử dụng "mã hóa bằng khóa riêng". Mặc dù tất cả các hoạt động RSA dựa trên lũy thừa mô-đun, sơ đồ đệm hoàn toàn khác nhau cho việc tạo chữ ký. Hơn nữa, khóa chung có các thuộc tính hoàn toàn khác với khóa riêng RSA trong tất cả các sử dụng thực tế của RSA.
Ví dụ: tôi muốn sử dụng khóa riêng của mình để tạo tin nhắn để chỉ tôi mới có thể là người gửi.
Đó là tài sản không thoái thác, có thể đạt được bằng cách ký.
Tôi muốn khóa công khai của mình được sử dụng để đọc tin nhắn và tôi không quan tâm ai đọc chúng.
Khóa công khai nên được xem xét bởi tất cả. Nếu bạn muốn mọi người đọc tin nhắn, thì bạn chỉ cần không mã hóa chúng.
Việc ký kết nói chung sẽ không ảnh hưởng đến nội dung của tin nhắn. Thông điệp được coi là tách biệt với chữ ký. Chính thức chữ ký như vậy được gọi là "chữ ký có phụ lục" trong đó phụ lục là thông điệp. Đó là một cái tên hơi kỳ lạ vì thông điệp được coi là quan trọng hơn chữ ký trên nó, nhưng vâng. Chỉ có một vài chữ ký cung cấp phục hồi tin nhắn (một phần); chúng không được sử dụng nhiều nữa và thường được coi là không dùng nữa.
Lưu ý rằng các giao thức chữ ký như CMS có thể triển khai định dạng chứa bao gồm cả thông báo và chữ ký. Trong trường hợp đó, trước tiên bạn cần lấy thông báo - vẫn chưa được mã hóa - ra khỏi vùng chứa, giống như giải nén tệp từ tệp lưu trữ .zip đơn giản. Vì vậy, tin nhắn có thể bị ẩn khỏi chế độ xem và không thể được sử dụng trực tiếp trong trường hợp đó.
Tôi muốn có thể mã hóa một số thông tin nhất định và sử dụng nó làm khóa sản phẩm cho phần mềm của mình. Tôi chỉ quan tâm rằng tôi là người duy nhất có thể tạo ra những thứ này.
Mã hóa được sử dụng để đạt được bảo mật. Trước đây, việc tạo chữ ký RSA thường được coi là "mã hóa bằng khóa riêng". Tuy nhiên, các hoạt động khá khác nhau như đã giải thích ở trên, và các tiêu chuẩn sau này cố gắng hết sức và tách mã hóa và tạo chữ ký.
Tôi muốn đưa khóa công khai của mình vào phần mềm để giải mã / đọc chữ ký của khóa. Tôi không quan tâm ai có thể đọc dữ liệu trong khóa, tôi chỉ quan tâm rằng tôi là người duy nhất có thể kiểm chứng được.
Vâng, điều này được gọi là thiết lập niềm tin vào khóa công khai. Tuy nhiên, bảo vệ mã chương trình của bạn rất khác với bảo vệ tin nhắn. Bạn có thể thực hiện ký mã nhưng sau đó bạn cần một cái gì đó để kiểm tra chữ ký bên ngoài mã của bạn . Có những hệ điều hành cung cấp điều này.
Có Microsoft Authenticode chẳng hạn. Các cửa hàng ứng dụng như cửa hàng ứng dụng iStore và Android có thể hoặc không sử dụng ký mã, nhưng họ cung cấp một số đảm bảo rằng ứng dụng của bạn không được sao chép hoặc ít nhất là không được nhân bản trong cửa hàng. Mật mã không phải lúc nào cũng là giải pháp.
Giữ cho mã của bạn không bị sao chép / thay đổi hoàn toàn khó hơn nhiều và bạn sẽ vững chắc trong lãnh thổ DRM nếu bạn đi theo cách đó.
Là ký hữu ích trong kịch bản này?
Chắc chắn rồi. Nó chắc chắn có thể giúp đảm bảo rằng các tin nhắn chỉ được ký bởi bạn, nếu có niềm tin vào khóa chung. Nếu nó có thể hữu ích cho việc xác thực mã ứng dụng / khóa công khai tích hợp của bạn thì hoàn toàn phụ thuộc vào môi trường mà bạn mong đợi để chạy mã.