CI, DI의 차이점과 활용 사례
인증 시스템을 설계하다 보면 CI(Connecting Information)와 DI(Duplicate Information)라는 용어를 자주 접하게 된다.
특히 본인인증 과정에서 이 두 가지 값이 많이 나오는데, 처음 접하면 조금 헷갈릴 수 있다. 그래서 오늘은 실무자들이 알아두면 유용한 CI와 DI의 차이를 쉽게 설명해보려고 한다.
두 정보 모두 본인인증 API 제공사에서 고객사에게 리턴을 해주는 값 중 하나이며, 고객사는 어떤 정보를 달라고 할지 선택할 수 있다.
간단히 비유하자면, CI는 암호화된 주민등록번호처럼 여러 서비스에서 같은 사람임을 구분하는 정보이고, DI는 학번처럼 하나의 서비스 내에서 중복을 방지하기 위한 고유한 값이라고 생각하면 된다.
그럼 조금 더 구체적으로 알아보자.
CI = 암호화된 주민등록번호
→ 여러 서비스에서도 나를 동일하게 식별할 수 있다.
CI는 "연결 정보"라고 불리며, 여러 서비스에서 동일한 사용자를 구별하기 위해 사용되는 고유한 값이다. 예를 들어, 내가 A라는 쇼핑몰에 가입하고 B라는 금융 서비스에 가입할 때, 두 서비스 모두 나를 같은 사람으로 인식할 수 있는 정보를 제공하는 게 CI다. 하지만 CI는 암호화된 값으로, 내 민감한 정보를 보호하면서도 서비스들 간에 나를 동일하게 식별할 수 있게 해주는 것이다.
요약하자면, CI는 여러 서비스 내에서 공통적으로 사용되며, 다양한 서비스에서 나를 같은 사람으로 인식하기 위한 목적으로 사용된다.
DI = 학번
→ 같은 학교(서비스) 내에서는 내가 고유하지만, 다른 학교(서비스)에는 나와 같은 학번을 가진 사람이 있을 수 있다.
DI는 "중복 방지 정보"로, 하나의 서비스 안에서 사용자의 중복 가입을 막기 위한 고유 값이다. 예를 들어, 내가 A 쇼핑몰에 두 번 가입하려고 할 때, DI를 통해 "이미 가입한 사용자"로 구분될 수 있다. 한 마디로, 학번처럼 내가 그 서비스에서 하나의 계정만 가지도록 관리하는 정보인 것이다. 서비스마다 부여되는 DI는 다르기 때문에, A 서비스의 DI와 B 서비스의 DI는 서로 다를 수 있다.
요약하자면, DI는 특정 서비스 내에서만 유효하며, 같은 사용자가 여러 계정을 만들지 못하도록 중복을 방지하는 목적으로 사용된다.
금융 서비스를 예로 들어보자. 내가 A라는 은행에서 대출을 받았다고 하자. 이후 B라는 다른 금융 서비스에서 또 대출을 신청할 때, B 서비스에서도 내가 같은 사람인지를 알아야 한다. 여기서 CI가 사용된다. CI 덕분에 금융기관들이 동일한 사용자를 식별할 수 있게 되어, 중복 대출이나 신용 관리를 할 수 있게 되는 것이다. 하지만 이 과정에서 내 주민등록번호나 개인 정보는 암호화된 상태로 보호된다.
- 사용자 : 대출 신청을 위해 금융기관A에 본인인증을 한다.
- 본인인증제공사 : 본인인증을 통해 CI값을 받는다. 이 값을 금융기관A에 알려준다.
- 금융기관A : 본인인증 제공사가 주는 정보를 받아서 저장해둔다.
(며칠 뒤)
나중에 사용자가 또 대출받을라 함
- 사용자 : 대출 신청을 위해 금융기관B에 본인인증을 한다.
- 본인인증제공사 : 본인인증을 통해 CI값을 받는다. 이 값을 금융기관B에 알려준다.
- 금융기관B : 어? 우리 금융기관들끼리 얘기해보니까 너 이미 받았다는데? 못해줘~
DI는 쇼핑몰 같은 서비스에서 많이 사용된다. 예를 들어, A 쇼핑몰에 내가 이미 가입한 상태에서 또 다시 가입을 시도한다면, DI를 통해 이미 가입된 사용자라는 걸 확인할 수 있다. 즉, 하나의 서비스 내에서 중복 가입이나 다중 계정 생성을 방지하는 역할을 하는 거다. 특히 이벤트나 쿠폰 남용을 막기 위해 DI가 사용된다. 만약 DI가 없다면, 하나의 사용자 계정으로 여러 번 이벤트에 참여할 수 있게 되는 문제가 생길 수 있을 것이다.
- 사용자 : 본인인증을 한다.
- 본인인증제공사 : 본인인증을 통해 DI값을 통신사로부터 받는다. 이 값을 쇼핑몰에 알려준다.
- 쇼핑몰 : 본인인증 제공사가 주는 정보를 받아서 저장해둔다.
(며칠 뒤)
나중에 사용자가 또 가입할라 함
- 사용자 : 본인인증을 한다.
- 본인인증제공사 : 본인인증을 통해 DI값을 통신사로부터 받는다. 이 값을 쇼핑몰에 알려준다.
- 쇼핑몰 : 어? DB 뒤져보니까 저번에 걔네? 너 이미 가입한 계정 있어~
특히 CI는 개인정보 보호와 연관된 정보로, 법적으로도 매우 민감하게 다뤄진다. 예를 들어, 어떤 서비스가 CI 정보를 제공받기 위해서는 그 목적을 분명히 해야 하고, 그 과정에서 본인인증 API 제공사에게 CI 제공 사유서를 제출해야 한다. 본인인증 API 제공사로부터 해당 정보를 받아온 뒤에도, 이 값을 적절히 보호하고 관리하는 것이 너무나도 중요하다.
CI와 DI는 사용자 식별과 중복 방지라는 중요한 역할을 맡고 있다. 서비스에서 회원이나 인증 부분을 맡고 있는 실무자라면, 필요에 따라 이 두 정보를 활용하는 경우가 꽤나 있을 것이다. CI는 여러 서비스 간의 사용자 식별을 위한 값이고, DI는 하나의 서비스 내에서 중복 가입을 방지하는 값이라는 점을 기억해두고 적재적소에 활용해보자!