Làm thế nào để bạn sao lưu an toàn một khóa riêng GPG?


25

Tôi tìm thấy một trình quản lý mật khẩu CLI rất thú vị được gọi là pass . Để sử dụng nó, bạn tạo một cặp khóa GPG2 và sử dụng công cụ để giúp bạn lưu trữ mật khẩu trong các tệp được mã hóa gpg2.

Để mã hóa các tập tin (thêm mật khẩu mới), nó sử dụng khóa chung.

Để giải mã các tập tin (lấy lại mật khẩu đã lưu), nó sử dụng khóa riêng, yêu cầu mật khẩu.

Điều này làm việc tuyệt vời.

Bây giờ công cụ đang lưu trữ tất cả mật khẩu của tôi, tôi muốn sao lưu tất cả dữ liệu này để nếu máy tính của tôi gặp sự cố, tôi sẽ không bị khóa khỏi tất cả các tài khoản trực tuyến của mình.

Công cụ tích hợp độc đáo với git, vì vậy tôi có thể dễ dàng đẩy các tệp .gpg sang repo git riêng của mình trên một máy tính khác. Theo những gì tôi hiểu, những tập tin này là vô dụng nếu không có khóa riêng để giải mã chúng.

Câu hỏi của tôi là: làm cách nào để sao lưu khóa riêng và khóa chung một cách an toàn, để tôi có thể khôi phục "cơ sở dữ liệu" trên máy khác nếu có nhu cầu? Tôi có thể lưu trữ cả khóa công khai và khóa riêng trong repo git của mình và nhập chúng vào một máy khác sau không? Hoặc nó được coi là thực hành không an toàn để lưu trữ một khóa riêng tư trong một repo git riêng, địa phương? Repo git yêu cầu mật khẩu để truy cập. Khóa riêng được mã hóa và yêu cầu mật khẩu để mở - điều đó có an toàn để lưu trữ không?

Câu trả lời:


10

Lưu trữ khóa riêng PGP trong hệ thống kiểm soát sửa đổi, không, tự nó, không gây ra bất kỳ vấn đề bảo mật quan trọng nào. Lưu trữ khóa riêng trong kho lưu trữ git cục bộ, riêng tư (chưa được công bố) sẽ không có ý nghĩa bảo mật quan trọng so với việc lưu trữ khóa riêng trên cùng một máy tính nhưng bên ngoài bất kỳ kho lưu trữ git nào.

Vấn đề duy nhất tôi có thể nghĩ đến đó là từ việc lưu trữ khóa riêng theo cách được kiểm soát phiên bản là trừ khi bạn có thể phá hủy các bản sửa đổi cũ bằng cách nào đó, các thay đổi cụm mật khẩu sẽ mua cho bạn ít sự bảo vệ hơn so với cách khác.

Điều có thể đi kèm với bộ ý nghĩa bảo mật của riêng nó là lưu trữ khóa riêng theo cách mà người khác có thể có quyền truy cập vào tệp khóa. Trong tình huống như vậy, tất cả những gì đứng giữa kẻ tấn công và chìa khóa của bạn là sức mạnh của cụm mật khẩu của nó.

Nhận thấy rằng bảo mật lưu trữ không hoàn hảo và thậm chí còn hơn thế trong môi trường hiện đại nơi mọi người thường xuyên sao lưu dịch vụ đám mây (dịch theo nghĩa đen là "máy tính của người khác"), chúng tôi thường bảo vệ các khóa bí mật của mình bằng cụm mật khẩu. Tôi tin tưởng rằng, ngay cả khi bạn đang chạy ví dụ gpg-agent, bạn cũng đang làm như vậy.

Điểm mấu chốt là, miễn là cụm mật khẩu của bạn tốt, thậm chí lưu trữ một bản sao của tệp khóa được mã hóa trên máy tính của người khác cũng tương đối an toàn.

Tuy nhiên, đó là một vấn đề khá lớn nếu: mật khẩu hoặc mật khẩu của hầu hết mọi người khá tệ hại cho đến khi các nỗ lực máy tính phá vỡ chúng. GnuPG sẽ cố gắng làm việc tốt nhất có thể với những gì bạn cung cấp, nhưng để bảo vệ dữ liệu vững chắc, bạn cần một cụm mật khẩu tốt và bạn cần đặt nó trước khi nhập khóa riêng vào kho git. Sau khi khóa được nhập, về nguyên tắc, kẻ tấn công có thể tấn công bất kỳ phiên bản nào của khóa đó và nếu họ có lý do để tin rằng một phiên bản cụ thể có cụm mật khẩu chất lượng thấp hơn có thể sẽ được sử dụng. Vì lý do đó, hãy chắc chắn rằng bạn chọn cụm mật khẩu một cách cẩn thận. Tôi đã viết một đoạn mồi nhỏ về cách xử lý mật khẩu, bao gồmđề xuất về cách chọn mật khẩu hoặc cụm mật khẩu mà bạn cần để có thể nhớ , mà bạn có thể thấy hữu ích.


