보안
보호(protection)
- 컴퓨터 시스템의 자원에 대해서 프로그램, 프로세스, 사용자 등의 접근을 제어하는 것
- 내부 정보 유출 방지(내부적 위협)
- 접근 제어 기법 적용
보안(Security)
- 시스템의 자원인 정보, 데이터 등을 불법적인 노출, 변조, 파괴 등으로부터 보호하고, 정보의 처리 과정, 전송 단계에서 보호하는 것
- 외부의 공격 방어(외부적 위협)
보안의 범주
-
외부 보안
- 천재지변이나 외부 침입자로부터 보안
- 시설 보안
- 운용 보안(operations security)
- 관리자의 여러 정책과 통제 절차에 따른 보안
- 자원 및 사용자 별 부류 지정 및 접근 인가(authorization)
- 운용보안 요소
- 위협: 보안 통제 위반으로 손해를 발생시킬 수 있는 사건
- 취약성: 보안 통제를 위반할 가능성이 있는 시스템의 약점
- 자산: 보호대상인 정보시스템 설비, 인력, 프로세스
- 보안 통제
- 위험 감소를 위해 만들어진 정책, 절차, 업무, 조직 구조
-
내부 보안
- 컴퓨터 시스템의 신뢰성을 높이고 보안 문제를 해결하는 것
- 불법 사용자로 부터 자원 접근 제어
- 조직에 속한 사람 중심으로 위협을 정확하게 설정하고 내부 프로세스와 정책 설정
-
사용자 인터페이스 보안
- 신원 확인 후 인증된 사용자의 자원 접근 허용
보안 위협의 유형
- 흐름 차단
- 시스템의 일부 파괴 또는 사용불가 상태 => 가용성 위협
- 가로채기
- 변조
- 위조
정보 보안
- 정보를 다양한 위협으로부터 보호하는 것
- 인가되지 않은 접근, 사용, 폭로, 붕괴, 수정, 파괴로부터 정보와 정보 시스템을 보호해 기밀성, 무결성, 가용성을 제공하는 것
- 인가된 사용자만이(기밀성) 정확하고 완전한 정보로(무결성) 필요할 때 접근할 수 있도록(가용성) 하는 일련의 작업
정보 보안의 주요 목표
-
기밀성
- 허락되지 않은 사용자 또는 객체가 정보의 내용을 알 수 없도록 하는 것
- 원치않는 정보의 공개를 막는 것 => 프라이버시 보호와 관련
-
무결성
- 허락되지 않은 사용자 또는 객체가 정보를 함부로 수정할 수 없도록 하는 것
-
가용성
- 허락된 사용자 또는 객체가 정보에 접근하려 하고자 할 때 이것이 방해받지 않도록 하는 것
- 가용성 방해 공격의 예
- 서비스 거부 공격(DDoS 공격, Distributed Denial of Service Attack)
네트워크 보안
- 각종 프로토콜과 네트워크를 통해 연결된 수많은 호스트들 사이에서 정보의 유출과 불법적인 서비스 이용을 방지하는 것
- 네트워크 환경에서 전달되는 정보의 위조, 변조, 조작, 유출, 무단침입 등의 불법 행위로부터 정보를 보호하는 것
네트워크 보안 위협
- 인증 위협
- 제3자가 정보와 데이터의 전송을 가로막아(흐름차단), 시스ㅔㅁ 일부 파괴 또는 사용 불가
- 기밀성 위협
- 허가받지 않은 제3자가 전송 중간에 정보와 데이터의 가로채기
- 변조에 따른 무결성 위협
- 제3자가 시스템의 자원에 불법으로 접근한 데이터의 변조
- 위조에 의한 신뢰성 위협
- 제3자가 시스템에 불법적으로 접근하여 거짓 정보 등을 삽입한 위조
네트워크 보안 서비스
-
네트워크 보안을 강화하기 위한 제반 서비스
-
인증
- 수신된 데이터의 실체가 원하는 실체라는 것을 확인
- 대등 실체 인증
- 통신 당사자 간의 신분 확인과 자격 유무 점검
- 데이터 발신처 인증
-
접근제어
- 비인가된 사용자의 위협으로부터 정보 자원 보호
-
기밀성
- 네트워크를 통해서 전달되는 정보의 비인가 사용자나 주체에 대한 노출 방지
-
데이터 무결성
- 데이터 내용의 비인가 방식에 따른 변경 또는 삭제 방지
-
부인방지
- 데이터의 발신자 및 수신자의 발신 또는 수신 사실 부인 방지
암호화
암호화
- 제3자는 읽을 수 없도록 평문을 부호화하여 암호문으로 만드는 것
복호화
- 암호문을 평문으로 역부호화하는 것
대칭키 암호화
- 암호화 키와 복호화 키가 동일
- 동일한 키를 사용하여 암호화하고 복호화하는 방식
- 키의 안전한 전송 어려움
- 대칭키 암호화의 예
DES(Data Encryption Standard) 알고리즘
- 64비트 평문을 64비트 암호문으로 암호화
- 56비트 길이의 키 사용
AES(Advanced Encryption Standard) 알고리즘
- DES를 대체하기 위해 도입된 대칭키 알고리즘
- 128비트 평문을 128비트로 암호화
- 10/12/14 라운드별로 128/192/256비트 키 길이 사용
비대칭 암호화
- 암호화에 사용된 키와 복호화에 사용되는 키가 다른 방식
- 공개키를 사용한 암호화 => 공개키 외부에 공개
- 비밀키를 사용한 복호화
RSA(Rivet, Shamir, Adelman) 암호화 알고리즘
- 대표적인 비대칭 암호화 알고리즘
- 비대칭 암호화
- 공개키는 n,e라는 두 정수로 구성, 비밀키는 n,d라는 두 정수로 구성
- 임의의 두 소수 p와 q를 정하고 n=p*q
- Φ(n) = (p-1)*(q-1)
- (e*d) mod Φ(n) =1
무결성
무결성 검증 방식
- 데이터 전송 오류 감지
- 체크섬
- CRC(순환중복검사)
- 송신측에서는 CRC값을 데이터에 붙인 코드워드를 전송하며, 수신측에서는 수신된 코드워드에서 CRC값을 이용하여 에러 발견
- 임의 변경 감지
- 해쉬함수
- 임의의 데이터로부터 고정된 길이의 짧은 해쉬 코드 생성
- MD5 알고리즘
- 입력 데이터를 128비트 메시지로 축약하는 해쉬 함수
- CRC와 유사한 개념 사용
- SHA-1 보다 안전성이 약간 떨어짐
- SHA(Secure Hash Algorithm)
- MD5를 대체하고 있는 해쉬 함수
- SHA-1, SHA-2, SHA-3
- 해쉬 함수를 이용한 파일 무결성 검사
- 전송 파일 데이터에 해쉬 함수를 적용하여 메시지 다이제스 생성하여 함께 전달
인증
인증
- 정보를 접근하는 주체가 식별된 본인이 맞다는 것을 시스템에 증명해 보이는 과정
- 시스템이 본인임을 주장하는 사용자를 인정해주는 과정
인가
인증 기술의 종류
- 지식기반 인증기술
- 사용자가 알고 있는 정보에 기반한 인증
- PIN, 비밀번호, 계좌번호 등을 인증수단으로 사용
- 소유기반 인증기술
- 사용자가 소유하고 있는 도구에 기반한 인증
- OTP, 스마트 카드키 등
- 존재기반 인증기술
- 사용자의 신체나 신체의 특징에 기반한 인증
- 홍체인식, 지문인식, 음성인식, 얼굴인식 등
블록체인
- 증빙과 가치 전달에 관련 작업
- 신뢰하는 제3자 기관 배제
- 다수의 자발적 참여자에 의한 공개된 분산 원장 시스템
- 모든 거래에 대한 공개적 분산 원장 관리
해결 문제
- 어떻게 분산해서 처리하고 저장하도록 할 것인가
- 누가 보내는지 어떻게 확인할 것인가
- 누가 봉인처리하는 권한을 가질 것인가
- 어떻게 자발적으로 분산원장 관리에 참여하도록 할 것인가
- 어떻게 이중지불 등의 부정행위를 방지할 것인가
블록체인 구현 기술
P2P 네트워크
- 어떻게 분산해서 처리하고 저장하도록 할 것인가
- 인접한 노드(블록체인 참여 컴퓨터)에 정보 전달
- 개별 트랜잭션은 블록체인 네트워크에 특정 노드에 전달
비대칭 암호화 기술
- 누가 보내는지 어떻게 확인할 것인가
- 비밀키와 공개키
- 개인은 비밀키와 공개키 생성
거래 데이터 생성 및 확인
- 거래 데이터 생성 후 해싱한 요약정보를 비밀키로 서명
- 공개키와 함께 거래 데이터 전송
- 요약정보 재생성 결과와 공개키로 해독한 요약정보 비교 검증
블록생성 합의 방법
- 누가 봉인처리하는 권한을 가질 것인가
- 작업증명
- 해싱 사용
- 주어진 데이터를 일정 길이의 무작위적인 이진수 데이터로 변환
- 역방향 예측불가
- ex) SHA2, SHA3
- 공개 원장에 기록할 권리 획득
- 일정 개수의 0이 나올 때 유효한 작업 증명
- 전체 블록체인 네트워크에 전송
- 승인이 되면 블록체인에 추가
- 승인시 보상(가상화폐 지급)
- 블록체인의 블록 확장 충돌 해결
- 동시에 여로 노드가 블록 생성 성공
- 드물지만 가능
- Bitcoin은 10분에 한번 정도 성공하도록 난이도 조정
- 새로운 노드가 추가되면 긴 체인 승리
- Bitcoin: 승자 독식
- Ethereum: 일부 분배
채굴
- 어떻게 자발적으로 분산원장 관리에 참여하도록 할 것인가
- 모든 블록과 거래 정보 저장 및 블록 생성 참여
- 블록생성 성공 사례 + 수수료
- Bitcoin
- 4년마다 1/2감소, 10분 간격
- 2040년 발행종료 예정
- Ethereum
보안 및 안정성
- 어떻게 이중지불 등의 부정행위를 방지할 것인가
- 블록 등록에 전체 반이상 자동 합의
- 부정을 위해 전체 computing power의 51% 필요
- timestamp 정보 포함
- transaction의 블록 등록 후 지연 수용
- 비트코인 6번 confirmation 필요 - 최소 한시간 거래 확인 처리 시간 필요
채굴
- 풀 노드: 전체 블록 저장, 채굴 참여
- 채굴 알고리즘
이더리움
스마트 계약
- 이더리움 네트워크에서 동작하는 가상머신(EVM)에서 동작하는 객체
- 조건에 확인하여 다른 계좌로 송금 등의 처리 가능
- 외부사용계좌에서 생성해서 네트워크에 등록(비용 부담)
- 스마트 계약의 메소드를 호출하는 계좌는 비용 부담
- 복잡한 분산 앱 개발 가능
- Solidity: 이더리움에서 사용하는 smart contract 프로그래밍 언어
블록체인 기술 발전
- 1세대 블록체인
- 2세대 블록체인
- 3세대 블록체인
- 에이다, 이오스, 퀀텀, 카르다노, ..
- 지분증명
- 자체 의사결정기능, 유연한 soft fork