저번 포스트에선 기존 작업에서 소셜 인증 기능을 구현하는 과정에서 접하게 된 ‘SHA1 key’ 개념들을 정리해 보려한다.
안드로이드 앱 개발: SHA-1 키의 중요성
안드로이드 앱 개발에 있어서 서명 프로세스는 앱의 보안과 무결성을 보장하는 핵심적인 단계이다. 서명은 앱이 개발자에 의해 만들어졌음을 증명하고, 앱이 변경되지 않았음을 보증한다. 이 과정에서 SHA-1(Secure Hash Algorithm 1) 키 지문이 중요한 역할을 한다.
SHA-1 키란?
SHA-1 키는 데이터의 무결성을 검증하기 위한 암호학적 해시 함수의 결과값이다. SHA-1 함수는 임의 길이의 데이터를 받아 160비트(20바이트) 길이의 고유한 해시값으로 변환한다. 이 해시값은 앱이나 파일이 원본 그대로임을 확인하는 데 사용되며, 앱 개발 과정에서 서명 키의 지문으로 활용된다.
안드로이드 앱 서명에 SHA-1 키 지문이 중요한 이유
안드로이드 스튜디오는 앱을 디버그할 때 자동으로 디버그 키스토어를 생성하고 사용하지만, 앱을 배포할 때는 개발자가 직접 릴리스 키스토어를 생성해야 한다. 릴리스 키스토어 내부의 서명 키에 대한 SHA-1 지문은 다음과 같은 상황에서 필요하다:
Firebase와의 통합: Firebase 프로젝트에 앱을 등록할 때 SHA-1 키 지문을 제공해야 할 수 있다. 이를 통해 Firebase 콘솔은 신뢰할 수 있는 앱에서 발생하는 요청을 식별하고, 안전한 통신을 보장한다.
Google API 사용: Google의 많은 API와 서비스들은 OAuth 2.0과 같은 인증 메커니즘을 사용한다. 이 경우 SHA-1 키 지문은 앱이 특정 서비스에 접근할 수 있는 권한을 검증하는 데 사용된다.
앱 스토어 업로드: Google Play Store에 앱을 업로드할 때도 SHA-1 키 지문을 제공해야 한다. 이 지문을 통해 앱이 개발자에 의해 서명되었음을 증명하고, 업데이트 시 동일한 키로 서명되었는지 확인한다.
SHA-1 키의 단점(보안 문제)
SHA-1 해시 함수는 이론적으로 충돌이 가능하다고 알려져 있다. 즉, 서로 다른 두 입력값이 동일한 SHA-1 해시값을 가질 수 있는 가능성이 존재하기에, 보안 연구자들은 더 안전한 SHA-256이나 SHA-3 해시 함수로의 전환을 권장하고 있다고 한다.