6

Tôi đã xem xét một thiết lập tương tự gần đây. Trước khi giải quyết câu hỏi của bạn, hãy để tôi chỉ ra điều gì làm phiền tôi về nó. Điều này được giải thích ở độ dài lớn ở đây . Nói tóm lại, khi Pass gọi GPG, nó thực hiện mật mã không đối xứng (RSA / EC) không cần thiết dưới mui xe. Không cần thiết - bởi vì không có bên không đáng tin cậy ở đây.

Điều này gây khó chịu vì tiền điện tử bất đối xứng ít chứng minh tương lai hơn so với tiền điện tử đối xứng. Ví dụ, tiền điện tử bất đối xứng ngày nay bị phá vỡ bởi các máy tính lượng tử đủ lớn, chưa tồn tại. Tổng quát hơn, tiền điện tử bất đối xứng dựa trên "các vấn đề toán học" mà chúng ta không biết cách giải quyết, nhiều hơn so với tiền điện tử đối xứng.

Để giảm thiểu điểm yếu này, điều tối thiểu bạn có thể làm là giữ khóa công khai GPG của mình được sử dụng với Pass riêng tư, vì ví dụ, cuộc tấn công lượng tử (tiềm năng) cần khóa công khai này: xem tại đây .

Đối với câu hỏi thực tế của bạn, không rõ liệu bạn có ý định lưu trữ git repo (với mật khẩu) công khai hay riêng tư. Nếu bạn muốn giữ riêng tư, bạn có thể thực hiện những gì bạn muốn và giảm tính bảo mật của khóa riêng GPG so với phương tiện mà bạn sao lưu repo. Tuy nhiên, điều đó có thể trở thành vấn đề về gà và trứng: nếu repo là riêng tư, làm thế nào để bạn lấy lại trong trường hợp gặp sự cố? Nói cách khác, trong trường hợp "tai nạn xấu", trước tiên bạn phải lấy thứ gì đó . Vì vậy, bạn có thể muốn giữ git repo ở chế độ riêng tư, nhưng sao lưu khóa GPG theo cách mà bạn có thể truy xuất trước, độc lập với mọi thứ khác.

Giải pháp sao lưu ngoại tuyến có rất nhiều, luật sư, tầng hầm, vv xem tại đây . Nhưng tầng hầm không dành cho tất cả mọi người, vì vậy hãy để tôi đề xuất một giải pháp trực tuyến:

  • Tạo một cụm mật khẩu siêu mạnh không có nghĩa là phải gõ trong nhiều năm. Gợi ý: Lỗi chính tả dài, đáng nhớ của một cụm từ có một số ý nghĩa cá nhân hoặc từ một cuốn sách sẽ không hết bản sao nếu bạn cần tìm nó.

  • Tạo một tarball với khóa bí mật GPG đã xuất và có thể là thông tin đăng nhập SSH của bạn.

  • Mã hóa đối xứng với cụm mật khẩu của bạn : gpg --symmetric --armor.

  • Tạo một tài khoản lưu trữ git miễn phí.

  • Tạo một kho lưu trữ công khai , có thể được nhân bản mà không cần thông tin đăng nhập.

  • Đặt bóng tar được mã hóa và bọc thép trong đó.

Để lấy lại nó sau một "tai nạn xấu":

  • Khởi động một thanh USB trực tiếp.

  • Nhân bản repo công khai.

  • gpg --decrypt.

Cụm mật khẩu đối xứng sẽ là sự bảo vệ chính của bạn chống lại zombie. Mọi người đôi khi không cung cấp cho bạn hoặc người đọc ẩn danh, lợi ích của sự nghi ngờ khi chọn cụm mật khẩu. Nhưng với một cụm mật khẩu tốt, tiền điện tử đối xứng phải vững chắc.

Khi bạn xuất khóa riêng GPG, nó sẽ được mã hóa bằng cụm mật khẩu của chính nó. Các phiên bản gần đây của GPG sẽ không cho phép xuất khẩu không được mã hóa. Bạn có thể sử dụng cụm mật khẩu GPG "thông thường" của mình tại đây. Chỉ cần nhớ rằng trong trường hợp xảy ra sự cố, bạn sẽ cần cả hai cụm mật khẩu để truy cập khóa riêng GPG của mình.


4

Một tùy chọn khác tôi sử dụng là: In chìa khóa của bạn trên giấy .

Các chi tiết có trong câu trả lời liên kết. Những lợi thế lớn là: Bạn có thể dễ dàng lưu trữ nó bất cứ nơi nào bạn muốn và bạn có thể kiểm tra xem nó có còn trong tình trạng tốt hay không chỉ bằng cách nhìn vào nó. Nhưng lợi thế lớn nhất là: Không ai có thể hack nó mà không thực sự ở nơi bạn lưu trữ bản sao lưu và lấy nó.


