-
[포스코x코딩온] 암호화[포스코x코딩온] 웹개발자 풀스택 부트캠프8기 2023. 8. 19. 00:47728x90
비밀번호 암호화
암호화
- 암호문: 비밀을 유지하기 위해 당사자만 알 수 있도록 꾸민 약속 기호
- 평문: 누구나 알 수 있게 쓴 일반적인 글
단방향 암호화
- 데이터 무결성을 검증하는 데 주로 사용되며, 패스워드 저장 등에서도 활용
- 단방향이므로 원본 데이터를 복원할 수 없다.
- 동일한 데이터에 대해서는 항상 동일한 해시 값이 생성됨
- 서로 다른 데이터에 대해서도 같은 해시 값이 나올 수 있다.
- 미세한 데이터 변화에도 해시 값은 완전히 다르다.
- 주로 해시 함수(MD5, SHA-1, SHA-256 등)를 사용하여 구현한다.
양방향 암호화
- 데이터의 기밀성을 유지하거나 안전한 통신을 위해 사용
- 공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리 속도를 향상시킨다.
- HTTPS와 같은 프로토콜로 클라이언트-서버 통신을 보호하여 안전한 웹 통신을 제공한다.
해시(Hash)란,
- 해시 함수에 의해 얻어지는 값
- 해시의 특징
- 정보를 숨기기 위한 암호와 달리 해시는 정보의 위조/변조를 확인하기 위한 것으로, 보안에서 해시를 사용하는 목적은 무결성 확보에 있다.
- 평문의 길이가 달라도 해시 결과 값의 길이는 같다.
- 평문의 내용이 조금만 달라도 해시 값이 완전히 달라진다.
- 해시 함수(Hash Function)
- 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수
- 키(key): 매핑 전 원래 데이터 값
- 해시 값(hash value): 매핑 후 데이터 값
- 해싱(hashing): 매핑하는 과정
해시의 종류
- MD5(Message Digest Algorithm 5): 로널드 리베스트가 공개 키 기반 구조를 만들기 위해 RSA와 함께 개발한 것으로 32비트 컴퓨터에 최적화되었다. 충돌 저항성이 약하다.
- SHA: 160비트의 값을 생성하는 해시 함수로, MD4가 발전한 형태다.
알고리즘 메시지 문자 크기 블록 크기 해시 결과 값 길이 해시 강도 SHA-1 <2의 64승 512비트 160비트 0.625 SHA-256 <2의 64승 512비트 256비트 1 SHA-384 <2의 128승 1024비트 384비트 1.5 SHA-512 <2의 128승 1024비트 512비트 2 - SHA-256(Secure Hash Algorithm 256-bit)
- 충돌 저항성 및 보안성 높음
- 많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용
- SHA-512(Secure Hash Algorithm 512-bit)
- 충돌 저항성 및 보안성 높음
- 더 큰 해시 값을 생성하기 때문에 좀 더 안전한 알고리즘
대칭키 암호화 알고리즘
암호화 키와 복호화 키가 일치하는 방식
- DES : 1977년 1월 NST가 암호화 표준으로 지정, 64비트의 블록 암호화 알고리즘이며 56비트 크기의 키로 암호화
- 트리플 DES: DES 암호화 키 2개를 이용하여 두 번의 암호화와 한 번의 복호화 또는 두 번의 복호화와 한 번의 암호화를 수행, 보안성은 높아지지만, 처리 속도가 느려짐
- AES: 128비트 암호화 블록(암호화할 데이터), 다양한 키(비밀 값)의 길이(128/192/256비트)를 갖춘 알고리즘
- 빠른 처리 속도, 다양한 플랫폼에서 구현이 용이
- ECB, CBC, CFB, OFB, CTR 등 다양한 운용 모드를 통해 데이터 블록을 처리
- ECB(Electronic Codebook)
- 각 데이터 블록을 독립적으로 암호화
- 같은 입력 블록에 대해 항상 같은 암호문이 생성되기 때문에 패턴이 누출될 수 있음
- 보안성이 낮아 주로 간단한 암호화 작업에서 사용되며, 중복되는 패턴이 없는 데이터에 적용될 때 더 안전하게 사용
- CBC(Cipher Block Chaining)
- 이전 블록의 암호문과 현재 블록의 평문을 XOR 연산하여 암호화
- 초기 블록은 초기화 벡터(IV)로 암호화
- 이전 블록의 암호문이 현재 블록에 영향을 주기 때문에 같은 평문에 대해 다른 암호문이 생성되어 패턴이 누출되지 않음
- SEED: 한국인터넷 진흥원과 국내 암호 전문가들이 순수 국내 기술로 개발한 128비트 블록의 암호화 알고리즘
- ARIA: 경량 환경 및 하드웨어의 효율성 향상을 위해 개발된 128비트 블록의 암호화 알고리즘
- IDEA: 128비트의 키를 사용하여 64비트의 평문을 8라운드로 돌려 64비트 암호문을 만든다. 모든 연산이 16비트 단위로 이루어지도록 하여 16비트 프로세서에서 구현하기 용이하며 주로 키 교환에 쓰인다.
- RC5 : 입출력, 키, 라운드 수가 가변인 블록 알고리즘. 32비트, 64비트, 128비트 키가 사용되며 속도는 DES의 약 10배이다.
- Skipjack: 미국 국가안보국에서 개발한 클리퍼 칩에 내장된 블록 알고리즘
- LEA: 고속 환경 및 모바일 기기 등의 경량 환경에서 기밀성을 제공하기 위해 국내에서 개발된 알고리즘. 128비트 데이터 블록으로 128비트, 192비트, 256비트 비밀 키를 사용할 수 있다.
비대칭 암호화 알고리즘
암호화 키와 복호화 키가 한 쌍을 이룬다.
- RSA(Rivest-Shamir-Adleman) : 중요 정보를 소수 2개로 표현한 후 두 소수의 곱을 힌트와 함께 전송하여 암호로 사용. 충분히 큰 두 소수의 곱에서 두 소수를 찾기 어려운 점을 이용하였다. 오늘날 산업 표준으로 사용되고 있으며 여기에 사용되는 소수는 250자리이다.
- ECC(Elliptic Curve Cryptography) : 타원 곡선을 기반
특징 및 기능
- 공개키는 다른 사람과 공유되며, 개인키는 오직 소유자만 알고 있어야 한다.
- ECC는 작은 키 길이로도 강력한 보안성을 제공하며, RSA는 대칭키 암호화보다 복잡하지만 효율적으로 사용이 가능하다.
- 기밀성 확보를 위한 암호화: 수신자의 공개 키로 암호화하여 송신한다.
- 부인 방지 확보를 위한 암호화: 발신자의 개인 키로 암호화하여 송신한다.
728x90'[포스코x코딩온] 웹개발자 풀스택 부트캠프8기' 카테고리의 다른 글
[포스코x코딩온] 복습을 통한 추가 내용(8주차) (0) 2023.08.26 [포스코x코딩온] 암호화 실습 (Crypto, Bcrypt) (0) 2023.08.19 [포스코x코딩온] JWT 인증 개념 (0) 2023.08.17 [포스코x코딩온]AWS를 통한 Node.js 프로젝트 배포 (0) 2023.08.16 [포스코x코딩온] 서버 및 클라우드 개념 (0) 2023.08.15