, 중국 상하이 소재의 훙차오 공항의 IATA 코드에 대한 내용은 상하이 훙차오 국제공항 문서
참고하십시오. '''이론 컴퓨터 과학 {{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"''' | |||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <colbgcolor=#aa3366> 이론 | ||||
기본 대상 | 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론 및 통계학 · 선형대수학 | ||||
다루는 대상과 주요 토픽 | |||||
계산 가능성 이론 | 재귀함수 · 튜링 기계 · 람다 대수 · 처치-튜링 명제 · 바쁜 비버 | ||||
오토마타 이론 | FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어 | ||||
계산 복잡도 이론 | 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법) | ||||
정보이론 | 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학 | ||||
프로그래밍 언어이론 | 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론 | ||||
주요 알고리즘 및 자료구조 | |||||
기초 | 정렬 알고리즘 · 순서도 · 탐색 알고리즘 | ||||
추상적 자료형 및 구현 | 배열^벡터^ · 리스트^연결 리스트^ · 셋(set)^레드-블랙 트리, B-트리^ · 우선순위 큐^힙, 피보나치 힙^ | ||||
수학적 최적화 | 조합 최적화 | 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습 | |||
볼록 최적화 | 내부점 방법 · 경사하강법 | ||||
선형계획법 | 심플렉스법 | ||||
계산 수론 및 암호학 | 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호 | ||||
대칭키 암호화 방식 | 블록 암호 알고리즘(AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4) | ||||
공개키 암호화 방식 | 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9) | ||||
계산기하학 | 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN | ||||
그래프 이론 | 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론 | ||||
정리 | |||||
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결 | |||||
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 | }}}}}}}}} |
||<tablealign=center><tablewidth=100%><tablebordercolor=#0066DC><tablebgcolor=#fff,#191919> ||
3f57b4255732fbd8df203466ef5cd5f4c980e545
- https://namu.wiki/w/SHA의 SHA-1값
- https://namu.wiki/w/SHA의 SHA-1값
a0d20951336a0e6a39da2682efff30ab31012e88ea606aea6fdae9b502012fe5
- https://namu.wiki/w/SHA의 SHA-2중 SHA-256값
- https://namu.wiki/w/SHA의 SHA-2중 SHA-256값
1e3d31e819d5c890c6d9e48498ba2945f759be742699ad8e70f4b536059e6f38b472f1eea9c0d73aae792371fe38481401b7bef4e18b4a9a1d86056138dcfda2
- https://namu.wiki/w/SHA의 SHA-3값 [1]
- https://namu.wiki/w/SHA의 SHA-3값 [1]
1. 개요
1993년부터 미국 NSA가 제작하고 미국 국립표준기술연구소(NIST)에서 표준으로 채택한 암호학적 해시 함수이다.참고로, SHA는 원본 값이 단, 한 글자, 단 1비트만 바뀌어도 값이 천차만별로 바뀔 수 있다. 보통 이를 가리켜 눈사태 효과라 부른다. [2]
2. 역사
2.1. SHA-0와 SHA-1
1993년 SHA의 표준으로 정의되어 발표되었으며 160 비트의 해시값을 사용한다. 그러나 2년 만에 바로 취약점이 발견되어 이를 개선한 SHA-1이 새로 발표되었고, 이는 널리 사용되었다. SHA-1 역시 160 비트 해시값을 사용한다. 처음 발표된 SHA는 편의상 SHA-0로 표기하여 구분한다.그러나 2005년도에 한 중국의 대학 연구팀에 의해 해독의 가능성이 제시되었으며, 결국 2008년에 해시 충돌이 발생했으며[3] 2015년에는 주요 브라우저에서도 지원 중단을 예고하는 등 퇴출 수속을 밟고 있다. 그리고 2017년 SHA-1 전체의 해시 충돌이 구글 프로젝트 제로 팀에 의해 밝혀졌다. 구글은 아예 충돌하는 키를 완전히 공개할 예정으로, 구글 정책상 90일 뒤인 5월 말쯤 어떤 방법을 적용했는지 공개가 되면 SHA-1은 그냥 끔살될 예정. 그 이전에 다른 알고리즘으로 안 갈아타면 그대로 망하게 만들겠다는 반협박 수준의 강력한 보안 경고이다. 관련 기사
결국 구글 크롬 브라우저는 2017년 1월에 출시한 56버전부터는 SHA-1 인증서를 사용하는 사이트에 접속시 안전하지 않은 사이트라며 경고 메시지를 띄우도록 했고, 2019년부터는 SHA-1 인증서를 사용하는 사이트는 접속하지 못하도록 차단했다. 파이어폭스 등 다른 브라우저도 2017년부터 SHA-1 인증서를 사용하는 사이트에 접속시 경고 메시지를 띄우는 등의 업데이트를 하며, 2015년 기준 90%이상의 사이트가 사용하던 SHA-1은 더 이상 찾아보기 힘들게 되었다. 여담으로 지원 종료된 운영체제에서 프로그램이 정상적으로 동작하지 않는 원인이 해당 해시 지원 문제 때문인 경우가 있다. 윈도우 기준으로 이러한 문제를 꼼수 없이 해결 가능한 운영체제의 마지노선은 연장 지원 기간 막바지에 관련 업데이트를 배포한 Windows 7.
2.2. SHA-2
SHA-1 역시 해시 충돌을 이용한 위험성이 발견되어 차세대 버전이 나왔는데, 개선된 버전이 SHA-2 로 2001년에 발표되었다. SHA-2 해시 함수는 8개의 32비트 상태를 업데이트하는 압축 함수를 기반으로 하고 해시 길이에 따라서 224, 256, 384, 512 비트를 선택해서 사용할 수 있으며, 당연히 해시 길이가 길 수록 더 안전하다. 편의상 해시 길이에 따라 SHA-224, SHA-256, SHA-384, SHA-512 등으로 부른다. 일반적으로 SHA-256을 사용한다.해시 길이가 길어졌기에 그만큼 안전하긴 하지만, 알고리즘의 기본 동작이 SHA-1과 큰 차이가 없기 때문에 완전히 안전하다(=공격 받을 가능성이 없다.)고 장담하긴 어렵다. 해시 함수 특성상 기본 동작(round)이 많아질수록 안정성이 높아져 현재까지 SHA-2에 대해 알려진 충돌 등은 없지만, 만약을 위해 SHA-1하고 기본적인 원리 자체가 아예 다른 SHA-3이 개발되었다.
2.3. SHA-3
2012년 10월에 더욱더 안정성이 높은 방식으로 설계된 SHA-3이 정식 발표되었다.SHA-2 도 위험성 문제가 제기되자, 충돌 가능성을 피하기 위해서 SHA-1과 2와 전혀 다른 알고리즘인 SHA-3의 개발이 진행되었다. 정확하게는 개발이라기보단, 여러 보안 전문가들과 컴덕후들이 만들어낸 해시 알고리즘 중 몇 개를 추려서 가장 견고한 것에 SHA-3 딱지를 붙이는 공모전에 가깝다.[4] 고려대학교에서도 아리랑이라는 이름으로 출품했지만 탈락했다. 3차 후보까지 남은 건 BLAKE, Grøstl, JH, Keccak, Skein의 5개 알고리즘이다.
2012년 10월 2일자로 Keccak이 SHA-3로 확정되었다. #
3. 활용한 소프트웨어
3.1. SHA-1
- 비트토렌트는 파일을 BASE32로 바꾼 SHA-1을 해시로 사용한다.
- 깃(Git)은 파일이나 커밋 등 모든 오브젝트를 SHA-1으로 해시한 식별자를 통해 관리한다. SHA-1을 깬 구글이 "깃(Git) 시스템도 불안하다"고 하였으나 깃을 만든 리누스 토발즈는 "깃은 데이터를 해시하기만 하는 게 아니라, 거기에 타입과 길이 필드를 측량한다"며 동의하지 않았다. #
3.2. SHA-2
- 대한민국 인터넷뱅킹은 SHA-256을 사용하고 있다.
- 비트코인은 작업 증명에 SHA-256을 사용한다.
- TrueCrypt는 키 유도에 SHA-512를 사용할 수 있다. 여러 옵션 중 하나이다.
- Windows 업데이트는 파일의 디지털 서명에 SHA-256을 사용한다. 2020년 7월까지는 SHA-1도 병용했으나, 이후 서버에 등록된 모든 파일에서 SHA-1 디지털 서명을 제거하였으며, SHA-2를 지원하지 않는 구형 Windows에 대한 업데이트 파일은 아예 서버에서 삭제해버렸다.[5]
3.3. SHA-3
- 이더리움 - 이더리움은 Keccak256을 사용한다. 다만, Keccak이 SHA-3로 제안될 때 일부 변경된 부분이 있기 때문에 엄밀하게 말하면 이더리움이 SHA-3 표준을 따른다는 표현은 약간 오류가 있다.
4. 지원하는 소프트웨어
- OpenSSL - SHA1, SHA2, SHA3 지원
- Libgcrypt
[1] 이것은 엄밀히 말해서
Keccak[c=2d]
의 512-bit 해시값이다. Keccak 알고리즘은 이전의 SHA 알고리즘과는 달리 출력 길이가 제한되어 있지 않고, 알고리즘 자체에도 변경 가능한 파라미터가 있기에 어떤 파라미터를 쓰느냐에 따라 얼마든지 결과값이 달라질 수 있다.[2] 눈사태 효과가 없거나 적다면 보안에 치명적이기에 이런 알고리즘은 사실상 퇴출되었다. 그래서, 거의 모든 암호화 해시 알고리즘에서 기본적으로 이 기능이 포함되어 있으며, 이는 SHA 만의 특성인 것은 아니다.[3] 물론 이건 알려진 것이다. 모든 암호화 알고리즘이 다 그렇지만 암호학의 지하에선 더 빨리 뚫렸을지도 모른다.[4] 물론 이것만 그런건 아니고, 전세계적으로 제일 대표적인 양방향 암호화 표준인 AES도 NIST의 공모전에서 Rijndael(라인달) 알고리즘이 선정된 것이다. 이런 식으로 암호화 표준은 제시된 여러 알고리즘 중 제일 강력한 하나를 골라서 제정되는 경우가 많다.[5] 정확히는 Windows 2000, Windows XP, Windows Server 2003, Windows Server 2003 R2, Windows Vista이다. Windows 9x 계열과 Windows NT 4.0에 대한 업데이트 서버는 2012년에 이미 중단하였으며, Windows Vista를 기반으로 한 Windows Server 2008은 별도의 SHA-2 지원 패치를 배포하였다.