이 문서는 2022년 12월 17일에 @sumin-dev에 의해서 작성되었습니다.
1. 암호화가 뭐야?
1.1. 암호화의 개념
1.2. 암호화로 달성할 수 있는 보안의 목표
1.3. 암호화의 유형
2. 어떤 암호를 사용할까?
2.1. 단방향 암호화
2.1.1. SHA-1(Secure Hash Algorithm-1)
2.1.2. SHA-2(Secure Hash Algorithm-2)
2.1.3. SHA-3(Secure Hash Algorithm-3)
2.1.4. 단방향 암호화의 문제점
2.1.5. 단방향 암호화의 문제점 해결 방법
2.2. 양방향 암호화
2.2.1. 대칭키(비공개키) 방식
2.2.2. 대칭키 방식의 장, 단점
2.2.3. 비대칭키(공개키) 방식
2.2.4. 비대칭키 방식의 장, 단점
- 중요한 정보를 읽기 어려운 값으로 변환하여 제3자가 볼 수 없도록 하는 기술
- 커크호프의 원리(Kerckhoffs's principle)
- 키를 제외한 암호의 모든 정보가 알려지더라도 암호체계는 안전해야 한다
- 암호시스템의 안전성은 암호 알고리즘의 비밀을 지키는 것이 아닌라 키의 비밀을 지키는 데 의존해야 한다
- 자물쇠의 원리
- 기밀성(Confidentiality)
- 인가 되지 않은 자는 정보를 확인하지 못하도록 하며, 정보가 유출되더라도 평문으로 해독할 수 없고, 변조 또는 위조하지 못하도록 기밀을 유지
- 무결성(Integrity)
- 인가 되지 않은 자로부터 위조 또는 변조가 발생하지 않았는지 확인
- 인증(Authentication)
- 사용자의 자격이나 메세지의 내용을 검증
- 부인방지(Non-repudiation)
- 송신자가 보낸 사실을 부인하거나, 수신자가 받은 사실을 부인할 경우를 증명
비밀번호를 잊었을 때, 비밀번호 찾기를 하면 왜 원래 비밀번호를 알려주지 않을까?
암호화된 데이터에 대한 복호화가 불가능한 방식!
- 해시함수(Hash Function)
1995년 미국 국가안보국이 설계한 암호학적 해시 함수들의 모음
SHA-1 알고리즘 내부 구조
- 입력 메세지는 512bit 패딩을 적용하는 방식
- 패딩: 100개의 공간에 문자 1개가 들어오면 나머지 99개의 공간을 숫자 0 등으로 메우는 작업
- 문제점: 충돌쌍 문제(두 데이터에 대한 해시를 계산하였더니 같은 결과값이 도출되는 것)
2001년 미국국가안전보장국(NSA)이 설계한 암호화 해시 함수들의 집합
SHA-2 알고리즘 내부 구조
- SHA-1을 대체하는 해시암호로 6개로 해시 함수로 구성
- SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256
- SHA-1과 동일한 알고리즘을 사용하지만 해시 값 크기를 확장하여 보안성 강화
- SHA-256
- 인증서, 블록체인 등에서 가장 많이 채택하여 사용되는 암호 방식
- 256 비트의 축약된 메세지
- SHA-512보다 훨씬 빠르게 64개의 해시 생성
- SHA-512
- 512비트 해시 값을 생성
- 용량을 많이 차지
2015년 미국 국립표준기술연구소(NIST)에서 공개적인 방식을 통해 후보를 모집한 다음 함수 안전성을 분석하여 몇 차례에 걸쳐 후보를 걸러내어 선정한 암호화 해시함수
SHA-3 알고리즘 내부 구조
- SHA-1과 SHA-2의 동일한 수학적 오류를 해결하여 등장한 해시함수
- SHA-2가 출력할 수 있는 메세지 해시 값의 크기를 모두 출력
- 높은 수준의 병렬 구조를 가지고 메모리 접근해서 효율성이 좋음
- 문제점:
- SHA-3을 지원하는 소프트웨어 또는 하드웨어가 사실상 없음
- 소프트웨어 측면에서 SHA-1,2보다 느린 속도
- 왜 SHA-3을 사용하지 않는가
암호화된 데이터에 대한 복호화가 가능한 방식!
- 암복호화에 서로 동일한 키가 사용하며 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있다
-
장점
- 비대칭키 방식에 비해 속도가 빠르다
- 대용량 데이터 암호화 가능
-
단점
- 키를 교환해야 하는 문제(키 배송 문제)가 발생
- 키가 탈취될 수 있는 문제, 사람이 증가할수록 관리해야할 키가 방대해지는 문제
- 기밀성 외 기능 제공이 어렵다
- 암복호화에 서로 다른 키가 사용되며 하나의 키는 공개키로 사용되어 모든 사람이 접근 가능
- RSA, ElGamal, ECC
-
장점
- 키 배송의 문제를 근본적으로 차단하여 안전성이 높다
- 기밀성, 무결성, 인증, 부인 방지 기능 모두 만족 가능
-
단점
- 대칭키 방식에 비해서 느리기 때문에 적은 데이터 암호화에 적합