정보보호 - 3(Cryptography - Hash)

박승현·2023년 9월 21일
0

정보보호

목록 보기
3/11
post-thumbnail

Hash function


Cryptographic hash function

  • m -> h(m) : 굉장히 빠름
  • h(m) -> m : 불가능 해야함
  • m != m1 = h(m)과 h(m1)은 1/2^256의 확률로 같음(사실상 불가능)
  • m = m1일떄는 h(m)과 h(m1)은 반드시 같아야함

  • 원본 메세지를 256비트의 해쉬메세지로 바꿈(SHA-256)
    • 크기가 큰 원본 메세지 간의 비교를 하기 위해서 256비트의 2개의 해쉬메세지를 비교하기만 하면됨(메세지가 같으면 해쉬메세지도 같아야 하기 떄문)

원본 메세지를 여러 라운드를 거쳐 동일한 비트의 아웃풋을 출력함


Birthday attack

  • 생일이 같을 확률
    • 사람을 m 생일을 h(m)이라고 생각하면?
    • m, m1에 대한 h(m), h(m1)이 다르기 위해선 해쉬함수의 결과가 길어야 한다(현재는 256비트 정도는 되야한다고 판단 중임)

Message authentication code(MAC)

  • Integrity를 중요시 할때 필요
    • 방송의 브로드캐스트 같은 경우 보안보다는 내용의 변조여부가 중요
  • 대칭키의 CBC알고리즘이나 hash를 사용하면 구현 가능
  • A -> B로 메세지를 보내는 경우
    • m과 h(m||K_ab)를 보냄
    • K_ab는 A와B만 아는 값이므로 m과 K_ab를 이어 붙인 h(m||K_ab)의 값은 A,B만 생성 가능
    • A에서 보낸 h(m||K_ab)와 B에서 직접 계산한 h(m||K_ab)가 같아야 변조가 없는 것
    • 추가로 보안까지 유지하고 싶으면 처음 m를 보내는 대신 K_ab(m)을 보내면 됨

One Time Password(OTP)

  • Time-synchronized
  • A(고객) -> B(은행) 이라하면
    • OTP의 시리얼 넘버를 은행서버에 A의 정보에 입력(OTP에는 기기마다 고유한 키값이 있음), A는 OTP장비를 가져옴
    • 인증이 필요할때 사용자가 OTP 기계를 사용 숫자를 생성(해쉬함수)
      • OTP에는 시계가 있음
      • OTP의 시리얼 넘버, 키, 시간을 concat해 해쉬함수를 생성 -> h(sn|key|time)
    • 사용자가 은행에게 생성한 h(sn|key|time)과 은행에서 가지고 있는 정보로 h(sn|key|time)를 비교
      • 두개의 값이 같으면 인증 성공
    • 전송시간을 고려해 특정 시간동안은 같은 해쉬값이 생성되도록 설정함(시간이 너무 길면 해킹 위험 -> Replay attack)
  • Challenge-response
    • 서버와 클라이언트가 공유하는 secret s가 있음
    • 클라이언트가 로그인을 원하면 서버에서 챌린지 R을 클라이언트로 보냄
    • 클라이언트는 R과S로 해쉬함수 H(R|S)를 만들어서 서버로 보냄
    • 서버에서는 동일한 H(R|S)를 생성하고 받은 값과 비교함
  • Hash chain
    • 나만 아는 정보를 가지고 상대방에게 인증을 받고 싶어서 고안됨
    • A -> B일때 A가 본인만 아는 랜덤 넘버 S를 생성
    • A가 해쉬함수 H(S)를 생성
    • 해쉬함수를 N번 적용 H(H(S))처럼 해쉬를 여러번 적용한 함수를 Hn(S))라고 함
    • A가 N이 매우 큰 Hn(S)를 B에게 보냄
    • B는 A와 Hn(S)를 저장, B는 S는 모르는 상태
    • A가 로그인 할때 Hn-1(S)를 B에게 보냄
    • B에서 H(Hn-1(S))를 계산해서 서버의 Hn(S)와 같은 값이 나와야 인증 성공임
    • Hn(S)에서 Hn-1(S)로 가는것은 거의 불가능 하고 A만 생성 가능하기 때문에 가능한 방법
    • 인증을 한번 하고나면 A는 n-2값을 보내고 B는 이전에 갱신해둔 n-1과 받은 n-2에 해쉬를 한번 더 적용해 n-1값을 만들어 저장해둔 값과 비교함
    • n번만 사용 가능한 방법이라 주기적 갱신 필요
profile
KMU SW

0개의 댓글