Tại sao GPG / PGP theo mặc định sử dụng các khóa khác nhau để ký / mã hóa?


22

Nếu bạn tạo khóa GPG mới, theo mặc định, bạn sẽ nhận được cặp khóa chính chỉ ký và một cặp khóa phụ chỉ mã hóa.

pub  2048R/XXXXXXXX  created: 2013-02-09  expires: 2014-02-09  usage: SC  
sec  2048R/XXXXXXXX           2013-02-09 [expires: 2014-02-09]

sub  2048R/ZZZZZZZZ  created: 2013-02-09  expires: 2014-02-09  usage: E
ssb  2048R/ZZZZZZZZ           2013-02-09 [expires: 2014-02-09]  

(Đầu ra kết hợp từ gpg --list-keysgpg --list-secret-keys)

Bạn cũng không nên sử dụng khóa chính để ký thông thường (thư / dữ liệu), nhưng để tạo khóa phụ chỉ ký khác và xóa / sao lưu khóa chính của bạn sang vị trí an toàn và ngoại tuyến chỉ được sử dụng để ký khóa .

Điều này có ý nghĩa vì hầu hết các điểm cuối mã hóa là máy tính xách tay / điện thoại hoặc các thiết bị di động luôn trực tuyến khác đặt các khóa riêng của bạn có nguy cơ bị mất cắp hoặc mất mát. Với khóa chính được lưu trữ an toàn, bạn luôn có thể thu hồi các khóa phụ bị mất đó và không bao giờ mất chữ ký khóa của mình.

Vì vậy, trong khi tôi tách rõ khóa chính <-> khóa phụ, tôi không hiểu tại sao lại có sự nhấn mạnh này trong việc tách khóa ký và mã hóa (ngay cả khi cả hai đều là khóa phụ). Ai đó có thể giải thích tại sao điều này là cần thiết hoặc ít nhất là lợi thế từ quan điểm bảo mật hoặc thực tế?

Về mặt kỹ thuật, nó hoàn toàn khả thi và được hỗ trợ bởi GnuPG để tạo khóa phụ ký và mã hóa.

pub  2048R/YYYYYYYY  created: 2013-08-13  expires: 2014-08-13  usage: SCEA
sub  2048R/VVVVVVVV  created: 2013-08-13  expires: 2014-08-13  usage: SEA 

2
Có một câu trả lời hay cho câu hỏi này tại Security.SE trong trường hợp có ai quan tâm.
GnP

Câu trả lời:


9

Tại Vương quốc Anh, Đạo luật Quyền lực Điều tra 2000 cho biết

49 (9) Một thông báo trong phần này sẽ không yêu cầu tiết lộ bất kỳ khóa nào

(a) được dự định chỉ được sử dụng cho mục đích tạo chữ ký điện tử; và

(b) trên thực tế không được sử dụng cho bất kỳ mục đích nào khác.

Trong một số trường hợp, điều đó có nghĩa là chính phủ Anh có thể buộc bạn phải giao chìa khóa giải mã (nếu bạn là cư dân) nhưng họ không được phép mạo danh bạn bằng khóa ký của bạn.


1
Thật thú vị ... điều này cũng sẽ áp dụng cho các khóa riêng của Bitcoin (chỉ được sử dụng để ký, không được sử dụng để mã hóa).
Jonathan Cross

Càng và có vẻ như sự miễn trừ này được giữ nguyên trong đạo luật năm 2016 .

8

Tôi không biết cụ thể tại sao GPG / PGP làm những gì nó làm, nhưng một động lực có thể cho loại việc này là khắc phục thảm họa. Bạn có thể muốn đưa một bản sao khóa riêng mã hóa của mình cho một người bạn rất thân, đáng tin cậy, vì vậy, nếu ngôi nhà của bạn bị thiên thạch đâm vào, bạn vẫn có thể đọc các tin nhắn cũ được lưu trong đám mây. (Tương tự, bạn có thể phải cung cấp khóa mã hóa 1 cho sếp của mình để anh ấy có thể đọc email của bạn sau khi bạn rời đi.)

Nhưng không có lý do để bất kỳ ai khác có một bản sao của cặp khóa ký của bạn.
________________
1  “bạn có thể được yêu cầu cung cấp khóa mã hóa của bạn” để ai đó - xem câu trả lời TEV của .


2

Câu trả lời đơn giản là bạn càng sử dụng khóa, bạn càng rò rỉ nhiều thông tin về khóa.

Khóa ký được bạn sử dụng để xác thực rằng bạn tin tưởng một khóa và bằng cách suy luận chủ sở hữu, nhưng quan trọng hơn là các liên lạc của bạn đến từ bạn. Điều này được gọi là không thoái thác .

