読者です 読者をやめる 読者になる 読者になる

プログラマー技術調査室

うだつのあがらないプログラマーが技術調査結果を掲載するブログです。

DBファイル暗号化におけるラッパークラスの注意点

swift

iOSでデータベースを使う場合、多くの人がSQLiteを選択します。
(というか私は他の選択肢を知りません・・・)

swiftSQLiteを扱う場合、直接扱うには情報不足ですので大抵の方がオープンソースのラッパークラスを利用すると思われます。
私も利用しております。

本日の話題はラッパークラスの注意点です。


私の開発したアプリ「マイナンバー暗号化」では、開発初期はSwiftDataというラッパーを利用させて頂いておりました。

github.com


SwiftDataは数あるラッパークラスの中でもswiftでコーディングされたものですので、Objective-Cを習得していない私には魅力的なラッパーでした。


しかし、とある重大な問題が発生しSwiftDataの利用を断念、FMDBに乗り換えざるを得ませんでした。

github.com


その理由というのは「データベースファイルの暗号化」です。
SwiftDataではデータベースの暗号化に対応できなかったのです。

もう少し正確に言うと、swiftXcode?)デフォルトのSqliteライブラリのバージョンが古いため、データベース暗号化に対応できないようなのです。

FMDBObjective-Cでコーディングされたラッパーでして、こちらは最新のSqliteライブラリを別途組み込むことによって問題を回避していたと記憶しています。

このエラーに関する詳細情報はラッパー差し替え前のソースコードが残っていないため確認できないのですが、2日くらい調査した結果として無理だったと記憶しております。


ちなみにデータベースファイルの暗号化にはSQLCipherを利用させて頂いております。

www.zetetic.net


詳細な情報を提示できず中途半端な記事となってしまいますが、同じ問題にぶち当たった方の参考になればと思い書きました。

SwiftDataでも暗号化可能でしたらご指摘のコメント頂ければ助かります。