私は、人々が匿名でお互いのコメントにコメントしたり賛成したりできる、非常に匿名のフォーラムを構築することを考えています。フォーラムのデータベースの内容が公開されたとしても、人々は匿名のままでいることになっています。不正投票を防ぐための一歩として、IPアドレスの一部を保存することを考えています。その一部のみ— IP全体を保存するとしたら、フォーラムはそれほど匿名ではなくなります。
IPアドレスは111.222.333.444
のようなものです。 IPアドレスのどの部分を保存することをお勧めしますか? (もしあれば?)
そして、IPv6についてはどうですか?IPv6番号のどの部分ですか?
私の知る限り、IPアドレスの最初の部分はインターネットサービスプロバイダーを識別します。最後の桁は、ISPのネットワーク内のコンピューターを識別します。パーツ_22と_44、___._22.___._44
の保管はどうですか?
(IPをハッシュすることはオプションのようには思えません。4e9IPしかないため、ハッシュを解読するのは比較的簡単です。つまり、すべての4e9 IPをテストして、どのIPが特定のハッシュになるかを調べます。そして秘密をハッシュする秘密の値が公開されても、人々は匿名のままであるはずなので、値+ IPも機能しません。)
(ブルームフィルターはオプションですが、コメントごとに5KBのような、かなり多くのストレージスペースが必要になると思います。)
IPv4の場合、適切なオプションはありません。アドレス空間は事実上完全に使用されているため、部分的なストレージは、1人の投票者が他の人の投票をブロックする可能性があることを意味します。左側の数字は通常、ISP、地理的領域などを表しています。攻撃者が他の方法で把握できる可能性のあるものです。右側の数字は通常、個々のユーザーを表しています。
アドレスのどの部分を保存するかによって、どのユーザーの投票が他のどのユーザーをブロックするか、およびある程度のプライバシーが提供されるパターンが決まります。たとえば、住所の右端の3つの部分を保存すると、ユーザーはISPの他の人の投票をブロックできませんが、世界中に散らばっているランダムな人をブロックします。ユーザーのISPを推測できる攻撃者は、完全なIPアドレスを把握できます。一方、左端の3つの部分を保存すると、攻撃者はユーザーがどのISPから、おそらく地理的な場所から来たのかをすぐに知ることができますが、個人を特定することはできません。小さなISP(またはカタールの国)の1人の投票者は、他のすべての投票者をブロックできます。
IPv6は異なります。基本的に、アドレスの上半分はISPによってユーザーに割り当てられ、下半分は個々のデバイスによって生成されます( IPv6ステートレス自動構成 および IPv6プライバシー拡張 を参照) )。
アドレスの下半分のみを保存すると、データベースのコピーを取得した人は、参加している疑いのある人が実際に参加していることを確認できますが、反対方向に進んで参加者のリストを生成することはできません。ユーザーがプライバシー拡張機能を有効にしたOSを使用している場合、確認は不可能ですが、重複投票を防ぐことができます。
上半分のみ(または上半分の一部のみ)を保存する場合、状況は基本的にIPv4の場合と同じです。
IPを16ビットにハッシュしてそれらの16ビットを保存することができます。次に、65536の可能なハッシュ値があり、それらのハッシュのそれぞれについて、その値にマップされるおよそ65536の可能なIPがあります。
または、IPを8ビットのみにハッシュして、256個の可能なハッシュのみが存在するようにします。各ハッシュは約2 ^(32-8)= 16 777 216IPのいずれかから発生します。
これにより、元のIPのすべての部分が非表示になります。
ただし、1)IP番号が与えられた場合、ハッシュしてハッシュを探すことで、Webサイトにアクセスした可能性が高いかどうかを確認できます。また、2)Webサイト(IPハッシュを含むデータベースを含む)が特定のそれほど大きくない都市に関連している場合、IPハッシュにアクセスできる攻撃者は、都市の近くにあるすべてのIPアドレスを列挙する可能性があります。それらのIPのうち、データベース内のハッシュと一致するのはごくわずかです。このようにして、Webサイトにアクセスした市内の人々の実際のIPを見つけることができる可能性があります。 —したがって、小さな村では、より短いハッシュを使用できます/使用する必要があります。
これは、通常のユーザー(つまり、匿名以外のユーザー)向けです。私は彼らのIPアドレスを永久に保持したくないので、しばらくすると、代わりにIPをハッシュに変換することができます。本当に匿名のユーザーにとっては、何も覚えておくべきではないと思います。
(私自身の質問に答えます。)