Libsodium

NaCl/libsodium 中的點加法 (Curve25519)

  • January 10, 2019

在NaCl和libsodium中,crypto_scalarmult函式實現操作 $ Q = kP $ (標量/點乘法)。好像沒有加點功能 $ K = P + Q $ 儘管。

作為標量乘法實現的一部分,我認為必須在某個地方實現點加法之類的東西。能夠訪問它以在 Curve25519 之上開發一些協議將很有用。

  • API 或文件中的任何地方都沒有提到點添加是故意的嗎?(作者不希望人們使用他們的庫來實現研究級協議嗎?)
  • crypto_scalarmult代表crypto_scalarmult_curve25519聲明(在 libsodium 中),crypto_scalarmult_curve25519.h但我似乎無法在.c任何地方的文件中找到定義(在 GitHub 上的最新版本中)?
  • 是否有一種安全的方法來實現或重用 libsodium 中的點加法的內部實現?

API 或文件中的任何地方都沒有提到點添加是故意的嗎?

是的。這個想法是提供一個最小的 API,使做正確的事情變得容易,同時避免低級操作,讓自己在腳下開槍。

要在 NaCl 上引用此引物(pdf):

典型的密碼庫是許多不同功能的集合,並支持過多的參數集。軟體開發人員可以從這些功能和參數中進行選擇,並以提供所需安全性的方式組合它們。這些選擇帶有各種陷阱,不僅因為大多數庫由於“歷史”或“兼容性”原因仍然包含高度不安全的函式,還因為很容易以不安全的方式組合安全函式

埃因霍溫的研究人員發現,對於大多數應用程序來說,這種複雜程度是不必要的。NaCl 提供了一個易於使用的高級界面來滿足應用程序的需要:安全的身份驗證加密。


是否有一種安全的方法來實現或重用 libsodium 中的點加法的內部實現?

您甚至不應該嘗試通過從外部呼叫內部實現來重用它,因為它不是公共介面。當然,您可以複製部分實現(它在 ISC 許可下)並對其進行修改以在您自己的軟體中使用,但在安全使用它方面,您只能靠自己。

引用自:https://crypto.stackexchange.com/questions/27168