精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:安全企業動態 → 正文

如何用Nitrokey USB智能卡為Linux環境保駕護航?

責任編輯:editor005 作者:布加迪 |來源:企業網D1Net  2016-01-21 14:03:10 本文摘自:51CTO

由于網上安全風險越來越大,簡單的一個步驟式安全不再足以應對,于是人們求助于多層安全,以挫敗針對其數字資產和網上隱私的越來越狡猾的攻擊。金融行業及其他企業環境經常采用的一種高級的安全防御機制就是基于硬件的保護:一種防止有人做手腳的物理安全密鑰(又叫“安全令牌”或“硬件令牌”)為秘密的軟件密鑰或登錄信息充當保護層。基于硬件的安全方法在諸多環境下很有用,比如說實施雙因子驗證、VPN訪問、安全密碼庫之類的機制。

如果你是自己動手一族(DY),可能忍不住想使用現成的USB拇指驅動器,制作一把自己的基于USB的安全密鑰。然而,大眾化的USB驅動器天生就很容易受到專門針對原裝USB固件可編程特性的病毒或惡意軟件的攻擊。我個人不會將自己的私有密鑰托付交給區區5美元的USB拇指驅動器。

最近,我無意中發現了一款基于USB的安全密鑰硬件,名為Nitrokey(之前叫“Crypto Stick”),確實很喜歡它。Nitrokey可不是一種便宜的USB存儲棒,但20美元至50美元的價格還算合理;考慮到其廣泛的一體化安全功能,我認為并非價格過高。我在本文中將專門探討Nitrokey Pro這款硬件,并介紹了實際的使用場合。

Nitrokey Pro是啥東東?

如何用Nitrokey USB智能卡為Linux環境保駕護航?

簡而言之,Nitrokey Pro是一種防止有人做手腳的、用PIN保護的安全密鑰存儲硬件,采用USB接口。它使用嵌入式智能卡,實現了諸多開放的安全標準,比如OpenPGP協議、S/MIME、HOTP(基于HMAC的一次性密碼)和TOTP(基于時間的一次性密碼)。因而,一旦你將秘密密鑰存儲到Nitrokey Pro上,它就能夠在硬件本身上面簽名、加密、解密和驗證,因而你的秘密密鑰永遠不會泄露給與智能卡相連接的計算機。這樣你需要在靠不住(可能有大量惡意軟件)的第三方計算機上運行各種安全任務時,就可以高枕無憂了。Nitrokey Pro生成的OATH一次性密碼與Gmail、Dropbox、AWS及其他許多網站兼容。Nitrokey Pro還內置了安全密碼庫,萬一你信不過任何軟件密碼管理工具,就可以將很難記住的登錄信息存儲到防止有人做手腳的硬件上。

