簡體   English   中英

確保節儉的溝通

[英]Securing thrift based Communication

因此,我與客戶端和服務器做了一個基於節儉的程序,客戶端可以與服務器很好地通信。 現在,由於數據傳輸將非常關鍵,因此我需要其中的某種安全性。

所以,我想到了登錄系統,但是問題是我沒有在服務器端存儲任何類型的會話數據(我什至不知道,在所有客戶端請求來來往往之后,我應該存儲什么內容,這是不可能的區分它們)。 所以經過深思熟慮,這就是我想出的

  1. 使用隨機數,服務器啟動時我會生成某種隨機字符串
  2. 客戶端將輸入用戶名和密碼,該名稱和密碼將在服務器端使用PAM身份驗證進行驗證(只需閱讀有關內容)。
  3. 如果經過驗證,服務器將只將隨機生成的字符串發送到客戶端
  4. 客戶端每次嘗試執行RPC時都會將該字符串發送到服務器
  5. 如果通過驗證,服務器將完成工作,否則返回一些錯誤代碼

我能想到的可能的問題

當前,當服務器關閉並且客戶端處於某個RPC中時,它將給出一些錯誤消息,並且當服務器重新啟動時,我們可以毫無問題地完成任務

現在,如果服務器出現故障,則生成的字符串將有所不同。 所以我將不得不再次進行身份驗證部分

那么,您如何看待整個認證模式? 有沒有更好或更簡單的方法?

PS:我沒有使用任何數據庫。 我在兩面都使用C ++。 我的客戶端使用QT

免責聲明-我對PAM的工作原理並不了解,所以我對這種方法只提出了一些高級問題。 如果我誤解了您的做法的任何部分,我謹此致歉。

當您說要保護數據傳輸安全時,我覺得您想擁有身份驗證和保密性,現在您只有一種身份驗證方法。

例如,如果客戶端C1正在向服務器進行身份驗證(假設憑據未以明文形式發送),則服務器將在步驟3中發送隨機字符串。當其他人在網絡上進行嗅探時會發生什么? 流氓客戶端是否可以不發送隨機字符串並以C1身份對服務器執行RPC調用? 如果用戶名和密碼以明文形式發送到服務器,網絡上的某人是否也可以訪問憑據? 另外,隨后發送的數據又如何呢? 它只是以節儉格式編碼的,並且可以被網絡上的任何人解碼,對嗎? 數據敏感嗎?

如果是這樣,我想建議使用PKI /證書。 使用自簽名證書必須可以。 如果只希望客戶端對服務器進行身份驗證並證明它是合法的,則可以使所有客戶端出示其證書。 證書從根本上說是該客戶端的公共密鑰,由為其提供擔保的授權機構簽名。該客戶端具有本地存儲的私鑰,永遠不會離開該客戶端。 現在,當客戶端將證書提供給服務器時,服務器將查看誰簽署了證書(CA)。 如果它是服務器信任的CA,它可以直接發送隨機字符串或僅發送節儉數據,並使用客戶端的公共密鑰進行加密。 客戶端將能夠使用其私鑰解密,並且對任何嗅探的人來說,它看起來都是隨機字節。 服務器將為每個客戶端執行此操作,並且只需要存儲其信任的證書頒發機構的名稱。 這可能是您的姓名和地址。 您可以使用openssl在每個客戶端上生成自簽名證書。 但這意味着您需要在每個客戶端上進行其他設置。 生成密鑰對和證書。 如果此約束適合您,則可以探索這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM