LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

JavaScriptホワイトボックス暗号とLINE Chromeのセキュリティ強化の裏話

LINE株式会社およびヤフー株式会社は、20221117日・18日の2日間にわたり、技術カンファレンス「Tech-Verse 2022」をオンライン(ライブストリーミング形式)にて開催しました。特別連載企画「Tech-Verse 2022 アフターインタビュー」では、発表内容をさらに深掘りし、発表で触れられなかった内容や裏話について登壇者たちにインタビューします。今回の対象セッションは「JavaScriptホワイトボックス暗号とLINE Chromeのセキュリティ強化」です。 

LINEが提供するアプリケーションはさまざまなプラットフォームで動作しています。ネイティブであれWebであれ、すべての環境で高いレベルのセキュリティを提供するために開発者たちは努力をしているのです。しかし、Chrome拡張機能を含むすべてのWebアプリケーションは、ブラウザに暗号キーのような機密データを安全に保存できる選択肢がほとんどないという、共通のセキュリティ問題に直面しています。  

本セッションでは、WhiteBox暗号とWebAssemblyを用いてこのような問題を改善することを決定した理由とその具体的な手法について語られました。今回はセッションの発表内容についての秘話を、LINESecurity R&D Teamに所属するSenior Security Engineerの安相煥にインタビューしました。 

 

各サービスのセキュリティの土台を支える 

――Security R&D Teamの担っている役割と、安さんの業務内容を教えてください。 

LINESecurity R&D Teamは、LINEの各サービスのセキュリティコンサルティングや最新のセキュリティ技術の研究、その技術を活用したセキュリティモジュールの開発、新しいセキュリティ機能をサービスに反映させる業務などを担当しています。 

私はそれらのなかでも、暗号化や認証プロトコルに関連した技術を扱うことが多いです。各サービスのセキュリティをより堅牢にするための改善プロジェクトを主に担当しています。また他に、サイバーセキュリティのエリート集団を育成する韓国の政府プログラム「BEST OF THE BEST」のメンターを務めています。 

――セッション内では、「セキュリティチェックのシフトレフト(セキュリティに関わる作業を開発プロセスのなるべく早期に実施すること)が重要」というお話がありました。その点を詳しくお聞かせください。 

セキュリティチェックをシフトレフトすることの目的は、潜在しているセキュリティの問題を、企画や設計といった開発プロセスの初期フェーズで検知することにあります。 

多くの会社では、QAフェーズのように開発プロセスの後期フェーズで脆弱性のチェックを行います。しかし、この段階で根本的な設計の問題が発覚すると、解決することがそもそも難しかったり、設計・開発の大きな手戻りが発生してセキュリティ対策のための工数が肥大化したりするのです。そうした事態を回避するために、LINEでは開発プロセスの初期・中期・後期それぞれの段階でセキュリティのチェックができる体制を構築しています。 

――セキュリティチェックのシフトレフトにより、開発効率やセキュリティを改善できた社内の事例はありますか? 

事業に与えるインパクトが大きかったプロジェクトとしては、LINE BITMAXLINE Pay、現在準備中の銀行事業などが挙げられます。これらのプロジェクトでは初期フェーズからSecurity R&D Teamのメンバーが関与し、設計・実装方針についてのレビューだけではなくコンサルティングやセキュリティモジュールの適用をしています。実装完了後は、QAフェーズにて脆弱性のチェックも実施しています。 

また、近年はセキュリティだけではなく個人情報の保護もLINEのサービス運営における重要なテーマになっているため、コンサルティングの初期段階においてプライバシー影響評価(Privacy Impact Assessment)も行いました。 

現在は、シフトレフトセキュリティ戦略の対象範囲を全てのサービス/プロダクトに拡大し、設計・実装に対するレビューを行っています。大幅なアーキテクチャ刷新、他社サービスとの連携、重要な情報を扱うAPIの新規開発、新たなデータ取得・加工・分析を行う場合には、改めてセキュリティコンサルティングや プライバシー影響評価を受けないといけない方針になっています。 

暗号キーのような機密データをいかにして安全に保存するか 

――セッション内では、WhiteBox暗号とWebAssemblyを使用してセキュリティ課題を解決したことと、その設計手法が解説されていました。この事例における裏話を教えてください。 

