問題タブ [securestring]

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.

0 投票する
1 に答える
2110 参照

c# - WPF PasswordBox & SecureString: MakeReadOnly() はできませんか?

PasswordBox.SecurePasswordとしてマークすることは可能ReadOnlyですか?

次の簡単なコードを検討してください。

XAML:

C#:

を出力しますFalse。なんで?

EDIT:念のため、これを試してみたところ、期待どおり「True」が出力されました。

0 投票する
2 に答える
11015 参照

wpf - PasswordBox からパスワードを取得する

ここSOでこの問題に関するいくつかの情報を見つけましたが、どういうわけか実際にはわかりません;-)私が読んだことから、セキュリティ上の理由により、PasswordBoxのパスワードをプロパティにバインドすることはできません。つまり、プレーンなパスワードを保持します記憶に。

私のモデルにはこれが含まれています:

PasswordBox へのデータ バインドはサポートされていませんが、Microsoft はPasswordBox からパスワードを取得して安全な方法で使用する方法を知っているはずです

そうするための適切で比較的簡単な方法は何ですか?

0 投票する
3 に答える
4493 参照

.net - 最初にセキュリティで保護されていない文字列に変換せずにディスクに保存するためにDPAPIを使用してSecureStringを暗号化するにはどうすればよいですか?

ディスクに保存できるように、DPAPIを使用してSecureStringを暗号化したいと思います。

.net DPAPIクラスはProtectedDataクラスですが、ProtectedData.Protectには、バイト配列を使用する単一のオーバーロードがあります。SecureStringを受け入れるオーバーロードはありません。

.NET app.configファイルでのパスワードの暗号化では、John Gallowayは、最初にSecureStringをセキュリティで保護されていない文字列に変換することにより、上記の過負荷を利用します。そもそもSecureStringを使用する目的が損なわれるため、これは避けたいと思います。

ConvertFrom-SecureString PowerShellコマンドレットは、「キーが指定されていない場合、Windows Data Protection API(DPAPI)を使用して標準の文字列表現を暗号化する」ため、必要なことを実行しているようですが、このコマンドレットをどのように使用するかわかりません。 .netから直接、またはそうすることをお勧めします。

0 投票する
4 に答える
6474 参照

c# - .NET で SecureString をハッシュする

.NET には、SecureString クラスがあります。これは、(たとえば) 文字列をハッシュするためにプレーンテキストが必要なため、試して使用するまではすべて問題ありません。ここでは、バイト配列を取り、バイト配列を出力するハッシュ関数が与えられた場合に、SecureString をハッシュする関数を作成してみました。

これにより、文字列が正しくハッシュされ、提供されたハッシュ関数が適切に動作し、入力のコピーを作成しないと仮定すると、関数が戻るまでにメモリから平文のコピーが正しくスクラブされると思います。スクラブ自体。ここで何か見逃しましたか?

0 投票する
2 に答える
12952 参照

c# - ログインフォームでのSecureStringの安全な使用

したがって、めったに使用されないように見えるこのクラスがあります:SecureString。少なくとも2.0から出回っていて、いくつかのSOの質問がありますが、私は自分自身の特定の質問をしたいと思いました。

LoginFormがあります。ユーザー名と(マスクされた)パスワードフィールドを含む単純なWinFormsダイアログ。ユーザーが両方を入力して[ログイン]をクリックすると、情報はキーストレッチのレイヤーを実行する挿入された認証クラスに渡され、検証のためにストレッチされたキーの半分をハッシュし、残りの半分は暗号化されたユーザーの対称キーですアカウントデータ。これがすべて完了すると、loginFormが閉じられ、オーセンティケータークラスが破棄され、システムはメインフォームのロードに進みます。かなり標準的なもので、標準のパスワードと比較のハッシュよりも少し複雑かもしれませんが、私の場合、単純なハッシュパスワードは、ユーザーデータをプレーンテキストで保存することで無効になります。これは、そのデータに3分の1の資格情報が含まれているためです。パーティーシステム(そして私たちは皆、人々がパスワードを再利用する方法を知っています)。

これが最初の質問です。SecureStringを使用して、テキストボックスのTextプロパティを介して通常のSystem.Stringとして公開せずに、Passwordテキストボックスからパスワードを取得するにはどうすればよいですか?CLRクラスによってラップされているテキストボックスのアンマネージGDIウィンドウにアクセスし、Marshalクラスを使用してテキストデータをプルする方法があると思います。方法がわからず、良い情報が見つからないようです。

