단방향성 암호화
Hash Function
- Hash를 이용하여 암호화하는 과정
- 평문을 암호화할순 있지만, 복호화는 불가능한 단방향성 암호화이다.
- 항상 해쉬 함수마다 정해져 있는 고정된 길이로 출력
- 원문의 조금만 바뀌어소 해쉬값이 달라지기에 무결성을 입증하기 위해 사용
대표적인 알고리즘
- MD5
- output: 128
- MD4를 대체하기 위해 고안
- 메세지 축약 알고리즘으로, 파일의 무결성 검사 용도로도 사용
- MD5의 결함을 발견하고 SHA로 사용하기를 권장
- SHA
- SHA-224, SHA-256, SHA-384, SHA-512
- output: 128
- 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정, SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형 SHA-224, SHA-256, SHA-384, SHA-512생겼다.
-
구글 보안팀 (프로젝트 제로)
-
세계적인 해커들을 고용해 제로데이 취약점을 알아내는 것 각종 테스트, 크래킹 등을 한다고한다.
-
https://shattered.io/ SHA-1의 충돌쌍을 공개하였다
-
MD5와 SHA-1은 안전하지 않으며 ISMP-P, ISO27001에서 사용하면 안되며 인증도 안됨
양방향성 암호화
대칭키(symmetric key)
특징과 여러 이름
- 치환(s)과 순열(p)을 사용
- 암호화키와 복호화키가 서로 대칭 - 대칭키(Symmetric Key)
- 암호화키와 복호화키 대칭 되기에 하나만 알아도 알 수 있음 - 단일키(Single Key)
- 하나의 통신 세션에서 모든 메시지를 암호화하기 위해 사용 - 세션키(Session Key)
- 대칭키는 대칭적이기에 다른 사람이 알면 안됨 - 비밀키(Secret Key)
대표적인 알고리즘
- DES > 3DES
- 1999년 RSA컨퍼런스에서 DES를 크래킹을 시연하였고 57시간만에 크래킹되어 표준에서 제외 3DES로 임시로 사용하다가 공개키 표준을 공모를 시작하였고 그 때 나온 것이 AES이다
- AES
- ID/PW로 로그인하는 대부분의 경우 AES로 암호화, Wi-Fi를 이용하는 모든 트래픽도 AES로 암호화 등등
- 우리나라 : SEED는 금융중앙망에 사용
HIGHT, ARIA, LEA는 경량 대칭키로 모바일/IoT에 사용
- 외국 RC 시리즈(RC4,RC6), Fish 시리즈(TwoFish,★ BlowFish)
대칭키의 문제점
- 키를 상대에게도 전달해야 복화화가 가능하지만 키를 안전하게 전달하기가 힘들다.
- 대칭키를 사용하기위에서는 n(n-1)/2개의 키가 필요하기에 필요한 키의 개수가 너무 많아 관리가 어렵다.
- 이러한 문제들을 해결하기 위한 것이 비대칭키이다.
암호화 방식
- 블록 암호
- 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘
- 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용
- 블록 암호 하나의 에러는 데이터 블록 전체에 영향
- 스트림 암호
- 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘
- 통상 한 번에 1비트씩 평문과 키 스트림을 XOR하여 생성
- 암호문에서 1비트가 왜곡되면 평문에서도 1비트만 왜곡
비대칭키
특징과 여러 이름
암호화에 사용하는 키와 복호화하는 키가 서로 다름 - 비대칭키
개인이 소지하고 있는 것을 - 개인키, 공개하는 것을 - 공개키
연산는 싶지만 연산에서 나온 결과 값만을 가지고 역연산이 힘들것을 이용함.
대표적인 알고리즘
- Diffie-Hellman(디피-헬만)
- 이산대수의 난해함에 그 안전성기반을 두고 있음
- RSA
- 소인수분해의 어려움에 근거
- RSA, 대칭키 RC 시리즈,MD5 등 Ron Rivest 제작
- 타원곡선암호(ECC: Elliptic Curve Cryptography)
- 모바일에 적합하여 유튜브,인스타,페이스북 같이 모바일 사용자가 많을 때 사용한다.
- 비트코인이 타원곡선암호 기술 방식에 속하는 타원곡선 디지털서명 알고리즘(ECDSA: Elliptic Curve Digital Signature Algorithm) 암호 알고리즘을 사용
활용
- 공개키 암호화
- 평문을 상대의 공개키를 사용하여 암호화하여 발송하면 생대가 상대의 개인키로 복호화하기에 자신의 신분을 증명할 수 있음
- 개인키 암호화
- 평문을 자신의 개인키로 복호화하면 상대는 자신의 공개키로 복호화하기에 자신의 신분을 증명가능
전자 서명
정의 및 과정
- 평문의 '해쉬값을 생성'하여 송신자의 '개인키로 암호화'하여 발송
- 암호문을 받은 송신자의 '공개키로 복화화'
- 송신자는 평문의 해쉬값을 생성하여 발송자가 보낸 암호문에 있던 해쉬값과 비교하는 과정을 통해 원문이라는 것을 알 수 있다.
기능
특징
- 서명자 인증(Authentication)
전자서명을 생성한 서명인을 검증 가능(서명자의 공개키)
- 부인방지(Non-Repudiation)
서명인은 자신이 서명한 사실을 부인 불가
- 위조 불가(Unforgeable)
서명인의 개인키가 없으면 서명을 위조하는 것은 불가함
- 변경 불가(Unalterable)
이미 한 서명을 변경하는 것은 불가
- 재사용 불가(Not-Reusable)
한 문서의 서명을 다른 문서의 서명으로 재사용 불가
인증서
- 형식 : X.509v3
- 인증서의 주요 내용 : 서명알고리즘, 유효기간, 발급자, 주체, 주체의 공개키, 서명된 해시값 등
- 공개키가 올바른지 확인 (주체의 것이 맞는지 검증)
- 방법 :
공개키의 해시 값을 계산하여 인증기관의 개인키로 암호화하여 인증기관의 공개키로 복호화하여 해시값을 비교하여 인증한다.(전자서명과 비슷)
- 생성 : 공개키(원문)의 해시값을 구해서 송신자(CA)의 개인키로 서명
- 검증 : 송신자(CA)의 공개키로 서명된 해시값을 복호화한 후, 공개키(원문)의 해시값을 구해서 비교
PKI
- PKI
- RA (Registration Authority, 등록기관) : 인증서 신청 업체를 검증하고 등록을 대행하는 역할 (사업자등록증, 인감증명, 인감도장, 등기부등본)
- CA (Certificate Authority, 인증기관) : 인증서를 발행
- RootCA (최상위 인증기관, 美PCA) : 인증기관을 검증
- Repository : 인증서(공개키)를 모아놓은 데이터베이스 (ldap)
- 우리나라 : NPKI (National Public Key Infrastructure)
- PAA(정책기관) : 미래부
- Root CA : KISA - ca 관리
- CA(인증기관) : 금융결제원, 정보인증, 전자인증, Koscom, 무역정보협회 - ra 인증
- RA(등록기관) : 은행, 증권회사, 대행업체 등등
※ 최근에는 은행들이 자체적으로 인증서를 발행하기에 CA도 된다.
★ 인증서는 삭제하기가 어려움 그렇기에 인증서 취소 목록(CRL : Certificate Revocation Authority) 있는데 일반인들이 이를 확인하기는 어렵다. 그렇기에 나온것이 OCSP(Online Certificate Status Protocol)이다. OCSP은 온라인에서 실시간으로 인증서의 유효성을 검증하는 프로토콜이다.
SSL/TLS
-
웹 브라우저와 웹 서버간에 암호화(대칭,비대칭,해시 등) 사용하는 프로토콜
-
Netscape 만들어져 SSL(Secure Socket Layer) 시작되었고 SSL1.0, SSL2.0에 취약점 발견되어 SSL3.0을 만들어 보안하였지만 취약점이 있었음, 표준화하기로 결정하고 이름을 TLS(Transport Layer Security)로 변경하여 SSL3.0의 업그레이드 버전으로 TLS1.0을 1999년에 만들어졌다.
-
지금은 SSL은 사용하지 않지만 관용적으로만 SSL라고 한다. - 최근 TLS는 1.3버전을 사용하고 있으며 TLS1.3, 1.2만 권장하며 TLS1.1이하는 비권장된다.
웹서버가 자신의 공개키를 인증서 형식(X.509v3)으로 제공
웹브라우저는 세션키를 생성해서 웹서버의 공개키로 암호화해서 웹서버에게 보냄 / 웹서버는 자신의 개인키로 복호화하여 세션키를 받음
웹브라우저와 웹서버는 데이터를 보낼때 세션키로 암호화해서 보냄
상대방에게 받은 암호문은 세션키로 복호화함