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