암호학 기초를 Formal Method로 살펴봅시다.
1. 암호학
정보를 보호하는 방법을 연구합니다
- 정보를 은닉 (대칭키 / 비대칭키)
- 정보의 출처를 검증 ( 디지털 서명 알고리즘 )
암호학은 너무 강력해서 한때 미국 정부는 암호화 기술을 무기로 간주하고 규제를 심하게 했습니다.
2. 현대의 암호화 기술
56bit 이상의, 128bit 등의 비교적 높은.. -> 클수록 어려운 것이 느껴집니다.
공격을 위한 계산의 현실적 한계에 의존합니다.
- 계산복잡도 이론
다항 시간 내에 해결되지 않는 문제(다항 시간 알고리즘)
소인수 분해
이산 대수 문제
- 다항 시간 알고리즘이 없다고 해서 안전한 것은 아닙니다. 증명이 되지 않았을 뿐입니다.
- 문제의 크기에 의존합니다. 문제의 크기를 크게 만들어서 공격자의 공격이 무의미하게 만드는 것을 목적으로 합니다.
(ex) RSA_Factoring_Challenge
2048bit. 소수를 이용한 공개키 암호화 방식.
(cf) n bit => n * 0.3 십의 자리
256 bit = 256/3 = 85 자리 숫자. -> log(2)가 0.3인 것에 기반함.
3. SHA256의 위엄
2^256
최고급 GPU = 초당 약 10억 번 -> 불가능합니다.
- 믿고 써도 될까요
검증된 라이브러리 3가지가 위의 사진 마지막에 적혀있습니다.
- Formal Verification
SHA256은 아직 증명되지 않았을 뿐입니다.
4. 공개키 알고리즘 -현대 디지털 서명
(1) Alice and Bob
- 임의의 수 R을 교환
- 각자 비밀키(수)를 간직
Alice: a
Bob: b
- 각자 아래 연산을 하고 그 결과를 교환
- 교환한 수에 각자의 비밀키를 통해 서로 같은 수를 얻게 됨
(2) 타원 곡선 암호학
- ECC (타원곡선암호화) 기반의 ECDSA를 쓰는 이유
(cf) 블록체인이 불편한 이유
하나를 저장하더라도 참여자들의 합의를 얻어야 하기 때문입니다.
- 암호학 책 추천
5. 방패는 얼마든지 준비되어 있음
6. 나를 위한 암호학
7. 결론