まず、私が現在Cでプログラミングしている限り、このコミュニティに感謝したいと思います。私は行くと私は実際に正式な訓練をしないように自分自身を教えているので、皆さんは大きな助けになっている。c# - ローカルに実行されるアプリケーションでSSH接続用のパスワードを隠す
私は、私の会社が少し売れる機材をアップグレードするための日常的な作業の1つを行うための小さなアプリケーションを書いています。通常、これらのデバイスはインターネットに接続されていないため、SSHを使用してデバイスに接続し、アップグレードを実行するためにログインした後にいくつかのコマンドを実行するタスクを達成するために、顧客のコンピュータにリモート接続する必要があります。私は、アップグレードするオプションに関する情報を持つ暗号化されたキー(私たちの側で生成された)と、デバイス上でのみキーを使用できるようにするシリアル番号を顧客に配布することを望んでいます。
私のアプリでは、私はSharpSSHを使って初期のSSH接続を達成しています。しかし、私の懸念は、私たちのデバイス上のルートパスワードは、実際には非常に単純なものです。デバイスそのものは機能が限られているため、誰かが自分自身を持っていればできることはあまりありませんが、デバイスに乗っていれば、他のデバイスをアップグレードすることもできます。
私の質問は、どのようにして私のスクリプト内でパスワードを最もよく隠すことができ、分解者のいる人は簡単に検索できないのでしょうか?
今のコードは単純で、
SshStream ssh = new SshStream(ip, "easytoguessuser", "notsocomplexpassword");
だから私はどこかにパスワードを隠したいのですが、私は逆コンパイラを持つ人だけで開くことができませんでした意味方法を考えることはできませんexeとパスワードの場所を探すか、他の何かからそれを派生させる方法を教えてください。
私たちが顧客に送る鍵にユーザ名とパスワードを保存すると、「解読者」アプリで提供されているシリアル番号が適切な方法であれば正しく解読されます。これは、ユーザー名/パスワードが解読された場合にのみ表示されることを意味しますが、コードを理論的に再現し、コードが解読されパスワードを見つけた時点でブレークポイントを追加できますか?私はそれがより良いアプローチになると思うが、私はその時点で妄想的であるか? – andeke07
それは別のセキュリティ層を追加しますが、はい、デバッグすることは可能です。 – Dawnkeeper