まず、イブは受動的であると仮定しなければなりません。これにより、私は彼女がカードを正直にボブに送り、彼女がアリスに持ち帰ったものはすべてボブの応答であるということです。Eveが片方向または両方向にデータを変更できる場合(そして彼女のアクションが検出されないままである場合)、何でも起こります。
(長年の伝統を尊重するために、会話に関係する2つの正直なパーティーはアリスとボブと呼ばれます。あなたのテキストでは、あなたは「あなた」と言いました。私の本当の名前は「アリス」ではなく、そのAliceが Bobの電話番号を確認したいと考えています。)
単純な(しかし弱い)答えは、ハッシュ関数を使用することです。アリスはカードに「あなたの電話番号のSHA-256ハッシュを返して」と書いています。SHA-256は、ハッシュ関数に関する限り、安全であると考えられている暗号化ハッシュ関数です。手作業で計算するのは面倒ですが、それでも実行可能です(約2500個の32ビット操作で、各操作は加算、ワードシフトまたは回転、ビット単位のビットの組み合わせです。ボブは1日でそれを実行できるはずです。そう)。
今、それについて何が弱いのですか?暗号化ハッシュ関数であるSHA-256は「プリイメージ」に耐性があります。これは、ハッシュ出力が与えられると、対応する入力を復元することが非常に難しいことを意味します(Eveが直面する問題です)。ただし、「非常に難しい」とは、「最も簡単な方法はブルートフォース:一致するものが見つかるまで可能な入力を試みること」を意味します。ここで問題となるのは、総当たり攻撃が簡単だということです。可能な電話番号はそれほど多くありません(北米では10桁、つまり100億です)。ボブは手で物事をやりたいと思っていますが、イブが非常に限られていると仮定することはできません。基本的なPCは1秒あたり数百万のSHA-256ハッシュを試すことができるため、Eveは1時間未満で完了します(GPUを使用している場合は5分未満です)。
これは一般的な問題です。ボブが決定論的である場合(つまり、アリスからの特定のメッセージに対して、彼は常に同じ応答を返します)、イブは彼をシミュレートできます。つまり、イブは電話番号を除くボブについてのすべてを知っているので、彼女は仮想的に100億のボブを経営しています。そして、実際のボブが実際に返したものを仮想ボブのいずれかが返すのを待ちます。この欠陥は、ランダムなナンスと対称暗号化およびwhatsnotを含む多くの種類の「スマート」ソリューションに影響します。これは強力な欠陥であり、その根本はイブとボブの計算能力の大きな違いにあります(ボブにもイブと同じくらい大きなコンピューターがあれば、彼は遅い多くの反復の使用によるハッシュ関数。それは多かれ少なかれ、パスワードのハッシュとは何か、パスワードの代わりに電話番号; bcrypt とこの回答もご覧ください)。
したがって、非弱解には、ボブの一部にランダム性が含まれる必要があります。ボブは、コインを投げたり、サイコロを繰り返し投げたり、計算に値を注入する必要があります。さらに、イブはボブがしたことを解くことができてはなりませんが、アリスはできる必要があるため、一部の情報はボブからアリスに内密に伝えられます。これは、非対称暗号化、または少なくとも非対称キー合意と呼ばれます。そのクラスの最も簡単な計算アルゴリズムですが、それでもかなり安全ですが、PKCS#1 v1.5 paddingを使用したRSAです。RSAは、公開指数としてを使用できます。したがって、プロトコルは次のようになります。e=3
アリスは、大きな整数生成場合及びサイズように、同様のサイズの素数整数、であり(2012のように、すなわち、少なくとも1024ビット)セキュリティを確保するのに十分であるが。また、アリスは手配しなければならないとない 3の倍数であることを。p q n p − 1 q − 1n=pqpqnp−1q−1
アリスはカードにを書き込みます。n
ボブ第パッド長いほどバイトシーケンスに彼の電話番号、(PKCS#1により、この手段記載されているように:00 02 XX XX ... XX 00 BB BB .. BB、BB「」は10バイトであるエンコードを電話番号、および「xx」はランダムなゼロ以外のバイト値であり、が1024ビット整数の場合、合計長は128バイトです。nnn
ボブは、バイトシーケンスをビッグ整数値(ビッグエンディアンエンコーディング)として解釈し、を計算します(したがって、非常に大きな整数と除算の乗算が行われ、結果は部門の残り)。それはまだ手作業で実行できます(しかし、再び、おそらく1日の大部分を占めるでしょう)。結果は、ボブがアリスに送り返すものです。m 3 m o d nmm3 mod n
アリスはと知識を使用して、ボブから送信されたからを復元します。RSAのウィキペディアのページには、そのプロセスに関するある程度明確な説明があります。アリスが取得したら、パディングを削除できます(「xx」はゼロではないため、最初の「bb」バイトを明確に見つけることができます)。その後、彼女は電話番号を取得し、それを自分の持っている電話番号と比較できます。q m m 3 m o d n mpqmm3 mod nm
コンピュータが必要になりますアリスの計算は、(コンピュータが何をするかで必ず手で小学校となんとかが、「なんとか」は、実際に行うにはあまりにも多くの時間がかかる場合がありますので、コンピュータは、それに速い悪魔であり、RSAの暗号解読手では多くを取ります週間)。
(実際、McEliece暗号化を使用することで手作業での計算を高速化できますが、公開キー(アリスがカードに書き込んだもの)は巨大になり、カードはまったくしません。イブは完全な本を運ぶ必要があります桁)