인디노트

[Kisa] 암호의 이해와 키 관리 실무 - 4일차 암호와 금융 보안 본문

인증기술

[Kisa] 암호의 이해와 키 관리 실무 - 4일차 암호와 금융 보안

인디개발자 2018. 5. 5. 13:47

P / NP : 문제를 푸는데 걸리는 시간과 검증하는데 걸리는 시간의 측면에서 바라 봄


P problem : Polynomial time problem - 푸는 시간, 검산하는 시간이 다항식내 끝남
NP problem : Nondeterministic P problem - 푸는 시간 예측 불가, 검산은 다항식 시간 내 끝남 (예 : RSA )

P 문제도 무한하고 NP 문제도 무한하다.
P = NP 인지 P != NP 인지 증명한다면?

만약 P = NP 라면 어려운 문제는 쉽게 풀 수 있는 길이 존재하므로
모든 암호는 다항식 시간 내 풀 수 있는 방법이 존재한다는걸 증명하게 되는 것이다
==> 노벨상


암호 안정성 증명 모델

진짜 암호문을 오라클에 만들어 보냄 ----->
랜덤 스트링을 오라클에 만들어 보냄 ----->

랜덤 오라클 모델로 안전하다고 알려졌지만 깨진 사례가 있음.
최근은 Standard Model 을 사용해서 안전성 증명.

SHA3 는 귀납법을 이용해 안전성을 증명한다.

  1. SHA3 를 깨는 방법이 있다 -> 가정
  2. SHA3 는 문제 A를 푸는 것으로 다항식 내 풀 수 있다.
  3. 하지만 문제 A를 푸는 방법은 알려져 있지 않다.
  4. 따라서 SHA3 를 깨는 방법은 없다.



무결성 검증 모델


  1. 무결성 검증 기능을 제공하는 모드를 사용한다(CCM / GCM)
  2. 평문 암호화 단계에서 평문에 대한 해시값도 함께 암호화 한다.
  3. 평문에 대한 MAC 값을 첨부한다. (암호화 키와 MAC 키는 달라야 한다.)
  4. 평문에 대한 전자서명 값을 첨부한다.

가용성
현재 컴퓨팅 환경에서 쓸 수 있는 수준의 보안을 적용해야 함.
RSA 1024 : 10ms
RSA 2048 : 80ms
RSA 4096 : 640ms


알려진 암호 공격 기법


CPA (Chosen Plaintext Attack) : 선택 평문 공격

  • 상황 : 암호 오라클이 존재하여, 평문을 주면 평문에 대한 암호문을 준다.
  • 공격 : 모든 평문에 대한 암호문을 만들어 둔다.
  • 조건 : 암호문을 적절한 시간내 얻을 수 있을 때 / 키가 고정된 시스템


KPA (Known Plaintext Attack) : 알려진 평문 공격

  • 상황 : 공격자가 평문에 대응하는 암호문 몇개를 알고 있는 경우 
  • 공격 : 치환 암호 환경에서 빈도 분석을 활용.
  • 조건 : 빈도 분석 공격을 할 수 있을 정도로 평문과 암호문 쌍이 많을 때.


CCA ( Chosen Ciphertext Attack) : 선택 암호문 공격

  • 상황 : 복호 오라클이 존재하여, 암호문을 주면 평문을 준다.
  • 공격 : 암호문을 조작하거나 생성하여 평문 - 암호화 쌍을 만들어 둔다.
  • 조건 : 적절한 시간 내 얻을 수 있을 때 / 키가 고정된 시스템
COA ( Ciphertext Only Attack ) : 암호문 단독 공격
  • 상황 : 공격자가 도청을 통해 암호문을 얻는다.
  • 공격 : 분석 과정을 통해 평문을 예측한다.
  • 조건 : 치환 암호 사용 및 암호문이 많을 때
Replay Attack : 암호문 재전송 공격
  • 상황 : 암호문에 대한 평문은 몰라도 암호문을 단순 재전송.
  • 공격 : 메시지를 재전송 하여 원하는 것을 얻는다.
  • 조건 : 메시지만 암호화 하는 구조 일 때
  • 방어 : Timestamp < Nonce < Sequence = One Time Session Key
