현대 암호학
* 대칭키 암호
- 블록 암호
- 스트림 암호
* 비대칭키 암호
- 공개키 암호
- 공개키 서명
* 해시 암호
1. 문자 암호에서 비트열 암호로
1) 부호화
고전암호 => 문자 암호 방식(ex: 'A' -> 'T')
현대암호 => 비트열 암호 방식(ex: 0x41 + 연산 = 0x75)
암호화에 컴퓨터 사용이 필수
암호화 프로그램도 평문을 비트열로 변경하고 비트열(byte string)로 된 암호문을 출력
부호화(encoding)
문자열(string)을 비트열(bit string, byte string)로 바꾸는 것
ASCII(American Standard Code for Information Interchange)
- https://ko.wikipedia.org/wiki/ASCII
- ASCII는 7비트 인코딩으로, 33개의 출력 불가능한 제어문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 총 128개로 이루어진다.
- 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수문자, 그리고 하나의 공백 문자로 이루어진다.
2^7 = 128 = 출력 불가능한 문자(33개) + 출력 가능한 문자(95개)
출력 가능한 문자(95개) = 대문자(26) + 소문자(26) + 숫자(10) + 특수문자(32) + 공백(1)
문자열 midnight을 다음과 같은 비트열로 부호화
m : 01101101 : 0x6d
i : 01101001 : 0x69
d : 01100100 : 0x64
n : 01101110 : 0x6e
i : 01101001 : 0x69
g : 01100111 : 0x67
h : 01101000 : 0x68
t : 01110100 : 0x74
str = 'midnight' for i in str: print(i, ord(i), hex(ord(i)) |
m 109 0x6d i 105 0x69 d 100 0x64 n 110 0x6e i 105 0x69 g 103 0x67 h 104 0x68 t 116 0x74 |
- ord('A') : 문자 -> 십진수
- chr(65) : 십진수 -> 문자
- hex(65) : 숫자 -> 16진수
2) XOR
XOR = exclusive or (익스클루시브 오아, 엑스 오아)
배타적 논리합(XOR)
----------------
A B result
0 0 0
0 1 1
1 0 1
1 1 0
----------------
비트열 XOR 성질
---------------------------------- 01001100 : A XOR 10101010 : B ---------------------------------- 11100110 : A XOR B |
-------------------------------------------------- 11100110 : A XOR B XOR 10101010 : B --------------------------------------------------- 01001100 : A XOR B XOR B = A (A로 돌아간다.) |
암호화/복호화의 순서와 매우 비슷
평문 A를 키 B로 암호화하고, 암호문 A XOR B를 얻는다.
암호문 A XOR B를, 키 B로 복호화해서 평문 A를 얻는다.
a = 60 b = 13 print(' a:', bin(a).rjust(10)) print(' xor b:', bin(b).rjust(10)) c = a ^ b print('a xor b:', bin(c).rjust(10)) print() print(' c:', bin(c).rjust(10)) print(' xor b:', bin(b).rjust(10)) d = c ^ b print('c xor b:', bin(d).rjust(10)) |
a: 0b111100 xor b: 0b1101 a xor b: 0b110001 c: 0b110001 xor b: 0b1101 c xor b: 0b111100 |
- a ^ b => a xor b
- bin(60) :
- rjust(10) : 10칸을 잡고, 오른쪽 정열
- ljust(10) : 10칸을 잡고, 왼쪽 정열
'현대 암호학' 카테고리의 다른 글
[현대 암호학] 04-3. DES (0) | 2021.06.22 |
---|---|
[현대 암호학] 04-2. 일회용 패드 - 절대 해독 불가능한 암호 (0) | 2021.06.22 |
[현대 암호학] 03. 실습(4) (0) | 2021.06.22 |
[현대 암호학] 03. 실습(3) (0) | 2021.06.22 |
[현대 암호학] 03. 실습(2) (0) | 2021.06.22 |