1

同僚が、ソルトなしの AES128/AES256、GNUPG を使用して暗号化した 2 つのテキスト ファイルを提供してくれました。

次の例https://stackoverflow.com/a/1400596/300972を使用して、iOS アプリケーションで両方のファイルを復号化しようとしました。

ファイルを NSData オブジェクトにロードすると成功しました。NSData を出力できました。ただし、復号化では常に kCCDecodeError (-4304) で失敗します。パディングかもしれないと思ったので、さまざまなバリエーションを試しました。元は kCCOptionPKCS7Padding でしたが、それでも同じエラーが発生しました。NSString を作成できない、切り捨てられた NSData オブジェクトを提供する 0 のパディングを試しました。(UTF8 エンコード)。

iOS 環境で GNUPG を使用して暗号化されたファイルを復号化できた人はいますか? 教訓を教えてもらえますか?

4

2 に答える 2

3

GnuPG は OpenPGP ファイル形式 ( RFC-4880 ) で書き込みます。これはかなり複雑な形式であり、データの復号化を開始する前に解析する必要があります。また、GnuPG はデータを暗号化する前に圧縮します。そして、「Cipher Feedback (CFB) モードの OpenPGP のバリアント」を使用します。iOS 5 は CFB をサポートしていますが、これは RFC-4880 とまったく同じではありません。たとえば、通常の IV を使用せず、新しい方法で同期して、標準の CFB と互換性のない「クイック チェック」を提供します。次に、PBKDF2 とは異なる String-to-Key (S2K) アルゴリズムがあります。

つまり、CommonCryptor は、これを分解して AES に渡す長い一連のステップの最後のステップです。libgcrypt を見ることもできますが、その LGPL ライセンスは一般的に iOS 開発と互換性がありません。おそらく、他の OpenPGP 実装を調査する必要があります。私は JavaScript にいくつかあることを知っています (これはクレイジーですが、ライセンスの問題を引き起こさずに動作する可能性があります)。おそらくCryptlib(商用ライセンスを持っています)。

個人的には、可能であれば他の暗号化ツールを使用したいと思います。OpenSSL は特に安全ではありませんが、非常に移植性が高く、コマンドライン アプリと同じくらい簡単に使用できます。RNCryptorは iOS で読み書きできます。

于 2012-08-14T20:21:21.017 に答える
1

ObjectivePGPフレームワークを確認できます。

于 2013-10-09T14:29:00.597 に答える