Theo như tôi có thể thấy, giấy không có lợi thế so với phương tiện di động trong trường hợp này và nhược điểm là nếu bạn cần khôi phục khóa, bạn phải nhập tất cả các từ vô nghĩa cho khóa.
MAP

Ưu điểm là, nó bền hơn rất nhiều và bạn có thể kiểm tra xem nó có thể đọc được bằng mắt mà không cần máy tính hay không. Nếu tôi có một đô la cho mỗi đĩa mềm, CD hoặc DVD mà tôi đã sử dụng hiện có lỗi dữ liệu không thể phục hồi, tôi có thể đi vào ngày thứ sáu với số tiền đó. Bạn không cần phải gõ bất cứ điều gì! PaperBack in nó dưới dạng mã 2D với sửa lỗi được thêm vào. Bạn chỉ cần quét hoặc chụp ảnh nó và chương trình biến nó trở lại thành bất cứ thứ gì bạn đã cho nó để in trước đó.
Josef nói Phục hồi lại

Tất nhiên, giả sử rằng bạn vẫn có công nghệ để làm điều đó.
MAP

Chà, xác suất mà tôi có thể dễ dàng có được Windows VM hoặc Linux với Wine với một bản sao của phần mềm Nguồn mở đó trong 20 năm theo ý kiến ​​của tôi cao hơn nhiều so với xác suất tôi có thể lấy phần cứng để đọc đĩa mềm / CD /ĐĨA DVD. Giả sử tôi đã làm điều đó năm 1990. Bây giờ tôi thậm chí có thể chạy phần mềm từ trước đó trong trình duyệt của mình . Nhưng chúc may mắn khi cố gắng để có được phần cứng cho phép bạn đọc một đĩa mềm 5 1/4 inch với PC hiện đại của bạn.
Josef nói Phục hồi lại

2

Một câu trả lời khác cho điều này là "ngoại tuyến", tức là lưu trữ nó ở một nơi an toàn và không được kết nối với bất kỳ máy tính nào. Tôi giữ một bản sao đầy đủ, không được mã hóa của tất cả các khóa của mình trên một đĩa mềm (tôi đã làm theo cách này trong một thời gian dài, bây giờ là thói quen) trong hộp ký gửi an toàn tại ngân hàng. Lý do tôi giữ chúng không được mã hóa trên các phương tiện truyền thông tại ngân hàng là vì một kịch bản tiềm năng cho việc "mất" chìa khóa là quên cụm từ thông qua (cụm từ vượt qua của tôi có xu hướng có nhiều dấu câu và cách viết lạ, và chỉ quên một trong số đó làm cho nó không sử dụng được). Tôi chưa bao giờ phải dùng đến việc lấy lại từ bản sao đó, nhưng tôi lên kế hoạch cho điều tồi tệ nhất.

Ngoài ra, có một sự thu hồi chính trên phương tiện truyền thông và một ghi chú hướng dẫn những người thừa kế của tôi về những việc cần làm với nó, trong trường hợp tôi không còn nữa.


Nếu bạn sao lưu khóa riêng ký chính, không thể sử dụng để tạo chứng nhận hủy bỏ? Trong trường hợp nào là hữu ích để sao lưu chứng nhận thu hồi?
Matei David

À đúng, nhưng bạn phải hiểu rằng tôi không thể chắc chắn người hiểu biết về máy tính sẽ thực hiện yêu cầu như thế nào (lưu ý rằng không phải tôi là người sẽ sử dụng nó, mà là "những người thừa kế của tôi"). Vì vậy, việc thu hồi đã được tạo và hướng dẫn "chỉ cần gửi email có tệp này được đính kèm" ít có khả năng bị quản lý sai.
MAP

@MateiDavid Tạo chứng chỉ hủy bỏ khi ban đầu bạn tạo cặp khóa và lưu trữ chứng chỉ hủy bỏ đó, cho phép bạn thu hồi khóa nếu khóa không khả dụng với bạn. Có những kịch bản hợp lệ nơi điều này có thể xảy ra. Tất nhiên, bạn phải bảo vệ giấy chứng nhận thu hồi rất tốt, bởi vì bất kỳ ai có được nó đều có thể xuất bản nó do đó thu hồi cặp chìa khóa của bạn. Mặc dù vậy, tôi không thực sự chắc chắn làm thế nào một chứng nhận thu hồi thậm chí áp dụng cho tình huống của OP.
một CVn

Vâng, chúng tôi đã đi xuống một lỗ chuột. Tôi xin lỗi, việc tôi đề cập đến giấy chứng nhận hủy bỏ chỉ để hoàn thiện trong mô tả các bước tôi thực hiện và không liên quan gì đến câu hỏi ban đầu.
MAP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.