소수로 암호 만들기
소수인지 아닌지 출력
<?
$num = $_POST["num"];
for($i = 2; $num % $i != 0; $i++){
}
if($num == $i)
echo("{$num}은 소수입니다.");
else
echo("{$num}은 소수가 아닙니다.");
?>
<hr><p>
<? show_source(__FILE__); ?>
num까지 소수 출력
<?
$num = $_POST["num"];
for($p = 2; $p<=$num; $p++){
for($i = 2; $p % $i != 0; $i++){
}
if($p == $i)
echo(" {$p}");
}
?>
<hr><p>
<? show_source(__FILE__); ?>
RSA
1977년에 개발되어 1978년에 공포 (Rivest, Shamir, Adleman)
알고리즘
• 평문은 블록으로 암호화
• 암호화 C = Me mod n
• 복호화 M = Cd mod n
공개키 : KU = {e, n}, 개인키 : KR = { d, n }
e, d, n 값 생성
- p, q 선택 : p와 q는 10100 정도의 소수
- n = p * q
- e : GCD(e, ф(n)) = 1인 값을 선택
- d : e * d = 1 mod ф(n)인 값을 계산
실습
공개키와 개인키로 암호문을 만들어보기(서명문 만들기 -> 개인키로 암호화, 공개키로 복호화)
알파벳은 26자 이기때문에 26보다 큰 소수를 찾아야 합니다. 그중에서 저는 31로 했습니다
mod31
공개키 : 4
개인키 : 8
원문 : DO WHAT YOU CAN, WITH WHAT YOU HAVE WHeRe YOU aRe
키맵 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
e A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d
0은 널 값으로 한다.
서명문 : 4 15 23 8 1 20 25 15 21 3 1 14 23 9 20 8 23 8 1 20 25 15 21 8 1 22 5 23 8 0 18 0 25 15 21 27 18 0
서명문 (암호화 한거):AacBHENaMXHScJEBcBHENaMBHVIcBeTeNaMdTe
암호화 : 4 * 8(mod 31) = 1 -> A
복호화 : 1 * 4(mod31) = 4 -> D
공개키와 비밀키의 곱은 1이며 서로 역관계이다
리눅스
vsftp 사용자 계정 제한 설정
사용자 제한 설정(user_list)
• userlist_file(/etc/vsftpd/user_list)에 등록된 계정에 대한 접속제어는 userlist_enable과 userlist_deny에 따라 결정된다.
• userlist_enable의 defaul는 No지만 YUM으로 설치된 경우Yes로 설정되어 있다.
userlist_enable → 이 파일을 쓸지말지만 설정하는 거 (yes 돼 있을 때만 사용함.)
userlist_deny → yes = 등록된 사용자가 접속이 안된다. no = 등록된 사용자만 접속 가능하다.
사용자 제한 설정(ftpusers)
PAM(Pluggable Authentication Module)에 의한 접속 제어는 앞서 본 userlist를 이용한 방법과 유사하다. 이 기능은 /etc/pam.d/vsftpd 파일에 접속 제한 방식을 설정하고 접속이 제한된 계정의 목록은 ftpusers 파일을 이용한다.
pam_service_name = vsftpd
- vsftpd 서버의 PAM 제어를 위한 서비스명을 등록한다. 등록된 이름으로 /etc/pam.d/에 설정 파일이 만들어진다.
/etc/pam.d/vsftpd 파일 설정에 따라 제한 설정이 달라진다. /etc/vsftpd/ftpusers가 목록 파일로 정의되어 있다. 만일 sense 설정을 deny가 아니라 allow 변경하면 ftpuser 파일에 등록된 사용자만 FTP 서버 접속이 허용된다.
/etc/pam.d/vsftpd
: sense [deny | allow] 설정에 따라 /etc/vsftpd/ftpusers 설정이 바뀐다.
• Deny : ftpusers에 등록된 계정은 ftp 접속을 불허한다.
• Allow : ftpusers에 등록된 계정만 ftp 접속을 허용한다.
deny가 기본값
실습
================================================================
ftpusers에 st01을 넣어서 ftp서버에 접속이 되는지 안되는지 확인
ㄴ 아이디는 입력이 되지만 비밀번호를 입력하니까 로그인이 안됨.
user_list에 st01을 넣어서 ftp서버에 접속이 되는지 안되는지 확인
ㄴ 아이디를 입력하자마자 들어가지지 않습니다.( 퍼미션 디나이가 뜬다. )
user_list에 등록된 사람만 접속이 가능하게 바꾸고 확인
ㄴ vsftpd.conf파일에 userlist_deny=NO 추가, user_list에 st01 넣기
/etc/pam.d/vsftpd에 들어가서 deny를 allow로 변경하고, ftpusers에 st01을 넣기
================================================================
DNS
네트워크 사상 최초로 성공한 분산형 데이터베이스
ㄴ 느슨하게 연결되어 있다.
- 분산형 데이터베이스다.
• 수많은 name server들이 계층형 구조로 구조화 되어있다.
ㄴ 계층형구조 : 컴퓨터에서는 트리구조라고 한다. - Application layer protocol입니다.
- 다른 app layer protocol들이 HTTP, FTP, SMTP 등 사용자가 제공한 호스트네임을 ip로 변환하는데 이용한다.
• 인터넷의 가장 중요한 기능 중의 하나
• Network edge에 구현된다. - IP와 이름 간 mapping → 내가 이름을 가지고 가면 ip로 바꿔준다.(반대도 사용가능하지만 가치가 없기 때문에 등록을 안 한다.)
- 호스트명을 IP 주소로 변환한다.
- 호스트에 얼리아 싱 (host aliasing)
• 정식 (canonical) 호스트명
• 별칭(aliasing) 호스트명
• DNS는 IP 뿐 아니라 정식 호스트명을 얻기 위해 이용되기도 한다. (ip를 알아야 한다.) - DNS를 중앙집중식으로 하지 않는 이유
• 서버 장애 (인터넷 다운…)
• Traffic의 집중
• 중앙 서버까지의 거리
• 관리
. 이 생략되어 있다.(. 은 root)
. 안에 com이라는 도메인 안에 google이름을 등록한 것. www은 컴퓨터 이름이다.
ㄴ google을 com이라는 도메인에 이름을 등록한 거.
도메인명은 추상적인 거
DNS구조
하위 네임서버의 정보는 자신의 상위 네임서버에 등록되어 있습니다.
client의 chrome에서 www.itclass.co.kr에 접속하기 위한 DNS응답과정
local dns server : 192.168;10.##1
client : 192.168.10.##0
- client가 local dns server에게 www.itclass.co.kr의 ip를 질의
- local dns server가 root dns server에게 kr dns server의 ip를 질의
- root dns server 가 local dns server에게 kr dns server의 ip를 응답
- local dns server가 kr dns server에게 co.kr의 ip를 질의
- kr dns server가 local dns server에게 co.kr의 ip를 응답.
- local dns server가 co.kr dns server에게 itclass.co.kr의 ip를 질의.
- co.kr dns server가 local dns server에게 itclass.co.kr의 ip를 응답.
- local dns server가 itclass.co.kr에게 www.itclass.co.kr의 ip를 질의
- itclass.co.kr가 local dns server에게 www.itclass.co.kr의 ip를 응답.
- local dns server가 client에게 www.itclass.co.kr의 ip를 응답.
DNS 서버 설치&확인
Bind 서버설치확인 및 설치
# dnf list bind bind-utils
# dnf install –y bind bind-utils
'kh교육' 카테고리의 다른 글
(20250808032)다중 도메인서버, 전자서명, PKI 폼,배열 (2) | 2025.08.08 |
---|---|
(20250807031)DNS서버, 키분배,해쉬함수 (1) | 2025.08.07 |
(20250805029)Redistribution활용 실습, FTP서버 (4) | 2025.08.05 |
(20250804028)router-redistribute, 암호학 (3) | 2025.08.04 |
(20250801027)eigrp,암호학,php (3) | 2025.08.02 |