問題タブ [public-key]
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.
.net - コードでアセンブリの公開鍵を見つける
コードを介して .NET アセンブリの公開キーを見つけるにはどうすればよいですか?
コマンド ラインから、sn -Tp assemblyNameを使用して公開キーを見つけることができます。
コードで同等のもの (c# または VB) は何ですか?
c# - 証明書公開鍵を使用したJavaでの署名の検証
いくつかのC#コードをJavaで同等のものに変換しようとしています。
C#コードは、いくつかの文字列コンテンツと署名(別のマシンで秘密鍵を使用して生成された)を受け取り、公開鍵と組み合わせて署名の一致を検証し、要求が改ざんされていないことをある程度保証します。
公開鍵自体はX509証明書です-.cerファイルから構築され、アセンブリリソースとして保存されます。
私が探しているのは、Javaでこの機能をエミュレートすることです。これにより、C#のコードによって生成された署名を検証できます... Javaの暗号機能の調査を開始しましたが、私はJava初心者です。 。これが私がこれまでに思いついたものです:
誰かが私が署名を検証する方法についての洞察を提供できますか?または、Java.cryptoとjava.security.certの使用法をミルjavaドキュメントの実行よりもよく説明する可能性のあるいくつかのリソースへのリンクを提供できますか?
security - このアーキテクチャはどの程度安全ですか?
セキュリティで保護された Web 接続を介してユーザーの機密データを収集し、後で自動化された復号化と再利用のためにサーバーに安全に保存する必要があるシステムを構築しています。また、システムは、ユーザーが保護されたデータの一部 (例: *****ze
) を表示したり、Web 経由で完全に変更したりできるようにする必要があります。システムは妥当なレベルのセキュリティを提供する必要があります。
私は次のインフラストラクチャを考えていました:
アプリ (ウェブ) サーバー 1
安全な Web 接続のための適切な TLS サポートを備えた Web サーバー。
公開鍵アルゴリズム (RSA など) を使用して、入力されたユーザーの機密データを暗号化し、 App Server 1またはDB Server 1のどこにも保存せずに、一方向のアウトバウンド セキュア チャネル (ssh-2 など) 経由でApp Server 2に送信します。
ユーザーパスワード依存の対称鍵アルゴリズムを使用して、入力されたデータの一部 (最後の数文字/数字など) を暗号化し、DB サーバー 1に保存して、後でユーザーの Web セッション中にアプリケーションサーバー 1で取得できるようにします。
ユーザーが Web 経由でデータを変更する場合は、ステップ 2 を再利用します。
DB サーバー 1
- セキュリティで保護されていない非機密ユーザー データを保存します。
- アプリケーション サーバー 1で暗号化された機密ユーザー データの一部を保存します (上記の手順 3 を参照) 。
アプリ サーバー 2
- App Server 1またはDB Server 1には何も送信 しない でください。
- アプリケーション サーバー 1から暗号化されたユーザーの機密データを受信し、 DB サーバー 2に保存します。
- 暗号化されたユーザーの機密データを ローカル スケジュールに従ってDB サーバー 2から取得し、適切なキー管理でアプリ サーバー 2にローカルに保存されている秘密キー (アプリ サーバー 1の手順 2 を参照)を使用して復号化します。
DB サーバー 2
- 暗号化されたユーザーの機密データを保存する ( App Server 2のステップ 2 を参照)
アプリ (Web) サーバー 1またはDB サーバー 1 、あるいはその両方が侵害された場合、攻撃者はユーザーの機密データ (暗号化されているかどうかにかかわらず) を取得できなくなります。とにかくよく知られている公開鍵と暗号化アルゴリズムへのアクセスだけが攻撃者に与えられます。ただし、攻撃者は Web サーバーを変更して、現在ログインしているユーザーのパスワードを平文で取得し、DB サーバー 1 に保存されているユーザーの機密データの一部を解読することができます ( App Server 1を参照)。、ステップ 3) は大したことではありません。攻撃者は、(コードの変更を介して) 潜在的な攻撃中にユーザーが Web 経由で入力した機密データを傍受することもできます。後で私はリスクが高いと考えますが、攻撃者が誰かに気付かれずにコードを変更するのは難しい (そうですか?) ことを考えると、あまり心配する必要はないと思います。
App Server 2と秘密鍵が侵害された場合、攻撃者はすべてにアクセスできますが、App Server 2またはDB Server 2は Web 向けではないため、問題にはなりません。
このアーキテクチャはどの程度安全ですか? 暗号化アルゴリズムと安全なプロトコルがどのように機能するかについての私の理解は正しいですか?
ありがとうございました!
sftp - MSFTP と WinSCP を使用して毎日新しいホスト キー
ソース側で「Core FTP mini-sftp-server」を使用し、宛先側でWinSCPを使用して、あるサーバーから別のサーバーにファイルを転送しています(両方のサーバーがWindowsを実行しています)。
両方のサーバーで同じローカル管理者アカウントを使用して、これら 2 つのマシンにログインしています。私はこのプロセスを手動で行っています:
- ソースで MSFTP サーバーを起動する
- 宛先で WinSCP を開始し、ソースに接続してファイルを取得します。
今、私はそれを自動化したいので、次のことを試しました
msftp
ソースのコマンド ラインから開始します。
winscp.exe
コンソールの目的地:
これに関する問題は、毎日初めて行う場合、宛先側でキーを更新するように求められることです:
「潜在的なセキュリティ侵害の警告! サーバーのホスト キーが WinSCP のキャッシュと一致しません。これは、サーバー管理者がホスト キーをチャージしたか、特定の状況下でサーバーが別のキーを提示したか、実際に別のコンピューターに接続したことを意味します。サーバーのふりをしている」
最初は手動で行う必要があり( Updateをクリック)、次のコピーでは自動化が機能します。
質問:
サーバーへの接続中にコマンドラインを使用してキーを更新するにはどうすればよいですか?
ソースが毎日新しいキーを生成するのを防ぐことはできますか? それともやるべきですか?
encryption - ハイブリッド暗号システムのクライアントに AES 初期化ベクトルを通信する方法
クライアントとサーバー間の通信にセキュリティを実装する必要があります。次のハイブリッド暗号システムを実装しました
Alice 宛てのメッセージをハイブリッド暗号システムで暗号化するために、Bob は次のことを行います。
- Alice の公開鍵を取得します。
- データ カプセル化スキームの新しい対称キーを生成します。
- 生成されたばかりの対称キーを使用して、データ カプセル化スキームでメッセージを暗号化します。
- アリスの公開鍵を使用して、鍵のカプセル化方式で対称鍵を暗号化します。
- これらの暗号化を両方とも Alice に送信します。
このハイブリッド暗号文を復号化するために、Alice は次のことを行います。
- 彼女の秘密鍵を使用して、鍵カプセル化セグメントに含まれる対称鍵を復号化します。
- この対称キーを使用して、データ カプセル化セグメントに含まれるメッセージを復号化します。
公開鍵暗号システムには RSA を使用し、対称鍵暗号システムには AES を使用しています。すべてが正常に動作しますが、AES 初期化ベクトルを処理する方法がわかりません。現在、AESキーと初期化ベクトルを連結して公開キーで暗号化し、それをサーバーに送信しています。
このアプローチについて意見を求めたかっただけです。この問題が他の通信プロトコル SSL などでどのように解決されているか。
ありがとう。
permissions - 許可が拒否されました (公開鍵、キーボード インタラクティブ)
ssh を使用して、planetlab ノードに接続しようとしました。Permission denied (publickey,keyboard-interactive) のようなエラーが表示されます。これは何を意味するのでしょうか?例外の詳細は次のとおりです。
iphone - iPhone: 公開鍵ファイル (PEM) から SecKeyRef を作成する方法
iPhone との間で暗号化されたメッセージを送受信するには、公開鍵 (サーバーの公開鍵) PEM ファイルを読み取って SecKeyRef を作成する必要があります (後で作成しないようにキーチェーンに保存することもできます)。
これは私の現在のワークフローです:
- サーバー上: ユーザーの証明書と秘密鍵を使用して P12 ファイルを作成します。ユーザーの公開鍵をサーバーのキーチェーンに保存します。
- iPhone の場合: サーバーから P12 ファイルを取得し、パスワードを使用してファイルを開き、秘密鍵をキーチェーンに保存します。
- iPhone の場合: サーバーの公開鍵を使用して PEM ファイルをサーバーから取得します。SecKeyRef を作成し、キーチェーンに保存します
- iPhone の場合: 両方のキーを使用して、サーバーとの間で暗号化されたメッセージを送受信します。
- 末永く幸せに過ごす。
PEM ファイル データから SecKeyRef を作成できないため、3 に問題があります。それを行う方法に関するドキュメントが見つかりません。誰か同じ問題がありましたか? ヒントはありますか?これに関するコード例やドキュメントが見つからないため、何か間違ったことをしているように感じます...
ありがとう!
c# - pem ファイルまたは xml ファイルから RSA 公開鍵を読み取る方法
やるべきことは簡単です:ページに示されているように、AESアルゴリズムとpemファイルに含まれるキーを使用してデータを暗号化したい: http://msdn.microsoft.com/en-us/library/sb7w85t6.aspx
この例では、関数が実行されるたびに新しい暗号化キーが作成されます。しかし、pem ファイルまたは xml ファイルからこのキーを読み取る必要がありますが、それを行う方法が見つかりません。
pem ファイルからキーを読み取り、それをバイト配列 (byte[]) に変換する簡単な方法はありますか?
私は C# - .net Framework 3.5 を使用しており、ファイル内のキーはパートナーの RSA 公開キーです。
git - VISTAでgit push heroku master権限が拒否されました
(Vista を使用) GitHub リポジトリからアプリのクローンを作成し、Heroku にプッシュしようとしています。さて、これで何度もSSHキーを作成しようとしました:
それは完璧に行くようです。C:/Users/***/.ssh フォルダーにあります。GitHub でフォークしたアプリのクローンを作成しようとしています。rails_apps ディレクトリにクローンしようとすると、次のようなメッセージが表示されます
これを最初に実行する必要があるという解決策をネットで見つけました:
それでやってみました。しかし、それは言った:
認証エージェントへの接続を開けませんでした。
次に、グーグルで調べた後、ssh-agentの実行に関する何かを見つけました。だから私はこれを行います:
コマンド ラインは私の rails_apps ディレクトリから次のように変更されます。
だから私は実行します:
rsa 秘密鍵が正常に追加されます (id-rsa.pub では機能しません)。また、新しく生成された公開鍵を GitHub アカウントに貼り付けました。
クローンを作成しようとすると、次のようになります。
これで、GitHub でフォークしたリポジトリのクローンが正常に作成されました。ローカル リポジトリにアプリを作成したので、heroku アプリを作成してみます。
そして、このコードは正常に実行されます。Git リモートが正常に追加されました。あとはプッシュするだけです。
バム!エラーメッセージが再び表示されます。
Permission denied (public key)
アプリをherokuにプッシュすることにとても近づいています。しかし、それはうまくいきません。手伝って頂けますか。ここで何が間違っていますか?ありがとう!:D
c# - RSACryptoServiceProvider KeyPassword の単純な使用が失敗する
パスワードで RSA 秘密鍵を保護したいのですが (そうしない人はいません)、次の C# は失敗します。
...CryptographicException:「無効なタイプが指定されました」。KeyPassword の割り当てを取り除くと、正常に動作します。
私、またはマイクロソフトは何を間違っていますか?