개발자라면 한번쯤은 보러오는 곳
[Information System Security] Hash 본문
Cryptographic hash function
- 임의의 길이 메시지 매핑 고정 길이 출력(message digest)
- message digest function
- one-way function -> H(m)으로 m을 추측 할 수 없다.
- 임력의 임의적인 변경의 경우, 출력의 모든 비트는 50%의 변경 가능성을 가진다.
- 계산상으로는 같은 다이제스트의 두 메세지를 찾을 수 없음
- MD5(Message digest5) -> 현재 사용 X
- Input: arbitrary number of bits
- Output: 128 bits
- SHA-1 -> Secure Hash Algorithm-1
- Input: arbitrary number of bits
- Output : 160 bits
- SHA-256
- Step 1 : 512bit의 배수로 메세지 패딩(16단어, 64 octets)
- Step 2 : 한 타임에 512비트씩 메세지 처리하여 결과값을 생성
Birthday attack
- 많은 사람들 중에 생일이 많은 사람들의 쌍이 있다.
- 생각보다 bit를 크게 잡아야 결과가 겹치지 않는다.
Message Authentication Code(MAC)
Message Authentication is concerned with:
- protecting the integrity of a message = 메시지 무경성 보호
- validating identiny of originator = 발신자 신원 확인
- non-repudiation of origin = 부인봉쇄의 근원
Message Authentication Code(MAC)
- fixed sized authenticator for some message = 몇 메세지의 고정된 인증자
- to provide authentication for message = 메세지에 대한 인증 제공
- by using block cipher mode or hash function
Keyed hash function
- Mac based on a hash function
-> because hash functions are generally faster
-> code for crypto hash functions widely available
- H(Key | m) -> key와 message를 Hash 함수로 묶음
- H(Key | m) 대신에 H(m | Key)를 사용함
One Time Password(OTP)
- Hash function can be used to generate one time password = 해시 함수를 사용하여 일회용 비밀번호 생성 가능
- 각 로그인 마다 새 암호가 사용된다.
구현 방식 3가지
- Time-synchronized
- Challenge-response
- Hash Chain(s/key)
Time-synchronized
- a hardware called a security token = 보안 토큰이라고 불리는 하드웨어
- Client and server share a key, the serial number of the hardware token = 클라이언트와 서버가 하드웨어 토큰의 일련 번호인 키 공유
- Both of them compute f(key, serial #, time) = 두 제품 모두 f(키, 일련번호, 시간)을 계산함
- 값이 일치하면 성공적으로 완료됨
- "시간"을 느슨하게 동기화 해야함
*** replay attack
- 유효한 데이터 전송을 가로챈 후 반복하는 사이버 공격
- 공격자는 발신자의 데이터나 정보를 가로챈다. 만약 유효시간이 길다면 그 시간동안 공격자는 훔친 데이터로 공격이 가능하다.
- 유효 시간을 줄인다면 이 공격을 받을 확률을 낮출 수 있다.
Challenge-response
- a client and a server share secret S = 클라이언트와 서버는 비밀 S를 공유한다.
- Client wants to login the server = 클라이언트가 서버에 로그인 하려고 함
- The server presents a random number R to the server = 서버가 랜덤넘버 R을 생성한다.
- Client computs H(R|S) and presents it to the server = 클라이언트가 H(R|S)를 계산하여 서버에게 보낸다.
- The server computes H(R|S) If they match, the login is allowed = 서버는 H(R|S)를 계산합니다. 일치하면 로그인이 허용됩니다.
Hash Chain(s/key)
- Preparation phase 준비 단계
- 클라이언트는 비밀 key 생성 후 기밀로 유지
- 클라이언트는 h(k)-> KEY에 hash함수 적용 해서 제작
- 클라이언트는 서버에 h(k)를 공유하고 서버는 이를 저장
- Login phase 로그인 단계
- 클라이언트는 hn-1(k)를 계산하여 서버에게 알려줌
- 서버는 hn-1(k)로 h(hn-1(k))를 계산해서 hn-1(k)의 값을 비교
- 서버는 다음 로그인을 위해 hn-1(k) 저장
- 클라이언트만 key를 알아서 h(k)를 계산할 수 있다.
- h(k)에서는 절대 hn-1(k)를 계산 할 수 없다.
'학교 수업 > Information System Security' 카테고리의 다른 글
[Information System Security] TLS(Transport Layer Security) (0) | 2022.10.31 |
---|---|
[Information System Security] Applied cryptography (0) | 2022.10.29 |
[Information System Security] Asymmetric key cryptography (0) | 2022.10.25 |
[Information System Security] Cryptography (0) | 2022.10.21 |
[Information System Security] 정보보호와시스템보안 (0) | 2022.10.09 |