6. 악보 암호
• 1차 세계대전 마타하리가 사용한 암호
• 치환 암호 사용
치환표
Key
암호의 역사
7. 난수표와 암호책
• 2차 세계대전 일본해군의 작전암호
• 치환 암호기반의 난독화 사용
암복호화 방법
난수표
암호책
Key
암호의 역사
40000~45000 개의
5자리 숫자 암호책
난수표
23121432124345263435167309465083265065
원문숫자 + 난수표 숫자 + 의미없는 숫자
8. 현대의 암호
• DES (Data Encription Standard)
• RSA 암호
• HASH 함수
10. DES – ECB 모드
• ECB (Electronic Code Book)
현대의 암호
• 동일한 평문은 동일한 암호문이 생성됨.
• 암호화시 병렬처리가 가능함.
• 복호화시 병렬처리가 가능함.
11. DES – CBC 모드
• CBC (Cipher Block Chaining)
현대의 암호
• IV 가 제2의 Key 가 됨.
• 암호화는 순차처리 해야함.
• 복호화는 병렬처리 가능함.
12. DES – CFB 모드
• CFB (Cipher FeedBack)
현대의 암호
• IV 가 제2의 Key 가 됨.
• 암호화는 순차처리 해야함.
• 복호화는 병렬처리 가능함.
• 암호화 알고리즘만 적용됨.
13. DES – OFB 모드
• OFB (Output FeedBack)
현대의 암호
• IV 가 제2의 Key 가 됨.
• 암호화는 순차처리 해야함.
• 복호화는 병렬처리 가능함.
• 암호화 알고리즘만 적용됨.
• 암복호화시 운영방식이 동일함.
14. DES 의 취약점 개선
• 3DES 사용
현대의 암호
• AES (Advanced Encription Standard) 개발
• 1998년 DES 사용 기한만료
• 1997년 AES 알고리즘을 공모하여 선정
• 키값 128bit(AES-128) , 192bit(AES-192) , 256bit(AES-256)
15. RSA
• 세 학자 Rivest, Shamir, Adleman 에 의해 개발
• 큰 수의 소인수 분해의 어려움 이용
• 비대칭 암호 (암호화 키와 복호화 키가 다름)
현대의 암호
16. RSA - 키생성
현대의 암호
1) 서로 다른 큰 소수 p와 q를 선택한다.
2) n= p*q를 계산한다.
3) φ(n)=(p-1)(q-1)를 계산한다.
4) φ(n)보다 작고 φ(n)과 서로소인 임의의 자연수 e를 선택한다.
(gcd(e, φ(n))=1, 1 < e < φ(n)에 만족하는 e 선택)
5) 확장 유클리드 호제법을 이용하여 e mod φ(n)에 대한 곱의 역원,
즉 ed mod φ(n)=1인 d를 구한다. (ed≡ 1 mod φ(n), 1 < d < φ(n)에 만족하는 d 값)
이는 임의의 정수 k 에 대해서 다음을 만족할 것이다. de = 1 + kφ(n)
6) 공개키: KU= {e, n}
7) 개인키: KR= {d, n}
17. RSA – 129 문제
현대의 암호
• 129자리 n 값 :
114381625757888867669235779976146612010218296721242362562561842935706935
245733897830597123563958705058989075147599290026879543541
• 소인수 분해 프로젝트
1993년, 전 세계 약 600여명의 학자와 관심 있는 사람들이 모여 인터넷을 통한 공동 작업.
1600 대의 컴퓨터 동원하여 8개월만인 1994년 4월 소인수분해 성공.
64자리와 65자리로 소인수 분해 성공.
3490529510847650949147849619903898133417764638493387843990820577
× 32769132993266709549961988190834461413177642967992942539798288533
• 해독문
The magic words are squeamish and ossifrage.
매직 단어는 “결벽증 비평가”와 “수염수리”이다.
• 250자리 n 값 사용시 소인수 분해시 수 백만년이 걸릴 것으로 예상하고 있음.
18. RSA – 디지털 서명
현대의 암호
평서문 암호문 평서문
송신자
수신자
송신자 개인키
송신자 공개키
20. RSA – 상호인증
현대의 암호
평서문 암호문 평서문
송신자
수신자
송신자 개인키
송신자 공개키
수신자 공개키
수신자 개인키
21. RSA – 공인 인증센터
현대의 암호
사용자
인증센터
사용자 공개키 보관
은행
사용자 개인키
키생성 요청
은행 공개키 요청
은행 공개키 보관
은행 공개키
사용자 개인키
은행 공개키
사용자공개키요청
사용자 공개키
거래원장 암호화
은행 개인키
사용자 공개키
거래원장
복호화
22. RSA – 대용량 데이터 암호화
현대의 암호
송신자
DES 키
수신자
송신자 개인키
DES 암호화
RSA 암호화
DES 키
RSA 복호화
송신자 공개키
DES 복호화
24. HASH – 무결성 검증
현대의 암호
• Parity bit
• Check Sum
• CRC (cyclic redundancy check)
1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1
전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것
0x12 0x34 0x56 0x78 0x14
인텔이 실행 파일의 무결성 검증에 주로 사용함.
정의된 다항식을 사용하여 계산
CRC-16, CRC-32, CRC-64 를 가장 많이 사용
function crc(bit array bitString[1..len], int polynomial) {
shiftRegister := initial value // 보통 00000000 또는 11111111
for i from 1 to len {
if (shiftRegister의 최상위 비트) xor bitString[i] = 1
shiftRegister := (shiftRegister left shift 1) xor polynomial
else shiftRegister := shiftRegister left shift 1
}
return shiftRegister
}
25. HASH – 데이터의 무결성 검증
현대의 암호
• 해커의 의도적 데이터 변형에 대한 대응
• SHA-160, SHA-256, SHA-512, MD5 등이 많이 사용됨