2010-03-26 71 views
0

我正在嘗試確定與我的合作伙伴實施簡單「授權」系統的最佳行動方案。概念是:在預生成的「密鑰」上加密文件庫C#

根據幾個內部硬件組件生成加密值。讓客戶把這個價值發送給我們,我們將把它實施到我們的密鑰生成器中。一旦我們有了這些,我們添加任何其他限制許可證(用戶,到期等)。從那裏我們生成一個文件,我們發送給客戶,他們可以添加到他們的安裝,瞧,快樂的人。

我已經完成了第一部分。我的下一部分是試圖找出我需要使用哪種加密方法。我已經知道對稱加密幾乎是我可以採用的唯一路線。我發現的大部分信息都涉及.NET已經從其內部方法中創建了一個密鑰。

這是一個背景,我的問題是:「我可以使用哪種加密方法,使我可以根據客戶計算機提供的」id「加密限制?」順便說一下,我正在用C#編寫它。

回答

0

我最近做了一些非常相似的事情。我使用AES生成一個基於私鑰的值,該私鑰使用內部客戶ID或訂單號作爲用於加密該值的IV。

而不是一個訂單號,你可以從你的第一步使用某種形式的校驗和,所以它不是作爲IV存儲的東西。這樣,如果文件被洗掉或者他們將軟件傳輸到新計算機 - 兩種方法都會使文件無效。

您可能會注意一些問題,但是您的安裝/許可證與硬件的關係有多緊密。你不想僅僅因爲他們升級了他們的主板就懲罰一個合法用戶。

+0

我明白你的觀點。將鍵部分綁在主板上比硬盤更好,在主板出現之前很可能會更換硬盤。 – Anubis 2010-03-27 20:25:39

+0

我所做的一件事是,當軟件被激活並且密鑰被保存到註冊表中,我使用硬盤驅動器對註冊表值進行了編碼,這樣,軟件無法通過重影遷移到另一臺計算機,輸入產品密鑰。沒有解決方案將100%安全,但目標是使其合理安全而不會懲罰合法用戶。 – McAden 2010-03-28 04:31:39

0

你說你知道你需要對稱加密,但你會錯的。使用對稱加密時,檢查許可證的代碼必須能夠訪問祕密,這意味着如果您的代碼被反向設計,某人不僅可以找出刪除支票的位置,還可以生成和銷售與您無法區分的許可證密鑰使。

使用非對稱加密或安全散列。並且不要嘗試使用客戶特定的硬件信息作爲密鑰,而是將其預先加入或附加到其他數據。您本質上創建了一個訪問控制/權限/權限列表文件,並附帶一個消息認證代碼來驗證其來源(您)。

+0

我最初在考慮使用RSA,但是我得到的要求聲明需要閱讀許可證。根據我的理解,這是一種補救;如果我要使用非對稱加密,我需要生成密鑰。這是我理解失敗的地方。我想我可以讓軟件根據客戶生成一個公鑰,併發送我用來加密許可證文件的公鑰。再次,這是我的有限理解達成的地方,因此我去了一個解決方案,我瞭解了更多...任何指導,非常感謝:) – Anubis 2010-03-27 20:28:57

+0

我會使用RSA在許可證上做消息認證代碼。許可證本身爲純文本格式,因此可以讀取,並且消息驗證代碼(將許可證和硬件信息散列在一起,然後使用私鑰加密)抵制僞造。 – 2010-03-27 22:50:55