Theory/Cipher protocol7 kerberos 버전별 구현[소스] 오늘부터는 글의 자유도를 높이기 위해 의식의 흐름기법에 따라 끄적끄적 하도록 하겠습니다ㅏㅏ~ kerberos? 커베로스 커버로스 .. 여러가지 이름으로 불리네요. 저는 처음 배울 때 커버로스로 배웠기 때문에 커버로스라고 말을 하겠습니다. 커버로스는 version1부터 version5까지 나왔는데 여기서는 버전 1과 버전 2를 직접 구현하러 떠나봅시다~ 1. 이 커버로스에 대해 알아봅시다!! 1-1) 커버로스란 무엇일까요? ▶ 검색을 해보니 그리스신화에서 저승문을 지키는 머리가 3개인 개님의 이름? 이라고 나오네요. ▶ 조금더 자세히 설명하면 MIT에서 개발된 대칭키 방식에 의한 인증시스템 정도로 볼 수 있겠네요. 2. 커버로스 버전1 2-1) 커버로스 버전1의 원리를 먼저 알아볼까요? # 그림이 조금 그.. 2019. 6. 30. Ciphertext Only Attack(암호문 단독 공격) 구현 1. Ciphertext Only Attack(암호문 단독 공격) ▶ 공격자가 암호문만 알고 있을 때 사용할 수 있는 암호해독 기법이다. ▶ 암호공격 시 오직 암호문만 가지고 평문이나 키를 찾아야 하기 때문에 공격자 입장에서는 가장 어려운 공격방식이다. ▶ 대부분의 사람이 암호를 깬다고 얘기하는 말은 암호문 단독공격에 해당한다. ▶ 뭐.. 이유는 무차별공격, 빈도수분석 등의 공격이기 때문이다. ▶ 이용하는 방법은 평문의 통계적 성질 및 문장의 특성을 추측해서 해독을 시도한다. (1) 소스 msg = '53%%#305))6*;4826)4%=\')4%);806*;48#8@60\'))85;1%(;:-%*8#83(88)5*#;46(;88*96*?;8)*%(;485);5*#2:*%(;4956*2(5*c4)8@8*.. 2019. 5. 31. Known Plaintext Attack(기지 평문 공격) 구현 1. Known Plaintext Attack(기지 평문 공격) ▶ 공격자가 평문과 평문을 암호화한 암호문을 모두 알고 있을 때 사용할 수 있는 암호해독 기법이다. (1) 소스 msg = '53%%#305))6*;4826)4%=\')4%);806*;48#8@60\'))85;1%(;:-%*8#83(88)5*#;46(;88*96*?;8)*%(;485);5*#2:*%(;4956*2(5*c4)8@8*;4069285);)6#8)4%%;1(%9;48081;8:8%1;48#85;4\')-485#528806*81(%9;48;(88;4(%?34;48)4%;161;:188;%?;' # 알려진 평문이 있을 경우 사용 가능 # 이 암호문 중에 goodglass, mainbranch 단어가 있는 것을 알 때 # 패턴을 비교해야.. 2019. 5. 31. RSA를 이용한 전자서명(디지털서명) 구현 1. RSA를 이용한 전자서명(디지털서명) (1) RSA 전자서명 알고리즘 ▶ 예전에 정리한 내용이 있어서 아래 URL을 통해 확인이 가능하다. ▶ 참고 : https://ccurity.tistory.com/93 (2) 전자서명(디지털서명)의 방법 [1] 메세지 전체에 서명 ▶ 메모리 비용이 많이 든다. [2] 인증자(authenticator)에 대한 서명 ▶ 작은 비트블록인 인증자에 서명을 할 경우 인증자 변경 없이 문서만 변경하는 것은 불가능하다. ▶ 인증자 부분만 서명을 하기 때문에 기밀성은 보장할 수 없다. [3] 메세지의 해시값에 서명 ▶ 해시와 해시를 암호화 한 것을 공개키로 풀어서 비교가 가능하다. ※ Hmac을 사용하면 안되는 이유는? ▶ 키를 공통으로 쓰기 때문에 중간에 변경하고 다시 암.. 2019. 5. 31. RSA공개키를 이용한 암호화 구현 1. RSA공개키를 이용한 암호화 (1) RSA공개키 암호 알고리즘 ▶ 예전에 정리한 내용이 있어서 아래 URL을 통해 확인이 가능하다. ▶ 참고 : https://ccurity.tistory.com/88 (2) RSA의 특징 [1] 개인키를 알면 공개키를 구할 수 있다. [2] 그러나 공개키를 안다고해서 개인키를 구할 수는 없다. [3] 소스 from Crypto.PublicKey import RSA def main(): msg = b'hellow!' print(msg) private_key = RSA.generate(1024) # 개인키를 하나 만듬 print('private_key : {}'.format(private_key)) public_key = private_key.publickey() # .. 2019. 5. 30. 3DES를 이용한 암호화 1. 3DES를 이용한 메세지 암호화 (1) 암호운용모드 중 CBC(Cipher-Block Chaining)를 사용 (2) 시나리오 [1] 메세지를 입력한다. [2] 초기벡터를 입력한다. [3] 키를 입력한다. (3) 소스 from Crypto.Cipher import DES3 def basic_des(): msg = b'12345678'# 8byte IV = b'abcdefgh' # 8byte, 첫 블록을 암호화할 떄 사용하는 값 key = b'001234567891234567890123'# 24byte des3 = DES3.new(key, DES3.MODE_CBC, IV) # 키, 암호운용모드, 초기벡터를 넣고 des3객체 생성 e_msg = des3.encrypt(msg) # 메세지를 넣고 암호화 .. 2019. 4. 11. 시저암호 1. 시저암호 ▶ 고전암호의 일종으로 굉장히 간단한 암호종류 중 하나이다. (1) 정의 ▶ 왼쪽이나 오른쪽으로 key만큼 밀어서 암호화한다. ▶ 복호화는 암호화를 반대로 진행하면 된다. ▶ 단, key는 동일해야 한다. (2) 암호화 [1] 소스 def enc(msg, k): table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' rmsg = '' for x in msg: if x in table: index = table.find(x) index += k if len(msg) 2019. 3. 19. 이전 1 다음