Talk

大事なデータを守りたい!ActiveRecord Encryptionと、より安全かつ検索可能な暗号化手法の実装例の紹介

近年WEBサービスに対する攻撃が増しており情報漏洩などが相次いでいますが、漏洩した場合の被害を抑える手法の1つにデータの暗号化があります。
RailsにはActiveRecord Encryptionという組み込みの暗号化機構がありますが、デフォルトの使い方では暗号鍵を人間が管理する必要があり依然として流出のリスクがあります。

暗号化の安全度を高めるためには
1)AWS等が提供するKMS(Key Management Service)などを使い暗号鍵の管理をオフロードする
2)個人情報やクレジットカード番号、マイナンバーのような最重要情報を保存する場合にはレコードごとに異なる暗号鍵を使う
といったさらなる工夫が必要ですが、現状のActiveRecord Encryptionでこれらを実現するにはかなりのカスタマイズが必要になります(2はそもそも実現できない)。
またビジネス要件として暗号化はしたいが検索もしたい場合もあります。

本発表ではRailsにおけるActiveRecord Encryptionを含めその他の暗号化手法を併せて紹介し、attr_encrypted gemを用いて上記のような複雑な要件を満たす方法や、永続化層では暗号化しつつ検索可能にする実装方法についても紹介します。
本発表を通じて各暗号化手法のメリット・デメリットや使い所を理解して頂くことを目的とします。

Speaker

小林悟史(小林ノエル) f-world21 のGithubページ

ブルーモ証券取締役CTO。
米国株・米国ETF専業の長期資産形成特化型の投資アプリ【ブルーモ】を開発しています。
ブルーモ証券の共同創業者でもあり、ブルーモアプリの開発立ち上げから技術選定、基本設計や実際のサービス開発の実装もしてきました。
今回ご紹介する手法もブルーモアプリの開発を進めるうえで必要になった手法であり、実際にブルーモのサービスの中にも組み込まれている手法です。
証券会社のサービスを構築するにあたり、安全にデータを保管する方法をご紹介します。

小林悟史(小林ノエル)のアバター画像