世界上有兩種密碼:一種是防止你的小妹妹偷看你的文件;另一種是防止當局閱讀你的文件. > > ? —— Bruce Schneier《應用密碼學》 #### 上篇鏈接: [2021年,用更現代的方法使用PGP(上)](https://ulyc.github.io/2021/01/13/2021年-用更現代的方法使用PGP-上/) ## 三、安全使用和備份 ### 準備 為了" />
摘要:世界上有兩種密碼一種是防止你的小妹妹偷看你的文件另一種是防止當局閱讀你的文件應用密碼學上篇鏈接年,用更現代的方法使用上三安全使用和備份準備為了安全性,建議在一臺斷網的或者系統上生成你的密鑰對。
世界上有兩種密碼:一種是防止你的小妹妹偷看你的文件;另一種是防止當局閱讀你的文件.? —— Bruce Schneier《應用密碼學》
為了安全性,建議在一臺斷網的Linux或者BSD系統上生成你的密鑰對。
特別推薦使用 Tails (boum.org)發行版,系統自帶gpg和paperkey 等工具 可以確保全程斷網操作 同時此系統重啟會擦除所有內容,還免去了擦除密鑰的麻煩。
需要工具:
我的備份策略:
主密鑰備份建議備份在一個全盤加密的U盤中,然后放在一個絕對安全的地方。
主密鑰不建議導入智能卡設備,因為智能卡的使用場景是隨身攜帶,隨時取用,雖然智能卡中的密鑰無法導出,但是隨身攜帶增加了丟失的風險,主密鑰一旦丟失,將會非常麻煩。
如果是土豪,當然導入智能卡中更好,因為智能卡中密鑰無法導出,只不過這個智能卡不能再隨身攜帶,而同樣應該在一個安全的地方, 不到萬不得已不再取用, 不過這樣有些浪費,也是我不推薦的理由。
你可以將主私鑰加密后上傳到網盤或其他線上服務。
又是斷網操作,又是非對稱算法,還要好好保存一份私鑰,這一套流程走下來你也發現了跟數字貨幣的相似性,很多備份方式都可以借鑒他們的思路,比如上面網盤存儲就是數字貨幣熱錢包的思路。
冷錢包很經典的一種方式,就是將私鑰寫/打印在紙上, 當然我們也可以借鑒,不過若你想將這一眼望不到頭的私鑰抄下來, 或者打印下來,將來需要恢復的時候再一個個輸入進電腦,顯然不現實。
(示例私鑰的一部分,用完即廢,如果是你自己的私鑰,打死也不要給別人看)
比如比特幣, 私鑰長這樣:
5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss # 這么短很容易抄寫和輸入
同樣是非對稱算法為什么PGP的私鑰就長這么多呢?
因為他們用的算法不同,比特幣默認使用的是ECDSA的 secp256k1算法, 該算法只是用來簽名和認證,并不用來加密(很多科普文章會說這是加密算法,比特幣的算法也可以用來加密,這是錯的,比特幣之所以有時被稱作加密貨幣只是因為它依賴了密碼學中的非對稱算法,并不是它能加密...),PGP默認的是RSA算法,可以同時用來簽名和加密,前面說過目前RSA密鑰長度不小于2048 bit才安全,而且PGP導出的私鑰中不止密鑰信息,還包含了全部的公鑰信息,UID,子密鑰信息,以及設置密碼時的混淆。
Linux下有一個工具叫做paperkey
, 可以用來消去私鑰中 冗余的公鑰信息,極大減少私鑰長度,然后可以將精簡過的私鑰(ba
注意:
- 既然決定用PaperKey, 還是不要使用網絡打印機了,
- paperkey這個工具在Tails新版中是默認軟件
- paperkey 手冊中推薦 恢復私鑰時使用OCR掃描, 而大部分OCR服務都要聯網, 請注意這點。
密鑰只是一段信息,理論上可以放在其他任何可以存儲信息的介質中,例如光盤,隱寫在圖片中, 寫入IC卡 , 紋身,, X光片 ,背下來 等等等等,可以發揮你的想象力。
請在你信任的電腦上使用子密鑰,主密鑰不到萬不得已不要拿出來用,如果你將子密鑰放在智能卡中使用,可以忽略這部分。
子密鑰可以放在移動存儲設備上直接使用,而無需拷貝/導入到電腦使用, 使用方法:
gpg --homedir [你的存儲設備的路徑]
在為什么安全?一節中 提到PGP支持很多算法,可是前面我們生成密鑰時,只見到了很少的幾種。
因為gpg還有一種隱藏模式---- 專家模式,生成密鑰時可以使用
gpg --expert --full-gen-key
# 輸出
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
(14) Existing key from card
就可以看到多出來不少選項,其中ECC算法 全稱Elliptic Curve Cryptography 橢圓曲線密碼算法。
上面我選了 9 繼續
Please select which elliptic curve you want
(1) Curve 25519
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool P-256
(7) Brainpool P-384
(8) Brainpool P-512
(9) secp256k1 # 比特幣使用的算法
其中美國國家標準與技術研究院(NIST)系列橢圓曲線、Brainpool系列橢圓曲線、secp256k1都存在不同的安全風險,不建議使用。
可以發現這里少了(2) 其實這里還有一些隱藏算法沒有列出,可通過如下命令查看
gpg --list-config --with-colons curve
# 輸出
cfg:curve: cv25519;ed25519;nistp256;nistp384;nistp521;brainpoolP256r1;brainpoolP384r1;brainpoolP512r1;secp256k1
上面缺少的(2)對應的就是ed25519 ,是一種簽名算法,你選擇 (1)時, 主密鑰用來簽發和簽名 用的就是ed25519,自動生成的用來加密的子密鑰 算法 是cv25519 。
ECC算法比RSA的優勢在于,在同等強度下,ECC的密鑰長度要小的多,性能也會好一些。 RSA算法的PGP私鑰 通過paperkey精簡過后一般還會有50+行HEX數據,如果使用的是ECC算法生成的話, 可以減到8行以內,手抄完全沒問題。
RSA算法的優勢在于大部分硬件設備的兼容性比較好,比如 YubiKey 5 支持 RSA 4096,但不支持 Curve 25519。而且多數設備都對RSA算法提供了硬件加速。
PS:
查閱資料時發現 ,中文博客里被很多人抄來抄去的一句話:
ed25519 加密解密很快,生成時間短而且安全性更高,rsa 則加密解密稍慢,生成時間長,安全性沒有 ed25519 高,只是 rsa 基本都是默認,所以用的人更多,但是建議轉換為 ed25519 網站軟件現在基本都支持了.
這句話是 錯的, ed25519是 EdDSA 算法的一種,只是一種簽名算法, EdDSA 全稱Edwards-curve Digital Signature Algorithm,愛德華橢圓曲線實現的數字簽名算法。
上面的話多出現在替換SSH默認的RSA算法為ed25519的文章中出現。其實SSH協議中的非對稱算法 并不是用來加解密信息的,而只是用來認證,正確的說法是ed25519簽名和認證的速度很快。
再者, 不提密鑰長度說安全性都是耍流氓 ,RSA 4096 的安全強度是要 好于 ed25519 的。
uid 即 user id , 由三個部分組成:
UID的性質:
一般來說,操作UID只有主密鑰有權限操作, 后面會提到UID可以是偽造,然后提交到服務器的。
gpg --edit-key {keyid/uid}
gpg> adduid # 進入交互界面后 輸入 help 可以查看支持的操作
# 輸入你要追加的信息
使用UID的場景有哪些呢? 如果你使用一個不常用的郵箱作為你的github/gitlab賬號,你主要的郵箱生成的PGP 密鑰就不能用來簽名了。
這時候為了保護隱私 且 只要管理一個密鑰,就可以 在 Github設置里把 Keep my email addresses private勾上,將為你生成的隨機郵箱添加到 uid中, 這樣就只需要管理一個PGP密鑰,可以同時為你不同的Git賬號簽名。
跟添加UID差不多, 在gpg交互 界面 輸入 addphoto
就可以, 想要查看的話 輸入showphoto
。
只要你PGP的uid包含 git config 中的郵箱, 使用
git commit -S -m your commit message
即可簽名。
gpg --expert --edit-key {keyid/uid} ## 使用專家模式 不然沒有認證的選項
gpg> addkey
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(12) ECC (encrypt only)
(13) Existing key
Your selection? 8 ## 選8 RSA 自定義權限
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign Encrypt ## 這里顯示默認有Sign和Encrypt兩種權限
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? S ## 關閉Sign
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Encrypt
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? E ## 關閉Encrypt
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions:
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? A ## 開啟Authenticate
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Authenticate
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? Q ## 退出
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 1y ## 有效期
Key expires at Tue Jan 7 11:33:54 2020 CST
Is this correct? (y/N) y
Really create? (y/N) y
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard move the mouse utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
sec rsa2048/7DEFA5351BCE3C55
created: 2019-01-07 expires: 2021-01-06 usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/2FCE923F8ECB63F6
created: 2019-01-07 expires: 2021-01-06 usage: E
ssb rsa4096/19D32A8839DCAA1F
created: 2019-01-07 expires: 2020-01-07 usage: A
[ultimate] (1). hhhhh
gpg> save ## 保存
編輯bashrc
文件, 將默認ssh 的agent替換為 gpg-agnet
# ~/.bashrc
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
echo UPDATESTARTUPTTY | gpg-connect-agent 1> /dev/null
編輯~/.gnupg/gpg-agent.conf
文件增加:
# ~/.gnupg/gpg-agent.conf
enable-ssh-support
接著:
? gpg -k --with-keygrip
/Users/root/.gnupg/pubring.kbx
-----------------------------
pub rsa2048 2019-01-07 [SC] [expires: 2021-01-06]
8A9FC025A44AA4824C1F4AE27DEFA5351BCE3C55
Keygrip = BEFCCDFE36CC5442B888B8459265C68B60A4ABD2
uid [ultimate] hhhhh
sub rsa2048/0xF681DAEBBAB82124 2019-01-07 [E] [expires: 2021-01-06]
Keygrip = 422922ACFD099E79863D93B93333528F225C90FC
sub rsa2048/0x501DEDC36BD409C8 2019-01-07 [A] [expires: 2020-01-07]
Keygrip = 999A87A51CFE82DAA494BEB42F585051307F9E33
選擇你新加的帶有[A]標志的那個新的子密鑰的 keygrip 即999A87A51CFE82DAA494BEB42F585051307F9E33
加入到~/.gnupg/sshcontrol
文件, 運行ssh-add -l
查看是否已經加入。
然后
gpg --export-ssh-key {keyid}!
注意,這里不能用 uid 不然會提示:
gpg: key "uid" not found: Unusable public key
gpg: export as ssh key failed: Unusable public key
這里只能填子密鑰的 key id這個例子里就是 0x501DEDC36BD409C8
。
輸出的 ssh public key 放到你的服務器上的~/.ssh/authorized_keys
中, 重啟shell 就可以連接了。
本文來自 UCloud后臺研發工程師
博客地址:https://ulyc.github.io/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/126020.html
摘要:上篇鏈接年,用更現代的方法使用上年,用更現代的方法使用中公鑰的發布與交換討論公鑰安全交換的中文文章比較少,而這一環是整個加密體系的重中之重。年月,有攻擊者惡意向公鑰服務器提交了對兩個著名網友的簽名背書。此事件中的受害者的證書就被簽名了次。上篇鏈接:2021年,用更現代的方法使用PGP(上)2021年,用更現代的方法使用PGP(中)PGP 公鑰的 發布 與 交換討論公鑰安全交換的中文文章比較少...
摘要:作為一個老牌的反核能活躍分子,齊默曼為了讓所有有相似傾向的人們可以安全的使用并且安全存儲消息和文件而創造了加密。建議為不同環境,不同用途都單獨生成子密鑰,互不干擾。世界上有兩種密碼:一種是防止你的小妹妹偷看你的文件;另一種是防止當局閱讀你的文件.? ...
摘要:一密碼學的術語分類術語密碼體制明文空間密文空間密鑰空間加密算法和解密算法五部分構成。柯克霍夫原則是現代密碼學設計的基本原則。特性散列函數特性消息的長度不受限制。 一、密碼學的術語、分類 1、術語 密碼體制:明文空間、密文空間、密鑰空間、加密算法和解密算法五部分構成。 密碼協議:有時稱為安全協議,指以密碼學為基礎的消息交換的通信協議,目的是在網絡環境 中提供各種...
摘要:目前,京東云金秋上云特惠也只是針對企業用戶的,云主機核限量秒殺僅元年。除非有相反證據證明外,用戶參與活動所獲得的全部權益和相應責任,均歸屬于參與活動的該京東云賬號所對應的實名認證主體。2021京東云金秋上云特惠早就開始了!一直忘記給大家傳達,不好意思哦,不過京東云體量小,買的個人用戶不并不多。目前,2021京東云金秋上云特惠也只是針對企業用戶的,云主機2核4G限量秒殺,僅155元/年。大家可...
閱讀 3514·2023-04-25 20:09
閱讀 3720·2022-06-28 19:00
閱讀 3035·2022-06-28 19:00
閱讀 3058·2022-06-28 19:00
閱讀 3131·2022-06-28 19:00
閱讀 2859·2022-06-28 19:00
閱讀 3014·2022-06-28 19:00
閱讀 2610·2022-06-28 19:00