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 값을 쓸까?

  1. 서로 다른 사용자 계정 간의 동일한 패스워드를 알아보지 못하도록 예방한다. 만약 salt값을 추가하여 해싱하지 않았다면 같은 패스워드를 가진 사용자들은 해시 값이 같기 때문에 한번에 password가 crack될 수 있다.
  2. 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를 사용한다.
    • 쿠키들은 세션 안의 상태를 유지한다.
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기