s

타이밍어택 개념

· 2023-06-14 (수) 18:06:02 · 5672 · 2

Timing Attack - 타이밍어택이란 어떤 공격인가?
프로그래밍을 할 때 같은 문자열인지를 알아내기 위해 is_equal() 함수를 쓴다고 하자.

어떤 입력값이 "yotaiji" 라는 문자열과 똑같은지 비교를 한다고 하자. 그러면 처음엔 y, 그 다음엔 o, 그 다음엔 t... 이와 같은 순서로 첫번째 문자부터 하나씩 비교를 해간다.

만일 한 문자를 비교하는데 걸리는 시간이 0.001ms라고 가정할때!

만약 내가 "yaaaaaa" 라는 문자열을 넣었다면 두번째 문자를 비교할 때 다르다는 걸 알게 되고 컴퓨터는 return false를 할 것이다. 걸린 시간 0.002ms(y, a 까지 비교 시간합)

그 다음엔 "yoaaaaa" 를 넣어본다. 그러면 세번째 문자에서 false를 보여줄 것이다.
걸린 시간 0.003ms(y, o, a 까지 비교 시간합)

여기서 일치문자가 많을수록 함수 실행 속도가 조금 차이가 나게된다. 물론 쉽게 측정은 안되지만 어느정도 시도를 하다보면 마이크로초, 또는 나노초 단위로 문자열이 다른지를 비교하는 시간이 차이가 난다.

이걸로 해커들이 중요한 키 값이나 비밀번호 등을 알아낼 수 있다고 한다. 이를 해결하는 가장 간단한 방법은 앞의 문자에서 다르다는 걸 깨달아도 무조건 끝까지 비교하는 코드를 새로 작성하면 언제나 수행시간이 거의 같으므로 타이밍 어택을 피할 수 있다.

PHP에서는 버전 5.6부터 hash_equals() 라는 대책함수가 지원되었다.

|

댓글 2개

신통한 생각입니다.
반갑습니다!
댓글을 작성하시려면 로그인이 필요합니다.

토크

3,606건

오픈소스 관련 다양한 이야기를 자유롭게 나눠요

+
제목 글쓴이 날짜 조회
06-17 조회 1,292
06-11 조회 360
06-10 조회 284
06-09 조회 331
05-29 조회 326
02-23 조회 794
02-23 조회 858
24-12-30 조회 1,534
23-06-14 조회 5,673
23-06-13 조회 2,329
23-06-12 조회 1,731
23-05-31 조회 2,555
23-03-17 조회 1,648
23-02-02 조회 2,525
22-08-25 조회 2,333
22-01-24 조회 2,644
21-12-13 조회 2,553
21-12-03 조회 2,531
21-11-30 조회 2,166
21-11-29 조회 2,310
21-11-11 조회 2,144
21-10-22 조회 2,476
21-10-08 조회 2,381
21-09-07 조회 2,021
21-09-02 조회 2,128
21-09-01 조회 2,184
21-08-27 조회 3,328
21-08-02 조회 2,225
21-07-28 조회 2,314
21-06-21 조회 2,602