機密データの保存-ベストプラクティス


8

私は最近、Javaを使用してデータベースに接続する個人プロジェクトに取り組み始めました。これは私に考えさせられました。データベースにアクセスするには、DBサーバー上のデータベースアカウントのログイン情報を提供する必要があります。しかし、私がそれをハードコーディングすると、誰かがプログラムを逆コンパイルしてそのログイン情報を抽出する可能性があります。外部のセットアップファイルに保存すると、同じ問題が発生するだけで、簡単に入手できます。どちらかの場所に保存する前にデータを暗号化することもできましたが、それも実際にはフェールセーフではないようで、暗号化の専門家ではありません。それでは、プログラムの機密セットアップデータを保存するためのいくつかのベストプラクティスは何ですか?

回答:


10

ここにいくつかのオプション:

  • データベースへのアクセスが許可されているドメインユーザーの下でJavaプログラムを実行します(または、プログラムを実行しているユーザーだけがアクセスできるファイルにパスワード情報を保存します)。

  • キーストアを使用します。ユーザーと、キーを使用するソフトウェア(Mac OS Xが提供するものなど)の両方に制限があります。

  • プログラムの起動時に暗号化パスワードの入力を必要とするインターフェイスを備えた標準の暗号化ソリューションを使用します(プログラムを起動する管理者はパスワードのみを知っているため)

  • プログラムの起動時にデータベースのuid /パスワードを入力する必要があります


3

機密データの保存に関する最初のルールはそうではありません。この場合、ほぼすべての認証システムが行うことを実行する必要があります-この問題が発生しないように、各ユーザーに独自の資格情報を発行します。または、「ああ、スナップ、データベースアカウントが危険にさらされました。今度は、すべてのユーザーにこのパスワードを再発行する方法を知らなければなりません。知らないものも含めます。」


2

アプリケーションを受け取った人がユーザー名とパスワードを知るのを防ぐ方法はありません。それが受け入れられない場合は、アプリケーションとデータベースの間にWebサービスなどのソフトウェアを配置する必要があります。


1

通常、この種の情報を暗号化しようとします。たとえば、.NETでのWeb開発の一般的な方法は、接続文字列を含むweb.configのセクションを暗号化することです。もう1つの方法は、直接接続の代わりにdomain / windows / osアカウントを使用することです。これにより、アプリまたは構成ファイルにパスワードをハードコーディングする必要がなくなります。代わりに、アプリケーション(またはアプリケーションが実行されるアカウント)のユーザーを承認することにより、接続を管理します。


-2

逆コンパイルできないようにアプリケーションを暗号化する必要があります。私はJavaツールを知りませんが、確かに存在します。

ちなみに、安全のために常にアプリケーションを暗号化する必要があります!その後、必要に応じてハードコードできます。

編集:コメントに続いて、私はあなたがアプリケーションを暗号化できることを正確にします、暗号化されたアプリを実行するためにユーザーのマシンにツール(一種の「オンザフライ」解読器)が必要です。これは私がFoxproで使用したもので、おそらく他の言語にも存在します。たぶん、そのようなツールは最近のテクノロジーでは使用されていないかもしれませんが、実行中にアプリを逆コンパイルできないことは間違いありません。

編集2:.NET暗号化用に見つけた製品:http : //www.hallogram.com/ezcryptonet/index.html


4
難読化!=暗号化。あなたが推奨したことは、技術的に実現可能ではなく、どのソフトウェアにも存在しません。逆コンパイルできないように暗号化されたプログラムも実行できません。実行可能なプログラムはいつでも逆コンパイル可能
blueberryfields

2
ユーザーが解読プログラムの出力を収集したり、解読プログラムを変更したりするのを妨げているものは何ですか?
kevin cline

私の言い回しは間違っていました。解読されませんが、解釈されます。解読器を変更することについて、まあ、それはおそらく可能性があるかもしれませんね。サブジェットに関する私の知識は、それに答えるには十分に拡張されていません。
Mathieu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.