Access Control
Chapter 7 Authentication 접근 제어(Access Control) 인증(Authentication) 접근이 허용될 지를 결정 인간과 기계 사이에서의 인증(7장) 기계와 기계 사이에서의 인증(9장) 인가(Authorization) 일단 접근이 허용되었다면 사용자는 무엇을 할 수 있는가? 허용된 사용자가 할 수 있는 동작을 제한한다. 때로는 access control은 authorization과 동의어로 사용되기도 한다. synonym [sínenim] n 1 (…의) 동의어, 유의어(類義語)(ó antonym)<for, of ...>. Chapter 7 Authentication
Chapter 7 Authentication Passwords Biometrics Smartcard
Chapter 7 Authentication Who Goes There? Are Have Know 어떻게 인간을 기계에게 인증할 수 있을까? 다음과 같은 정보를 사용한다. Something you know: 암호(password) Something you have: 스마트 카드 Something you are: 지문(fingerprint) Chapter 7 Authentication
Chapter 7 Authentication 암호(Password) Chapter 7 Authentication
Chapter 7 Authentication Something You Know 암호 많은 것들이 암호로 사용된다! PIN (Personal Identification Number) 주민등록 번호 부모님 이름 생일 애완견 이름, 등등. Are Know Have Chapter 7 Authentication
Chapter 7 Authentication 암호의 어려움 - 1/2 암호 오늘날 암호 공학에서 부닥치고 있는 가장 큰 현실적인 문제의 하나이다. 하나의 해법 암호로서 암호학적 키(cryptographic key)를 사용한다. 암호학적 키(Cryptographic keys) 유지하기에 너무 크고 비싸다. 관리하기 힘들다. Chapter 7 Authentication
Chapter 7 Authentication 암호의 어려움 - 2/2 인간은 고도의 암호학적 키를 안전하게 저장할 수 있는 능력이 없다. 암호학적 계산을 할 때 속도와 정확성은 받아들일 수 없을 정도로 낮다. Chapter 7 Authentication
Chapter 7 Authentication 왜 암호를 사용하는가? 왜“something you know”을 “something you have”과 “something you are”보다 더 선호하는가? 두 가지 이유 비용: 암호는 공짜 편리성: 시스템 관리자는 새로운 스마트카드를 발행하는 것 보다 암호를 다시 만드는 것이 훨씬 쉽다. SA? Chapter 7 Authentication
Chapter 7 Authentication 암호의 문제점 Chapter 7 Authentication
Chapter 7 Authentication 키 vs 암호 – 1/2 암호 키 64 bits의 키 경우 264가지 키가 가능 랜덤하게 키를 선택 그러면 공격자는 약263 경우의 키를 시도해야 한다. 암호 8 문자로 이루어진 암호라면 한 문자당 256개가 가능하다. 그러면 총 암호의 수는 2568 = 264 사용자는 암호를 랜덤하게 선택하지 않는다. 공격자는 263경우의 암호 보다 훨씬 적은 수의 암호를 시도할 수 있다. (dictionary attack) Spse? Chapter 7 Authentication
Chapter 7 Authentication 키 vs 암호 - 2/2 사전 공격(Dictionary Attack) 220 ≈1,000,000 암호의 “사전”: 어떤 암호를 해독하기 위해 상당한 확률을 갖는 암호들의 집합 하지만 랜덤하게 선택된 64 비트 키 220 ≈ 1,000,000개의 암호가 주어졌을 때, 암호를 찾아낼 확률은 220 / 264 = 1/ 244 ≈ 1/17,000,000,000,000 암호의 비랜덤성(unrandomness)이 문제의 근원이다. Spse? Chapter 7 Authentication
Chapter 7 Authentication 암호의 선택 - 1/4 나쁜 암호들 frank Fido password 4444 Pikachu 102560 AustinStamp 좋은 암호들? jfIej,43j-EmmL+y 09864376537263 P0kem0N FSa7Yago 0nceuP0nAt1m8 PokeGCTall150 Chapter 7 Authentication
암호의 선택 - 2/4 문장 암호(Passphase) 실험: 세 개의 그룹 외우기 쉽거나 연상하기 쉬운 문장으로 구성된 암호 컴퓨터는 문장의 의미를 해석하지 않기 때문에 문법이나 의미, 표준말 등은 중요하지 않다. 다만, 길이가 길수록 크랙하기 어렵기 때문에 기억하기 쉬우면서도 길이가 긴 문장을 택하는 것이 좋다. 실험: 세 개의 그룹 Group A: 적어도 6개 문자, 1개의 비문자 Group B: 문장 암호에 기반을 둔 암호 Group C: 8개의 랜덤하게 선택된 문자
Chapter 7 Authentication 암호의 선택 - 3/4 결과 Group A: 약30%의 암호가 쉽게 해독 Group B: 약 10%가 해독 암호는 기억하기 쉽다. Group C: 약 10%가 해독 암호는 기억하기 힘들다. winner Chapter 7 Authentication
Chapter 7 Authentication 암호의 선택 - 4/4 암호를 지정하는 것이 때로는 가장 좋은 방법일 수 있다. 사용자가 준수하기를 기대하기는 힘들다. 각 경우, 1/3이 준수하지 않았고 그 중 약 1/3은 쉽게 해독할 수 있었다! 암호가 지정되지 않는다면, 최상의 권고는 문장 암호에 기반을 둔 암호를 선택한다. 테스트 암호 해독 도구를 사용해서 약한 암호인지 시험해 본다. 주기적으로 암호의 변경이 필요한가? Chapter 7 Authentication
Chapter 7 Authentication 암호에 대한 공격 - 1/2 공격자는… 특정 계정을 목표로 할 수 있다. 어떤 계정이든지 목표로 할 수 있다. 어떤 시스템에 있는 어떤 계정이든지 목표가 될 수 있다. denial of service (DoS) 공격을 목표로 할 수 있다. 공통된 공격 경로 외부 공격자 일반적 사용자 관리자 하나의 약한 암호만 찾을 수 있으면 된다! Chapter 7 Authentication
Chapter 7 Authentication 암호에 대한 공격 - 2/2 시스템이 3번의 잘못된 암호가 입력될 경우 더 이상의 시도를 막을 경우 얼마나 오랫동안 막을 것인가? 5 초 – (자동 시도를 막기에는 너무 짧다.) 5 분 – (DOS 공격 가능) 적정한 시간은? Chapter 7 Authentication
Chapter 7 Authentication 암호 검증 - 1/5 입력된 암호가 타당한지 결정하기 위해서 컴퓨터는 이것을 다른 값과 비교해야 한다. 입력된 암호를 검증하기 위해서는, 암호를 파일에 보관한다. 암호를 해시한 후에 파일에 보관한다. Salt 해시한 후에 파일에 보관한다. 암호를 파일에 보관하는 것은 잘못된 것이다. Chapter 7 Authentication
Chapter 7 Authentication 암호 검증 - 2/5 암호학적 해법: 암호를 해시(hash) y = hash(password)을 보관 입력된 암호의 해시값을 검증 공격자가 암호 파일을 얻는다고 해도 암호를 찾아낼 수 없다. 물론, 암호 파일을 갖고 있는 공격자가 추측한 x를 갖고 y = hash(x)을 조사한다면 암호를 찾아낼 수 있다. 하지만, 적어도 공격자가 암호 파일을 직접 사용할 수는 없다. Chapter 7 Authentication
Chapter 7 Authentication 암호 검증 - 3/5 공격자가 암호 사전에 있는 모든 x에 대해서 hash(x)를 사전에 계산한다고 하자. 그리고 공격자는 해시 암호가 있는 파일에 접근할 수 있다면 공격자는 사전에 계산한 값을 해시 파일의 값과 비교하면 된다. 우리는 이러한 공격을 막을 수 있을까? 혹은 적어도 공격자의 일을 더욱 어렵게 만들 수 있을까? Chapter 7 Authentication
Chapter 7 Authentication 암호 검증 - 4/5 소금 값(Salt value)은 공격자의 일을 더욱 힘들게 한다. Salt는 CBC 모드의 초기값(IV)와 같은 역할을 한다: IV는 비밀이 아니다. 암호가 주어지면, 랜덤값 s를 선택하고 다음과 같이 해시값을 계산한다. y = hash(pwd, s) 그리고 (s,y)을 암호 파일에 보관한다. Salt 값은 비밀이 아니다. Chapter 7 Authentication
암호 검증 - 5/5 암호를 검증하는 것은 쉽다. 암호 z를 검증하기 위해서, 암호 파일에서 (s,y)를 꺼내온다. hash(z,s)를 계산하고, 그 값을 y와 비교한다. 공격자는 반드시 각 사용자에 대해서 암호 사전의 해시를 별도로 계산해야 한다. 만약 Alice의 암호의 salt는 sa이고, Bob의 암호의 salt는 sb 라고 하자. 그러면 암호 사전을 사용하여 Alice의 암호를 해독하기 위해서는, Trudy는 sa 와 함께 암호 사전의 값들을 해시해야 한다. 하지만 Bob의 암호를 해독하기 위해서는 sb 의 값과 함계 암호 사전의 값들을 해시해야 한다.
Chapter 7 Authentication 암호 해독의 수학 – 1/7 가정 암호는 8개의 문자, 각 문자 당 128가지 가능 그러면 가능한 암호의 수는 1288 = 256 암호 파일에 있는 암호의 수: 210 개의 암호 해시 공격자는 220 개의 공통된 암호를 사전(dictionary) 에 갖고 있다. (암호 해시) 경험에 의하면 암호가 암호 사전에서 발견될 확률은 ¼이다. 필요한 일은 해시의 횟수로서 측정된다고 하자. 비교하는 횟수는 해야될 일에서 제외한다. Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학– 2/7 Case I 공격자는 사전을 사용하지 않고 Alice의 암호를 발견하기를 원한다. Case II 공격자는 사전을 사용해서 Alice의 암호를 발견하기를 원한다. Case III 공격자는 사전을 사용하지 않고 (해시)암호 파일에 있는 어떤 암호이든지 하나를 찾기를 원한다. Case IV 공격자는 사전을 사용해서 (해시)암호 파일에 있는 어떤 암호이든지 하나를 찾기를 원한다. Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학 – 3/7 Case I: password without dictionary 평균 256/2 = 255의 해시를 시도해야 한다. 전수 탐색(exhaustive key search)과 동일 Case II: password with dictionary 기대값은 대략 다음과 같다. 1/4 (219) + 3/4 (255) ≈ 254.6 하지만 실제로는 사전의 있는 모든 암호들을 조사하고 만약 여기서 찾을 수 없으면 포기할 것이다. 따라서 해시 수는 최대 220 이고 성공할 확률은 ¼이다. Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학 – 4/7 Case III: Attack any of 1024(210) pwds in file without dictionary 모든 210개의 암호는 서로 다르다고 가정한다. 암호를 찾아내기 위해서는 255 번의 비교를 해야 한다. Salt가 없다면, 각 암호의 해시가 암호 파일에 있을 확률은 1/210이다. 따라서 총 해시 횟수의 기대값은 255/210 = 245 Salt를 사용한다면, 매번 비교할 때 마다 새로운 해시 계산을 해야 하므로 기대값은 255 이다. Picture would be useful here Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학 – 5/7 Case IV: Attack any of 1024 passwords in file with dictionary 적어도 하나의 암호가 사전에 있을 확률은 1 - (3/4)1024 ≈ 1 따라서 암호가 사전에 없을 경우는 무시할 수 있다. Salt가 없다면, 대략 219/210 = 29 Salt가 있다면, 기대값은 222 보다 작다.(다음 슬리아드에서 설명) Calculation for salted case: Number the passwords in file, pwd1, pwd2, …,pwd1024 Consider checking each pwd in turn. The probability pwd1 is in the dictionary is 1/4 and, if so, expected work (no. of hashes) is 2^19. If pwd1 is not in dictionary but pwd2 is, we do 2^20 hashes (for pwd1) plus an expected 2^19 hashes for pwd2 and so on. We find the expected work factor is (1/4)*(2^19) + (3/4)*((1/4)*(2^20+2^19) + (3/4)*((1/4)*(2*2^20+2^19)+…+(3/4)((1/4)(1023*2^20+2^19)))…) < 2^22 Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학 – 6/7 Salt가 있다면, 기대값은 222보다 작다. y0,y1,…,y1023: 암호 해시 s0,s1,…,s1023: 대응하는 salt 값 d0,d1,…,d(2^20)-1: 사전의 암호들 먼저 Trudy는 h(d0,s0)을 계산하고 이 값을 y0와 비교한다. 그리고 다시 h(d1,s0)을 계산하고 이것을 y0와 비교하고 이 계산을 계속해 나간다. 즉, Trudy는 먼저 y0 를 사전의 모든 암호의 해시값과 비교하고, 또 다시 y1 를 사전의 모든 암호의 해시값과 비교한다. Calculation for salted case: Number the passwords in file, pwd1, pwd2, …,pwd1024 Consider checking each pwd in turn. The probability pwd1 is in the dictionary is 1/4 and, if so, expected work (no. of hashes) is 2^19. If pwd1 is not in dictionary but pwd2 is, we do 2^20 hashes (for pwd1) plus an expected 2^19 hashes for pwd2 and so on. We find the expected work factor is (1/4)*(2^19) + (3/4)*((1/4)*(2^20+2^19) + (3/4)*((1/4)*(2*2^20+2^19)+…+(3/4)((1/4)(1023*2^20+2^19)))…) < 2^22 Chapter 7 Authentication
Chapter 7 Authentication 암호 해독의 수학 – 7/7 만약 y0가 사전에 있다면 (확률은 ¼), Trudy는 219 번의 해시를 하게 된다. 만약 사전에 없다면 (확률은 ¾), Trudy는 220번의 해시를 해야한다. Trudy가 y0를 사전에서 찾으면, 임무가 끝난다. 그렇지 않으면, Trudy는 y1과 비교하기 전에 220 번의 해시를 해야 한다. 이와 같이 계속하면 기대값(해시의 수)은 ¼(219) + ¾•¼(220 +219) + (¾)2•¼(2•220 +219) + … + (¾)1023•¼(1023•220 +219) < 222 Calculation for salted case: Number the passwords in file, pwd1, pwd2, …,pwd1024 Consider checking each pwd in turn. The probability pwd1 is in the dictionary is 1/4 and, if so, expected work (no. of hashes) is 2^19. If pwd1 is not in dictionary but pwd2 is, we do 2^20 hashes (for pwd1) plus an expected 2^19 hashes for pwd2 and so on. We find the expected work factor is (1/4)*(2^19) + (3/4)*((1/4)*(2^20+2^19) + (3/4)*((1/4)*(2*2^20+2^19)+…+(3/4)((1/4)(1023*2^20+2^19)))…) < 2^22 Chapter 7 Authentication
Powers of Two Conversion & Useful Units 2n = 10m m ~ (n/10) * 3 n ~ (m/3) * 10 Fast conversion trick: 210 ~ 103 , 220 ~ 106 , 230 ~ 109 20 = 1, 21 = 2, 22 = 4, 23 = 8, 24 = 16, 25 = 32, 26 = 64, 128, 256, 512 Seconds per day ~216 , seconds per year ~225 Schneier’s Applied Cryptography, p18 Probability to get hit by lightning per day (10-10 , 2-33 ) Number of atoms on earth (1051 , 2170 ) Number of atoms in the universe (1077 , 2265 ) Time until next ice age (14,000, 214 years) Duration until sun goes nova (109 , 230 years) Age of the Universe (1010 , 233 years)
Chapter 7 Authentication 또 다른 암호의 문제들 -1/3 기억하기에 너무 많은 암호들 같은 암호를 또 사용한다. 공격자는 암호를 사용한 다른 곳을 찾아낼 수 있다. 디폴트 암호를 변경하지 않는다. 사회 공학적인 문제 만약 누가 자신이 시스템 관리자라고 하면서 문제를 해결하기 위해서 당신의 암호를 요구한다면 당신을 암호를 알려줄 것인가? - 34%는 알려주고 70%는 조그만 혜택을 받는다면 알려준다. Chapter 7 Authentication
Chapter 7 Authentication 또 다른 암호의 문제들 -2/3 나쁜 암호를 사용하면 누가 피해를 입는가? ATM PIN: 오직 당신 Login password: 시스템의 모든 사용자 Error logs는 암호를 포함할 경우가 거의 대부분이다. Bugs, keystroke logging, spyware, 등등. Chapter 7 Authentication
Chapter 7 Authentication 또 다른 암호의 문제들-3/3 많이 사용되는 암호 해독 도구 Password Crackers Password Portal L0phtCrack and LC4 (Windows) John the Ripper (Unix) 시스템 관리자는 이 도구들을 사용하여 약한 암호가 있는지 시험해 봐야 한다. 암호는 컴퓨터 보안의 기초이다. Chapter 7 Authentication
Chapter 7 Authentication 결론 암호 해독은 너무 쉽다! 하나의 약한 암호는 보안을 해친다. 사용자는 쉽게 약한 암호를 선택한다. Social engineering 공격 등등. 공격자는 모든 이점을 갖고 있다. 수학적으로 볼 때 공격자가 유리하다. 암호는 심각한 보안의 문제이다. Chapter 7 Authentication