전반적인 후기
새로운 것을 시도 한다기보다 기존에 논문으로 발표되었거나 이미 존재 하는 아이디어를
구현하는 방향의 연구들이 많아서 조금 아쉬웠다.
다만 지금 한국에서 보안 관련해 대강 어떤 연구 활동들이 이루어 지고 있는지
동향 정도를 파악 할 수 있었던 건 좋았다.
-----------------------------
1차시 - FPGA 전용 암호 라이브러리 구현 및 활용 - 서울대 이재진 교수
FPGA란 프로그래머가 하드웨어 구조를 변경 가능한 보드.
SHA 를 OpenCL -> Verilog (하드웨어 설계 언어) 사용해서 구현.
Latency 줄이기, 병렬화, Frequency 높여서 더 최적화 할거다.
AES 쪽은 아직 구현을 안했다.
GPU vs FPGA
-> 성능 비교함. FPGA 도 트랜지스터가 많으면 그래픽 카드보다 성능 좋을 수 있다!
------------------------------
2차시 - 클라우드 환경에서의 암호 사용 정책 연구 - 중앙대 최명길
클라우드 보안 위협
트래픽 스니핑, 접근권한 탈취, DoS, 설계오류
+가상화 위협 - 하이퍼바이저 감염, 침입탐지 어려움 등
관리문제, 지역이 달라서 법 제도 문제도 있음
보안인증제도
암호 정책 수립
무결성 기밀성
국내 서비스 보안 기준
다른건 똑같고 서비스 공급망 관리 기준이 추가 됨.
클라우드 보안 인증제도 알고리즘 기준이 따로 있다. 각 기준은 표로 정리함.
1. 어플리케이션(암호화) -> DB
2. 어플리케이션 -> DB(암호화)
3. 어플리케이션 -> 에이전트(암호화) -> DB
- 완전 동형 암호화
데이터를 복호화 하지 않아도 연산이 가능
- 검색 가능 암호화
복호화 하지 않고 키워드 검색 가능
- 순서 유지 암호화
복호화 하지 않고도 수치데이터가 순서를 유지 가능
( 평문에 근접한 값을 얻을 수 있으면 큰 취약점이 될 수 있다. )
결국 클라우드에서 키관리를 어떻게 할거냐 ? 라는게 화두
- 서버에 저장하면 키도 같이 유출된다.
Q. 키를 암호화해서 디스크에 저장해야 한다고 했는데 그럼 키를 암호화 하는 키는 보통 어떻게 보호하는지?
A. 이게 아직 정책이 없다. 앞으로 중요한 이슈가 될 것 같다.
-------------------------------------
3차시 - 소프트웨어 자동 Exploit 생성 기술 연구 - 세종대 윤주범
사실 단기간에 하기는 어렵다
- 기존의 자동 취약점 탐지 시스템 분석
- 자동 오류 분석 요소기술 연구
- 검색기반 자동 취약점 탐지기술 연구
... 를 할 것이다.
요소기술 연구
- 정적 분석 ( 바이너리 디스어셈블 해서 unsafe함수 찾기)
- 퍼징 (찾아낸 unsafe 함수에 대해 Fuzzing )
- 기호 실행
- 동적 기호 실행
기존 연구의 문제점
시간이 오래 걸리는 단점이 있다 -> 이건 어떻게 다른가?
퍼징은 랜덤에 기반함 (찾았다가 못찾았다)
Q. 어떤 조건에 따라 들어와서 여러 로직을 거친 이후 Crash가 일어나는 입력은 어떻게 찾는지?
A. Symbolic Execution. 변수를 미지수로 표현하고 수식을 세워서 여러 로직을 탈때도 미지수로 유지.
최후에 Crash 를 일으키는 값을 수식으로 확인해서 찾음.
다만, 너무 복잡한 식은 현재 기술로는 못푼다. 그래서 Concolic Execution 쓸거다.
Concret -> Symbolic -> Concret -> ...
Taint 분석
사용자 입력값에 의해 레지스터/메모리 영역이 제어 가능한지 확인. 불가능하다면 제외.
Q. 실제 Fuzzing을 할때는 바이너리가 돌아가는 환경이 다 다를것 같고
운영체제나 특정 라이브러리를 사용한다거나 다 다를거같은데요 이 연구의 커버리지가 어떤지 궁금..
물어볼 기회가 없었다.
-------------------------------------
4차시 - 유한체 및 타원곡선 위의 이산대수 문제 분석 기법 연구 - 세종사이버대 장남수
인수분해 (RSA) / 이산대수 (DSA, ElGamal) / 타원곡선 이산대수 (ECDSA, ECDH)
4년전부터 이어지는 시리즈.. 인수분해는 알려진 공격들을 거의 구현함
이산대수
- 512bit DH 아직도 사용되는 곳이 있다. 논문도 있지만, 리얼타임으로 뚫린다.
타원곡선 이산대수
- Summation Poltnomial 공격 기법 나옴.
ECDLP 최근 동향 조사할거다.
1. Factor base selection
2. Relation collecting
3. Point decomposition
4. Linear algebra
원래는 포인트를 계속 집어넣으면서 식을 풀어나감.
그런데 실제로 이 다항식을 풀 수 있는지 의문이 있었음.
2014년에는 3개 포인트의 관계로 풀 수 있게 만들도록 개선됨 - Summation Polynomial
n이 310 보다 크면 Pollard's rho 보다 복잡도가 낮아진다.
보통은 n이 571 보다 크다. 그렇게 보안 강도가 높은 애들일 수록 더 낮아짐
이걸 구현하게 이 연구다.
--- DLP 최근 연구 동향
인수분해는 n이 주어지면 매번 풀어야함.
이산대수는 보통 하나의 도메인 파라미터를 그룹에서 공유함.
512비트 최적 파라미터 및 실험환경을 구축하겠다.
--------------------------------------------------------
5차시 - 2018 First PQC Standardization Conference - 삼성SDS 문덕재
사실 알고리즘에 대한 상세 로직은 아직 선정도 안되어서 그 부분은 잘 모름
DWave 2000Qubit - 특정 목적의 알고리즘만 동작
-General 한 양자컴퓨팅
2017.11. IBM 50 Qubit
2018.01. Intel 49 Qubit
2018.03. Google 72 Qubit
MS Azure로 Q# 이라고해서 양자컴퓨터를 시험해 볼 수 있다.
이미 C, C++, Java 등으로 구현 가능
기존에는 결정된 정보만 전달 가능.
양자컴퓨터는 여러개의 상태를 저장할 수 있고, 한번만 측정 가능한 특징을 가진다.
예를들어 미로찾기에서 모든 상태를 다 한번에 저장했다가 미로를 빠져나오는 부분만 측정 하면 된다.
양자컴퓨터로는 1024 비트의 RSA가 실시간으로 깨진다.
현재는 O((log N)^3)
O(루트^3 N) 까지 나옴
RSA ECC 다 깨진다
-> GDPR 도 관련 있다. 개인정보 암호화가 깨지면 GDPR 도 같이 문제된다...
대비할 시간이 얼마나 필요한가?
->(eprint.iacr.org/2015/1075)
x years - 암호화 된것이 얼마나 보호되길 원하는지에 대한 시간
y years - 복호화 했다가 PQC 로 다시 암호화해서 저장하는데 걸리는 시간
z years - 양자 컴퓨터가 나와서 solver가 돌아가는 시간
x + y > z 이면 risk 하지 않다.
2015.04 PQC 공모를 통한 표준화 진행
MS에서 10년 내 Personal 양자 컴퓨터가 나온다는 확신이 있다.
알고리즘 고속화보다 키 Generate 고속화가 더 시급하다.
암호화 / 서명 / 키공유
TLS, SSH, IPSEC 등에 녹아 들 수 있어야 한다.
Signature, Encryptions, Key-establishment
PQC 알고리즘은 장단점이 너무나 극명하여 갈길이 멀다.
Code based - McEliece - 빠른 암복호화 / 큰 키 사이즈 (기가단위)
Hash based - SPHINCS+ - 매우 안전한 증명 / 큰 서명 사이즈 (메가단위)
Lattice based - NTRU, GGH - 다양한 환경 및 고속 구현 가능 / param 설정 표준(이정도면 괜찮다) 없음
Multivariate - HFEc- 작은 서명 크기, 빠른계산 / 큰 키 사이즈, 나오는 족족 깨짐
Isogeny - 정말 작은 키 사이즈 및 OpenSSL 등등이 다 있다 / 속도가 느림
표준 로드맵 - 1St NIST Standarication Conference
1. PQC 알고리즘 제안 마감 - 82개
2. 설명회
3. 20개쯤으로 줄이기
4. 최종 후보 선정
PQCrypto 에 들어가보면 히스토리 전부가 나와있다.
Nist 표준에 제안되는 Feature - 가 서명 . 암호화 . 알고리즘이 되어아한다.
82개가 공모되었는데 4개월만에 벌써 엄청나게 깨졌다,
Lattice 기반은 잘 안깨짐 -> 1년 이상 연구한 사람 이외에는 깨기 어렵다.
Standard / Ring / Module 문제가 있는데 Module 문제가 가장 안정성이 높다고 평가됨.
EMBLEM(한국), LAC, HILA, LIMA 알고리즘이 관심이 많았다.
대부분 유럽에서 공동연구 알고리즘을 내는데,
우리 나라 알고리즘이 살아남을 수도 있겠다 싶었다.
----------------------------------------
6차시 - 거래 추적 불가 암호화폐 취약성 연구 - 한양대 윤종원
일반적으로는 블록체인에 모두 남게된다.
각각의 트랜잭션들에 In Out 이 모두 기록되는데, 추적 불가능한 암호화폐는
거래 내역을 은닉한다.
DASH, Monero, Zcash, Verge, PIVX. 추적가능한지 확인해 보았다.
1. Denomination
A가 100Dash 를 B에게 보낸다 -> 10^ 단위로 나누어 잘게 쪼갠다.
2. Mixing
보내기 전에 일정한 단위 금액으로 나눠진 코인을 다른 사용자의 코인과 섞은 뒤 보낸다.
2 ~ 8 회 반복한다 (다른 마스터 노드에게 보냄)
Mixing 에 관여하는 노드는 마스터노드이며, 1000Dash 이상 보유한 경우.
다만 마스터노드는 딱 해당 단위 Dash 만 처리 할 수 있다. 0.01 / 0.1 / 1 / 10 / 100 Dash 등
임의의 주소로 들어와서 임의의 주소로 나가는 것들을 확인 가능.
수신자 입장에서는 수신된 주소는 하나이고 인풋은 여러개임.
그래서 이게 많아지면 너무 경우의 수가 많아진다
그래서 입력의 개수가 하나이고 거기서부터 파생되니까 Denomination 트랜잭션도 확인.
1. output 총 합이 Input 보다 작은 애들은 제거.
2. Denomination 되는 애들을 확인
Monero
가장 최근 것이 실제 트랜잭션이다
ZCash
T-addr, Z-addr 조합. 3가지 조합이 나온다. T - Z, Z - T, Z - Z
Z-addr - Z-addr 조합에서만 Private 인데 사실 전체 거래량의 0.4 % 밖에 안된다.
Q. 마스터노드가 마스터 노드에게 Dash를 받았을 때, 디노미네이션 이후
최종적으로 어떤 사람에게 보내야 한다는걸 어떻게 알 수 있는건지 ?
A. 송신자가 코인을 보낼 때 최초에 정해진다.
사실 마스터노드가 다른 마스터노드로 보낼 때는 전달만 할 뿐이다.
Q. 2명이 동일 시각에 동일한 금액을 2명에게 보낼때. 추적가능한지?
왜냐면 실제 대시네트워크에서는 이런일이 있을 수 있음.
A. 사실 이런 경우는 알 수 없다. 낮은 확률로 이 사람이 받았을 것 같다 정도를 아 수준이다.
-----------------------------------------------
7차시 - 지문인식 기반 보안 체계 취약점 분석 - 인하대 최학남
실제 기기에서는 지문과 갤러리에 있는 지문이 동일한가를 판단한다.
1. 일단 지문을 많이 만들어 본다
2. 특징점을 잡아서 지문을 만들어 본다
지문 생성시 파라미터는 다음과 같다.
Shape ( 모양 ) , Direction map ( 방향성 ), Density ( 밀도 )
이런 파라미터를 모아서 Master Fingerprint 를 만든다.
Master Fingerprint 도 Noise, 압력 등에 따라 또 이미지가 다르다.
기존 지문 생성 알고리즘들 소개 및 비교
이 연구의 목표
1. 우리는 일단 지문을 많이 만들어서 우회를 해보겠다.
2. 또 특징점을 안다고 가정하고, 만들어서 우회를 해보겠다.
-----------------------------------------
8차시 - 상용 패스워드 관리 프로그램 취약점 분석 - 서강대 소재우
연구 순서
1. 패스워드 저장소 취약점 분석(로컬)
2. 논리적 취약점 분석 (메모리 등)
3. 웹 취약점 분석 (CSRF/XSS/Phishing)
패스워드가 너무 복잡하고 많으니 Password Manager 가 등장하게 됨.
브라우저 기반 (built-in)
웹 기반
로컬 기반
하드웨어 기반
기업용 - 서버기반
이러한 매니저들에는 소프트웨어 취약점이 존재하고있고 국내에서는 연구가 미흡하여 추가 연구하려 한다.
저장소의 위치를 찾아내서 알고리즘을 알아내고 디크립트 해본다.
CryptProtectData 라는 API 를 사용하고 있음.
CryptUnprotectData 를 사용하면 된다.
User DataDefault
AppDataLocal***User DataDefaultdatabases
저 장소의 권한이 어떻게 되는지
Q. 몇년전에 G사 모바일 쪽 PM을 열어봤었는데 거긴 평문이었다.
입장을 찾아보니 ADB조차 그 파일에 접근할 수 없으므로 정책을 그렇게 세웠다. 라고 하던데
이렇게 권한으로 보호하고 있는 경우라도 패스워드를 풀 수 없게 해야 된다는 것인지
A. 사실 윈도우 같은 경우에 자리를 비울때 윈도우 락을 걸어야 안전한데 그런 경우가 잘 없다.
그렇기 때문에 보호 해야 한다고 생각한다.
Q. 그러면 반대로... 윈도우에서 저걸 보호하려면 어떻게 해야 하나?
A. 사실 프리웨어를 쓰는게 좋다. 계속 패치가 되니까. 그리고 근본적인 해결책은 없다고 생각한다.
이런식으로 암호를 저장하지 말아야 한다.
----------------------------------------
9차시 - 암호 라이브러리에 대한 GPU 캐시 부채널 공격 분석 기술 연구 - 광운대 신영주
가상머신
캐시는 CPU 와 메모리간 속도차를 줄이기 위한 것. 메모리 대비 10~100배 고속.
Cash hit과 Cash miss 이 났을때 데이터를 가져오는 시간이 다르다.
이 시간차를 이용해서 부채널 공격을 시도한다.
L3 캐시에서 부채널이 발생
가상 머신들 간 L1, L2 는 각 코어에 배타적으로 할당되지만
L3 는 CPU간 공유되기 때문이다.
2016년에는 AWS에서 불특정 다수의 EC2 인스턴스를 대상으로 RSA 키 공격이 가능했다.
1. Flush + Reload
Victim 과 공격자가 캐시의 메모리 라인을 공유해서 발생하는 간섭 현상을 관측
한 라인은 64byte 크기이다.
공격 선행 조건 - 프로세스 혹은 가상 머신 간 메모리 공유 / 캐시 제어 명령어가 필요하다
Content-aware - 공유라이브러리 (일반적)
Content-based (memory deduplication) - VMWare에서 사용
하이퍼바이저가 메모리 페이지를 다 관리하고있고, 이걸 VMWare 들이 나누어 사용한다.
이때 동일한 페이지를 사용해 충돌하는 경우가 발생하게 된다. 이때 하이퍼바이저가 주기적으로 스캔해서
발견하면 하나의 페이지로 합친다. 그럼 VMWare들이 하나의 메모리 페이지를 공유하게된다.
1. 공격자는 희생자가 해당 메모리라인을 읽었는지 확인하려함
Attacker 는 flush를 통해 L3 에서 메인 메모리로 내림
2. Victim 이 access 했다면 cash hit 아니라면 cash miss.
캐시에 올라가있으면 캐시를 가져온다 -> Cash hit (희생자가 Access 했다)
캐시에 올라가있지 않으면 메모리에서 가져온다 -> Cash miss ( 희생자가 Access 하지 않았다.)
GnuPG 에서 RSA 복호화를 할때, square 연산 / multiply 연산 / moduler 연산을 함.
GnuPG 를 리버싱해서 실행 코드의 메모리 코드값을 확인하고 probing
복호 연산을 하고있을때 비트값의 변경이 있는지 확인 가능.
2. Prime + Probe
캐시집합단위의 간섭 현상을 관측한다. 메모리 공유 필요가 없다.
이건 이번 연구와 관련없어서 따로 설명 안함
-> 그래서 이제 이런 툴 구현을 해보려고 한다.
구현해서 2차 워크샵때 다시 발표하겠습니다.'
Q. 공격자가 Sync 는 어떻게 맞추는지? 실제로는 서버가 언제 복호화 로직을 실행할지 시점이 애매할 수 있을 것 같다.
A. 여기서 타겟으로 잡고 있는 가상화 환경의 경우 대부분 서버로 가정되기 때문에, 공격자가 Request 를 날려서
그때부터 Probing 을 하면 될 것이라고 생각한다.
-------------------------------
1년에 3번의 워크샵을 하는데, 8월 / 11월에 또 한다. 2차 3차.
0 개의 댓글:
댓글 쓰기