Access Control
사용자의 특정 접근을 제어하는 것
인증 : 너가 진짜 너가 맞아?
기계 --> 인간 인증
기계 --> 기계 인증 (network protocol)
인가 : 너가 그걸 하도록 권한이 허용되어있니?
두 가지 개념을 합쳐서 관리하는 것을 접근 제어라고 함.
Authentication : 인증
인증은 다음과 같이 3가지에 base를 둔다.
- Something you know : 비밀번호
- Something you have : smartcard
- Something you are : 생체인식
비밀번호
something you know의 예시
Random이라고 생각하지만 사실 그렇지 않음.
사실 여러가지 문제가 많음.
- 사람들은 기억하기 쉬운 것으로 비밀번호를 생성함. 그리고 그것을 여러 사이트에 Reuse함!
- 종이나 휴대폰 메모장에 적어놓기도함.
- 사회공학적 공격(Social Engineering)에 취약함.
그런데 왜 쓰니? 싸니까!!!!
1. 비용이 싸다 (다른 인증 방법에 비해)
2. 재발급하기에 훨씬 편리함 (지문을 재발급할순....)
간단한 몇가지 실험들
* 6글자 이상, 1개 이상의 숫자 / passphrase / 랜덤으로 비밀번호를 설정한 세 그룹을 나눌때
1번 그룹은 30퍼정도의 취약성을
2,3 은 10%정도의 취약성을 가졌다.
따라서, passphrase가 가장 효율적이다
그리고 주기적으로 바꾸는 것도 의미 없음
비밀번호 공격
일반적인 공격루트는
외부인 --> 일반 사용자 --> 관리자 의 방식으로 권한을 높여가는 것인데
즉, 하나의 취약한 비밀번호만 있으면,, 위험함.
APT(Advanced Persistent Threat) 오랜기간 지속적인 공격의 형태를 띔
이를 막기 위해 Retry time을 설정할 수 있는데
Too short --> Macro
Too long --> DDOS 의 공격이 일어날 수 있음.
따라서, 이는 기하급수적으로 증가하게 설계하는 것이 좋음!
저장
비밀번호를 file에 평문 그대로 저장하는건.. 말도 안된다. 하지만 서버에서 이를 검증하기 위해 비밀번호 저장이 필요한데 주로 hash를 사용한다. 이렇게 되면 해시함수의 단방향성 때문에 Attacker가 뚫기 어려워진다.
y = h(pw) 의 형태로 저장한다.
이 경우의 공격의 종류를 살펴보자.
Dictionary Attack
비밀번호 관련된 공격의 대부분은 이 형태를 띈다.
이 공격은 가능한 비밀번호 x에 대해 h(x)값을 미리 공격자가 계산을 해놓고 사전에 저장하듯 확보를 해놓는다. 이후 y=h(x)가 저장된 password file을 획득하면 이때 사전을 비교해가며 x를 찾는 형태의 공격을 의미한다.
이 공격은 한번 계산을 해놓으면 이후엔 비교연산만 수행하면 된다는 점때문에 효율적인 공격이다.
이를 어떻게 막을 수 있을까?
원천 봉쇄는 어렵지만 적어도 공격자를 귀찮게 할 수는 있을 것이다!
Salt and Pepper
Salt
hash를 salt와 같이 한다.
y = h (pw,salt)
salt 또한 비밀이 아니다 어딘가에 저장되어 있다.
salt를 비밀번호 검증할 때 사용하는데 이렇게 되면 s값을 사이트마다 다르게 설정하면 공격자가 매번 다시 계산해야하기에 더 복잡해지고 미리 계산해놓은 의미가 퇴색한다.
Pepper
같은 개념인데 pepper는 비밀이다. 아무도 모른다!
y = h(pw,pepper)를 password파일에 저장하고 p는 어딘가에 숨겨놓는다.(DB에 저장되지는 않는듯...)
공격자는 pepper를 추론해야하기에 더 어렵다.
Hash 계산을 여러번
hash를 계산하는 숫자를 늘려보자. 이러면 일반적으로 계산이 늘어나니 속도가 느려지지만
공격자는 훨씬 더 많은 시도를 해야한다!
이외의 비밀번호 이슈들
- Malware , 잃어버린 휴대폰
- 기본 비밀번호를 변경하지 않는 이슈
- 가짜 와이파이
- Social Engineering : phishing / 어깨너머 보기
- 비밀번호 관련 log가 남아있는 것들
- Crendential Stuffing : 공격자가 수집한 pw를 여러사이트에 마구잡이로 넣어보기
- Web browser cache : 자동완성 비밀번호 노출
- Password manager : 비밀번호 통합관리툴
그러한 모~든 이슈가 있지만 비용이 절대적으로 저렴해서!!!!!!!!! 쓴다고한다
Biometrics : 생체인증
내가 내 자신이 key
지문, 홍채, 손 서명, 얼굴 인식, 음성인식... 여러가지가 있음.
생체인식을 왜쓰니?
비밀번호보다 훨씬 안전하고 편함. 그러나, 인프라를 구성하는 비용등 비싸다..
오경보, 높은 등록, 유지보수 비용, 포렌식의 한계
서명 : 꽤 효과적임
얼굴인증 : CNN나온이후로 꽤 괜찮음. 현재는 TOF방식으로 얼굴의 높낮이 체크를 해서 어두운 환경에서도 괜찮음
음성인식 : ..별로
이상적인 생체인증의 조건
Universal(보편성) : 누구에게나 적용할 수 있어야한다. (일부를 제외하고는 대부분 적용가능해야함)
Distinguishing(구별가능) : 특정 사람들을 확실하게 구분할 수 있어야한다.
Permanent(영구성) : 모은 신체적 특징이 영구적으로 변하면 안됨
Collectable(수집성) : 데이터를 모으기 쉬워야함. 실제론, 대상의 협조가 중요하다. 위험하지 않게 수집가능해야함.
생체인증의 두가지 모드
Identification 식별 : 너가 거기에 있었니?
One to Many
범죄현장에서 지문식별하는 과정을 생각해보자. 채집한 지문을 여러 Database에서 찾아야한다.
다음과 같은 이유에서 상대적으로 어렵다.
- 매칭하고 비교할 대상이 많다
- 대상이 비협조적으로 데이터를 주지 않으니 DB확보가 어렵다.
Authentication 인증 : 너가 너가 맞니?
One to One
대상이 인증하려는 대상이 맞는지 확인하기
Ex : 지문인식 프린트
Enrollment vs Recognition
Enrollment
대상의 생체정보를 DB에 저장하는것
등록은 신중하고 천천히, 반복적, 정밀하게 진행한다.
FaceID 등록할때를 생각해보자!
Recognition
대상을 인식하는 과정
최대한 빠르고, 간단하게 진행해야한다.
그러면서도 합리적이고 정확해야한다.
False Aceept (fraud 기만률) vs False Reject (insult 모욕률)
False Accept 기만률 : 나를 다른 사람으로 인식
False Reject 모욕률 : 나를 못알아보는것
이 둘은 기묘한 특성이 있다 하나를 올리면 반대쪽 하나가 떨어진다는 특징이 있다.
예를 들어보자, 얼굴 인식을 깐깐하게 해서 민감도를 올려보자. 그러면! 각도에 따라서 내 얼굴을 인식 못할 수 있다. 모욕률이 올라간다. 그러니 반대로 민감도를 낮춰보자. 그러면 나랑 닮은 내가 아닌 다른 사람의 얼굴을 인식할 수 도 있다. 기만률이 올라간다.
따라서, 이 둘을 적절하게 조절을 해야하는데 여기서 EER : Equal Error Rate이라는 개념이 등장한다.
EER : Equal Error Rate
False Accept rate = False Reject Rate 가 같아지는 지점을 EER이라고 한다.
아래 그래프로 이해할 수 있겠다.
EER이 낮아질수록 해당 기기의 인증 성능이 우수하다.
물론! 어플리케이션이나 기기의 특성에 따라서 민감도는 변할 수 있다.
가령, 은행 어플은 얼굴인식을 좀 틀리더라도 깐깐하게 보는게 유리하다.
Fingerprint : 지문
1892년 Galton이 사람의 지문이 특정 원형 패턴을 가지고 있다는 연구를 기반으로 시작
1. 사람 식별
2. 범죄현장 포렌식
주로 2가지 목적으로 시작된다.
Identifying People : 사람 식별
예시
FBI NGI : 범죄자들의 생체 인식 데이터를 모아놓은 서비스
USD .. IDENT : 2억여명의 외국인 지문을 보관
매우 낮은 약 1% 가량의 EER을 자랑한다.
다만, 문제도 그만큼 많은데 우선, 손가락이 훼손된 사람들은 식별이 불가능하다.
어떻게 공격할까?
사진, 뭐 기타등등 지문을 채취해서 모양 만들어서 활용
MasterPrint : 실제 지문은 아닌데 합성된 지문. 약 6%정도에 뚫린다.
손가락 잘라서 이용해
Crime Scene Forensics
범죄 현장에서 얻은 지문을 Database에서 매치해봄.
지문 비교는 어떻게 할까?
일일히 사진의 픽셀을 다 비교할 것이라고 생각하지만 아니다.
Minutia라는 개념이 등장한느데 지문마다 지문의 특징을 활용해서 기억한다.
우선, 지문마다 4가지 정도의 형태가 존재하는데 다음과 같다.
Loop / WHorl / Arch / Tent
다음과 같이 선이 하나로 만나거나 갈라지는 특정 포인트를 추출한 이후 그 점들(minutia)간의 패턴을 인식하고 기록한 후에 비교한다.
Iris : 홍채
홍채는 지문보다 훨씬 더 특징적이다.
자체적으로 고유한 패턴이 무질서하게있고 유전적의 영향을 받지 않는다. 또한 영구적으로 변하지 않기에
Permanent, Universal, Distinguishing등의 이상적인 인증 특징을 잘 만족한다.
홍채인식은 실험실 환경에서 가장 낮은 Error Rate를 가지고 있다. 거의 0%에 수렴한다.
(물론 실제 현장에선 눈이 작거나, 눈꺼풀이 안떠질때, 속눈썹,, 등의 이슈로 4~6%의 에러율을 띈다.)
대략적인 홍채 인식 과정은
홍채 스캔 - 사진 - 극좌표화 - 2-D wavelet 변환 - 256Byte iris code로 만든다.
이렇게 byte코드를 만든 후 Hamming distance에 기반해서 정확도를 따진다.
d(x,y)를 다음과 같이 정의한다.
y와 매치하지 않는 x의 비트수 / 전체 비교된 비트 수
ex : d(0010,0101) = 3/4
동일한 홍채여도 0.08정도의 값을 띄고 임의의 두 홍채를 비교하면 0.5를 띈다고 한다.
일반적으론 이 해밍거리 d가 0.32이하면 인정한다고 만족한다.
그렇다면 홍채는 완벽해보이는데 단점이 없을까?
Attack on Iris Scan
타인의 홍채를 훔칠 수 있다. 좋은 눈 사진을 scan해서 사진을 홍채 인식을 하면 인식이 된다 !
이를 방지하기 위해 홍채인식을 할때 사진은 static하니까, Hippus를 활용한다.
동공수축 메커니즘을 활용해서 어느정도 동공이 동적으로 움직여야 진짜 홍채가 인식된것으로 인증한다.
여러 방법들의 EER 비교
지문 : 약 5%이하
홍채인식 : 실험실에서는 0에 수렴, 그러나 현장에선 이정도 이루기 어려워. 등록이 정확해야해
Attack on Biometric system
위에서 이야기한것만 읽어보면 생체인증이 완벽해보인다.
그러나 생체인증은 freshness를 줄 수 없다는 단점이 존재한다.
이미 기록되어있고 변하지 않기 때문에 기록되어 있는 DB가 털린다면,,,
모든 사람들에게 동등하게 정확하지도 않다.
또한 2개 이상을 조합한다하면 오히려 기만률을 Control하기 어려워진다.
따라서 요즘은 생체 --> 생리학으로 넘어가는 움직임도 있다.
한 번 뚫리면 비밀번호를 리셋하듯 바꿀 수 없다! 재사용이 어렵다는 문제도 존재한다.
'CS > 정보보안' 카테고리의 다른 글
정보보안_실습 (0) | 2023.04.23 |
---|---|
정보보안_6_Protocol (0) | 2023.04.22 |
정보보안_4_Crypto (0) | 2023.04.14 |
정보보안_3_Crypto (0) | 2023.04.13 |
정보보안_2_Crypto (0) | 2023.04.12 |