Password

如何讓守護程序提示輸入密碼(在 Xsession、keyloggersafe 中)?

  • October 26, 2014

博覽會:

  • 在 XSession 中工作。
  • 一些*(後台)*守護程序需要提示我輸入密碼。

如何使守護程序使用 Xsession 中的彈出視窗提示我輸入密碼?

守護程序通常與 X 會話沒有連結,這使得很難生成提示密碼彈出視窗。

一些想法的答案:

  • 一個執行(fork/child from)守護程序的小程序,它使 X-prompt-popup-window 最好。越小越好:)
  • 安全第一即使我懷疑可能,任何確保在輸入密碼時沒有其他應用程序在該 X 會話中執行可以鍵盤記錄的任何解決方案都非常感謝。

這類問題通常通過兩個獨立的二進製文件來處理:服務守護程序和通過UNIX 域套接字(或網路套接字,以防它們不在同一台機器上執行)進行通信的使用者界面。一個典型的例子是 OpenSSH - 檢查如何ssh-agentssh-addssh進行互動以了解如何做到這一點。如果您想變得時髦或需要一些必須實現的額外功能,請將“UNIX 域套接字”替換為“ D-Bus ”。

如果操作請求來自守護程序本身(如果我理解正確的話)是您的特殊情況,那就有點棘手了。UI 部分有時應該在 X 會話期間生成,向守護程序註冊自身,當守護程序決定它需要一些輸入時,它會要求 UI 部分完成它的工作。最後兩句話實際上是 D-Bus 可能派上用場的地方。

另一方面,您應該仔細考慮,守護程序主動詢問密碼是否是正確的做事方式 - 守護程序通常是響應請求而不是生成請求的服務。當使用者決定是時候這樣做時,讓 UI 主動推送密碼可能會更好。我並不是說這是唯一的好方法,只是應該首先徹底考慮它。

就安全性而言,一切都取決於您想要獲得的偏執程度。使用 X,您可以抓取鍵盤(請參閱XGrabKeyboard(3)手冊頁),這應該可以為您提供合理的安全級別。或者更好地說:如果您不使用它,您將無法控制密碼。同樣,ssh 是一個很好的例子:看看x11-ssh-askpasshelper。它的首頁似乎不再可用,但您可以在許多地方找到原始碼,例如在openSUSE BuildService中。

實際上你甚至可以直接使用它,因為它所做的只是抓住鍵盤並在其標準輸出上輸出輸入的密碼,所以你只需要生成 askpass 助手並檢查它的stdout. 如果我沒記錯的話,readpass.c在 OpenSSH 中應該會給你一些關於如何做的想法。

雖然所有這些看起來有點過於復雜並且遠非安全,但有幾件事情需要考慮:

  1. 幾個通常被認為是相當安全的項目,如 OpenSSH 和 GPG 使用這種方法。
  2. 安全很難。推出自己的安全解決方案通常會以這樣或那樣的方式結束麻煩(或災難)(它也可以成為通常的企業-y:“我有這個很酷的東西。” - “哇,讓我們把它變成一個新的公司工具” - 5 年後:“它完全無法擴展/損壞/不安全/…… - 怎麼會有人將其作為公司範圍的解決方案?! ” 用“我們的旗艦產品”代替“公司範圍的解決方案”來獲得數小時的歡笑)。另請參閱規範的安全 SE 問答:https ://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own和https://security.stackexchange。
  3. 鍵盤抓取並沒有說明任何其他應用程序沒有竊聽堆棧更深的某個地方(即在 X 應用程序層下)的鍵盤事件。但是話又說回來,這樣的應用程序很可能需要某種 root 訪問權限,因此如果您在系統上有類似的東西,您不妨將密碼放入以passwords.txt您的主目錄命名的純文字文件中)。

引用自:https://unix.stackexchange.com/questions/164282