Share
Sign In
📄

암호화 및 Hashing 이론/방법

자바스크립트에서 hashing 및 암호화 방법을 지원하는 라이브러리를 알아볼 것이다.
가장 유명한 라이브러리는 Crypto.js 이다. 이는 단방향 암호화와 양방향 암호화 모두를 지원한다.
이 라이브러리를 사용하기에 앞서 암호화에 대해 알아보자.
목차
여러가지의 암호화, Hashing 방식 (이론)
DES
DES(Data Encryption Standard)는 블록 암호의 일종으로 미국에서 국자 표준으로 정한 암호이다. 56비트의 키를 사용하며, 현재는 취약한 것으로 알려져 있다. 56비트의 길이는 현재 컴퓨터 환경에 비해 너무 짧다는 이유에서이다. DES를 세번 반복하는 Triple-DES는 기존의 DES에 비해 안전한 것으로 알려져 있으며 또한 DES 대신 AES가 새 표준으로 정해저 현재 사용되고 있다.
AES
AES(Advanced Encryption Standard, 고급 암호화 표준)은 2001년 미국의 NIST에 의해 정해진 암호화 방식이다. 세계적으로 가장 널리 사용되는 암호화 방식이며, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘이다.
MD5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. 주로 프로그램이나 파일이 원본 그대로 인지를 확인하는 무결성 검사 등에서 사용된다. MD5는 현재는 보안관련 용도로 ㅆ는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수 있다. 암호화 학자들은 해시 용도로 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다.
SHA-
SHA(Secure Hash Algorithm) 함수들은 서로 관련된 암호화적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국이 처음으로 설계했고, 나중에 설계된 함수들과 구분하기 위해, 기존 것을 SHA-0로 2년 뒤에 변형된 것인 SHA-1이 나왔다. 그 후에 4종류의 변형 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다 이들을 통칭해서 SHA-2라고 하기도 한다.SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.
RIPEMD-160
RIPEMD-160은 임의의 길이의 입력 값을 160비트로 압축하는 암호화 해시함수이다. RIPEMD-128의 강화버전이며 주로 비트코인 표준에서 사용된다.
HMAC
HMAC(Keyed-hash message authentication code, hash-based message authentication code)는 암호화 해시 함수와 기밀 암호화 키를 수반하는 특정한 유형의 메세지 인증 코드(MAC) 여느 MAC 처럼 메세지의 데이터 무결성과 진본 확인을 동시에 수행하기 위해 사용할 수 있다.
SHA-2, SHA-3 등의 암호화 해시 함수는 HMAC 연산을 위해 사용할 수 있다. 그 결과가 되는 MAC 알고리즘은 HMAC-X이며 여기서 X는 사용이 되는 해시 함수(예: HMAC-SHA256 또는 HMAC-SHA3-256)를 의미한다. HMAC의 암호화 등급은 그 기반이 되는 해시 함수의 암호화 등급, 해시 출력의 크기, 키의 크기와 품질에 따라 달라진다.
PBKDF1 and PBKDF2
PBKDF1 and PBKDF2(Password-based Key Derivation Function 1 and 2)는 키를 생성하기 위한 함수이며, 무차별적인 대입 공격의 취약성을 줄이는 데 사용되는 슬라이딩 계산 비용이 있는 함수이다. 미국표준기술연구소)에 의해서 승인된 알고리즘이고, 미국 정부 시스템에서도 사용자 패스워드의 암호화된 다이제스트를 생성할 때 사용한다. PBKDF2는 PBKDF1과 비교해 키가 160 비트이상으로 길며 RFC 8018에서는 PBKDF2를 PBKDF1보다 권장한다.
입력 값
PRF: 난수(예: HMAC)
Password: 패스워드
Salt: 암호학 솔트 (32bit 이상 추천..)
c: 원하는 iteration 반복 수 (1000번 이상 추천 )
DLen: 원하는 다이제스트 길이
Rabbit
Rabbit은 소프트웨어 구현에서 고성능을 위해 설계된 스트림 암호 알고리즘이다. 키 설정과 암호화가 모두 매우 빠르기 때문에 알고리즘은 특히 대량의 데이터 또는 많은 수의 데이터 패키지를 암호화해야 하는 모든 애플리케이션에 적합하다. 예로는 서버 측 암호화, 멀티미디어 암호화, 하드 디스크 암호화 및 제한된 리소스 장치의 암호화가 포함되지만 이에 국한되지 않는다.
RC4, RC4Drop
RC4(Ron's Code 4)는 널리 사용되는 스트림 암호이다. SSL 및 WEP와 같은 널리 사용되는 프로토콜에서 사용되며, 단순성과 속도면에서 주목할 만하지만 알고리즘의 취약성이 발견되어 보안 문제가 있다.
React, node 등 JavaScript code에 적용하기
설치
DES, Triple DES
DES
Triple DES
AES
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
MD5
SHA-
SHA-1
SHA-2
SHA-3
SHA-3 can be configured to output hash lengths of one of 224, 256, 384, or 512 bits. The default is 512 bits.
RIPEMD-160
HMAC
PBKDF2
Rabbit
RC4, RC4 Drop
By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words.
CryptoJS 인코딩
예제
암호화를 여러번 반복하는 방법으로 암호화를 강화시켰다. 단점은 암호화를 반복할 수록 결과 키의 길이가 길어지는 단점이 있다.
React 홈으로 돌아가기
React.js
메인으로 돌아가기
자바스크립트에서 hashing 및 암호화 방법을 지원하는 라이브러리를 알아볼 것이다.
가장 유명한 라이브러리는 Crypto.js 이다. 이는 단방향 암호화와 양방향 암호화 모두를 지원한다.
이 라이브러리를 사용하기에 앞서 암호화에 대해 알아보자.
목차
여러가지의 암호화, Hashing 방식 (이론)
DES
DES(Data Encryption Standard)는 블록 암호의 일종으로 미국에서 국자 표준으로 정한 암호이다. 56비트의 키를 사용하며, 현재는 취약한 것으로 알려져 있다. 56비트의 길이는 현재 컴퓨터 환경에 비해 너무 짧다는 이유에서이다. DES를 세번 반복하는 Triple-DES는 기존의 DES에 비해 안전한 것으로 알려져 있으며 또한 DES 대신 AES가 새 표준으로 정해저 현재 사용되고 있다.
AES
AES(Advanced Encryption Standard, 고급 암호화 표준)은 2001년 미국의 NIST에 의해 정해진 암호화 방식이다. 세계적으로 가장 널리 사용되는 암호화 방식이며, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘이다.
MD5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. 주로 프로그램이나 파일이 원본 그대로 인지를 확인하는 무결성 검사 등에서 사용된다. MD5는 현재는 보안관련 용도로 ㅆ는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수 있다. 암호화 학자들은 해시 용도로 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다.
SHA-
SHA(Secure Hash Algorithm) 함수들은 서로 관련된 암호화적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국이 처음으로 설계했고, 나중에 설계된 함수들과 구분하기 위해, 기존 것을 SHA-0로 2년 뒤에 변형된 것인 SHA-1이 나왔다. 그 후에 4종류의 변형 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다 이들을 통칭해서 SHA-2라고 하기도 한다.SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.
RIPEMD-160
RIPEMD-160은 임의의 길이의 입력 값을 160비트로 압축하는 암호화 해시함수이다. RIPEMD-128의 강화버전이며 주로 비트코인 표준에서 사용된다.
HMAC
HMAC(Keyed-hash message authentication code, hash-based message authentication code)는 암호화 해시 함수와 기밀 암호화 키를 수반하는 특정한 유형의 메세지 인증 코드(MAC) 여느 MAC 처럼 메세지의 데이터 무결성과 진본 확인을 동시에 수행하기 위해 사용할 수 있다.
SHA-2, SHA-3 등의 암호화 해시 함수는 HMAC 연산을 위해 사용할 수 있다. 그 결과가 되는 MAC 알고리즘은 HMAC-X이며 여기서 X는 사용이 되는 해시 함수(예: HMAC-SHA256 또는 HMAC-SHA3-256)를 의미한다. HMAC의 암호화 등급은 그 기반이 되는 해시 함수의 암호화 등급, 해시 출력의 크기, 키의 크기와 품질에 따라 달라진다.
PBKDF1 and PBKDF2
PBKDF1 and PBKDF2(Password-based Key Derivation Function 1 and 2)는 키를 생성하기 위한 함수이며, 무차별적인 대입 공격의 취약성을 줄이는 데 사용되는 슬라이딩 계산 비용이 있는 함수이다. 미국표준기술연구소)에 의해서 승인된 알고리즘이고, 미국 정부 시스템에서도 사용자 패스워드의 암호화된 다이제스트를 생성할 때 사용한다. PBKDF2는 PBKDF1과 비교해 키가 160 비트이상으로 길며 RFC 8018에서는 PBKDF2를 PBKDF1보다 권장한다.
입력 값
PRF: 난수(예: HMAC)
Password: 패스워드
Salt: 암호학 솔트 (32bit 이상 추천..)
c: 원하는 iteration 반복 수 (1000번 이상 추천 )
DLen: 원하는 다이제스트 길이
Rabbit
Rabbit은 소프트웨어 구현에서 고성능을 위해 설계된 스트림 암호 알고리즘이다. 키 설정과 암호화가 모두 매우 빠르기 때문에 알고리즘은 특히 대량의 데이터 또는 많은 수의 데이터 패키지를 암호화해야 하는 모든 애플리케이션에 적합하다. 예로는 서버 측 암호화, 멀티미디어 암호화, 하드 디스크 암호화 및 제한된 리소스 장치의 암호화가 포함되지만 이에 국한되지 않는다.
RC4, RC4Drop
RC4(Ron's Code 4)는 널리 사용되는 스트림 암호이다. SSL 및 WEP와 같은 널리 사용되는 프로토콜에서 사용되며, 단순성과 속도면에서 주목할 만하지만 알고리즘의 취약성이 발견되어 보안 문제가 있다.
React, node 등 JavaScript code에 적용하기
설치
DES, Triple DES
DES
Triple DES
AES
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
MD5
SHA-
SHA-1
SHA-2
SHA-3
SHA-3 can be configured to output hash lengths of one of 224, 256, 384, or 512 bits. The default is 512 bits.
RIPEMD-160
HMAC
PBKDF2
Rabbit
RC4, RC4 Drop
By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words.
CryptoJS 인코딩
예제
암호화를 여러번 반복하는 방법으로 암호화를 강화시켰다. 단점은 암호화를 반복할 수록 결과 키의 길이가 길어지는 단점이 있다.
React 홈으로 돌아가기
React.js
메인으로 돌아가기
자바스크립트에서 hashing 및 암호화 방법을 지원하는 라이브러리를 알아볼 것이다.
가장 유명한 라이브러리는 Crypto.js 이다. 이는 단방향 암호화와 양방향 암호화 모두를 지원한다.
이 라이브러리를 사용하기에 앞서 암호화에 대해 알아보자.
목차
여러가지의 암호화, Hashing 방식 (이론)
DES
DES(Data Encryption Standard)는 블록 암호의 일종으로 미국에서 국자 표준으로 정한 암호이다. 56비트의 키를 사용하며, 현재는 취약한 것으로 알려져 있다. 56비트의 길이는 현재 컴퓨터 환경에 비해 너무 짧다는 이유에서이다. DES를 세번 반복하는 Triple-DES는 기존의 DES에 비해 안전한 것으로 알려져 있으며 또한 DES 대신 AES가 새 표준으로 정해저 현재 사용되고 있다.
AES
AES(Advanced Encryption Standard, 고급 암호화 표준)은 2001년 미국의 NIST에 의해 정해진 암호화 방식이다. 세계적으로 가장 널리 사용되는 암호화 방식이며, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘이다.
MD5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. 주로 프로그램이나 파일이 원본 그대로 인지를 확인하는 무결성 검사 등에서 사용된다. MD5는 현재는 보안관련 용도로 ㅆ는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수 있다. 암호화 학자들은 해시 용도로 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다.
SHA-
SHA(Secure Hash Algorithm) 함수들은 서로 관련된 암호화적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국이 처음으로 설계했고, 나중에 설계된 함수들과 구분하기 위해, 기존 것을 SHA-0로 2년 뒤에 변형된 것인 SHA-1이 나왔다. 그 후에 4종류의 변형 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다 이들을 통칭해서 SHA-2라고 하기도 한다.SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.
RIPEMD-160
RIPEMD-160은 임의의 길이의 입력 값을 160비트로 압축하는 암호화 해시함수이다. RIPEMD-128의 강화버전이며 주로 비트코인 표준에서 사용된다.
HMAC
HMAC(Keyed-hash message authentication code, hash-based message authentication code)는 암호화 해시 함수와 기밀 암호화 키를 수반하는 특정한 유형의 메세지 인증 코드(MAC) 여느 MAC 처럼 메세지의 데이터 무결성과 진본 확인을 동시에 수행하기 위해 사용할 수 있다.
SHA-2, SHA-3 등의 암호화 해시 함수는 HMAC 연산을 위해 사용할 수 있다. 그 결과가 되는 MAC 알고리즘은 HMAC-X이며 여기서 X는 사용이 되는 해시 함수(예: HMAC-SHA256 또는 HMAC-SHA3-256)를 의미한다. HMAC의 암호화 등급은 그 기반이 되는 해시 함수의 암호화 등급, 해시 출력의 크기, 키의 크기와 품질에 따라 달라진다.
PBKDF1 and PBKDF2
PBKDF1 and PBKDF2(Password-based Key Derivation Function 1 and 2)는 키를 생성하기 위한 함수이며, 무차별적인 대입 공격의 취약성을 줄이는 데 사용되는 슬라이딩 계산 비용이 있는 함수이다. 미국표준기술연구소)에 의해서 승인된 알고리즘이고, 미국 정부 시스템에서도 사용자 패스워드의 암호화된 다이제스트를 생성할 때 사용한다. PBKDF2는 PBKDF1과 비교해 키가 160 비트이상으로 길며 RFC 8018에서는 PBKDF2를 PBKDF1보다 권장한다.
입력 값
PRF: 난수(예: HMAC)
Password: 패스워드
Salt: 암호학 솔트 (32bit 이상 추천..)
c: 원하는 iteration 반복 수 (1000번 이상 추천 )
DLen: 원하는 다이제스트 길이
Rabbit
Rabbit은 소프트웨어 구현에서 고성능을 위해 설계된 스트림 암호 알고리즘이다. 키 설정과 암호화가 모두 매우 빠르기 때문에 알고리즘은 특히 대량의 데이터 또는 많은 수의 데이터 패키지를 암호화해야 하는 모든 애플리케이션에 적합하다. 예로는 서버 측 암호화, 멀티미디어 암호화, 하드 디스크 암호화 및 제한된 리소스 장치의 암호화가 포함되지만 이에 국한되지 않는다.
RC4, RC4Drop
RC4(Ron's Code 4)는 널리 사용되는 스트림 암호이다. SSL 및 WEP와 같은 널리 사용되는 프로토콜에서 사용되며, 단순성과 속도면에서 주목할 만하지만 알고리즘의 취약성이 발견되어 보안 문제가 있다.
React, node 등 JavaScript code에 적용하기
설치
DES, Triple DES
DES
Triple DES
AES
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
MD5
SHA-
SHA-1
SHA-2
SHA-3
SHA-3 can be configured to output hash lengths of one of 224, 256, 384, or 512 bits. The default is 512 bits.
RIPEMD-160
HMAC
PBKDF2
Rabbit
RC4, RC4 Drop
By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words.
CryptoJS 인코딩
예제
암호화를 여러번 반복하는 방법으로 암호화를 강화시켰다. 단점은 암호화를 반복할 수록 결과 키의 길이가 길어지는 단점이 있다.
React 홈으로 돌아가기
React.js
메인으로 돌아가기
자바스크립트에서 hashing 및 암호화 방법을 지원하는 라이브러리를 알아볼 것이다.
가장 유명한 라이브러리는 Crypto.js 이다. 이는 단방향 암호화와 양방향 암호화 모두를 지원한다.
이 라이브러리를 사용하기에 앞서 암호화에 대해 알아보자.
목차
여러가지의 암호화, Hashing 방식 (이론)