4

私はObjective-CでNSStringをNSStringとNSDataの両方に暗号化しようとしているので、検索を開始しました。

私はここから始めましたが、残念ながらそれは私の頭をはるかに超えていました。

それから私はこの投稿に自分自身を見つけました、そしてそれは非常にフォローしやすいことに気づきました、それで私は一緒に行って実装を理解しようとしました。実装を調べた後、私は投稿の2番目の答えを見て、彼がより適応性のある実装を持っていることを確認しました。それが私を彼の要点に導きました。要旨のreadmeによると、彼は"took down this Gist due to concerns about the security of the encryption/decryption"。そのため、上からの実装のセキュリティにもセキュリティ上の欠陥があると思います。

しかし、その要点から、彼は私が暗号化に使用できる別の代替案について言及しました。コードを見てみると、NSDataがで生成されていることに気づきました"a header, encryption salt, HMAC salt, IV, ciphertext, and HMAC"。同じライブラリを使用してデコードするためにそれを処理する方法を知っていますが、サーバーの人に何を送信しているのかよくわからない場合、これをサーバーの人に渡すにはどうすればよいですか?

そのすべての根底にあるのは、私が頭を抱えていることです。私が上で言ったことを考えると、これについて多くのことを学ぶ時間がないことを知っているので、絶対に必要な場合を除いて、秘密鍵が与えられた場合、このエンコード/デコードプロセスをどのように処理するのが最善ですか?私が設計していないサーバーにそれを出荷するという最終目標は?(文の実行はどうですか!)

4

1 に答える 1

3

サーバーの人に聞いてみたら?関係者間で暗号化を行うときはいつでも、そのデータの形式について何らかの合意を得る必要があります。生のプリミティブはそれだけでは処理しません。言うまでもなく、プリミティブとaes 暗号文だけを送信したいだけでは、間違いが発生します。

あなたが言及したRNCryptorは、高レベルの暗号化ライブラリであり、他の人も準拠する必要がある単純な形式を定義します。単純であるため、クロスプラットフォームに進むのに役立ちますが、AES を適切に実行するために必要な追加機能があります。そのような他のライブラリ(NaCLGPGME、およびKeyczar)もありますが、これらは形式は単純ではありませんが、使用法は単純であるため、ライブラリを両端で使用できる必要がありますが、私は非常に可能であれば、自分でロールするのではなく、そのようなものを使用することをお勧めします。

Keyczar は特に Java、Python、C++、C#、および Go 用に存在するため、iOS (またはクライアントでターゲットとしている Mac) で C++ バージョンを使用できる場合は、いくつかの選択肢があるため、サーバーに適している可能性があります。 .

于 2013-02-13T18:15:01.167 に答える