오늘 해야할 일
5. 시험공부 시작
6. ISA계좌 개설
7. 데이터베이스 과제 제출
한 일
2. 랜섬웨어 AES와 RSA 직접 구현해보기_구현하지 않는 것으로. 원리를 이해하는데에는 좋지만 사용할 수 없다
3. nacl.secret.box와 nacl.public.box의 내부 모듈 분석_공개키암호화는 타원곡선암호화 알고리즘인 Curve25519를 사용하며, 대칭키암호화는 XSalsa20 stream cipher를 사용한다.
스트림 암호는 특정 단위로 암호화하는 블록 암호와 비교된다. 스트림 암호는 두개의 값으로 키와 nonce를 입력받고 nonce는 공개해도 좋다. 스트림 암호 알고리즘을 통해 키와 nonce를 이용해 Key Stream을 생성한 뒤 평문과 XOR하면 암호문이 나오고, 그 암호문을 다시 키스트림과 XOR하면 평문이 나온다. 주의할 점은 키와 논스를 따로따로 재사용은 가능하지만 동시에 재사용은 하면 안된다.
스트림 암호는 크게 stateful stream cipher과 counter-based stream cipher로 나뉜다.
stateful stream cipher에 해당하는 RC4의 경우 키와 nonce로 init한 후 키스트림 비트를 생성하는 것 까지는 동일하나, 다음에 암호화를 하기위해 키와 nonce로 init된 상태를 매번 바꾸는 갱신함수(update)를 통해 상태값을 갱신하여 암호화를 진행한다.
counter-based stream cipher의 경우 키와 nonce에 추가로 counter값을 이용하여 key stream 조각들을 생성하며 하드웨어 지향적 스트림 암호와 소프트웨어 지향적 스트림 암호 두가지로 분류된다.
하드웨어 지향적 스트림 암호는 이전부터 블록단위 암호화보다 bit단위가 비용이 적어 선호된 방법으로 FSR(되먹임 자리이동 레지스터)되먹임 함수를 이용하며 반복패턴을 피해야하고 주기가 길어야한다), LFSR(선형FSR)_FSR의 주기 최대화, filtered LFSR(필터링LFSR)_LFSR의 출력비트를 비선형함수로 변환, NFSR(비선형 FSR), Grain-128a_LFSR과 NFSR을 사용, A5/1_2G이동통신 표준 음성암호화 암호로 LFSR사용
소프트웨어 지향적 스트림 암호는 CPU의 발전으로 바이트나 워드를 다루는 것으로 RC4내부상태배열을 키를 이용해 초기화(키 스케줄링 알고리즘), Salsa20이 있다.
Salsa20/round은 하나의 키, 하나의 논스, 카운터값으로 이루어진 512비트 블록을 핵심 알고리즘을 이용해 변환하고 그 결과를 원래 512비트 블록과 더해 하나의 키스트림 블록을 산출한다. 이중라운드를 특정 횟수만큼 반복한다. Salsa20/8의 공격으로는 통계적 편향을 확인해 논스, 카운터, 키의 정보로 키스트림 계산을 거꾸로 수행하는데 키의 일부를 제대로 추측했을 경우 편향된 비트가 나타난다.
결론적으로 nacl의 대칭키 암호화 모듈인 nacl.secret.box에 사용되는 알고리즘 Salsa20 스트림 암호화 기법의 보안성을 정리하면
위에 언급한 Salsa20/8의 공격은 실제 추측이 맞은지 확인하려면 키의 220비트가 필요하며 키스트림 블록의 쌍 2^31개가 필요하며, 220비트 이후 36개피트는 brute force로 알아낼 수 있다고 한다. 라운드 횟수에 따라 Salsa20/8, Salsa20/12, Salsa20/20이 있으며 기본 라운드 수는 20이다.
Salsa20/12의 경우 해밍무게 모델을 적용한 상관도 전력분석 공격을 시도한 논문 "소프트웨어 기반 스트림 암호 Salsa20/12에 대한 상관도 전력분석 공격"이 있다.
다만 기본 라운드 횟수 20을 가지는 모델에 대한 공격은 개인적으로 찾지 못했다.
nacl에서는 nacl.secret.box에서 Salsa외에도 범용 해시 일회용 인증코드 알고리즘인 Poly1305 MAC을 사용하여 내용물 조작시도를 예외로 잡아낼 수 있다. 또한 Salsa알고리즘의 nonce 크기 64bit보다 긴 192bit의 nonce를 사용한 XSalsa20을 사용한다. 또한 더 긴 nonce를 randombytes_buf()메서드로 설정할 수 있다.
즉, 공격사례가 없는 Salsa20/20모델을 발전시킨 XSalsa20기반의 nacl.secret.box모듈은 랜섬웨어 대칭키 암호화 사용에 적합해 보인다.
1. 학습공동체 공부
1-1. chap3~4문제 틀린 개념 정리
-데이터베이스 시스템=DBMS+DB
-런타임 데이터베이스 처리기: DML프리컴파일러로부터 전달받은 데이터처리 요구를 데이터베이스에서 실제 실행
-저장 데이터 관리자: 운영체제의 도움을 받아 사용자DB와 시스템DB를 관리하고 실제 접근
-개념적 데이터 모델링: 현실세계->개념세계
-논리적 데이터 모델링: 개념세계->DB
-매핑 카디널리티: 관계를 맺는 두 개체 집합에서 각 개체 인스턴스가 연관성을 맺고있는 상대 개체 집합의 인스턴스 개수. 즉, 두개 연결하는 키 속성의 인스턴스 개수.
1-2. 지난주차 데이터 모델링에서 햇갈리는 개념 전부 요약정리.
데이터 모델링은 현실세계->개념세계로 모델링하는 개념적 데이터 모델링과 개념세계->DB로 모델링하는 논리적 데이터 모델링으로 구분된다.
개념적 데이터 모델링의 예시로 개체-관계(E-R) 모델이 있으며 이 모델로 표현한 결과를 E-R 다이어그램이라고 한다.
논리적 데이터 모델링은 개념적 데이터 모델링의 결과인 E-R다이어그램을 실제 DB에 접근하게끔 스키마를 모델링하는 것으로 2차원 테이블구조의 관계 데이터 모델, 트리구조의 계층 데이터 모델, 그래프구조의 네트워크 데이터 모델, 객체개념의 객체지향 데이터 모델, 객제지향+관계 데이터모델인 객체관계 데이터 모델이 있다.
1-3. chap 5~6 공부 및 요점정리. 연습문제 풀이는 다음주 회의 전에 시간날 때 풀이 예정
8. 취창업 진로세미나 워크시트지 작성시작
2주차까진 작성했는데, 3주차에 필요한 자료들이 업로드가 안돼있어 내일 강의시간 때 물어볼 예정.
4. pay1oad 1~2주차 중간발표
9주차 계획에서 파일전송은 금방할 수 있으니 다른 계획을 병행하는 것이 좋겠다 라는 피드백
10주차 계획에서 랜섬웨어 운영체제 환경을 명확히 하는 것이 좋고, 랜섬웨어 프로그램 자체가 사라지는 경우도 있으니 확인해두면 좋을 것 같다. 라는 피드백