2012-02-21 15 views
-1

証明書と鍵に関するAppleの文書によれば、公開鍵を他のユーザに送ることができます。もちろん、これはすべてのポイントです。真ん中の攻撃で人の話を聞くことなく、これがどのように機能するのか知りたい。公開鍵の交換

私はデバイス間の電子メールで公開鍵を送信するためにbase64エンコーディングを使用します。到着時に、彼らは動作しませんし、受信アプリは私がそれらを使用しようとすると例外をスローします。 base64コードとキー生成と検索コードは、別のアプリで徹底的にテストされています。ここに問題があります:

(1)すべてのキーAPIは、SecKeyRefキーを使用します。

(2)SecKeyRefは明らかにポインタが含まれ、それが特定のオフセットにおいて異なるビットと私はキーホルダーから鍵ペアを取得するたびに出てくる

(3)私が想定しているCFDataRef、などのキーを取得する場合「平ら」になるためには、私は著しく異なる獣、常に同じ値、ゼロ詰め(base64の大文字A)がたくさんあります。

(4)輸入CFDataRefは、私は、多くの研究を行うことなくこれを聞いて読んで、テストしていない

動作しないと私は困惑を認め、誰もが公共交換する方法を知っているんキー?私はこれを行う長年のWindowsアプリを書いた。証明書チェーンは、私がここでやる必要がある非常に大きなハンマーです。

ありがとうございました。

答えて

0

これは混乱した質問のようです。公開鍵交換がどのように機能するか、またはインメモリーオブジェクトを別のマシンに転送することができない理由について質問していますか?

最初の質問に対する答えは、公開鍵を送信することです。公開鍵は通常、16進数または64進数でエンコードされているか、X509(ASN1)証明書内にラップされた一連のバイトです。公開鍵自体は、秘密鍵を保持している誰かが解読できる何らかのバイトストリームを暗号化できるという十分な情報を他のユーザに伝えます。その結果、公開鍵の伝送は、見通しの良い場所で行うことができる。

パブリックキー暗号の唯一のセキュリティの弱点は、攻撃者がパブリックキーの送信と暗号テキストを中間者にすることができる場合です。 AがBに転送したい場合、Mがその2つの間のすべてのトラフィックを見て修正することができる場合、Mは単にBのふりをし、Aに安全に接続し、AがBに送ることを解読することができる。 Bと同じであり、従って双方向チャネルは壊れている。

SSLは、Bが共有されている第三者に依存して自分の身元を証明できるため、BがAに知られていなくても、MがBであることができないようにする信頼チェーン検証を使用してこの理論的攻撃を破ります。 (CA)。これがDiginotarとComodoに対する最近の攻撃がそれほど深刻な理由です。暗号化は安全でしたが、身元確認はできませんでした。

要するに、答えは鍵を送信することだけです。公開鍵は安全に送信する必要はありませんが、事前共有秘密や何らかの種類の信頼関係がない場合は、自分自身をman-in-the -middle decryption attacks。

+0

あなたは明らかに私の質問を読んでいないし、完全に接する答えを与えている。私の問題は、私がかなり詳細に説明した鍵の送信にあります。 –

+0

私はそれ以来、キーチェーンにインポートすることを含むCFDataRefキーバージョンを使用してソリューションを見つけました。それらを元のビットに復号するという単なる行為は不十分である。しかし、私はベトナムに住んでいるので、私は政府のライセンスの面倒を追求することに興味がないので、プロジェクトを放棄しました。 –