국비지원 공부 정리/네트워크 공통

데이터 암호화란?

worldstroy 2025. 3. 29. 12:51

암호화 종류 - 단방향

● 데이터 무결성을 검증하는 데 주로 사용되며, 패스워드 저장 등에서도 활용
● 단방향이므로 원본 데이터를 복원하는 건 불가능
● 동일한 데이터에 대해서는 항상 동일한 해시 값이 생성됨
- 서로 다른 데이터에 대해서도 같은 해시 값이 나올 수 있음
● 미세한 데이터 변화에서도 해시 값은 완전히 다르다.
● 주로 해시 함수(MD5, SHA-1, SHA-256 등)을 사용하여 구현

 

해시(Hash)

● 해시(Hash) : 해시 함수에 의해 얻어지는 값
● 해시 함수(Hash Function) = 해시 알고리즘
● 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수
● 키(key) : 매핑 전 원래 데이터 값
● 해시 값(hash value) : 매핑 후 데이터 값
● 해싱(hashing) : 매핑하는 과정

 

해시함수(해시알고리즘)

SHA-256 (Secure Hash Algorithm 256-bit)
256비트 해시 값, 충돌 저항성 및 보안성 높음
많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용
SHA-512 (Secure Hash Algorithm 512-bit)
512비트 해시 값, 충돌 저항성 및 보안성 높음
더 큰 해시 값을 생성하기 때문에 좀 더 안전한 알고리즘
MD5 (Message Digest Algorithm 5) - 현재 사용하지 않음
128비트 해시 값, 충돌 저항성 약함
SHA-1 (Secure Hash Algorithm 1) - 현재 사용하지 않음
160비트 해시 값, 충돌 저항성 약함

 


Node JS에서의 암호화

1. 암호화 알고리즘 패키지를 설치한다.
npm install crypto
2. 암호화 알고리즘을 불러온다.
const crypto = require('crypto');
3. 내부 명령어로 해시 코드를 설정하고 암호화한 정보를 DB에 저장한다.

 

 

Crypto 패키지의 함수 종류

이름 의미
createHash(algorithm) 지정한 해시 알고리즘을 사용하여 해시 객체를 생성
pbkdf2Sync(password, salt, iterations, keylen, digest) 비밀번호 기반 키 도출 함수를 동기적으로 실행??
createCipheriv(algorithm, key, iv) 대칭키 암호화와 복호화를 위한 객체를 생성 
createDecipheriv (algorithm, key, iv)
update  암호화할 문자열을 전달함
digest 해시를 만들때 사용하는 인코딩 방식을 결정함
base64 : 64개의 가능한 문자로 데이터를 인코딩하는 방식
64개의 문자 중 62개는 영문 대소문자와 10진수의숫자로, 나머지 2개의 문자는 인코딩과 디코딩 과정에서 추가적인 문자로 사용함
hex : 16진수 인코딩
16진수? 각 숫자는 0-9까지는 숫자로, 10~15까지는 a부터 f까지의 문자로 구성됨

 

해시 함수 한계! 레인보우 테이블

 해시 함수를 사용해 만들어낼 수 있는 값들을 대량으로 저장해놓은 표인데, 주로 해시 함수를 사용하여 암호화된 비밀번호를 역추적하기 위해 사용됨
1) Salt : 입력한 값에 salt라는 특정 값을 붙여 변형시키는 것
2) 해시 함수 반복 : 여러번 해시 함수를 돌려 본래의 값을 예측불가능하게 만드는 것

 

pbkdf2Sync(password, salt, iterations, keylen, digest)의 사용법

 

주로 사용자 비밀번호를 저장하는데 사용됨

 


Crypto 방식의 검증

 

 

Crypto 는 단방향 알고리즘이기 때문에 복호화가 불가능, 입력한 값과 동일한 알고리즘을 이용해 다시 암호화를 해 비교

 


암호화 종류(양방향)

● 데이터의 기밀성을 유지하거나 안전한 통신을 위해 사용
● 공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리 속도를 향상
● HTTPS와 같은 프로토콜로 클라이언트 - 서버 통신을 보호하여 안전한 웹 통신을 제공

 

Bcrypt 암호화 

● 비밀번호를 암호화하는 알고리즘의 하나로 Blowfish 암호를 기반으로 설계된 암호화 함수이자 패키지
● 현재까지도 사용 중인 가장 강력한 매커니즘임과 동시에 해싱이 느리고 비용이 많이 드는 단점이 존재함
● 강력한 보안이 필요할 때 적합함.

 

Bcrypt 암호화의 사용방법

1. Bcrypt와 관련된 패키지를 설치한다.
npm install bcrypt
2.require를 사용하여, node js 서버에서 bcrypt를 불러온다.
const bcrypt = require('bcrypt');
3. 명령어를 이용해서 암호화 설정을 한다.

 

'국비지원 공부 정리 > 네트워크 공통' 카테고리의 다른 글

Socket.io의 기본적 사용법  (0) 2025.03.29
TCP/IP 와 WebSoket  (0) 2025.03.29
서버구축  (0) 2025.03.28
환경변수?  (0) 2025.03.28
Cookie, Session  (0) 2025.03.27