拋開所有這些優點不說,我最喜歡Nitrokey的地方在于其開放性。正如它所說“專有安全”并不安全,這激勵著Nitrokey的人員向開源社區同時開放其產品的硬件和軟件,所以它們可以接受審計和審查,以查找任何安全漏洞。你可以在其官方Github軟件庫(https://github.com/Nitrokey/)所有Nitrokey智能卡產品系列的完全開放的PCB硬件設計、固件和軟件源代碼。

我在下面將介紹如何在Linux計算機上安裝Nitrokey Pro,并演示如何在幾種實際場景下使用它。

在Linux上安裝Nitrokey Pro

想在Linux上安裝Nitrokey Pro,先要卡插入到計算機的USB端口上。如果你在運行最新的Linux發行版,它應該可以輕松地為該卡找到必要的USB設備驅動程序。使用lsusb命令,證實Nitrokey Pro在你的系統上可見,這種情況下該卡會顯示為“Clay Logic”。

$ lsusb

如何用Nitrokey USB智能卡為Linux環境保駕護航?

一旦你證實了該USB設備已成功,就要為Nitrokey Pro USB設備創建udev規則,重啟udev服務,如下所示。

$ wget https://www.nitrokey.com/sites/default/files/40-nitrokey.rules$sudo cp 40-nitrokey.rules /etc/udev/rules.d/

$ sudo service udev restart

下一步,下載和安裝Nitrokey App(https://www.nitrokey.com/download)果你使用Nitrokey Pro來生成一次性密碼,或者將它用作密碼管理工具,就需要這個專用的GUI應用程序。不過,在另外大多數情況下,不需要Nitrokey App就可以使用Nitrokey USB密鑰。

想把Nitrokey應用程序安裝到Linux桌面上:

在基于Debian的系統上:

$ sudo apt-get install gdebi-core

$ sudo gdebi nitrokey-XXXXXX.deb

在基于紅帽的系統上:

$ sudo rpm -ivh nitrokey-XXXXXX.rpm

安裝好Nitrokey App后,啟動該應用程序,如下所示。

$ nitrokey-app

如果該應用程序與Nitrokey USB硬件成功對上號,它就會顯示“Nitrokey已連接”桌面通知。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

Nitrokey Pro智能卡使用兩個PIN來加以保護:用戶PIN(默認值:123456)和管理員PIN(默認值:12345678)。輸入那些PIN要小心,因為用戶PIN輸錯三次以上會導致卡被鎖住,你無法使用卡(除非管理員PIN覆蓋用戶PIN),而管理員PIN輸錯三次以上會徹底破壞USB密鑰硬件,不可修復。萬一智能卡落到壞人手里,這種嚴格的基于PIN的硬件保護必不可少。

一旦Nitrokey Pro在你的系統上可以訪問,要做的頭一件事就是更改用戶PIN/管理員PIN。為此,鼠標右擊桌面頂部的Nitrokey圖標,進入到“配置”菜單。在那里,你就能夠同時更改用戶PIN和管理員PIN。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

  請注意:還可以借助gpg命令來進行PIN管理,我在下面會有介紹。

使用GnuPG管理Nitrokey Pro

作為一款與標準兼容的OpenPGP卡,Nitrokey Pro實際上可以使用GnuPG來管理。硬件上執行的大部分安全功能(比如生成/存儲GPG密鑰、加密/解密文件和簽名消息等)可以由gpg命令來加以控制。所以,即便它連接無桌面的服務器,也應該可以輕松管理Nitrokey Pro,沒有任何問題。

比如說,輸入下面這個gpg命令,查看關于已連接USB安全密鑰的信息。

$ gpg --card-status

如何用Nitrokey USB智能卡為Linux環境保駕護航?

與你在Nitrokey應用程序上更改用戶PIN/管理員PIN的方法相似,你也可以使用gpg命令來更改PIN:

$ gpg --change-pin

如何用Nitrokey USB智能卡為Linux環境保駕護航?

現在為了測試安全功能,不妨先將你的GPG密鑰存儲到Nitrokey USB硬件上。請注意:你可以將現有的GPG密鑰移到Nitrokey卡上。這里不妨從頭開始創建一個新的GPG密鑰。

為此,輸入命令:

$ gpg --card-edit

在“gpg/card>”提示符處,輸入“admin”后按回車鍵。然后,你要輸入管理員模式;在這種模式下,你可以執行各種管理任務,包括生成密鑰。輸入“help”會顯示所有可用的管理員命令。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

想生成新的GPG密鑰,輸入“generate”命令。這會讓你完成一系列標準步驟,生成主密鑰和子密鑰,用于簽名、加密和驗證。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

密鑰生成完畢后,輸入“list”命令即可查看已生成的密鑰。你還可以運行gpg命令,查看同樣的信息:

$ gpg --card-status

如何用Nitrokey USB智能卡為Linux環境保駕護航?

你會看到上面生成的三個不同的子密鑰。簽名密鑰是只簽名的子密鑰,用作主密鑰。加密密鑰是用于加密的子密鑰。最后,驗證密鑰并不由GnuPG直接使用,而是用于其他驗證用途,比如PAM驗證和SSH登錄。

一旦你生成了GPG密鑰,建議你在現有的PGP密鑰服務器上發布公共密鑰,那樣萬一別人想要安全地與你進行聯系,就可以使用你的電子郵件地址或密鑰ID,下載密鑰。下列命令將把你的公共密鑰上傳到密鑰服務器。“D7F6C175”是你公共密鑰的密鑰ID,上述密鑰信息里面就有它。把密鑰ID換成你自己的密鑰ID。

$ gpg --keyserver keys.gnupg.net --send-keys D7F6C175

現在,我們準備使用存儲在Nitrokey Pro上的GPG密鑰。在下文中,我將給出幾個例子,表明如何使用Nitrokey Pro智能卡。

Nitrokey Pro的第一種使用場合:文件加密和解密

最簡單的使用場合就是使用存儲在該USB硬件上的加密密鑰,加密和解密文件。

有人在使用你的GPG用戶ID(比如[email protected])加密文件后,給你發來了一個已加密文件,如下所示。

$ gpg -r [email protected] -e secure.txt

一旦你收到該文件,就可以使用“-d”選項來解密文件,只要存儲有秘密密鑰的Nitrokey卡插入到你的計算機上。

$ gpg -d secure.txt.gpg

請注意:會要求你輸入Nitrokey用戶PIN(不是GPG密鑰密碼),以便解密。要是沒有Nitrokey卡,你會遇到下列錯誤:

gpg: sending command `SCD PKDECRYPT' to agent failed: ec=5.99

gpg: encrypted with 2048-bit RSA key, ID E04A33F0, created 2015-12-21

"Dan Nanni "

gpg: public key decryption failed: general error

gpg: decryption failed: secret key not available

Nitrokey Pro的第二種使用場合:SSH驗證

你可以使用Nitrokey Pro智能卡用于SSH驗證。在這種情況下,你使用存儲在Nitrokey卡上的OpenPGP密鑰作為SSH密鑰,并依賴gpg-agent從Nitrokey卡獲取OpenPGP密鑰用于SSH登錄。不過默認情況下,OpenSSH客戶端會試著使用無法直接訪問智能卡硬件的ssh-agent獲取私密密鑰。因而,我們需要在基于密鑰的SSH驗證過程中將gpg-agent配置成臨時取代ssh-agent。

為此,我們需要先啟用gpg-agent中的SSH支持功能。在~/.gnupg/gpg-agent.conf中添加下面這一行。

1. enable-ssh-support

然后將下面幾行添加到~/.bashrc:

1. envfile="$HOME/.gnupg/gpg-agent.env"

2. if [[ -e "$envfile" ]] &&kill -0 $(grep SSH_AGENT_PID "$envfile" | cut -d= -f 2) 2>/dev/null; then

3. eval "$(cat "$envfile")"

4. else

5. eval "$(gpg-agent --daemon --write-env-file "$envfile")"

6. fi

7. export SSH_AUTH_SOCK

還建議禁用GNOME密鑰環(如果你使用它的話),因為GNOME密鑰環會干擾gpg-agent。

現在打開一個新的終端(或重新加載~/.bashrc),試著輸入下面這個命令,測試一下。

$ gpg-agent

如果gpg-agent正確設置,你應該會看到輸出信息,顯示為“gpg-agent: gpg-agent running and available”。

下一步,使用下面這個命令查明加密子密鑰ID。ECD8F07F是你自己的GPG密鑰ID,可以在“gpg --card-status”命令的輸出中找到它。把它換成你自己的密鑰ID。

$ gpg --edit-key ECD8F07F

如何用Nitrokey USB智能卡為Linux環境保駕護航?

輸出信息列出了與你的密鑰ID有關的所有可用子密鑰。標為“usage”的最后一列表明了每個子密鑰的角色:“S”代表簽名,“C”代表證書,“A”代表驗證,“E”代表加密。

在這個例子中,用于驗證的子密鑰ID是81398BBF。

使用gpgkey2ssh命令,借助驗證子密鑰ID,生成兼容的authorized_key字符串。

$ gpgkey2ssh 81398BBF >authorized_keys

證實authorized_keys的內容與下列命令的輸出內容一樣。

$ ssh-add -L

一旦這得到證實,將authorized_keys移到你想實現SSH訪問的遠程主機處的~/.ssh/authorized_keys。確保~/.ssh/authorized_keys的許可權限被設成0600。

為了測試基于密鑰的SSH驗證,你應該禁用遠程主機的SSH服務器處的密碼驗證。

最后,檢查Nitrokey智能卡插入到本地計算機的期間,你可以通過SSH訪問遠程主機。如果gpg-agent還沒有緩存你的秘密密鑰,會要求你輸入Nitrokey用戶PIN。如果你試圖在沒有Nitrokey卡的情況下實現SSH訪問,就會看到下列錯誤。

Permission denied (publickey).

Nitrokey Pro的第三種使用場合:為Dropbox網站登錄實現的雙因子驗證

Nitrokey Pro智能卡的另一種使用場合就是生成一次性密碼(OTP)。尤其是,Nitrokey Pro能夠生成基于時間的OTP或基于HMAC的OTP,它們與如今許多商業網站支持的雙因子驗證兼容。一次性安全代碼將由你之前安裝的那個Nitrokey應用程序來生成。

舉例說,讓我來介紹如何在Dropbox網站上使用Nitrokey Pro來設置雙因子驗證機制。

首先,登錄到你的Dropbox帳戶,啟用兩步驟驗證。選擇“mobile app”選項(而不是SMS選項)來接收安全代碼。最終,你將使用Nitrokey應用程序,而不是移動應用程序。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

  Dropbox網站隨后會啟用基于時間的驗證,并生成采用base32格式的秘密密鑰。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

打開Nitrokey應用程序的“配置”設置,進入到“OTP和密碼保險柜”菜單。在“OTP Slot配置”選項卡下方,啟用“TOTP”模式,選擇一個可用的TOTP slot(比如slot 1),將上述秘密密鑰拷貝到“秘密密鑰”空白處。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

最后一步是,Dropbox會讓你輸入由驗證應用程序生成的代碼。只要鼠標右擊Nitrokey應用程序圖標,然后選擇“密碼”菜單下方的“Dropbox”。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

然后,就會生成一次性密碼,并自動拷貝到剪貼板。

現在把存儲在剪貼板里面的OTP粘貼到Dropbox頁面的安全代碼空白處,這將完成兩步驟的驗證設置過程。現在,只要你需要用于Dropbox登錄的一次性安全代碼,就可以使用Nitrokey應用程序來生成一個。

結束語

我在本教程中介紹了一種名為Nitrokey Pro的基于USB的智能卡,及其幾種使用場合。除了我給出的三個例子外,Nitrokey Pro還有另外許許多多的使用場合(比如PAM驗證、電子郵件加密、硬盤加密、VPN訪問、PKI證書和密碼管理器)。Nitrokey網站維護有相當完備的說明文檔(https://www.nitrokey.com/documentation/applications),介紹了適用于Linux、Windows和MacOS X等平臺的這些使用場合,所以如果你有興趣的話,鼓勵你仔細閱讀一下。

正如我在開頭提到,USB Nitrokey的一大賣點就是其透明的開發過程。完全開放的硬件和完全開源的軟件讓其產品可以接受社區驅動的代碼審核和滲透測試的檢驗,這讓它們更加值得信賴,可以迅速發現任何安全漏洞,并迅速發布安全更新版,并促進與其他應用程序的集成。Nitrokey的人員恪守這種開放精神,計劃推出另一款名為Nitrokey Storage的產品(基本上為Nitrokey Pro增添了安全的海量存儲),一直在開展Indiegogo籌資活動,尋求資金上的支持。如果你想幫它一把,何不捐點錢支持它?

原文標題:How to secure your Linux environment with Nitrokey USB smart card

關鍵字:NitrokeyUSB設備

本文摘自:51CTO

x 如何用Nitrokey USB智能卡為Linux環境保駕護航? 掃一掃
分享本文到朋友圈
當前位置:安全企業動態 → 正文

如何用Nitrokey USB智能卡為Linux環境保駕護航?

責任編輯:editor005 作者:布加迪 |來源:企業網D1Net  2016-01-21 14:03:10 本文摘自:51CTO

由于網上安全風險越來越大,簡單的一個步驟式安全不再足以應對,于是人們求助于多層安全,以挫敗針對其數字資產和網上隱私的越來越狡猾的攻擊。金融行業及其他企業環境經常采用的一種高級的安全防御機制就是基于硬件的保護:一種防止有人做手腳的物理安全密鑰(又叫“安全令牌”或“硬件令牌”)為秘密的軟件密鑰或登錄信息充當保護層。基于硬件的安全方法在諸多環境下很有用,比如說實施雙因子驗證、VPN訪問、安全密碼庫之類的機制。

如果你是自己動手一族(DY),可能忍不住想使用現成的USB拇指驅動器,制作一把自己的基于USB的安全密鑰。然而,大眾化的USB驅動器天生就很容易受到專門針對原裝USB固件可編程特性的病毒或惡意軟件的攻擊。我個人不會將自己的私有密鑰托付交給區區5美元的USB拇指驅動器。

最近,我無意中發現了一款基于USB的安全密鑰硬件,名為Nitrokey(之前叫“Crypto Stick”),確實很喜歡它。Nitrokey可不是一種便宜的USB存儲棒,但20美元至50美元的價格還算合理;考慮到其廣泛的一體化安全功能,我認為并非價格過高。我在本文中將專門探討Nitrokey Pro這款硬件,并介紹了實際的使用場合。

Nitrokey Pro是啥東東?

如何用Nitrokey USB智能卡為Linux環境保駕護航?

簡而言之,Nitrokey Pro是一種防止有人做手腳的、用PIN保護的安全密鑰存儲硬件,采用USB接口。它使用嵌入式智能卡,實現了諸多開放的安全標準,比如OpenPGP協議、S/MIME、HOTP(基于HMAC的一次性密碼)和TOTP(基于時間的一次性密碼)。因而,一旦你將秘密密鑰存儲到Nitrokey Pro上,它就能夠在硬件本身上面簽名、加密、解密和驗證,因而你的秘密密鑰永遠不會泄露給與智能卡相連接的計算機。這樣你需要在靠不住(可能有大量惡意軟件)的第三方計算機上運行各種安全任務時,就可以高枕無憂了。Nitrokey Pro生成的OATH一次性密碼與Gmail、Dropbox、AWS及其他許多網站兼容。Nitrokey Pro還內置了安全密碼庫,萬一你信不過任何軟件密碼管理工具,就可以將很難記住的登錄信息存儲到防止有人做手腳的硬件上。

拋開所有這些優點不說,我最喜歡Nitrokey的地方在于其開放性。正如它所說“專有安全”并不安全,這激勵著Nitrokey的人員向開源社區同時開放其產品的硬件和軟件,所以它們可以接受審計和審查,以查找任何安全漏洞。你可以在其官方Github軟件庫(https://github.com/Nitrokey/)所有Nitrokey智能卡產品系列的完全開放的PCB硬件設計、固件和軟件源代碼。

我在下面將介紹如何在Linux計算機上安裝Nitrokey Pro,并演示如何在幾種實際場景下使用它。

在Linux上安裝Nitrokey Pro

想在Linux上安裝Nitrokey Pro,先要卡插入到計算機的USB端口上。如果你在運行最新的Linux發行版,它應該可以輕松地為該卡找到必要的USB設備驅動程序。使用lsusb命令,證實Nitrokey Pro在你的系統上可見,這種情況下該卡會顯示為“Clay Logic”。

$ lsusb

如何用Nitrokey USB智能卡為Linux環境保駕護航?

一旦你證實了該USB設備已成功,就要為Nitrokey Pro USB設備創建udev規則,重啟udev服務,如下所示。

$ wget https://www.nitrokey.com/sites/default/files/40-nitrokey.rules$sudo cp 40-nitrokey.rules /etc/udev/rules.d/

$ sudo service udev restart

下一步,下載和安裝Nitrokey App(https://www.nitrokey.com/download)果你使用Nitrokey Pro來生成一次性密碼,或者將它用作密碼管理工具,就需要這個專用的GUI應用程序。不過,在另外大多數情況下,不需要Nitrokey App就可以使用Nitrokey USB密鑰。

想把Nitrokey應用程序安裝到Linux桌面上:

在基于Debian的系統上:

$ sudo apt-get install gdebi-core

$ sudo gdebi nitrokey-XXXXXX.deb

在基于紅帽的系統上:

$ sudo rpm -ivh nitrokey-XXXXXX.rpm

安裝好Nitrokey App后,啟動該應用程序,如下所示。

$ nitrokey-app

如果該應用程序與Nitrokey USB硬件成功對上號,它就會顯示“Nitrokey已連接”桌面通知。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

Nitrokey Pro智能卡使用兩個PIN來加以保護:用戶PIN(默認值:123456)和管理員PIN(默認值:12345678)。輸入那些PIN要小心,因為用戶PIN輸錯三次以上會導致卡被鎖住,你無法使用卡(除非管理員PIN覆蓋用戶PIN),而管理員PIN輸錯三次以上會徹底破壞USB密鑰硬件,不可修復。萬一智能卡落到壞人手里,這種嚴格的基于PIN的硬件保護必不可少。

一旦Nitrokey Pro在你的系統上可以訪問,要做的頭一件事就是更改用戶PIN/管理員PIN。為此,鼠標右擊桌面頂部的Nitrokey圖標,進入到“配置”菜單。在那里,你就能夠同時更改用戶PIN和管理員PIN。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

  請注意:還可以借助gpg命令來進行PIN管理,我在下面會有介紹。

使用GnuPG管理Nitrokey Pro

作為一款與標準兼容的OpenPGP卡,Nitrokey Pro實際上可以使用GnuPG來管理。硬件上執行的大部分安全功能(比如生成/存儲GPG密鑰、加密/解密文件和簽名消息等)可以由gpg命令來加以控制。所以,即便它連接無桌面的服務器,也應該可以輕松管理Nitrokey Pro,沒有任何問題。

比如說,輸入下面這個gpg命令,查看關于已連接USB安全密鑰的信息。

$ gpg --card-status

如何用Nitrokey USB智能卡為Linux環境保駕護航?

與你在Nitrokey應用程序上更改用戶PIN/管理員PIN的方法相似,你也可以使用gpg命令來更改PIN:

$ gpg --change-pin

如何用Nitrokey USB智能卡為Linux環境保駕護航?

現在為了測試安全功能,不妨先將你的GPG密鑰存儲到Nitrokey USB硬件上。請注意:你可以將現有的GPG密鑰移到Nitrokey卡上。這里不妨從頭開始創建一個新的GPG密鑰。

為此,輸入命令:

$ gpg --card-edit

在“gpg/card>”提示符處,輸入“admin”后按回車鍵。然后,你要輸入管理員模式;在這種模式下,你可以執行各種管理任務,包括生成密鑰。輸入“help”會顯示所有可用的管理員命令。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

想生成新的GPG密鑰,輸入“generate”命令。這會讓你完成一系列標準步驟,生成主密鑰和子密鑰,用于簽名、加密和驗證。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

密鑰生成完畢后,輸入“list”命令即可查看已生成的密鑰。你還可以運行gpg命令,查看同樣的信息:

$ gpg --card-status

如何用Nitrokey USB智能卡為Linux環境保駕護航?

你會看到上面生成的三個不同的子密鑰。簽名密鑰是只簽名的子密鑰,用作主密鑰。加密密鑰是用于加密的子密鑰。最后,驗證密鑰并不由GnuPG直接使用,而是用于其他驗證用途,比如PAM驗證和SSH登錄。

一旦你生成了GPG密鑰,建議你在現有的PGP密鑰服務器上發布公共密鑰,那樣萬一別人想要安全地與你進行聯系,就可以使用你的電子郵件地址或密鑰ID,下載密鑰。下列命令將把你的公共密鑰上傳到密鑰服務器。“D7F6C175”是你公共密鑰的密鑰ID,上述密鑰信息里面就有它。把密鑰ID換成你自己的密鑰ID。

$ gpg --keyserver keys.gnupg.net --send-keys D7F6C175

現在,我們準備使用存儲在Nitrokey Pro上的GPG密鑰。在下文中,我將給出幾個例子,表明如何使用Nitrokey Pro智能卡。

Nitrokey Pro的第一種使用場合:文件加密和解密

最簡單的使用場合就是使用存儲在該USB硬件上的加密密鑰,加密和解密文件。

有人在使用你的GPG用戶ID(比如[email protected])加密文件后,給你發來了一個已加密文件,如下所示。

$ gpg -r [email protected] -e secure.txt

一旦你收到該文件,就可以使用“-d”選項來解密文件,只要存儲有秘密密鑰的Nitrokey卡插入到你的計算機上。

$ gpg -d secure.txt.gpg

請注意:會要求你輸入Nitrokey用戶PIN(不是GPG密鑰密碼),以便解密。要是沒有Nitrokey卡,你會遇到下列錯誤:

gpg: sending command `SCD PKDECRYPT' to agent failed: ec=5.99

gpg: encrypted with 2048-bit RSA key, ID E04A33F0, created 2015-12-21

"Dan Nanni "

gpg: public key decryption failed: general error

gpg: decryption failed: secret key not available

Nitrokey Pro的第二種使用場合:SSH驗證

你可以使用Nitrokey Pro智能卡用于SSH驗證。在這種情況下,你使用存儲在Nitrokey卡上的OpenPGP密鑰作為SSH密鑰,并依賴gpg-agent從Nitrokey卡獲取OpenPGP密鑰用于SSH登錄。不過默認情況下,OpenSSH客戶端會試著使用無法直接訪問智能卡硬件的ssh-agent獲取私密密鑰。因而,我們需要在基于密鑰的SSH驗證過程中將gpg-agent配置成臨時取代ssh-agent。

為此,我們需要先啟用gpg-agent中的SSH支持功能。在~/.gnupg/gpg-agent.conf中添加下面這一行。

1. enable-ssh-support

然后將下面幾行添加到~/.bashrc:

1. envfile="$HOME/.gnupg/gpg-agent.env"

2. if [[ -e "$envfile" ]] &&kill -0 $(grep SSH_AGENT_PID "$envfile" | cut -d= -f 2) 2>/dev/null; then

3. eval "$(cat "$envfile")"

4. else

5. eval "$(gpg-agent --daemon --write-env-file "$envfile")"

6. fi

7. export SSH_AUTH_SOCK

還建議禁用GNOME密鑰環(如果你使用它的話),因為GNOME密鑰環會干擾gpg-agent。

現在打開一個新的終端(或重新加載~/.bashrc),試著輸入下面這個命令,測試一下。

$ gpg-agent

如果gpg-agent正確設置,你應該會看到輸出信息,顯示為“gpg-agent: gpg-agent running and available”。

下一步,使用下面這個命令查明加密子密鑰ID。ECD8F07F是你自己的GPG密鑰ID,可以在“gpg --card-status”命令的輸出中找到它。把它換成你自己的密鑰ID。

$ gpg --edit-key ECD8F07F

如何用Nitrokey USB智能卡為Linux環境保駕護航?

輸出信息列出了與你的密鑰ID有關的所有可用子密鑰。標為“usage”的最后一列表明了每個子密鑰的角色:“S”代表簽名,“C”代表證書,“A”代表驗證,“E”代表加密。

在這個例子中,用于驗證的子密鑰ID是81398BBF。

使用gpgkey2ssh命令,借助驗證子密鑰ID,生成兼容的authorized_key字符串。

$ gpgkey2ssh 81398BBF >authorized_keys

證實authorized_keys的內容與下列命令的輸出內容一樣。

$ ssh-add -L

一旦這得到證實,將authorized_keys移到你想實現SSH訪問的遠程主機處的~/.ssh/authorized_keys。確保~/.ssh/authorized_keys的許可權限被設成0600。

為了測試基于密鑰的SSH驗證,你應該禁用遠程主機的SSH服務器處的密碼驗證。

最后,檢查Nitrokey智能卡插入到本地計算機的期間,你可以通過SSH訪問遠程主機。如果gpg-agent還沒有緩存你的秘密密鑰,會要求你輸入Nitrokey用戶PIN。如果你試圖在沒有Nitrokey卡的情況下實現SSH訪問,就會看到下列錯誤。

Permission denied (publickey).

Nitrokey Pro的第三種使用場合:為Dropbox網站登錄實現的雙因子驗證

Nitrokey Pro智能卡的另一種使用場合就是生成一次性密碼(OTP)。尤其是,Nitrokey Pro能夠生成基于時間的OTP或基于HMAC的OTP,它們與如今許多商業網站支持的雙因子驗證兼容。一次性安全代碼將由你之前安裝的那個Nitrokey應用程序來生成。

舉例說,讓我來介紹如何在Dropbox網站上使用Nitrokey Pro來設置雙因子驗證機制。

首先,登錄到你的Dropbox帳戶,啟用兩步驟驗證。選擇“mobile app”選項(而不是SMS選項)來接收安全代碼。最終,你將使用Nitrokey應用程序,而不是移動應用程序。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

  Dropbox網站隨后會啟用基于時間的驗證,并生成采用base32格式的秘密密鑰。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

打開Nitrokey應用程序的“配置”設置,進入到“OTP和密碼保險柜”菜單。在“OTP Slot配置”選項卡下方,啟用“TOTP”模式,選擇一個可用的TOTP slot(比如slot 1),將上述秘密密鑰拷貝到“秘密密鑰”空白處。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

最后一步是,Dropbox會讓你輸入由驗證應用程序生成的代碼。只要鼠標右擊Nitrokey應用程序圖標,然后選擇“密碼”菜單下方的“Dropbox”。

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

如何用Nitrokey USB智能卡為Linux環境保駕護航?

 

然后,就會生成一次性密碼,并自動拷貝到剪貼板。

現在把存儲在剪貼板里面的OTP粘貼到Dropbox頁面的安全代碼空白處,這將完成兩步驟的驗證設置過程。現在,只要你需要用于Dropbox登錄的一次性安全代碼,就可以使用Nitrokey應用程序來生成一個。

結束語

我在本教程中介紹了一種名為Nitrokey Pro的基于USB的智能卡,及其幾種使用場合。除了我給出的三個例子外,Nitrokey Pro還有另外許許多多的使用場合(比如PAM驗證、電子郵件加密、硬盤加密、VPN訪問、PKI證書和密碼管理器)。Nitrokey網站維護有相當完備的說明文檔(https://www.nitrokey.com/documentation/applications),介紹了適用于Linux、Windows和MacOS X等平臺的這些使用場合,所以如果你有興趣的話,鼓勵你仔細閱讀一下。

正如我在開頭提到,USB Nitrokey的一大賣點就是其透明的開發過程。完全開放的硬件和完全開源的軟件讓其產品可以接受社區驅動的代碼審核和滲透測試的檢驗,這讓它們更加值得信賴,可以迅速發現任何安全漏洞,并迅速發布安全更新版,并促進與其他應用程序的集成。Nitrokey的人員恪守這種開放精神,計劃推出另一款名為Nitrokey Storage的產品(基本上為Nitrokey Pro增添了安全的海量存儲),一直在開展Indiegogo籌資活動,尋求資金上的支持。如果你想幫它一把,何不捐點錢支持它?

原文標題:How to secure your Linux environment with Nitrokey USB smart card

關鍵字:NitrokeyUSB設備

本文摘自:51CTO

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 竹山县| 诸暨市| 宁阳县| 麻栗坡县| 乐东| 那曲县| 洛宁县| 巴青县| 荥阳市| 丘北县| 五原县| 开原市| 长治县| 辛集市| 临洮县| 菏泽市| 伊吾县| 周口市| 金平| 安义县| 山丹县| 巴林右旗| 名山县| 正镶白旗| 永城市| 通海县| 隆林| 高台县| 印江| 奇台县| 英吉沙县| 涞水县| 文化| 左贡县| 赤壁市| 永春县| 昌都县| 集安市| 武宣县| 九龙城区| 吉安市|