타이밍어택 개념
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() 라는 대책함수가 지원되었다.
댓글 1개
따왕666
2년 전
신통한 생각입니다.
게시판 목록
토크
개발과 관련된 어떤 얘기도 괜찮습니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 3450 | 11년 전 | 2983 | ||
| 3449 | 11년 전 | 4204 | ||
| 3448 | 11년 전 | 3190 | ||
| 3447 | 11년 전 | 5107 | ||
| 3446 | 11년 전 | 3839 | ||
| 3445 |
|
11년 전 | 4220 | |
| 3444 |
|
11년 전 | 2732 | |
| 3443 | 11년 전 | 2796 | ||
| 3442 |
|
11년 전 | 2993 | |
| 3441 |
울산굿모닝
|
11년 전 | 2556 | |
| 3440 |
Unhappy
|
11년 전 | 2821 | |
| 3439 |
RipperTNT
|
11년 전 | 2636 | |
| 3438 | 11년 전 | 3523 | ||
| 3437 | 12년 전 | 1936 | ||
| 3436 | 12년 전 | 1530 | ||
| 3435 | 12년 전 | 2068 | ||
| 3434 |
제주프라이스
|
12년 전 | 2794 | |
| 3433 | 12년 전 | 2701 | ||
| 3432 |
가슴시린하늘
|
12년 전 | 3045 | |
| 3431 |
프리랜서개발자
|
12년 전 | 2949 | |
| 3430 |
|
12년 전 | 2830 | |
| 3429 |
|
12년 전 | 2595 | |
| 3428 | 12년 전 | 12813 | ||
| 3427 |
SugarSkull
|
12년 전 | 1813 | |
| 3426 | 12년 전 | 1324 | ||
| 3425 | 12년 전 | 2714 | ||
| 3424 | 12년 전 | 4720 | ||
| 3423 | 12년 전 | 3409 | ||
| 3422 | 12년 전 | 3719 | ||
| 3421 |
프로프리랜서
|
12년 전 | 2095 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기