
앱을 실행하려는데 갑자기 문제가 발생하고, 그 원인으로 'SafetyNet'이 지목된 경험이 있으신가요? 많은 사용자에게 낯설게 느껴지는 이 'SafetyNet'은 대체 무엇이며, 이 문제를 해결할 방법은 없는 걸까요?
SafetyNet API가 존재하는 이유

SafetyNet API는 Google이 Android Pay를 개발하는 과정에서 만든 보안 검증 도구입니다. 이 API는 기기의 다양한 상태를 점검하며, 특히 기기가 변조되었는지 여부를 확인합니다. 즉, 안드로이드 기기를 루팅했거나 커스텀 ROM을 설치했다면 SafetyNet이 이를 감지하고, 해당 앱의 사용을 차단할 수 있습니다.

Google 엔지니어의 설명에 따르면, SafetyNet은 Android Pay와 함께 개발되어 사용자의 인증 정보와 결제 정보를 최대한 안전하게 보호하기 위한 목적을 가지고 있습니다. 순정 상태의 안드로이드는 강력한 '샌드박싱(sandboxing)' 기술로 데이터를 보호하지만, 루팅은 이 샌드박싱을 무너뜨립니다. 따라서 Google은 루팅된 기기에서 데이터 보안을 보장할 수 없으며, Android Pay 역시 루팅된 기기에서 작동하지 않도록 설계되었습니다. 부정 거래나 정보 유출 사고가 발생했을 때 Google이 간접적인 책임을 질 수 있기 때문입니다.
그런데 흥미롭게도, 루팅하지 않은 기기조차 차단되는 경우가 종종 있습니다.
루팅하지 않았는데 왜 오류가 발생할까?

첫 번째 원인은 CTS 미인증 기기입니다. CTS는 'Compatibility Test Suite(호환성 테스트 스위트)'의 약자로, Google Play 스토어 및 기타 Google 앱이 탑재된 모든 기기는 반드시 통과해야 하는 인증 절차입니다. 커스텀 ROM을 플래싱했거나, 정식 라이선스 없이 제조된 해외 저가 기기를 구매했다면 CTS 인증을 받지 못해 SafetyNet 검사에서 실패하고 특정 앱과 서비스 이용이 제한될 수 있습니다.
두 번째 원인은 멀웨어 감염입니다. SafetyNet은 기기가 악성코드에 감염되었는지도 감지합니다. 정품 Google 인증을 받은 기기라도 루팅이나 플래싱 없이 보안 문제가 있다면 특정 앱 사용이 차단될 수 있으므로, 이 경우에는 악성코드를 제거하는 것이 우선입니다.
SafetyNet을 우회할 수 있을까?
결론부터 말하면 '가능하지만 권장하지 않습니다'. SafetyNet을 비롯한 유사 API를 우회하는 다양한 방법들이 존재하지만, 대부분 잠깐 동작하다가 곧바로 패치되어 버립니다. 이러한 보안 경쟁은 끊임없이 반복되기 때문에 본문에서는 우회용 앱이나 서비스를 소개하지 않으며, 우회를 시도하다 발생하는 모든 문제에 대한 책임도 지지 않습니다.
언루트(Unroot)가 필요할 수도 있습니다
마지막으로 냉정한 현실을 이야기하자면, 기기를 언루트하고 순정 펌웨어(공장 출고 상태 이미지)로 되돌려야 할 수도 있습니다. 루팅된 기기가 제공하는 다양한 기능을 포기해야 한다는 점은 아쉽지만, Pokémon Go 같은 게임을 하거나 Android Pay/Samsung Pay를 정상적으로 사용하려면 기기를 먼저 안전한 상태로 만들어야 합니다.
다른 선택지는 검증되지 않은 위험한 우회 솔루션을 사용하거나, 아예 SafetyNet 검사가 필요한 앱을 사용하지 않는 것입니다. 다행히 현재로서는 주로 모바일 결제 앱 정도만 SafetyNet을 요구하므로, 스마트폰으로 모든 것을 처리하지 않는다면 큰 불편 없이 지낼 수 있을 것입니다.