{{Infobox software
| name = Linux統一密鑰設置
| logo =
| logo size =
| logo caption =
| logo alt =
| screenshot = File:Debian Graphical Installer Partman-auto init automatically partition 1.png
| caption = Debian安裝程式,顯示了使用整個磁盤,設定LVM並將之使用LUKS加密的選項
| screenshot alt =
| collapsible =
| author =
| developer =
| released =
| discontinued =
| latest release version =
| latest release date =
| programming_language = C语言
| operating system = 見#作業系統支援
| platform =
| size =
| language =
| language footnote =
| genre = 磁盘加密
| license = GNU宽通用公共许可证;}-第2.1版
| alexa =
| standard =
}}
Linux統一密鑰設置(,縮寫:LUKS)是由在2004年爲Linux開發的磁盘加密規範。LUKS實現了可用於各種工具上的跨平臺標準磁盘加密格式,促進了不同工具之間的兼容性和互操作性,確保它們都以安全和統一的方式實施密碼管理。
簡介
LUKS的用途是加密设备文件系统。被加密的內容無需是某種格式,因此任何文件系統都可以被加密,甚至包括虛擬記憶體分區。在每個已加密的磁碟的頭部,均有未加密的部分用以承載加密密鑰以及諸如加密類型和密鑰大小等加密參數。
磁碟頭部承載的加密密鑰是LUKS和的主要分別。LUKS允許使用多個不同的密碼解密同一個磁碟,也可以隨時輕易的修改或移除之。但是如果磁碟頭部被損壞,則不可能復原被加密的資料。
加密的過程使用了多層加密:首先,資料被主密鑰加密,然後主密鑰被複製多份,分別被不同的用戶密鑰加密,最後被加密的主密鑰均被儲存到磁碟中。通常,用戶密鑰是密碼片語,但其他加密方式例如OpenPGP公开密钥或者X.509數碼證書也可使用。PGP公开密钥可以與被連接到主機的OpenPGP-{zh-cn:智能卡; zh-sg:智慧卡; zh-tw:智慧卡; zh-hk:智能卡、聰明卡;}-合併使用。這種分層加密方法被稱爲TKS1。
LUKS有兩個版本:LUKS1以及LUKS2。LUKS1默認使用PBKDF2加密,而LUKS2默認使用Argon2;LUKS2也具備對磁碟頭部損壞的彈性。在兩個LUKS版本之間切換或許可能,但某些功能(例如Argon2)未必能在LUKS1上使用。
可用的加密算法取決於內核的支持。支持所有LUKS支持的加密算法,可以作爲散列的後端。默認加密算法由作業系統決定。LUKS1使用一種名爲AFsplitter的反電腦鑑證技術,以保護文件以及確保文件能夠被。
在LVM上使用LUKS
邏輯捲軸管理員(LVM)可以與LUKS並用。
; LUKS加密的LVM: 類似直接分割一個LUKS加密卷,LUKS可以直接加密整個LVM物理卷,允許之中的所有邏輯卷被單一密鑰加密。LVM物理卷的架構在解密之前不可見。
; LUKS加密的LVM邏輯卷: 如果LUKS被用於加密單一LVM邏輯卷,其可以分佈於多個物理卷上。LVM物理卷的架構在解密之前已經可見。
對整個磁盤加密
LUKS常用於對整個磁盤加密,包括加密作業系統的根目錄,以保護所有資料免被具有物理存取權限的攻擊者或存取或修改。}}但是,第一階段引導程序以及EFI系统分区無法被如此加密。
作業系統支援
LUKS的参考实现是在Linux上運行的修改版cryptsetup,並使用dm-crypt作爲加密後端。在Microsoft Windows,LUKS加密的磁盤以前可以通過LibreCrypt存取,但已因安全漏洞而棄用;現在則可以通過适用于Linux的Windows子系统使用。DragonFly BSD支援LUKS。
安裝程序支援
部分Linux發行版的安裝程序可以在安裝時對整個磁盤加密,包括,Ubiquity以及Debian安裝程式。
磁碟格式
LUKS磁碟頭是向前兼容的,新版的LUKS可以讀取舊版LUKS的磁碟頭。
LUKS2
LUKS2設備以二進制標頭開頭,旨在讓blkid更容易進行識別。LUKS2磁碟頭的所有字串資料均是以null標記完結的字符串。JSON資料區緊接在二進制標頭後,當中儲存了LUKS的設定、密鑰以及加密細節。LUKS2密鑰槽的二進制格式與LUKS1大致相似,但允許個別密鑰槽的算法(例如不同的PBKDF)。LUKS2包含另一種密鑰以在在重新加密過程中斷的情況下允許冗餘。兩個方法所適用的命令語法相近:
# 使用 cryptsetup
cryptsetup reencrypt /dev/sda1
# 使用 cryptsetup-reencrypt
cryptsetup-reencrypt /dev/sda1
參見
*
備註
參考來源
外部連結
*
*[https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions 常見問答]
*[https://github.com/t-d-k/librecrypt LibreCrypt:在Windows上的實現]
*[https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification LUKS1規格]
*[https://gitlab.com/cryptsetup/cryptsetup/blob/master/docs/on-disk-format-luks2.pdf LUKS2規格]
评论 (0)