본문 바로가기

Crypt

SHA-2_(1)

[SHA2 Algorithm]


SHA는 Secure Hash Algorithm의 약어로 미국 국가 안전 보장국(NSA)에서 개발했다. 1993년에 최초로 SHA-0 함수가 개발되어 SHA-1, SHA-2, SHA-3로 변형되었다. SHA-224, SHA-256, SHA-384, SHA-512를 통칭한 것이 SHA-2이다. SHA-1이 가장 많이 쓰이며, TLS 및 SSL, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용된다. SHA-0과 SHA-1은 최대 160bit의 고정길이로 요약하고, SHA-2는 사용 함수의 뒤 숫자만큼 가능하다. SHA는 MD5보다 암호화 속도가 느리지만, 강화된 보안을 제공하므로 많이 사용한다. 사용자가 가장 많이 사용하는 SHA-1은 암호화 통신(HTTPS)이 적용된 웹사이트에서 사용되는 기능으로 해당 사이트와 사용자가 통신할 때 필요한 디지털 인증서 등을 위/변조가 불가능하도록 특정 길이의 문자, 숫자 등으로 이뤄진 해시 값으로 만드는 역할을 한다. 문제는 컴퓨터의 연산처리 능력이 급격하게 개선되면서 서로 다른 내용이 같은 값을 갖는 경우가 발생하고 이를 '충돌'이라 부른다. 


이러한 충돌을 이용하여 사이버 범죄자들이 '충돌공격'이라는 수법을 통해 인터넷 뱅킹 거래내역을 조작하거나, 웹사이트를 통해 주고받는 내용을 가로채는 등의 일이 가능해졌다. 따라서, SHA-1의 대안으로 더 복잡한 암호화 알고리즘을 사용하는 SHA-2(SHA-256)을 사용하다가 SHA-2도 SHA-1과 유사한 방식으로 암호화하기 때문에 SHA-3가 생성되었다.


1. Message Digest Algorithm


알고리즘 ID 파라미터 필드는 OPTIONAL이다. 구현은 파라미터가 없거나 NULL 인자를 SHA2 알고리즘 ID에 받아들여야 한다. 구현은 인자가 없는 SHA2 알고리즘 ID를 생성해야 한다.


* 이러한 객체 식별자와 관련된 알고리즘 ID 파라미터 필드에는 두 가지 가능한 암호화가 있다. 두 가지 대안은 알고리즘 ID에 대한 1988 구문이 1997 구문으로 변환되었을 때 알고리즘 ID 파라미터와 관련된 OPTIONAL의 손실로 인해 발생한다. 후에, OPTIONAL은 결함 보고서에 의해 복구되었지만 많은 사람들은 알고리즘 인자가 필수적이라고 생각하여 일부 구현은 파라미터를 NULL 요소로 암호화하지만 다른 일부는 완전히 생략한다. 올바른 암호화는 파라미터 필드를 생략하는 것이다. 그러나, 이러한 알고리즘의 일부 용도가 정의되었을 때 파라미터가 없는 대신 NULL 인자를 사용한다.


SHA-256과 SHA-512는 각각 32비트, 64비트 워드를 사용하는 해시함수이며 몇몇 상수들이 다르지만 그 구조는 라운드의 수를 빼가 같다. SHA-224와 SHA-384는 SHA-256과 SHA-512의 결과를 최종 해시 값 길이에 맞춰 자른 것이다.


1.1 SHA-224


  • SHA-224의 알고리즘 ID
id-sha224 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 4 }


SMIMECapability에 대한 DER 인코딩 -> id-sha224: 30 0b 06 09 60 86 48 01 65 03                                                                     04 02 04


1.2 SHA-256


  • SHA-256의 알고리즘 ID
id-sha256 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 1 }


SMIMECapability에 대한 DER 인코딩 -> id-sha256: 30 0b 06 09 60 86 48 01 65 03                                                                    04 02 01


1.3 SHA-384


  • SHA-384의 알고리즘 ID
id-sha384 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 2 }


SMIMECapability에 대한 DER 인코딩 -> id-sha384: 30 0b 06 09 60 86 48 01 65 03                                                                     04 02 02


1.4 SHA-512


  • SHA-512의 알고리즘 ID
id-sha512 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 3 }


SMIMECapability에 대한 DER 인코딩 -> id-sha512: 30 0b 06 09 60 86 48 01 65 03                                                                     04 02 03


'Crypt' 카테고리의 다른 글

SHA-2_(2)  (0) 2017.11.03
MD5  (0) 2017.09.26
Hash Function  (0) 2017.09.26
UU Encoding  (0) 2017.09.15
Caesar cipher  (0) 2017.09.13