분류 전체보기(361)
-
[정보보안] 4. 난수
1. 난수란? 확률적인 현상의 표현이다. 확률변수라고도 한다. 2. 난수의 조건 주기성이 없을 것: 예측이 불가능할 것 무작위성: 같은 확률이 아닐 것 재현 불가능성: 같은 난수가 다시 나타나지 않을 것(이를 진성난수라고 함) 계산시간이 짧을 것(컴퓨터 수행시간) 일양성과 독립성 일양성: 확률의 값은 0과 1 사이의 값인 성질 독립성: 앞에 나온 확률과 무관한 성질 3. 난수 발생 방법 디지털 컴퓨터에 의한 방법 프로그램에 의한 방법 디지털 컴퓨터에 의한 방법 mid square method(MSM: 중앙제곱방식) mid product method(MPM: 중앙승산방식) k product method(KPM: 상수승산방식) 3가지 방법 모두 우수한 방법이다. 프로그램에 의한 방법 Congruential ..
2021.10.25 -
[정보보안] 3. 그 외에 암호 방식
아핀 암호 곱셈과 덧셈을 결합하여 암호화하는 방식. 대표적으로 일차함수를 사용한다. 암호화 예시 평문 - AFFINECIPHER 암호 함수 - $(5x+8)\bmod{26}$ 각 문자 x를 알파벳 순서로 변환해서 값을 계산한다. A = 0, (0 + 8) mod 26 = 8 = I F = 5, (25 + 8) mod 26 = 7 = H I = 8, (40 + 8) mod 26 = 22 = W ... 암호문 : IHHWVCRWFPCG 복호화 예시 암호문 - IHHWVCRWFPCG 역함수 - $a^{-1}(x-b)\bmod{26}$ 26 - 5 = 21 이므로 $21(x-b)\bmod{26}$ 이 된다. I = 8, 21(8 - 8) mod 26 = 0 = A H = 7, 21(7 - 8) mod 26 = ..
2021.10.25 -
[정보보안] 2. 암호의 역사
암호의 분류 암호는 일반적으로 대치 암호와 전치 암호로 구분할 수 있다. 대치 암호 1:1 대치 암호 - 시저 암호 간격 조정 대치 - 시저 암호 + 모듈려 연산 다중 치환 암호 - 바이젤이 제안한 cipher table 전치 암호 행렬 테이블 방식 키 조정 방식(순서) 확장 키 조정 방식(순서 + 간격) Nihilist 암호(순서 + 간격 + 방향) 암호의 종류 대치 암호 치환 암호라고도 부른다. 한 글자를 다른 글자로 대치시키는 암호 방식이다. 대표적으로 시저 암호가 있다. 시저 암호 암호의 시작으로 인정받는 암호이다. 줄리우스 시저가 만들었다. 평문의 숫자나 문자를 다른 숫자나 문자로 일대일 대응시켜 암호화하는 방식이다. 주로 영문자를 암호화할 때 사용하며 n만큼 시프트하여 대치시킨다. 예를 들어 ..
2021.10.25 -
[정보보안] 1. 정보보안 개념
정보보호의 3요소 기밀성 정보는 인가된 사용자만 접근할 수 있어야만 한다는 것이다. 무결성 정보는 보내고자 하는 원형 그대로 보존되어야 한다는 것이다. 가용성 정보는 필요로 할 때 언제든지 접근 가능해야 한다는 것이다. 부가적으로 부인 방지(Accountability), 인증(Authentication), 신뢰성(Reliability) 등이 있다. 정보 시스템에 대한 공격 정보 시스템에 대한 공격은 수동적 공격과 능동적 공격으로 나뉜다. 수동적 공격 수동적 공격(Passive Attack)은 송신자와 수신자 사이에서 전송되는 데이터를 지켜보는 공격이다. 따라서 데이터에 직접적인 공격을 하지 않으며 송수신되는 데이터를 보기만 하는 것이다. 능동적 공격 능동적 공격(Active Attack)은 송신자와 수신..
2021.10.25 -
[Java] Equals and HashCode
equals()와 hashcode()는 서로 다른 객체가 같은지를 판별할 때 사용되는 메서드이다. Object 클래스에 구현되어 있고 따라서 모든 객체가 상속받는다. Object의 equals()는 객체의 참조값을 비교하기 때문에 비교하고자 하는 클래스에서 hashCode()와 함께 오버라이딩해야 한다. hashCode()는 객체의 멤버 변수를 통해 해싱을 통한 해시값을 만들어낸다. 따라서 멤버 변수가 달라지면 hashCode()의 결과도 달라진다. 참고로 Object의 hashCode()는 객체의 주소값으로 해시코드를 만들어내기 때문에 프로그램을 실행할 때마다 변경될 수 있다. JDK1.8부터 java.util.Objects 클래스에 hash() 메서드가 추가됐다. hashCode()를 구현할 때 유용..
2021.10.19 -
[Java] Thread
Thread란? 쓰레드를 알아보기 전에 프로세스에 대해 먼저 이해하도록 하자. 프로세스(Process)는 간단하게 말하면 실행 중인 프로그램이다. 프로그램은 일반적으로 하드 디스크, SSD 등의 저장 장치에 저장되어 있다. 이 프로그램을 실행 시켜 사용하려면 우리는 보통 exe와 같은 실행 파일을 시작시킨다. 그러면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 메모리에 프로그램이 적재되고 우리가 프로그램을 사용할 수 있게 된다. 프로세스는 프로그램을 실행하는데 필요한 데이터, 메모리 공간, 기타 자원과 쓰레드로 구성되어 있다. 그리고 프로세스의 자원을 사용해서 실제로 작업을 수행하는 것이 쓰레드이다. 쓰레드는 한 프로세스에 여러 개가 존재할 수 있다. 한 프로세스에서 여러 쓰레드를 사용하는 프로세스..
2021.10.19