問題タブ [libsodium]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - crypto_box_easy と crypto_box_open_easy の奇妙な動作。秘密鍵なしで復号化しますか?
libsodium による公開鍵暗号化をテストしたところ、奇妙な動作に遭遇しました。暗号化されたメッセージは、秘密鍵なしで復号化されます。
公式サイトlibsodium の例
公開鍵認証暗号化を使用すると、アリスはボブの公開鍵を使用して、ボブ専用の機密メッセージを暗号化できます。
ボブは、アリスの公開鍵を使用して、暗号化されたメッセージが実際にアリスによって作成され、改ざんされていないことを確認してから、最終的に復号化できます。
ボブが必要とするのは、アリスの公開鍵、ナンス、および暗号文だけです。
また、ボブにメッセージを送信するために、アリスはボブの公開鍵のみを必要とします。
元の例では、ボブはアリスからのメッセージを自分の秘密鍵で復号化し、アリスの公開鍵で検証します。私はコードを間違えましたが、メッセージはボブの秘密鍵なしで適切に復号化されました!
それはどのように可能ですか?私の間違いはどこですか?ありがとう
encryption - 秘密鍵が侵害されました。新しい公開鍵を配布する方法は? 非対称キー暗号化によるクライアント サーバー モデル
libsodium を介してアプリケーションのクライアント/サーバー通信をセットアップしようとしています。これまでのところ、ハードコーディングされた公開鍵を使用してアプリケーションを配布する予定です。サーバーは秘密鍵を共有せずに保持します。これにより、ユーザーはメッセージを暗号化してサーバーに送信できます。サーバーでは、秘密鍵がメッセージを復号化します。
サーバー上の秘密鍵が危険にさらされた場合 (方法はわかりませんが、念のため)、新しい公開鍵をすべてのクライアントに配布するにはどうすればよいでしょうか? 新しい公開鍵の配布を必要とせずに新しい秘密鍵を生成する方法はありますか? 何かのようなもの:
私は、新しい公開鍵を安全に配布するための複雑なアルゴリズムを必要としない、非常に単純なソリューションを望んでいました。新しい公開鍵を作成しながら新しい秘密鍵を作成する必要がある場合、サーバーからクライアントに公開鍵を安全に配布するためにどのアルゴリズムを使用できますか?
追加情報 (飛ばしても構いません):
ここで、Glenn Fiedler (libsodium を使用する libyojimbo の作成者) が「新しい秘密鍵を転がすだけ」というアイデアについて語っている場所を読むことができます。
古い公開鍵を再利用し、libsodium で新しい秘密鍵を作成する方法があれば、ぜひ読んでみたいと思います。私はドキュメントを調べましたが、そうするための機能をまだ見ていません。そのため、新しい公開鍵を安全に配布するためのより複雑なアルゴリズムを掘り下げなければならないのではないかと心配しています。
私はDiffie Hellmanを調べましたが、両方の当事者が共通の「色」から始める必要があるようです。ですから、私の質問は、新しい合意された開始色に到達することに関するものだと思います.
node.js - ノードでの libsodium.crypto_pwhash (Argon2) の使用
crypto_pwhash_str
Node プロジェクトでの作業に問題があります。libsodium-wrappers-sumo および libsodium-sumo ライブラリを適切にインポートし、他の関数を正常に呼び出すことができました。問題のある関数への呼び出しは次のようになります。
この場合、password は文字 'a' の単なる文字列オブジェクトです。
デバッガーを実行して何が問題なのかを突き止めようとすると、次の内部コード ブロックが表示されます。
for ループに入ることができず、何らかの理由でへの呼び出しが_crypto_pwhash_str()
評価されます。-1
誰かがこのライブラリの経験を持っているか、私が間違っていることを理解するのを手伝ってくれますか. ノードにかなり慣れていないので、かなり迷っています。
swift - Swift Sodium - 匿名暗号化 (密封されたボックス)
指定された公開鍵で迅速なナトリウムを使用して値を暗号化しようとしています。ただし、暗号化された値は、サーバー側で生成されるものと同じではありません。このコーディングが迅速に正しいかどうかはわかりません。手順は、Java で行う方法と似ています。
公開鍵が base64 文字列形式であると仮定します。
ジャワ:
迅速:
迅速な同等のコーディングの何が問題なのか教えてください。どうもありがとう。