Cryptographic Hash Functions: 암호화 해시 함수 (CHF)
- 해시 함수는 일반적으로 고정된 사이즈의 input block M을 입력으로 하는 데이터 압축 함수 f()를 기반으로 한다.
- Chain Block Cipher
- 위 그림 처럼 IV(Initial Vector) 혹은 이전 블록에 대한 해시 값과 이번 M input block을 기반으로 차례대로 해시 값을 생성한다.
- 1-bit의 차이도 "avalanche effect"를 만들고, 최종 output은 완전히 달라진다.
- 다운로드한 파일의 data integrity 증명을 위한 checksum으로 활용될 수 있다.
Bruteforcing
- 가능한 모든 값을 될 때까지 대입하는 것
- 만약 가능한 모든 조합을 시도하며 password를 복구하고자 한다면, 이론적으로는 가능하다.
- 그러나, 오늘 날의 computation power로는 쉽지 않다.
- Dictionary Attack
- 사람들이 외우기 쉬운 단어들을 비밀번호로 사용한다는 사실을 이용한 방식이다.
- 자주 사용되는 단어들의 리스트(apple, car, {username})를 짜고, 그로부터 가능한 패스워드들(apple123!, Car1#, {username}123 등}을 생성한다.
- password에 match될 때까지 시도한다.
- 생각보다 꽤나 효과적인 방식이다.
Bruteforcing Mitigation Measures: 브루트 포스 보안 공격을 막기 위한 조치
Adding Delays
- 재시도에 대한 대기 시간(wait time)을 추가한다.
- 많은 로그인 시도가 감지될 경우 계정을 잠근다.(lock)
- 사실, 공격자가 password hash value를 알고 있다면 이러한 조치들은 무용지물이 된다.
Salt
- 패스워드 해싱 시 랜덤하게 선택되어진 salt라는 값을 추가한다.
- y = h(password, s)
- 그리고 패스워드 파일에 (s,y)를 저장한다.
- salt s 는 secret 값이 아니다. 즉, 서버의 데이터베이스가 유출되면 salt 값도 유출된다.
그렇다면 왜 salt 값을 쓸까?
- 서로 다른 사용자 계정 간의 동일한 패스워드를 알아보지 못하도록 예방한다. 만약 salt값을 추가하여 해싱하지 않았다면 같은 패스워드를 가진 사용자들은 해시 값이 같기 때문에 한번에 password가 crack될 수 있다.
- Pre-computed hash attack을 예방한다.(Rainbow Table Attack)
- 공격자는 자주 사용되는 혹은 쉬운 패스워드들의 해시 값을 미리 생성해 놓는다.
- 만약 해커들 간에 그들만의 패스워드 해시 값들을 공유한다면?
패스워드를 만들 때 팁
- 패스워드의 길이가 길 수록 보안성이 낫다.
- Lower-case, upper-case, number, special character를 포함하는 것이 좋다.
- 모든 곳에서 동일한 패스워드를 사용하지 말자.
- 동일한 패스워드를 쓰더라도 site salt를 추가하자.
- {password}+{salt}(ex. Naver,skku,google,rnrmf,spdlqj)
- 모든 곳에서 동일한 패스워드를 사용하지 말자.
Biometric Authentication
- "You are your key"
- 점점 자주 사용되고 있다.
- 예
- Fingerprint(지문)
- Handwritten signature(자필 사인)
- Facial recognition(얼굴 인식)
- Speech recognition(음성 인식)
Ideal Biometric
- Universal
- 거의 누구에게나 적용될 수 있다.
- 현실에서, 모든 사람들에게 적용될 수 있는 biometric은 없다.
- Distinguishing
- 모든 사용자를 특정하고 구별할 수 있다.
- 현실에서 모든 사용자를 특정하고 구별할 수 있는 biometric은 어렵다.
- Permanent
- 측정된 신체적 특징이 변하지 않는다.
- 현실에서, 오랜 시간 유효하게 남아있다면 괜찮다.
- Collectable
- 필요한 데이터를 모으기 쉬워야 한다.
- 얼마나 사용자가 협조적이냐에 의존한다.
Web Cookies
- 쿠키는 웹 사이트(서버)로부터 제공되고, 유저의 장치(클라이언트)에 저장된다.
- 쿠키는 웹사이트의 데이터베이스를 인덱스한다.
- 쿠키는 세션들의 상태를 유지한다. (일반적으로 사용자 정보)
- 웹은 stateless protocol인 HTTP를 사용한다.
- 쿠키들은 세션 안의 상태를 유지한다.
'Computer Science > Security' 카테고리의 다른 글
SSL/TLS: 프로세스를 중심으로 (0) | 2022.04.13 |
---|---|
Public-Key Cryptosystem: 공개키 암호화 방식에 대해 (0) | 2022.04.13 |
Fundamental Concept of Cryptosystem: 개념과 역사를 중심으로 (0) | 2022.04.13 |
Access Control: 정책과 구현 방식 (0) | 2022.04.13 |
Security Design Principles: 보안의 기본 원리 (0) | 2022.04.13 |