これが2番目の質問です。SecureStringとしてパスワードを取得したら、System.Security.Crypto名前空間からハッシュプロバイダーにパスワードを渡すにはどうすればよいですか?私の推測では、Marshal.SecureStringToBSTR()を使用してから、返されたIntPtrからバイト配列に戻るMarshal.Copy()を使用します。次に、Marshal.ZeroBSTR()を呼び出してアンマネージメモリをクリーンアップし、ハッシュを取得したらArray.Clear()を使用してマネージ配列をゼロにすることができます。メモリの管理されたコピーの存続期間を完全に制御できるよりクリーンな方法がある場合は、教えてください。

3番目の質問; これは本当に必要なことですか、それともマネージドメモリ環境でのSystem.Stringの固有の不安定さは少し誇張されていますか?暗号化されているかどうかにかかわらず、パスワードの保存に使用されるものすべて範囲外であり、OSがアプリを仮想メモリにスワップすることを検討するずっと前にガベージコレクターに向かう必要があります(パスワードをスワップファイルからスニッフィングできるようにするコンピュータのハードシャットダウン)。コールドブート攻撃は理論的な可能性ですが、実際、これはどのくらい一般的ですか?より大きな懸念は、現在復号化されているユーザーデータです。これは、アプリケーションの存続期間全体にわたってユーザーの一部として存在します(したがって、いくつかの基本的な使用法を除いて、SecureStringsを使用するための主要な候補となります)。

0 投票する
1 に答える
3328 参照

powershell - PowerShell SecureString を使用してサーバー管理者のパスワードを変更できますか?

PowerShell を使用してリモート サーバーの管理者パスワードを変更するスクリプトを作成しようとしています。次のコマンドはこれを行います

しかし、"NewPassword"より安全にするために、スクリプト内で を非表示にしたいと考えています。

安全な .txt ファイルに保存し"NewPassword"て、このように使用できる方法はありますか?

スクリプトは、スケジュールされたタスクとして実行されます。

0 投票する
3 に答える
5016 参照

powershell - SecureStringforplink.exeコマンドを使用したパスワードの暗号化

PowerShellでパスワードを暗号化したい

私はこれを試しました:

CLIの場合:

私のscript.ps1で:

しかし、それは機能しません...

クレデンシャルで試しましたが、良くないようです...

(私のパスワードにはスペースやアクセント文字がありません)

何か案が?

0 投票する
2 に答える
32744 参照

powershell - powershell の read-host 関数を使用して、外部サービスのパスワードを受け入れるにはどうすればよいですか?

SOAP サービスに接続するスクリプトを書いています。接続が確立されたら、送信するすべてのコマンドでユーザー名/パスを渡す必要があります。私が抱えている問題は、これを行うために read-host を使用すると、パスワードがクリアテキストで表示され、シェルに残ることです。

-AsSecureString で非表示にすると、System.Security.SecureString オブジェクトになっているため、値をサービスに渡すことができなくなります。

これを渡すとうまくいきません。パスワードがクリアテキストでサービスに渡されることは気にしません。ユーザーがパスワードを入力した後、ユーザーのシェルに残りたくないだけです。Read-Host 入力を非表示にできますが、パスワードはクリアテキストとして保存できますか? そうでない場合、System.Security.SecureString オブジェクトをクリアテキストとして渡す方法はありますか?

ありがとう

0 投票する
1 に答える
731 参照

c# - パスワードを正しく保存する方法

リモート Web サイトにログインできるプログラムを作成しようとしています。複数のアカウントを持っている人のために、簡単にアカウント データを保存できるようにしていますIsolatedStorage。私のコードの現在の状態では、パスワードは単に入力TextBoxされ、保存されるとすぐに MD5 ハッシュに変換されます。

これを適切なコードにリファクタリングしたいのですが、行き詰まりました。

Aは、およびPasswordBoxを介してデータを公開します。PasswordBox.SecureStringPasswordBox.Password

したがって、保存ボタンをクリックすると、次のようなことを実行します

ここで私の質問

  • プレーン パスワードを に入力するとすぐにPasswordBoxvar passwordメモリに何かが表示されますか? 一部のハッカーは、リフレクション/デバッグを通じてこの単純な値を可視化できますか? これらの文字列を実際に表示するコードはどれですか? そして、私は何を認識する必要がありますか?
  • の扱い方SecureStringPasswordBox

私はこれらすべてに少し圧倒されており、アプリケーションでパスワードを適切に処理する方法の本質をまだ理解できていません。

私は、ソリューション全体と実行中のコードを求めているわけではありません。誰かが私を始めてくれるなら、私はただうれしいです. また、エンタープライズ ソリューションは必要ありません。実装が簡単で、労力をできるだけ節約できるものを探しているところです。