OAUTH 2.0_Flutter 숙련주차 7일

박진·2026년 1월 13일
post-thumbnail

2026.01.13 (화)
구글로그인

  • 대칭키와 비대칭키
  • 암호화 복호화
  • OAUTH 2.0

오늘의 공부 이미지 💫

오늘 수업은 구글로그인 관련하여 대칭키와 비대칭키, 암호화와 복호화 등에 대해서 공부했다. 관련된 내용을 정리해서 작성해보기


🔓 암호화 복호화

먼저 암호화와 복호화에 대해 알아보자
암호화와 복호화는 정보를 안전하게 보호하기 위해 데ㅣ터를 읽을 수 없는 상태로 만들었다가, 다시 원래 상태로 돌리는 과정을 말한다

  • 암호화: 데이터를 읽을 수 없는 암호문으로 바꾸는 과정

  • 복호화: 암호문을 원래 다시 읽을 수 있게 바꾸는 과정

작용방식

  • 알고리즘: 데이터를 뒤섞는 규칙이나 수학적 방법
  • 키: 데이터를 잠그고 푸는 데 사용되는 비밀번호 같은 값
    핵심 원리 : 똑같은 알고리즘을 사용하더라도 가 다르면 암호문이 완전 달라짐.
    알고리즘은 공개되어도 되지만 키는 유출되면 안 된다!

🔑 대칭키와 비대칭키

✔️ 대칭키?

데이터를 암호화, 복호화 할 때 동일한 키를 사용한다
특징

  • 암호화 과정이 단순함, 빠르다
  • 대용량 데이터를 처리하기에 적합함
  • 데이터를 주고받을 상대방에게 키를 전달하는 과정에서 키가 유출될 수 있다

✔️ 비대칭키?

비대칭키는 암호화, 복호화에 서로 다른 두개의 키를 사용하는 방식이다. 이 키를 공개키와 개인키라고 부른다.

  • 비유: 철수가 잠근 편지 박스를 영희가 가진 키로 열 수 있다.
    • 공개키 : 누구나 가질 수 있고, 데이터를 암호화할 때 사용함
    • 개인키 : 나만 가지고 있고, 암호화된 데이터를 풀 때 사용함

특징

  • 공개키가 유출되더라도 개인키가 없으면 데이터를 열 수 없어서 안전하다
  • 대칭키 방식에 비해 계산이 복잡해서 속도가 느리다

📑 OAUTH 2.0

참고: 구글 클라우드 소개
https://docs.cloud.google.com/apigee/docs/api-platform/security/oauth/oauth-introduction?hl=ko

제 3자의 앱이 사용자의 비밀번호를 직접 몰라도, 사용자가 허용한 범위 내에서 구글이나 카카오 같은 서비스의 데이터에 접근할 수 있게 해주는 권한부여 해주는 시스템이다.

📌 동작 과정

1. 로그인 요청
사용자가 앱에서 '구글 로그인' 버튼을 누른다

2. 권한 요청 및 동의
앱이 구글 로그인 화면을 띄우고, 사용자가 로그인 완료한 뒤 "나의 프로필 정보를 가져가도 좋다" 동의한다

3.인증 코드
구글 서버가 앱한테 임시 비밀번호 같은 코드를 보낸다.

4. 토큰 교환
앱은 이 코드를 가지고 구글 서버에 가서 진짜 권한 증명서인 "액세스 토큰"으로 바꾼다

5.데이터 접근
이제 앱은 이 토큰을 보여주고 구글 서버에서 사용자의 정보를 가져온다.

📌 사용 용어

  • 클라이언트
    앱이다. 우리가 만들어낼 앱으로 리소스 서버에 요청을 보내고 액세스 할 수 있는 권한을 앱에 부여해야 한다.

  • 리소스 소유자
    사용자라고 한다. 일반적으로 보호대상 리소스에 대한 액세스 권한을 부여할 수 있는 사람이라고 한다.

  • 리소스 서버
    Facebook, Google 또는 Twitter와 같은 서비스,

  • Access Token (액세스 토큰)
    위 과정에서 얻은 '출입증'. 보통 유효 기간이 짧다.

  • Refresh Token (리프레시 토큰)
    액세스 토큰이 만료되었을 때, 다시 로그인하지 않고도 새 토큰을 받을 수 있게 해주는 '장기 출입증 발급권'이라고 한다.

  • Scope (스코프)
    앱이 허용받은 권한의 범위라고 한다. (예: "이메일 주소만 읽기", "캘린더 쓰기 권한" 등)

📌 왜 중요할까?

보안
비밀번호를 우리 DB에 저장하지 않아도 되므로 보안 사고 위험이 줄어든다.

편의성
사용자는 새로 회원가입을 하지 않아도 되어 앱 이탈률이 낮아진다.

전문성
google_sign_in 이나 kakao_flutter_sdk 같은 패키지를 사용할 때 내부적으로 이 OAuth 2.0 과정이 일어나고 있다는 것을 이해하면 훨씬 수준 높은 코딩이 가능하다고 한다

0개의 댓글