問題タブ [dsa]
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.
python - M2Crypto: DSA 署名の検証
Python/M2Crypto を使用して DSA 署名を検証できません。署名は、標準の java.security.Signature クラスを使用して Java で生成され、Sun の暗号化プロバイダと SHA1withDSA アルゴリズムが指定されています。
シェル出力は次のとおりです。
署名値は私には問題ないように思えます。適切な ASN.1 でエンコードされた 2 つの整数のシーケンスのように見えます (0x302c は 44 バイトのシーケンスを示し、0x0214 は 20 バイトの整数を示します)。これは DSA 署名の標準的なエンコードです。
DSA_pub.verify_asn1 メソッドは文書化されていないため、文書化された DSA_pub.verify メソッドも使用してみましたが、まだ葉巻はありません:
ドキュメントには、すべてのパラメータは「バイト文字列」である必要があると記載されていますが、verify メソッドは何らかの方法でエンコード エラーを発生させます。潜在的なエンディアンの問題をチェックするために、r と s を逆にしてみましたが、それは役に立ちませんでした。
私は何を間違っていますか?
language-agnostic - サーバー認証用の秘密鍵/公開鍵システムをどのように作成しますか?
どこかに投稿されていたのではないかと思い、検索しましたが見つかりませんでした。
ゲームサーバーを実行するこのサーバーがあり、使用可能なコマンドがほとんどない疑似セッションを提供するTCPサーバー(おそらくRubyで記述)が必要な場所(ゲームサーバーの再起動、ログの送信など) .)
私が欲しいのは、人々がDSA公開鍵と秘密DSA鍵(生成方法を知っている)を持っているSSHのような認証であり、公開鍵はサーバーによって正しい認証として認識されます。
私はコードの実装を探しているわけではありませんが、主にこれをどのように構築するべきかを考えています。
私が考えていたのは次のようなものでした:
[Client]
サーバーに接続する[Server]
公開鍵を送る[Client]
サーバーの公開鍵でエンコードされた公開鍵を送信[Server]
キーを認証済みクライアントのデータベースと比較する[Server]
セッションキーを生成し、クライアント pub で暗号化して送信します[Client]
セッション キーをデコードし、常にセッション キーを伴うメッセージの送信を開始します
しかし、これは何かが足りない気がします。特に、DSA と PK システムを見ると、メッセージの署名が見られますが、公開鍵を使用して暗号化することとセッション鍵を使用することとの違いがよくわかりません。
私の質問が明確でない場合は、もちろん喜んで私の投稿を編集します :-)。
java - Java SHA1withDSAからPHP、変換可能?
PHPでSHA1withDSA署名を実装することに成功しましたか?ここで報告された障害。
security - DSA: ハッカーは公開鍵だけで何ができますか?
私が現在開発しているシェアウェア登録システムは、公開 DSA キーを実行可能ファイル自体に埋め込み、秘密キーはサーバー上に常駐します。(議論のために、サーバーは 100% 安全であり、誰も秘密鍵を手に入れる方法はないと仮定しましょう。)
プログラムが購入されるたびに、サーバーは秘密鍵でユーザーの名前に署名することにより、ユーザーのライセンスを生成します。そのライセンスは、ユーザーに電子メールで送信されます。ユーザーが自分の名前とライセンスをシェアウェア アプリケーションに手動で入力すると、アプリケーションに埋め込まれた公開鍵によって有効または無効なライセンスであることが検証されます。
ただし、実行可能ファイルを逆アセンブルして公開鍵を取得するのは、適切な「ノウハウ」を備えた決定的な人物にとってはかなり簡単なことです。
ここでの私の質問は、彼らはそれで何ができるでしょうか? 公開鍵自体は完全に無害ですか? 公開鍵は、キー ジェネレーターをリバース エンジニアリングするのに十分な情報ですか?
好奇心旺盛な人は知りたがっています。前もって感謝します!
java - Javaでのべき乗剰余
計算する方法が必要です:
Javaで。
(g ^ u)modpを計算するためのこのアルゴリズムを見つけました。
それはうまく機能しますが、私はこれを行う方法を見つけることができないようです
私の数学のスキルはつまらないので。
コンテキストに入れると、「縮小された」DSAのJava実装用です。検証部分では、これを解決する必要があります。
authentication - 2 つの異なるアカウントで同じ公開 ssh キーを使用する
状況は次のとおりです。私の家には 1 台のマシン (house_machine と呼びましょう) があり、オフィスには別のマシン (これを office_machine と呼びます) があります。office_machine から home_machine にアクセスするために、dsa キー認証を使用し、パスワード認証を使用せずに ssh を使用しています。home_machine に ssh サーバーをセットアップし、office_machine で生成された公開鍵を home_machine のauthorized_keys ファイルに追加しました。これは問題なく動作します。パスワードを使用せずにキーを使用するだけで、office_machine から home_machine に ssh できます。
ここで質問です。office_machine に属する公開鍵を使用するだけで、他のオフィスを訪れたときに home_machine にアクセスできるようにしたいと考えています。つまり、公開鍵 (id_dsa.pub) を USB ドライブに置き、それを別のオフィスの .ssh ディレクトリにコピーしたいと考えています。私がこのサイトで読んだことから、他の人はこの種のことを行うことができたようですが、機能していません. 新しいマシンにid_dsa.pubを配置しssh -v user@home_machine
てデバッグメッセージを実行すると、次のように終了します。
私の一時的な解決策は、home_machine の sshd_config で「PasswordAuthentication yes」を設定し、パスワードを使用して home_machine にアクセスすることでした。ただし、これはキー認証を使用するポイントを無効にします。
前もって感謝します!
c# - XML 文字列から DSA キーをインポートすると、1 人のユーザーが失敗します。許可?インストールが壊れていますか?KSPが悪い?
私のソフトウェアを使用しているときに、ユーザーが最近奇妙なエラーを報告しました。DSA 署名を使用してライセンスを確認しています。ソフトウェアが署名を検証するために公開鍵をインポートすると、DSA プロバイダーのFromXmlStringメソッドは、 「 Key not valid for use in specified state.」という説明とともにCryptographicExceptionをスローします。
System.Security.Cryptography.Utils.CreateProvHandle から呼び出された _OpenCSP メソッドが NTE_BAD_KEY_STATE (0x8009000b) を返すように見えます。誰かがこのエラーを私に報告したのはこれが初めてであり、そのコードは何年も変更されていません.
これの考えられる原因は何ですか? マスクされたアクセス許可エラーですか? CAPI のインストールが壊れていますか? .net の信頼/権限設定によってブロックされていますか? キーストレージプロバイダーによって保存されたジャンク、または cryptoapi に予期しないものを返す KSP はありますか?
エラーコード/説明/などをグーグルで調べましたが、何が原因であるかについての本当の答えに出くわしませんでした...
失敗したコードの分離バージョンは次のとおりです: http://forum.huagati.com/getattachment.ashx?fileid=78
...そして、影響を受けるユーザーのマシンでは次のように返されます。
更新:同じマシンで .net fx 2.0 を実行すると同じコードが正常に動作しますが、.net fx 4.0 では失敗します。
更新 2: DSA プロバイダーは、%APPDATA%\Microsoft\Crypto\DSS\[SID] に保存されているキーを探してから、既存のキーで初期化しているようです。このメカニズムと競合する可能性はありますか? その鍵ストレージがどのように動作するか、および文字列から公開鍵をロードするときにヒットするのはなぜですか?
.net - 秘密鍵から署名を作成するには? -DSA
提供された秘密鍵とハッシュ値から署名を作成しようとしています。DSA と次のコードを使用していますが、次のエラーが表示されます。
指定されたタイプが無効です。ソースmscorlib
次の行でエラーがスローされます: ImportCspBlob(pk)
私が正しい方向に進んでいるのか、それとも道を外れているのか、誰か教えてもらえますか?
これに関するヘルプは大歓迎です。
python - DSA検証計算
私は何かが足りないのですか?25ページのFIPS180-2から、u1、u2、g ^ u1 mod p、y ^ u2 mod p、およびvの値が得られます。vを除くすべての値を計算しました。計算はv=0x8bac1ab66410435cb7181f95b16ab97c92b341c0になることを拒否します。代わりに、以前からv = 0xc5a54698ae8e5b94661134260594ff4e3f488e26を取得します。これは、rと等しくありません。(pow(g, u1, p) * pow(y, u2, p)) % q
計算を行うために行っています。ここでpow
、は数学モジュール関数ではなく、組み込み関数です。
unix - rsyncでIDファイルをどのように使用しますか?
rsyncでIDファイルをどのように使用しますか?
これは、IDファイルを使用して接続するためにrsyncで使用する必要があると思う構文です。
しかし、それは私にエラーを与えています:
ファイルは問題なく、パーミッションは正しく設定されています。少なくとも私の構文では、sshを実行するときに機能します(rsyncでは機能しません)。私は何が間違っているのですか?リモートマシンでIDファイルを検索しようとしていますか?その場合、ローカルマシンでIDファイルを使用するように指定するにはどうすればよいですか?