일방향 해시함수
무결성(integrity)는 보장하지만 기밀성을 보장받지 못함.
위장에 대해 보호받을 수 없음.
부인에 대해 보호받을 수 없음.
해시함수는 평문을 암호화하는 함수이다.
즉 A와 B가 같은 내용을 보냈고 같은 해시함수를 사용했다면 암호화된 텍스트도 같을 것이다.
그래서 무결성을 알 수 있다.
해시함수의 보안성을 높이는 방법 2가지
해시함수의 보안성을 높이는 방법으로 스트레칭이 있다.
스트레칭은 복잡한 연산을 반복 적용하는 것을 의미한다.
즉 암호화 해시 함수를 수천, 수만 번을 반복하는 것인데 이는 무작위 공격으로 비밀번호를 추측하는데 많은 시간을 걸리게 하는 방법이다.
반복횟수를 늘리기만 하는 것으로도 보안성을 높일 수 있다.
또한 해시 값에 솔트를 추가하느냐 아니냐에 따라 보안성이 크게 차이날 수 있는데
솔트라는 것은 소금을 친다는 의미로서 해시함수로 얻어진 해시 값에 특정한 값(32-bit 이상)을 추가하여 보안성을 한층 더 강화하는 방법을 말한다.
솔트가 없을 경우 공격자는 모든 패스워드에 대해 해시값을 미리 계산하여 찾아낼 수 있다.
SHA-256과 같은 일방향 해시함수의 경우, 충분한 암호화 매커니즘을 적용했다고 생각하지만, 동일한 메시지는 동일한 해시값을 가지게 되는 구조이므로 무작위 대입을 통한 원본 문자열의 인식가능성이 높기 때문이다.
이 때 솔트를 해시값에 추가하여 주면, 공격자가 다이제스트 값을 알아내더라도 솔트 값이 추가된 해시값 대상으로 정보 일치 여부를 확인하는 것이 어렵기 때문에 보안성이 증가한다.
해시함수의 한계
평문의 데이터가 커도 해시함수를 적용했어도 일정한 크기의 암호화된 텍스트가 나와야한다.
그렇지 않으면 활용성이 매우 떨어지게 되어 사용할 수 없었을 것이다.
그렇지만 해시함수는 일정한 값을 가지며 SHA-1 의 경우 암호화하려는 데이터의 크기에 상관없이 20바이트의 해시값을 가진다.
또한 해시함수를 만들 때 데이터가 다르면 해시값도 다르게 나오는게 보통이다.
그러나 해시함수가 요즘 무결성을 의심받는 경우가 생겼는데 바로 SHA-1의 경우 구글에서 다른 파일임에도 불구하고 같은 해시 값을 가지게 되어 보안성에 문제가 생겼다.
이는 파일을 압축하는 경우에서 생겼다.
해시함수는 절대 같은 해시 값을 가지면 안된다.
이런 충돌 현상을 이용해 시스템을 속이는 경우가 발생할 수 있기 때문인데 예를 들어 완전히 다른 정보를 전달할 수 있는 것이다.
A의 내용을 B로 압축해서 DB에 전송했는데 공격자가 이를 C계약서로 바꿀 수 있다는 것이다.
해시 값이 같아서 시스템은 알지 못한다.
또한 해커가 계약서 뿐만 아니라 악성코드를 압축해서 정상 프로그램으로 바꿔치기하는 경우도 생긴다는 것이다.
++SHA-1는 전자서명, HTTP인증, 버전 관리, 백업 등에 쓰였다.
구글을 클라우드 컴퓨팅을 이용해서 암호 알고리즘의 한계를 규명했다.
컴퓨팅의 성능이 빨라짐에 따라 암호 알고리즘의 수명을 더욱 빠르게 단축될 것으로 생각된다.
'컴퓨터(Computer Science) > 컴퓨터보안(Computer Security)' 카테고리의 다른 글
정보의 특성 [컴퓨터보안] (0) | 2020.04.14 |
---|---|
정보 보호의 의미, 보안의 종류 [컴퓨터보안] (0) | 2020.04.13 |
우리가 컴퓨터 보안을 배우는 이유 (0) | 2020.04.13 |
베이컨 암호 (Bacon's Cipher) [컴퓨터보안] (0) | 2020.04.05 |
알베르티 암호( Alberti's Cipher) [컴퓨터보안] (0) | 2020.04.05 |