問題タブ [shared-secret]
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.
rest - REST 共有シークレット値のベスト プラクティス
認証に oauth を使用する REST API を使用しています。サービスに登録すると、API コンシューマ キーと API 共有シークレットが与えられました。共有シークレットをアプリケーション コードにハードコードしてコンパイルしただけです。
これは共有シークレットを管理する最良の方法ですか? つまり、セキュリティへの影響はありますか? これは何らかの方法で暗号化する必要がありますか?この共有シークレットを管理するためのベスト プラクティスは何ですか?
c++ - ECDiffieHellmanCng 互換の実装を持つ C++ ライブラリとは何ですか?
.NET アプリと組み込みデバイス間のキー交換ソリューションを探しています。2 つのエンドポイントには共有の秘密鍵があるため、楕円曲線 Diffie-Hellman (ECDH) アルゴリズムは、セッションのマスター シークレットを安全に交換するのに優れています。
ECDH を実装し、組み込みデバイスに適した優れた C++ ライブラリcrypto++があります。ただし、ECDH の実装は、Mirosoft のECDiffieHellmanCng実装とは異なります ( FAQで言及されています)。.NET セキュリティ アルゴリズムとの互換性を維持して、PC アプリのマネージド コードを使い続けることができるようにしたいと考えています (現在、または CNG を使用している場合は、いつか XP を廃止するとき)。
Microsoft と互換性のある Microsoft 以外の実装を見た人はいますか? または、.NET コードと埋め込み C++ コードの間で事前共有キーを使用するための優れたキー交換ソリューションは他にありますか?
更新 2010-01-27: 明確にするために、ECDH を使用して、2 つのアドホック エンドポイント間で双方向認証とキー交換の両方を実行しようとしています。これらのエンドポイントは、同じ秘密を共有していることを確認するまで、お互いを信頼しません。これは、共有シークレットが帯域外で交換される Bluetooth ペアリングのシナリオに似ています (ただし、私の場合、デバイスが互いに近くにない可能性があります)。
itunes - Apple Auto-Renewable サブスクリプション : Shared Secret
Apple iTune Connect ドキュメントによると、「Shared Secret」セクションは「Manage Your In App Purchases」にあります。しかし、私はそれを見つけることができませんでした。この SECTION を表示するには、iTune Connect の設定を変更する必要がありますか?
よろしくお願いします
java - Java: キーを使用して文字列を Base64 エンコードする
こんにちは、データとキー (両方の文字列) があります。データは、Base64 を使用してキーを使用してエンコードする必要があります。サンプルコードを教えてください。
security - サーバー側の共有秘密生成のためのセキュリティプロトコル
次の要件を持つセキュリティシステムを実装しようとしています。
- すべてのクライアントがパスワードを共有しますが、これはサーバーには認識されていません
- 各クライアントには、サーバーに認識されている一意のクライアントIDがあります
- パスワードを知っているすべてのクライアントは、サーバー上で同じ共有シークレットを生成できる必要があります(このシークレットは何でもかまいません。すべてのクライアントで同じであり、パスワード間で一意である必要があります)
- サーバーやトランスポートがハッキングされた場合でも、パスワードは安全に保つ必要があります
- 異なるclient-idを持つ別のパーティが、パスワードを知らずに同じサーバー側のシークレットを生成することは不可能でなければなりません。
これをグラフィカルに表現してみましょう。
ここで、f()[g()]は、クライアント[サーバー]がパスワード[リクエスト]に適用してリクエスト[キー]を取得する関数です。これらの関数は、client-idに依存する場合があります。
これを行う可能性のある2つのアプローチがありますが、必要なトラフィックとサーバーの負荷が少ない、よりシンプルなものを望んでいます。
「簡単」:クライアントはパスワードをハッシュします。クライアントとサーバーはそれぞれ、標準のメカニズム(SSLなど)を使用して接続を保護し、この接続を介してハッシュを送信します。
「もう少し賢い」:サーバーには固定秘密鍵がコード化されており、各クライアントには公開鍵がコード化されています。クライアントはパスワードをハッシュし、クライアントIDとXORし、公開鍵を使用してRSA/PGPで結果を暗号化します。次に、サーバーは秘密鍵を使用して要求を復号化し、結果をclient-idとXORして、パスワードハッシュに到達します。
どちらの場合も、サーバーはクライアントに対して同じシークレット、つまりパスワードハッシュを使用することになります。2番目のバージョンの利点は、残念ながらすべての場合にSSLに依存することができないため、本格的な鍵交換および暗号化システムのオーバーヘッドが不要なことです。実際、ハンドシェイクなしで1回のリクエストでサーバーシークレットを生成できます。2番目のバージョンのclient-id-XORは、リプレイ攻撃を防ぐために使用されます。別の方法では、異なるclient-idを持つサードパーティが同じ暗号化メッセージをサーバーに送信して、同じシークレットを生成する可能性があります。基本的に、それは塩を追加するためのオーバーヘッドのない方法です。
今の質問:
サーバー側のシークレットに関する要件は実際にはないので、クライアントがこのシークレットをローカルで生成できる場合でも、これを行うためのさらに簡単な方法があり、次のような任意精度の数値の高価なべき乗剰余を必要としません。 RSAはしますか?上記のf()とg()に対して、同じ結果を達成できる他のトラップドア関数を考えています。
c - シャミアの秘密共有のOpenSSL実装
OpenSSLを使用してシャミアの秘密共有を実装しようとしています。メッセージを復号化するのに多くの問題があります!
私は復号化のためにいくつかの実装を試しましたが、どちらも次のとおりです: http ://www.cs.cornell.edu/courses/cs754/2001fa/307.pdf
そしてこれは(上記の論文を参照していますが、別の方法を使用しています):
(私は計算のタイプミスを知っていることに注意してくださいu2
)
キー番号を表すためにBIGNUM値を使用して、ik /(ik-ij)でラグランジュ補間を実行すると、精度が低下する可能性があると思います。int
キー番号のようなものをBIGNUM値に変換する小さな関数を作成しました。
正しく機能していると確信しているので、キー生成コードは割愛します。以下は、私がリンクしたJPEGの実装です(PDFではありません)。
cij []で計算値を吐き出すと、キー[2、4、5]を使用すると2、-5、0が得られます。私が手で行ったいくつかの数学によると、それは実際には10 / 3、5、および8/3であるはずです。これを回避する方法はありますか?
あなたが見る私のコードに他の問題がありますか?前もって感謝します。
java - java.lang.Long または java.util.UUID は安全な共有シークレットですか?
Web サービス アプリケーションのリソースにアクセスするには、クライアント アプリケーションは各リソースに固有の共有シークレットを提供する必要があります。
質問: SecureRandom によって生成された Long は、この目的 (例: ブルート フォース攻撃に対して) に対して合理的に安全ですか? または、代わりに UUID を使用する必要がありますか?
Web サービスは HTTPS で実行され、(Long または UUID との) 衝突が発生しないことを保証できます。問題は、Java の Long のドメインが、HTTPS を介した徹底的な攻撃に対する保護を提供するのに十分な大きさであるかどうかだけです。
security - シークレットを生成するときに乱数をハッシュする必要があるのはなぜですか?
多くのコードは、ある種のシークレットを生成するために次のようなことを行います。
単純に乱数を使用しないのはなぜですか? 過去に、一部の OS ランダム ジェネレーターがそれほど優れていなかったことは認識していますが、それが今でも正しいかどうかはわかりません。
ios - アプリ内購入 自動更新サブスクリプション iO
アプリ内購入を実装し、自動更新サブスクリプション タイプの製品を初めて使用しています。正常に動作しています。それ以外の最初の試行では、レシートのステータスで 21004 が表示されます (共有秘密鍵に関連するエラーを示す 21004) アプリケーションが正しく機能するかどうか、つまり製品が正しい更新日後に更新されるかどうかをテストするにはどうすればよいですか? また、ststus 21004 の問題を解決するにはどうすればよいですか?
ありがとう
java - Shamir の秘密分散の Java 実装
Shamir's Secret Sharing を Java で実装しようとしましたが、問題があります。
K>10 にすると、秘密は再構築されなくなります。誰が私を助けることができます?これは私がやったことです。どうしたの?
最初に N と K を選択し、次に係数の生成、共有の作成、最後に再構成を行います。