Reflection Attack : 암호문 반사 공격
  • 상황 : 받은 암호문을 그대로 서버에 다시 보냄.
  • 공격 : 서버가 클라이언트에게 보낸 명령을 다시 서버가 수행하게 됨.
  • 조건 : 세션키가 같을 경우 / 방향에 대한 정보가 없을 경우
  • 방어 : 방향에 대한 세션키를 다르게 하고 방향 정보를 추가함. SSL 은 메시지를 암호화 하는 키, MAC 에 사용하는키, 순방향 / 역방향 총 4개를 공유한다.
Session Hijacking Attack : 세션 훔치기 공격
  • 상황 : 공격자가 피해자의 개인 정보를 몰라도 로그인
  • 공격 : 세션 ID를 훔쳐서 그대로 사용함
  • 조건 : IP 확인이나 다른 Factor를 사용하지 않는 경우
  • 방어 : 특별한 기능 ( 개인정보 수정 등 ) 은 재인증 한다(패스워드/ARS 등)

MITM : 중간자 공격

  • 통신을 가로채서 위변조
  • 방어 : 암호화 통신 / 동일키 확인 / MAC / 상호인증 / 재전송,반사공격 방지



암호 프로토콜 강화 기술

Probabilistic Encryption : 확률적 암호
  • KPA, COA 방어를 위해 평문 - 암호화 쌍이 1:1이 아니도록 함.
  • Encryption(RandomStr + Message) 복호화 이후 RandomStr 삭제
Key Confirmation : 동일 키 확인
  • 원래 세션이 존재하는 상태에서 특별한 정보 공유를 위해 키를 나눠가지는 상황
  • 클라이언트와 서버가 동일한 키를 갖고 있는지 확인 해야 한다.
Convert Channel : 은닉 채널
  • 통신 회선 뿐만 아니라 메모리간 통신에도 적용되는 개념.
  • 터널링 / VPN 개념으로 보면 됨.
Forward Secrecy : 전방향 안정성
  • 비밀키가 노출되더라도 키 분배 과정의 세션키 안정성에는 여향을 미치지 않음
  1. 서버의 개인키(RSA 등)를 Long-term Secret Key로 정의
  2. 키 교환 단계에서 사용되고 폐기되는 키는 Short-term Secret Key로 정의
  3. Long-term Secret Key 와 Short-term Secret Key는 별개의 키.
  4. 세션키를 계산하려면 두개의 키가 모두 있어야 한다.

금융 E2E (End to End) 기술 - Compliance 이다.

일반 E2E : 사용자의 Password 에 대한 기밀성 ( 값을 변경해서 보내겠다 )

확장 E2E : 입력장치로부터 입력된 값만 인식하겠다.

키보드 입력 과정
Key board -> 
커널 -----------------------
8042 MCU -> I8042 driver -> kdbclass driver -> 
윈도우 --------------------
System Message Queue -> Thread Message Queue -> IE/Thread
-> Editor Class


BHO (Browser Helper Object ) 기술
브라우저가 시작될 때마다 함께 로드되어 메모리가 공유되고 있음.
브라우저 창,  HTML Document, Event 에 대한 제어권을 갖는다.

따라서 해결을 위해 실제로 보내는 데이터는 사용자 입력과 다르게
한 바이트씩 암호화해서 히든 필드에 숨겨서 보낸다.

Javascript 기반 가상 키패드 - 문제는 어깨 너머로 볼 수 있다는 것.
멀티 마우스 입력으로 뭘 누르는지 모르게 할 수도 있다. 
아래가 대표적인 예

금융 보안에 대해서는 한국이 선진국이다. ( 이런 키보드 보안 기술은 한국이 최초다 )


OTP (One Time Password)

인증을 위해 사용되는 Password
표준은 많은데 RFC 6338(T-OTP) 를 보통 사용한다.

T-OTP (Time Based OTP)
OTP 서버가 있고, OTP 기기가 있어서 두 값이 같으면 인증됨.
기본적으로 알고리즘은 시간과 Seed를 이용한 HMACwithSHA 이다.

C-OTP (Challenge-Response OTP)
OTP 서버에서 정해준 입력 값(Challenge)을 OTP 단말에 입력해 생성.
단점 :
-비싸다. 단가가 5만원정도.
-단건 이체만 가능하다.
-귀찮고 사용성이 떨어진다.


반응형
Comments