낙상이란 무엇입니까? SHA-1 충돌 공격, 설명
2016 년 1 월 1 일에 Mozilla는 Firefox 웹 브라우저에서 SHA-1이라는 약화 된 보안 기술에 대한 지원을 종료했습니다. 거의 즉시, 그들은 오래된 웹 사이트에 대한 접근을 차단하기 때문에 그들의 결정을 뒤집었다. 그러나 2017 년 2 월, 두려움이 마침내 실현되었습니다. 연구원은 최초의 실제 충돌 공격을 생성하여 SHA-1을 파기했습니다. 그게 무슨 뜻이야?.
SHA-1이란 무엇인가??
SHA-1의 SHA는 보안 해시 알고리즘, 그리고 간단히 말하자면, 당신은 그것을 일종의 수학 문제 또는 방법으로 생각할 수 있습니다. 그것에 담긴 데이터를 뒤섞다.. 미국 NSA에서 개발 한이 기술은 인터넷에서 중요한 전송을 암호화하는 데 사용되는 많은 기술의 핵심 구성 요소입니다. 일반적인 암호화 방법 들어 본 적이있는 SSL과 TLS는 SHA-1과 같은 해시 함수를 사용하여 브라우저 툴바에 표시되는 서명 된 인증서를 만들 수 있습니다.
우리는 SHA 함수의 수학과 컴퓨터 과학에 깊이 관여하지는 않겠지 만 여기에 기본적인 아이디어가 있습니다. "해시"는 모든 데이터의 입력을 기반으로하는 고유 한 코드입니다. SHA-1과 같은 해시 함수에 입력되는 문자의 작고 임의의 문자열은 길고 설정된 문자 수를 반환하므로 문자 문자열을 원래 데이터로 되돌릴 수 없습니다. 이것은 암호 저장이 일반적으로 작동하는 방법입니다. 암호를 만들면 암호 입력이 해시되어 서버에 저장됩니다. 돌아올 때 암호를 입력하면 다시 해시됩니다. 원래 해시와 일치하면 입력이 동일하다고 가정 할 수 있으며 데이터에 대한 액세스 권한이 부여됩니다..
해시 함수는 주로 파일이나 암호와 같은 입력이 변경되었는지 쉽게 알 수 있기 때문에 유용합니다. 입력 데이터가 암호처럼 암호 인 경우 해시는 원래 데이터 ( "키"라고도 함)를 되돌리고 복구하는 것이 거의 불가능합니다. 이는 암호와 비밀 키를 사용하여 나중에 암호 해독 할 목적으로 데이터를 스크램블하는 "암호화"와는 조금 다릅니다. 해시는 단순히 데이터 무결성을 보장하기 위해 모든 것이 동일하다는 것을 확인하기위한 것입니다. Git, 오픈 소스 코드 용 버전 제어 및 배포 소프트웨어는 바로이 이유로 SHA-1 해시를 사용합니다..
이것은 많은 기술적 인 정보가 있지만 간단히 말해서 : 해시는 암호화와 동일한 것이 아닙니다. 파일이 변경되었는지 확인하는 데 사용됩니다..
이 기술은 어떻게 나를 영향을 미칩니 까??
비공개로 웹 사이트를 방문해야한다고 가정 해 보겠습니다. 은행, 이메일, Facebook 계정까지 모두 암호화를 사용하여 보내는 데이터를 비공개로 유지합니다. 전문 웹 사이트는 신뢰할 수있는 기관 (제 3 자)으로부터 인증서를 획득하여 암호화를 제공합니다.이 인증서는 암호화가 수준에 있고, 웹 사이트와 사용자간에 개인 정보를 제공하며 다른 당사자가 기밀 정보를받지 않도록합니다. 이 제 3 자와의 관계는 인증 기관, 또는 캘리포니아 주, 모든 사용자가 "자체 서명 된"인증서를 만들 수 있기 때문에 매우 중요합니다. Open SSL을 사용하는 Linux를 실행하는 컴퓨터에서도 직접 서명 할 수 있습니다. Symantec과 Digicert는 널리 알려진 두 가지 CA 회사입니다..
이론적 인 시나리오를 실행 해 봅시다. How-To Geek은 로그인 한 사용자의 세션을 암호화로 비공개로 유지하려고하므로 시만텍과 같은 CA에게 인증서 서명 요청, 또는 CSR. 그들은 공개 키 과 개인 키 인터넷을 통해 전송 된 데이터를 암호화하고 해독합니다. CSR 요청은 공개 키를 웹 사이트에 대한 정보와 함께 시만텍에 전송합니다. 시만텍은 모든 당사자가 데이터를 변경하지 않았는지 확인하기 위해 해당 키와 레코드를 비교하여 키를 확인합니다. 데이터의 작은 변화로 인해 해시가 크게 달라지기 때문입니다.
공개 키 및 디지털 인증서는 해시 함수로 서명됩니다. 이러한 함수의 출력은 쉽게 볼 수 있기 때문입니다. 시만텍의 검증 된 해시 (이 예에서는)의 공개 키와 인증서는 How-To Geek의 사용자에게 키가 변경되지 않았으며 악의적 인 사람으로부터 전송되지 않았 음을 보증합니다.
해시는 모니터링하기가 쉽고 (일부는 "어렵다"라고 말함) 역순으로 처리되기 때문에 올바른 해시 서명은 인증서와 연결을 신뢰할 수 있고 데이터가 암호화되어 전송되도록 동의 할 수 있음을 의미합니다 . 그러나 해시가 실제로는 독특하지 않았다.?
충돌 공격은 무엇이며 실제 세계에서는 가능합니까??
수학에서 "생일 문제"에 대해 들어봤을 수도 있지만, 그것이 무엇인지 알려지지 않았을 수도 있습니다. 기본 아이디어는 충분히 큰 그룹의 사람들을 모으는 경우 두 명 이상의 사람들이 같은 생일을 가질 가능성이 매우 높다는 것입니다. 당신이 기대하는 것보다 더 높습니다, 실제로 그것은 이상한 우연처럼 보입니다. 23 명으로 구성된 그룹에서 두 사람이 생일을 공유 할 확률은 50 %입니다..
SHA-1을 포함한 모든 해시의 고유 한 약점입니다. 이론적으로 SHA 함수는 입력되는 모든 데이터에 대해 고유 해시를 만들어야하지만 해시 수가 증가하면 서로 다른 데이터 쌍이 동일한 해시를 생성 할 가능성이 높아집니다. 따라서 신뢰할 수있는 인증서와 동일한 해시를 사용하여 신뢰할 수없는 인증서를 만들 수 있습니다. 신뢰할 수없는 인증서를 설치하게되면 신뢰할 수있는 것으로 가장하여 악의적 인 데이터를 배포 할 수 있습니다.
두 파일에서 일치하는 해시를 찾는 것을 a 충돌 공격. 적어도 하나의 대규모 충돌 공격이 이미 MD5 해시에 대해 발생한 것으로 알려져 있습니다. 그러나 2017 년 2 월 27 일 Google은 SHA-1을 위해 처음으로 만들어진 충돌 인 SHAttered를 발표했습니다. Google은 다른 콘텐츠가 있음에도 불구하고 다른 PDF 파일과 동일한 SHA-1 해시를 가진 PDF 파일을 만들 수있었습니다..
SHAttered는 PDF 파일에서 수행되었습니다. PDF는 상대적으로 느슨한 파일 형식입니다. 독자가 열거 나 눈에 띄는 차이를 유발하는 것을 방지하지 않으면서도 작은 비트 수준으로 많은 변경 작업을 수행 할 수 있습니다. PDF는 악성 코드를 전달하는 데 종종 사용됩니다. SHAttered는 ISO와 같은 다른 유형의 파일에서 작동 할 수 있지만 인증서는 엄격하게 지정되므로 이러한 공격은 발생하지 않을 것입니다..
이 공격은 얼마나 쉽게 수행 할 수 있습니까? SHAttered는 2012 년 Marc Stevens에 의해 발견 된 방법에 기반을 두었습니다. SHA-1 작업은 2 ^ 60.3 (9.223 quintillion) 이상의 엄청난 수입니다. 그러나이 방법은 무차별 대가로 동일한 결과를 얻는 데 필요한 것보다 10 만 배나 적은 작업입니다. Google은 병렬로 작동하는 110 개의 고급 그래픽 카드를 사용하는 경우 충돌 발생에 약 1 년이 걸릴 것이라고했습니다. Amazon AWS에서이 계산 시간을 임대하면 약 110,000 달러가 소요됩니다. 컴퓨터 부품의 가격이 하락하고 더 적은 전력으로 더 많은 전력을 사용할 수 있으므로 SHAttered와 같은 공격은 쉽게 풀 수 있습니다.
110,000 달러는 많은 것처럼 보일 수 있지만 일부 조직에서는 실생활 사이버 빌리 언이 디지털 문서 서명을 위조하고 Git 및 SVN과 같은 백업 및 버전 제어 시스템을 방해하거나 악의적 인 Linux ISO를 합법적으로 보이게 만들 수 있음을 의미합니다.
다행히도 그러한 공격을 막는 완화 요인이 있습니다. SHA-1은 디지털 서명에 거의 사용되지 않습니다. 인증 기관은 더 이상 SHA-1로 서명 된 인증서를 제공하지 않으며 Chrome과 Firefox는 인증서를 지원하지 않습니다. Linux 배포판은 일반적으로 1 년에 1 회 이상 배포되므로 공격자가 악의적 인 버전을 만든 다음 동일한 SHA-1 해시를 갖도록 패딩 된 버전을 생성하는 것은 비현실적입니다..
반면 SHAttered를 기반으로 한 일부 공격은 이미 현실 세계에서 일어나고 있습니다. SVN 버전 제어 시스템은 SHA-1을 사용하여 파일을 차별화합니다. 동일한 SHA-1 해시를 가진 두 PDF를 SVN 저장소에 업로드하면 손상 될 수 있습니다..
SHA-1 공격으로부터 어떻게 자신을 보호 할 수 있습니까??
일반적인 사용자가 할 일이별로 없습니다. 체크섬을 사용하여 파일을 비교하는 경우 SHA-1 또는 MD5 대신 SHA-2 (SHA-256) 또는 SHA-3을 사용해야합니다. 마찬가지로 개발자 인 경우 SHA-2, SHA-3 또는 bcrypt와 같은 최신 해싱 알고리즘을 사용해야합니다. SHAttered가 두 개의 별개 파일에 동일한 해시를 제공하는 데 사용되었다고 걱정된다면 Google은 SHAttered 사이트에서 사용자를 확인할 수있는 도구를 출시했습니다.
이미지 크레딧 : 레고 파이어 폭스, 많은 해시, 제발 웹을 다치게하지 마라. 저자 불명, 구글.