Bài giảng, mật mã hóa hiện đại, chương 4
Trang 1VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
TS Phạm Việt Hà
MẬT MÃ HÓA HIỆN ĐẠI
Chương 4: Hệ mật khóa công khai
MẬT MÃ HÓA HIỆN ĐẠI
Chương 4: Hệ mật khóa công khai
4 Hệ mật khoá công khai
4.1 Hệ mật RSA 4.2 Hạ tầng khóa công khai PKI
Trang 2Trang3 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.1 Hệ mật RSA
RSA là mã công khai được sáng tạo bởi Rivest, Shamir & Adleman ở MIT (Trường Đại học Công nghệ Massachusetts) vào năm 1977
RSA là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay
RSA dựa trên các phép toán lũy thừa trong trường hữu hạn các số nguyên theo modulo nguyên tố Cụ thể, mã hoá hay giải mã là các phép toán luỹ thừa theo modulo số rất lớn
Việc thám mã, tức là tìm khoá riêng khi biết khoá công khai, dựa trên bài toán khó làphân tích một số rất lớn đó ra thừa số nguyên tố Nếu không có thông tin gì, thì ta phải lần lượt kiểm tra tính chia hết của số
đó cho tất cả các số nguyên tố nhỏ hơn căn của nó Đây là việc làm không khả thi!
4.1 Hệ mật RSA
Người ta chứng minh được rằng, phép lũy thừa cần O((log n)3) phép toán, nên có thể coi lũy thừa là bài toán dễ
Cần chú ý rằng ở đây ta sử dụng các số rất lớn khoảng 1024 bit, tức là cỡ
10350
Tính an toàn dựa vào độ khó của bài toán phân tích ra thừa số các số lớn Bài toán phân tích ra thừa số yêu cầu O(elogn log logn) phép toán, đây là bài toán khó
Trang 3Trang5 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
Khởi tạo khoá RSA
• Mỗi người sử dụng tạo một cặp khoá công khai – riêng như sau:
– Chọn ngẫu nhiên 2 số nguyên tố lớn p và q
– Tính số làm modulo của hệ thống: N = p.q
• Ta đã biết Ф(N)=(p-1)(q-1)
• Và có thể dùng Định lý Trung Hoa để giảm bớt tính toán
• Chọn ngẫu nhiên khoá mã e
• Trong đó 1<e< Ф(N), gcd(e,Ф(N))=1
• Giải phương trình sau để tìm khoá giải mã d sao cho
• e.d=1 mod Ф(N) với 0≤d≤ Ф(N)
• In khoá mã công khai KU={e,N}
• Giữ khoá riêng bí mật KR={d,p,q}
4.1 Hệ mật RSA
Sử dụng RSA
• Để mã hoá mẩu tin, người gủi:
– Lấy khoá công khai của người nhận KU={e,N}
– Tính C=Memod N, trong đó 0≤M<N
• Để giải mã hoá bản mã, người sở hữu nhận:
– Sử dụng khóa riêng KR={d,p,q}
– Tính M=Cdmod N
• Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ
Trang 4Trang7 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.1 Hệ mật RSA
Cơ sở của RSA
• Theo Định lý Ole
– a(n) mod N = 1 trong đó gcd(a,N)=1
– Ta có N=p.q
– Ф(N)=(p-1)(q-1)
– e.d=1 mod Ф(N)
– e.d=1+k.Ф(N) đối với một giá trị k nào đó
• Suy ra
– Cd= (Me)d= M1+k.(N)= M1.(M(n))k suy ra
– CdmodN = M1.(1)kmodN = M1modN = M modN
4.1 Hệ mật RSA
Ví dụ
• Chọn các số nguyên tố: p=17& q=11.
• Tính n = pq, n = 17×11=187
• Tính Ф(n)=(p–1)(q-1)=16×10=160
• Chọn e : gcd(e,160)=1; Lấy e=7
• Xác định d: de=1 mod 160 và d < 160
• Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
• In khoá công khai KU={7,187}
• Giữ khoá riêng bí mật KR={23,17,11}
Trang 5Trang9 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
Ví dụ áp dụng mã RSA trên như sau:
• Cho mẩu tin M = 88 (vậy 88<187)
• Mã C = 887mod 187 = 11
• Giải mã M = 1123 mod 187 = 88
• Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
– Tính 1123mod 11 = 0
– Tính 1123mod 17 = (-6)23mod 17 = (-6)16(-6)4(-6)2(-6) mod 17 =
c1= 3
Vì (-6)2mod 17 = 2, nên (-6)4mod 17 = 4, (-6)8mod 17 = -1, (-6)16mod 17 = 1
– 11-1mod 17 = (-6)-1mod 17 = 14 nên 11(11-1mod 17) = 11(14 mod 17) = c2= 154
– Vậy M = (3.154) mod 187 = 462 mod 187 = 88
4.1 Hệ mật RSA
Mã hiệu quả:
• Mã sử dụng lũy thừa của khoá công khai e, nếu giá trị của e nhỏ thì tính toán sẽ nhanh, nhưng dễ bị tấn công Thường chọn e nhỏ hơn hoặc bằng 65537 (216-1), tức là độ dài khoá công khai là 16 bit
Chẳng hạn trong ví dụ trên ta có thể lựa chọn e = 23 hoặc e = 7
• Ta có thể tính mã hoá nhanh, nếu biết n=pq và sử dụng Định lý phần
dư Trung Hoa với mẩu tin M theo các Modulo p và q khác nhau Nếu khoá công khai e cố định thì cần tin tưởng rằng khi chọn n ta luôn có gcd(e,Ф(n)) = 1 Loại bỏ mọi p, q mà làm cho Ф(n) không nguyên tố cùng nhau với e
Trang 6Trang11 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.1 Hệ mật RSA
Giải mã hiệu quả:
• Có thể sử dụng Định lý phần dư Trung Hoa để tính theo mod p và q, sau
đó kết hợp lại để tìm ra bản rõ Vì ở đây người sử dụng khoá riêng biết được p và q, do đó có thể sử dụng kỹ thuật này
• Nếu sử dụng định lý phần dư Trung Hoa để giải mã thì hiệu quả là nhanh gấp 4 lần so với giải mã tính trực tiếp
4.1 Hệ mật RSA
Sinh khoá RSA
• Người sử dụng RSA cần phải xác định ngẫu nhiên 2 số nguyên tố rất lớn
p, q thông thường khoảng 512 bit
• Sau khi chọn được một khoá e hoặc d nguyên tố cùng nhau với Ф(n), dễ dàng tính được khoá kia chính là số nghịch đảo của nó qua thuật toán Euclide mở rộng
Trang 7Trang13 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
An toàn của RSA
• Trên thực tế có nhiều cách tấn công khác nhau đối với mã công khai RSA như sau:
– Tìm kiếm khoá bằng phương pháp vét cạn, phương pháp này không khả thi với kích thước đủ lớn của các số
– Tấn công bằng toán học dựa vào độ khó việc tính Ф(n) bằng cách phân tích n thành hai số nguyên tố p và q hoặc tìm cách tính trực tiếp Ф(n)
– Trong quá trình nghiên cứu việc thám mã người ta đề xuất kiểu tấn công thời gian trong khi giải mã, tức là căn cứ vào tốc độ mã hoá và giải mã các mẩu tin cho trước mà phán đoán các thông tin
về khoá
4.2 Hạ tầng khóa công khai
Bob có một khóa đơn bí mật
Nếu Alice muốn gửi cho Bob một bản tin bí mật
• Bob gửi cho Alice một bản ghi về khóa bí mật của mình
• Alice mã hóa bản tin với khóa bí mật của Bob
• Bob giải mã bản tin với khóa bí mật của mình
Vấn đề đặt ra:
• Làm sao Bob có thể gửi khóa bí mật cho Alice?
• Nếu trong trường hợp Alice là thám mã?
• Nếu Alice, Bob, Charley, và Dan cần trao đổi thông tin? Khi đó cần n! khóa
Trang 8Trang15 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.2 Hạ tầng khóa công khai
Bob có đồng thời 2 khóa
Một khóa để mã hóa và chỉ có duy nhất một khóa khác có thể giải mã
Bob giữ khóa riêng bí mật (Private Key)
Bob chia sẻ khóa công khai (Public Key)
Nếu Alice cần gửi cho Bob một bản tin
• Bob gửi cho Alice một bản ghi của Public Key
• Alice mã hóa bản tin với Khóa công khai của Bob
• Bob giải mã bản tin với khóa riêng bí mật của mình
4.2 Hạ tầng khóa công khai
Bob có đồng thời 2 khóa
Ưu điểm:
• Bob có thể phân phối khóa công khai
• Nếu Alice là một thám mã thì cũng không thể làm ảnh hưởng đến Bob với khóa công khai (không thể tìm ra khóa riêng nếu chỉ biết khóa công khai)
• Bob chỉ cần một cặp khóa cho tất cả các giao dịch
• Bob có thể ký chữ ký điện tử lên bản tin được
mã hóa với khóa riêng bí mật
Vấn đề:
• Làm thế nào Alice thực sự biết được Alice đang
sử dụng khóa công khai của Bob
Trang 9Trang17 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
Tổ chức cấp chứng thư số (CA) là một bên thứ
3 đáng tin cậy
Tổ chức cấp chứng thư số (CA) cấp các chứng thư số
Hạ tầng thiết bị của hệ thống cung cấp chứng thư số được gọi là hạ tầng khóa công khai PKI
Một chứng thư số bao gồm:
• Khóa công khai của Bob
• Tên, địa chỉ và các thông tin của Bob
• Ngày hết hạn và số serial
• Tên tổ chức cấp chứng thư số,…
Một chứng thư số được ký bởi khóa riêng bí mật của CA để đảm bảo tính bảo mật
Mọi cá nhân đều có khóa công khai của CA
Public Private
4.2 Hạ tầng khóa công khai
• Nhận thực: chống lại các truy nhập không phép, có thể tích hợp vào trang web, truy nhập từ xa, mạng không dây
• Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
• Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không
Chữ ký điện tử:
• Người gửi sẽ mã hoá đoạn mã bǎm (hash - một dạng rút gọn của thông điệp nguyên bản - với một số thuật toán (ví dụ như MD5, SHA-1 )) bằng khoá riêng của mình và người nhận sẽ dùng khoá công khai của người gửi để giải đoạn mã bǎm của người gửi, sau đó so sánh với đoạn mã bǎm của thông điệp nhận được
• Nếu trùng nhau thì người nhận có thể tin rằng thông điệp nhận được không bị thay đổi trong quá trình truyền tải trên mạng và xuất phát từ người gửi xác định Cách thực hiện này được gọi là chữ ký điện tử-chữ kí số
Trang 10Trang19 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.2 Hạ tầng khóa công khai
Chữ ký điện tử:
Quá trình tạo chữ kí số
• Đoạn dữ liệu cần được bảo mật được đưa qua hàm băm (hashing), kết quả của hàm băm là một đoạn bit đảm bảo 2 tính chất:
– tính duy nhất: mỗi một đoạn dữ liệu khác nhau thì sẽ có một đoạn bit khác nhau, không trùng lặp, có độ dài không đổi
– tính một chiều: từ đoạn bit đặc trưng này, không suy ngược lại được nối dung đoạn văn bản
• Đoạn bit đặc trưng này được mã hoá bằng khoá bí mật của người gửi và được đính kèm vào "văn bản", rồi gửi đến người nhận – đoạn bit được mã hoá này chính là chữ ký số (digital signature)
-BEGIN SIGNATURE -IQB1AwUBMVSiA5QYCuMfgNYjAQFAKgL/ZkBfbeNEsbthba4BlrcnjaqbcKgNv+
a5kr4537y8RCd+RHm75yYh5xxA1ojELwNhhb7cltrp2V7LlOnAelws4S87UX80c LBtBcN6AACf11qymC2h+Rb2j5SU+rmXWru+=QFMx
-END
SIGNATURE -4.2 Hạ tầng khóa công khai
Tiến trình ký:
Trang 11Trang21 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
Kiểm tra chữ kí:
Từ phía người nhận, khi nhận được "văn bản" kèm chữ ký số, tiến trình kiểm tra sẽ như sau:
• Lấy đoạn dữ liệu gốc, đưa qua hàm băm đã nói ở trên, thu được một đoạn bit là kết quả băm
• Lấy đoạn bit được mã hoá (chữ ký số), giải mã bằng khoá công khai của người gửi, thu được đoạn bit đặc trưng
• So sánh đoạn bit vừa thu được với đoạn bit thu được trong bước 1, nếu 2 đoạn trùng nhau và tin rằng khoá công khai chắc chắn là do người gửi phát hành thì kết luận:
– dữ liệu nhận được có tính toàn vẹn (vì kết quả băm là duy nhât, một chiều)
– dữ liệu nhận được là do chính người gửi gửi đi vì chỉ duy nhất người gửi mới có khoá bí mật phù hợp với khoá công khai đã được sử dụng để giải mã Như vậy tính chống từ chối và tính xác thực được kiểm tra và xác nhận Lúc này người nhận tin rằng, khoá công khai đó đại diện hợp pháp cho người gửi
4.2 Hạ tầng khóa công khai
Tiến trình kiểm tra chữ ký:
Trang 12Trang23 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.2 Hạ tầng khóa công khai
Chứng thư số:
Để giải quyết câu hỏi "khoá công khai có đúng là của người gửi văn bản không
và khoá công khai này lấy ở đâu để có thể tin cậy được?", vấn đề được giải quyết như sau:
• Xây dựng một hệ thống tập trung có thể cấp phát cặp khoá riêng - công khai cho toàn bộ người tham gia giao dịch
• Chuyển giao phần khoá bí mật cho người sở hữu và đảm bảo rằng chỉ duy nhất anh ta biết được khoá này
• Gắn liền thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công tác, và một số thông tin khác) của người sở hữu cặp khoá vào phần khoá công khai để tạo thành một file dữ liệu – đây chính là phần nội dung của chứng thư số
• Để đảm bảo tính toàn vẹn và có thể tin cậy dữ liệu nhận được, hệ thống phát hành sử dụng khoá riêng của mình tạo và đính kèm một chữ ký điện tử lên file
dữ liệu nói trên Đoạn nội dung (chứa thông tin cá nhân và khoá công khai của người sở hữu) có đính kèm chữ ký số của hệ thống phát hành cặp khoá được gọi là chứng thư số của người sở hữu cặp khoá
4.2 Hạ tầng khóa công khai
Chứng thư số:
Hệ thống cấp khoá và chứng thực rằng cặp khoá đó đại diện cho người tham gia giao dịch được gọi là hệ thống chứng thực số (Certificate Authority - CA) Như vậy, các vấn đề sau được giải quyết:
• Khi có chứng thư số, ta có được khoá công khai của người giao dịch, khoá công khai này được đính kèm với thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công tác, và một số thông tin khác) của người giao dịch
• Việc chứng thực rằng khoá công khai này là hợp lệ và là đại diện cho người tham gia giao dịch được chứng thực bởi hệ thống CA
• Tất cả các bên giao dịch muốn kiểm tra tính đúng đắn, hợp lệ về nội dung của chứng thư số đều xuất phát từ việc tin cậy vào chữ ký số của CA trên chứng thư số (điều này cũng hoàn toàn tự nhiên như khi ta xem xét 1 chứng minh thư nhân dân để tin cậy vào một cá nhân, ta tin cậy vào chữ ký và dấu của người ký chứng minh thư đó)
Trang 13Trang25 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
Quy trình cấp chứng thư số:
Để lấy được chứng thư số bạn cũng cần phải thực hiện các công việc đăng ký
Nơi có thể chứng nhận những thông tin của bạn là chính xác được gọi là Tổ chức cấp chứng thư số (Certificate Authority viết tắt là CA), một tổ chức có thẩm quyền xác nhận chỉ danh và cấp các chứng thư số
Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ chức tự vận hành phần mềm cấp chứng thư số của mình Các phương pháp để xác định chỉ danh phụ thuộc vào các chính sách mà CA đặt ra
Chính sách lập ra phải đảm bảo việc cấp chứng thư số phải đúng đắn, ai được cấp
và mục đích dùng vào việc gì
Thông thường, trước khi cấp một chứng thư số, CA sẽ công bố các thủ tục cần phải thực hiện cho các loại chứng thư số
4.2 Hạ tầng khóa công khai
Lợi ích sử dụng chứng thư số:
Mã hoá và giải mã: cho phép hai đối tác giao thiệp với nhau có thể che giấu thông tin mà họ gửi cho nhau Người gửi mã hoá các thông tin trước khi gửi chúng đi, người nhận sẽ giải mã trước khi đọc Trong khi truyền, các thông tin sẽ không bị lộ
Chống lại sự giả mạo: cho phép người nhận có thể kiểm tra thông tin có bị thay đổi hay không Bất kỳ một sự thay đổi hay thay thế nội dụng của thông điệp gốc đều sẽ bị phát hiện
Xác thực: cho phép người nhận có thể xác định chỉ danh của người gửi
Không thể chối cãi nguồn gốc: ngăn chặn người gửi chối cãi nguồn gốc tài liệu mình đã gửi
Trang 14Trang27 © 2009 | CCIT/RIPT
VIỆN KHOA HỌC KỸ THUẬT BƯU ĐIỆN TRUNG TÂM TƯ VẤN ĐẦU TƯ CHUYỂN GIAO CÔNG NGHỆ
4.2 Hạ tầng khóa công khai
Chứng thư số bị thu hồi:
Các chứng chỉ có chứa ngày hết hạn hiệu lực (trong trường thời gian hiệu lực), tuy nhiên đôi khi cần thu hồi (ngắt hiệu lực) của một chứng chỉ trước thời gian vì một vài lý do nào đó Người phát hành chứng chỉ (CA) cần một phương tiện để cập nhật thông tin trạng thái chứng chỉ của mọi chứng chỉ cho người dùng Một phương tiện hữu hiệu là danh sách chứng chỉ thu hồi chuẩn X.509 (CRL)
Danh sách chứng chỉ thu hồi X.509 được bảo vệ bởi chữ ký số của CA phát hành
Những người dùng sẽ chắc chắn rằng nội dung của CRL không bị thay đổi bằng cách xác thực chữ ký trên CRL đó Các chứng chỉ chứa một tập hợp các trường chuẩn và một tập các trường mở rộng tuỳ chọn
4.2 Hạ tầng khóa công khai
Chứng thư số bị thu hồi:
Thông thường một chứng chỉ bị thu hồi vì những lý do sau:
• Tạm giữ: Người dùng quên chỗ để smart card hoặc token của họ Nếu người dùng tìm thấy card, chứng chỉ có thể được chuyển về trạng thái tin cậy Nếu người dùng không tìm thấy người quản trị có thể thu hồi vĩnh viễn
• Khoá bị tấn công: Khoá ký hay mã hoá riêng bị lấy cắp hay đang nghi có thể
bị tấn công, khoá công khai sẽ bị thu hồi để đảm bảo an ninh
• Thay đổi thuộc tính: Một số thông tin thuộc tính thay đổi mặc dù không có vấn đề về an ninh Ví dụ chính sách hệ thống của Công ty thay đổi kéo theo thay đổi về doanh nghiệp chẳng hạn sẽ kéo theo các chứng chỉ hiện thời liên quan bị thu hồi và được thay thế bởi các chứng chỉ mới
• Thay thế: Cặp khoá được thay thế bởi một cặp mới theo chính sách của Công
ty Người quản trị có thể thu hồi các chứng chỉ cũ khi chúng được thay thế bởi các chứng chỉ mới
• Dừng vận hành: Thu hồi các chứng chỉ của người dùng nào đó mặc dù không
có vấn đề về an ninh Ví dụ người dùng nghỉ công tác trong tổ chức