인증 & 접근 제어 & 키 분배프로토콜
정보 자원 접근을 위한 3단계
1)식별 – 인증을 받으려는 사람이 누구인가 -> ID
2)인증 – 인증을 받으려는 사람이 본인이 맞는가 -> password
3)인가 – 자원에 접근 가능한 사람인가 -> 쇼핑몰 운영자 / 고객
개체 인증 = 주장자 + 검증자
인증 방식
1)인식 기반 – 알고 있는 것 – 패스워드, OTP, PIN, 보안 질문, 비밀키, 개인키
2)소유 기반 – 소유하고 있는 것 – 신분증, 스마트카드
3)신체 특징 기반 – 태생적으로 지닌 것 – 홍채, 지문
패스워드 관리 방법
1)고정된 패스워드 – 그대로 저장, 비교 = 탈취에 취약
2)해시된 패스워드 – 전수 조사 / 사전 공격에 취약
3)솔트 사용 패스워드 – 임의의 랜덤 값을 추가하여 해시
인가: 주체가 하고자 하는 작업이 해당 주체에게 허가된 작업인지 확인, 권한 부여, "접근 제어"
접근 제어 방식
1)DAC 임의 접근 제어
자원의 owert가 이에 대한 다른 사람들의 권한을 결정
ACM = 접근 제어 표
-> 희소 행렬 = 공간 낭비가 큼
-> 자원이나 사용자 하나를 기준으로 권한을 저장
ACL: 자원에 대해 사용자들의 권한 저장
CAP: 사용자에 대해 자원들의 권한 저장
*리눅스는 ACL
+ Authorization table
주체, 객체, 접근권한 3개의 column을 사용하는 테이블.
필요 용량이 크나 검색에 용이 -> DBMS에서 사용
2)MAC 강제적 접근 제어
-주체와 객체에게 적절한 보안 등급(레이블)을 부여, 비교
BLP 규칙 : No read up & No write down (높은 보안 수준의 정보 전이 방지)
3)RBAC 역할 기반 접근 제어
-역할에 따른 권한 부여
접근 제어 요구 사항
1)separarion of duty
- 한 개인이 프로세스를 전복시키지 않도록 시스템 기능을 여럿이 나눠 담당하는 것
2)최소 권한 (need to know)
– NX bit, user & kernel mode,
3)open & close policies
- close = 선별된 일부 access만 허용 = white listening = apple
4)접근 제어 policy 통합 및 충돌 방지
- DAC+MAC+RBAC = SELinux
5)dual control
하나의 task에 여러 주체의 동의가 필요
6)fine & coarse grained
7)reliable input (인증을 통과한 주체가 행하는 입력)
8)행정 정책 (관리자만 규칙 변경 가능)
키 분배 프로토콜
1.대칭키 암호에 기반을 둔 키 설정 프로토콜
1)일방향성
1.Client가 서버 ID를 세션키 ks로 암호화 -> 세션키, 타임스탬프와 함께 대칭키로 재 암호화
2.Server는 이를 전송받아 사전에 공유한 대칭키 k로 복호화 -> timestamp 확인
3.세션 키로 암호화된 서버 ID를 복호화 -> 수신자가 자신이 맞는지 여부와 패킷의 목적 확인
2)난수 활용
r = 서버가 생성한 랜덤 값 -> key 갱신에 server의 의사 반영
3)사전에 공유된 키 생성 방식 사용
*공격자의 랜덤 값 전송 공격 가능
2.공개키 암호에 기반을 둔 키 설정 프로토콜
1)일방향성
서버의 공개 키로 암호화, 서버의 개인 키로 복호화
Client가 키 생성의 주체
2)난수를 활용한 양방향성
*마지막에 r2를 재전송하여 server가 보낸 값이 맞는지 확인
키 분배 센터 KDC
Client가 key 요청시 생성 -> 각각의 대칭 키로 동일한 세션 키를 암호화 후 전달
KDC의 통신 부하 감소
키 번역 센터 KTC
키 생성은 client가, KTC는 전달만 담당