Tôi đang làm việc trên ứng dụng javascript mã nguồn mở Tôi đang cố gắng giao tiếp với API của bên thứ ba (github cụ thể). Tôi đang cố giữ toàn bộ ứng dụng phía máy khách của mình, vì vậy tôi thực sự sẽ không có máy chủ để quay lại hoặc lưu trữ các tệp ẩn. Là một phần của quy trình OAuth, tôi cần phải cung cấp khóa bí mật được cung cấp cho khóa api của mình. Tôi không được phép xuất bản hoặc chia sẻ khóa này.Ẩn khóa bí mật trong kho công cộng
tôi đã đưa ra các giải pháp sau đây:
- Mã hóa khóa bí mật sử dụng triple-DES và cụm từ mật khẩu.
- Đặt phiên bản được mã hóa vào kho của tôi ở đâu đó.
- Khi tôi cần xác thực qua Oauth, hãy nhắc cụm mật khẩu và khôi phục khóa bí mật.
- Khi đã biết, lưu trữ bí mật trong bộ nhớ cục bộ để tránh các lời nhắc trong tương lai.
Tôi chủ yếu lưu trữ phiên bản đã thay đổi của khóa bí mật thứ. Tôi đoán tất cả điều này mua cho tôi là tôi phải nhận được mật khẩu từ người dùng thay vì chìa khóa đầy đủ. Nó sẽ dễ nhớ hơn một chút so với các byte ngẫu nhiên.
Tính năng này có đủ an toàn không? Nó không phải là một ứng dụng siêu quan trọng, nhưng tôi muốn làm hết sức mình để bảo vệ những điều mà tôi được bảo không chia sẻ. Có cách nào tốt hơn 3DES để mã hóa khóa theo cách ngược lại không?
Tắt OAuth phía máy khách không thực sự được hỗ trợ bởi github vì lý do này. Họ không muốn các khóa bí mật được hiển thị. Vẫn có thể hữu ích nếu giao dịch với apis ít picky mặc dù. – captncraig
Tôi thực sự không hiểu kịch bản. Bạn đang cố gắng để ẩn chìa khóa để github từ người sử dụng, mặc dù họ đang chạy các khách hàng sử dụng phím? Nếu vậy, bạn không thể làm điều đó một cách an toàn; người dùng được xác định sẽ luôn có thể khôi phục khóa này và từ quan điểm đạo đức, bạn không nên cố giấu thông tin được lưu trữ trên máy từ chủ sở hữu của nó. Nếu mỗi người dùng có khóa github riêng của họ và bạn chỉ đang tìm kiếm một cách thuận tiện hơn để ghi nhớ nó, giải pháp của bạn là tốt. – erickson