송민준의 개발노트

CI와 DI란 뭘까? 본문

기획

CI와 DI란 뭘까?

송민준 2020. 12. 8. 22:38

CI(Connecting information)란 무엇인가? -- 88byte(영대소문자+특수+숫자)
서비스를 연계하여 서로 다른 인터넷 서비스 간에도 동일한 사용자인지 구분을 가능하게 해주는 정보임.
인터넷 공간 어디서나 주민번호로 나를 식별 가능하게 해줌

-> 공식으로 지정된 본인확인 인증기관(주민번호 관리-나이스, KCB 등)에 인증을 받고 각 사이트는 CI와 DI값을 받음, 공인인증서나 휴대폰인증은 CI와 DI값을 얻기 위한 매개체 수단임. CI 자체가 아니란 말임

* 일반적으로 CI = 주민번호 + @ (해싱함)


DI(Duplication Information)란 무엇인가? -- 64byte(영대소문자+특수+숫자)
중복가입체크 같은걸 방지하기 위한 정보임. 예를 들어 구글에 가입할 경우 구글 번호라는 것을 준다고 생각하면
내가 구글에서 여러개 아이디를 만들었을 때 각자 계정 ID가 달라도 식별 번호는 같음
* 일반적으로 DI = CI + 사이트고유코드  (해싱함)

그렇다면 이 두개의 차이점은?
A, B 사이트에 가입하였을 경우 CI는 같음.  그리고 A사이트에서 여러번 가입한 경우 DI가 같음(사이트 내에서)


그렇다면 CI와 DI의 문제점은 무엇인가??
1. CI는 온라인 주민등록번호임
 - 주민번호를 없애고자 도입한건데 주민번호와 1:1 매칭이 됨. 도입 취지가 퇴색됨
2. 본인의 CI, DI가 유출되어도 본인이 변경할 권한이 없음
3. DI는 법적 보호를 받지 못함
 - 주민번호 같은건 법령에 의해 수집과 처리가 엄격하게 제한되어 있어 공권의 보호를 받으나 DI는 무단 이용이 가능하다.(규제강화 논의중)
4. DI 값의 비동일성
 - 사이트 내에서는 유일하게 발급되어야 하는 DI가 인증 솔루션마다 다르게 발급되는 문제가 있음. ex. 휴대폰 인증과 인터넷 인증이 다르게 발급됨.

좀 더 나아가서 SSO도 같은 개념인거 같음.
인증기관(구글, 카카오 같은...)이 CI를 전달하면 각 사이트는 이를 매개로 연계가 가능함.

보통은 처음 사이트에 로그인 하는 순간 CI값을 중앙 SSO 서버에 세션형식으로 저장함. 그리고 두번째 사이트에서는 SSO서버를 뒤져서 해당 CI의 세션이 존재하는지 확인해서 있으면 로그인 없이 바로 세션생성함.

 

또 한가지 응용하자면

오늘 성전환 수술을 한 다음에 내일 A사이트에서 본인인증을 하면 어떻게 될 것인가??

-> 주민번호가 바뀜 -> CI도 바뀐다! (재발급)

'기획' 카테고리의 다른 글

UML(Unified Modeling Language)  (0) 2019.11.29
요구사항 정의서  (0) 2019.11.15