LINEが提供する多くのWebサービスはLINEプラットフォーム上で動作しており、LINEモバイルプラットフォームそのものが持つ機能によってセキュリティを担保できるケースがほとんどです。しかし、Chrome版のLINEChromeブラウザ上で動作することから、ユーザーのモバイル端末によるセキュリティのサポートを行うことが難しいケースがあります。 

とはいえ、ChromeLINEのユーザーに対してモバイルデバイスによる認証を追加で行うと、ユーザビリティが非常に悪くなってしまいます。そのため、どのようにセキュリティを保証するかが厄介な問題だったのです。またセッションでお話ししたように、Chrome拡張機能を含むすべてのWebアプリケーションは、ブラウザに暗号キーのような機密データを安全に保存できる選択肢がほとんどないという共通のセキュリティ問題があります。 

そうした問題を解決するために、WhiteBox暗号を提供することをプロジェクトの初期フェーズから考えていました。ただ、近年ではWeb Crypto APIなどの新しいWebセキュリティ技術が登場しており、実用可能なレベルまで来ています。そこで私たちはWhiteBox暗号を利用する設計だけではなく、Web Crypto APIを利用する設計も検討しました。 

ですが詳細はセッションで述べた通り、Web Crypto APIによる実装の場合にはさまざまな問題点がありました。特に大きな問題として、Web Crypto APIを利用して安全な設計のWebシステムを構築しても、実際にプラットフォームに保存されるキーそのものは暗号化されていないという点が懸念でした。 

データベース内部のキーはプレーンテキストになっているのです。そのため、プラットフォームにインストールされているマルウェアがあったり、悪意のあるユーザーがいたりした場合には、そのキーを悪用されてしまう可能性があります。 

けれども、WhiteBox暗号を使えばキー情報を保存する処理においても追加のセキュリティを実装できます。マルウェアや悪意のあるユーザーがそのキーのデータを持ち出したとしても、他のデバイスで使えないように、そしてプレーンテキストのキーを復号できないように防御できるのです。 

また、LINEEnd to End Encryptionプロトコルの基盤となるアルゴリズムをサポートしていない問題もありました。そこで最終的にはWeb Crypto APIではなく、WebAssemblyWhiteBox暗号を用いてセキュリティ機能の実装をする方針になりました。 

WebAssemblyを利用すると、WhiteBox暗号の実装だけでなく、追加のセキュリティレイヤーを実装・構築することができます。例えば、WhiteBox暗号とハードウェアセキュリティモジュール(HSM)ベースのセキュリティプロトコルを構築することで、より強力なキー管理システムを実現できます。 

グローバルスタンダードなセキュリティに触れられる環境  

――Security R&D Teamにいるからこそ経験できたことはありますか? 

LINE Security R&D Teamのメンバーはみな優秀なスキルを持った方々で、彼らと一緒に働くことで私自身とても勉強になっています。また、LINEでは一般的な日本のIT企業のセキュリティ水準ではなく、グローバルスタンダードなセキュリティの水準を目指してサービスを運営しています。 

ここでは各国の企業や研究者たちがどのようにセキュリティ技術を構築しているか、最新の情報を学ぶことができますし、それらをサービスに適用する実務経験も積むことができます。そうした業務を担う過程で、セキュリティエンジニアとして大きく成長できました。  

――Security R&D Teamの業務に携わる面白さはどのような点にありますか?  

私のキャリアは、セキュリティの脆弱性を探すという、いわゆるサービスのハッキングに関することからスタートしています。かつての私が、他の人が探せないような脆弱性を見つけ出したように、今後も世界中の優秀なハッカーたちがサービスの脆弱性を探し、サービス運営者側が対応するという、いたちごっこが続いていくでしょう。  

Security R&D Teamの業務を通じて、そうした課題を根本的に解決できるようなセキュリティの設計や開発を行い、サービスを守り堅牢にしていけることは、エンジニアとしてのやりがいが大きいです。 

 ――最後に、安さんのエンジニアとしての今後の目標を教えてください。 

私は常に、より良いエンジニアになって同僚の役に立つことや、後輩たちの支えになることを目標にしてきました。これからも、そんなエンジニアであり続けたいと思っています。それから、今取り組んでいる業務の延長線ではありますが、脆弱性や外部からの攻撃といった、各種のリスクをコントロールできるような優れたセキュリティアーキテクチャを作ることが今後の目標です。 

――これからも、安さんは優秀なセキュリティエンジニアとして活躍されそうですね。今回はありがとうございました。