web-dev-qa-db-ja.com

IDをハッシュするための手動関数?

質問を閉じないでください。コンピュータは必要ありませんが、それでも情報とセキュリティに関するものであり、セキュリティの専門家が最善を尽くすことができると思います。

ユーザー調査をしたいです。質問票に記入し、2か月後に別の質問票に記入する必要があります。匿名性を保証する必要がありますが、ラウンドAの人の回答とラウンドBの同じ人の回答を一致させることができれば、それでも非常に良いでしょう。

これがオンラインで行われたとしても、コンピュータシステムにそれらについて何かを見つけさせて、それが私のためにマッチングを行うことができるとは思いません。理論的には、名前を尋ねてそのmd5ハッシュを保存することができます。実際には、参加者に匿名で名前を尋ねると、信頼を失います。そして、アンケートの始まりは、md5が何であるかについてランダムな人々を教育するのに良い場所ではありません。しかし、これをさらに難しくするために、ロジスティック上の理由から、次の調査はペンと紙を使用して行うと思います。

私が人々にトークンを与え始めたら、彼らは2ヶ月の間にそれらを失うと思います。したがって、私が考えることができる最善の解決策は、ある種の手動ハッシュです。たとえば、「姓と生まれた月の2番目と5番目の文字を入力してください」と尋ねることができます。だから私の質問は、どうすればこの種の優れた機能を思い付くことができるのでしょうか?

  • 人に関するどのデータポイントを使用できますか?それらは存在することが保証されている必要があり(上記の例では、人が4文字の姓を持っている場合は壊れます)、非常に個性的で(ただし、100%一意ではありません)、人はどこかで調べなくてもそれらを知っている必要があります。
  • Y人のグループでX%未満の衝突の可能性を確保するために要求する必要のある桁/文字の数を計算する便利な方法はありますか?
  • 考えられるデータのいくつかは他のデータよりも問題がありますか?たとえば、「ブルートフォース攻撃」で誰かが自分の姓を調べて見つけようとするのは簡単だと考えているため、姓の最初の文字を2番目の文字よりも書き留めたがらない可能性があります。彼らは誰ですか?
  • それを超えると人々が遊んでいないか、間違いを犯し始める最高レベルの複雑さをどのように見つけることができますか?
1
rumtscho

残念ながらリンクがない調査が行われ、ユーザーのデータに個人を特定できる情報が含まれていなくても、場所が大まかにわかっていれば、他の属性の個人を追跡できることがわかりました。 。現在、これは疎な領域ほど密な領域に適用できる場合とできない場合がありますが、誰かが匿名性を約束した場合、それは懸念事項になる可能性があります。

あなたが提案しているアプローチで、彼らが両方の時間に同じコードに到達し、異なるコードに到達するためにわずかな間違いをしないことをどのように保証しますか?彼らにはそれを確認する方法がないことを忘れないでください。

あなたの質問は自由形式なので、あなたが取ることができるいくつかの異なる種類のアプローチがあります:

1)アンケートを配布する際に、両方を事前に提供することはできますか?たとえば、一方をすぐに記入し、もう一方を封をした封筒に入れて、2か月後に開いてから記入するようにしますか?もちろん、それが可能な場合は、両方の調査で同じIDを持つことができます。もちろん、彼らが調査を失う可能性はありますが、あなたのサンプルでは、​​最初に調査された人々の中には、2回目に調査を提供しない人もいると想定する必要があると思います。あなたが提供したコードと比較して、彼らが調査を失う可能性はおそらく少し低いでしょう。

2)おそらく、電話の最後の4桁、住所の2桁など、またはそのような単純な組み合わせを使用して、オンラインCRC32またはMD5ハッシュ関数を使用させることができます。彼らはまだ個人を特定できる情報をあまり提供しておらず、懸念がある場合は、ハッシュを取得しているサイトがあなたに関連していないことを確認できます。これはユーザーフレンドリーではありませんが、質問で指定したスキームを使用して独自のハッシュを計算するよりも間違いなくフレンドリーです。 (たとえば、ここを参照してください: http://www.fileformat.info/tool/hash.htm -「オンラインでハッシュを計算する」などを検索することもできます。いくつかの電話アプリにもなります。)

あなたが持っているコードアプローチに関しては、どこかのデータベースにある変数を使用するときはいつでも、ユーザーは追跡可能であることに注意してください。たとえば、私の診療所には、私の社会的安全、生年月日、名前があります。どのように調査に依頼しても、誰かが自動ツールを簡単に実行して、コードの計算対象を見つけることができます。それらの記録のそれぞれと調査を見つけます。もちろん、それは匿名であることがどれほど重要であるか、そしてあなたが何を約束しているか、そして誰かが調査を個人にたどった場合の影響に要約されます。

ご参考までに。 #2のハッシュアプ​​ローチも同じアプローチに対して脆弱ですが、使用するハッシュによってはもう少し手間がかかります。

申し訳ありませんが、それは私が今のところ考えることができる最高のものです、うまくいけば、それはあなたが解決に向かうのを助けるでしょう。 IMO、上記の#1のアプローチ(両方の調査を前もって行う)を使用できる場合、それがそれにアプローチし、高レベルの匿名性を確保するための最良の方法です。

2
Omer Iqbal

あなたは彼らの携帯電話番号の下3桁を尋ねることができます。

なぜそうしているのかを明確にし、なぜこの方法で追跡できないのかを説明してください。そうでなければ、彼らはあなたに数字(または文字、または何か)をランダムに教えてくれます、そして目的は打ち負かされます。

確率については、分布がフラットで、「トークン」がN個の値をとることができると仮定します(この例では、998になります-「000」は一部の国では有効な末尾ではない可能性があります)。人の場合、衝突する確率は1998/998)---((997/998)(996/998)...((998-M)/998)。

200人の場合、衝突が18〜19回発生する可能性が最も高く、衝突が10回未満または30回を超える可能性はほとんどありません。つまり、200人中170人を「認識する」ことになります。 。

4桁で200人の場合、1〜2回の衝突が予想されます。 8〜9回以上の衝突が発生する可能性はごくわずかです。

500人と4桁(またはランダムに分散された約1万の値を想定できるその他のもの)の場合、車のナンバープレートから1桁、ストリードアドレスの最後の番号から1桁、生年月日の最後の桁から1桁を取得できます。など)12〜13回の衝突が予想されますが、2回未満、または22回を超える衝突が発生する可能性はほとんどありません。

1
LSerni