2

Java でクラスの投票デスクトップ アプリケーションを構築するプロジェクトがあります。このプロジェクトの焦点はセキュリティではありませんが、できる限り現実的なものにしたいと考えています。セキュリティを Java アプリケーションに統合するための主要なツールは何ですか。

編集: 私は主に物理的なセキュリティについて心配しているわけではありません。システム全体ではなく、単にアプリケーションを構築しているだけです。投票が正しく記録され、他の人が変更したり読んだりできないようにしたい.

4

8 に答える 8

3

それは、統合しようとしているセキュリティの種類によって異なります。ユーザーがデバッガーなどを実行してアプリケーションのビットを反転させて投票を変更しないようにするためのセキュリティが必要ですか? 誰が誰に投票したかを追跡するために、ユーザーがログ記録ソフトウェアをインストールしないようにしますか? 投票するはずの人が実際に投票していることを確認したいですか? セキュリティは非常に幅広いテーマであり、正確に何を求めているのかを知らずに答えを出すのは困難です。

于 2008-08-27T02:14:03.050 に答える
2

私の会社は最近、非常に強力なセキュリティでアプリケーションを作成しました。多分それは役立ちます。

私たちのアプリ

Java EEアプリでした。

アーキテクチャは次のとおりです。

  1. クライアント コンピューターには暗号化パッケージがあります。
  2. 暗号化されたユーザー入力と出力を格納するダーティ サーバー
  3. キーと復号化されたデータを格納する、外部からアクセスできないクリーンなサーバー。

ユーザーには暗号化カードが発行され (安全性の低いもの (pgp など) を使用することをお勧めします)、jsp ページですべての入力を暗号化する必要があります。ページには、暗号化アプリに接続し、ユーザーに鍵のパスフレーズを要求し、サーバーの公開鍵で暗号化し、ユーザーの秘密鍵で署名してから送信するコンポーネントが含まれています。

データは外部サーバーに保存され、内部サーバーに転送され、そこで復号化され、署名が検証され、データが処理されて再暗号化され、ダーティ サーバーに送信され、ユーザーが取得できるようになります。

そのため、誰かがダーティ サーバーをクラックしたとしても (データベースを手に入れたとしても)、ほとんど役に立たないデータを取得することになります。

あなたのアプリ

暗号化され署名された投票をサーバーに送信します。次の 2 つのことを主張します。

  1. 誰が投票したか知ってる
  2. 誰も投票が何であったかを知ることはできません。

次に、サーバーからデータを取得し、投票した全員が最大で 1 回投票をカウントすることをアサートします。

于 2008-11-01T21:44:40.280 に答える
1

このようなもの (コードではなく) の "高レベル" の説明を探している場合は、Applied Cryptographyに関連する例がかなりあります (いくつかの投票戦略をカバーする "安全な選挙" に関するセクションがあると思います)。

于 2008-08-27T02:19:45.610 に答える
0

問題は、ユーザーを確実に識別して、ユーザーが再投票したり、お互いの投票にアクセスしたりできないようにする必要があることです。

これは、認証(および場合によっては承認)を必要とする他のデスクトップアプリケーションと何ら変わりはありません。投票者がユーザーアカウントを持つネットワーク上のクローズドグループである場合は、ディレクトリと統合して、ユーザーにログインを要求することができます。

有権者がネットワークユーザーアカウントを持っていない場合、これは興味深いところです。各ユーザーは、引き続きアプリケーションで認証する必要があります。アプリケーションでパスワードを使用してアカウントを生成し、投票する前にこの情報を安全に配布できます。アプリケーションは、アプリケーションに初めてアクセスするときに、ユーザーにパスワードの選択を求めることができます。

詳細を知らなければ、より具体的な答えを出すのは難しいです。

于 2009-03-14T01:45:43.600 に答える
0

あなたは電子投票が未解決の研究問題であることを知っていますか?大規模な詐欺は多大な努力を要するはずです。

于 2009-07-07T08:48:39.290 に答える
0

私は主に物理的なセキュリティについて心配していません。システム全体ではなく、単にアプリケーションを構築しているだけです。投票が正しく記録され、他の人が変更したり読んだりできないようにしたい.

于 2008-08-27T03:31:27.747 に答える
0

投票ブースシステムでは、ご存じのコードセキュリティよりも物理的なセキュリティの方が重要だと思います。
これらのマシンは、その性質上、いかなる種類の公共ネットワーク、特にインターネットにも接続すべきではありません。しかし、あらゆる種類の物理的な改ざんを防ぐために、優れた物理的なセキュリティを確保することは非常に重要です。

于 2008-08-27T02:46:59.647 に答える
0

物理的なセキュリティは現在の懸念事項ではないと規定しているため、物理的な改ざん(基盤となるデータベースなど)から保護するという質問を脇に置きます...

主な考慮事項は、特定の有権者が 1 回だけ投票するようにする方法だと思います。紙の投票では、登録された各有権者は特定のブース/場所に限定され、確認は名前と SSN および署名によって行われます。

高解像度のデジタル署名キャプチャが必要な場合があるため、タッチスクリーン キャプチャ周辺機器またはタッチ スクリーン端末が必要になる場合があります。より洗練されたアプローチは生体認証スキャナーですが、それには政府の親指/指紋または網膜スキャンの記録が必要です - 私はすでにプライバシー擁護者が弁護士のオフィスに並んでいるのを見ています.

別のアプローチは、有権者の「登録局」が選挙前に各有権者にデジタル キーを発行することです。これは、有権者の名前および/または SSN と共に入力される (比較的) 短い (暗号的に強力な) ランダムな英数字キーです。応用。その特定の選挙の特定の有権者には、そのキーの知識が必要です。これらの鍵は、銀行が電信送金の郵便確認や PIN 番号の送付に使用する封筒と同様に、不正開封防止封筒に入れて郵便で発行されます。キーにはチェックサム データを含める必要があります。これにより、ユーザーはそのエントリをすぐに検証できるようになり、XXXX-XXXX-XXXX-CCCC のように 4 つのグループにする必要があります。

SSN などのその他の「秘密」の知識は、人口の大部分にとってあまりにも簡単に発見される可能性が高く (ただし、信用供与組織にこれを理解させることはできないようです)、したがって、認証には適していません。

中央システムに (スニーカー ネットで?) 転送される公開鍵暗号化データ ファイルを生成することにより、投票の集計を行うことができます。これには、「投票ブース」の ID 情報と、SSN とデジタル キー (または署名、生体認証データ) を含む各投票者の記録が含まれている必要があります。無効なキーを持つ投票は除外されます。同じキーと同じ投票による複数の投票は、その候補に対する単一の投票として扱われます。同じキーで異なる投票を持つ複数の投票は、不正調査のためにフラグが立てられます (構成員に電話で連絡し、新しいキーを発行し、取り消すように指示します)。

于 2008-11-01T06:50:20.927 に答える