2010-10-03 82 views
3

我被要求增加一個新的算法,通過ssh這樣的數據在新算法加密的,任何想法如何添加新的算法到ssh?新的加密算法,SSH

感謝

+0

你爲什麼要這樣做?新的加密算法非常難以正確使用,無論是裸算法本身,還是安全地將其作爲協議的一部分實施。目前ssh中的AES256-CTR是目前比較安全的算法之一。 – Omnifarious 2010-10-03 05:52:29

+0

我同意Omnifarious。另外,如果您足夠瘋狂,那麼您必須更改服務器軟件以及允許連接的每個客戶端使用的軟件。 – 2010-10-03 05:58:16

+0

雖然我知道這似乎很愚蠢,但我被要求這麼做! 我是否需要編輯一些比打開ssh和ssh-client更多的東西? 怎麼辦?你能指導我嗎? – amin 2010-10-03 07:05:41

回答

3

是可能的一些新的算法加入到SSH通信,這是從時間做的時候(例如AES,後來加入)。但問題是,你需要修改客戶端和服務器,以便他們都支持這種算法,否則它是沒有意義的。

我假定您被要求添加一些自定義的,自制的或非標準的算法。所以我想要做的第一件事就是警告你,添加的算法可能很弱。您至少需要執行基本搜索有關此算法的信息,就好像它已經損壞一樣,您將完成無用甚至危險的工作。

至於軟件修改本身 - 這是一個罕見的工作,很可能你不會在這裏找到任何有這種經驗的人。但是,處理各種算法的代碼是典型的,添加新算法很簡單 - 您可以添加一個帶有算法實現的源文件,然後通過向switch語句添加一個更多的案例來修改一堆地方。

+0

其實,我已經在openssh的一個關閉源代碼上工作了。給了幾個星期,我可以獲得足夠的代碼知識來做到這一點。:-) – Omnifarious 2010-10-03 13:27:22

3

在我的職業生涯,我對銷售作爲閉源的商業軟件SSH的私人叉工作。即使他們處於瘋狂的愚蠢行爲(私人分支,他們正確的思想使用非開源加密軟件,我認爲我們的客戶完全不在他們的搖滾樂隊中),並沒有增加新的加密算法。

雖然可以做到。將掛鉤添加到ssh協議來支持它並不難。該協議旨在以這種方式進行擴展。在開始時,客戶端和服務器交換他們願意使用的加密算法列表。

這意味着,當然,只有經過修改的客戶端和修改後的服務器才能與對方通話。

真正的困難是OpenSSL。 ssh不使用TLS/SSL,但它使用OpenSSL加密庫。你必須將新算法添加到該庫中,該庫是一個可怕的野獸。

雖然,我想你可以添加算法不將其加入OpenSSL的。這可能會非常棘手,儘管我認爲openssh可能會嚴重依賴OpenSSL API的工作方式。並且它們的工作方式的一部分允許你傳遞一個常量來表示你想要使用哪種算法,然後傳遞一個標準的加密和解密調用集合,用這個常量來決定算法。

不過,如果我記得正確的話,OpenSSL有一個專門爲其套件添加新算法的API。所以這可能不那麼難。在初始化OpenSSL庫時,您必須確保這種情況發生。

無論如何,這是一個相當含糊的答案,但也許它會指出你在正確的方向。你應該讓這麼做的人付出鉅額的資金。需要這種知識水平的愚蠢行爲永遠不會便宜。

+4

我必須不同意愚蠢,這是爲什麼:它可能是他們正在添加一些國家加密標準。例如在俄羅斯,他們使用GOST和GOST是唯一公認的加密算法(實際上算法家族)用於公共區域。 – 2010-10-03 13:59:35

+1

@Eugene Mayevski'EldoS Corp是的,但這是一個經驗豐富的密碼專家的任務。我個人也沒有看到使用替代基元的好處,即使在考慮像GOST這樣不明確的基元時也是如此。 – rook 2010-10-03 18:52:08

+1

@符合國家法規要求可以是好處或要求。如果是這種情況,那不是我們或開發者決定要做什麼 - 他們只是必須這樣做。由於xUSSR客戶說我們必須將GOST加入到我們的SecureBlackbox產品中,因爲GOST是唯一允許的算法,所以如果他們想要在當地市場上發佈他們的產品,他們必須擁有它,不管它與否。 – 2010-10-03 19:03:49