IT 성장기 (교육이수)/모의해킹 스터디 (2024.04-09)

[webDev] 식별과 인증 (Identification vs. Authentication)

eezy 2024. 5. 4. 09:17

 

식별과 인증

 

1. 정의

2. 인증의 종류

3. 로그인 로직 구성 방법

 

정의

식별 : 수 많은 데이터 중에 특정 데이터를 찾는 작업

  • 방법 : 이 경우 사용자는 자신이 누구인지를 시스템에 알리고, 시스템은 이 정보를 바탕으로 해당 사용자의 권한을 확인한다
  • 식별 정보는 UNIQUE 해야 한다. (중복 불가)
    • 이름, 생년월일 등은 중복될 우려가 있기에 식별자로 사용하기 부적합하다
    • 예 ) 00년01월01일 생일인 김철수가 우리나라에 두 명 존재하면, 두 사람의 데이터가 중복됨으로 식별할 수 없다. 

인증 : 시스템에서 사용자가 제공한 정보가 실제로 그 사용자의 것인지 확인하는 것

  • 방법 : 사용자가 전달한 정보를 데이터베이스에서 찾아서, 일치하는지 확인한다
  • 인증 정보의 예로는 비밀번호, OTP 등이 있다
  • 식별 정보는 외부에 노출되어도 무방하지만, 인증 정보는 외부에 노출되면 안된다!

고유식별정보 : 개인을 고유하게 구분하기 위하여 부여된 식별 정보. 개인정보 보호법에서는 법령에 따라 규정된 정보로 한정한다. 

  • 예) 주민등록번호, 여권번호
  • 고유식별정보는 외부에 노출되면 안된다
  • 웹 패킷에 고유식별정보가 평문으로 노출된다면, 보안 취약점으로 판단할 수 있다

인가 (Authorization) : 인증을 통해 허가된 사용자가 어느 범위까지 무엇을 할 수 있는지 정의하는 것

 

인증의 종류

인증은 본인확인기관에 본인임을 확인하는 본인 '확인'과 확인받은 수단을 서비스에서 활용하는 본인 '인증'으로 구분된다. 

 

  1. 지식 기반 인증 : 아이디, 비밀번호 로그인
    • 장점 : 검증이 확실하며, 관리 비용이 상대적으로 저렴하다
    • 단점 : 사용자가 기억하기 어렵다
  2. 소유 기반 인증 : 공동인증
    • 전자서명법 개정으로 본인확인기관 자격을 획득할 시 사설인증 서비스 제공 가능해졌다.

    ▶  본인확인기관이란? : 가입자를 대신하여 연계정보(CI : Connecting Information)를 제공하는 기관

  • 대표적으로는 통신사 , 카드사 , 공동인증기관 (코스콤, 금결원, 한국정보인증, 한국전자인증) 등이 있습니다. 
  1. 기기 기반 인증 : 휴대폰 본인확인
    • 본인확인기관인 통신사의 가입자 정보와 휴대폰 사용자가 입력한 정보를 비교하여, 사용자가 실제 휴대폰 주인인지 검증한다. 
    • 휴대폰 소유주의 개인정보와 실제 휴대폰 기기를 모두 소유하고 있어야 인증이 가능하여, 가장 강력한 인증수단으로 꼽힌다. 
  2. 생체인증 : 지문인식, 안면인식
    • 홍채, 얼굴, 지문, 음성 등 다수의 사람이 공통으로 가지고 있는 고유한 생체적 특징을 기반으로 인증한다.
    • 장점 : 간편하고 분실 도난의 위험이 없다
    • 단점 : 변경 및 재발급 불가

 

로그인 로직 구성 방법

아래의 코드는 예시를 위한 것이다. 자세한 코드는 별도의 포스트로 작성하였으며, 아래 링크를 첨부해 두었다.

 

▶ 식별과 인증을 동시에 하는 케이스

  • DB 질의 시, 식별 정보와 인증 정보 확인을 한 번에 수행하여 로그인을 구현
$sql = “select * from table where id=‘$user_id’ and pass’$user_pass’”;
    //. 문자열 합치기. 한 줄에 다 써도 상관 없음
$result = $db_connect -> query($sql);

if($result->num_rows>0){
    //login ok
}else{
    //login fail
}

 

▶ 식별과 인증을 분리한 케이스

  • DB 인증 데이터와 유저가 입력한 데이터를 비교하여, 일치 시 인증 완료
$sql = select * from member where id='$user_id'
$result = $db_connect -> query($sql);
    //식별 과정
if ($result->num_rows>0){
    // id correct
    if($row_pass['Pass']==$user_pass){
    	// login ok : pass correct
    }else{
    	// pass incorrect
    }
}else{
    // login fail : id or pass incorrect
}
    //인증 과정

 

실제 작성한 코드는 아래 링크 클릭!

 

[webDev] 로그인 로직 구성 (식별과 인증)

 

[webDev] 로그인 로직 구성 (식별과 인증)

식별과 인증을 구분하여, 로그인 로직을 구성하는 방법에 대해 자세한 코드와 함께 알아 보자.  로그인 로직 구성 1. 로그인 사이트 구성 2. 식별 / 인증 동시 3. 식별 / 인증 분리 4. 식별 / 인증

yyz-code.tistory.com

 

 

< 참조 자료 >

 

https://yozm.wishket.com/magazine/detail/1660/

 

내 서비스에는 어떤 인증이 필요할까? | 요즘IT

본인 인증은 시스템에 정당한 가입자가 접근했는지 확인하는 절차입니다. 인증은 보안상 꼭 필요한 절차이지만, 한편으로는 경험의 일관성을 방해하거나 너무 복잡해서 서비스 사용 의욕을 떨

yozm.wishket.com