Vì lý do, hãy giả sử sử dụng khóa 10000 lần có nghĩa là bạn rò rỉ tất cả thông tin cần thiết cho ai đó để xây dựng lại khóa đó. Sử dụng một khóa> 9999 lần có nghĩa là ai đó có khả năng mạo danh bạn và chuyển chữ ký đáng tin cậy của bạn đến khóa hoặc tài liệu của bên thứ ba độc ác khiến tất cả mạng tin cậy của bạn tin rằng bên này là bạn hoặc tài liệu đến từ bạn.

Tuy nhiên, nếu bạn cũng đang mã hóa với cùng khóa đó, ngưỡng sẽ nhanh chóng đạt được hơn.

Để tránh sự phiền toái tiềm ẩn đó, khóa thứ hai được tạo, chỉ được sử dụng để mã hóa / giải mã, chỉ được sử dụng để mã hóa dữ liệu như bạn. Khi khóa này đã được sử dụng 9999 lần, bạn có thể hết hạn khóa này mà không mất tất cả niềm tin mà bạn đã trao với khóa ký hợp lệ của mình. Bạn rekey, tạo khóa mã hóa mới và ký nó với khóa ký của bạn để cho thấy rằng đây là khóa mã hóa đáng tin cậy mà mọi người có thể xác minh.

CHỈNH SỬA:

Khi đọc lại những gì tôi đã viết ở trên và Cẩm nang bảo mật GNU , kết luận của tôi là subkhóa riêngpubphải là khóa chung. @GnP câu trả lời này:

" The keyword pub identifies the public master signing key, and the keyword sub identifies a public subordinate key."


Tôi cho rằng đối với hầu hết mọi người, khóa ký được sử dụng thường xuyên hơn khóa mã hóa, vì hầu như tất cả các thư sẽ được ký nhưng chỉ một số sẽ được mã hóa. Trong trường hợp này, gpg-default là cách sai, như encr. Khóa dễ thay đổi trong khi khóa ký thì không.
Chaos_99

Vì bạn thường mã hóa bằng khóa chung của người khác, điều này nghe có vẻ hợp lý và có lẽ có những lý do chính đáng cho việc này mà hiện tại tôi không biết.
Daniël W. Crompton

Bạn đúng rồi. Vui lòng trao đổi "mã hóa" với "giải mã" trong bình luận của tôi. Nhưng điểm vẫn còn hiệu lực. Bạn ký thường xuyên hơn thì bạn DEcrypt. Tôi đã hỏi câu hỏi này để tìm hiểu chính xác về "lý do chính đáng" mà bạn đã đề cập.
Chaos_99

1
Cả khóa chính cũng như khóa phụ đều là khóa PAIRS hợp lệ với khóa chung và khóa riêng. Chữ viết tắt của chủ riêng là 'giây', cho khóa phụ riêng 'ssb'. Cả hai có thể được nhìn thấy với gpg --list-secret-keys. Các danh sách được cung cấp ở trên chỉ hiển thị các khóa công khai được trả về bởi gpg --list-keys.
Chaos_99

1
"Bạn càng sử dụng khóa, bạn càng rò rỉ thông tin về khóa" bạn có nguồn nào cho khiếu nại đó không?
GnP

0

Nếu bạn tạo khóa GPG mới, theo mặc định, bạn sẽ nhận được cặp khóa chính chỉ ký và một cặp khóa phụ chỉ mã hóa.

Tin nhắn có thể là:

  • không dấu và không được mã hóa
  • đã ký và không được mã hóa
  • không dấu và mã hóa
  • đã ký và mã hóa

và có những cách sử dụng cho từng trường hợp đó, tùy thuộc vào những gì bạn đang cố gắng thực hiện với việc ký và mã hóa.

Nếu bằng cách ký, bạn đang thiết lập danh tính / chứng thực và bằng cách mã hóa bạn đang đặt tin nhắn ở chế độ riêng tư, việc có thể mã hóa nhưng không ký sẽ cho bạn khả năng gửi một tin nhắn không nhất thiết phải liên quan đến danh tính của bạn hoặc được chứng thực bởi bạn. Bạn sẽ muốn các khóa riêng biệt trong trường hợp này.


2
Sửa lỗi cho tôi nếu tôi sai, nhưng tôi tin rằng, khi bạn mã hóa tin nhắn, bạn sử dụng khóa người nhận (công khai), vì vậy, một khi nó rời khỏi tay bạn, nó không thể truy nguyên được bạn. Khóa mã hóa của bạn là để người khác gửi tin nhắn được mã hóa cho bạn.
Scott

@ Hủy bỏ có, nhưng hầu hết mọi người thường có một bộ khóa mặc định để họ có thể đọc bất cứ thứ gì trong hộp thư đi của họ và thường để chỉ định một chữ ký mặc định. Mặc dù trong những trường hợp đó, ID khóa của khóa chính / chứng nhận được sử dụng để chọn khóa con chính xác.
Bến
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.