Linux統一密鑰設置
Linux統一密鑰設置(英語:,縮寫:LUKS)是由在2004年爲Linux開發的磁盘加密規範。LUKS實現了可用於各種工具上的跨平臺標準磁盘加密格式,促進了不同工具之間的兼容性和互操作性,確保它們都以安全和統一的方式實施密碼管理。[2]
Debian安裝程式,顯示了使用整個磁盤,設定LVM並將之使用LUKS加密的選項 | |
原作者 | |
---|---|
当前版本 |
|
编程语言 | C语言 |
操作系统 | 見#作業系統支援 |
类型 | 磁盘加密 |
许可协议 | 第2.1版 |
网站 | gitlab |
簡介
LUKS的用途是加密设备文件系统。被加密的內容無需是某種格式,因此任何文件系統都可以被加密,甚至包括虛擬記憶體分區。[3]在每個已加密的磁碟的頭部,均有未加密的部分用以承載加密密鑰[註 1]以及諸如加密類型和密鑰大小等加密參數。[4][5]
磁碟頭部承載的加密密鑰是LUKS和的主要分別。LUKS允許使用多個不同的密碼解密同一個磁碟,也可以隨時輕易的修改或移除之。但是如果磁碟頭部被損壞,則不可能復原被加密的資料。[6]
加密的過程使用了多層加密:首先,資料被主密鑰加密,然後主密鑰被複製多份,分別被不同的用戶密鑰加密,最後被加密的主密鑰均被儲存到磁碟中。[7]通常,用戶密鑰是密碼片語,但其他加密方式例如OpenPGP公开密钥或者X.509數碼證書也可使用。PGP公开密钥可以與被連接到主機的OpenPGP合併使用。[8][9]這種分層加密方法被稱爲TKS1。[10][11]
LUKS有兩個版本:LUKS1以及LUKS2。LUKS1默認使用PBKDF2加密,而LUKS2默認使用Argon2;LUKS2也具備對磁碟頭部損壞的彈性。[12]在兩個LUKS版本之間切換或許可能,但某些功能(例如Argon2)未必能在LUKS1上使用。[4]LUKS2使用JSON作爲其元數據儲存格式。[4][13]
可用的加密算法取決於內核的支持。Libgcrypt支持所有LUKS支持的加密算法,可以作爲散列的後端。[14]默認加密算法由作業系統決定。[15]LUKS1使用一種名爲AFsplitter的反電腦鑑證技術,以保護文件以及確保文件能夠被徹底抹除。
在LVM上使用LUKS
作業系統支援
LUKS的参考实现是在Linux上運行的修改版cryptsetup
,並使用dm-crypt
作爲加密後端。在Microsoft Windows,LUKS加密的磁盤以前可以通過LibreCrypt存取,[21]但已因安全漏洞而棄用;[22][23]現在則可以通過适用于Linux的Windows子系统使用。[24]DragonFly BSD支援LUKS。[25]
磁碟格式
LUKS磁碟頭是向前兼容的,新版的LUKS可以讀取舊版LUKS的磁碟頭。
LUKS2
LUKS2設備以二進制標頭開頭,旨在讓blkid更容易進行識別。LUKS2磁碟頭的所有字串資料均是以null標記完結的字符串。JSON資料區緊接在二進制標頭後,當中儲存了LUKS的設定、密鑰以及加密細節。LUKS2密鑰槽的二進制格式與LUKS1大致相似,但允許個別密鑰槽的算法(例如不同的PBKDF)。LUKS2包含另一種密鑰以在在重新加密過程中斷的情況下允許冗餘。[13]
使用範例
本章節使用LUKS的参考实现cryptsetup
來示範操作。
加密裝置/dev/sda1
:
# cryptsetup luksFormat /dev/sda1
解密已被LUKS加密的同一磁碟,而name
是映射的設備名稱:
# cryptsetup luksOpen /dev/sda1 name
參見
- 磁碟加密軟件的比較
參考來源
- https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.3/v2.3.4-ReleaseNotes.
- Fruhwirth, Clemens. (PDF). 2018-01-20 [2021-09-23]. (原始内容存档 (PDF)于2023-04-12).
- . Fedora Docs. [6 May 2022]. (原始内容存档于2023-06-10).
- . Red Hat Customer Portal. [2023-04-12]. (原始内容存档于2023-04-17).
- . 27 February 2019 [2023-04-12]. (原始内容存档于2023-04-12).
- . Linode. [2023-04-12]. (原始内容存档于2023-04-17).
- Bossi, Simone; Visconti, Andrea. (PDF). 2015 [2023-04-12]. (原始内容存档 (PDF)于2021-05-06).
- . [6 May 2022]. (原始内容存档于2023-05-21).
- . 20 April 2014 [2023-04-12]. (原始内容存档于2023-05-18).
- . GitLab. [2023-04-12]. (原始内容存档于2023-04-12) (英语).
- Fruhwirth, Clemens. (PDF). Draft. 2004-07-15 [2021-09-23]. (原始内容存档 (PDF)于2023-04-12).
- . 25 September 2021 [2023-04-12]. (原始内容存档于2023-04-12).
- (PDF). [2023-04-12]. (原始内容存档 (PDF)于2023-04-12).
- – Linux系统管理员工具(Administration and Privileged Commands)手册页
- . eForensics. 21 August 2020 [2023-04-12]. (原始内容存档于2023-06-04).
- . [6 May 2022]. (原始内容存档于2023-06-10).
- . [2023-04-12]. (原始内容存档于2023-04-17).
- . 12 September 2014 [2023-04-12]. (原始内容存档于2023-04-17).
- . wiki.archlinux.org. [2023-04-12]. (原始内容存档于2023-06-11).
- . systemd. [2023-04-12]. (原始内容存档于2023-06-08).
- . GitHub. 27 July 2022 [2023-04-12]. (原始内容存档于2018-05-16).
- . GitHub. 30 September 2015 [2023-04-12]. (原始内容存档于2023-03-20).
- . GitHub. 7 October 2015 [2023-04-12]. (原始内容存档于2023-03-20).
- . Microsoft Developer Blogs. 16 April 2021 [2023-04-12]. (原始内容存档于2023-05-22).
- . [6 May 2022]. (原始内容存档于2023-05-13).
- Michael Larabel. . Phoronix. 8 May 2016 [2023-04-12]. (原始内容存档于2022-05-21).
- . Make Tech Easier. 13 January 2017 [2023-04-12]. (原始内容存档于2023-05-11).
- . Debian Wiki. [6 May 2022]. (原始内容存档于2023-04-12).
- . man7.org. [2023-04-12]. (原始内容存档于2023-05-10).